1. 程式人生 > 實用技巧 >linux apt-get

linux apt-get

什麼是apt-get?

Ubuntu源自Debian Linux。Debian使用dpkg打包系統。包裝系統是一種為安裝提供程式和應用程式的方法。這樣,您就不必從原始碼構建程式。

APT(高階軟體包工具)是與此打包系統互動的命令列工具。已經有dpkg命令來管理它。但apt更適合處理包裝。您可以使用它來查詢和安裝新軟體包,升級軟體包,清理軟體包等。

它有兩個主要工具:apt-get和apt-cache。apt-get用於安裝,升級和清理包,而apt-cache用於查詢新包。我們將在本指南後面的示例中看到所有這些命令。

我在本教程中使用Linux Mint 18,但您可以使用任何其他基於Ubuntu的Linux發行版,例如基本作業系統,Linux Lite等。

建議閱讀apt和apt-get之間的差異解釋

使用apt-get命令

讓我們首先從apt-get命令開始。你無法逃避這個命令。最好了解這些命令,以便以更好的方式處理Linux系統。使用apt命令操作軟體包,相應日誌會記錄在/var/log/dpkg.log檔案中。

使用apt-get更新包資料庫

apt-get基本上適用於可用包的資料庫。如果不更新此資料庫,系統將不知道是否有更新的軟體包可用。實際上,這是在全新安裝後需要在任何Linux系統中執行的第一個命令。

這裡就是指apt的倉庫源,apt的倉庫源有兩個檔案與目錄記錄:/etc/apt/sources.list檔案與/etc/apt/sources.list.d/目錄。

關於這兩個檔案的區別與apt倉庫源的配置可以參考:

https://www.cnblogs.com/joey-zhou/p/5269736.html

https://www.cnblogs.com/kelamoyujuzhen/p/9728260.html

更新包資料庫需要超級使用者許可權,因此您需要使用sudo

sudo apt-get update

執行此命令時,您將看到從各種伺服器檢索的資訊。

你會在這裡看到三種類型的線,hit,get和ign。讓我向你解釋一下:

  • hit:包版本沒有變化
  • ign:包被忽略了。可能有各種原因。這個包太新了以至於它甚至都懶得檢查,或者檢索檔案時出錯,但錯誤是微不足道的,因此它被忽略了。這不是錯誤。沒有必要擔心。
  • get:有一個新版本可用。它將下載資訊(而不是包本身)。您可以在上面的螢幕截圖中看到有“get”行的下載資訊。

使用apt-get升級已安裝的軟體包

更新軟體包資料庫後,可以升級已安裝的軟體包。最方便的方法是升級所有可用更新的軟體包。您可以使用以下命令來實現此目的:

sudo apt-get upgrade

要僅升級特定程式,請使用以下命令:

sudo apt-get upgrade <package_name>

還有另一種方法可以使用以下命令提供完整的升級:

sudo apt-get dist-upgrade

這實際上是查詢新版本的依賴項並嘗試安裝它。但你應該避免使用它。我將在下一節中解釋它。

升級和dist-upgrade之間的區別

命令apt-get upgrade非常聽話。它永遠不會嘗試刪除任何包或嘗試自己安裝新包。

另一方面,命令apt-get dist-upgrade是主動的。它會查詢正在安裝的較新版本軟體包的依賴項,並嘗試安裝新軟體包或自行刪除現有軟體包。

聽起來像dist-upgrade更強大,更聰明,不是嗎?但它存在風險。

看,它有一個“智慧”衝突解決系統。有了它,它將嘗試升級最重要的包,而不是那些不太重要的包。這可能會導致您刪除一些您可能不想要的包。這是在生產機器上應該避免dist-upgrade的主要原因。

apt-get update和apt-get升級有什麼區別?

這是一個非常普遍的混亂。您不是唯一一個被術語更新和升級混淆的人。

雖然聽起來像是在進行apt-get更新時,但它會更新軟體包。但事實並非如此。apt-get update僅更新包的資料庫。例如,如果安裝了XYX軟體包版本1.3,則在apt-get update之後,資料庫將知道有更新的版本1.4可用。

當您在apt-get update之後進行apt-get升級時,它會將已安裝的軟體包升級(或更新,無論您喜歡哪個術語)到新版本。

這就是為什麼更新Ubuntu的最快和最方便的方法是使用此命令:

sudo apt-get update && sudo apt-get upgrade -y
建議閱讀在Ubuntu和其他Linux發行版中使用Snap包的完整指南

使用apt-cache命令搜尋包

我會跟你說實話。這不是我搜索包的首選方式。但是當你在尋找一些特定的lib時,這非常方便。

您需要做的就是使用以下命令。你甚至不需要sudo。

apt-cache search <search term>

您無需知道包的確切名稱。它會搜尋包名稱及其簡短描述,並根據該結果顯示結果。

如果您只想搜尋具有特定包名稱的包,可以使用以下命令:

apt-cache pkgnames <search_term>

這將為您提供以搜尋詞開頭的所有包的列表。

一旦知道確切的包名,就可以使用以下命令獲取有關它的更多資訊,例如版本,依賴關係等:

