Deb 기반 패키지/종속성을 관리하는 방법

Deb 기반 패키지/종속성을 관리하는 방법

오늘 저는 Elementary OS Loki를 가상 머신에 설치했습니다.

나는 이 시스템이 얼마나 빠르고 아름다운지에 놀랐다.

그러나 요점은 다음과 같습니다.

.deb패키지를 설치하고 Elementary OS에 대한 종속성을 해결하려면 어떻게 해야 합니까 ?

답변1

저는 실제로 aptitude패키지 종속성을 설치/해결하기 위해 패키지 관리자를 사용하는 것을 선호합니다. 다음 명령을 사용하여 설치할 수 있습니다.

sudo apt-get install aptitude

apt이 명령은 / 와 매우 유사합니다 apt-get.

aptitude종속성을 처리하는 다른 도구보다 더 똑똑한 것 같습니다. 또한 제거/설치 프로세스를 처리하기 위한 대안이 포함된 메뉴가 표시되며, 첫 번째 선택을 거부하는 경우 대안이 있는 경우 표시됩니다.

$sudo aptitude purge libasound2
The following packages will be REMOVED:  
  libasound2{p} libasound2-data{u} 

The following packages have unmet dependencies:
 openjdk-8-jre : Depends: libasound2 (>= 1.0.16) but it is not going to be installed
The following actions will resolve these dependencies:

Remove the following packages:              
1)     openjdk-8-jre [8u111-b14-3 (now, testing)]



Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

     Keep the following packages at their current version:    
1)     libasound2 [1.1.2-1 (now, testing)]                
2)     libasound2-data [1.1.2-1 (now, testing)]           

Accept this solution? [Y/n/q/?] 

데비안 적성에서위키피디아:

Aptitude에는 다음과 같은 유용한 기능이 많이 있습니다.

  • 유연한 방식으로 패킷 태그를 일치시키는 mutt와 유사한 구문
  • 패키지가 더 이상 필요하지 않을 때 자동으로 제거될 수 있도록 패키지를 "자동 설치" 또는 "수동 설치"로 설정하세요.
  • 예정된 작업의 색상 미리보기
  • dselect와 유사한 사용자 작업 지속성
  • 대부분의 패키지에 대한 데비안 변경 로그를 검색하고 표시하는 기능
  • AptCLI 스타일(= apt-get + apt-cache) 명령줄 모드("aptitude install foo")
  • (보통) apt-get보다 더 똑똑한 점수 기반 종속성 해결 프로그램

수년 동안 더 이상 사용되지 않는 것으로 나열되어 있고 다른 도구도 비슷한 기능을 제공하지만 debfoster시스템의 남은 부분을 정리하는 것이 좋습니다. debfoster기본 설치/템플릿으로 사용하기 위해 기본 VM을 축소하는 데 도움이 되는 등 특히 흥미롭습니다.

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

sudo apt-get install debfoster

또한 테스트를 수행하기 전에 패키지의 실제 상태를 저장하기 위해 사전 프로덕션 VM에서 자주 사용하고, 실행하기 전과 마찬가지로 저장된 상태를 복원하여 추가된 모든 패키지를 제거하는 데 사용합니다.

~에서HOWTO: 실제로 debfoster 사용하기

debfoster - 불필요한 데비안 패키지 제거

debfoster는 종속성으로 설치되지 않고 명시적으로 요청된 설치된 패키지 목록을 유지 관리합니다. 매개변수는 완전히 선택사항이며 dpkg 및/또는 apt-get을 실행할 때마다 debfoster 자체를 호출할 수 있습니다.

또는 debfoster를 사용하여 명령줄에서 패키지를 지정하여 패키지를 설치 및 제거할 수 있습니다. - 접미사가 있는 패키지는 제거되고 접미사가 없는 패키지는 설치됩니다.

새 패키지가 발견되거나 debfoster가 이전에 종속성이었던 패키지가 이제 고아 패키지라는 것을 발견하면 이를 어떻게 해야 할지 묻습니다. 이를 유지하기로 결정하면 debfoster는 이를 기록하고 계속 진행합니다. 이 패키지가 충분히 흥미롭지 않다고 생각되면 debfoster가 요청을 마친 후에 제거됩니다. 귀하의 선택으로 인해 다른 패키지가 분리되면 더 많은 문제가 발생할 수 있습니다.

$sudo debfoster

smem is keeping the following 27 packages installed:
  blt fonts-lyx libglade2-0 libjs-jquery libjs-jquery-ui liblapack3 libtk8.6 libwebp6
  libwebpdemux2 libwebpmux2 libxss1 python-cairo python-cycler python-dateutil
  python-glade2 python-gobject-2 python-gtk2 python-imaging python-matplotlib
  python-matplotlib-data python-numpy python-pil python-pyparsing python-tk python-tz
  tk8.6-blt2.5 ttf-bitstream-vera
Keep smem? [Ynpsiuqx?], [H]elp: Y

imvirt is keeping the following 9 packages installed:
  imvirt-helper libemail-date-format-perl libfile-slurp-perl libfile-which-perl
  libimvirt-perl libmime-lite-perl libmime-types-perl libmodule-find-perl pciutils
Keep imvirt? [Ynpsiuqx?], [H]elp: Y

linux-image-4.8.0-1-amd64-unsigned is keeping the following 9 packages installed:
  busybox firmware-linux-free initramfs-tools initramfs-tools-core irqbalance
  klibc-utils libklibc libnuma1 linux-base
Keep linux-image-4.8.0-1-amd64-unsigned? [Ynpsiuqx?], [H]elp: Y

faketime is keeping the following 1 packages installed:
  libfaketime
Keep faketime? [Ynpsiuqx?], [H]elp: N

haveged is keeping the following 1 packages installed:
  libhavege1
Keep haveged? [Ynpsiuqx?], [H]elp: Y
Keep libfaketime? [Ynpsiuqx?], [H]elp: N
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  faketime* libfaketime*
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 127 kB disk space will be freed.
Do you want to continue? [Y/n]

답변2

목표를 달성하는 방법에는 여러 가지가 있으므로 두 가지를 나열하겠습니다.명령줄 인터페이스주관적으로 가장 좋고 권장되는 옵션 apt:

첫번째 선택: apt(그리고 apt-get)

sudo apt install ./long-package-name.deb

apt파일 이름을 자동 완성하지 않으므로 구체적으로 가 아니라 를 의미합니다 apt-get. 그렇지 않으면 apt-get스크립트에서 물론 그렇게 할 수 있습니다.

PACKAGE=$(echo long-package-name.deb)

sudo apt-get install ./$PACKAGE

두 번째 선택: gdebi

sudo gdebi long-package-name.deb

나는 그것을 사용하지 않기 때문에 gdebi방금 시도한 것 외에는 추천하거나 반대할 수 없습니다. 다음 내용을 공유하겠습니다.

  1. .deb패키지를 설치했어요apt
  2. 나는 달렸다sudo apt update
  3. sudo apt install ./long-package-name.deb예상 결과를 실행했습니다 .

    PACKAGE는 이미 최신 버전(VERSION)입니다.

  4. 다음을 실행 sudo gdebi long-package-name.deb하면 바람직하지 않은 결과가 나타납니다 .

    패키지를 설치하시겠습니까?

어쩌면 그것은 단지 나이고 그것을 올바르게 사용하는 방법을 모르는 것일 수도 있습니다 gdebi.

관련 정보