Ubuntu的apt、apt-get和apt-cache命令

原文:apt 和 apt-get 之間有什么區別?

https://aws.amazon.com/cn/compare/the-difference-between-apt-and-apt-get/

陳拓轉載,2023/11/23,添加了舉例。

apt apt-get 之間有什么區別?

apt?和?apt-get?都是命令行工具。您可以使用這兩種工具來管理軟件包,例如基于 Debian 的 Linux 服務器和服務器實例上的應用程序和庫。由于 Linux 是開源的,因此您可以使用多個軟件包選項對其進行自定義,以滿足您的需求。基于 Debian 的 Linux 操作系統使用高級軟件包工具(APT)來管理 Linux 軟件包。apt?命令行工具為最終用戶提供更高級別的用戶界面,提供直觀的命令、生成的行為和安全功能。相比之下,apt-get?命令是一個低級別接口,可以更緊密地與核心 Linux 進程通信。apt?命令是比?apt-get?更易于使用的軟件包管理器。

apt apt-get 有什么相似之處?

apt?和?apt-get?都是基于 Debian 的 Linux 發行版(或發行版本,如 Debian、Ubuntu、Linux Mint 和基本操作系統)的包管理器工具。盡管?apt-get?和?apt?是系統默認工具,但也有一些類似的工具,如?aptitude?和?synaptic

接下來,我們將介紹?apt?和?apt-get?之間的相似之處。

接口

apt?命令行實用工具和?apt-get?命令行實用工具均可通過 Linux 命令行接口(CLI)訪問。要使用 Linux CLI,請打開終端窗口或虛擬終端窗口。

文檔

要獲取?apt?實用程序和?apt-get?實用程序的官方概述,請在命令提示符下輸入?apt?或?apt-get。這將為您提供最常見的?apt?命令和?apt-get?命令的列表。

例如,apt update?或?apt-get update?會更新來自官方存儲庫的可用軟件包列表。apt?命令和?apt-get?命令后面還會列出一些選項。例如,apt update --quiet?將向終端提供?apt update?命令不太詳細的打印輸出。

請注意,如果您不是以管理員身份登錄,則需要先將?sudo?命令添加到每個?apt?命令和?apt-get?命令中。例如,您可以輸入?sudo apt-get update

使用案例

apt?和?apt-get?中最常見的任務是安裝、更新和刪除軟件包。軟件包可以是應用程序、庫、實用程序和工具。

下表顯示了兩者的常用命令語法。

apt

apt-get

  • apt install <package_name>
  • apt remove <package_name>
  • apt purge <package_name>
  • apt upgrade <package_name>
  • apt update
  • apt-get install <package_name>
  • apt-get remove <package_name>
  • apt-get purge <package_name>
  • apt-get upgrade <package_name>
  • apt-get update

舉例:

  • 更新本地源列表

sudo apt update

  • 安裝軟件包libglib2.0-dev

sudo apt install libglib2.0-dev

  • 查看安裝情況

sudo apt policy libglib2.0-dev

  • 卸載軟件包libglib2.0-dev

sudo apt remove libglib2.0-dev

  • 卸載軟件包libglib2.0-dev并清除與其關聯的文件

sudo apt purge libglib2.0-dev

查看卸載情況:

主要區別:apt 與 apt-get

apt?和?apt-get?之間的區別不僅在于?apt?是?apt-get?的較新版本。apt?命令被設計為對用戶更加友好的?apt-get?替代方案,結合了多個包管理工具的功能,為用戶提供便利。

接下來,我們將討論?apt?和?apt-get?之間的其他區別。

發布日期

apt-get?于 1998 年在 Debian 2.0(Hamm)發行版中發布,而?apt?于 2014 年在 Debian 8(Jessie)發行版中發布。2014 年之后,apt?取代?apt-get?成為所有基于 Debian 的 Linux 發行版的默認軟件包管理器工具。

搜索功能

使用?apt search <package_name>?命令按名稱搜索軟件包。此命令詳細描述了包含所搜索的 package_name 的所有軟件包。使用?apt-get?無法執行此操作。相反,您必須使用?apt-cache?命令。?

依賴關系解析

任何軟件包通常都附帶軟件依賴項列表,例如正常運行所需的庫或工具。在安裝軟件包之前,必須先安裝所有依賴項。

apt?和?apt-get?都可以處理依賴關系解析,但是?apt?的性能要優越得多。它可以確定復雜的依賴關系鏈,在這些依賴關系鏈中按正確的順序安裝軟件包,并推薦要安裝的軟件包。

文件系統上的包版本

默認情況下,apt upgrade?命令會在升級時刪除系統上不再需要的已安裝或可升級軟件包的舊版本。

相比之下,apt-get upgrade?命令則不會執行此操作。這種效率使?apt upgrade?能夠更好地釋放系統內存。

