如何升级从源安装的软件?

The*_*per 10 nginx source update

我从源代码安装 NGinx,因为 ubuntu 存储库中的软件包很旧。我想知道升级这些类型的安装的最佳方法是什么?

我目前的工作流程涉及。

  • 下载新源
  • 用相同的路径安装软件。
  • 重新启动软件。

有人告诉我这不是最好的路线。

建议?

Tom*_*ner 9

您认为这不是最佳路线是正确的。这条路线需要许多手动步骤,并且非常容易出错,并且不能很好地扩展。

在使用 linux 发行版时,您应该尽可能地坚持包管理。

使用包管理的优点:

  • 依赖支持
  • 易于安装/拆卸
  • 软件库存
  • 升级/降级支持,包括处理配置文件
  • 源包基本上记录了您的构建过程,并在编写后为您自动化。
  • 包签
  • 和更多。

当你只从源代码开始工作时,你会失去所有这些强大的功能,事情很快就会变得混乱。

为了解决您的特定问题,您应该查看ubuntu backports 存储库,也许他们有您可以使用的 NGinx 更新版本。

如果他们没有合适的版本,那么最好的解决方案是自己创建一个反向移植的 ubuntu 包。这真的没有那么难,而且每次都比手动从源代码编译它的工作量要少。向后移植基本上需要从 ubuntu 获取源包,用你想要的最新文件替换旧的 upsteam tar.gz 文件,然后重建包。

您可以使用本指南来帮助您向后移植软件包。


小智 8

我发现在不同的位置安装不同的版本非常方便,只需符号链接到您要使用的版本,例如:

lrwxr-xr-x  1 root  wheel     7B Jun  7 18:26 /usr/local/foo -> foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.1
Run Code Online (Sandbox Code Playgroud)

好处是:

  • 最小化升级期间的服务停机时间
  • 轻松回滚
  • 您仍然可以使用相同的 o' 路径,例如 /usr/local/foo/bin/bar

当然,您仍然需要重新应用您对先前版本所做的任何配置更改,但为此您可以使用一些版本控制系统 (RCS/SVN/GIT) 或配置管理工具,如Bcfg2

而且,当然这仅适用于少数或更少的主机。