`dpkg -i`가 의존성을 설치하게하는 방법은 무엇입니까?


324

내가 가지고있는, 말 foo-1.2.3.deb에 의존 perl하고 python있지만, 명령을 실행 :

dpkg -i ./foo-1.2.3.deb

이러한 종속성을 설치하지 않습니다. 그래서 apt-get install perl python손으로 해야합니다 .

dpkg -i이러한 종속성을 자동으로 설치 하는 방법은 무엇입니까?



5
@ pd12 : 순환 참조를위한 Hooray! :-D
David Foerster

허, 나는 두 가지를 연결하기로 결정하고 모드가 선택할 하나를 확인했습니다.
pd12

답변:


416

를 사용한 후 dpkg다음 명령을 실행하면 필요한 종속성을 설치하는 데 도움이되었습니다.

sudo apt-get -f install

터미널은 다음과 같아야합니다.

$ sudo dpkg -i package_with_unsatisfied_dependencies.deb
dpkg: dependency problems prevent ... 
[additional messages]

$ sudo apt-get -f install
[apt messages]
Setting up [dependency]...
Setting up package_with_unsatisfied_dependencies...

대한 줄을 확인하십시오 Setting up package_with_unsatisfied_dependencies. 이것은 설치를 수정 하고 완료합니다 package_with_unsatisfied_dependencies.deb.


8
내가 실행해야합니까 sudo dpkg -i mypackage.deb다시?
Muhammad Gelbana

23
sudo apt-get -f install내 패키지를 실행 한 후 종속성이 모두 설치되었습니다. 실행 sudo dpkg -i my_package.deb은 불필요하며 패키지를 다시 설치하면됩니다.
거스 E

5
Ubuntu 14.04에서 작동하는 내용은 다음과 같습니다 sudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.deb. 첫 번째 dpkg -i실행은 종속성을 표시 apt-get -f install하고 필수 종속성을 설치하며 두 번째 실행 dpkg -i은 패키지를 성공적으로 설치합니다. 그 참고 apt-get install -f완전히 다른 명령입니다.
Mikko Rantalainen

1
@ysth 아니오,하지 마십시오 dpkg -i --force; 깨진 패키지를 강제 설치합니다! dpkg/ without / --force을 실행 하면 패키지 데이터베이스에 필요한 항목이 만들어 지므로 apt-get -f install올바른 작업이 수행됩니다.
브라이언 A. 헤닝

@Lotharyx : 지금 시도해 볼 수는 없지만, dpkg가 강제로 없으면 (종속성 누락으로 인해 실패) 패키지 데이터베이스에 들어 가지 않을 것이라고 생각했습니다
ysth

111

gdebi-core10.04 및 이전 버전의 GDebi 패키지 설치 프로그램의 명령 행 버전 인을 설치할 수 있습니다 . 최신 버전의 Ubuntu에서 소프트웨어 센터는 debs를 설치하는 데 사용되며 명령 줄에는 해당되지 않습니다.

gdebi를 사용하여 deb 패키지를 설치하려면 다음을 실행하십시오.

sudo gdebi my_package_1.0.deb

64

apt 1.1 (Xenial (16.04)에서 사용 가능, stretch) apt install로 시작하면 로컬 파일도 허용됩니다.

sudo apt install ./foo-1.2.3.deb

훨씬 간단하고 깨끗합니다.

출시 발표를 참조하십시오


4
이것이 가능할 시점입니다
Mike

이 솔루션은 작동하지 않았습니다. 발생한 모든 오류 목록입니다.
Billy S

@BillyS는 그것이 당신에게 효과가 없다는 것을 유감스럽게 생각하지만, 배포판이 없으면 사용중인 오류와 어떤 오류가 발생했는지 전혀 알 수 없습니다.
textshell

그 명령은 나에게 효과가 없었지만 apt ./install foo-1.2.3.deb효과가있었습니다.
Cenk Alti

1
명령이 수정되었습니다. 위의 설명은 이전 버전의 답변을 참조하여 필요한 ./또는 경로 를 놓쳤습니다
Zanna

38

그 데비

gdebideb 패키지 및 해당 종속성을 설치합니다. 그것을 사용하려면 다음을 실행하십시오.

sudo gdebi package.deb

최신 버전의 Ubuntu에서는 기본적으로 설치되지 않으므로 리포지토리에서 설치해야합니다.

man gdebi전체 옵션 목록을 참조하십시오 .

gdebiUbuntu에 기본적으로 포함되었던 것과 같은 이름의 그래픽 도구에 해당하는 명령 줄입니다. 그래픽 도구의 명령 gdebi-gtk은 비슷한 기능을 가지고 있습니다.

gdebi-gtk


gdebi-gtk는 필요한 뎁 (내가 가지고있는 버전, 버그로 보인다)을 보여주지는 않지만, 명령 행은 보여줄 것이다! 패키지가 포함 된 다른 머신이 있다면 다음 dpkg-repack과 같은 deps 목록을 기반으로 사용할 수 있습니다 :)
Aquarius Power

21

달리는

sudo apt-get install -f

dpkg로 패키지를 설치 한 후 깨진 depencies를 해결할 수 있습니다 (적어도 사람은 그렇게 말하십시오 ...). 확인하면 업데이트됩니다.


내가 실행해야합니까 sudo dpkg -i mypackage.deb다시?
Muhammad Gelbana

3
apt-get -f install작동하지만 apt-get install -f동일하지 않습니다.
200_success

9

dpkg는 종속성을 지원하지 않습니다. 그 주위에 방법이 있지만 로컬 데이터베이스를 만들어야하므로 이미 종속성을 알고 있어야하며 사용되지 않는 것으로 간주됩니다 (...).

명령 줄이어야합니까? (서버 설치?) 또한 살펴봐도 apt-get -f주의해야합니다. 설치 후 종속성을 해결하면 시스템이 손상 될 수 있습니다.

gdebi (gui frontend)는 이것을 할 수 있었지만 USC로 대체되었습니다.

.deb를 어떻게 다운로드 했습니까? 새로운 11.04 기능 중 일부는 웹 사이트에서 다운로드 한 .deb를 처리하는 것입니다. USC에서 열리므로 설치 프로그램이 종속성을 해결합니다.

앤드류의 의견에 따라 편집 : sudo gdebi foo-1.2.3.deb 트릭을 할 것입니다 !!


gdebi를 여전히 사용할 수 있습니다. 소프트웨어 센터는 이제 기본 앱일뿐입니다. 또한 Chen Xiao-Long이 지적한 것처럼 gdebi는 명령 줄에서도 사용할 수 있습니다.
andrewsomething

시원한! 그런 다음 gdebi를 명령 줄에서도 사용할 수 있기 때문에 질문에 답이 있습니다.
Rinzwind

이것이 정답입니다.
prosti

3

대안으로 gdebi-gtkUbuntu Software Center를 사용할 수 있습니다.

패키지를 두 번 클릭하면 설치 버튼이 제공됩니다.


3

dpkg-dep-inst다음과 같은 내용 으로 파일 을 만들 수 있습니다 .

#!/bin/bash

DEBIAN_FILE1=$1
dpkg -i $DEBIAN_FILE1 || apt-get --fix-broken install

홈 폴더에 파일을 만든 것으로 가정합니다. 와 그것을 실행 확인 chmod +x dpkg-dep-inst과로 이동 /usr/local/bin과 함께 sudo cp dpkg-dep-inst /usr/local/bin.

이제 다음을 사용하여 종속성이있는 데비안 패키지를 자동으로 설치할 수 있습니다.

sudo dpkg-dep-inst foo-1.2.3.deb

1
apt-get --yes --fix-broken install고정 장치를 자동으로 사용하십시오 .
Lucas

@ysth 아니오, 일반적으로 아닙니다.
BuZZ-dEE

1

나는이 문제에 부딪쳤다. 그러나 호출 apt-get install -f하면 권장되는 종속성이 설치 되지 않습니다 ! 이에 대한 유일한 해결 방법은 로컬 리포지토리를 만들고에 추가하는 것입니다 ./etc/apt/sources.list

apt-ftparchive packages . > Packages && gzip < Packages > Packages.gz
sudo echo "deb file://$PWD /" >> /etc/apt/sources.list
sudo apt-get update

0

실제로 대답은 dpkg패키지 관리자가 즉시 종속성을 설치할 수 없다는 것입니다. 당신은 캠 man dpkg과 그것을 발견했다. 그래서 당신은 같은 도구를 사용할 필요가 apt, apt-get, aptitude, ...,에 기반 dpkg.

rpm다른 Linux 반구 의 패키지 관리자도 마찬가지 입니다. rmp종속성 기반 설치를 수행하기위한 것이 아닙니다. 그것은 하나의 패키지를 설치할 수 있으며, 사용 종속성을 설치하기위한 yum, urpmi, up2date이 모든 RPM 기반으로합니다.

언급했듯이 dpkg나중에 의존성 해결이 @Rinzwind가 설명한 것처럼 시스템이 손상 될 수 있기 때문에 직접 패키지를 설치하면 약간의 위험이 있습니다.

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