將輸出打印到終端

apt-get?和?apt?都可以將狀態信息打印到終端,從而深入了解系統在輸入命令后執行的操作。apt?命令為用戶提供略微詳細一些的信息,包括每個任務的進度條。

apt 如何取代 apt-get?

apt?工具現在是基于 Debian 的 Linux 發行版的默認軟件包管理實用程序,已經取代了?apt-get?和?apt-cache。大多數?apt-get?命令在每個新的?apt?命令中的編寫方式都相同。

但在過去,對于某些命令,必須將?apt-get?與?apt-cache?一起使用。下表顯示了現在如何將這幾個命令移植到?apt

apt-cache

apt-get

apt

apt-cache search

不支持

apt search

apt-cache show

不支持

apt show

apt-cache policy

不支持

apt policy

在任何現有 Linux 腳本中,您都無需將?apt-get?命令替換為?apt?命令。它們仍然可以按預期運行,并且仍然支持?apt-get。較早的?apt-get?命令的某些功能在?apt?中略有變化,因此在腳本中保留?apt-get?有助于確保正確操作。

除非項目或環境需要,否則普通 Linux 用戶應該使用?apt?而不是?apt-get

舉例:

  • 用apt-cache search命令在本地源列表中搜索libglib2.0-dev

sudo apt-cache search libglib2.0-dev

  • 用apt search命令在本地源列表中搜索libglib2.0-dev

sudo apt search libglib2.0-dev

比apt-cache search命令給出更多的信息。

  • 用apt-cache show命令從本地軟件列表中顯示libglib2.0-dev的詳細信息

sudo apt-cache show libglib2.0-dev

  • 用apt show命令從本地軟件列表中顯示libglib2.0-dev的詳細信息

sudo apt show libglib2.0-dev

  • 用顯示apt-cache policy命令顯示軟件包libglib2.0-dev的安裝狀態和版本信息

sudo apt-cache policy libglib2.0-dev

安裝libglib2.0-dev之前:

Installed: (none) 未安裝。

安裝libglib2.0-dev之后:

libglib2.0-dev:

? Installed: 2.64.6-1~ubuntu20.04.6 已經安裝的版本

? Candidate: 2.64.6-1~ubuntu20.04.6 候選版本

? Version table: 版本列表

?*** 2.64.6-1~ubuntu20.04.6 500

??????? 500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages

??????? 500 http://archive.ubuntu.com/ubuntu focal-security/main amd64 Packages

??????? 100 /var/lib/dpkg/status

???? 2.64.2-1~fakesync1 500

??????? 500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages

  • 用顯示apt policy命令顯示軟件包libglib2.0-dev的安裝狀態和版本信息

sudo apt policy libglib2.0-dev

安裝libglib2.0-dev之前:

安裝libglib2.0-dev之后:

  • 用apt-cache madison命令顯示軟件包版本列表

sudo apt-cache madison libglib2.0-dev

  • 用apt list命令顯示軟件包版本列表

sudo apt list libglib2.0-dev

libglib2.0-dev安裝之前:

libglib2.0-dev安裝之后:

帶–-installed選項:

sudo apt list libglib2.0-dev –installed

libglib2.0-dev安裝之前:

libglib2.0-dev安裝之后:

sudo apt list libglib2.0-dev --installed -a

差異摘要:apt 與 apt-get

類別

apt-get

apt

它是什么?

用于在基于 Debian 的 Linux 系統上管理軟件包的 CLI 工具。

用于在基于 Debian 的 Linux 系統上管理軟件包的 CLI 工具。

發布年份和 Debian 的初始發行版本

1998 年,Debian 2.0(Hamm)發行版。

2014 年,Debian 8(Jessie)發行版。

搜索功能

不可以。用戶必須改用?apt-cache?包管理命令進行搜索。

可以。

依賴關系解析

解析簡單依賴關系。

通過安裝推薦軟件解析復雜依賴關系。

文件系統上的包版本

使用?apt-get upgrade?時,舊版本的軟件包會保留在文件系統上。

使用?apt upgrade?時,舊版本的軟件包會從文件系統中刪除。

操作的打印輸出

向用戶打印每個?apt-get?命令的基本輸出,沒有太多細節。

向用戶打印每個?apt?命令的詳細輸出,以獲取有關操作的更多信息,包括任務進度條。?

apt自己獨有的命令

apt list

列出本地倉庫中所有的軟件包名

如果帶上包名:

apt list [package name]

可以從本地倉庫中查找指定的包名,支持通配符,舉例:

apt list libglib2.0-dev -a

通配符的使用:

apt list libglib2.0*

如果包名后面帶有[installed]表示該包已經安裝。舉例:

  • 列出所有已安裝的包名

apt list --installed

  • 列出指定已安裝的包名

sudo apt list libglib2.0* --installed

