apt-get 命令是 Ubuntu 系統中的包管理工具,能夠用來安裝、卸載包,也能夠用來升級包,還能夠用來把系統升級到新的版本。本文介紹 apt-get 命令的基本用法,演示環境爲 Ubuntu 18.04。html
基本語法
語法格式:
apt-get [options] commandnginx
配置文件:
早期 apt-get 默認的配置文件爲 /etc/apt/apt.conf,可是當前的 Ubuntu 系統中默認沒有這個文件。
若是 /etc/apt/apt.conf 文件存在,apt-get 仍然會讀取它。但如今的設計思路是把配置文件分隔後放置在 /etc/apt/apt.conf.d 目錄下,這樣更容易管理。ubuntu
經常使用選項:vim
-h, --help // 查看幫助文檔 -v, --version // 查看 apt-get 的版本 -y // 在須要確認的場景中迴應 yes -s, --dry-run // 模擬執行並輸出結果 -d, --download-only // 把包下載到緩存中而不安裝 --only-upgrade // 更新當前版本的包而不是安裝新的版本 --no-upgrade // 在執行 install 命令時,不安裝已安裝包的更新 -q, --quiet // 減小輸出 --purge // 配合 remove 命令刪除包的配置文件 --reinstall // 從新安裝已安裝的包或其新版本
經常使用子命令:
update
update 命令用於從新同步包索引文件,/etc/apt/sources.list 文件中的配置指定了包索引文件的來源。更新了包索引文件後就能夠獲得可用的包的更新信息和新的包信息。這樣咱們本地就有了這樣的信息:有哪些軟件的哪些版本能夠從什麼地方(源)安裝。
update 命令應該老是在安裝或升級包以前執行。緩存
install
install 命令用來安裝或者升級包。每一個包都有一個包名,而不是一個徹底限定的文件名(例如,在 Debian 系統中,提供的參數是 apt-utils,而不是 apt-utils_1.6.1_amd64.deb)。被安裝的包依賴的包也將被安裝。配置文件 /etc/apt/sources.list 中包含了用於獲取包的源(服務器)。install 命令還能夠用來更新指定的包。服務器
upgrade
upgrade 命令用於從 /etc/apt/sources.list 中列出的源安裝系統上當前安裝的全部包的最新版本。在任何狀況下,當前安裝的軟件包都不會被刪除,還沒有安裝的軟件包也不會被檢索和安裝。若是當前安裝的包的新版本不能在不更改另外一個包的安裝狀態的狀況下升級,則將保留當前版本。必須提早執行 update 命令以便 apt-get 知道已安裝的包是否有新版本可用。
注意 update 與 upgrade 的區別:
update 是更新軟件列表,upgrade 是更新軟件。less
dist-upgrade
除執行升級功能外,dist-upgrade 還智能地處理與新版本包的依賴關係的變化。apt-get 有一個 "智能" 的衝突解決系統,若是有必要,它將嘗試升級最重要的包,以犧牲不那麼重要的包爲代價。所以,distr -upgrade 命令可能會刪除一些包。所以在更新系統中的包時,建議按順序執行下面的命令:
$ apt-get update
$ apt-get upgrade -y
$ apt-get dis-upgrade -ycurl
remove
remove 與 install 相似,不一樣之處是刪除包而不是安裝包。注意,使用 remove 命令刪除一個包會將其配置文件留在系統上。ionic
purge
purge 命令與 remove 命令相似,purge 命令在刪除包的同時也刪除了包的配置文件。工具
autoremove
autoremove 命令用於刪除自動安裝的軟件包,這些軟件包當初是爲了知足其餘軟件包對它的依賴關係而安裝的,而如今已經再也不須要了。
download
download 命令把指定包的二進制文件下載到當前目錄中。注意,是相似 *.deb 這樣的包文件。
clean
clean 命令清除在本地庫中檢索到的包。它從 /var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/ 目錄刪除除鎖文件以外的全部內容。
autoclean
與 clean 命令相似,autoclean 命令清除檢索到的包文件的本地存儲庫。不一樣之處在於,它只刪除不能再下載的軟件包文件,並且這些文件在很大程度上是無用的。這容許長時間維護緩存,而不至於大小失控。
source
source 命令下載包的源代碼。默認會下載最新可用版本的源代碼到當前目錄中。
changelog
changelog 命令嘗試下載並顯示包的更新日誌。
查看幫助文檔
$ apt-get -h
更新包索引文件
$ sudo apt-get update
安裝包
$ sudo apt-get install nginx
在須要確認的場景中迴應 yes
多數包在安裝前都須要與用戶交互,在用戶確認後才繼續安裝。而在自動化的任務中是沒辦法與用戶交互的。-y 選項能夠在這樣的場景中發揮做用,其效果就像是用戶確認了安裝操做同樣:
$ sudo apt-get install -y nginx
安裝系統中有更新的包
$ sudo apt-get update $ sudo apt-get upgrade -y $ sudo apt-get dis-upgrade -y
從新安裝已安裝的包
若是咱們認爲一個包工做不正常,能夠嘗試從新安裝它,爲 install 命令添加 --reinstall 選項就能夠了。另外,若是已安裝的包有了更新或新版本,也能夠用這個方法把包升級到最新的版本:
$ sudo apt-get install --reinstall curl
更新指定的包
比較奇怪的是更新指定的包竟然不是經過 upgrade 命令完成的,而是使用 intall 命令,注意:是 install 命令:
$ sudo apt-get install vim
模擬執行命令並輸出結果
應用 -s 選項後命令並不會真正執行,可是會模擬執行並輸出結果,好比下面的例子:
$ sudo apt-get update $ sudo apt-get -s upgrade
添加 -s 選項後,upgrade 命令會輸出將要被更新的軟件但不會真的執行升級操做。
檢查某個包的版本
經過下面的命令能夠查看已安裝包或即將安裝包的版本:
$ sudo apt-get -s install vim
下面是一個已安裝包的例子:
下面是一個未安裝包的例子:
安裝指定版本的包
注意,這裏指的是包的版本號:
$ sudo apt-get install tree=1.7.0-5
把包下載到緩存中而不安裝
選項 -d, --download-only 告訴命令只把包下載到緩存中而不安裝它們,主要用在把下載包和安裝包分開的場景,好比系統默認的自動化更新:
$ sudo apt-get install -d nginx $ sudo apt-get upgrade -d $ sudo apt-get dist-upgrade -d
刪除包
remove 命令的特色是隻刪除程序文件,保留相關的配置文件:
$ sudo apt-get remove vim
若是要完全清除包,可使用 purge 命令,它會同時刪除程序文件及其配置文件:
$ sudo apt-get purge vim
autoremove 命令用於刪除自動安裝的軟件包,這些軟件包當初是爲了知足其餘軟件包對它的依賴關係而安裝的,而如今已經再也不須要了。所以在刪除包後執行一下 autoremove 是個不錯的選擇:
$ sudo apt-get autoremvoe
清除系統中緩存的包安裝文件
安裝包的過程其實是先把包安裝文件下載到緩存目錄,而後執行安裝。長此以往系統中會存在大量無用的包安裝文件,clean 命令能夠清除這些緩存的包安裝文件:
$ sudo apt-get clean
clean 命令從 /var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/ 目錄刪除除鎖文件以外的全部內容。
autoclean 命令與 clean 命令相似。不一樣之處在於,它只刪除不能再下載的軟件包文件,並且這些文件在很大程度上是無用的。這容許長時間維護緩存,而不至於大小失控:
$ sudo apt-get autoclean
在執行 remove 命令時使用 --purge 選項的效果等同於執行 purge 命令:
$ sudo apt-get remove --purge vim
在執行 install/remove 命令時使用 --autoremove 選項,能夠同時刪除無用的依賴包,相似在執行完 install/remove 命令後再執行一次 autoremove 命令:
$ sudo apt-get remove --autoremove vim
在執行 install/upgrade 命令時顯示更詳細的版本信息
經過 -V 選項,可讓 install/upgrade 命令輸出包的具體版本,下面是默認的輸出:
$ sudo apt-get upgrade -s
下面是添加 -V 選項後的輸出:
$ sudo apt-get upgrade -V -s
減小輸出
既然能夠增長詳細的輸出信息,也能夠靈活地使用 -q 選項來減小輸出的信息:
$ sudo apt-get install -q curl $ sudo apt-get install -q=2 curl
查看已安裝包的更改日誌
能夠經過 changelog 命令來查看包的更新記錄:
$ apt-get changelog tree
下載包的源代碼(source code)
apt-get source 命令用來下載包的源代碼。要讓 apt-get source 命令起做用須要先更新 /etc/apt/sources.list 文件,添加 deb-src 配置,其實就是取消掉本來被註釋掉的以 deb-src 開頭的行。在 desktop 版的系統中,還能夠經過 "Software & Updates" UI 來作一樣的事情,在 "Ubuntu Software" 選項卡中選中 "Source code" 項便可:
如今再執行 apt-get source 命令並指定包的名稱,就能夠下載到該包的源代碼了:
$ apt-get source tree
查看 apt-get 的版本
$ apt-get -v
這裏顯示的竟然是 apt,太奇葩了!接着看:
原來 apt-get、apt-cache 和 apt-config 的功能都是由 apt 命令提供的。
查看系統的更新記錄
日誌文件 /var/log/apt/history.log 記錄了系統的更新歷史記錄。經過它能夠查看全部經過 apt 命令執行的安裝、升級、刪除記錄:
$ less /var/log/apt/history.log