apt-cache showpkg <package_name>

檢查軟體包的可用版本

在安裝之前,可以使用apt-cache madison命令檢查包的可用版本,語法是

apt-cache madison package

你可以看到下面的輸出

$ apt-cache madison virtualbox
virtualbox | 5.0.40-dfsg-0ubuntu1.16.04.2 | http://cm.archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages
virtualbox | 5.0.18-dfsg-2build1 | http://cm.archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages

安裝軟體包的特定版本

當你列出要選擇特定的版本時,你可以用apt-get install命令安裝它,你需要按照下面的語法進行操作:

apt-get install package=version -V

-V引數有更多關於安裝的詳細資訊

實際上,你可以執行如下操作:

# apt-get install virtualbox=5.0.18-dfsg-2build1 -V
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following additional packages will be installed:
 dkms (2.2.0.3-2ubuntu11.5)
 libgsoap8 (2.8.28-1)
 libqt4-opengl (4:4.8.7+dfsg-5ubuntu2)
 libsdl1.2debian (1.2.15+dfsg1-3)
 libvncserver1 (0.9.10+dfsg-3ubuntu0.16.04.1)
 virtualbox-dkms (5.0.40-dfsg-0ubuntu1.16.04.2)
....................
....................

如何使用apt-get安裝新軟體包

如果您知道包的名稱,可以使用以下命令輕鬆安裝它:

sudo apt-get install <package_name>

只需將<package_name>替換為所需的包。假設我想安裝Pinta影象編輯器,我需要做的就是使用以下命令:

sudo apt-get install pinta

這個命令的好處是它有自動完成功能。因此,如果您不確定確切的包名稱,可以鍵入幾個字母並按Tab鍵,它會建議所有包含這些字母的包。例如:

如何安裝多個包

您不限於一次只安裝一個包。您可以通過提供名稱一次安裝多個包:

sudo apt-get install <package_1> <package_2> <package_3>

如果在已安裝的軟體包上執行install,該怎麼辦?

假設您已經安裝了一個軟體包,但是您已經為已安裝的軟體包使用了install命令。這實際上會檢視資料庫,如果找到更新的版本,它會將已安裝的軟體包升級到更新的軟體包。因此,除非您不希望升級,否則使用此命令不會造成任何損害。

如何在不升級的情況下安裝包

假設由於某種原因你想要安裝一個軟體包但是如果已經安裝了它就不想升級它。聽起來很奇怪,但你可能有理由這樣做。

對於這種情況,您可以按以下方式使用sub -no-upgrade:

sudo apt-get install <package_name> --no-upgrade

如何只升級包,而不是安裝它

如果您只想升級包但不想安裝它(如果尚未安裝),則可以使用以下命令執行此操作:

sudo apt-get install <package_name> --only-upgrade

如何安裝特定版本的應用程式

預設情況下,將為任何應用程式安裝儲存庫中可用的最新版本。但由於某些原因,如果您不想安裝最新版本,則可以指定版本號(您需要知道要安裝的確切版本號)。

您需要做的就是新增帶有包名稱的= version。

sudo apt-get install <package_name>=<version_number>

如何使用apt-get刪除已安裝的軟體包

這不是你只能用apt-get安裝軟體包。您也可以使用它刪除包。您需要做的就是以這種方式使用命令:

sudo apt-get remove <package_name>

自動完成也適用於此處。所以你只需要開始輸入包名稱並按Tab鍵,它將建議所有已安裝的包以這些字母開頭。

解除安裝軟體包的另一種方法是使用清除。該命令以下列方式使用:

sudo apt-get purge <package_name>

apt-get remove和apt-get purge有什麼區別?

  • apt-get remove只刪除包的二進位制檔案。它不會觸及配置檔案
  • apt-get purge刪除與包相關的所有內容,包括配置檔案

因此,如果您“刪除”特定軟體並再次安裝,您的系統將具有相同的配置檔案。當然,再次安裝時,系統會要求您覆蓋現有的配置檔案。

當你搞砸了程式的配置時,清除特別有用。您希望從系統中完全擦除其痕跡,並且可能重新開始。

大多數情況下,簡單刪除對於解除安裝軟體包來說已經足夠了。

如何使用apt-get清理系統

哦,是的!您還可以使用apt-get清理系統並釋放一些磁碟空間。

您可以使用以下命令清除檢索到的包檔案的本地儲存庫:

sudo apt-get clean

另一種方法是使用autoclean。與上面的clean命令不同,autoclean只刪除那些現在有更新版本的檢索包檔案,它們將不再使用。

sudo apt-get autoclean

另一種釋放磁碟空間的方法是使用autoremove。它會刪除自動安裝的lib和軟體包,以滿足已安裝軟體包的依賴關係。如果刪除了包,則這些自動安裝的包在系統中是無用的。此命令刪除此類包。

sudo apt-get autoremove

這是清理Linux系統的命令列方式。

refer :

https://www.helplib.cn/beryl/install-specific-version-package-apt-get

https://man.linuxde.net/apt-get-2