dpkg -i 또는 apt로 deb 파일을 설치하는 방법은 무엇입니까?


600

설치할 deb 패키지가 있습니다.

dpkg -i my.deb또는 apt로 설치해야 합니까?

소프트웨어 종속성 문제를 모두 잘 처리 할 수 ​​있습니까?

apt가 있다면 apt로 deb에서 어떻게 설치할 수 있습니까?


aptitude불필요한 패키지를 제거 하는 을 사용할 수도 있습니다 .
Ramesh

2
직접 사용하지 않는 것이 좋습니다 dpkg. 단일 deb의 경우 gdebi 로 이동하고 여러 deb의 경우 APT local repository 로 이동하십시오 .
Pandya

5
왜 ......... @Pandya
Tim

2
@Tim dpkg은 종속성을 해결하지 않기 때문에 .
Pandya

1
@Tim gdebi는 누락 된 종속성을 식별하고, apt를 사용하여 다운로드 및 설치하고, dpkg를 사용하여 설치 및 구성 할 수 있습니다.
Pandya

답변:


770

apt패키지를 설치할 때 사용 하는 패키지 아래에서 dpkg. apt를 사용하여 패키지를 설치하면 먼저 모든 종속성 목록을 작성하고 저장소에서 패키지를 다운로드합니다.

다운로드가 완료되면 dpkg모든 종속성을 만족시키는 모든 파일을 설치 하도록 호출 합니다.

따라서 .deb파일 이 있다면 :

  • 다음을 사용하여 설치할 수 있습니다.

    sudo dpkg -i /path/to/deb/file
    sudo apt-get install -f
    
  • sudo apt install ./name.deb(또는 sudo apt install /path/to/package/name.deb)를 사용하여 설치할 수 있습니다 .

    이전 apt-get버전에서는 먼저 deb 파일을 /var/cache/apt/archives/디렉토리 로 이동해야합니다 . 두 가지 경우 모두이 명령을 실행 한 후 자동으로 해당 종속성을 다운로드합니다.

  • gdebi.deb 파일을 사용하여 설치 하고여십시오 ( 오른쪽 클릭 -> 연결 프로그램 ). 모든 의존성으로 .deb 패키지를 설치합니다.

    ( 참고 : APT는 /etc/apt/sources.list파일과 /etc/apt/sources.list.d디렉토리 에 정의 된 저장소에서 사용 가능한 패키지의 데이터베이스 인 패키지 인덱스를 유지 관리합니다 . deb에 필요한 종속성이 패키지 인덱스에 없으면 이러한 모든 방법이 소프트웨어 종속성을 충족시키지 못합니다. .)


sudo apt-get install -f이후에 사용sudo dpkg -i /path/to/deb/file 합니까 (첫 번째 방법에서 언급)?

보낸 사람 man apt-get:

 -f, --fix-broken
           Fix; attempt to correct a system with broken dependencies in place.

dpkg패키지를 설치하고 패키지 의존성을 만족하지, 그것은 "구성되지 않은"상태에 패키지를 떠나 그 패키지가 깨진 것으로 간주됩니다.

sudo apt-get install -f 명령은 누락 된 종속성을 설치하여이 손상된 패키지를 수정하려고합니다.


2
@Tim, apt-get은 저장소에서 패키지를 설치하도록 설계되었습니다. 패키지 목록과 해당 리포지토리 주소를 유지 관리합니다. 따라서 apt 패키지 목록에없는 .dev 파일을 / var / cache / apt / archives 디렉토리로 이동하면 작동하지 않습니다. apt-get을 사용하여이 패키지를 설치할 때마다 존재하지 않는 저장소를 검색합니다. 이를 위해 쓸모없는 로컬 저장소를 만들어야합니다.
g_p

1
@g_p 감사합니다! 위의 답변에서 약간 혼란 스럽습니다. "(Apt 패키지 목록에 .deb 패키지가 있으면 작동합니다.")-여기서 의미하는 바를 이해하지 못합니다. apt 패키지 목록에 .deb 패키지가 있는지 어떻게 확인할 수 있습니까?
BKSpurgeon

1
@ BKSpurgeon, 나는 대답에 비트 정보를 추가했습니다. 패키지가 색인에 존재하는지 또는 실행되지 않는지 확인합니다 apt-cache search <package name>. apt-cache policy <package name>추가 정보를 제공하는을 사용할 수도 있습니다 .
g_p

1
이러한 방법으로 여전히 apt가 수행하는 서명 확인을 수행합니까? 또는 변조 된 .deb 파일을 이런 방식으로 설치할 수 있습니까?
Boann

8
최신 apt-get을 사용하여 간단히 패키지를 설치할 수 있습니다 apt-get install /path/to/package/name.deb. 이 답변의 저자가 그것을 통합하기로 결정했다면 깔끔 할 것입니다. 그렇지 않다면, 내가 여기에 충분한 담당자가있을 때 언젠가 그 대답을 추가 갈거야
샘 하트만

91

foo.deb파일을 설치하십시오 dpkg -i foo.deb. 해결되지 않은 종속성에 오류가 있으면 apt-get install -f나중에 실행하십시오 .


나는 Unable to locate package이 방법을 시도하고 당황했다. 보관 폴더로 전환 한 후 Windows에서 패키지 이름 만 사용했습니다. ./<file name>현재 폴더 또는 전체 경로 인 경우 Unix 용 이어야 합니다. 에 deb있는 폴더에없는 경우 입니다 PATH.
Alexei Martianov

60

