如何在Linux上安裝應(yīng)用程序
學(xué)習(xí)在你的 Linux 計(jì)算機(jī)上擺弄那些軟件。
如何在 Linux 上安裝應(yīng)用程序?因?yàn)橛性S多操作系統(tǒng),這個(gè)問題不止有一個(gè)答案。應(yīng)用程序可以可以來(lái)自許多來(lái)源 —— 幾乎不可能數(shù)的清,并且每個(gè)開發(fā)團(tuán)隊(duì)都可以以他們認(rèn)為最好的方式提供軟件。知道如何安裝你所得到的軟件是成為操作系統(tǒng)高級(jí)用戶的一部分。
倉(cāng)庫(kù)
十多年來(lái),Linux 已經(jīng)在使用軟件庫(kù)來(lái)分發(fā)軟件。在這種情況下,“倉(cāng)庫(kù)”是一個(gè)托管可安裝軟件包的公共服務(wù)器。Linux 發(fā)行版提供了一條命令,以及該命令的圖形界面,用于從服務(wù)器獲取軟件并將其安裝到你的計(jì)算機(jī)。這是一個(gè)非常簡(jiǎn)單的概念,它已經(jīng)成為所有主流手機(jī)操作系統(tǒng)的模式,最近,該模式也成為了兩大閉源計(jì)算機(jī)操作系統(tǒng)的“應(yīng)用商店”。
不是應(yīng)用程序商店
從軟件倉(cāng)庫(kù)安裝是在 Linux 上安裝應(yīng)用程序的主要方法,它應(yīng)該是你尋找想要安裝的任何應(yīng)用程序的首選地方。
從軟件倉(cāng)庫(kù)安裝,通常需要一個(gè)命令,如:
$ sudo dnf install inkscape
實(shí)際使用的命令取決于你所使用的 Linux 發(fā)行版。Fedora 使用 dnf
,OpenSUSE 使用 zypper
,Debian 和 Ubuntu 使用 apt
,Slackware 使用 sbopkg
,F(xiàn)reeBSD 使用 pkg_add
,而基于 lllumos 的 Openlndiana 使用 pkg
。無(wú)論你使用什么,該命令通常要搜索你想要安裝應(yīng)用程序的正確名稱,因?yàn)橛袝r(shí)候你認(rèn)為的軟件名稱不是它官方或獨(dú)有的名稱:
$ sudo dnf search pyqt
PyQt.x86_64 : Python bindings for Qt3
PyQt4.x86_64 : Python bindings for Qt4
python-qt5.x86_64 : PyQt5 is Python bindings for Qt5
一旦你找到要安裝的軟件包的名稱后,使用 install
子命令執(zhí)行實(shí)際的下載和自動(dòng)安裝:
$ sudo dnf install python-qt5
有關(guān)從軟件倉(cāng)庫(kù)安裝的具體信息,請(qǐng)參閱你的 Linux 發(fā)行版的文檔。
圖形工具通常也是如此。搜索你認(rèn)為你想要的,然后安裝它。
與底層命令一樣,圖形安裝程序的名稱取決于你正在運(yùn)行的 Linux 發(fā)行版。相關(guān)的應(yīng)用程序通常使用“軟件(software)”或“包(package)”等關(guān)鍵字進(jìn)行標(biāo)記,因此請(qǐng)?jiān)谀愕膯?dòng)項(xiàng)或菜單中搜索這些詞匯,然后你將找到所需的內(nèi)容。 由于開源全由用戶來(lái)選擇,所以如果你不喜歡你的發(fā)行版提供的圖形用戶界面(GUI),那么你可以選擇安裝替代品。 你知道該如何做到這一點(diǎn)。
額外倉(cāng)庫(kù)
你的 Linux 發(fā)行版為其打包的軟件提供了標(biāo)準(zhǔn)倉(cāng)庫(kù),通常也有額外的倉(cāng)庫(kù)。例如,EPEL 服務(wù)于 Red Hat Enterprise Linux 和 CentOS,RPMFusion 服務(wù)于 Fedora,Ubuntu 有各種級(jí)別的支持以及個(gè)人包存檔(PPA),Packman 為 OpenSUSE 提供額外的軟件以及 SlackBuilds.org 為 Slackware 提供社區(qū)構(gòu)建腳本。
默認(rèn)情況下,你的 Linux 操作系統(tǒng)設(shè)置為只查看其官方倉(cāng)庫(kù),因此如果你想使用其他軟件集合,則必須自己添加額外庫(kù)。你通??梢韵癜惭b軟件包一樣安裝倉(cāng)庫(kù)。實(shí)際上,當(dāng)你安裝例如 GNU Ring 視頻聊天,Vivaldi web 瀏覽器,谷歌瀏覽器等許多軟件時(shí),你的實(shí)際安裝是訪問他們的私有倉(cāng)庫(kù),從中將最新版本的應(yīng)用程序安裝到你的機(jī)器上。
安裝倉(cāng)庫(kù)
你還可以通過編輯文本文件將倉(cāng)庫(kù)手動(dòng)添加到你的軟件包管理器的配置目錄,或者運(yùn)行命令來(lái)添加添加倉(cāng)庫(kù)。像往常一樣,你使用的確切命令取決于 Linux 發(fā)行版本。例如,這是一個(gè) dnf
命令,它將一個(gè)倉(cāng)庫(kù)添加到系統(tǒng)中:
$ sudo dnf config-manager --add-repo=http://example.com/pub/centos/7
不使用倉(cāng)庫(kù)來(lái)安裝應(yīng)用程序
倉(cāng)庫(kù)模型非常流行,因?yàn)樗峁┝擞脩簦悖┖烷_發(fā)人員之間的鏈接。重要更新發(fā)布之后,系統(tǒng)會(huì)提示你接受更新,并且你可以從一個(gè)集中位置接受所有更新。
然而,有時(shí)候一個(gè)軟件包還沒有放到倉(cāng)庫(kù)中時(shí)。這些安裝包有幾種形式。
Linux 包
有時(shí)候,開發(fā)人員會(huì)以通用的 Linux 打包格式分發(fā)軟件,例如 RPM、DEB 或較新但非常流行的 FlatPak 或 Snap 格式。你不是訪問倉(cāng)庫(kù)下載的,你只是得到了這個(gè)包。
例如,視頻編輯器 Lightworks 為 APT 用戶提供了一個(gè) .deb
文件,RPM 用戶提供了 .rpm
文件。當(dāng)你想要更新時(shí),可以到網(wǎng)站下載最新的適合的文件。
這些一次性軟件包可以使用從倉(cāng)庫(kù)進(jìn)行安裝時(shí)所用的一樣的工具進(jìn)行安裝。如果雙擊下載的軟件包,圖形安裝程序?qū)?dòng)并逐步完成安裝過程。
或者,你可以從終端進(jìn)行安裝。這里的區(qū)別在于你從互聯(lián)網(wǎng)下載的獨(dú)立包文件不是來(lái)自倉(cāng)庫(kù)。這是一個(gè)“本地”安裝,這意味著你的軟件安裝包不需要下載來(lái)安裝。大多數(shù)軟件包管理器都是透明處理的:
$ sudo dnf install ~/Downloads/lwks-14.0.0-amd64.rpm
在某些情況下,你需要采取額外的步驟才能使應(yīng)用程序運(yùn)行,因此請(qǐng)仔細(xì)閱讀有關(guān)你正在安裝軟件的文檔。
通用安裝腳本
一些開發(fā)人員以幾種通用格式發(fā)布他們的包。常見的擴(kuò)展名包括 .run
和 .sh
。NVIDIA 顯卡驅(qū)動(dòng)程序、像 Nuke 和 Mari 這樣的 Foundry visual FX 軟件包以及來(lái)自 GOG 的許多非 DRM 游戲都是用這種安裝程序。(LCTT 譯注:DRM 是數(shù)字版權(quán)管理。)
這種安裝模式依賴于開發(fā)人員提供安裝“向?qū)?rdquo;。一些安裝程序是圖形化的,而另一些只是在終端中運(yùn)行。
有兩種方式來(lái)運(yùn)行這些類型的安裝程序。
1、 你可以直接從終端運(yùn)行安裝程序:
$ sh ./game/gog_warsow_x.y.z.sh
2、 另外,你可以通過標(biāo)記其為可執(zhí)行文件來(lái)運(yùn)行它。要標(biāo)記為安裝程序可執(zhí)行文件,右鍵單擊它的圖標(biāo)并選擇其屬性。
給安裝程序可執(zhí)行權(quán)限。
一旦你允許其運(yùn)行,雙擊圖標(biāo)就可以安裝了。
GOG 安裝程序
對(duì)于其余的安裝程序,只需要按照屏幕上的說(shuō)明進(jìn)行操作。
AppImage 便攜式應(yīng)用程序
AppImage 格式對(duì)于 Linux 相對(duì)來(lái)說(shuō)比較新,盡管它的概念是基于 NeXT 和 Rox 的。這個(gè)想法很簡(jiǎn)單:運(yùn)行應(yīng)用程序所需的一切都應(yīng)該放在一個(gè)目錄中,然后該目錄被視為一個(gè)“應(yīng)用程序”。要運(yùn)行該應(yīng)用程序,只需雙擊該圖標(biāo)即可運(yùn)行。不需要也要不應(yīng)該把應(yīng)用程序安裝在傳統(tǒng)意義的地方;它從你在硬盤上的任何地方運(yùn)行都行。
盡管它可以作為獨(dú)立應(yīng)用運(yùn)行,但 AppImage 通常提供一些系統(tǒng)集成。
AppImage 系統(tǒng)集成
如果你接受此條件,則將一個(gè)本地的 .desktop
文件安裝到你的主目錄。.desktop
文件是 Linux 桌面的應(yīng)用程序菜單和 mimetype 系統(tǒng)使用的一個(gè)小配置文件。實(shí)質(zhì)上,只是將桌面配置文件放置在主目錄的應(yīng)用程序列表中“安裝”應(yīng)用程序,而不實(shí)際安裝它。你獲得了安裝某些東西的所有好處,以及能夠在本地運(yùn)行某些東西的好處,即“便攜式應(yīng)用程序”。
應(yīng)用程序目錄
有時(shí),開發(fā)人員只是編譯一個(gè)應(yīng)用程序,然后將結(jié)果發(fā)布到下載中,沒有安裝腳本,也沒有打包。通常,這意味著你下載了一個(gè) TAR 文件,然后 解壓縮,然后雙擊可執(zhí)行文件(通常是你下載軟件的名稱)。
下載 Twine
當(dāng)使用這種軟件方式交付時(shí),你可以將它放在你下載的地方,當(dāng)你需要它時(shí),你可以手動(dòng)啟動(dòng)它,或者你可以自己進(jìn)行快速但是麻煩的安裝。這包括兩個(gè)簡(jiǎn)單的步驟:
- 將目錄保存到一個(gè)標(biāo)準(zhǔn)位置,并在需要時(shí)手動(dòng)啟動(dòng)它。
- 將目錄保存到一個(gè)標(biāo)準(zhǔn)位置,并創(chuàng)建一個(gè)
.desktop
文件,將其集成到你的系統(tǒng)中。
如果你只是為自己安裝應(yīng)用程序,那么傳統(tǒng)上會(huì)在你的主目錄中放個(gè) bin
(“二進(jìn)制文件” 的簡(jiǎn)稱)目錄作為本地安裝的應(yīng)用程序和腳本的存儲(chǔ)位置。如果你的系統(tǒng)上有其他用戶需要訪問這些應(yīng)用程序,傳統(tǒng)上將二進(jìn)制文件放置在 /opt
中。最后,這取決于你存儲(chǔ)應(yīng)用程序的位置。
下載通常以帶版本名稱的目錄進(jìn)行,如 twine_2.13
或者 pcgen-v6.07.04
。由于假設(shè)你將在某個(gè)時(shí)候更新應(yīng)用程序,因此將版本號(hào)刪除或創(chuàng)建目錄的符號(hào)鏈接是個(gè)不錯(cuò)的主意。這樣,即使你更新應(yīng)用程序本身,為應(yīng)用程序創(chuàng)建的啟動(dòng)程序也可以保持不變。
要?jiǎng)?chuàng)建一個(gè) .desktop
啟動(dòng)文件,打開一個(gè)文本編輯器并創(chuàng)建一個(gè)名為 twine.desktop
的文件。桌面條目規(guī)范 由 FreeDesktop.org 定義。下面是一個(gè)簡(jiǎn)單的啟動(dòng)器,用于一個(gè)名為 Twine 的游戲開發(fā) IDE,安裝在系統(tǒng)范圍的 /opt
目錄中:
[Desktop Entry]
Encoding=UTF-8
Name=Twine
GenericName=Twine
Comment=Twine
Exec=/opt/twine/Twine
Icon=/usr/share/icons/oxygen/64x64/categories/applications-games.png
Terminal=false
Type=Application
Categories=Development;IDE;
棘手的一行是 Exec
行。它必須包含一個(gè)有效的命令來(lái)啟動(dòng)應(yīng)用程序。通常,它只是你下載的東西的完整路徑,但在某些情況下,它更復(fù)雜一些。例如,Java 應(yīng)用程序可能需要作為 Java 自身的參數(shù)啟動(dòng)。
Exec=java -jar /path/to/foo.jar
有時(shí),一個(gè)項(xiàng)目包含一個(gè)可以運(yùn)行的包裝腳本,這樣你就不必找出正確的命令:
Exec=/opt/foo/foo-launcher.sh
在這個(gè) Twine 例子中,沒有與該下載的軟件捆綁的圖標(biāo),因此示例 .desktop
文件指定了 KDE 桌面附帶的通用游戲圖標(biāo)。你可以使用類似的解決方法,但如果你更具藝術(shù)性,可以創(chuàng)建自己的圖標(biāo),或者可以在 Internet 上搜索一個(gè)好的圖標(biāo)。只要 Icon
行指向一個(gè)有效的 PNG 或 SVG 文件,你的應(yīng)用程序就會(huì)以該圖標(biāo)為代表。
示例腳本還將應(yīng)用程序類別主要設(shè)置為 Development,因此在 KDE、GNOME 和大多數(shù)其他應(yīng)用程序菜單中,Twine 出現(xiàn)在開發(fā)類別下。
為了讓這個(gè)例子出現(xiàn)在應(yīng)用程序菜單中,把 twine.desktop
文件放這到兩個(gè)地方之一:
- 如果你將應(yīng)用程序存儲(chǔ)在你自己的家目錄下,那么請(qǐng)將其放在
~/.local/share/applications
。 - 如果你將應(yīng)用程序存儲(chǔ)在
/opt
目錄或者其他系統(tǒng)范圍的位置,并希望它出現(xiàn)在所有用戶的應(yīng)用程序菜單中,請(qǐng)將它放在/usr/share/applications
目錄中。
現(xiàn)在,該應(yīng)用程序已安裝,因?yàn)樗枰c系統(tǒng)的其他部分集成。
從源代碼編譯
最后,還有真正的通用格式安裝格式:源代碼。從源代碼編譯應(yīng)用程序是學(xué)習(xí)如何構(gòu)建應(yīng)用程序,如何與系統(tǒng)交互以及如何定制應(yīng)用程序的好方法。盡管如此,它絕不是一個(gè)點(diǎn)擊按鈕式過程。它需要一個(gè)構(gòu)建環(huán)境,通常需要安裝依賴庫(kù)和頭文件,有時(shí)還要進(jìn)行一些調(diào)試。
要了解更多關(guān)于從源代碼編譯的內(nèi)容,請(qǐng)閱讀我這篇文章。
現(xiàn)在你明白了
有些人認(rèn)為安裝軟件是一個(gè)神奇的過程,只有開發(fā)人員理解,或者他們認(rèn)為它“激活”了應(yīng)用程序,就好像二進(jìn)制可執(zhí)行文件在“安裝”之前無(wú)效。學(xué)習(xí)許多不同的安裝方法會(huì)告訴你安裝實(shí)際上只是“將文件從一個(gè)地方復(fù)制到系統(tǒng)中適當(dāng)位置”的簡(jiǎn)寫。 沒有什么神秘的。只要你去了解每次安裝,不是期望應(yīng)該如何發(fā)生,并且尋找開發(fā)者為安裝過程設(shè)置了什么,那么通常很容易,即使它與你的習(xí)慣不同。
重要的是安裝器要誠(chéng)實(shí)于你。 如果你遇到未經(jīng)你的同意嘗試安裝其他軟件的安裝程序(或者它可能會(huì)以混淆或誤導(dǎo)的方式請(qǐng)求同意),或者嘗試在沒有明顯原因的情況下對(duì)系統(tǒng)執(zhí)行檢查,則不要繼續(xù)安裝。
好的軟件是靈活的、誠(chéng)實(shí)的、開放的。 現(xiàn)在你知道如何在你的計(jì)算機(jī)上獲得好軟件了。