我不确定这是否可行,但如果可行,我如何找到与软件相关的所有文件?例如,有没有办法找到gedit
工作需要和使用的所有文件?
这样的命令/技术是否会收集某些文件,例如/usr/share/gtksourceview-3.0/styles/oblivion.xml
哪些文件不是专用于某个特定的软件或者属于其他软件?
答案1
要列出属于某个包的文件,请运行
$ dpkg -L packagename
注意:通常不包括配置文件。
要查找文件所属的包,请运行
$ dpkg -S /path/to/file
答案2
恐怕这不是一个简单问题。以下方法可能对您有所帮助:
您可以通过查看来找到特定包安装的所有文件
/var/lib/dpkg/info/gedit.list
。gedit
您可以通过运行来查找所依赖的所有其他软件包。(相反,您可以使用来apt-cache depends gedit
查找依赖于 的所有软件包)。请记住,这些函数不是递归的 - 因为要成功运行需要大量的系统资源 - 例如,C 库、X 图形系统、dbus 系统消息总线...gedit
apt-cache rdepends gedit
gedit
您可以通过运行来找出可执行文件在运行时需要哪些库文件
ldd $(which gedit)
。(在本例中,which gedit
返回运行时实际可执行文件运行的路径)。gedit
/usr/bin/gedit
您可以通过运行来找出给定进程(当前)打开了哪些文件
lsof -c gedit
。(程序可能会在启动时将文件(例如图标)加载到内存中并关闭其文件描述符,这些文件描述符不会显示在这样的列表中)。