Ubuntu软件包管理之apt与apt-get的区别

news2025/3/1 11:21:17

目录

  • apt和apt-get发展史
  • apt和apt-get命令对比
  • 常用命令举例
    • 更新存储库索引
    • 升级已安装的包
    • 列出所有可用安装包
    • 关键字搜索安装包
    • 安装软件
    • 卸载软件
    • 查看安装包信息
    • 清理没用的依赖包
    • 清理下载的缓存包
    • 清理残余的配置文件
    • 查看安装包的依赖
  • 参考

apt和apt-get发展史

Debian 使用一套名为 Advanced Packaging Tool(APT)的工具来管理软件包(不要跟 apt 命令混淆,不是同一个东西),在基于 Debian 的 Linux 发行版中(如Ubuntu),有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包,apt-get和apt-cache便是其中广受欢迎的两个主要工具。

apt-get和apt-cache命令的用法很底层,常用的软件包管理命令散落在不同命令中,一会儿得用apt-get,一会儿得用apt-cache,无法统一接口,很不友好。

为此,Ubuntu16.04引入了apt命令集,它在 apt-get 和 apt-cache 的基础之上进行优化,更加结构化和先进,apt忽略了获取和缓存的需求。使用apt,你不必在apt-get和apt-cache命令间来回切换。有了apt,你就一次性获得所有必需的工具。不会迷失在众多的命令选项中。Apt的主要目标是提供一种用户愉悦的方式来高效处理软件包。它的精简命令选项更容易使用,且更容易记住。
在这里插入图片描述
那apt-get是否会被弃用,未来不知道,但许多其他的Liunx发行版本也在跟随Ubuntu的步伐,开始鼓励用户使用apt代替apt-get。除非你打算做一些指定的操作,而这些操作使用了apt-get的更多特性。否则,都用apt吧。

总结apt和apt-get区别便是:

  1. apt是新出的工具,用于取代apt-get和apt-cache,目的是更友好、易用的包管理工具;
  2. apt-get没有被废弃也没有过时,依然可以放心使用,但普通用户建议转向apt。

apt和apt-get命令对比

虽然apt的确提供一些apt-get类似的功能选项,但是它不与apt-get向下兼容。这意味着,如果你仅用apt代替apt-get命令中的apt-get,将不会一直有用。

我们来看看apt命令取代了apt-get和apt-cache的哪些命令选项

apt 命令取代的命令命令的功能
apt updateapt-get update更新存储库索引
apt upgradeapt-get upgrade升级所有可升级的软件包
apt installapt-get install安装软件包
apt removeapt-get remove移除软件包但保留配置文件
apt purgeapt-get purge移除软件包也删除配置文件
apt autoremoveapt-get autoremove自动删除没用的依赖包
apt full-upgradeapt-get dist-upgrade在升级软件包时自动处理依赖关系
apt searchapt-cache search搜索应用程序
apt showapt-cache show显示指定安装包基本信息

apt也有一些自己独有的命令:

新的apt命令命令的功能
apt list列出包含条件的包(已安装,可升级等)
apt edit-sources编辑源列表

它们常用的命令看apt、apt-get和apt-cache帮助说明即可:

$ apt  -h
apt 2.0.9 (amd64)
用法: apt [选项] 命令

命令行软件包管理器 apt 提供软件包搜索,管理和信息查询等功能。
它提供的功能与其他 APT 工具相同(像 apt-get 和 apt-cache),
但是默认情况下被设置得更适合交互。

常用命令:
  list - 根据名称列出软件包
  search - 搜索软件包描述
  show - 显示软件包细节
  install - 安装软件包
  reinstall - 重新安装软件包
  remove - 移除软件包
  autoremove - 卸载所有自动安装且不再使用的软件包
  update - 更新可用软件包列表
  upgrade - 通过 安装/升级 软件来更新系统
  full-upgrade - 通过 卸载/安装/升级 来更新系统
  edit-sources - 编辑软件源信息文件
  satisfy – 使系统满足依赖关系字符串
$ apt-get -h
apt 2.0.9 (amd64)
用法: apt-get [选项] 命令
    apt-get [选项] install|remove 软件包1 [软件包2 ...]
    apt-get [选项] source 软件包1 [软件包2 ...]

apt-get 可以从认证软件源下载软件包及相关信息,以便安装和升级软件包,
或者用于移除软件包。在这些过程中,软件包依赖会被妥善处理。

