Apt可以从源中删除用户安装的软件所需的软件包吗?


14

Apt处理从其存储库或*.deb文件安装的软件包之间的依赖关系。但是,用户从源代码编译并安装./configure && make && make install而不先创建.deb文件的软件又如何呢?Apt是否有可能删除此类软件所需的软件包?是从源代码安装软件/opt还是/usr/local有所作为?


1
您可以安装equivs软件包作为从源安装的软件包的替代,以强制依赖项保持安装状态。
Faheem Mitha 2015年

Answers:


13

APT对手动安装的软件一无所知。它不知道该软件需要什么库或什么。

当APT仅安装软件包以满足其他软件包的依赖性时,该软件包将标记为自动安装。如果删除依赖于自动安装的软件包的所有软件包,则在运行时将删除该软件包apt-get autoremove。APT的更高级别的前端通常会在进行其他维护之后提供此功能。为避免删除本地安装的软件所需的软件包,请将这些软件包标记为手动安装:,或键入aptitude。apt-mark manual PACKAGE-NAMEm

要查找二进制可执行文件需要哪些库软件包,请运行ldd /path/to/executable。对于包含的每一行,运行以显示包含该库的软件包的名称。对于脚本,显示脚本使用的解释器;确保该解释器保持安装状态。查找脚本使用的库可能很困难,没有通用的方法可以做到。/usr/lib/SOMETHINGdpkg -S /usr/lib/SOMETHINGhead -n 1 /path/to/script

如果您手动安装了发行版中存在的软件包的较新版本,请查看发行版软件包的依赖项并将其标记为手动安装。


apt-getDebian中的Jessie没有manual选项。对于这些手动或自动(自动)安装提示,我一直在使用apt-mark。(apt-mark manual pkgapt-mark showmanual pkgapt-mark auto pkg等)
Lekensteyn

@Lekensteyn我的意思是apt-mark,谢谢。
吉尔斯(Gillles)“所以-别再邪恶了”

14

apt并且dpkg绝对可以删除软件包管理系统范围之外的本地安装的其他软件所需的软件。根本没有办法aptdpkg知道,这种软件可能存在。

此类软件的安装位置没有区别:可能是 /opt/usr/local或在用户的主目录(在这种情况下,即使是系统管理员可能不知道它的存在),或在任何地方,真的。

技术上apt或者dpkg甚至可以删除由其他软件所需要的软件包管理系统的一部分,如果是后者的软件没有宣布这取决于前者的软件。但是,创建deb软件包的过程包括自动化过程,以帮助防止软件包维护者忘记声明这样的依赖项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.