gea*_*net 16 debian apt repository
在我的系统中,我有不属于任何包的文件,它们是我的或来自安装了make install
. 如何找到不属于任何包的所有文件?
Pat*_*que 12
在/var/lib/dpkg/info
是.list
文本文件,包含在通过Debian的包管理器安装在每个package¹列表中的所有文件。
在文件系统中查找与任何条目不匹配的所有文件可以通过这样的简单操作来实现:
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
Run Code Online (Sandbox Code Playgroud)
这显然需要很长时间,因为将扫描整个文件系统。如果您对系统目录使用不同的分区(例如/usr
或/var
),请在初始/
.
警告:这并没有包括由包脚本创建的文件。例如:
/etc/hosts.allow
未在任何地方列出,但它可能来自libwrap0
可能创建它的文件,如果该文件在安装包时不存在。.pyc
文件(编译的 Python 库)、.elc
文件(编译的 Emacs Lisp 库)等。@Patrice 解决方案的更高效版本,使用支持进程替换的 shell(bash
、AT&T ksh
、zsh
):
(
export LC_ALL=C
comm -23 <(find / -xdev -type f | sort) \
<(sort -u /var/lib/dpkg/info/*.list)
)
Run Code Online (Sandbox Code Playgroud)
与 Patrice 的解决方案一样,它假设没有文件路径包含换行符。