常用命令:
  update - 取回更新的软件包列表信息
  upgrade - 进行一次升级
  install - 安装新的软件包(注:软件包名称应当类似 libc6 而非 libc6.deb)
  reinstall - 重新安装软件包(注:软件包名称应当类似 libc6 而非 libc6.deb)
  remove - 卸载软件包
  purge - 卸载并清除软件包的配置
  autoremove - 卸载所有自动安装且不再使用的软件包
  dist-upgrade - 发行版升级,见 apt-get(8)
  dselect-upgrade - 根据 dselect 的选择来进行升级
  build-dep - 为源码包配置所需的编译依赖关系
  satisfy - 使系统满足依赖关系字符串
  clean - 删除所有已下载的包文件
  autoclean - 删除已下载的旧包文件
  check - 核对以确认系统的依赖关系的完整性
  source - 下载源码包文件
  download - 下载指定的二进制包到当前目录
  changelog - 下载指定软件包,并显示其变更日志(changelog)
$ apt-cache -h
apt 2.0.9 (amd64)
用法: apt-cache [选项] 命令
       apt-cache [选项] show 软件包1 [软件包2 ...]

apt-cache 可以查询和显示已安装和可安装软件包的可用信息。
它专门工作在本地的数据缓存上,而这些缓存可以通过比如
apt-get'update' 命令来更新。如果距离上一次更新的时间太久,
那么它显示的信息可能就会过时。不过作为交换,apt-cache 不依赖
当前软件源的可用性(比如:离线状态)。

常用命令:
  showsrc - 显示源文件的各项记录
  search - 根据正则表达式搜索软件包列表
  depends - 显示该软件包的依赖关系信息
  rdepends - 显示所有依赖于该软件包的软件包名字
  show - 以便于阅读的格式介绍该软件包
  pkgnames - 列出所有软件包的名字
  policy - 显示软件包的安装设置状态

常用命令举例

以下举例,尽量使用apt命令。

更新存储库索引

使用命令apt update可以重新从源仓库中同步文件索引,有更新源列表时,就要执行该命令。

$ sudo apt update

升级已安装的包

升级所有已安装的包:

apt-get upgrade

只升级特定安装包:

apt-get upgrade <package_name>

在这里插入图片描述

列出所有可用安装包

你要安装的包是否在可安装包列表内,可以使用该命令查看。该命令会显示出所有可用的安装包,同时显示出各个包的安装状态,包括已安装,可升级、配置文件残留等信息。

apt list

关键字搜索安装包

在apt install之前,如果你不知道确切的包名,可以使用apt search进行搜索,支持模糊搜索,关键字越详细,搜索结果越精准,关键字可以是包名的部分内容,也可以是包描述的部分内容。

apt search <search term>

安装软件

安装软件:

apt install <package_name>

安装特定版本软件:

apt install <package_name>=<version_number>

同时安装多个软件:

apt install <package_1> <package_2> <package_3>

在这里插入图片描述

卸载软件

有两种方法卸载软件:

apt remove <package_name>
apt purge <package_name>

在这里插入图片描述

查看安装包信息

比如查看bash安装包的基本信息

$ apt show bash
Package: bash
Version: 5.0-6ubuntu1.2
Priority: required
Essential: yes
Section: shells
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Matthias Klose <doko@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1,700 kB
Pre-Depends: libc6 (>= 2.15), libtinfo6 (>= 6)
Depends: base-files (>= 2.1.12), debianutils (>= 2.15)
Recommends: bash-completion (>= 20060301-0)
Suggests: bash-doc
Conflicts: bash-completion (<< 20060301-0)
Replaces: bash-completion (<< 20060301-0), bash-doc (<= 2.05-1)
Homepage: http://tiswww.case.edu/php/chet/bash/bashtop.html

清理没用的依赖包

在 Ubuntu 系统中安装软件时,该软件的依赖包通常也会自动安装上。在我们删除该软件后,其依赖包可能需要我们手动删除,可使用以下命令:

apt autoremove

清理下载的缓存包

Ubuntu通过apt-get install安装软件时,其下载的包都缓存在 /var/cache/apt/archives/ 目录中。在安装完成后并不会立即从目录中删除,如果你删除了一个软件包,然后重新安装,你的系统会在缓存中查找这个软件包,并从这里获取它,而不是重新下载。

包管理的临时目录:
下载过程中存放:/var/cache/apt/archives/partial
下载完成后存放:/var/cache/apt/archives

如果要清理掉这些已下载的缓存包,那么可以执行命令:

sudo apt-get clean
sudo apt-get autoclean

apt-get clean删除/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/目录下所有包(锁定的软件包除外) 。

