dpkg -L package_name 如何工作?

How does dpkg -L package_name works?

我很好奇 dpkg -L package_name 是如何工作的。

男人是这么说的:

         -L, --listfiles package-name...
              List files installed to your system from package-name.

这是作为 root 执行的 dpkg -L bash 的输出:

/.
/usr
/usr/share
/usr/share/info
/usr/share/menu
/usr/share/menu/bash
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/bash
/usr/share/man
/usr/share/man/man7
/usr/share/man/man7/bash-builtins.7.gz
/usr/share/man/man1
/usr/share/man/man1/bash.1.gz
/usr/share/man/man1/rbash.1.gz
/usr/share/man/man1/clear_console.1.gz
/usr/share/man/man1/bashbug.1.gz
/usr/share/doc
/usr/share/doc/bash
/usr/share/doc/bash/RBASH
/usr/share/doc/bash/changelog.Debian.gz
/usr/share/doc/bash/copyright
/usr/share/doc/bash/README.abs-guide
/usr/share/doc/bash/POSIX.gz
/usr/share/doc/bash/inputrc.arrows
/usr/share/doc/bash/INTRO.gz
/usr/share/doc/bash/README.Debian.gz
/usr/share/doc/bash/NEWS.gz
/usr/share/doc/bash/COMPAT.gz
/usr/share/doc/bash/README.commands.gz
/usr/share/doc/bash/README
/usr/bin
/usr/bin/clear_console
/usr/bin/bashbug
/etc
/etc/skel
/etc/skel/.bashrc
/etc/skel/.bash_logout
/etc/skel/.profile
/etc/bash.bashrc
/bin
/bin/bash
/bin/rbash

dpkg 怎么知道的?为什么不包括(例如)/root/.bashrc

已安装的 Debian 软件包的内容存储在 /var/lib/dpkg/info/<b>PACKAGENAME</b>.list.[= 的纯文本文件中15=]

例如:

sh# cat /var/lib/dpkg/info/bash.list
/.
/etc
/etc/bash.bashrc
/etc/skel
/etc/skel/.profile
/etc/skel/.bash_logout
/etc/skel/.bashrc
/bin
/bin/bash
/usr
…

/root/.bashrc 不包含在内,因为它不是 bash 包的一部分。它是在创建用户时从 /etc/skel/.bashrc 复制的,但如果 bash 软件包更新则不会被覆盖,如果软件包被卸载也不会被删除。