天天看點

如何在 Linux 上安裝應用程式?

因為有許多作業系統,這個問題不止有一個答案。應用程式可以可以來自許多來源 —— 幾乎不可能數的清,并且每個開發團隊都可以以他們認為最好的方式提供軟體。知道如何安裝你所得到的軟體是成為作業系統進階使用者的一部分。

倉庫

十多年來,Linux 已經在使用軟體庫來分發軟體。在這種情況下,“倉庫”是一個托管可安裝軟體包的公共伺服器。Linux 發行版提供了一條指令,以及該指令的圖形界面,用于從伺服器擷取軟體并将其安裝到你的計算機。這是一個非常簡單的概念,它已經成為所有主流手機作業系統的模式,最近,該模式也成為了兩大閉源計算機作業系統的“應用商店”。

Linux repository

不是應用程式商店

從軟體倉庫安裝是在 Linux 上安裝應用程式的主要方法,它應該是你尋找想要安裝的任何應用程式的首選地方。

從軟體倉庫安裝,通常需要一個指令,如:

1

2

$ sudo dnf install inkscape

實際使用的指令取決于你所使用的 Linux 發行版。Fedora 使用 dnf,OpenSUSE 使用 zypper,Debian 和 Ubuntu 使用 apt,Slackware 使用 sbopkg,FreeBSD 使用 pkg_add,而基于 lllumos 的 Openlndiana 使用 pkg。無論你使用什麼,該指令通常要搜尋你想要安裝應用程式的正确名稱,因為有時候你認為的軟體名稱不是它官方或獨有的名稱:

1

2

3

4

5

$ 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 子指令執行實際的下載下傳和自動安裝:

1

2

$ sudo dnf install python-qt5

有關從軟體倉庫安裝的具體資訊,請參閱你的 Linux 發行版的文檔。

圖形工具通常也是如此。搜尋你認為你想要的,然後安裝它。

與底層指令一樣,圖形安裝程式的名稱取決于你正在運作的 Linux 發行版。相關的應用程式通常使用“軟體(software)”或“包(package)”等關鍵字進行标記,是以請在你的啟動項或菜單中搜尋這些詞彙,然後你将找到所需的内容。 由于開源全由使用者來選擇,是以如果你不喜歡你的發行版提供的圖形使用者界面(GUI),那麼你可以選擇安裝替代品。 你知道該如何做到這一點。

額外倉庫

你的 Linux 發行版為其打包的軟體提供了标準倉庫,通常也有額外的倉庫。例如,EPEL 服務于 Red Hat Enterprise Linux 和 CentOS,RPMFusion 服務于 Fedora,Ubuntu 有各種級别的支援以及個人包存檔(PPA),Packman 為 OpenSUSE 提供額外的軟體以及 SlackBuilds.org 為 Slackware 提供社群建構腳本。

預設情況下,你的 Linux 作業系統設定為隻檢視其官方倉庫,是以如果你想使用其他軟體集合,則必須自己添加額外庫。你通常可以像安裝軟體包一樣安裝倉庫。實際上,當你安裝例如 GNU Ring 視訊聊天,Vivaldi web 浏覽器,谷歌浏覽器等許多軟體時,你的實際安裝是通路他們的私有倉庫,從中将最新版本的應用程式安裝到你的機器上。

Installing a repo

安裝倉庫

你還可以通過編輯文本檔案将倉庫手動添加到你的軟體包管理器的配置目錄,或者運作指令來添加添加倉庫。像往常一樣,你使用的确切指令取決于 Linux 發行版本。例如,這是一個 dnf 指令,它将一個倉庫添加到系統中:

1

2

$ sudo dnf config-manager --add-repo=http://example.com/pub/centos/7

不使用倉庫來安裝應用程式

倉庫模型非常流行,因為它提供了使用者(你)和開發人員之間的連結。重要更新釋出之後,系統會提示你接受更新,并且你可以從一個集中位置接受所有更新。

然而,有時候一個軟體包還沒有放到倉庫中時。這些安裝包有幾種形式。

Linux 包