apt-get autoclean仅删除/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/目录下旧版本(比当前可用的版本旧)的软件包和无用的软件包(锁定的软件包除外) 。

在这里插入图片描述

清理残余的配置文件

如果使用apt remove卸载软件,软件的配置文件会被保留,这时候系统中就残留有配置文件。可以使用以下命令查看残留配置文件:

$ apt list | grep 残留

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

appmenu-qt5/now 0.3.0+16.04.20170216-0ubuntu1 amd64 [配置文件残留]
apt-xapian-index/focal,focal 0.51ubuntu1 all [配置文件残留]
docutils-common/focal,focal,now 0.16+dfsg-2 all [配置文件残留]
eclipse-platform/now 3.8.1-8 amd64 [配置文件残留]
fcitx-ui-qimpanel/focal 2.1.3-2build1 amd64 [配置文件残留]

查看安装包的依赖

比如查看bash安装包依赖:

$ apt-cache depends bash
bash
  预依赖: libc6
  预依赖: libtinfo6
  依赖: base-files
    base-files:i386
  依赖: debianutils
    debianutils:i386
  冲突: bash-completion
  推荐: bash-completion
  建议: bash-doc
  替换: bash-completion
  替换: bash-doc

参考

https://blog.csdn.net/slampai/article/details/128072043
https://itsfoss.com/apt-vs-apt-get-difference/
https://itsfoss.com/apt-get-linux-guide/
https://linux.cn/article-4933-1.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/404886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32—LCD1602

LCD1602&#xff08;Liquid Crystal Display&#xff09;是一种工业字符型液晶&#xff0c;能够同时显示 1602 即 32 字符(16列两行) 第 1 脚: VSS 为电源地 第 2 脚: VDD 接 5V 正电源 第 3 脚: VL 为液晶显示器对比度调整端,接正电源时对比度最弱&#xff0c;接地时对比度最…

C语言实现快速排序(hoare法、挖坑法、前后指针法与非递归实现)——不看后悔系列

目录 1. hoare法 方法与步骤 代码实现 2. 挖坑法 方法与步骤 代码实现 3. 前后指针法 方法与步骤 代码实现 4. 快速排序的缺点与优化 1.快速排序的缺点 2.快速排序的优化 ① 三数取中法选 key 代码实现 ② 小区间优化 代码实现 5. 快速排序的非递归实现 附录…

数据结构与算法基础(王卓)(16):KMP算法详解(代码实现)

实现代码的过程中 具体细节、问题&#xff1a; &#xff08;1&#xff09;&#xff1a;关于写Get_next函数的标题&#xff1a; 现象&#xff1a; PPT上写的是&#xff1a; void get_next(SString T, int &next[]) 然而并不能运行&#xff0c;而当我们去掉了引用符号&…

记录踩过的坑-Git

Git命令克隆很慢原命令&#xff1a;git clone -b r1.13.0 https://github.com/tensorflow/models.git现在替换为&#xff1a;git clone -b r1.13.0 https://github.com.cnpmjs.org/tensorflow/models.git也就是把原 URL 中的 github.com 替换为 github.com.cnpmjs.org&#xff…

设计模式第9式:迭代器模式

前言 我们有很多种方法可以把对象集中到一个集合中&#xff0c;比如列表、堆栈、散列表中。每种集合都有自己的特点和使用时机&#xff0c;但都有一个共同的需求&#xff1a;用户想要遍历这些对象。同时我们并不想用户看到集合的实现&#xff0c;本文将讲解如何让用户遍历对象…

JVM垃圾回收器详解

垃圾收集器没有在规范中进行过多的规定&#xff0c;可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中&#xff0c;因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器&#xff0c;可以将GC分为不同的类型。1、垃圾回收器分类1.1、按线…

国际安全领域顶会NDSS 2023录稿整理 (下)

隐私计算研习社 NDSS是网络和系统安全领域的四大顶级国际学术会议&#xff08;BIG4&#xff09;之一&#xff0c;第三十届会议于2023年2月27日到3月3日&#xff0c;在美国圣迭戈举办。本文将接着整理剩余论文&#xff0c;并对论文进行分类&#xff0c;感兴趣的小伙伴可以访问论…

【Linux】信号+再谈进程地址空间

目录 一、Linux中的信号 1、Linux中的信号 2、进程对信号的处理 3、信号的释义 二、信号的捕捉 1、信号的捕捉signal() 2、信号的捕捉sigaction() 三、信号如何产生&#xff1f; 1、kill()用户调用kill向操作系统发送信号 通过命令行参数模仿写一个kill命令 2、rais…

pinctrl和gpio子系统