安裝libglib2.0-dev之前:

安裝libglib2.0-dev之后:

sudo apt list libglib2.0* --installed

  • 查看所有可升級的包

sudo apt list --upgradable

  • 查看可升級的指定包

sudo apt list libglib2.0-dev --upgradable

apt edit-sources

快速換源。

通常換源是通過手動編輯/etc/apt/sources.list來實現的。

用apt edit-sources命令可以幫助我們選擇編輯器并自動打開sources.list進行編輯。舉例,換阿里云源:

  • 先備份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

  • 執行換源命令

sudo apt edit-sources

選擇編輯器。我們選1. /bin/nano

將列表中所有的archive.ubuntu都改成mirrors.aliyun,保存,退出。

  • 更新源軟件列表

因為源的位置變了,我們必須更新本地的源列表和當前的源一致:

sudo apt update

  • 更新軟件包

升級系統中所有已安裝的軟件包:

sudo apt upgrade

升級指定的已安裝的軟件包:

sudo apt upgrade libglib2.0-dev

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719826.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719826.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719826.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【存儲】without SPDK時,fio測試nvme SSD 和HDD對比

先看使用的io調度器是什么,SSD的話最好設置成none。 root@xxx-0010 ~ # cat /sys/block/nvme5n1/queue/scheduler [none] mq-deadline kyber使用fio對nvme SSD和普通HDD做對比測試: 1、 4K random write fio -filename=/data12/fiotest/testfile -direct=1 -iodepth=4 -th…

OpenAI劃時代大模型——文本生成視頻模型Sora作品欣賞(十五)

Sora介紹 Sora是一個能以文本描述生成視頻的人工智能模型&#xff0c;由美國人工智能研究機構OpenAI開發。 Sora這一名稱源于日文“空”&#xff08;そら sora&#xff09;&#xff0c;即天空之意&#xff0c;以示其無限的創造潛力。其背后的技術是在OpenAI的文本到圖像生成模…

如何找到企查查天眼查上沒有的企業聯系方式?

相信很多銷售在查找企業聯系方式的過程中&#xff0c;遇到過很多問題。很多人在出入行的時候都使用過企查查&#xff0c;天眼查來查找客戶。 但是在實際工作中使用這上面的聯系方式&#xff0c;效果卻不是很理想&#xff0c;因為上面的信息不是很準確&#xff0c;號碼不是企業…

【嵌入式移植】8、U-Boot源碼分析5—啟動過程分析start.S

U-Boot源碼分析5—啟動過程分析start.S 1、boot0.h2、reset2.1、vectors2.2、ELn2.2.1 EL32.2.2、EL2、EL1 2.3、SMPEN2.3、core errate2.4、lowlevel_init 前面從U-Boot編譯的角度分析了其Makefile、鏈接腳本等&#xff0c;本章開始正式分析U-Boot啟動過程 從上一篇文章7、U-…

ClickHouse SQL Reference (四)數據類型

Tuple(T1, T2, …) 元素元組&#xff0c;每個元素都有一個單獨的類型。元組必須至少包含一個元素。 元組用于臨時列分組。在查詢中使用IN表達式時&#xff0c;以及指定lambda函數的某些形式參數時&#xff0c;可以對列進行分組。有關更多信息&#xff0c;請參閱IN操作符和高階…

u-boot 基礎學習:板級配置 Kconfig 的包含

前言 u-boot 與 Linux 內核在嵌入式Linux開發中占有重要的地位&#xff0c;掌握 u-boot 的基礎開發&#xff0c;可以大大提升開發能力&#xff0c;并提高開發的效率。 u-boot 下 如何配置 板級的Kconfig 呢&#xff1f;u-boot 下板級的 Kconfig 是怎么包含到 主目錄下 Kconfig…

【代碼隨想錄算法訓練營Day34】860.檸檬水找零;406.根據身高重建隊列;452.用最少數量的箭引爆氣球

??Day 34 第八章 貪心算法 part04 ??今日任務 860.檸檬水找零406.根據身高重建隊列452.用最少數量的箭引爆氣球 ??860.檸檬水找零 本題看上好像挺難&#xff0c;其實挺簡單的&#xff0c;大家先嘗試自己做一做。題目鏈接&#xff1a;https://leetcode.cn/problems/lem…

【計算機網絡】IO多路轉接之poll

文章目錄 一、poll函數接口二、socket就緒條件三、poll的優點四、poll的缺點五、poll使用案例--只讀取數據的server服務器1.err.hpp2.log.hpp3.sock.hpp4.pollServer.hpp5.main.cc 一、poll函數接口 #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int t…

2024.3.3 訓練記錄(7)

