我想知道,给定一个二进制文件的名称,我应该在 Alpine Linux 上安装哪个包。
我怎样才能做到这一点?
我正在摆弄一个 Docker 映像,它是使用 Packer 从 Virtualbox VM 构建的。该映像是 Alpine Linux 5.3.0,但apk似乎已被删除。
如何重新安装apk或从源代码构建它?谷歌搜索似乎只会对安装软件包或 Android 应用程序的人产生结果!
我正在尝试在基于 alpine 的 docker 映像中安装软件包。主机系统为CentOS系统,系统版本:CentOS Linux release 7.6.1810 (Core)。
这就是我所做的:
# docker run -td alpine:3.9
abbd2da62ed51047de063ef06e2422ae22ff77788fd70a626ad3a6b85856a3af.
# docker exec -it abbd2
/ # apk add bash
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-
cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/5) Installing ncurses-terminfo-base (6.1_p20190105-r0)
(2/5) Installing ncurses-terminfo (6.1_p20190105-r0)
(3/5) Installing ncurses-libs (6.1_p20190105-r0)
(4/5) Installing readline (7.0.003-r1)
ERROR: readline-7.0.003-r1: Permission denied
(5/5) Installing bash (4.4.19-r1)
ERROR: bash-4.4.19-r1: Permission denied
2 errors; 13 MiB in 17 packages
Run Code Online (Sandbox Code Playgroud)
这对应于这样的 Dockerfile:
FROM alpine:3.9
RUN apk add bash
Run Code Online (Sandbox Code Playgroud)
为什么我在尝试安装软件包时会出现权限错误(此处以 bash 为例)?
我怎样才能得到要安装的包?
我使用 Alpine Linux 3.9.3 x86_64
当我发出:
# apk upgrade
Run Code Online (Sandbox Code Playgroud)
输出是:
3 errors; 1973 MiB in 519 packages
Run Code Online (Sandbox Code Playgroud)
我如何获得有关这 3 个错误的详细信息?我试过这个--verbose标志,但结果是一样的。
这些是我认为可行的解决方法:
apk -sv fix
Run Code Online (Sandbox Code Playgroud)
-s(或--simulate) 应该模拟修复而不执行它并且-v(或--verbose) 应该显示更多细节,但两者都不起作用。
结果是:
# apk -sv fix
(1/3) Reinstalling fuse-common (3.2.6-r1)
(2/3) Reinstalling fuse-openrc (3.2.6-r1)
(3/3) Reinstalling xorgproto (2018.4-r0)
3 errors; 524 packages, 2845 dirs, 48016 files, 2002 MiB
Run Code Online (Sandbox Code Playgroud)
但仍然没有细节,只是一个简短的总结。我想知道出了什么问题,但我找不到任何日志或类似的东西。
我的系统出现一些问题,我想重新安装软件包以查看是否可以解决问题,但我不确定如何执行此操作。如何在 Alpine Linux 中重新安装所有已安装的软件包?
deps 添加到虚拟包中:
apk add --no-cache --virtual .build-deps gcc make libc-dev
我怎样才能列出它们?
apk list给出垃圾。
apk list .build-deps
WARNING: Ignoring APKINDEX.00740ba1.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.d8b2a6f4.tar.gz: No such file or directory
.build-deps-20191012.021030 noarch {.build-deps} () [installed]
Run Code Online (Sandbox Code Playgroud)
没有太多帮助apk info
apk info .build-deps
WARNING: Ignoring APKINDEX.00740ba1.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.d8b2a6f4.tar.gz: No such file or directory
.build-deps-20191012.021030 description:
virtual meta package
.build-deps-20191012.021030 webpage:
.build-deps-20191012.021030 installed size:
0
Run Code Online (Sandbox Code Playgroud) 我已在 KVM 下的虚拟机上安装了 Alpine r3.17。我想安装sudo工具。
# su -
# apk update
...
OKL 4994 distinct packages available
# apk add sudo
ERROR: unable to select packages:
sudo (no such package):
required by: world[sudo]
Run Code Online (Sandbox Code Playgroud)
检查 Alpine 网站后,我看到sudo是一个有效的包:
适用于版本 3.17。我也在网上看到了 r3.16 的类似问题,所以我认为这不是一个新问题。是的,对于虚拟机,而不是容器,我确实希望在关键机器上使用 sudo。
但还是apk没有找到。到目前为止我看过的所有地方都显示安装命令,例如:
# apk add sudo
Run Code Online (Sandbox Code Playgroud)
例如:
sudo用法,但不显示安装方式。我想知道“世界”是否相关,例如:“ required by: world[sudo] …
我有以下两个使用 apk 的命令
apk add --no-cache curl && \
curl -sSLO https://github.com/awslabs/aws-sam-local/releases/download/v${VERSION}/sam_${VERSION}_linux_386.tar.gz && \
tar -C /usr/local/bin -zxvf /sam_${VERSION}_linux_386.tar.gz && \
apk del curl && \
rm -f /sam_${VERSION}_linux_386.tar.gz
# awscli for "sam package" and "sam deploy"
apk add --no-cache py-pip && pip install awscli
Run Code Online (Sandbox Code Playgroud)
我需要使用运行这两个命令apt
相应的命令使用什么apt-get?