루트가 아닌 RPM을 어떻게 설치합니까?


49

루트 권한이없는 머신에 RPM을 어떻게 설치합니까? 개인 작업 디렉토리에만 사용하기 위해 패키지를 설치하고 싶습니다. SuSe SLES10을 실행 중입니다.

"이 아이디어는 너무 멍청합니다. 모든 요청은 회사의 루트 신을 거쳐야합니다. 그가 영원히 살 수 있기 때문입니다."

나는 이것을 루트 신에게 요청할 수 있다는 것을 알고 있지만, 총격을 당할 것입니다 (성숙한, 완벽한 이유 때문에, 나는 확신합니다 ...). 게다가, 그가 할 것이라고 말하더라도 설치를 계속하지 않을 것입니다.


6
이것은 전혀 중복되지 않습니다. 경로를 재정의한다고해서 비 권한 사용자가 항상 rpm을 사용할 수있는 것은 아닙니다.
John T

감사합니다 HarryMC. 확인해 볼게요 또한 사람들이 내 복제본이라고 생각한 다른 티켓에 대한 링크를 추가합니다. 아마도 빵 부스러기가 다른 사람을 도울 것입니다 : superuser.com/questions/160530/override-rpm-install-path
Ross Rogers

더 나은 미래를 위해 appimage.org보십시오 .
로스 로저스

답변:


56

2
나는 이것을했고 cpio는 print '1 block'을 제외하고는 아무것도하지 않는 것 같습니다. 내가 뭐 잘못 했어요?
네이트 파슨스

감사. 소스에서 설치할 수 있었기 때문에 RPM을 신경 쓸 필요가 없습니다
Nate Parsons

10
RPM의 내용을 풀고 현재 위치에 덤프합니다. 그렇다고 결과가 제대로 작동하는 것은 아닙니다 (구성이 원하는 곳에 있어야하는 것은 아닙니다.)
vonbrand

자선 단체에 대한 명성을 얻을 수 있기를 바랍니다. 감사합니다!
macetw

3

rpm 패키지 내용을 추출하는 방법

export ins=foo-bar.rpm
rpm2cpio $ins | cpio -idv

tar.gz아카이브 를 추출하는 방법

gzip -dc foo-bar.tar.gz | tar xvf –
cd foo-bar-dir

tar.gz현재 디렉토리로 패키지 를 추출하는 방법

export file=foo-bar.tar.gz
# Note that `xovf` switch order *matters*
gzip -dc $file | tar -xovf -

비 루트로 바이너리를 빌드하는 방법

./configure --prefix=$HOME && make && make install

1

다른 옵션은 일반적으로 --prefix스위치를 사용하여 설치 디렉토리를 변경할 수있는 소스에서 설치하는 것 입니다.


1
그것이 제가 일반적으로하는 일이지만 더 자동화를 원했습니다.
Ross Rogers

2
나를 위해 이것은 / var에있는 파일 잠금을 시도하기 때문에 작동하지 않습니다 (권한이 거부되었습니다).
Nir Friedman

0

루트 권한없이 rpm을 "설치"하는 "실제"대답은 할 수 없다고 생각 합니다. 그러나 실제로 설치 프로세스를 시작할 수 있다고 가정하면 ...

RPM은 일반적으로 파일 시스템 계층 구조를 따르는 사양 파일 (.spec)에 제공된 지침 목록을 사용하여 설치합니다. 해당 계층의 대부분의 경로는 거의 항상 운영 체제 경로이며 사용자 경로는 아닙니다. 따라서 사용자 이름이 RPM이 설치하는 모든 경로에 액세스 할 수 없으면 실패 할 것입니다. 모든 경로 앞에 접두사 /home/me(또는 사용자가 소유 한 다른 경로)를 추가 하는 RPM을 만들면 작동합니다. 이를 위해서는 src.rpm을 가져 와서 다른 답변에서 설명한대로 추출한 다음 다시 작성해야합니다. 그렇게 할 때까지 루트 액세스 권한을 얻거나 소프트웨어를 처음부터 새로 작성하는 것을 고려할 수 있습니다 (일반적으로 여러 컴퓨터에 소프트웨어를 배포하지 않으려는 경우 수행하는 작업).

수동 빌드 프로세스에 도움이되는 영리한 트릭이 있습니다. 예를 들어, RPM에 이미 나열된 종속성을 활용하여 모든 종속성을 얻을 수 있습니다 ( https://stackoverflow.com/a/13877738/1236128) .

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