1. Alpine Linux

Alpine Linux 是基于 musl libc 和 busybox 的面向安全的轻量级 Linux 发行版。Alpine 的体积非常小,Alpine 的 Docker 镜像大小仅 5 MB 左右。Alpine 功能比 buysbox 完善,还提供了软件包管理工具 apk (Alpine Package Keeper)。

相关网站:

  • Alpine Linux 官网: https://www.alpinelinux.org/
  • Alpine Wiki: https://wiki.alpinelinux.org/
  • Alpine Package Keeper (apk): https://docs.alpinelinux.org/user-handbook/0.1a/Working/apk.html
  • Alpine apk 软件包搜索: https://pkgs.alpinelinux.org/
  • busybox: https://busybox.net/

其他 Linux 软件包管理工具:

后面示例以 Alpine 3.13.5 为例。

2. 更新/安装/卸载 软件包

  • 更新
apk update              # 根据远程镜像源更新本地仓库中的所有软件包索引(通常在更新/安装软件包前先更新索引)
apk upgrade             # 从仓库中安装所有可用的软件包升级(升级本地已安装的软件包及其依赖项)

apk upgrade <package>   # 更新指定的软件包

# update 只更新索引, upgrade 才真正更新
  • 安装
apk add <package>               # 安装软件包(并自动安装依赖项)
apk add <package>=<version>     # 安装指定版本软件包

apk --no-cache add <package>    # 安装软件包, 不使用缓存

apk fix <package>               # 在不修改 WORLD 的情况下修复, 重新安装或升级软件包

apk 命令格式: apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...]
其中每个子命令的 [OPTIONS...] 参数信息可以使用 --help 查询,如: apk add --help

  • 卸载
apk del <package>       # 删除软件包, 如果其依赖项不再本需要, 则将其一起卸载

# 删除软件包时默认会执行类似 apt autoremove 的清理操作

3. 查询/搜索/缓存 软件包

  • 列出软件包 (apk list)
apk list [<OPTIONS>...] PATTERN...  # 列出给定模式的软件包

# apk list --help 命令参数 (List options):
#     -I, --installed       只显示已安装的软件包
#     -O, --orphaned        只显示孤立的软件包
#     -a, --available       只显示可用的软件包
#     -u, --upgradable      只显示可升级的软件包
#     -o, --origin          按来源列出软件包
#     -d, --depends         按依赖关系列出软件包
#     -P, --providers       按提供者列出软件包

apk -I list                 # 列出已安装的所有软件包
apk -u list                 # 列出可升级的所有软件包
apk list <package>          # 列出指定软件包
  • 查询软件包的详细信息
apk info <package>          # 列出给定软件包或仓库的详细信息
apk info -R <package>       # 列出给定软件包依赖项
apk info --help             # 查询 apk info 命令的帮助/参数信息

apk dot --installed         # 将已安装软件包的依赖项呈现为 graphviz 图形
apk dot <package>           # 将给定装软件包的依赖项呈现为 graphviz 图形
  • 搜索软件包
apk search <string>         # 搜索软件包
  • 缓存管理
apk cache clean         # 删除旧的软件包
apk cache download      # 下载缺少的软件包
apk cache sync          # 删除旧软件包并下载缺少的程序包(上面两个步骤合并为一个)

使用缓存需要先开启缓存: https://wiki.alpinelinux.org/wiki/Local_APK_cache

4. 下载/离线安装 apk 软件包

使用 apk fetch 命令下载软件包到本地 (.apk 文件):

apk fetch [<OPTIONS>...] PACKAGES...    # 从配置的软件包仓库中下载软件包到本地

# apk fetch --help 命令参数 (Fetch options):
#     -L, --link            如果可能的话, 创建硬链接
#     -o, --output DIR      下载到指定文件夹(默认为当前文件夹)
#     -R, --recursive       下载软件包及其依赖项
#     -s, --stdout          将 .apk 文件转储到标准输出 
#     --simulate            模拟请求的操作,不做任何更改

下载软件包及其依赖项并离线安装示例:

$ apk fetch -R <package>            # 下载软件包及其依赖项
$
$ ls                                # 下载的软件包是 .apk 格式
xxxx.apk.   xxxx.apk    ...
$
$ apk add xxxx.apk xxxx.apk ...     # 离线安装 apk 软件包及其依赖项

5. apk --help

$ apk --help

apk-tools 2.12.5, compiled for x86_64.

usage: apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...]

Package installation and removal:
  add        Add packages to WORLD and commit changes
  del        Remove packages from WORLD and commit changes

System maintenance:
  fix        Fix, reinstall or upgrade packages without modifying WORLD
  update     Update repository indexes
  upgrade    Install upgrades available from repositories
  cache      Manage the local package cache

Querying package information:
  info       Give detailed information about packages or repositories
  list       List packages matching a pattern or other criteria
  dot        Render dependencies as graphviz graphs
  policy     Show repository policy for packages

Repository maintenance:
  index      Create repository index file from packages
  fetch      Download packages from global repositories to a local directory
  manifest   Show checksums of package contents
  verify     Verify package integrity and signature

Miscellaneous:
  audit      Audit system for changes
  stats      Show statistics about repositories and installations
  version    Compare package versions or perform tests on version strings

This apk has coffee making abilities.
For more information: man 8 apk