有時候,開發人員會以通用的 Linux 打包格式分發軟體,例如 RPM、DEB 或較新但非常流行的 FlatPak 或 Snap 格式。你不是通路倉庫下載下傳的,你隻是得到了這個包。

例如,視訊編輯器 Lightworks 為 APT 使用者提供了一個 .deb 檔案,RPM 使用者提供了 .rpm 檔案。當你想要更新時,可以到網站下載下傳最新的适合的檔案。

這些一次性軟體包可以使用從倉庫進行安裝時所用的一樣的工具進行安裝。如果輕按兩下下載下傳的軟體包,圖形安裝程式将啟動并逐漸完成安裝過程。

或者,你可以從終端進行安裝。這裡的差別在于你從網際網路下載下傳的獨立封包件不是來自倉庫。這是一個“本地”安裝,這意味着你的軟體安裝包不需要下載下傳來安裝。大多數軟體包管理器都是透明處理的:

1

2

$ sudo dnf install ~/Downloads/lwks-14.0.0-amd64.rpm

在某些情況下,你需要采取額外的步驟才能使應用程式運作,是以請仔細閱讀有關你正在安裝軟體的文檔。

通用安裝腳本

一些開發人員以幾種通用格式釋出他們的包。常見的擴充名包括 .run 和 .sh。NVIDIA 顯示卡驅動程式、像 Nuke 和 Mari 這樣的 Foundry visual FX 軟體包以及來自 GOG 的許多非 DRM 遊戲都是用這種安裝程式。(LCTT 譯注:DRM 是數字版權管理。)

這種安裝模式依賴于開發人員提供安裝“向導”。一些安裝程式是圖形化的,而另一些隻是在終端中運作。

有兩種方式來運作這些類型的安裝程式。

1、 你可以直接從終端運作安裝程式:

1

2

$ sh ./game/gog_warsow_x.y.z.sh

2、 另外,你可以通過标記其為可執行檔案來運作它。要标記為安裝程式可執行檔案,右鍵單擊它的圖示并選擇其屬性。

Giving an installer executable permission

給安裝程式可執行權限。

一旦你允許其運作,輕按兩下圖示就可以安裝了。

GOG installer

GOG 安裝程式

對于其餘的安裝程式,隻需要按照螢幕上的說明進行操作。

AppImage 便攜式應用程式

AppImage 格式對于 Linux 相對來說比較新,盡管它的概念是基于 NeXT 和 Rox 的。這個想法很簡單:運作應用程式所需的一切都應該放在一個目錄中,然後該目錄被視為一個“應用程式”。要運作該應用程式,隻需輕按兩下該圖示即可運作。不需要也要不應該把應用程式安裝在傳統意義的地方;它從你在硬碟上的任何地方運作都行。

盡管它可以作為獨立應用運作,但 AppImage 通常提供一些系統內建。

AppImage system integration

AppImage 系統內建

如果你接受此條件,則将一個本地的 .desktop 檔案安裝到你的主目錄。.desktop 檔案是 Linux 桌面的應用程式菜單和 mimetype 系統使用的一個小配置檔案。實質上,隻是将桌面配置檔案放置在主目錄的應用程式清單中“安裝”應用程式,而不實際安裝它。你獲得了安裝某些東西的所有好處,以及能夠在本地運作某些東西的好處,即“便攜式應用程式”。

應用程式目錄

有時,開發人員隻是編譯一個應用程式,然後将結果釋出到下載下傳中,沒有安裝腳本,也沒有打包。通常,這意味着你下載下傳了一個 TAR 檔案,然後 解壓縮,然後輕按兩下可執行檔案(通常是你下載下傳軟體的名稱)。

Twine downloaded for Linux

下載下傳 Twine

當使用這種軟體方式傳遞時,你可以将它放在你下載下傳的地方,當你需要它時,你可以手動啟動它,或者你可以自己進行快速但是麻煩的安裝。這包括兩個簡單的步驟:

将目錄儲存到一個标準位置,并在需要時手動啟動它。

