Ubuntu 套件管理(apt vs apt-get vs dpkg)

Kola (Yan-Hao Wang)
5 min readMar 18, 2023

--

apt(Advanced package tool)

他是 Ubuntu 推薦的 package 管理工具,用來管理 package and dependencies。

常用command(需要 root 權限, ex: sudo, su- …):

  1. apt install,安裝套件
  2. apt remove,移除套件
  3. apt update,更新 package info,你可能會想為什麼要更新 package info?因為當你用 pkg 管理 package,有關 package 的資訊都是根據你在本地端的 pkg index( /var/lib/apt/lists ) 來進行安裝,也就是當你安裝的套件的開發者更新版本,ubuntu 的官方 repo 會有這個新的版本的 info,但是你本地端的 pkg-index 不會自動更新,不會去看官方 repo,除非你 apt update,這樣你本地端的 pkg index 也會更新,也就是會收到那個開發者的新套件資訊。
  4. apt upgrade,根據本地端的 package info,升級已經安裝的 package 版本,上一個指令只是更新 info, 沒有安裝,所以這兩個指令常常一起使用。 apt update && apt upgrade,你在新的電腦上最好也先執行此指令。
  5. apt list,列出所有 pkg,加上 --install 就會列出你安裝的 pkg,可以在加上 | grep … 來抓取特定 pkg。
    apt list -a sudo,可以查看特定 pkg 是否安裝,例如左邊的例子為 sudo pkg 是否有安裝。How do I see what packages are installed on Ubuntu Linux?
    事實上,apt list --install 會列出所有你手動安裝跟 dependencies,所以會很多,可以用 apt list --manual-installed 指印出自己安裝的。

apt-get

apt-get 是 apt 的前身,事實上,apt合併了apt-get 跟 apt-cache,apt-get 是 command-line utility,跟 apt 使用同樣的 apt library。

但 apt 沒有完全合併所有 apt-get 的函數,所以你有時候還是會用到 apt-get。並且通常時候 apt command 並且快且容易記憶。

https://phoenixnap.com/kb/apt-vs-apt-get

有時候我們會看到 WARNING: apt does not have a stable CLI interface. Use with caution in scripts. 也就是因為 apt 是給使用者使用的,所以當你要的 script 可能要用到 pkg 等相關的東西,請使用 apt-get 。
apt's output is not well usable in scripts. For example, apt install (compared to apt-get install) displays a progress bar that's useless for scripts and can throw errors when the output is parsed. apt show firefox shows a hint for an additional record, which is also totally useless in a script, you want it to simply output every record there – that's what apt-cache show firefox does. Let's see what man apt has to say about that:
https://askubuntu.com/questions/990823/apt-gives-unstable-cli-interface-warning

dpkg

dpkg 是一個較低階的 package manager,事實上,apt 使用 dpkg。

dpkg 只能安裝下載的 packet(.deb file),它無法像 apt 一樣 apt install。並且當你用 dpkg 安裝檔案,他不會當你安裝此 package 的 dependencies,因此會有 error。

https://www.makeuseof.com/apt-vs-dpkg/

你可以使用 apt-get install -f 解決 dependencies 。https://www.imaginelinux.com/dpkg-dependency-problems/

常用指令:

  1. dpkg -i *.deb

--

--

Kola (Yan-Hao Wang)
Kola (Yan-Hao Wang)

Written by Kola (Yan-Hao Wang)

在系統軟體跟資安領域學習的學生

No responses yet