Ubuntu上的apt/apt-get等命令的實質意義和區別


Ubuntu上的apt/apt-get等命令的實質意義和區別

一、前言

       在使用apt和apt-get命令的時候我們常常會疑惑這兩者有什么區別,因為大多數時間這兩個命令能做很多相同的事情。

二、APT/APT-GET

 Ubuntu 16.04 發布時,一個引人注目的新特性便是 apt 命令的引入。其實早在 2014 年,apt 命令就已經發布了第一個穩定版,只是直到 2016 年的 Ubuntu 16.04 系統發布時才開始引人關注。隨着 apt install package 命令的使用頻率和普遍性逐步超過 apt-get install package,越來越多的其它 Linux 發行版也開始遵循 Ubuntu 的腳步,開始鼓勵用戶使用 apt 而不是 apt-get。
 Debian 作為 Ubuntu、Linux Mint 和 elementary OS 等 Linux 操作系統的母板,其具有強健的包管理系統,它的每個組件和應用程序都內置在系統中安裝的軟件包中。
  Debian 使用一套名為 Advanced Packaging Tool(APT)的工具來管理這種包系統,不過請不要把它與 apt 命令混淆,它們之間是其實不是同一個東西。在基於 Debian 的 Linux 發行版中,有各種工具可以與 Advanced Packaging Tool(APT) 進行交互,以方便用戶安裝、刪除和管理的軟件包。apt-get 便是其中一款廣受歡迎的命令行工具,另外一款較為流行的是 Aptitude 這一命令行與 GUI 兼顧的小工具。除此之外,apt-cache、apt-config 這些命令都比較低級又包含眾多功能,普通的 Linux 用戶也許永遠都不會使用到。換種說法來說,就是最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 這三條命令當中。apt 命令的引入就是為了解決命令過於分散的問題,它包括了 apt-get 命令出現以來使用最廣泛的功能選項,以及 apt-cache 和 apt-config 命令中很少用到的功能。在使用 apt 命令時,用戶不必再由 apt-get 轉到 apt-cache 或 apt-config,而且 apt 更加結構化,並為用戶提供了管理軟件包所需的必要選項。簡單來說就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令選項的集合。通過 apt 命令,用戶可以在同一地方集中得到所有必要的工具,apt 的主要目的是提供一種以讓終端用戶滿意的方式來處理 Linux 軟件包的有效方式。apt 具有更精減但足夠的命令選項,而且參數選項的組織方式更為有效。除此之外,它默認啟用的幾個特性對最終用戶也非常有幫助。例如,可以在使用 apt 命令安裝或刪除程序時看到進度條。

       雖然 apt apt-get 有一些類似的命令選項,但它並不能完全向下兼容 apt-get 命令。也就是說,可以用 apt 替換部分 apt-get 系列命令,但不是全部。

 

apt 命令

取代的命令

命令的功能

apt install

apt-get install

安裝軟件包

apt remove

apt-get remove

移除軟件包

apt purge

apt-get purge

移除軟件包及配置文件

apt update

apt-get update

刷新存儲庫索引

apt upgrade

apt-get upgrade

升級所有可升級的軟件包

apt autoremove

apt-get autoremove

自動刪除不需要的包

apt full-upgrade

apt-get dist-upgrade

在升級軟件包時自動處理依賴關系

apt search

apt-cache search

搜索應用程序

apt show

apt-cache show

顯示裝細節

    當然,apt 還有一些自己的命令:

新的apt命令

命令的功能

apt list

列出包含條件的包(已安裝,可升級等)

apt edit-sources

編輯源列表

   總結:

需要注意的是:apt 命令也還在不斷發展, 因此會在將來的版本中看到新的選項。目前還沒有任何 Linux 發行版官方放出 apt-get 將被停用的消息,至少它還有比 apt 更多、更細化的操作功能。對於低級操作,仍然需要 apt-get。既然兩個命令都有用,那么我該使用 apt 還是 apt-get 呢?作為一個常規 Linux 用戶,建議大家盡快適應並開始首先使用 apt。不僅因為廣大 Linux 發行商都在推薦 apt,更主要的還是它提供了 Linux 包管理的必要選項。最重要的是,apt 命令選項更少更易記,因此也更易用,所以沒理由繼續堅持 apt-get。 apt 可以看作 apt-get 和 apt-cache 命令的子集, 可以為包管理提供必要的命令選項。 apt-get 雖然沒被棄用,但作為普通用戶,還是應該首先使用 apt。

三、rpm和apt-get

rpm 相當於windows中的安裝文件,它會自動處理軟件包之間的依賴關系。 rpm是redhat公司的一種軟件包管理機制,直接通過rpm命令進行安裝刪除等操作,最大的優點是自己內部自動處理了各種軟件包可能的依賴關系。rpm一般都是預先編譯好的文件,它可能已經綁定到某種CPU或者發行版上面了。
tar 只是一種壓縮文件格式,所以,它只是把文件壓縮打包而已。tar一般包括編譯腳本,可以在當前環境下編譯,所以具有通用性。 如果你的包不想開放源代碼,你可以制作成rpm,如果開源,用tar更方便了。 tar一般都是源碼打包的軟件,需要自己解包,然后進行安裝三部曲,./configure, make, make install. 來安裝軟件。

