如何跟踪已安装的软件


8

我时不时需要更新在工作中的一个测试服务器(大多数是Debian)上运行的软件。几乎每次使我感到困惑的是,不仅有一种安装软件的方法。今天,我需要升级Coffeescript。我不知道它最初是如何安装的,因此也不知道如何以最佳方式更新它。

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

因此,让游戏重新开始!

是否手动安装了nodejs?还是打包?还是上帝把它放在那里?我不知道。

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


2
恕我直言,最好的方法不是一开始就进入这种状态。决定必须打包所有软件或将其不安装,如果需要,请自己打包。然后将它们放在内部软件包服务器上。
Sirex

Answers:


7

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

永远不要把下一个文件/bin/lib/sbin或者/usr,只是/usr/local,不通过包管理器去。

这样,如果文件位于程序包管理器管理的区域中,则您知道该文件来自程序包。如果不是,则表明您是手动安装的。

您应该尽可能使用发行版提供的软件包。仅在您有文档记录的发行版未提供的功能需求时,才安装第三方软件包。“我想要最新版本”不是有效的理由。如果您确实安装了第三方软件包,请记下它们的来源,并将软件包(.rpm.deb文件)存档在某处。通过随机Web下载获得适当的特权或yum来源。

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

使用etckeeper保持/etc版本控制。只要做出更改,就提交有意义的消息。


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

  • 按照上述建议,在正确的位置安装该软件的干净版本。
  • 测试新安装是否可以满足您的预期目的。
  • 切换服务以使用新安装。
  • 尽最大可能清理旧安装。

1

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

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

你可以参考链接


感谢您的链接!但是我在命令行上需要一些东西。乍一看,puppet仅适用于桌面系统。
acme 2012年

1

如果您使用apt-get安装任何软件包,则所有依赖软件包都将自行安装,因为apt-get可以解决所有依赖关系。

就我而言,我尝试使用apt-get通过命令行安装每个软件包,只要该软件包在Ubuntu存储库中即可。如果它们的存储库中不存在该文件,则您必须阅读该实用程序的安装手册,并根据该实用程序是否使用Makefile或其他方式进行安装。

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.