apt命令详解

news2024/11/23 15:03:32

apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。前些日子需要打一个镜像,用到的命令有点多,正好梳理一下,防止忘掉。

一、镜像源

apt从哪里获取要安装的软件呢?答案是镜像源。镜像源的配置文件一般在:/etc/apt/sources.list。

该文件中的镜像源一般位于国外,所以安装包会比较慢,为解决这个问题,可以更换镜像源。

1.1更换镜像源

方案一:sed命令

sed -i "s@http://deb.debian.org@https://mirrors.163.com@g" /etc/apt/sources.list
或者
sed -i 's/security-cdn.debian.org/mirrors.aliyun.com' /etc/apt/sources.list

如果使用https源,则需要执行apt install apt-transport-https,再执行apt update更新源索引。

方案二:更改文件

直接更改/etc/apt/sources.list文件,国内常用的镜像源有163、中科大、阿里云、华为云、清华大学云、兰州大学云、上海交通大学云镜像源等。

如163的镜像源:

deb http://mirrors.163.com/debian/ stretch main non-free contrib
deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib

1.2镜像源说明

第一个字段

deb与deb-src,是指软件包(deb)和源代码包(deb-src)

第二个字段

指向的是软件库的位置,apt会自动根据软件库的位置和第三字段的信息去抓取软件索引(/dists)和软件包或源代码包(/pool)的信息

第三个字段

代表的是发行版,与URL路径中dists目录下的文件夹对应

image-20230128200734478.png

ubuntu\debian都有自己的发行版本,以debian为例,有

  • 下一代 Debian 正式发行版的代号为 bookworm — 测试(testing)版 — 发布日期尚未确定

  • Debian 11 (bullseye) — 当前的稳定(stable)版

  • Debian 10(buster) — 当前的旧的稳定(oldstable)版

  • Debian 9(stretch) — 更旧的稳定(oldoldstable)版,现有长期支持

  • Debian 8(jessie) — 已存档版本,现有扩展长期支持

  • Debian 7(wheezy) — 被淘汰的稳定版

  • Debian 6.0(squeeze) — 被淘汰的稳定版

  • Debian GNU/Linux 5.0(lenny) — 被淘汰的稳定版

  • Debian GNU/Linux 4.0(etch) — 被淘汰的稳定版

  • Debian GNU/Linux 3.1(sarge) — 被淘汰的稳定版

  • Debian GNU/Linux 3.0(woody) — 被淘汰的稳定版

  • Debian GNU/Linux 2.2(potato) — 被淘汰的稳定版

  • Debian GNU/Linux 2.1(slink) — 被淘汰的稳定版

  • Debian GNU/Linux 2.0(hamm) — 被淘汰的稳定版

通过如下命令可查看debian版本,镜像源尽量与系统版本一致

#命令
cat /etc/os-release
#结果
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

后续字段

发行版的软件包,有多种,简单整理了一些

  • main:官方支持。“main”组件包括了自由软件、可以被自由发布的软件和被Ubuntu团队完全支持的软件。其中包括了大多数流行的和稳定的开源软件,当您安装Ubuntu时默认安装的就是这些软件。

  • non-free:非DFSG兼容软件

  • contrib:带有非自由依赖关系的DFSG兼容软件

  • restricted:专供普遍用途,而且没有自由软件版权,但依然被Ubuntu团队支持的软件。

  • universe:在“universe”组件中,你可以找到大多数开源软件,以及在开源版权下的软件,所有这些都是在公共源的基础上建立的。这些软件都是使用“main”中的组件编写的,它们能与“main”组件相安无事地共同运行,但它们没有安全升级的保障。

  • multiverse:包含了“不自由”的软件,这意味着这些软件不满足 Ubuntu相对于“main”组件的各种版权政策。当您使用这些软件时,如何调整各种权力以及遵重版权所有者的问题,就完全依靠您自己把握。

二、命令

apt相关的命令有两个,一个是apt、一个是apt-get。

  • 简单认为:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合

  • 虽然 apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令。也就是说,可以用 apt 替换部分 apt-get 系列命令,但不是全部。

本次主要讲解apt-get命令,可通过apt-get -h或者man apt-get查看操作手册。

# apt-get -h

用法: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)

选项:
 -h 		帮助文件。
 -q 		输出到日志 - 无进展指示  
 -qq 		不输出信息,错误除外  
 -d 		仅下载 - 不安装或解压归档文件  
 -s 		不实际安装。模拟执行命令  
 -y 		在需要确认的场景中回应 yes
 -f 		尝试修正系统依赖损坏处  
 -m 		如果归档无法定位,尝试继续  
 -u 		同时显示更新软件包的列表  
 -b 		获取源码包后编译  
 -V 		显示详细的版本号  
 -c=? 		阅读此配置文件  
 -o=? 		设置自定的配置选项,如 -o dir::cache=/tmp

2.1查

通过查功能,我们可以知道自己安装了哪些包,想要安装的包是否在镜像源里存在,以及是否有合适的版本。

已安装的包

apt list --installed

包位于哪些镜像源及对应版本

apt-cache madison 包名   #比较习惯使用这个
apt-cache policy 包名
apt-show-versions -a 包名

查看包详情

apt-cache show 包名

查看损坏的依赖

apt-get check

2.2增

安装

安装包主要使用apt-get install命令,不过该命令有很多参数可以使用

apt-get -y install 包名 [{=pkg_version_number | /target_release}] --force-yes

说明:

  1. 常用选项
  • 使用-f,-fix-breesk子选项来修复或者尝试纠正损坏的依赖项。

  • 使用-m,-ignore-missing , -fix-missing子选项来忽略丢失的包。

  • 使用-y,-yes,-assume-yes子选项自动选择是以提示。

  • 使用-force-yes子选项在安装/升级或者删除包时强制yes。这是一个危险操作,使用后如果apt做一些潜在危害系统的操作也不会有提示。只有特殊情况下才应该使用。该选项有可能破坏掉你的系统。

  • 使用-reinstall子选项重新安装已安装的包。

  1. 指定版本
  • 通过指定具体版本和对应的镜像源安装想要的版本,样例如下

  • apt-get install gnupg/buster

  • apt-get install monkeysphere=0.43-3

修复安装

如果安装包,报依赖错误,可以执行该语句

apt-get -f install

2.3删

删除包

带–purge,不但会删除包,还会删除配置文件等

apt-get remove 包名 --purge

清理无用包

apt-get clean
apt-get autoclean

2.4改

更新源文件

更新源文件,并不会做任何安装升级操作。如果更新了/etc/apt/sources.list或者打算开始使用apt-get,都执行一下该命令

apt-get update

升级所有包

不太建议使用

apt-get upgrade

仅升级指定包

升级尽量用这个

apt-get install 包名 --only-upgrade

重新安装包

较少使用

apt-get install 包名 --reinstall

三、总结

使用apt,可以使用下面的流程进行操作

  1. 更改镜像源文件,然后使用apt-get update命令

  2. 使用apt list --installed查看是否安装过,以及安装的版本信息

  • 不符合要求使用apt-get remove移除该包

  • 符合要求无需继续处理

  1. 使用apt-cache madison 包名 查看要安装的包信息

  2. 使用apt-get -y install 包名 [{=pkg_version_number | /target_release}] 安装来自指定镜像源的指定版本

关于apt-get的使用还有很多内容,大家可以通过man apt-get查看。

资料

  1. Linux apt 命令 | 菜鸟教程

  2. Debian如何更换_apt源_

  3. 快速搭建apt源

  4. 新手初解apt的源[附:各发行版信息和镜像目录的说明]

  5. Debian Security 源使用帮助

  6. dpkg命令详解及apt源配置

  7. Debian 发行版本

  8. Debian 查看系统版本的6种方式

  9. Debian包管理工具APT

  10. debian9.6关于源main,contrib,non-free的小知识

  11. apt apt-get 区别_apt 和 aptget 之间的区别

  12. 【转】apt 和 apt-get的区别

  13. apt-get命令详解(超详细)

  14. 【Linux】使用 apt-get 查询并安装指定版本的软件

  15. apt-get -t jessie-backports

  16. 如何在ubuntu 上使用apt-get命令

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:https://shidawuhen.github.io/

往期文章回顾:

  1. 设计模式

  2. 招聘

  3. 思考

  4. 存储

  5. 算法系列

  6. 读书笔记

  7. 小工具

  8. 架构

  9. 网络

  10. Go语言

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

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

相关文章

基于java ssm springboot宠物用品商城系统

基于java ssm springboot宠物用品商城系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式…

Python 基础语法介绍(一)

文章目录一、概述二、变量1)变量定义2)定义变量的规则3)变量命名规范4)变量类型转换三、注释1)单行注释2)多行注释1、单引号()注释2、双引号("""&#xf…

Kubernetes 体验 kubecolor

Kubernetes 体验 kubecolorkubecolor 概述Github 地址安装 kubecolor设置.bashrc使用 kubecolorkubecolor 概述 对你的kubectl输出进行着色。 kubecolor在内部调用kubectl命令并尝试对输出进行着色,因此你可以将kubecolor作为kubectl的一个完整的替代品。这意味着…

JAVA经典面试题带答案(一)

目录 1、JDK 和 JRE 有什么区别? 2、 和 equals 的区别是什么? 3、final 在 java 中有什么作用? 4、java 中的 Math.round(-1.5) 等于多少? 5、String 属于基础的数据类型吗? 不属于。 6、String str"i&quo…

51单片机学习笔记-13直流电机

13 直流电机 [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 13.1 直流电机与PWM波 13.1.1 直流电机 直流电机是一种将电能转换为机械能的装置…

Docker -- 部署Mysql主从服务

以下是配置一主两从的Mysql服务的具体流程。 文章目录创建用于挂载的目录修改cnf配置拉取mysql服务镜像自定义docker网络启动容器主库配置查看主库状态创建从库备份用户从库配置修改Master信息启动slave服务查看slave服务状态是否正常创建用于挂载的目录 保证数据的持久化&…

Databend 内幕大揭秘第二弹 - Data Source

本篇是 minibend 系列的第二期,将会介绍 Data Source 部分的设计与实现,当然,由于是刚开始涉及到编程的部分,也会提到包括 类型系统 和 错误处理 之类的一些额外内容。 前排指路视频和 PPT 地址 视频(哔哩哔哩&#xf…

23种设计模式之趣味学习篇

23种设计模式之趣味学习篇1. 设计模式概述1.1 什么是设计模式1.2 设计模式的好处2. 设计原则分类3. 详解3.1 单一职责原则3.2 开闭原则3.3 里氏代换原则3.4 依赖倒转原则3.5 接口隔离原则3.6 合成复用原则3.7 迪米特法则4. Awakening1. 设计模式概述 我们的软件开发技术也包括一…

【1669. 合并两个链表】

来源:力扣(LeetCode) 描述: 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。 下图中蓝色边和节点…

【算法竞赛学习】csoj:寒假第二场

文章目录前言红包接龙最后一班勇者兔兔兔爱消除吃席兔知识拓展std::greater | 堆优化参考iota函数参考并查集参考sort自定义函数参考树形dp参考使用auto时控制分隔符前言 由于本人菜鸡,所以大多都是使用出题人的代码和思路 如有侵权,麻烦联系up删帖&…

pytorch_sparse教程

pytorch_sparse教程 Coalesce torch_sparse.coalesce(index, value, m, n, op"add") -> (torch.LongTensor, torch.Tensor) 逐行排序index并删除重复项。通过将重复项映射到一起来删除重复项。对于映射,可以使用任何一种torch_scatter操作。 参数 i…

来回修改的投标文件怎么做版本管理?1个工具搞定!

投标是公司市场活动中非常重要的事情,每次投标文件的编写像打仗一样,要修改很多次,不保存每个版本就只能在需要的时候后悔,多个文件、多人编写、多种方案要再最后的几个小时才能定,每次都是弄得鸡飞狗跳的,…

Python卷积神经网络CNN

Python卷积神经网络CNN 提示:前言 Python卷积神经网络CNN 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录Python卷积神经网络CNN前言一、导入包二、介绍三、卷积过滤四、权重五、展示特征图六、用 ReLU…

一文快速入门哈希表

目录一、基本概念1.1 哈希冲突二、整数哈希2.1 哈希函数的设计2.2 解决哈希冲突2.2.1 开放寻址法2.2.2 拉链法三、字符串哈希3.1 应用:重复的DNA序列References一、基本概念 哈希表又称散列表,一种以「key-value」形式存储数据的数据结构。所谓以「key-…

RA4M2开发(1)----使用串口进行打印

为什么使用Cube进行FreeRTOS配置 本篇文章主要介绍如何使用e2studio对瑞萨RA4M2开发板进行串口打印配置。 硬件准备 首先需要准备一个开发板,这里我准备的是芯片型号R7FAM2AD3CFP的开发板: 新建工程 工程模板 保存工程路径 芯片配置 本文中使用R7F…

【GlobalMapper精品教程】043:图片自动矢量化

本文讲解Globalmapper自动矢量化教程,配套案例数据。 参考教程:ArcGIS实验教程——实验三十三:ArcScan自动矢量化完整案例教程 文章目录 一、加载实验数据二、启动矢量化工具三、矢量化栅格四、矢量化结果五、注意事项一、加载实验数据 打开配套实验数据包中的data043.rar…

参数检验与非参数检验

综述 假设检验 参数检验 T检验 T检验是通过比较不同数据的均值,研究两组数据之间是否存在显著差异。 单总体检验:单总体t检验是检验一个样本平均数与一个已知的总体平均数的差异是否显著。当总体分布是正态分布,如总体标准差未知且样本容量小…

算法——垃圾回收算法——标记清除

标记清除简介算法过程1.标记阶段2.清除阶段3.缺点3.1内存碎片化简介 标记清除算法简介。 文章中使用的动画网站地址: 限 pc: 标记清除动画 :http://www.donghuasuanfa.com/platform/portal?pcmark-sweep 算法一览表:https://blog.csdn.net…

23种设计模式之面向对象的设计原则

23种设计模式之面向对象的设计原则1. 设计模式概述1.1 什么是设计模式1.2 设计模式的好处2. 设计原则分类3. 详解3.1 单一职责原则3.2 开闭原则3.3 里氏代换原则3.4 依赖倒转原则3.5 接口隔离原则3.6 合成复用原则3.7 迪米特法则4. Awakening1. 设计模式概述 我们的软件开发技术…

18《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》 本人能力有限,如果错误欢迎批评指正。 第四章:Protein Binding Leads to Biological Actions (蛋白质的结合会产生生物作用) -偶联结合是调控、信号传…