当前位置: 首页 > news >正文

alpinelinux的包管理

Alpine Linux 使用 apk 作为其包管理工具,它是一个轻量级的命令行工具,用于安装、更新、删除和管理Alpine Linux中的软件包。

apk 命令的使用需要用户是root或者拥有sudo权限的用户。

以下是 apk 的一些基本使用实例:

更新软件包索引:

localhost:~# apk update
fetch http://mirrors.ustc.edu.cn/alpine/v3.20/main/x86_64/APKINDEX.tar.gz
fetch http://mirrors.ustc.edu.cn/alpine/v3.20/community/x86_64/APKINDEX.tar.gz
v3.20.3-146-g5472acf50d5 [http://mirrors.ustc.edu.cn/alpine/v3.20/main]
v3.20.3-145-g2f494ccc7f8 [http://mirrors.ustc.edu.cn/alpine/v3.20/community]
OK: 24164 distinct packages available

搜索软件包:

apk search <package_name>

例:搜索docker的软件包

localhost:~# apk search docker
docker-26.1.5-r0
docker-bash-completion-26.1.5-r0
docker-cli-26.1.5-r0
docker-cli-buildx-0.14.0-r3
docker-cli-compose-2.27.0-r3
docker-credential-ecr-login-0.7.1-r20
docker-credential-ecr-login-doc-0.7.1-r20
docker-doc-26.1.5-r0
docker-engine-26.1.5-r0
docker-fish-completion-26.1.5-r0
docker-openrc-26.1.5-r0
docker-registry-2.8.3-r7
docker-registry-openrc-2.8.3-r7
docker-rootless-extras-26.1.5-r0
docker-zsh-completion-26.1.5-r0
lazydocker-0.23.1-r5
openscap-docker-1.3.10-r1
openvswitch-2.17.9-r1
podman-docker-5.2.4-r0
podman-docker-doc-5.2.4-r0
py3-docker-py-7.1.0-r0
py3-docker-py-pyc-7.1.0-r0
py3-dockerpty-0.4.1-r8
py3-dockerpty-pyc-0.4.1-r8
py3-pytest-docker-tools-3.1.3-r0
py3-pytest-docker-tools-pyc-3.1.3-r0
rootlesskit-docker-proxy-2.1.0-r3
rsyslog-imdocker-8.2404.0-r0

可以发现,搜索的结果包含了docker相关包以及包名中含有docker字符串的软件包都会输出。

安装软件包:

apk add <package_name>

例:安装git服务

localhost:~# apk add git
(1/8) Installing brotli-libs (1.1.0-r2)
(2/8) Installing c-ares (1.33.1-r0)
(3/8) Installing nghttp2-libs (1.62.1-r0)
(4/8) Installing libpsl (0.21.5-r1)
(5/8) Installing libcurl (8.10.1-r0)
(6/8) Installing libexpat (2.6.3-r0)
(7/8) Installing git (2.45.2-r0)
(8/8) Installing git-init-template (2.45.2-r0)
Executing busybox-1.36.1-r29.trigger
OK: 498 MiB in 98 packages

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

localhost:~# apk fetch -R nginx
Downloading busybox-1.36.1-r29
Downloading busybox-binsh-1.36.1-r29
Downloading libcrypto3-3.3.2-r0
Downloading libssl3-3.3.2-r0
Downloading musl-1.2.5-r0
Downloading nginx-1.26.2-r0
Downloading pcre-8.45-r3
Downloading ssl_client-1.36.1-r29
Downloading zlib-1.3.1-r1
localhost:~# ls
busybox-1.36.1-r29.apk        libssl3-3.3.2-r0.apk          pcre-8.45-r3.apk
busybox-binsh-1.36.1-r29.apk  musl-1.2.5-r0.apk             ssl_client-1.36.1-r29.apk
libcrypto3-3.3.2-r0.apk       nginx-1.26.2-r0.apk           zlib-1.3.1-r1.apk
localhost:~# apk add ./*.apk
(1/4) Installing pcre (8.45-r3)
(2/4) Installing nginx (1.26.2-r0)
Executing nginx-1.26.2-r0.pre-install
Executing nginx-1.26.2-r0.post-install
(3/4) Installing nginx-openrc (1.26.2-r0)
(4/4) Installing nginx-vim (1.26.2-r0)
Executing busybox-1.36.1-r29.trigger
OK: 552 MiB in 109 packages

安装特定版本的软件包:

apk add <package_name>=<version>

例:安装nginx的1.26.2-r0版本

localhost:~# apk add nginx=1.26.2-r0
(1/4) Installing pcre (8.45-r3)
(2/4) Installing nginx (1.26.2-r0)
Executing nginx-1.26.2-r0.pre-install
Executing nginx-1.26.2-r0.post-install
(3/4) Installing nginx-openrc (1.26.2-r0)
(4/4) Installing nginx-vim (1.26.2-r0)
Executing busybox-1.36.1-r29.trigger
OK: 500 MiB in 102 packages

列出已安装的软件包:

apk info

如果apk info后面没有跟包名,则列出所有的已安装包的列表:

localhost:~# apk info
alpine-base
alpine-baselayout
alpine-baselayout-data
alpine-conf
alpine-keys
alpine-release
apk-tools
busybox
busybox-binsh
busybox-mdev-openrc
busybox-openrc
busybox-suid
ca-certificates
ca-certificates-bundle
chrony
…… 略 ……
openssl
p11-kit
pcre2
runc
scanelf
ssl_client
tini-static
vim
vim-common
xxd
xz-libs
zlib
zstd-libs

如果后面有指定包名,则仅列出指定包的信息:

localhost:~# apk info openrc
openrc-0.54-r1 description:
OpenRC manages the services, startup and shutdown of a hostopenrc-0.54-r1 webpage:
https://github.com/OpenRC/openrcopenrc-0.54-r1 installed size:
1636 KiB

查看特定文件属于哪个软件包:

apk info --who-owns <file_path>

例:查看/usr/bin/git文件属于哪个包

localhost:~# apk info --who-owns /usr/bin/git
/usr/bin/git is owned by git-2.45.2-r0

查看软件包的依赖关系:

apk info -R <package_name>

例:查看git的依赖关系

localhost:~# apg info -R git
-sh: apg: not found
localhost:~# apk info -R git
git-2.45.2-r0 depends on:
so:libc.musl-x86_64.so.1
so:libcurl.so.4
so:libexpat.so.1
so:libpcre2-8.so.0
so:libz.so.1

升级所有已安装的软件包:

如果后面没有跟包的名字将更新所有可以更新的软件包

localhost:~# apk upgrade
Upgrading critical system libraries and apk-tools:
(1/1) Upgrading apk-tools (2.14.4-r0 -> 2.14.4-r1)
Executing busybox-1.36.1-r29.trigger
Continuing the upgrade transaction with new apk-tools:
(1/1) Upgrading linux-lts (6.6.52-r0 -> 6.6.54-r0)
Executing busybox-1.36.1-r29.trigger
Executing kmod-32-r0.trigger
Executing mkinitfs-3.10.1-r0.trigger
==> initramfs: creating /boot/initramfs-lts for 6.6.54-0-lts
Executing grub-2.12-r5.trigger
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-lts
Found initrd image: /boot/initramfs-lts
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
OK: 490 MiB in 90 packages

需要更新指定的软件包则需要再后面跟包的名字

localhost:~# apk upgrade apk-tools
fetch http://dl-cdn.alpinelinux.org/alpine/v3.20/main/x86_64/APKINDEX.tar.gz
(1/1) Upgrading apk-tools (2.14.4-r0 -> 2.14.4-r1)
Executing busybox-1.36.1-r29.trigger
OK: 256 MiB in 101 packages

删除软件包:

apk del <package_name>

例:删除上面安装的nginx

localhost:~# apk del nginx
(1/4) Purging nginx-openrc (1.26.2-r0)
(2/4) Purging nginx-vim (1.26.2-r0)
(3/4) Purging nginx (1.26.2-r0)
(4/4) Purging pcre (8.45-r3)
Executing busybox-1.36.1-r29.trigger
OK: 498 MiB in 98 packages

清理缓存:

localhost:~# apk cache clean

修复损坏的软件包:

localhost:~# apk fix
OK: 498 MiB in 98 packages

查看软件包信息:

apk info <package_name>

例:查看软件包git的信息:

localhost:~# apk info git
git-2.45.2-r0 description:
Distributed version control systemgit-2.45.2-r0 webpage:
https://www.git-scm.com/git-2.45.2-r0 installed size:
6468 KiB

apk命令的详细选项,可以通过apk --help进行查看,下面是系统给出的命令输出结果:

localhost:~# apk --help
apk-tools 2.14.4, compiled for x86_64.usage: apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...]Package installation and removal:add        Add packages to WORLD and commit changesdel        Remove packages from WORLD and commit changesSystem maintenance:fix        Fix, reinstall or upgrade packages without modifying WORLDupdate     Update repository indexesupgrade    Install upgrades available from repositoriescache      Manage the local package cacheQuerying package information:info       Give detailed information about packages or repositorieslist       List packages matching a pattern or other criteriadot        Render dependencies as graphviz graphspolicy     Show repository policy for packagessearch     Search for packages by name or descriptionRepository maintenance:index      Create repository index file from packagesfetch      Download packages from repositories to a local directorymanifest   Show checksums of package contentsverify     Verify package integrity and signatureMiscellaneous:audit      Audit system for changesstats      Show statistics about repositories and installationsversion    Compare package versions or perform tests on version stringsThis apk has coffee making abilities.
For more information: man 8 apk

如果想看看某个选项中还可以配搭什么参数,可以使用命令apk <选项名> --help,例如下面是查看info选项的用法和参数,这里命令的内容输出比较多,请自行实验。

http://www.dtcms.com/a/278141.html

相关文章:

  • 力扣刷题记录(c++)09
  • ‘make_unique’ is not a member of ‘std’
  • win10下的wsl2扩充空间
  • 20250713 保存 PBM / PGM / PPM 图片 C++
  • 拼写纠错模型Noisy Channel(上)
  • 中华心法问答系统的解读(1)
  • XCZU2CG-2SFVC784I Xilinx FPGA AMD Zynq UltraScale+ MPSoC
  • if-constexpr,编译报错expected a “(“
  • JavaScript 中一些常见算法的实现及详细解析
  • 问题 E: Connecting Territories(DP)
  • 理解volatile:并发编程的核心机制
  • 能说说MyBatis的工作原理吗?
  • 柯西不等式
  • CATIA许可价格高,设计部门如何精细化分配?
  • 【时时三省】(C语言基础)通过指针引用数组元素2
  • 未来航空电子系统
  • 浮点数的乘法与除法运算耗时对比
  • 洛谷 P13014:[GESP202506 五级] 最大公因数
  • 基于python的栅格数据标准差椭圆
  • Can201-Introduction to Networking:Transport Layer 传输层
  • 跨领域科学探索智能体设计与实现
  • 模块化编程为何使用函数指针分析(一)(深入分析指针的实际应用)
  • 【uniapp】元胞自动机GameOfLife生命游戏项目开发流程详解
  • Java SE--图书管理系统模拟实现
  • 模型占用显存大小评估
  • 【AI大模型】ComfyUI:Stable Diffusion可视化工作流
  • java基础编程(入门)
  • C++多线程知识点梳理
  • 深入理解 Java Map 与 Set
  • 每天学一个八股(二)——详解HashMap