Ubuntu/Debian
apt
提供了丰富的命令,完成包的管理任务
介绍
APT(Advanced Package Tool)
apt-get
命令本身并不具有管理软件包功能,只是提供了一个软件包管理的命令行平台。
apt
命令不适合在脚本中运行,它会有颜色的显示、进度条显示等一些友好的交互界面,在脚本中不稳定,可能报错:WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
,此时,使用 apt-get
替代
- 默认的缓存目录是
/var/cache/apt/archives/
/var/lib/apt/lists
- 一般的 deb 包都在
/usr/share
。自己下载的压缩包或者编译的包,一般放在/usr/local/
或 /opt
目录下
使用
apt-get
命令的一般语法格式为:
apt-get subcommands [ -d | -f | -m | -q | --purge | --reinstall | - b | - s | - y | - u | - h | -v ] [pkg]
更新或升级
apt-get update # 更新源
apt-get upgrade # 更新所有已安装的包
apt-get dist-upgrade # 发行版升级(如,从10.10到11.04)
安装或重装类
apt-get install pkg # 安装pkg软件包,多个软件包用空格隔开
apt-get install --reinstall pkg # 重新安装软件包pkg
apt-get install -f pkg # 修复安装(破损的依赖关系)软件包pkg
卸载类
apt-get check # 检查是否有损坏的依赖
apt-get remove package – - purge
apt-get remove pkg # 删除软件包pkg(不包括配置文件)
apt-get purge pkg # 删除软件包pkg(包括配置文件)
下载清除类
apt-get clean # 清除缓存(/var/cache/apt/archives/{,partial}下)中所有已下载的包
apt-get autoclean # 类似于clean,但清除的是缓存中过期的包(即已不能下载或者是无用的包)
apt-get autoremove # 删除因安装软件自动安装的依赖,而现在不需要的依赖包
源码编译类
apt-get source pkg # 下载pkg包的源代码到当前目录
apt-get download pkg # 下载pkg包的二进制包到当前目录
apt-get source -d pkg # 下载完源码包后,编译
apt-get build-dep pkg # 构建pkg源码包的编译环境
查询类
apt-cache
提供了搜索功能
apt-cache stats # 显示系统软件包的统计信息
apt-cache search pkg # 使用关键字pkg搜索软件包
apt-cache show pkg_name # 显示软件包pkg_name的详细信息,如说明、大小、版本等
apt-cache depends pkg # 查看pkg所依赖的软件包
apt-cache rdepends pkg # 查看pkg被那些软件包所依赖
其中:
- 普通用户需要可以添加
sudo
申请管理权限
- 在 MAN 命令中需要退出命令帮助请按
q
键
aptitude 解决安装包冲突问题
aptitude
和 apt
、apt-get
功能一样,都是用来为 Ubuntu 安装软件包,它可以 自动解决安装时出现的各种依赖问题
,安装命令如下:
apt install aptitude
apt-key
apt-key
用来管理 Ubuntu/Debian Linux 系统中的软件包密钥,保证 deb 的可信性。
$ apt-key
Usage: apt-key [--keyring file] [command] [arguments]
Manage apt's list of trusted keys
apt-key add <file> - add the key contained in <file> ('-' for stdin)
apt-key del <keyid> - remove the key <keyid>
apt-key export <keyid> - output the key <keyid>
apt-key exportall - output all trusted keys
apt-key update - update keys using the keyring package
apt-key net-update - update keys using the network
apt-key list - list keys
apt-key finger - list fingerprints
apt-key adv - pass advanced options to gpg (download key)
If no specific keyring file is given the command applies to all keyring files.
说明:
apt-key list
列出已保存的 key
apt-key add <keyid>
把 key 添加到本地信任列表、
apt-key export <keyid>
- 通过 keyid 导出 key
apt-key del <keyid>
从本地删除 key
apt-key net-update
通过网络更新 key
apt-key update
删除本地过期的 key
apt-key finger
显示被信任密钥的列表
apt-mark
apt-mark
对软件包进行设置(手动/自动 )安装标记
auto
标记指定软件包为自动安装
manual
标记指定软件包为手动安装
minimize-manual
Mark all dependencies of meta packages as automatically installed
hold
标记指定软件包为保留(held back),阻止软件自动更新
unhold
取消指定软件包的保留(held back)标记,解除阻止自动更新
showauto
列出所有自动安装的软件包
showmanual
列出所有手动安装的软件包
showhold
列出设为保留的软件包
# 禁止自动更新
$ apt-mark hold nano
nano set on hold.
# 查看禁止的软件
$ apt-mark showhold
hold
# 取消禁止自动更新
$ apt-mark unhold nano
Canceled hold on nano.
apt 软件仓库
sources list 格式
# ubuntu:22.04
deb http://archive.ubuntu.com/ubuntu/ jammy main restricted
# 格式
# 二进制包
deb <uri> <distribution> [component1] [component2] […]
# 源码包
deb-src <uri> <distribution> [component1] [component2] […]
- 以发行版
component
为 jammy
版本为例,官方仓库地址
- 包含如下目录
main/
Canonical 支持的自由开源软件
multiverse/
受版权或法律问题限制的软件
restricted/
设备的专有驱动程序
universe/
社区维护的自由开源软件
- 包含如下文件
Contents-amd64.gz
Contents-i386.gz
InRelease
Release
索引文件
Release.gpg
- 标准的
debian
组件包括:main
、contrib
、non-free
、non-us
- apt 流程,从
/ubuntu/dists/jammy/Release
文件获取 Contents-amd64.gz
,然后获取需要包的地址,下载,安装
timeout 配置
/etc/apt/apt.conf.d/99timeouts
参考
Acquire::ftp::Timeout "240";
Acquire::http::timeout "240";
Acquire::https::timeout "240";
FaQ
Updates for this repository will not be applied.
apt update
时,报如上错误,该问题一般由于系统时间不同步导致,使用如下命令同步:
hwclock --hctosys
apt skip ssl cert verify
cat << EOF > /etc/apt/apt.conf.d/80ssl-exceptions
// Do not verify peer certificate
Acquire::https::Verify-Peer "false";
// Do not verify that certificate name matches server name
Acquire::https::Verify-Host "false";
EOF
或
apt -o "Acquire::https::Verify-Peer=false" update
proxy 配置
- 方式一:修改 /etc/apt/apt.conf 配置
# Acquire::http::Proxy "http://[username:password]@proxy-host:proxy-port/";
Acquire::http::Proxy "http://192.168.0.10:1080/";
或执行命令时临时指定 proxy
# apt install xxx -o -o Acquire::http::proxy="http://[username:password]@proxy-host:proxy-port/"
sudo apt install vim -o Acquire::http::proxy="http://192.168.0.10:1080/"
- 方式二:修改 /etc/apt/apt.conf.d/proxy.conf
Acquire {
HTTP::proxy "http://127.0.0.1:8889";
HTTPS::proxy "http://127.0.0.1:8889";
}
- 方式三:/etc/apt/auth.conf 参考
machine example.org
login apt
password debian
或 sources.list 中调整为
deb http://apt:debian@example.org/debian buster main