사용자에게 로컬로 패키지 설치-모범 사례?


18

RHEL 서버의 사용자에게 로컬로 Git을 설치하고 싶습니다 (루트 액세스 권한이 없음) 로컬 사용자 계정에 소프트웨어를 설치하는 가장 깨끗하고 체계적인 방법은 무엇입니까?

  • 해당 사용자 홈 디렉토리에 모든 것을 설치 하시겠습니까?
  • 디렉토리 레이아웃은 어떤 모양입니까?
  • 소스 또는 RPM에서 설치 하시겠습니까?
  • RPM에서 YUM 또는 RPM을 사용 하시겠습니까?

답변:


17

를 사용하여 사용자 디렉토리에 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'

조언을 주셔서 감사합니다.
wiredin

13

.rpm 파일은 실제로 일종의 cpio아카이브 형식으로 , 단순한 형식과 비슷합니다 tar. 이 rpm2cpio유틸리티는 시스템에 설치되어 있으며 사용 권한이 필요하지 않습니다. 그것은 표준 출력에 기록하므로 다음과 같이 변환하십시오.

rpm2cpio whatever.rpm > whatever.cpio

거기의 man cpio당신이 자신을 볼 수 있습니다,하지만 당신은 지금 모드 "로 복사"에 CPIO에 아카이브를 공급한다 싶지 :

cat whatever.cpio | cpio -i

파일이 적절한 위치 (빈 등)에 들어가도록 디렉토리 트리로 구성되어있을 가능성이 높습니다. 그것들이 pwd에 존재하지 않으면 오류가 발생하지만 아카이브의 파일을 나열합니다 ( -t/ --list스위치로 같은 것을 얻을 수 있음 ). 디렉토리를 자동으로 작성하려면을 사용하십시오 -d. rpm을 풀 수있는 빠른 방법 :

rpm2cpio whatever.rpm | cpio -i -d

이것을 사용하여 $ HOME에 설치할 수 있습니다. /etc많은 문제는 컴파일 할 때 어떤 목적 으로든 설치 위치가 하드 코딩되어 있기 때문에 프로그램이 에서 등 을 찾을 것으로 예상하는 경우 유일한 문제입니다 .

소스에서 빌드하는 것이 더 나은 옵션 일 수 있습니다 (올바른 위치를 제공 할 수 있기 때문에). 어떤 경우에도이 작업을 수행 할 수 있으면 빠르고 간단합니다.

또한 자정 사령관 파일 브라우저 ( mc) 및 아마도 다른 파일 브라우저를 사용하면 rpm 또는 cpio (또는 압축 tar 또는 zip) 계층 구조를 탐색하고 아카이브가 압축 해제 된 것처럼 개별 파일을 복사 할 수 있습니다 ( 아카이브 파일을 찾아 보는 임시 파일 시스템).


0

이것은 대안이며 (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/*

그런 다음 경로에 적절한 위치를 추가하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.