通過例子學習 Ubuntu Apt Get

如果你是Linux新手,可能想知道如何安装或更新软件包。好消息是,你来对地方了,可以通过Ubuntu Apt Get命令了解如何管理软件包。

在本教程中,你将学会如何更新或升级现有的软件包,安装新软件包,或在不再需要时将其卸载。

继续阅读并开始管理软件包吧!

先决条件

本教程将进行实际演示,但不需要特殊工具,只要你使用的是Ubuntu 16或更高版本,就可以进行。本教程以Ubuntu 20.04.3 LTS版本为演示。

更新系统软件包仓库

apt-get命令最常见的用途之一是更新系统中可用的软件包列表。在安装、更新或升级任何软件之前建议执行此操作。

打开终端并运行下面的apt-get命令,以更新系统上的软件包列表。在提示时输入你的sudo密码。

以下命令會從/etc/apt/sources.list文件的條目中檢查是否有更新的軟件版本,並更新系統軟件列表。

sudo apt-get update

當沒有軟件版本更新時,你會看到一個說明說Hit。否則,你會看到一個說明說Get,然後命令會下載軟件信息(而不是全部軟件)。當檢索軟件信息時出錯,它會顯示ign

Updating Package Repositories

升級軟件包

你剛剛基於sources.list更新了機器的軟件包列表,但軟件包會保持在它們當前的版本,除非你運行升級操作。根據sources.list文件中的條目升級軟件包。

運行下面的Ubuntu Apt Get命令來升級機器上所有已安裝的軟件包至有可用更新的新版本。系統會提示你確認,輸入Y以繼續。

你可以使用-y選項跳過確認提示。如果你尚未驗證列表,這可能會更新/安裝你不打算的軟件包。

sudo apt-get upgrade
Upgrading Software Packages

也許你更喜歡僅升級特定的軟件。如果是這樣,請在apt-get upgrade命令後指定軟件包名稱,如下所示。

sudo apt-get upgrade vsftpd
Upgrading Specific Software Package

如果你有2-3個軟件需要升級,你可以將它們以空格分隔在apt-get upgrade命令中,像下面這樣:sudo apt-get upgrade vsftpd google-chrome firefox

智能升級Ubuntu應用程式套件與apt-get

除了升級已安裝的軟體套件外,您如何智能地管理軟體套件衝突?apt-get upgrade套件僅升級現有套件,但dist-upgrade命令還會刪除現有套件,如果它們與新版本衝突。

運行下面的命令來升級機器上的現有軟體套件。此命令還會添加或刪除任何套件以滿足任何依賴關係。

sudo apt-get dist-upgrade

apt-get dist-upgrade命令具有智能衝突解決系統。如果在升級套件時出現衝突,該命令將首先選擇要升級的關鍵套件,然後再選擇較低優先級的套件。

Upgrading a Linux Distribution

要將Ubuntu版本升級到下一個發行版,您將運行do-release-upgrade命令。這也會運行apt-get dist-upgrade以更新套件。

搜索並安裝特定軟體套件

到目前為止,您已經學會了更新套件存儲庫和操作系統本身。但是,如何搜索要安裝的新軟體套件呢?apt-cache命令可讓您搜索所有可用或特定的軟體套件。

運行以下命令以顯示所有本地已知的可用軟體套件(pkgnames)。此列表是從對sources.list配置文件的上一次更新中衍生出來的。

apt-cache pkgnames
Searching All Available Software Packages

apt-cache pkgnames 指令自然會返回大量軟體套件,要透過它們瀏覽是很煩人的。既然你熟悉軟體套件的名稱,為何不專門搜尋一個呢?

執行下面的指令來 search 特定軟體套件的儲存庫,例如,對於 vsftpd。由於你只是搜尋軟體套件,所以不需要加上 sudo 指令。

apt-cache search vsftpd
Searching Specific Software Packages

