8

Linux如何升级软件版本

 3 years ago
source link: http://os.51cto.com/art/202102/644965.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

简介

在使用Linux的时候,安装软件一般有几种:系统包管理器安装、源码编译、二进制包,还有现在桌面系统用比较多的Snap、AppImage、Flatpak等。

Uz6VNvF.png!mobile

升级

由于软件会存在一些漏洞,需要定期进行更新,这时候使用,不同方式的安装的软件升级就不一样了。

1.系统包管理器安装,直接使用包管理工具进行升级即可

例如在CentOS上可以直接使用yum update nginx进行升级,这时候所有的依赖关系也会跟着升级。

BZFRJzN.png!mobile

优点:

  • 操作简单,直接一条命令就可以升级
  • 稳定,系统自带的包一般都是经过验证才会进行发布的,相对比较稳定

缺点:

  • 版本不好控制,一般会自动升级到最新版本
  • 升级会导致依赖包跟着被升级,有可能出现异常。

2.源码安装的,编译新版本到新的路径

源码编译安装的时候,一般都可以指定一个安装路径,例如:./configure --prefix=/opt/nginx-1.18,先编译到新的路径去,然后再进行服务切换

优点:

  • 版本好控制,可以根据自己需要的版本进行编译安装
  • 快速回退,有问题,可以直接指回到旧的目录就可以完成回退

缺点:

  • 编译需要比较长的时间
  • 安装后的稳定性需要自己进行验证
  • 需要自己解决依赖关系包

3.二进制包安装的,解压到新的路径

二进制包直接加好执行位就可以直接执行了,系统包管理器的安装包也都是二进制,只是安装系统的规范,将文件放到对应的目录。

二进制包安装的,例如jdk就可以直接使用编译过的tar包进行部署,只要解压完就可以直接运行。

优点:

  • 快速部署,单独打包的二进制包一般比较少依赖系统包,解压后直接可以运行

缺点:

  • 需要官方有提供二进制包
  • 只能支持指定的发行版本

6.AppImage

r6ze2yj.png!mobile

AppImage将整个软件打包成AppImage文件包,一个包包含了所有的功能. 并且几乎可以在所有的linux发行版本中使用。

优点:

  • 快速部署,直接加上执行位就可以执行
  • 可以在多个发行版本中运行

缺点:

  • 需要官方有提供,或者自己有能力打包。
  • 打包出来的文件还是比较大的。(不过还可以结果,很适合桌面的Linux)

5.Snap 、Flatpak

Snap 和Flatpak都是为了统一Linux上包的格式,让一个软件可以运行在各种 Linux发行版和操作系统上。

yENrueV.png!mobile

优点:

  • 快速部署,都有自己的应用市场,可以直接搜索安装
  • 可以在多个发行版本中运行

缺点:

  • 发展比较晚,还有很多需要完善

总结

一般我是比较建议生产环境自己编译,或者下载官方的二进制包进行部署,这样子升级或者回退的时候不会相互影响。

尽量不要使用系统的组件,部署服务!

刚碰到的坑!开发使用系统自带的Python,手动安装第三方包,然后去跑服务;结果系统升级,把python相关依赖包升级了,导致服务异常了。

m2iMvaI.png!mobile

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK