RHEL 서버에 사용자로 Git을 로컬로 설치하고 싶습니다(루트 액세스 권한이 없습니다). 로컬 사용자 계정에 소프트웨어를 설치하는 가장 깨끗하고 체계적인 방법은 무엇입니까?
- 해당 사용자의 홈 디렉토리에 모든 것을 설치하시겠습니까?
- 디렉토리 레이아웃은 어떤 모습일까요?
- 소스에서 설치하시겠습니까, 아니면 RPM에서 설치하시겠습니까?
- RPM에서 YUM 또는 RPM을 사용하시겠습니까?
답변1
rpm 을 사용하여 사용자 디렉토리에 설치하는 방법이 있지만 rpm
간단하지는 않은 것 같습니다. 나는 방법이 있다고 믿지 않는다 yum
.
local
내 표준 관행은 소스에서 집에 있는 디렉터리 로 컴파일하는 것입니다 .
$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include
/usr/local
예를 들어 루트 액세스 권한이 있는 것처럼 소스 코드를 다운로드 합니다 ~/local/git
.
local
컴파일할 때 디렉토리 에 접두사를 설정했습니다.
$ configure --prefix=/home/user_name/local
$ make
$ make install
~/local/bin
그런 다음 $PATH 에 추가했습니다 .bash_profile
.
물론, 소스에서 설치할 때의 어려움은 자동 종속성 해결이 불가능하다는 것입니다. 종속성을 설치해야 한다고 판단되면 위의 방법에 따라 컴파일하고 설치하면 됩니다. 그런 다음 를 컴파일할 때 git
종속성의 라이브러리를 찾고 올바른 위치에 파일을 포함하도록 컴파일 플래그를 업데이트해야 합니다.
./configure --prefix=/home/user_name/local LDFLAG='-L/home/user_name/local/lib' CFLAGS='-I/home/user_name/local/include' CPPFLAGS='-I/home/user_name/local/include' CXXFLAGS='-I/home/user_name/local/include'
답변2
cpio
.rpm 파일은 실제로 더 단순한 형식의 .rpm과 매우 유사한 아카이브 형식입니다 tar
. 이 rpm2cpio
유틸리티는 시스템에 이미 설치되어 있을 수 있으며 표준 출력에 쓰기 위해 사용 권한이 필요하지 않습니다.
rpm2cpio whatever.rpm > whatever.cpio
직접 확인할 수 있지만 man cpio
지금 해야 할 일은 "복사" 모드에서 아카이브를 cpio에 공급하는 것입니다.
cat whatever.cpio | cpio -i
이러한 콘텐츠는 파일이 적절한 위치(bin 등)에 들어갈 수 있도록 디렉터리 트리로 구성될 가능성이 높습니다. 비밀번호에 파일이 없으면 오류 메시지가 표시되지만 이렇게 하면 아카이브에 있는 파일이 나열됩니다( -t
/ --list
스위치를 사용하면 동일한 결과를 얻을 수 있습니다). 디렉토리를 자동으로 생성하려면 -d
rpm을 압축 해제하는 빠른 방법은 다음과 같습니다.
rpm2cpio whatever.rpm | cpio -i -d
이를 사용하여 $HOME에 설치할 수 있습니다. 유일한 질문은 프로그램이 /etc
등에서 항목을 찾을 것으로 예상하는지 여부입니다. 많은 항목이 어떤 목적으로든 하드 코딩된 설치 위치로 컴파일되기 때문입니다.
올바른 위치를 제공할 수 있으므로 소스에서 빌드하는 것이 더 나은 옵션일 수 있지만 어떤 경우에도 작동하도록 만들 수 있다면 빠르고 쉽습니다.
또한 Midnight Commander 파일 브라우저( mc
) 및 기타 파일 브라우저를 사용하면 rpm 또는 cpio(또는 압축된 tar 또는 zip) 계층 구조를 탐색하고 아카이브의 압축을 푼 것처럼 개별 파일을 복사할 수 있습니다(임시 파일 시스템 생성). 그 안에 보관된 콘텐츠를 탐색하기 위해).
답변3
다음은 (yum을 사용하지 않는) 대안입니다. 권한은 이상하지만 chown
대상 사용자에게 보낼 수 있습니다. -- 이는 성공 또는 실패이기도 합니다. :-(
#-## Download all dependency for the RPM --
#sudo yum install yum-utils
#sudo yumdownloader --resolve --destdir ~/download bash
#-## Install all downloaded to an alternate root
#sudo rpm --initdb --root <user_home_dir>
#sudo rpm --root <user_home_dir> -Uvh --nodeps ~/download/*
그런 다음 경로에 적절한 위치를 추가하십시오.