高山 Linux:FAQ

来自 高山 Linux

Alpine Linux 是一个独立的、非商业的、通用 Linux 发行版,专为欣赏安全性、简洁性和资源效率的高级用户而设计。

这是关于 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 元软件包为所有当前已安装的软件包安装文档子软件包,如果不可用,则安装 mandocdocs 元软件包确保为将来可能添加/删除的任何软件包自动安装或删除文档子软件包。

# apk add docs

请记住,并非所有软件包都有相应的文档软件包,即使有,也可能不是 man pages 格式。

设置

运行 setup-alpinesetup-disk 时,sysdatadiskless 之间有什么区别?

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]” 是什么意思?

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

也许您忘记将 community 或 testing 添加到 /etc/apk/repositories

或者软件包在 pinned repository 中,而您忘记在软件包后添加 repo 标签?示例

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 需要运行一段时间才能确信它已同步。在此之前,它将设置一个标志 “时钟未同步”,并且 Windows 在尝试与您的 openntpd 服务器同步时会报告错误。

唯一要做的就是等待,做其他事情 15-20 分钟,然后检查。