一、pinctrl子系统简介Linux驱动讲究驱动分离与分层&#xff0c;pinctrl和gpio子系统就是驱动分离与分层思想下的产物&#xff0c;pinctrl子系统主要工作内容如下&#xff1a;获取设备树中的pin信息根据获取到的pin信息来设置pin的复用功能根据获取到的pin信息来设置pin的电气属…

Day914.安全认证架构演进:单块阶段 -SpringBoot与K8s云原生微服务实践

安全认证架构演进&#xff1a;单块阶段 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于安全认证架构演进&#xff1a;单块阶段的内容。 讲到安全认证的内容&#xff0c;就必然会提到两个点&#xff1a;认证 和 授权。 认证&#xff1a;我是谁授权&#xff1a;我能…

Spring中的事务@Transactional

Transactional可以添加在方法上 添加在方法上时&#xff0c;表示该方法出现了异常或者报错&#xff0c;而导致之前数据库没有进行回滚事件&#xff0c;也就是说如果在方法中&#xff0c;有报错&#xff0c;但是添加了Transactional 则会开始回滚。 Transactional 在异常被捕获…

剑指 Offer 29. 顺时针打印矩阵

剑指 Offer 29. 顺时针打印矩阵 难度&#xff1a;middle\color{orange}{middle}middle 题目描述 输入一个矩阵&#xff0c;按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2…

【OpenCV技能树】——OpenCV基础

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; 目前正在进行 OpenCV技能树的学习&#xff0c;OpenCV是学习图像处理理论知识比较好的一个途径&#xff0c;至少比看书本来得实在。本专栏文章主要记录学习Op…

Apache apisix默认密钥漏洞(CVE-2020-13945)

目录漏洞描述影响版本漏洞复现声明&#xff1a;本文仅供学习参考&#xff0c;其中涉及的一切资源均来源于网络&#xff0c;请勿用于任何非法行为&#xff0c;否则您将自行承担相应后果&#xff0c;本人不承担任何法律及连带责任。漏洞描述 Apache APISIX 是一个动态、实时、高…

LearnOpenGL-模型加载-3.渲染模型

本人刚学OpenGL不久且自学&#xff0c;文中定有代码、术语等错误&#xff0c;欢迎指正 我写的项目地址&#xff1a;https://github.com/liujianjie/LearnOpenGLProject 文章目录模型加载重要代码读取3D模型递归处理结点的网格加载纹理优化程序代码Model类加载模型流程例子1&…

【运筹优化】拉格朗日松弛 次梯度算法求解整数规划问题 + Java调用Cplex实战

文章目录一、拉格朗日松弛二、次梯度算法三、案例实战一、拉格朗日松弛 当遇到一些很难求解的模型&#xff0c;但又不需要去求解它的精确解&#xff0c;只需要给出一个次优解或者解的上下界&#xff0c;这时便可以考虑采用松弛模型的方法加以求解。 对于一个整数规划问题&…

Python交通标志识别基于卷积神经网络的保姆级教程(Tensorflow)

项目介绍 TensorFlow2.X 搭建卷积神经网络&#xff08;CNN&#xff09;&#xff0c;实现交通标志识别。搭建的卷积神经网络是类似VGG的结构(卷积层与池化层反复堆叠&#xff0c;然后经过全连接层&#xff0c;最后用softmax映射为每个类别的概率&#xff0c;概率最大的即为识别…

chromium 50 chromium57 版本编译启用 widevine 功能

本实验中 chrome 版本为 57.0.2987.98 01 chromium57 在 win11 版本中启用 widevine 功能 01.01 启用 enable_widevine 选项生成 widevine 相关动态库 在chromium 57 版本中&#xff0c;编译时秩序设置 enable_widevinetrue 即可生成 widevinecdm.dll 和 widevinecdmadapter…

windows下maven更新/安装

写在前面: 我的maven学习的比较早&#xff0c;后面windows文件管理分类的时候&#xff0c;把学习用的全部在一个文件夹了&#xff0c;而这个又不好移动进去。 正好也更新一下maven的版本了&#xff0c;不过和重新安装好像差不多了。 现在写的windows的以后&#xff0c;在看看要…

若依框架部署从零开始2023版(前后端分离)

前言电脑最近重装了一次系统&#xff0c;目前什么都没有安装&#xff0c;记录一下从零开始部署前后端分离版本的若依框架系统先去官网把若依源码拉下来代码克隆若依目前已经有很多的版本了&#xff0c;因为现在开发比较流行前后端分离&#xff0c;因此这里演示前后端分离版本点…