Ubuntu apt 命令介绍

发布时间: 更新时间: 总字数:1666 阅读时间:4m 作者: IP上海 分享 网址

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被那些软件包所依赖

其中:

  1. 普通用户需要可以添加 sudo 申请管理权限
  2. 在 MAN 命令中需要退出命令帮助请按 q

aptitude 解决安装包冲突问题

aptitudeaptapt-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 格式

  • /etc/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] […]
  • 以发行版 componentjammy 版本为例,官方仓库地址
    • 包含如下目录
      • main/ Canonical 支持的自由开源软件
      • multiverse/ 受版权或法律问题限制的软件
      • restricted/ 设备的专有驱动程序
      • universe/ 社区维护的自由开源软件
    • 包含如下文件
      • Contents-amd64.gz
      • Contents-i386.gz
      • InRelease
      • Release 索引文件
      • Release.gpg
    • 标准的 debian 组件包括:maincontribnon-freenon-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
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数