首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何列出由APT命令安装的所有文件?

如何列出由APT命令安装的所有文件?
EN

Unix & Linux用户
提问于 2022-01-10 06:55:00
回答 1查看 90关注 0票数 1

我试过如何列出已由APT软件包安装的所有文件?。但问题是,例如:

当我运行sudo apt install libvirt-daemon-system时,它不只是安装一个包(在本例中是libvirt-daemon-system)。它还将安装以下新软件包下提到的软件包:

代码语言:javascript
复制
$ sudo apt install libvirt-daemon-system
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  cpu-checker ibverbs-providers ipxe-qemu ipxe-qemu-256k-compat-efi-roms libcacard0 libfdt1 libibverbs1 libiscsi7 libpmem1 librados2 librbd1
  librdmacm1 libslirp0 libspice-server1 libusbredirparser1 libvirglrenderer1 libvirt-clients libvirt-daemon libvirt-daemon-driver-qemu
  libvirt-daemon-driver-storage-rbd libvirt-daemon-system-systemd libvirt0 msr-tools ovmf qemu-block-extra qemu-kvm qemu-system-common
  qemu-system-data qemu-system-gui qemu-system-x86 qemu-utils seabios
Suggested packages:
  libvirt-daemon-driver-lxc libvirt-daemon-driver-vbox libvirt-daemon-driver-xen libvirt-daemon-driver-storage-gluster
  libvirt-daemon-driver-storage-zfs numad auditd nfs-common open-iscsi radvd systemtap zfsutils samba vde2 debootstrap
The following NEW packages will be installed:
  cpu-checker ibverbs-providers ipxe-qemu ipxe-qemu-256k-compat-efi-roms libcacard0 libfdt1 libibverbs1 libiscsi7 libpmem1 librados2 librbd1
  librdmacm1 libslirp0 libspice-server1 libusbredirparser1 libvirglrenderer1 libvirt-clients libvirt-daemon libvirt-daemon-driver-qemu
  libvirt-daemon-driver-storage-rbd libvirt-daemon-system libvirt-daemon-system-systemd libvirt0 msr-tools ovmf qemu-block-extra qemu-kvm
  qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86 qemu-utils seabios
0 upgraded, 33 newly installed, 0 to remove and 1 not upgraded.
Need to get 22.4 MB of archives.
After this operation, 93.9 MB of additional disk space will be used.
Do you want to continue? [Y/n]

所以,我不能通过运行dpkg -L libvirt-daemon-system来获得完整的图片。

获得在apt install命令之后创建的所有文件的列表的一个选项是运行

代码语言:javascript
复制
dpkg -L libvirt-daemon-system
dpkg -L cpu-checker
dpkg -L ibverbs-providers
dpkg -L ipxe-qemu
....

但我认为这将是一个漫长的过程。

另一个选项可以是在安装软件包后运行以下命令:

代码语言:javascript
复制
sudo find / -xdev -mtime -5 -type f ! -path '/home/blueray/*' ! -path '/timeshift/*'

是否有更好的解决方案来获取在apt install命令之后创建的所有文件的列表。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-01-10 10:27:39

之后,您可以将已安装的包列表提供给dpkg -L

代码语言:javascript
复制
dpkg -L libvirt-daemon-system cpu-checker ibverbs-providers ipxe-qemu \
        ipxe-qemu-256k-compat-efi-roms libcacard0 libfdt1 libibverbs1 \
        libiscsi7 libpmem1 librados2 librbd1 librdmacm1 libslirp0  \
        libspice-server1 libusbredirparser1 libvirglrenderer1 \
        libvirt-clients libvirt-daemon libvirt-daemon-driver-qemu \
        libvirt-daemon-driver-storage-rbd libvirt-daemon-system \
        libvirt-daemon-system-systemd libvirt0 msr-tools ovmf \
        qemu-block-extra qemu-kvm qemu-system-common qemu-system-data \
        qemu-system-gui qemu-system-x86 qemu-utils seabios

在大多数情况下,这不会太长(尽管结果是可以的,在本例中也是如此)。

经过一些准备,您可以列出包安装的所有文件(不包括它们的维护脚本所做的更改)。在运行apt之前,存储打包系统知道的所有文件的列表:

代码语言:javascript
复制
sort -u /var/lib/dpkg/info/*.list > files-before

运行apt之后,再次将其存储在另一个文件中:

代码语言:javascript
复制
sort -u /var/lib/dpkg/info/*.list > files-after

然后,您可以比较这两个文件以查看发生了什么变化,例如

代码语言:javascript
复制
comm files-{before,after}

代码语言:javascript
复制
meld files-{before,after}

这也适用于包删除和包升级期间的文件删除;您的find方法无法确定删除了什么。

在您只对新(或升级的)包安装的文件感兴趣的情况下,您可以查看最后x分钟修改的文件列表,例如10:

代码语言:javascript
复制
find /var/lib/dpkg/info -name \*.list -mmin -10 -exec sort -u {} +

或者,如果你在使用Zsh:

代码语言:javascript
复制
sort -u /var/lib/dpkg/info/*.list(mm-10)
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/685734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档