将目錄儲存到一個标準位置,并建立一個 .desktop 檔案,将其內建到你的系統中。

如果你隻是為自己安裝應用程式,那麼傳統上會在你的主目錄中放個 bin (“二進制檔案binary” 的簡稱)目錄作為本地安裝的應用程式和腳本的存儲位置。如果你的系統上有其他使用者需要通路這些應用程式,傳統上将二進制檔案放置在 /opt 中。最後,這取決于你存儲應用程式的位置。

下載下傳通常以帶版本名稱的目錄進行,如 twine_2.13 或者 pcgen-v6.07.04。由于假設你将在某個時候更新應用程式,是以将版本号删除或建立目錄的符号連結是個不錯的主意。這樣,即使你更新應用程式本身,為應用程式建立的啟動程式也可以保持不變。

要建立一個 .desktop 啟動檔案,打開一個文本編輯器并建立一個名為 twine.desktop的檔案。桌面條目規範 由 FreeDesktop.org 定義。下面是一個簡單的啟動器,用于一個名為 Twine 的遊戲開發 IDE,安裝在系統範圍的 /opt 目錄中:

1

2

3

4

5

6

7

8

9

10

11

[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 行。它必須包含一個有效的指令來啟動應用程式。通常,它隻是你下載下傳的東西的完整路徑,但在某些情況下,它更複雜一些。例如,Java 應用程式可能需要作為 Java 自身的參數啟動。

1

2

Exec=java -jar /path/to/foo.jar

有時,一個項目包含一個可以運作的包裝腳本,這樣你就不必找出正确的指令:

1

2

Exec=/opt/foo/foo-launcher.sh

在這個 Twine 例子中,沒有與該下載下傳的軟體捆綁的圖示,是以示例 .desktop 檔案指定了 KDE 桌面附帶的通用遊戲圖示。你可以使用類似的解決方法,但如果你更具藝術性,可以建立自己的圖示,或者可以在 Internet 上搜尋一個好的圖示。隻要 Icon 行指向一個有效的 PNG 或 SVG 檔案,你的應用程式就會以該圖示為代表。

示例腳本還将應用程式類别主要設定為 Development,是以在 KDE、GNOME 和大多數其他應用程式菜單中,Twine 出現在開發類别下。

為了讓這個例子出現在應用程式菜單中,把 twine.desktop 檔案放這到兩個地方之一:

如果你将應用程式存儲在你自己的家目錄下,那麼請将其放在 ~/.local/share/applications。

如果你将應用程式存儲在 /opt 目錄或者其他系統範圍的位置,并希望它出現在所有使用者的應用程式菜單中,請将它放在 /usr/share/applications 目錄中。

現在,該應用程式已安裝,因為它需要與系統的其他部分內建。

從源代碼編譯

最後,還有真正的通用格式安裝格式:源代碼。從源代碼編譯應用程式是學習如何建構應用程式,如何與系統互動以及如何定制應用程式的好方法。盡管如此,它絕不是一個點選按鈕式過程。它需要一個建構環境,通常需要安裝依賴庫和頭檔案,有時還要進行一些調試。

要了解更多關于從源代碼編譯的内容,請閱讀我這篇文章。

現在你明白了

有些人認為安裝軟體是一個神奇的過程,隻有開發人員了解,或者他們認為它“激活”了應用程式,就好像二進制可執行檔案在“安裝”之前無效。學習許多不同的安裝方法會告訴你安裝實際上隻是“将檔案從一個地方複制到系統中适當位置”的簡寫。 沒有什麼神秘的。隻要你去了解每次安裝,不是期望應該如何發生,并且尋找開發者為安裝過程設定了什麼,那麼通常很容易,即使它與你的習慣不同。

重要的是安裝器要誠實于你。 如果你遇到未經你的同意嘗試安裝其他軟體的安裝程式(或者它可能會以混淆或誤導的方式請求同意),或者嘗試在沒有明顯原因的情況下對系統執行檢查,則不要繼續安裝。

好的軟體是靈活的、誠實的、開放的。 現在你知道如何在你的計算機上獲得好軟體了。