Alpine Linux Apk 命令示例

本指南解释了什么是 APK 包管理器以及如何使用带有示例的 Apk 命令行包管理器进行各种 Alpine Linux 包管理操作。

apk包管理器简介

APK,代表 一种脂松 包装 ķeeper,是 Alpine Linux 的默认包管理器。 它用于在运行的 Alpine Linux 系统上安装、更新、升级、搜索、列出和删除软件包。 Apk 是 apk-tools 预装在所有 Alpine Linux 版本中的软件包。

Apk 检索包以及有关在线存储库中可用包的信息。 每个存储库都包含一个特殊的索引文件,名为 APKINDEX.tar.gz. 存储在存储库中的所有软件包都经过数字签名 tar.gz 档案。 他们有扩展名 .apk并且经常被称为 “一包”.

从 Alpine Linux 3.3 版开始,默认启用了两个存储库。 他们是 – maincommunity.

[main] 存储库包含经过全面测试并由 Alpine Linux 核心团队正式支持的软件包。 这 [community] 存储库包含社区支持的包,这些包从 [testing] 或者 [edge] 存储库。 这 [testing] 存储库通常有新的、损坏的和/或过时的包。 不为此存储库提供支持,并且它不包含在发布快照中。

所有存储库都配置在 /etc/apk/repositories 文件。 让我们看看这个文件的内容 cat 命令:

$ cat /etc/apk/repositories

样本输出:

https://sjc.edge.kernel.org/alpine/edge/main
https://sjc.edge.kernel.org/alpine/edge/community
Alpine Linux 存储库配置文件

上述文件中的每一行都表示一个存储库。 正如你在上面的输出中看到的,我已经启用了 [edge] 存储库,所以它是滚动发布版本。

如果您使用的是稳定版,您应该已经看到了版本号,因为 example v3.12,如下所示:

https://sjc.edge.kernel.org/alpine/v3.12/main
https://sjc.edge.kernel.org/alpine/v3.12/community

在 Alpine Linux 中安装和管理软件包的 Apk 命令示例

在 Alpine Linux 中使用 apk 进行包管理非常简单直接。 Apk 不包含太多选项,语法更容易记住。

apk包管理器的典型用法是:

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

让我向您展示一些日常操作的重要命令。

1.显示apk命令帮助

如果您是 apk 新手,可以通过运行以下命令随时查看 apk 命令帮助部分:

$ apk --help

apk 有许多子命令来执行特定操作。 要显示子命令的帮助部分,请运行:

$ apk add --help

2.更新Alpine Linux中的包列表

要获取 Alpine Linux 存储库中可用软件包的列表,只需运行:

$ sudo apk update

样本输出:

fetch https://sjc.edge.kernel.org/alpine/edge/main/x86_64/APKINDEX.tar.gz
fetch https://sjc.edge.kernel.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
v20201218-310-g44bdae590f [https://sjc.edge.kernel.org/alpine/edge/main]
v20201218-333-ga9f7a8a644 [https://sjc.edge.kernel.org/alpine/edge/community]
OK: 13780 distinct packages available
更新 Alpine Linux 中的软件包列表

正如您在上面的输出中看到的,目前有 13780 Alpine 存储库中可用的软件包。 请注意,这些不是本地安装包的总数,而是可用包的总数。

3. 在 Alpine Linux 中安装包

添加或安装一个包,对于 example vim,在 Alpine Linux 中,只需运行:

$ sudo apk add vim

上面的命令将安装 vim 及其依赖项。

(1/3) Installing xxd (8.2.2137-r0)
(2/3) Installing lua5.3-libs (5.3.6-r0)
(3/3) Installing vim (8.2.2137-r0)
Executing busybox-1.32.0-r8.trigger
OK: 163 MiB in 87 packages
在 Alpine Linux 中安装软件包在 Alpine Linux 中安装软件包

同样,您可以通过使用如下空格提及它们来添加多个包:

$ sudo apk PackageName1 PackageName2

3.1。 安装本地包

如果你已经下载了一个包,你可以像下面这样安装它。

$ sudo apk add --allow-untrusted vim-8.2.2137-r0.apk

您还可以安装多个软件包:

$ sudo apk add --allow-untrusted PackageName1.apk PackageName2.apk PackageName3.apk

4. 删除 Alpine Linux 中的软件包

要从 Alpine Linux 系统卸载或删除已安装的软件包,请运行:

$ sudo apk del vim

此命令将删除 vim 及其依赖项。

(1/3) Purging vim (8.2.2137-r0)
(2/3) Purging xxd (8.2.2137-r0)
(3/3) Purging lua5.3-libs (5.3.6-r0)
Executing busybox-1.32.0-r8.trigger
OK: 144 MiB in 84 packages
在 Alpine Linux 中删除软件包在 Alpine Linux 中删除软件包

如果要删除多个包,请以空格分隔。

5. 在 Alpine Linux 中搜索包

Alpine Linux 存储库包含超过 13,000 个软件包。 您可以使用命令列出所有可用的包及其描述:

$ apk search -v

样本输出:

kleopatra-20.08.3-r0 - Certificate Manager and Unified Crypto GUI
py3-libevdev-0.9-r0 - Python3 wrapper around the evdev library
telepathy-farstream-dev-0.6.2_git20190919-r0 - Telepathy GLib-based client library that uses Farstream to handle Call channels (development files)
vulkan-loader-1.2.137-r0 - Vulkan Installable Client Driver (ICD) Loader
mtd-utils-ubi-2.1.2-r0 - MTD utils (UBI and UBIFS commands)
hwids-udev-20201207-r0 - Hardware identification databases (udev integration)
py3-rsa-4.6-r0 - Pure-Python3 RSA implementation
[...]

要仅显示包的总数,请将输出通过管道传输到 wc 命令如下:

$ apk search -v | wc -l

您还可以获得与模式匹配的所有包的列表。 为了 example,以下命令将显示与搜索词“vim”匹配的所有包。

$ apk search -v 'vim*'

如果您只想显示包含特定术语的包 描述, 跑:

$ apk search -v --description 'disk'

或者,很快使用 -d 转变:

$ apk search -v -d 'disk'

6. 在 Alpine Linux 中显示包详细信息

要显示特定包的详细信息,我们可以使用 info 命令如下:

$ apk info vim

您将看到给定软件包的简短描述以及托管它的网站。

样本输出:

vim-8.2.2137-r0 description:
Improved vi-style text editor

vim-8.2.2137-r0 webpage:
https://www.vim.org/

vim-8.2.2137-r0 installed size:
18 MiB

gvim-8.2.2137-r0 description:
advanced text editor, with GUI

gvim-8.2.2137-r0 webpage:
https://www.vim.org/

gvim-8.2.2137-r0 installed size:
29 MiB
在 Alpine Linux 中显示包详细信息在 Alpine Linux 中显示包详细信息

如您所见,此命令不仅列出了 vim 包的详细信息,还列出了名称中包含模式“vim”的其他包的详细信息。

如果您想要有关给定包及其依赖项的详细信息,请使用 -a 旗帜。

$ apk info -a vim

上述命令将显示以下详细信息:

  • 包说明。
  • 包的网站。
  • 安装大小(即包安装后所需的大小)。
  • 包的内容(即包安装的文件列表)。
  • 包依赖关系,即使用这个包需要哪些包。
  • 哪些软件包需要安装这个。
  • 和更多。

7.列出Alpine Linux中已安装的包

要查看 Alpine Linux 系统中所有已安装软件包的列表,请运行:

$ apk info

样本输出:

lm_sensors
man
virtualbox-guest-modules-virt
musl
libcrypto1.1
libssl1.1
apk-tools
musl-utils
busybox
alpine-baselayout
[...]

您还可以列出已安装的软件包及其版本号和描述:

$ apk info -vv

样本输出:

lm_sensors-3.4.0-r6 - Collection of user space tools for general SMBus access and hardware monitoring.
man-1.14.3-r0 - dummy package for upgrade compatibility.  this can safely be removed
virtualbox-guest-modules-virt-4.14.167-r0 - VirtualBox Additions kernel modules for virt
musl-1.2.2_pre6-r0 - the musl c library (libc) implementation
libcrypto1.1-1.1.1i-r0 - Crypto library from openssl
libssl1.1-1.1.1i-r0 - SSL shared libraries
apk-tools-2.12.0-r3 - Alpine Package Keeper - package manager for alpine
musl-utils-1.2.2_pre6-r0 - the musl c library (libc) implementation
busybox-1.32.0-r8 - Size optimized toolbox of many common UNIX utilities
alpine-baselayout-3.2.0-r8 - Alpine base dir structure and init scripts
[...]

仅列出已安装软件包的总数:

$ apk info | wc -l
87

8. Alpine Linux 升级包

要升级特定软件包,请运行:

$ sudo apk update
$ sudo apk add -u vim

或者,

$ sudo apk add --upgrade vim

要升级所有已安装的软件包,请运行:

$ sudo apk update
$ sudo apk upgrade

您还可以将上述命令组合成一个,如下所示:

$ sudo apk -U upgrade
Alpine Linux 中的升级包Alpine Linux 中的升级包

9.升级Alpine Linux

将正在运行的 Alpine Linux 升级到下一个可用版本很容易! Alpine Linux 有两个版本:

  • 稳定的
  • 滚动释放(边缘)

您可以从当前稳定版本升级到较新版本,也可以将稳定版本转换为滚动发布版本。

以下指南中提供了更详细的说明:

  • 如何将 Alpine Linux 升级到最新版本

10. 持有升级包

有时,在升级 Alpine Linux 系统时,您想阻止或阻止软件包自动升级。 可能有很多理由阻止包裹。 例如,应用程序需要特定版本才能正常工作。 否则新软件包可能会破坏您的系统。 因此,您希望在升级系统时忽略升级包。

要阻止特定软件包升级,请使用以下任一命令:

$ sudo apk add vim=8.2.0-r0

或者,

$ sudo apk add 'vim<8.2.1'

然后,使用命令进行系统升级:

 $ sudo apk upgrade

此命令将升级所有包,但将 vim 包保持在 8.2.0 或更低版本。

您可以稍后将 vim 包升级到当前可用的版本,如下所示:

$ sudo apk add 'vim>8.2.1'

您还可以使用“模糊”版本匹配将版本固定到主要/次要版本。 例如,以下命令将匹配任何以 8.2 开头的 vim 版本。

$ sudo apk add 'vim=~8.2'

相关阅读:

  • 如何在 Arch Linux 中忽略升级包
  • 如何在 Debian、Ubuntu 中防止软件包升级

11. 在 Alpine Linux 中下载软件包

有时,您想下载特定的包但不想安装它。 例如,让我们使用命令下载 vim 包:

$ apk fetch vim

上面的命令将显示来自 Alpine 存储库的 vim 包并将其保存在当前目录中。

$ ls
vim-8.2.2137-r0.apk

如果要将包保存在不同的路径中,请使用 -o 转变。

$ apk fetch vim -o ~/Downloads

请注意,此命令不会下载所有必需的依赖项,而只会下载实际的包。

要下载给定的包以及所有必需的依赖项,请使用 -R (--recursive) 旗帜:

$ apk fetch -R vim

样本输出:

Downloading xxd-8.2.2137-r0
Downloading ncurses-libs-6.2_p20201219-r0
Downloading musl-1.2.2_pre6-r0
Downloading lua5.3-libs-5.3.6-r0
Downloading vim-8.2.2137-r0
Downloading ncurses-terminfo-base-6.2_p20201219-r0

你可以安装本地下载的包,如图 3.1。 安装本地包 部分。

12.显示包的存储库详细信息

您可能想查找软件包来自哪个存储库。 Apk 也有一个子命令。

显示存储库一个包(例如 vim) 安装自,并将更新自,使用 apk policy 命令:

$ apk policy vim

样本输出:

vim policy:
  8.2.2137-r0:
    lib/apk/db/installed
    etc/apk/cache
    https://sjc.edge.kernel.org/alpine/edge/main

如您所见,vim 软件包已从 [main] 存储库。

13.显示包和存储库的统计信息

我们可以使用命令打印有关已安装包和包存储库的统计信息:

$ apk stats

样本输出:

installed:
  packages: 87
  dirs: 485
  files: 9617
  bytes: 171270144
  triggers: 5
available:
  names: 30975
  packages: 13773
atoms:
  num: 9761

14.清理包缓存

默认情况下,所有安装的包都缓存在 /etc/apk/cache/ 目录。 将较新的软件包添加到缓存中时,默认情况下会保留旧版本的软件包。

如果你不想要旧版本的包,你可以简单地使用命令清除包缓存:

$ sudo apk cache clean

如果要查看删除了哪些版本,请使用 -v(详细)开关:

$ sudo apk -v cache clean

如果您不小心从缓存中删除了软件包,可以使用以下命令下载它们:

$ sudo apk cache download

您还可以在单​​个命令中删除缓存并下载丢失的包:

$ sudo apk cache -v sync

希望这可以帮助。

资源:

相关阅读:

  • 如何在 Alpine Linux 中安装手册页