包管理器
apk命令列表
Alpine系统包管理器为APK(Alpine Linux package management)。Alpine使用apk进行软件包管理,通过apk --help命令查看完整的包管理命令。
表2 apk工具支持操作
| 命令类别 | 子命令 | 命令说明 |
|---|---|---|
| 包管理 | add | 将软件包添加到“world”并进行安装(或升级),同时确保满足所有依赖性 |
| 包管理 | del | 从“world”中删除并卸载软件包 |
| 系统维护 | fix | 修复或升级已安装的软件包 |
| 系统维护 | update | 更新可用软件包的索引 |
| 系统维护 | upgrade | 升级当前安装的软件包 |
| 系统维护 | cache | 本地缓存的软件包存储库的维护操作 |
| 信息查询 | info | 打印有关已安装或可用软件包的信息 |
| 信息查询 | list | 按PATTERN和其他条件列出包裹 |
| 信息查询 | search | 搜索带有通配符模式的软件包或描述 |
| 信息查询 | dot | 为给定的包创建graphviz图形描述 |
| 信息查询 | policy | 显示更新给定软件包的存储库,以及也提供该软件包的存储库 |
| 仓库管理 | index | 从软件包列表创建存储库索引 |
| 仓库管理 | fetch | 下载(但不安装)软件包 |
| 仓库管理 | verify | 验证包的完整性和签名信息 |
| 仓库管理 | manifest | 显示package各组成部分的checksum |
apk常用命令说明
update
表3
| 命令类别 | 子命令 | 命令说明 |
|---|---|---|
| 系统维护 | update | 更新可用软件包的索引 |
update命令用于更新本地软件包索引,这样其它许多操作才能顺利执行,否则会提示警告信息。
alpine:/# apk update
v3.24.1-333-gfcf6617ao16 [https://dl-cdn.alpinelinux.org/alpine/v3.24/main]
v3.24.1-335-ged5f0da1174 [https://dl-cdn.alpinelinux.org/alpine/v3.24/community]
OK: 27214 distinct packages available
索引文件一旦下载至本地,执行其他命令则不会出现WARNING信息。
search
表4
| 命令类别 | 子命令 | 命令说明 |
|---|---|---|
| 系统维护 | search | 搜索带有通配符模式的软件包或描述 |
常见用法为apk search,用于查询可用的apk的包的信息。 以llvm22为例:
alpine:~/# apk search llvm22
llvm22-22.1.8-r1
llvm22-dev-22.1.8-r1
llvm22-gtest-22.1.8-r1
llvm22-libs-22.1.8-r1
llvm22-linker-tools-22.1.8-r1
llvm22-static-22.1.8-r1
llvm22-test-utils-22.1.8-r1
llvm22-test-utils-pyc-22.1.8-r1
add
表5
| 命令类别 | 子命令 | 命令说明 |
|---|---|---|
| 包管理 | add | 将软件包添加到“world”并进行安装(或升级),同时确保满足所有依赖性 |
以安装vimdiff为例安装最新匹配版本的apk包的命令:
alpine:/# apk add vimdiff
(1/4) Installing vim-common (9.2.0854-r1)
(2/4) Installing xxd (9.2.0854-r1)
(3/4) Installing vim (9.2.0854-r1)
(4/4) Installing vimdiff (9.2.0854-r1)
Executing busybox-1.38.0-r1.trigger
OK: 3256.5 MiB in 524 packages
其他常见用法:
- 下载至本地apk安装文件,然后使用安装文件进行安装 apk add 二进制文件.apk
- 使用本地cache而不直接联网进行安装 apk add --no-network 包名
- 不使用本地cache进行安装 apk add --no-cache 包名
- 安装某包的指定版本 apk add 包名=指定版本号
以安装acf-lib-lua5.1-0.11.0-r0为例:
alpine:/# apk add acf-lib-lua5.1=0.11.1-r1
(1/1) Installing acf-lib-lua5.1 (0.11.1-r1)
OK: 3256.6 MiB in 525 packages
del
表6
| 命令类别 | 子命令 | 命令说明 |
|---|---|---|
| 包管理 | del | 从“world”中删除并卸载软件包 |
以卸载iperf为例:
alpine:/# apk del iperf
(1/2) Purging iperf-openrc (2.0.13-r1)
(2/2) Purging iperf (2.0.13-r1)
Executing busybox-1.31.1-r10.trigger
OK: 1388 MiB in 205 packages
可以看到连同安装的其他依赖一同卸载。
info 和 list
表7
| 命令类别 | 子命令 | 命令说明 |
|---|---|---|
| 信息查询 | info | 打印有关已安装或可用软件包的信息 |
| 信息查询 | list | 按PATTERN和其他条件列出软件包 |
可以通过info和list获得包的相关信息,以iperf为例:
alpine:~# apk list iperf
iperf-2.2.1-r0 loongarch64 {iperf} (NCSA)
alpine:~# apk info iperf
iperf-2.2.1-r0 description:
A tool to measure IP bandwidth using UDP or TCP
iperf-2.2.1-r0 webpage:
https://sourceforge.net/projects/iperf2/
iperf-2.2.1-r0 installed size:
258 KiB
其他常见用法:
- 查询指定的二进制文件名所归属的包的信息 apk info --who-owns 二进制文件名称
alpine:~# which grep
/bin/grep
alpine:~# apk info -W /bin/grep
/bin/grep is owned by grep-3.12-r0
- 查询已经安装的所有包的信息 apk info 或者 apk info -v
policy
表8
| 命令类别 | 子命令 | 命令说明 |
|---|---|---|
| 信息查询 | policy | 显示更新给定软件包的存储库,以及也提供该软件包的存储库 |
使用policy可以查询包信息:
alpine-226-3c5000:~# apk policy iperf
iperf policy:
2.2.1-r0:
https://dl-cdn.alpinelinux.org/alpine/v3.24/community