.deb 파일에 패키지를 나열하는 방법은 무엇입니까?

.deb 파일에 패키지를 나열하는 방법은 무엇입니까?
sudo dpkg --install some_stuff_all.deb

파일에 패키지를 설치합니다 some_stuff_all.deb.

sudo dpkg --remove some_stuff_all.deb

표시 메시지:

dpkg: error: you must specify packages by their own names, not by quoting the names of the files they come in
...
Type dpkg-deb --help for help about manipulating *.deb files;

그런 다음 개별 파일을 나열합니다.

dpkg-deb  --contents  some_stuff_all.deb

.deb파일에 패키지를 나열하는 방법은 무엇입니까 ?

답변1

패키지 파일에 대한 정보를 얻으려면:

dpkg -I some_stuff_all.deb

그러면 패키지:, 버전:, 종속성:, 설명: 등을 포함하여 파일에 대해 사용 가능한 모든 정보가 제공됩니다.

dpkg --help참조 옵션 요약 및 세부 정보를 참조하세요 man dpkg. 이것은 -I실제로는 dpkg-deb옵션이지만 옵션을 주면 자동으로 실행됩니다 dpkg. 그리고 또한 참조하십시오.dpkg-debdpkg-debdpkg-deb --helpman dpkg-deb

답변2

파일에는 하나의 패키지만 있습니다 .deb.

패키지 파일 이름이 이면 example_1.234.deb패키지 이름도 입니다 example.(적어도 일반적으로 그렇습니다. 누군가 이론적으로 파일 이름을 바꿀 수 있습니다.)

dpkg를 사용하여 패키지를 삭제하려면 다음을 사용해야 합니다.

dpkg --remove example설마dpkg --remove example_1.234.deb

패키지 파일이 아닌 설치된 패키지를 제거하려고 하기 때문입니다.

답변3

패키지 이름이 지정되었다고 가정하면 다음 옵션을 사용하여 foo.deb패키지의 실제 이름(출력에 나열된 다른 모든 필드와 함께)을 추출 할 수 있습니다.dpkg-deb -I foo.debdpkg-deb-f

dpkg-deb -f foo.deb Package
  • -f foo.deb PackagePackage: 패키지에서 필드를 추출합니다 foo.deb.
user@user-X550CL ~/tmp % ls -l
totale 46316
-rw-rw-r-- 1 user user 47425034 ott  5 05:55 foo.deb
user@user-X550CL ~/tmp % dpkg-deb -f foo.deb Package                      
google-chrome-stable

dpkg-deb -f foo.deb Package이 기능을 확장하면 명령 내에서 실행되는 명령 대체를 사용하여 문제가 되는 패키지를 직접 제거할 수 있습니다 dpkg -r.

sudo dpkg -r $(dpkg-deb -f foo.deb Package)

답변4

Debian 기반 시스템을 사용하지 않고 이러한 도구에 액세스할 수 없는 경우에도 파일이 개방형 형식을 사용하므로 dpkg정보를 추출할 수 있습니다 . deb이는 본질적으로 ar여러 개의 압축된 tar아카이브를 포함하는 아카이브이며, 그 중 하나 에는 패키지에 대한 모든 메타데이터( 에서 반환되는 것( 정보를 얻기 위해 자체적으로 호출됨))가 control.tar포함된 파일이 포함되어 있습니다 .controldpkg -Idpkg-deb -I

압축은 현재 또는 를 control.tar사용하여 사용할 수 있습니다 .gzipxz

libarchive는 bsdtar이러한 모든 아카이브 형식( ar, tar.gz, , tar.xz)을 지원하므로 다음을 수행할 수 있습니다.

bsdtar xOf file.deb 'control.tar*' |
  bsdtar xOf - ./control |
  grep -Pom1 '^Package: \K.*'

첫 번째는 표준 출력에서 ​​파일을 bsdtar추출하여 두 번째 추출기 멤버 control.tar에 제공합니다 . (여기서 GNU를 가정 ) 패키지 이름을 추출합니다.bsdtar./controlgrepgrep

관련 정보