一般來說著名的linux系統基本上分兩大類:

1.RedHat系列:Redhat、Centos、Fedora等 2.Debian系列:Debian、Ubuntu等

RedHat 系列

1 常見的安裝包格式 rpm包,安裝rpm包的命令是“rpm -參數”
2 包管理工具 yum
3 支持tar包

Debian系列

1 常見的安裝包格式 deb包,安裝deb包的命令是“dpkg -參數”
2 包管理工具 apt-get
3 支持tar包

 四、apt-get

apt-get 是一個下載安裝軟件包的簡單命令行接口。
命令: 
update - 重新獲取軟件包列表 upgrade - 進行更新 
install - 安裝新的軟件包 
remove - 移除軟件包 
autoremove - 自動移除全部不使用的軟件包 
purge - 移除軟件包和配置文件 
source - 下載源碼檔案 
build-dep - 為源碼包配置編譯依賴 
dist-upgrade - 發行版升級
dselect-upgrade - 依照 dselect 的選擇更新 
clean - 清除下載的歸檔文件 
autoclean - 清除舊的的已下載的歸檔文件 
check - 檢驗是否有損壞的依賴 
選項: 
-h 本幫助文件。 
-q 輸出到日志 - 無進展指示 
-qq 不輸出信息,錯誤除外 
-d 僅下載 - 不安裝或解壓歸檔文件 
-s 不實際安裝。模擬執行命令
-y 假定對所有的詢問選是,不提示 
-f 嘗試修正系統依賴損壞處 
-m 如果歸檔無法定位,嘗試繼續
-u 同時顯示更新軟件包的列表 
-b 獲取源碼包后編譯 -V 顯示詳細的版本號
-c=? 閱讀此配置文件
-o=? 設置自定的配置選項,如 -o dir::cache=/tmp

     常用的命令:

apt-cache search packagename 搜索包
apt-cache show packagename 獲取包的相關信息,如說明、大小、版本等
apt-get install packagename 安裝包
apt-get install packagename --reinstall 重新安裝包
apt-get -f install 修復安裝”-f = –fix-missing”
apt-get remove packagename 刪除包
apt-get remove packagename --purge 刪除包,包括刪除配置文件等
apt-get update 更新源
apt-get upgrade 更新已安裝的包
apt-get dist-upgrade 升級系統
apt-get dselect-upgrade 使用 dselect 升級
apt-cache depends packagename 了解使用依賴
apt-cache rdepends packagename 是查看該包被哪些包依賴
apt-get build-dep packagename 安裝相關的編譯環境
apt-get source packagename 下載該包的源代碼
apt-get clean 清理無用的包
apt-get autoclean 清理無用的包
apt-get check 檢查是否有損壞的依賴

    注意事項:

update 是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,這樣才能獲取到最新的軟件包。
upgrade 是升級已安裝的所有軟件包,升級之后的版本就是本地索引里的,因此,在執行   upgrade 之前一定要執行 update, 這樣才能是最新的。
安裝或升級系統分下面幾個步驟:
   第一步,獲得最近的軟件包的列表;列表中包含一些包的信息,比如這個包是否更新過。
   第二步,如果這個包沒有發布更新,就不管它;如果發布了更新,就把包下載到電腦上,並安裝。
apt update對應的就是第一步。 apt upgrade 與apt dist-upgrade對應的是第二步。
由於包與包之間存在各種依賴關系。upgrade只是簡單的更新包,不管這些依賴,它不和添加包,或是刪除包。而dist-upgrade可以根據依賴關系的變化,添加包,刪除包。 
upgrade:系統將現有的Package升級,如果有相依性的問題,而此相依性需要安裝其它新的Package或影響到其它Package的相依性時,此Package就不會被升級,會保留下來. 
dist-upgrade:可以聰明的解決相依性的問題,如果有相依性問題,需要安裝/移除新的Package,就會試着去安裝/移除它. (所以通常這個會被認為是有點風險的升級) 
apt-get upgrade 和 apt-get dist-upgrade 本質上是沒有什么不同的。只不過,dist-upgrade 會識別出當依賴關系改變的情形並作出處理,而upgrade對此情形不處理。
例如軟件包 a 原先依賴 b c d,但是在源里面可能已經升級了,現在是 a 依賴 b c e。這種情況下,dist-upgrade 會刪除 d 安裝 e,並把 a 軟件包升級,而 upgrade 會認為依賴關系改變而拒絕升級 a 軟件包。

五、sudo apt --fix-broken install

這個命令出來的時候一般是使用dpkg安裝軟件出現依賴或者源找不到的情況,會提示使用這個命令來解決依賴,刪除半安裝的軟件,因為不使用這個軟件使用 apt update或者apt upgrade將不能成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM