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目录下的文件夹对应 ubuntudebian都有自己的发行版本,以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子选项重新安装已安装的包。 2.指定版本 通过指定具体版本和对应的镜像源安装想要的版本,样例如下 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移除该包 符合要求无需继续处理 3.使用apt-cache madison 包名 查看要安装的包信息 4.使用apt-get -y install 包名 [{=pkg_version_number | /target_release}] 安装来自指定镜像源的指定版本 关于apt-get的使用还有很多内容,大家可以通过man apt-get查看。 资料Linux apt 命令 | 菜鸟教程 Debian如何更换 apt源 快速搭建apt源 新手初解apt的源[附:各发行版信息和镜像目录的说明] Debian Security 源使用帮助 dpkg命令详解及apt源配置 Debian 发行版本 Debian 查看系统版本的6种方式 Debian包管理工具APT debian9.6关于源main,contrib,non-free的小知识 apt apt-get 区别_apt 和 aptget 之间的区别 【转】apt 和 apt-get的区别 apt-get命令详解(超详细) 【Linux】使用 apt-get 查询并安装指定版本的软件 apt-get -t jessie-backports 如何在ubuntu 上使用apt-get命令 最后 大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫) 我的个人博客为:https://shidawuhen.github.io/ 往期文章回顾: 设计模式 招聘 思考 存储 算法系列 读书笔记 小工具 架构 网络 Go语言