Linux如何升級(jí)軟件版本
簡介
在使用Linux的時(shí)候,安裝軟件一般有幾種:系統(tǒng)包管理器安裝、源碼編譯、二進(jìn)制包,還有現(xiàn)在桌面系統(tǒng)用比較多的Snap、AppImage、Flatpak等。
升級(jí)
由于軟件會(huì)存在一些漏洞,需要定期進(jìn)行更新,這時(shí)候使用,不同方式的安裝的軟件升級(jí)就不一樣了。
1.系統(tǒng)包管理器安裝,直接使用包管理工具進(jìn)行升級(jí)即可
例如在CentOS上可以直接使用yum update nginx進(jìn)行升級(jí),這時(shí)候所有的依賴關(guān)系也會(huì)跟著升級(jí)。

優(yōu)點(diǎn):
- 操作簡單,直接一條命令就可以升級(jí)
- 穩(wěn)定,系統(tǒng)自帶的包一般都是經(jīng)過驗(yàn)證才會(huì)進(jìn)行發(fā)布的,相對(duì)比較穩(wěn)定
缺點(diǎn):
- 版本不好控制,一般會(huì)自動(dòng)升級(jí)到最新版本
- 升級(jí)會(huì)導(dǎo)致依賴包跟著被升級(jí),有可能出現(xiàn)異常。
2.源碼安裝的,編譯新版本到新的路徑
源碼編譯安裝的時(shí)候,一般都可以指定一個(gè)安裝路徑,例如:./configure --prefix=/opt/nginx-1.18,先編譯到新的路徑去,然后再進(jìn)行服務(wù)切換
優(yōu)點(diǎn):
- 版本好控制,可以根據(jù)自己需要的版本進(jìn)行編譯安裝
- 快速回退,有問題,可以直接指回到舊的目錄就可以完成回退
缺點(diǎn):
- 編譯需要比較長的時(shí)間
- 安裝后的穩(wěn)定性需要自己進(jìn)行驗(yàn)證
- 需要自己解決依賴關(guān)系包
3.二進(jìn)制包安裝的,解壓到新的路徑
二進(jìn)制包直接加好執(zhí)行位就可以直接執(zhí)行了,系統(tǒng)包管理器的安裝包也都是二進(jìn)制,只是安裝系統(tǒng)的規(guī)范,將文件放到對(duì)應(yīng)的目錄。
二進(jìn)制包安裝的,例如jdk就可以直接使用編譯過的tar包進(jìn)行部署,只要解壓完就可以直接運(yùn)行。
優(yōu)點(diǎn):
- 快速部署,單獨(dú)打包的二進(jìn)制包一般比較少依賴系統(tǒng)包,解壓后直接可以運(yùn)行
缺點(diǎn):
- 需要官方有提供二進(jìn)制包
- 只能支持指定的發(fā)行版本
6.AppImage

AppImage將整個(gè)軟件打包成AppImage文件包,一個(gè)包包含了所有的功能. 并且?guī)缀蹩梢栽谒械膌inux發(fā)行版本中使用。
優(yōu)點(diǎn):
- 快速部署,直接加上執(zhí)行位就可以執(zhí)行
- 可以在多個(gè)發(fā)行版本中運(yùn)行
缺點(diǎn):
- 需要官方有提供,或者自己有能力打包。
- 打包出來的文件還是比較大的。(不過還可以結(jié)果,很適合桌面的Linux)
5.Snap 、Flatpak
Snap 和Flatpak都是為了統(tǒng)一Linux上包的格式,讓一個(gè)軟件可以運(yùn)行在各種 Linux發(fā)行版和操作系統(tǒng)上。
優(yōu)點(diǎn):
- 快速部署,都有自己的應(yīng)用市場,可以直接搜索安裝
- 可以在多個(gè)發(fā)行版本中運(yùn)行
缺點(diǎn):
- 發(fā)展比較晚,還有很多需要完善
總結(jié)
一般我是比較建議生產(chǎn)環(huán)境自己編譯,或者下載官方的二進(jìn)制包進(jìn)行部署,這樣子升級(jí)或者回退的時(shí)候不會(huì)相互影響。
盡量不要使用系統(tǒng)的組件,部署服務(wù)!
剛碰到的坑!開發(fā)使用系統(tǒng)自帶的Python,手動(dòng)安裝第三方包,然后去跑服務(wù);結(jié)果系統(tǒng)升級(jí),把python相關(guān)依賴包升級(jí)了,導(dǎo)致服務(wù)異常了。