.deb커맨드 라인에서 Ubuntu에 파일 을 설치하는 가장 좋은 방법은 다음과 같습니다 .

sudo gdebi skype.deb

gdebi아직 설치 하지 않은 경우을 사용하여 설치하십시오 sudo apt install gdebi-core.

왜 그 데비?

gdebi.deb파일 의 모든 종속성을 찾아서 파일을 설치하기 전에 설치 .deb합니다. 나는 이것보다 훨씬 바람직하다 sudo dpkg -i skype.deb && sudo apt install -f. 후자는 특정 상황에서 종속성을 제거하기를 너무 열망합니다. 예를 들어, Skype를 설치하려고 할 때 compizand unity! gdebi훨씬 더 명확한 오류 메시지가 나타납니다.

 $ sudo gdebi skype.deb
 Cannot install 'libqtgui:i386'

(그런데 특정 문제에 대한 해결책 은 다음과 같습니다 .)


위대한 일을했다! btw, 제거하려는 시도가 임시 / 임시 패키지에 관한 것일 수 있습니까? 아니면 실제로 시스템을 망칠 것이라고 생각합니까?
물병 자리 힘

친구 솔루션에 문제가 발생했습니다. Rstudio를 설치하려고했습니다. 자동으로 이전 버전의 R을 찾았습니다. @g_p의 솔루션을 사용하는 동안 Rstudio 만 설치할 수있었습니다.
Dr_Hope

39

다음과 같은 방법으로 로컬 .deb 패키지를 설치할 수 있습니다.

sudo apt install ./foo.deb

로컬 상대 또는 절대 경로를 지정해야합니다 ( ./현재 디렉토리에있는 경우). 그렇지 않으면 foo.deb원격 저장소에서 찾아 실패합니다.


2
정답으로 표시해야합니다.
Rael Gugelmin Cunha

@RaelGugelminCunha 100 % 정확하지 않습니다. sudo apt install libstdc ++ 6_8-20180414-1ubuntu2_amd64.deb apt : 공유 라이브러리를로드하는 동안 오류가 발생했습니다 : /usr/lib/x86_64-linux-gnu/libstdc++.so.6 : 잘못된 ELF 헤더
mvladk

2
@mvladk 구문에주의하십시오 : 파일 ./이전에 누락되었습니다 deb.
Rael Gugelmin Cunha

절대적으로 가장 좋고 간단한 답변입니다.
gerardw

15

종속성 dpkg -I my.debapt-get install이전 종속성을 확인하십시오 dpkg -i my.deb.

할 수 있습니다 당신은 복사 할 수 my.deb있는을 /var/cache/apt/archives하고 직접 설치 apt-get하지만 시도하지 않았다. 작동하지 않습니다, apt-get그리고 dpkg아카이브에 나열된 패키지를 찾고 있습니다.


감사. 첫 번째 sentenct, 당신은 뜻 apt-get install my.deb으로 apt-get install? deb 파일에서 설치해야합니까? dpkg -i my.deb그 후에 왜 우리가 필요 합니까?
Tim

나는 항상 local을 설치 .deb했다 dpkg -i. 내 이해는 다운로드 된 apt디렉토리를 제외하고 설치할 수있는 옵션이 없다는 것입니다 /var/cache/...(잘못되었을 수도 있습니다)
Alex

apt-get install ./my.deb많은 것을 출력하기 때문에 무언가 를 할 것 같습니다 . 무엇을합니까?
Tim

그것은 너무 많은 :-) 내가 약 잊고, @Igor_Dvoretskyi의 대답은 바로 완벽 참조 작동하지 않습니다 않습니다-f
알렉스

5

가장 간단한 대답은을 실행하여 dpkg를 사용하는 것 dpkg -i packagename.deb입니다. 그런 다음를 실행하여 제거 할 수 dpkg -r packagename.deb있습니다.
apt-getdpkg를 기반으로하는 더 높은 수준의 설치 관리자 apt-get install packagename.deb입니다.
apt-get archives 디렉토리 ( /var/cache/apt/archives) 에 추가하면 독립형 .deb 아카이브가 아닌 종속성이있는 패키지로 참조 할 수 있습니다.
또한 apt-get archives 디렉토리에 추가하여을 사용하여 종속성을 사용할 수 있습니다 apt-get install packagename. 이를 통해 dpkg의 독립형 아카이브 기반 시스템 대신 수동으로 추가 된 종속성으로 설치할 수 있습니다.


5

최신 apt-get을 사용하여 간단히 패키지를 설치할 수 있습니다 apt-get install /path/to/package/name.deb.

(최고의 답변으로 편집해야하지만 거부되었습니다-https://unix.stackexchange.com/posts/159114/edit 참조 )


이 기능은 작동하지 않습니다apt 1.0.9.8.4 for amd64 compiled on Dec 11 2016 09:48:19
Bruno Bronosky

-3

Chrome을 설치하려는 경우 매우 간단합니다.

다음과 같이 Chrome 파일을 설치하십시오.

dpkg -i googlechrome.deb.

때때로 다음과 같은 일부 종속성 오류가 발생할 수 있습니다.

dpkg: dependency problems prevent configuration of google-chrome-stable:
google-chrome-stable depends on libappindicator1; however:
Package libappindicator1 is not installed.

따라서 위의 문제를 해결하려면 종속성을 추가해야합니다. 다음 명령을 제공하십시오.

apt-get install -f

위의 명령을 내린 후, 의존성이 컴퓨터에 추가되고 데비안 패키지 ( .deb) 파일이 설치됩니다.

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