高山 Linux:FAQ

Alpine Linux 是一个独立的、非商业的、通用 Linux 发行版,专为欣赏安全性、简洁性和资源效率的高级用户而设计。
这是关于 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 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 的内容
修复缺少 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 需要运行一段时间才能确信它已同步。在此之前,它将设置一个标志 “时钟未同步”,并且 Windows 在尝试与您的 openntpd 服务器同步时会报告错误。
唯一要做的就是等待,做其他事情 15-20 分钟,然后检查。