阿尔派 Linux:FAQ

来自 阿尔派 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,至少具有 CMOVSSE2 所有版本
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

请查看 下载 页面以了解每种架构的媒体可用性。

我如何贡献?

你可以通过以下方式贡献:

请访问 贡献 页面以阅读有关此主题的更多信息。

为什么我没有 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/ 下的文件夹中的脚本 - 其中包含 15minhourlydailyweeklymonthly 脚本的文件夹。

要检查你的脚本是否可能运行,请使用 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]” 是什么意思?

这意味着你尝试安装的软件包在你配置的仓库中不存在。

也许你忘记将 communitytesting 添加到 /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 的内容

export GIT_EDITOR=vim

修复 lsusb / lspci 输出缺失

如果你在最小化安装上启动 lsusblspci,则没有设备描述,并且后者不存在。

这可以通过安装 usbutilshwdata 表来修复。

旧问题,不再频繁被问到

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 分钟,然后再检查。