如果你知道確切的套件名稱,請將 search 替換為 show 參數,就像這樣:apt-cache show PackageName。將 PackageName 替換為實際的套件名稱。此指令可讓你查看套件詳細資訊,如來源、架構、版本等。

找到軟體套件後,執行下面的指令來在你的機器上 install 該軟體套件 (vsftpd)。

sudo apt-get install vsftpd
Installing New Software Package

重新安裝軟體

也許你遇到了一些軟體問題,但又不想費心解析問題出在哪。如果是這樣,重新安裝軟體是你可以嘗試來修復問題的其中一個方法。

執行以下的 apt-get install 指令來 --reinstall 該軟體 (vsftpd) 到你的系統中。

sudo apt-get install vsftpd --reinstall
Reinstalling software with Apt-Get command

移除已安裝的軟體

系統中已安裝的軟體自然會消耗你的儲存空間。如果這些軟體不再有用,將其移除是理想的做法。這樣做可以優化你系統的效能。

運行以下命令從您的機器中移除特定軟體(vsftpd)。

sudo apt-get remove vsftpd
Removing Installed Software

使用Ubuntu Apt Get移除軟體和相關檔案

大多數安裝在您的機器上的軟體在移除後仍會留下垃圾,例如資料夾或配置檔案。這些垃圾也會佔用儲存空間,那麼如何移除它們呢?讓Ubuntu Apt Get命令為您移除這些垃圾。

也許您已經卸載了一個軟體,但它的配置檔案仍然存在。如果是這樣,使用apt-get命令的purge參數就足夠了。

運行以下命令從您的機器中卸載軟體(vsftpd)並移除剩餘的檔案和資料夾(purge)。

sudo apt-get purge vsftpd
Removing all the config files for a software

或者,如果您希望一次性卸載(remove)軟體並且刪除(--purge)其配置檔案,則運行以下命令。

sudo apt-get remove --purge vsftpd
Removing software and its configuration files

解決依賴錯誤

安裝、更新或升級軟體並不總是能夠完美完成。您可能會在某個時候遇到錯誤,例如由於損壞的套件資料庫而導致的依賴錯誤。但請不要擔心!Ubuntu Apt Get命令可以讓您清除本地套件資料庫中不需要的套件檔案,這些檔案可能會導致依賴錯誤。

應用程式套件本身存儲在.deb檔案中,這些檔案在安裝任何軟件時會被下載並安裝到您的計算機上。現在,如果您移除特定軟件並重新安裝它,apt會使用您本地存儲庫中的.deb檔案進行重新安裝,而不是從互聯網重新下載。

但如果軟件的新版本可用,並且您嘗試重新安裝該軟件,則您本地存儲庫中的現有檔案將不再可用。結果,您會收到相依性錯誤。

運行以下命令apt-get clean以刪除本地存儲庫中已下載和緩存的套件檔案(/var/cache/apt/archives)。

apt-get clean命令不會刪除/var/cache/apt/archives和/var/cache/apt/archives/partial文件夾中的鎖定檔。鎖定檔旨在防止兩個不同的套件管理器在相同的檔案上發生衝突。

sudo apt-get clean
Removing Retrieved Package Files in Local Repo

要刪除已安裝軟件不再引用的已下載套件,請使用autoclean參數。

運行以下命令以從/var/cache/apt/archives目錄中刪除剩餘檔案(.deb檔案)(autoclean)。

sudo apt-get autoclean
Removing Residual Files (.deb files)

結論

在本教程中,您已經學會了如何使用Ubuntu Apt Get命令來安裝或升級軟件套件並更新操作系統本身。您還觸及了通過刪除先前版本安裝的軟件套件的不必要套件檔案來解決安裝錯誤的方法。

在這一點上,您已經知道如何有效地管理您機器上的軟體套件。現在,為什麼不使用 Bash 腳本自動升級軟體套件呢?或者干脆使用 PHP 腳本添加 cron 任務呢?

Source:
https://adamtheautomator.com/ubuntu-apt-get/