阿尔派 Linux:FAQ

Alpine Linux 是一个独立的、非商业的、通用 Linux 发行版,专为欣赏安全性、简洁性和资源效率的 power 用户而设计。
这是关于 Alpine Linux 的常见问题列表。如果你的问题在此页面上没有解答,请查看可用的支持选项。
概述
从哪里开始?
安装页面和该页面上的安装后部分提供了基本指导。
更广泛的概述可以在官方的 关于 页面和 wiki 概述中找到。
请注意,在您自己的虚拟机上进行测试更安全。
我发现了一个 Bug,在哪里报告?
你可以在 bug 追踪器上报告它,但请先搜索一下,看看问题是否已被报告。
有关于可用版本的详细信息吗?
请查看 发布分支 页面以获取更多信息。
edge 和 stable 版本之间有什么区别?
Stable 版本正如其名称所示:最初是软件包存档的时间点快照,但随后仅通过错误修复进行维护,以保持稳定的环境。
Edge 更像是一个滚动发布版本,最新的软件包在在线仓库中可用。
有时,会制作 edge 当前状态的快照 ISO 镜像,并提供下载。
通常,当有重要的内核升级或需要重建 initramfs 的软件包升级时,会制作这些镜像。
Alpine Linux 支持哪些架构?
下表列出了官方支持的架构。
Alpine Linux 硬件支持矩阵 | |||
架构 | 端口 | 描述 | 起始版本 |
---|---|---|---|
x86 | x86 | 32 位 i686 兼容(或更高版本)的 CPU,至少具有 CMOV 和 SSE2 | 所有版本 |
x86_64 | AMD64 兼容的 64 位 x86 指令集 | 所有版本 | |
ARM | armhf | 32 位 ARM,带硬浮点 ABI - 适用于 ARMv6 设备 - Raspberry Pi 1, Zero, ZeroW, cm1 (defconfig bcmrpi) | v3.0 |
armv7 | 32 位 ARM - 适用于 ARMv7 设备 - Raspberry Pi 2, 3, 3+, Zero2W, cm3, cm3+ (defconfig bcm2709) | v3.9 | |
aarch64 | 64 位 ARM - 适用于 ARMv8+ 设备 - Raspberry Pi 3, 3+, 4, 400, Zero2W, cm3, cm3+, cm4, 5 (defconfig bcm2711) | v3.5 | |
PowerPC | ppc64le | 64 位 PowerPC (小端) 主要用于 POWER8 和 POWER9 | v3.6 |
IBM System Z | s390x | IBM Z 大型机,特别是 IBM Z 和 IBM LinuxONE (z196 最低要求) | v3.6 |
RISC V | riscv64 | 64 位 RISC V | v3.20 |
LoongArch | loongarch64 | 64 位 LoongArch | v3.21 |
请查看 下载 页面以了解每种架构的媒体可用性。
我如何贡献?
你可以通过以下方式贡献:
- 使用软件并提供 反馈。
- 在此 wiki 上记录你的 Alpine Linux 经验。
- 在软件包数据库中标记过时的软件包,或者更好的是在 Anitya 中为它们启用发布监控。
- 通过许多其他方式。
请访问 贡献 页面以阅读有关此主题的更多信息。
为什么我没有 man pages 或者 ‘man’ 命令在哪里?
`man` 命令和 man-pages,系统的核心手册页默认未安装。由于二进制软件包被精简和拆分,因此 `packagename-doc` 格式的文档子软件包默认未安装。
安装 man 命令
# apk add mandoc
可选地,安装 apropos 命令以在 man pages 中搜索
# apk add mandoc-apropos
一旦安装了 mandoc,为你需要的软件包添加文档。例如,假设你安装了 nftables,现在需要它的 man pages
# apk add nftables-doc
`docs` 元软件包为所有当前已安装的软件包安装文档子软件包,并在不可用时安装 mandoc。`docs` 元软件包确保为你将来可能添加/删除的任何软件包自动安装或删除文档子软件包。
# apk add docs
请记住,并非所有软件包都有相应的文档软件包,即使有,也可能不是 man pages 形式。
设置
运行 setup-alpine 或 setup-disk 时,sys、data 和 diskless 之间有什么区别?
sys:此模式是传统的磁盘安装。将在磁盘上创建以下分区:/boot/、/(文件系统根目录)和 swap。此模式可用于开发机、桌面、虚拟服务器等。
data:此模式使用你的磁盘进行数据存储,而不是操作系统。从媒体运行,并且仅在磁盘上创建 /var/。系统本身将从 tmpfs (RAM) 运行。如果你只想将磁盘用于数据,例如 mailspool、数据库、日志等,请使用此模式。
diskless:不使用磁盘。在这种模式下仍然可以使用 Alpine 本地备份。
这些模式在 安装 页面上有更详细的解释。
我如何升级 Alpine?
要升级到新的 stable 版本或 edge 版本:apk upgrade --available
为什么我的 cron 任务没有运行?
启动 crond
服务并将其添加到默认运行级别
rc-service crond start && rc-update add crond
之后,cron 守护程序将在系统启动时自动启动,并执行放置在 /etc/periodic/ 下的文件夹中的脚本 - 其中包含 15min、hourly、daily、weekly 和 monthly 脚本的文件夹。
要检查你的脚本是否可能运行,请使用 run-parts
命令,例如
run-parts --test /etc/periodic/15min
此命令将告诉你应该运行什么,但实际上不会执行脚本。
如果测试结果不如预期,请检查以下内容
- 确保脚本是可执行的 - 如果不确定,请执行命令
chmod +x /etc/periodic/[path/scriptname]
- 确保脚本的第一行是
#!/bin/sh
- 不要在脚本文件名中使用句点 - 这会阻止它们工作;例如:/etc/periodic/daily/myscript 将运行,但 /etc/periodic/daily/myscript.sh 不会。
时间和时区
我如何设置本地时区?
如果你希望在安装后编辑时区 (TZ),请运行 setup-timezone 脚本。
软件包
你能为 ... 构建一个 APK 软件包吗?
请在 bug 追踪器中创建一个 issue。在标题中以 “package request:” 为前缀,并包含简短描述(一行)、主页 URL、你为什么需要它以及源代码包的 URL。
我如何构建自己的软件包?
请参阅 创建 Alpine 软件包 页面。
“required by: world[$pkgname]” 是什么意思?
这意味着你尝试安装的软件包在你配置的仓库中不存在。
也许你忘记将 community
或 testing
添加到 /etc/apk/repositories?
或者软件包是否在 pinned 仓库中,而你忘记在软件包后添加仓库标签?例如
apk add experimental-package@testing
我如何知道某个软件包是否存在于 Alpine 中?
如果你只想搜索你在 /etc/apk/repositories 中配置的仓库,那么 apk search $pkgname
应该可以帮助你。如果你想搜索所有仓库,请查看 在线软件包查询工具
警告:忽略 APKINDEX.xxxx.tar.gz
如果你在运行软件包相关工具时收到 WARNING: Ignoring APKINDEX.xxxx.tar.gz: No such file or directory
警告,请检查你的 /etc/apk/repositories 文件。
要检查仓库文件的内容
cat /etc/apk/repositories
或
setup-apkrepos
动态 DNS
我如何安排定期的动态 DNS 更新?
你需要安装 ez-ipupdate 软件包
apk add ez-ipupdate
之后,在 /etc/ez-ipupdate.conf 创建一个新文件,内容类似于
service-type=dyndns user=myusername:mypassword interface=eth1 host=myhostname.dyndns.org
创建新的 ip 缓存目录
mkdir /var/cache/ez-ipupdate lbu add /var/cache/ez-ipupdate
然后使用此命令安排新的 cron 任务
echo >> /var/log/ez-ipupdate && \
/bin/date >> /var/log/ez-ipupdate && \
ez-ipupdate --config-file /etc/ez-ipupdate.conf -f -F /var/run/ez-ipupdate.pid \
--cache-file /var/cache/ez-ipupdate/ipcache --quiet >> /var/log/ez-ipupdate 2>&1
别忘了备份你的设置!
lbu ci
终端
如何启用/修复 git 的颜色?
问题不在 git 本身或终端中,而是在less命令中。Busybox 的less不支持-r (--raw-control-chars)和-R (--RAW-CONTROL-CHARS)选项。
最简单(但并非理想)的解决方案是安装 GNU less
apk add less
此外,为了在使用 verbose commit 时进行彩色 diff(git commit -v),将此添加到 shell 初始化脚本中(例如:~/.profile)
~/.profile 的内容
修复 lsusb / lspci 输出缺失
如果你在最小化安装上启动 lsusb
或 lspci
,则没有设备描述,并且后者不存在。
这可以通过安装 usbutils 和 hwdata 表来修复。
旧问题,不再频繁被问到
Alpine 从 Compact Flash 启动时冻结,如何修复?
大多数 Compact Flash 读卡器不支持正确的 DMA。
你应该将 nodma 附加到 syslinux.cfg 中的 append 行。
我如何移除 CD-ROM?
由于 modloop 环回设备位于 CD-ROM 上,因此你不能只运行 eject
。你需要先卸载 modloop。
可以通过执行以下命令一步卸载 modloop 和 CDROM
/etc/init.d/modloop stop
然后就可以弹出 CD-ROM
eject
如何在无盘系统中安装自定义固件?
模块和固件都是特殊镜像,它们以只读方式挂载。
要解决此问题,你可以将固件目录复制到你的可写介质 (cf/usb),并将你的自定义固件复制到其中。
重启后,Alpine 应该会自动使用本地存储上的目录,而不是环回设备。
OpenNTPD 报告 “adjtime” 错误
你的日志包含类似以下内容
reply from 85.214.86.126: offset 865033148.784255 delay 0.055466, next query 32s reply from 202.150.212.24: offset 865033148.779314 delay 0.400771, next query 3s adjusting local clock by 865033148.779835s adjtime failed: Invalid argument
openntpd 应该在时间上进行小幅调整,而不会引起时间跳跃。
如果调整过大,那么显然有问题,ntpd 会放弃。(实际上是 adjtime(3)
对允许的调整幅度有限制)
你可以通过向 ntpd 添加 -s 选项,使 ntpd 在启动时设置时间。这可以通过在 /etc/conf.d/ntpd 中设置 NTPD_OPTS="-s" 来完成。
使用 cron 任务保持时间同步
将以下内容添加到 /etc/periodic/daily(或者如果你想更频繁/更少地运行脚本,请使用 /etc/periodic 层次结构下的另一个文件夹)
示例:名为 do-ntp 的文件
#!/bin/sh ntpd -d -q -n -p uk.pool.ntp.org
这会查询英国时间服务器池 - 你可以修改它以适应你的本地化,或者只使用 pool.ntp.org。更多信息请访问:https://www.pool.ntp.org/zone/@
Windows 客户端尝试同步时报告错误
openntpd 需要运行一段时间才能确信它已同步。在此之前,它将设置一个 “clock not synchronized” 标志,并且 Windows 在尝试与你的 openntpd 服务器同步时会报告错误。
唯一要做的就是等待,做一些其他事情 15-20 分钟,然后再检查。