如何跟踪已安装的软件

acm*_*cme 8 debian software-installation upgrade package-management

我时不时地需要更新在我们的一个测试服务器上运行的软件(主要是 Debian)。几乎每次都让我感到困惑的是,安装软件的方法不止一种。今天我需要升级 Coffeescript。我不知道它最初是如何安装的,因此也不知道如何以最佳方式更新它。

它可以通过 apt 安装,也可以通过克隆 github-project 并自行构建或通过 nodejs 包管理器 npm 手动安装。在我为此苦苦挣扎并手动丢弃所有与咖啡脚本相关的文件和目录之后,我设法进行了全新安装。但是后来我想使用需要安装 nodejs 0.6 和 0.4 的 coffeescript 命令。

那么,让游戏重新开始吧!

nodejs 是手动安装的吗?还是作为包裹?还是上天安排的?我不知道。

所以我问自己,当你真的不知道它最初是如何安装的时,是否有一些简单的策略来更新已安装的软件?这里最好的方法是什么?

Gil*_*il' 7

您应该遵循一个简单的规则,它可以解决大多数情况:

切勿在不通过包管理器的情况下将文件放在/bin, /lib,/sbin/usr, except/usr/local下。

这样,如果文件在包管理器管理的区域中,您就知道它来自一个包。如果不是,您知道您手动安装了它。

您应该尽可能坚持使用您的发行版提供的软件包。如果您对发行版未提供的功能有明确的需求,请仅安装第三方软件包。“我想要最新版本”不是一个有效的理由。如果您确实安装了第三方软件包,请记下您从何处获得它们,并将这些软件包(.rpm.deb文件)存档在某处。通过随机网络下载获得 apt 或 yum 源的特权。

对手动安装的程序使用 stow 或 xstow

使用etckeeper保持/etc版本控制之下。每当你做出改变时,用有意义的信息提交。


如果您遇到了一种情况,您以肮脏的方式做事并且迷失了某个软件的来源:

  • 按照上述建议,在适当的位置安装该软件的干净版本。
  • 测试新安装是否符合您的预期目的。
  • 切换您的服务以使用新安装。
  • 尽最大努力清理旧安装。


Mug*_*hil 1

我建议您使用 来puppet跟踪 Linux 中安装的软件。

Puppet 是 *nix 系统的自动化管理引擎,它根据集中式规范执行管理任务(例如添加用户、安装软件包和更新服务器配置)。

你可以参考链接