首頁 > 軟體

Ubuntu apt 命令詳解

2020-06-16 16:32:46

apt 命令是一個功能強大的命令列工具,它不僅可以更新軟體包列表索引、執行安裝新軟體包、升級現有軟體包,還能夠升級整個 Ubuntu 系統(apt 是 Debian 系作業系統的包管理工具)。

與更專業的 APT(Advanced Packaging Tool) 工具 apt-get 和 apt-cache 相比,apt 具有一些更適合互動式場景的選項,它更傾向於成為面向終端使用者的工具(而不僅僅是系統管理員)。換句話說,apt 比 apt-get 用起來更簡單,使用者體驗更好。
本文介紹 apt 命令的基本用法,演示環境為 Ubuntu 18.04。

基本語法

語法格式:
apt [options] command

組態檔:
早期 apt 預設的組態檔為 /etc/apt/apt.conf,但是當前的 Ubuntu 系統中預設沒有這個檔案。
如果 /etc/apt/apt.conf 檔案存在,apt 仍然會讀取它。但現在的設計思路是把組態檔分隔後放置在 /etc/apt/apt.conf.d 目錄下,這樣更容易管理。

常用子命令:
update
update 命令用於從設定的源下載包資訊。update 命令應該總是在安裝或升級包之前執行。

upgrade
upgrade 命令用於從設定的源安裝當前系統中的所有包的可用升級。如果需要滿足依賴關係,就安裝新的包,但是不會刪除現有的包。如果包的升級需要刪除已安裝的包,則不執行此包的升級。

full-upgrade
full-upgrade 命令執行升級功能,如果需要將系統升級到新的版本,則會刪除當前已安裝的包。

install,remove,purge
install 命令用來安裝一個或多個指定的包。remove 命令用來刪除包,但是會保留包的組態檔。purge 命令會在刪除包的同時刪除其組態檔。

autoremove
autoremove 命令用於刪除自動安裝的包,這些包是為了滿足其他包的依賴關係而自動安裝的,隨著依賴關係的更改或需要它們的包已被刪除,這些包現在不再需要了。

search
search 命令用於在可用包列表中搜尋給定的項並顯示匹配到的內容。例如,如果您正在尋找具有特定功能的包,這將非常有用。

show
show 命令顯示關於給定包的資訊,包括它的依賴關係、安裝和下載大小、包的來源、包內容的描述等等。比如,在刪除一個包或搜尋要安裝的新包之前檢視這些資訊是很有幫助的。

list
list 命令可以顯示滿足特定條件的包列表,預設列出所有的包。可以通過 --installed 選項列出已安裝的包,--upgrade 選項列出可以升級的包。

edit-sources
edit-sources 命令用來編輯 /etc/apt/source.list 檔案:
$ sudo apt edit-sources

常見用法

更新包索引檔案

$ sudo apt update

安裝包

$ sudo apt install nginx

安裝指定版本的包

$ sudo apt install vim=2:8.0.1453-1ubuntu1

安裝原生的 deb 包檔案

$ sudo apt install name.deb

這種方法會自動下載並安裝依賴的包。

安裝系統中有更新的包
upgrade 命令會升級已安裝的包,同但不移除任何包。它的目標是確保可能的侵入式升級最小化:

$ sudo apt update
$ sudo apt upgrade

刪除包
通過下面兩個命令可以刪除使用 apt install 安裝的包:

$ sudo apt remove nmap
$ sudo apt purge nmap

其中 remove 命令會保留組態檔,而 purge 命令會把組態檔一起刪除。

檢視包的資訊

$ apt show vim
Package: vim
Version: 2:8.0.1453-1ubuntu1.1
Priority: optional
Section: editors
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 2,852 kB
Provides: editor
Depends: vim-common (= 2:8.0.1453-1ubuntu1.1), vim-runtime (= 2:8.0.1453-1ubuntu1.1), libacl1 (>= 2.2.51-8), libc6 (>= 2.15), libgpm2 (>= 1.20.7), libPython3.6 (>= 3.6.5), libselinux1 (>= 1.32), libtinfo5 (>= 6)
Suggests: ctags, vim-doc, vim-scripts
Homepage: https://vim.sourceforge.io/
Task: cloud-image, server
Supported: 5y
Download-Size: 1,152 kB
APT-Manual-Installed: yes
APT-Sources: http://cn.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
Description: Vi IMproved - enhanced vi editor
 Vim is an almost compatible version of the UNIX editor Vi.
...

輸出指定條件的包列表
可以指定某個包的名稱,否則會輸出大量的資訊 :

$ apt list vim

$ apt list docker

還可以使用統配符:

可以通過 --installed 選項列出所有已安裝的包,而 --upgradable 選項則列出所有可以升級的包:

搜尋包
search 命令用於在可用包列表中搜尋給定的項並顯示匹配到的內容。比如下面的命令,我們搜尋 docker,與之相關的 cadvisor 也被搜尋出來了:

$ apt search docker

apt 與 apt-get 的區別

簡單來說 apt 命令就是 apt-get、apt-cache 和 apt-config 中最常用命令選項的集合。下面是幾個常見命令的對照關係:
list:與 dpkg --list 相似
search:與 apt-cache search 相似
show:與 apt-cache show 相似
update:與 apt-get update 相同
install/remove:與 apt-get install/remove 相似,但是多了進度條提示
upgrade:與 apt-get upgrade --with-new-pkgs 相同
full-upgrade:與 apt-get dist-upgrade 相似

在我們使用的過程中,比較明顯的區別是可以看到 apt 命令的進度條,個人感覺並不是太有用。

執行 apt update 命令,會提示可以升級的包的個數,而 apt-get update 命令則沒有這樣的提升:

$ sudo apt update
...
Fetched 8,932 kB in 31s (288 kB/s)                                                 
Reading package lists... Done
Building dependency tree     
Reading state information... Done
28 packages can be upgraded. Run 'apt list --upgradable' to see them.


IT145.com E-mail:sddin#qq.com