我在我的系统上找到了一个库,但我认为它没有在任何地方使用。因此,为了整洁起见,我会删除它,但我想确保我不会破坏任何东西。
具体来说是关于 libgme0 的。我使用的是 Linux Mint 18。
到目前为止我已经尝试过
ldd /bin/* | grep libgme0 ldd /sbin/* | grep libgme0 ldd /usr/bin/* | grep libgme0 ldd /usr/sbin/* | grep libgme0
并没有得到任何结果。这是否足以证明该库未被使用并保存以删除?
答案1
您可能应该让您的发行版的包管理器决定删除它是否安全。
也许尝试删除它apt-get remove libgme0
,看看它是否想删除其他包?
答案2
/bin
、/lib
或除 之外的/sbin
文件均受包管理器的控制。切勿手动修改或删除这些文件。/usr
/usr/local
要检查某个库是否正在使用/lib
或/usr/lib
正在使用,请首先确定哪个包包含该库。在 Linux Mint 上,运行dpkg -S /usr/lib/libgme.so.*
.然后判断哪些安装的包对库包有依赖;您可以使用aptitude search '~i ~Dlibgme0'
。如果这返回任何命中,则该库正在使用中,并且您无法在不破坏系统的情况下删除它(除非您不使用任何依赖于它的包,在这种情况下,如果您删除,则可以删除该库其他包也是如此)。或者,请求删除该包 ( sudo apt-get remove libgme0
) 并查看还删除了哪些内容。
一般来说,除非您确定不需要某些东西,否则不要删除它。许多文件是必需的,因为其他程序会使用它们,即使您不直接使用它们。
APT 是 Mint(以及 Debian、Ubuntu、elementary OS 等)上使用的包管理工具,具有将包标记为“自动安装”(作为另一个包的依赖项)或“手动安装”的机制。您可以运行apt-get autoremove
以删除所有标记为自动安装的软件包以及当前任何手动安装的软件包都不需要的软件包。请检查它建议删除的软件包列表:有时会自动安装一个软件包,但您确实需要它。使用apt-mark
或 Aptitude 设置包的手动/自动标志。
答案3
不,这并不足以证明它未被使用且可以安全删除。
使用库的二进制文件可以位于 /bin、/sbin、/usr/bin、/usr/sbin 之外的其他位置。
答案4
简短的回答
不。
长答案
不。因为它不是可能使用该库的二进制文件的完整列表。二进制文件可以存在于文件系统的任何位置。标准二进制位置包括/bin
, /bin/sbin
, /usr/bin
, /usr/sbin
, /usr/local/bin
, /usr/local/sbin
。但是,某些软件包可能会在其他位置安装可执行文件,例如/opt
.此外,用户几乎可以将它们放在主目录中的任何位置,如果您没有足够的权限,您将无法控制它们。如果您确实想枚举文件系统上的所有可执行文件,这是一个更安全的命令:
find / -type f -perm -100
但这又需要特权。正如您所期望的,以这种方式验证库没有被任何二进制文件使用可能是一个漫长而乏味的过程。
但是,如果您使用包管理器,那么它将提供帮助。任何重要的包管理器都可以帮助您列出库依赖项。例如,以下命令显示 package 的库依赖关系wget
:
Debian/Ubuntu:
apt-cache show wget
拱:
pacman -Qi wget
通常,包管理器还会阻止您卸载当前可能使用的库包。
使用包管理器是维护库依赖关系的正确方法。如果您确实需要您的发行版中未提供的软件并且需要从源代码进行编译,请将输出二进制文件和库保留在前缀为/usr/local
(例如/usr/local/bin
、/usr/local/sbin
和)的目录中/usr/local/lib
。如果您想要删除某个库,这将使您的工作变得更加容易将来,因为包管理器维护的包预计不会依赖于/usr/local
.