apt-get 将如何处理我手动安装的软件?

apt-get 将如何处理我手动安装的软件?

假设APT存储库中的Emacs版本是24.3,我configure && make install自己的emacs 24.4。过了很长一段时间,APT存储库中的软件更新到了24.5。当我运行时 APT 会做什么apt-get update && atp-get safeupgrade

让 APT 处理我手动安装的软件的一般方法是什么?

答案1

apt-get 没有“safeupgrade”命令。您是否正在考虑“资质安全升级”?

除此之外,apt-get 只“知道”事情,因为包系统维护着包子系统程序所做的所有更改的数据库。当您下载源代码并自行构建然后安装它时,这不是使用包子系统完成的,因此这些更改都不会记录在任何地方,因此 apt-get 根本无法知道它们。

如果您从未在计算机上执行过“apt-get install emacs”,则软件包子系统将永远不会知道 emacs 已安装,因此“apt-get Upgrade”永远不会触及它,您是安全的。只有“dpkg --list”中列出的程序才会被“apt-get update”处理。

如果您确实执行了“apt-get install emacs”,那就是另一回事了。

如果您足够聪明,可以使用“./configure --prefix=/usr/local/bin”(可能还有一些其他指定位置的参数),那么您的自定义 emacs 文件将位于与“apt-get”不同的位置安装 emacs” 加载到您的系统上,您将拥有两个可以运行的 emacs 安装。因此,当您执行“apt-get升级”并且存储库中存在比 apt-get 之前放置的更新的 emacs 软件包时,它将替换该软件包,并且您的自定义版本不会受到影响。

如果您在构建自定义 emacs 时没有使用配置选项,那么它可能会将它们写在打包的 emacs 文件的顶部。但这实际上取决于包维护者在构建 .deb 并将其放入存储库时使用的选项,因此有点难以预测。无论如何,当您执行 apt-get 升级时,自定义安装覆盖的任何内容都将再次被覆盖。每次安装后,您将只有一个 emacs 的工作版本,以及一些无关的零碎东西。

答案2

APT 对您手动安装的软件一无所知。

如果您将 Emacs 安装在/usr/local(默认位置)下,则该安装完全独立于/usrAPT 管理下的 Emacs 安装。运行emacs就会运行/usr/local/bin/emacs(你手动安装); running/usr/bin/emacs将运行 APT 安装的 Emacs(更具体地说,是最新版本 — Debian 的 1 Emacs 打包支持安装多个版本)。

如果你安装了 Emacs——/usr好吧,你已经造成了混乱,但希望不是很大。/usr为包管理器保留,但/usr/local为系统管理员保留(包管理器仅在那里创建几个目录)。make uninstall从 Emacs 源目录运行以删除这些文件。在重新安装 Debian 软件包之前执行此操作。

如果您想手动安装软件(在 下/usr/local)但向包管理器声明它来满足依赖关系,您可以使用 制作一个假包equivs。看如何让 apt 识别已安装的 tar 包?

Debian 会自动为已安装的 Emacs 版本对 Elisp 软件包进行字节编译。为了受益于这一点,除了手动安装的 Emacs 版本之外,还可以通过包管理器安装一个版本的 Emacs。确保选择一个具有兼容字节码的(具有相同主要版本的旧次要版本应该没问题,例如 24.3 deb 和 24.4 手动安装)。使手动安装的版本读取相同的字节码目录:/usr/share/emacs/24.3/lisp/startup.elc从本地安装的startup.el.

1在这篇文章中,“Debian”包括使用相同 Emacs 封装的衍生版本,包括 Ubuntu、Mint 等。

相关内容