我时不时地需要更新在我们工作的测试服务器之一(主要是 Debian)上运行的软件。几乎每次真正让我困惑的是,安装软件的方法并不只有一种。今天我需要升级 Coffeescript。我不知道它最初是如何安装的,因此不知道如何以最佳方式更新它。
它可以使用 apt 进行安装,也可以通过克隆 github 项目并自行构建或通过 Nodejs 包管理器 npm 来手动安装。在我努力解决这个问题并手动扔掉所有与咖啡脚本相关的文件和目录后,我成功地进行了全新安装。但后来我想使用需要安装nodejs 0.6和0.4的coffeescript命令。
那么,让游戏重新开始吧!
Nodejs是手动安装的吗?还是作为包裹?还是上帝把它放在那里的?我不知道。
所以我问自己,当您真的不知道软件最初是如何安装的时,是否有一些简单的策略来更新已安装的软件?这里最好的方法是什么?
答案1
您应该遵循一条简单的规则,这将解决大多数情况:
在不通过包管理器的情况下,切勿将文件放在
/bin
、/lib
、/sbin
或/usr
、 except下。/usr/local
这样,如果文件位于包管理器管理的区域中,您就知道它来自包。如果不是,您就知道您是手动安装的。
您应该尽可能坚持使用您的发行版提供的软件包。仅当您有记录需要发行版未提供的功能时,才安装第三方软件包。 “我想要最新版本”并不是一个有效的理由。如果您确实安装了第三方软件包,请记下获得它们的位置,并将软件包(.rpm
或.deb
文件)存档到某个地方。优先使用 apt 或 yum 源进行随机网络下载。
使用 stow 或 xstow对于您手动安装的程序。
使用等等管理员到保持/etc
版本控制。每当你做出改变时,都要做出承诺,并发出有意义的信息。
如果您遇到过这样的情况:您以肮脏的方式做事并且忘记了某个软件的来源:
- 按照上述建议在正确的位置安装该软件的干净版本。
- 测试新安装是否符合您的预期目的。
- 切换您的服务以使用新安装。
- 尽可能清理旧的安装。
答案2
我建议您使用 来puppet
跟踪 Linux 中安装的软件。
Puppet 是 *nix 系统的自动化管理引擎,它根据集中式规范执行管理任务(例如添加用户、安装软件包和更新服务器配置)。
您可以参考关联
答案3
如果您使用 apt-get 安装任何软件包,则所有依赖包都会自行安装,因为 apt-get 会解析所有依赖项。
就我而言,我尝试使用 apt-get 通过命令行安装每个软件包,只要该软件包位于 Ubuntu 存储库中即可。如果它不存在于他们的存储库中,那么您必须阅读该实用程序的安装手册,并根据该实用程序是使用 Makefile 还是其他内容来安装它。