過Linux的同學(xué)可能知道,Linux發(fā)行版,比如 Ubuntu 使用終端輸入一行命令“apt install 軟件名”就能快捷實(shí)現(xiàn)軟件的安裝。但是在非 Debian 家族的 Linux 發(fā)行版中,比如 manjaro,就需要用 pacman 來安裝軟件。為了解決不同發(fā)行版安裝軟件包的問題。就出現(xiàn)了通用的軟件打包格式。這一解決方案,對(duì) Linux 上的軟件開發(fā)人員來說,是非常便利的。想要在多個(gè) Linux 發(fā)行版上發(fā)布軟件,就不需要針對(duì)每個(gè)發(fā)行版對(duì)軟件進(jìn)行平臺(tái)化的打包。通過統(tǒng)一的打包方式,便可快速實(shí)現(xiàn)軟件的分發(fā)。本文小編就來介紹一下從普通用戶角度,看看三種打包格式 Snap、Flatpak 和 AppImage 的主要區(qū)別。
01、用戶的權(quán)限控件
Snap 為用戶控制的權(quán)限提供圖形和命令行界面。在 Ubuntu 系統(tǒng)中,可以使用自帶的「Ubuntu 商店」來管理 Snap 應(yīng)用的權(quán)限。
若要查看使用命令行接口的快照應(yīng)用的權(quán)限,請(qǐng)運(yùn)行以下命令:
$ snap connections chromium
將「chromium」替換為相應(yīng)的 snap 應(yīng)用的名稱。
若要查看所有已安裝的快照應(yīng)用的列表,請(qǐng)運(yùn)行以下命令:
$ snap list
要授予相機(jī)權(quán)限給 Chromium 瀏覽器,可使用以下命令:
$ snap connect chromium:camera
要取消攝像機(jī)權(quán)限,運(yùn)行下面的命令:
$ snap disconnect chromium:camera
權(quán)限管理的適當(dāng)命令可以在「Slot」列中找到(上一張屏幕截圖所示)。
相比 Snap 應(yīng)用,F(xiàn)latpak 還提供用于授予和撤銷權(quán)限的接口。可以使用 GNOME 軟件應(yīng)用(需要 GNOME 3.32.x)通過圖像的方式操作。
若要查看 Flatpak 應(yīng)用的權(quán)限,可運(yùn)行以下命令:
$ flatpak info --show-permissions Chromium
將「Chromium」替換為 Flatpak 應(yīng)用的名稱。
若要查看系統(tǒng)上安裝的所有Flatpak應(yīng)用的列表,請(qǐng)運(yùn)行以下命令:
$ flatpak list
若要更改 Flatpak 應(yīng)用的權(quán)限,必須更改上面屏幕截圖中顯示的變量值。例如,下面的命令將使整個(gè)文件系統(tǒng)可用于皮瓣應(yīng)用:
$ sudo flatpak override Chromium --filesystem=host
AppImage 目前不支持權(quán)限控件,但未來會(huì)支持的。
02、沙盒環(huán)境
Snap、Flatpak 和 AppImage 支持開箱即用沙盒應(yīng)用環(huán)境。沙盒是一個(gè)環(huán)境,或者也可以說是一種容器,它與主機(jī)系統(tǒng)完全隔離開來。與主機(jī)系統(tǒng)的任何交互都是使用有限的 API 和權(quán)限控件完成的。
其中一些權(quán)限明確要求用戶選擇加入,或者我們用戶可以完全禁用這些權(quán)限。
沙盒應(yīng)用比對(duì)主機(jī)系統(tǒng)具有完全訪問權(quán)限的其他應(yīng)用都相對(duì)安全。
沙盒環(huán)境我想大家可能并不陌生,Windows 10 系統(tǒng)也內(nèi)置了一個(gè) Sandbox 環(huán)境,對(duì)于一些不放心的軟件,可以先在沙盒環(huán)境中測(cè)試,這樣就不會(huì)破壞主系統(tǒng)。
03、應(yīng)用程序可移植性
AppImage 應(yīng)用是單個(gè)可執(zhí)行文件(類似于 Windows 的.exe文件),可以輕松地在系統(tǒng)之間共享。
通過包括應(yīng)用本身以及應(yīng)用所依賴的依賴庫 Snap 和 Flatpak 應(yīng)用具有可移植性。
但是,此過程不像 AppImage 那樣簡(jiǎn)單,需要使用多個(gè)命令才能實(shí)現(xiàn)相同的結(jié)果。
04、 自動(dòng)更新
Snap 和 Flatpak 應(yīng)用程序從集中式應(yīng)用程序存儲(chǔ)庫中安裝,應(yīng)用程序無需用戶干預(yù)即可自動(dòng)更新。AppImage 缺乏強(qiáng)大的自動(dòng)更新機(jī)制,用戶必須手動(dòng)下載新的 AppImage 二進(jìn)制文件,并替換現(xiàn)有的二進(jìn)制文件以安裝更新。
不過目前AppImage 開發(fā)人員提供了一個(gè)工具,通過提供增量更新的方式來更新現(xiàn)有的二進(jìn)制文件。
但是,它仍然需要下載更新工具,并手動(dòng)將其與現(xiàn)有的 AppImage 二進(jìn)制文件一起使用。
05、 應(yīng)用程序大小
nap 和 Flatpak 應(yīng)用大小因應(yīng)用而異。
06 、總結(jié)
與 Windows 相比,Linux 系統(tǒng)在軟件安裝上存在有一定的門檻,增加了學(xué)習(xí)成本,通用安裝格式的出現(xiàn),便可以一定程度上解決不同發(fā)行版 Linux 安裝軟件的問題。
linux下只有兩種軟件包
rpm -ivh 包全名
-------
-i install安裝
-v verbose顯示詳細(xì)信息
-h 顯示安裝進(jìn)度
rpm -Uvh 包全名
------
-U 升級(jí)安裝
rpm -e 包名
# 查詢是否安裝
rpm -q 包名
# 查詢系統(tǒng)上所有安裝的包
rpm -qa
# 查詢軟件包的文件列表
rpm -ql 包名
# 查詢某個(gè)文件屬于哪個(gè)包
rpm -qf 文件名
------------------
-i info信息
-a all所有
-l list文件列表
-f file文件
由于rpm安裝軟件包時(shí)比較麻煩,各個(gè)包之間的依賴需要去人工下載,所以一般使用yum來在線安裝
yum的源配置文件保存在/etc/yum.repos.d文件夾中,默認(rèn)使用的是CentOS-Base.repo
我在使用系統(tǒng)自帶的yum源文件時(shí)發(fā)現(xiàn)無法訪問那些網(wǎng)站,所以去找了個(gè)搜狐的鏡像源,將原本的baseurl的前半部分換為http://mirrors.sohu.com/
如:baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch/
# 查詢yum源服務(wù)器上的所有軟件包
yum list
# 查詢是否包含某個(gè)軟件包
yum list 包名
yum search 關(guān)鍵字
yum -y install 包名
-------
install 安裝
-y 自動(dòng)回答yes
yum -y update 包名
-------
update 升級(jí)
-y 自動(dòng)回答yes
yum remove 包名
卸載需要謹(jǐn)慎,會(huì)把依賴該包的所有包都卸載掉
yum grouplist
yum groupinfo
yum -y groupinstall 組名
首先下載源碼包的壓縮包,解壓之后進(jìn)入目錄
先執(zhí)行
./configure --prefix=安裝到的目錄位置
該命令使編譯前檢測(cè)系統(tǒng)環(huán)境是否符合安裝要求,把系統(tǒng)環(huán)境的檢測(cè)結(jié)果寫入Makefile文件中,后續(xù)的安裝過程都會(huì)依賴該文件。
如果檢測(cè)成功,則繼續(xù)執(zhí)行
make
該命令的作用是調(diào)用gcc編譯器,讀取上述Makefile文件中的信息進(jìn)行系統(tǒng)軟件編譯,編譯是為了把源碼程序轉(zhuǎn)換成linux可執(zhí)行的文件
如果編譯出錯(cuò)執(zhí)行
make clean
清空編譯內(nèi)容
如果編譯沒有出錯(cuò),執(zhí)行
make install
編譯安裝