루트 액세스없이 패키지를 설치하려면 어떻게해야합니까?


126

이 컴퓨터에 대한 루트 액세스 권한없습니다 .

우분투 패키지를 다운로드하여 루트가 아닌 패키지로 설치할 수 있는 방법이 있는지 알고 싶습니다 .

아마도 내 ~/bin또는 ~/usr/share그런 식으로? 작동할까요?


1
바라건대, 그들은 곧 그것을 지원할 것입니다.
Domi

4
리눅스 용 휴대용 앱을 사용할 수 있습니다 : 설치 없음, 루트 필요 없음. appimage.org 에서 찾으십시오 . Linus Torvalds조차도 그것을 좋아합니다. Linus는 아무것도 좋아하지 않기 때문에 이상합니다.
ipse lute

나는 fakechroot 시도하는 것이 좋습니다 .
Robert Pollak

의 조합 dpk -xmv날 위해 일했습니다. 또는 dpk사용할 수 ar없고 배관 / 결합이 tar매우 제한된 시스템에서 저를 위해 일한 경우 여기를
iolsmit

답변:


107

Apt는 직접 지원하지 않지만이를 수행 할 수있는 방법이 있습니다.

하나는 schroot루트가 아닌 chroot를 만드는 데 사용 하는 것입니다. 이것은 다소 복잡한 프로세스 이지만 많은 개발자가 코드 컴파일을 위해 chroot 환경을 설정함에 따라 커뮤니티의 도움을받을 수 있어야합니다.

내가 아는 두 번째 방법은 .deb 패키지에서 설치하는 것입니다. 웹 사이트에서 다운로드하거나 Ubuntu 리포지토리에있는 경우 다운로드 할 수 있습니다.

apt-get download package

package패키지 이름으로 교체

deb 파일이 있으면 dpkg명령 행에서 직접 호출하십시오 . 다음 예제는 package.deb를 홈 디렉토리에 설치합니다.

dpkg -i package.deb --force-not-root --root=$HOME 

이와 같이 dpkg를 사용하는 단점은 오류 메시지가 암호화 될 가능성이 있다는 것입니다. dpkg는 종속성을 자동으로 해결하거나 예상되는 디렉토리 구조를 만들지 않습니다.

마지막 apt-get source으로이 명령을 사용 하여 패키지 소스를 가져 와서 로컬로 설치하도록 구성 할 수 있습니다. 일반적으로 이것은 다음과 같습니다.

apt-get source package
cd package
./configure --prefix=$HOME
make
make install

이 접근 방식의 단점은이 접근 방식이 전혀 작동 할 수있는 개발 환경이 필요하다는 것입니다. 그리고 모든 종속성을 해결하기 위해 수십 개의 패키지를 컴파일 할 수 있습니다.

편집하다:

으로 dpkg -i(의견을 참조) 작동하지 않습니다,이 대안을 제안한다 :

dpkg -x package.deb dir

dir에 .deb 패키지를 추출합니다. 그런 다음 바이너리가있는 PATH를 내보낼 수 있습니다. 바이너리의 모든 종속성이 설치되어있는 한 정상적으로 실행되어야합니다.


1
루트 액세스 권한이 있지만 특정 패키지를 전체적으로 설치하지 않으려 는 경우 패키지 sudo apt-get build-dep package빌드 하는 데 필요한 모든 것을 설치하는 데 사용할 수 있습니다 (로 소스를 가져온 후 apt-get source).
블라디미르 판 텔레 예프

19
이 답변은 2010 년에 다시 작성되었습니다. 그 이후로이 작업이 수행되는 방식에 변화가 있습니까?
becko

36
--force-not-root를 사용하더라도 "dpkg : error : 요청한 작업에 수퍼 유저 권한이 필요합니다"
Clément

10
민속, --force-not-root --root=$HOME또는 그 변형이 작동하지 않습니다. 데비안 바이너리 패키지는 홈 디렉토리에 설치되도록 설계되지 않았습니다. 아니면 다른 방법으로 말하면됩니다. "다음 예는 package.deb을 홈 디렉토리에 설치합니다." 아뇨.
Faheem Mitha 2016 년

1
슬프게도 이것은 작동하지 않습니다. 나는 시도했다--force-not-root --root=/your/custom/path
Viet

16

jedit 을 설치한다고 가정합니다 . 먼저 패키지를 찾아서 다운로드해야합니다. 방금 일부 미러에서 deb 파일을 가져 와서 콘솔 / 터미널을 엽니 다.

  1. mkdir /tmp/jedit && cd /tmp/jedit-새로운 디레토리를 tmp만들고 변경합니다.
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb -패키지 다운로드
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.deb또는 입력하기 쉬움 ar x *.deb-파일 내용을 추출합니다.
  4. tar xvzf data.tar.gz-파일 data.tar.gz에는 소프트웨어를 실행하는 데 필요한 모든 것이 있습니다.
  5. usr/bin/jedit 에디터를 엽니 다
  6. 완료 :-)

파일을 홈 디렉토리의 특정 지점으로 이동하여 거기서 실행할 수 있습니다.


11
사전 및 사후 설치 스크립트는 실행되지 않습니다. 또한 종속성이나 경로를 직접 해결해야합니다. 그러나 기본 설치에서는 많은 데스크톱 응용 프로그램에 충분합니다.
jbowtie

패키지를 검색하지 않고 다운로드 할 수도 있습니다. apt-get download (다른 답변 참조)
lib

나는 당신의 연결이 끊어 졌다고 생각합니다.
Winnemucca

9

JuJu 라는 프로그램을 작성 했는데 기본적으로 $ HOME / .juju 디렉토리 안에 아주 작은 리눅스 배포판 (패키지 관리자 만 포함)을 허용합니다.

proot를 통해 홈 디렉토리 내에 사용자 정의 시스템을 액세스 할 수 있으므로 루트 권한없이 모든 패키지를 설치할 수 있습니다. 모든 주요 Linux 배포판에서 제대로 실행되지만 유일하게 제한되는 것은 JuJu가 권장되는 최소 버전 2.6.32로 Linux 커널에서 실행될 수 있다는 것입니다.

예를 들어, JuJu를 설치하여 jedit를 설치 한 후 :

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit

우분투에서 잘 작동합니까?
세스

예, 리눅스 커널 버전의 우분투가 2.6.32 이상이면 작동합니다.
user967489

2
처음에 나는 당신이 이것 에 대해 이야기하고 있다고 생각 했습니다 . 두 번째 대문자 j는 차이를 만듭니다.
kon psych

1
우리는 우분투 패키지를 설치할 수 있는지에 대한 질문이었습니다. junest를 사용하면 Ubuntu 패키지가 아닌 ArchLinux 패키지 만 설치할 수 있습니다. 예를 들어 ArchLinux에서 동일한 패키지를 사용할 수없는 경우 도움이되지 않습니다. Junest에게 감사합니다.
키란
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.