Câu trả lời:
dpkg -c
(hoặc --contents
) liệt kê nội dung của tệp gói .deb (Đây là giao diện người dùng dpkg-deb
.)
dpkg -c package_file.deb
Để làm việc trực tiếp với tên gói chứ không phải tệp gói, bạn có thể sử dụng apt-file
. (Bạn có thể cần cài đặt apt-file
gói đầu tiên.)
sudo apt-file update
apt-file list package_name
Như đã nêu trong nhận xét đầu tiên, tệp apt liệt kê nội dung cho các gói trong kho Apt đã được cấu hình của bạn. Nó không liên quan cho dù bất kỳ gói cụ thể là hoặc không được cài đặt.
sudo apt-file update
) và chỉ liệt kê nội dung cho các gói trong kho Apt đã được cấu hình của bạn.
dpkg -c
đẹp!
.deb
tệp bạn đã tải xuống riêng. Câu hỏi ban đầu là mơ hồ.
Sử dụng --contents
thay vì -L
:
dpkg --contents PACKAGENAME
Khi được sử dụng theo cách này, dpkg
hoạt động như một giao diện người dùng dpkg-deb
, vì vậy hãy sử dụng man dpkg-deb
để xem tất cả các tùy chọn.
Bạn cũng có thể sử dụng trình duyệt lưu trữ để xem nội dung gói.
dpkg --contents google-chrome-stable_current_amd64.deb
và nó liệt kê ra tất cả các tệp mà nó sẽ cài đặt (chủ yếu là /opt/google/chrome
), không có tệp nào hiện được cài đặt trên hệ thống của tôi khi tôi nhập tệp này. (Tôi đang chạy Xubfox 11.10 nếu có vấn đề.)
dpkg --contents
sẽ cho phép bạn nhìn vào gói đã gỡ cài đặt. Nếu .deb chưa có trên hệ thống của bạn, hãy làm
apt-get --download-only install pkgname
Gói sẽ được tải xuống /var/cache/apt/archives
nhưng không được cài đặt.
Cách tốt nhất là duyệt trực tiếp kho lưu trữ gói:
http://packages.debian.org/[distro name]/all/[package name]/filelist
Thí dụ:
http://packages.debian.org/wheezy/all/transmission-common/filelist
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/
(với điều kiện bạn đã lynx
cài đặt).
Tôi đã lấy ý tưởng http của @ baldoz và khái quát nó cho Ubuntu và Debian, thêm một chút sed
và gói nó trong hàm bash one-liner:
function deb_list () { curl -s $(lsb_release -si | sed -e 's Ubuntu https://packages.ubuntu.com ' -e 's Debian https://packages.debian.org ')/$(lsb_release -sc)/all/$1/filelist | sed -n -e '/<pre>/,/<\/pre>/p' | sed -e 's/<[^>]\+>//g' -e '/^$/d'; }
Sử dụng:
$ deb_list curl
/usr/bin/curl
/usr/share/doc/curl/changelog.Debian.gz
/usr/share/doc/curl/copyright
/usr/share/doc/curl/NEWS.Debian.gz
/usr/share/man/man1/curl.1.gz
Cùng một chức năng trên nhiều dòng:
function deb_list () {
curl -s $(lsb_release -si \
| sed -e 's Ubuntu https://packages.ubuntu.com ' \
-e 's Debian https://packages.debian.org '
)/$(lsb_release -sc)/all/$1/filelist \
| sed -n -e '/<pre>/,/<\/pre>/p' \
| sed -e 's/<[^>]\+>//g' -e '/^$/d';
}
Giải thích:
https://packages.ubuntu.com
hoặchttps://packages.debian.org
https://packages.ubuntu.com/trusty/all/curl/filelist
<pre>
và </pre>
thẻ); thứ hai loại bỏ bất kỳ thẻ html nào; thứ ba loại bỏ bất kỳ dòng trống.Lưu ý: Nó không tìm kiếm PPA, repos nguồn apt thay thế và chỉ truy vấn các gói chính thức có sẵn để phát hành debian / ubfox bạn đang chạy.
Đối với tất cả những người vẫn có thể giải quyết vấn đề này vào tháng 1 năm 2017, bạn có thể có một số nội dung thú vị với các phiên bản apt và dpkg gần đây trong Debian 8.5 mà không cần tải xuống bất cứ điều gì.
Danh sách nội dung của tệp Deb mà không cần tải xuống:
Đầu tiên xác định url đầy đủ của tệp deb:
root@debian:apt-get --print-uris download yade
'http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb' yade_2016.06a-7_amd64.deb 1621148 SHA256:26c0d84484a92ae9c2828edaa63243eb764378d79191149970926aa3ec40cdd4
PS: --print-uris switch in url của gói deb nhưng deb không được tải xuống.
Sau đó hiển thị nội dung của gói deb mà không cần tải xuống:
root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb -c /dev/stdin
drwxr-xr-x root/root 0 2016-12-10 22:18 ./
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/bin/
-rwxr-xr-x root/root 13184 2016-12-10 22:18 ./usr/bin/yade
.........................more files listed bellow ......................
PS: Kết quả tương tự có thể đạt được với
root@debian:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb")
Trích xuất một tập tin từ gói deb trên mà không cần tải xuống.
Ví dụ, chúng tôi muốn đọc trang man của gói yade mà không cần cài đặt gói này và thậm chí không tải xuống gói deb.
Filename of the page người đàn ông bên trong gói deb như tư vấn bởi dpkg -c
là./usr/share/man/man1/yade.1.gz
Để đọc trang người đàn ông trên bay:
root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb --fsys-tarfile /dev/stdin |tar -xO ./usr/share/man/man1/yade.1.gz |man /dev/stdin
trang man được hiển thị chính xác bằng ứng dụng man.
PS: Đường ống trên không hoạt động với lệnh ar.
root@debian:apt --version --> apt 1.4~beta2 (amd64)
root@debian:dpkg --version --> Debian 'dpkg' package management program version 1.18.18 (amd64).
root@debian:man --version --> man 2.7.6.1
root@debian:tar --version --> tar (GNU tar) 1.29
Có vẻ như không thể trước khi cài đặt nó trước hoặc trích xuất danh sách từ .deb
tệp.
Hãy thử lệnh sau:
dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']\+"))
Thay đổi language-pack-en
với tên gói của bạn.
Về cơ bản nó đọc .deb
tập tin được trích xuất thông qua curl
và chạy dpkg --contents FILE
trên nó.
Bạn cũng có thể kiểm tra nội dung mà không cần tải tập tin gói.
Vì vậy, nếu bạn biết URL của .deb
tệp, lệnh shell sau sẽ liệt kê tất cả các tệp gói:
dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")
Curl params: -s
- im lặng, -L
- theo liên kết di chuyển.
Nếu bạn không biết URL, hãy tìm nạp theo : apt --print-uris
, vd
apt --print-uris install avis | grep avis