這幾天又忘記每天復習了&#xff0c;以后在實驗室復習完再回去好了 最近做1800的題目好多dp啊太ex了 文章目錄 牛客 練習賽122D 圓CF 1396B Stoned GameCF 1355C Count TrianglesCF 1437C Chef MonocarpCF 271D Good SubstringsCF 1475D Cleaning the PhoneCF 1362D2 Prefix-…

“羊駝“入侵CV,美團浙大沈春華團隊將LLaMA向CV擴展,構建全新基礎模型VisionLLaMA

本文首發:AIWalker https://arxiv.org/abs/2403.00522 https://github.com/Meituan-AutoML/VisionLLaMA 本文概述 大型語言模型構建在基于Transformer的架構之上來處理文本輸入, LLaMA 系列模型在眾多開源實現中脫穎而出。類似LLaMa的Transformer可以用來處理2D圖像嗎&#xf…

Python繪制不同形狀詞云圖

目錄 1.基本詞云圖1.1 導入所需庫1.2 準備詞匯1.3 配置參數并生成詞云圖1.4 在Python窗口中顯示圖片1.5 效果展示1.6 完整代碼 2. 不同形狀詞云圖2.1 找到自己所需形狀圖片2.2 利用PS將圖片設置為黑白色2.3 在代碼中設置背景2.4 效果展示 1.基本詞云圖 1.1 導入所需庫 import…

遠程調用--webClient

遠程調用webClient 前言1、創建webClient2、準備數據3、執行請求4、接收返回響應到的數據整體代碼 前言 非阻塞、響應式HTTP客戶端 1、創建webClient WebClient client WebClient.create();2、準備數據 Map<String,String> params new HashMap<>();params.pu…

貪心算法(區間問題)

452. 用最少數量的箭引爆氣球 題目(求無重復區間) 有一些球形氣球貼在一堵用 XY 平面表示的墻面上。墻面上的氣球記錄在整數數組 points &#xff0c;其中points[i] [xstart, xend] 表示水平直徑在 xstart 和 xend之間的氣球。你不知道氣球的確切 y 坐標。 一支弓箭可以沿著…

利用Python爬取8684公交路線查詢網站中全國公交站點信息

利用python語言結合requests、BeautifulSoup等類庫爬取https://api.8684.cn/v3/api.php?docitys&actprovince對應接口中所有城市公交路線信息以及公交站點信息。 import time import requests import json, re from bs4 import BeautifulSoup# 定義一個函數&#xff0c;傳…

“祖傳代碼“的是是非非

程序員眼中的“祖傳代碼”&#xff0c;就像一本古老而神秘的魔法書&#xff0c;藏著無窮的智慧和技巧&#xff0c;有些代碼像家傳寶貝&#xff0c;有些像祖傳秘方。快來分享一下你遇到的“祖傳代碼”吧~ 祖傳代碼的歷史與文化價值 祖傳代碼通常指的是經過長時間使用和傳承的代…

【DUSt3R】2張圖2秒鐘3D重建

【DUSt3R】2張圖2秒鐘3D重建 1. DUSt3R是一種用于稠密和無約束立體三維重建的方法,其實現步驟如下:2. 實際運行效果3. 運行結果4. 自問自答4.1 為社么這里要是使用transform模型呢?4.2 CroCo(通過跨視圖完成3D視覺任務的自我監督預訓練的一個研究)在DUSt3R的作用是什么,為…

打家劫舍(java版)

&#x1f4d1;前言 本文主要是【動態規劃】——打家劫舍(java版)的文章&#xff0c;如果有什么需要改進的地方還請大佬指出?? &#x1f3ac;作者簡介&#xff1a;大家好&#xff0c;我是聽風與他&#x1f947; ??博客首頁&#xff1a;CSDN主頁聽風與他 &#x1f304;每日一…

17 easy 290. 單詞規律

//給定一種規律 pattern 和一個字符串 s &#xff0c;判斷 s 是否遵循相同的規律。 // // 這里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每個字母和字符串 s 中的每個非空單詞之間存在著雙向連接的對應規律。 // // // // 示例1: // // //輸入: patte…

24計算機考研調劑 | 西安工大

西安工大 考研調劑招生信息 學校:西安工大 專業:- 年級:2024 招生人數:4 招生狀態:正在招生中 聯系方式:********* (為保護個人隱私,聯系方式僅限APP查看) 補充內容 歡迎化工、材料、環工等專業[或有計算機相關專業&#xff08;智能科學和軟件工程方向&#xff09;、機…

一款不錯的多端SSH工具:Xterminal

1、不僅是強大的SSH工具&#xff0c;更提供本地控制臺&#xff0c;以及更多即將推出的開發相關功能&#xff0c;讓您專注于創造卓越的代碼 2、AI賦能&#xff0c;智能命令提示&#xff0c;為大腦解壓 AI解答&#xff0c;讓你的疑問得到即時解答 AI智能提示&#xff0c;讓每一…