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


10

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

我当前的工作流程涉及。

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

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

有什么建议吗?

Answers:


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

好处是:

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

当然,您仍然必须重新应用对先前版本所做的所有配置更改,但是为此,您可以使用某些版本控制系统(RCS / SVN / GIT)或Bcfg2之类的配置管理工具。

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


这是我在少数情况下无法构建软件包的解决方案,除非我通常使用/ opt而不是/ usr / local。
freiheit


1

如果要在单台计算机上安装此程序,则每次从源代码执行都是最好的方法。如果您打算在多台机器上安装它,并且想要确保它的一致性,那么值得学习如何制作Debian软件包。您可能会使用Ubuntu中的包装作为基础。


1

没有一个好方法。创建有效的软件包管理的原因是为了解决这个问题。升级和卸载源代码编译的东西很困难。

我同意汤姆和戴维。

如果这是一次性的情况,那么从源代码重新编译可能是最好的选择。如果是在多台机器上,那么绝对是时候使用受支持的程序包管理。


0

恐怕这是唯一的方法。如果要维护更多服务器,请考虑在单独的测试环境中进行编译,并可能将编译结果打包。

这将稍微标准化您的设置,并简化在许多服务器上的部署。您也不需要在生产计算机上使用gcc [许多人会认为这是安全性的好处]。

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.