与其他发行版的比较
Alpine Linux 与其他发行版有一些相似之处和不同之处。本页面旨在帮助来自其他发行版的新 Alpine Linux 用户快速上手。
软件包管理
Alpine 的软件包管理器是 Alpine Package Keeper。本节比较 apk 的使用方式,并与其他来自 Debian、Fedora、Arch 和 Void 的工具进行比较。
本节使用以下来自流行的 Linux 发行版的软件包管理器进行比较
对比图/Rosetta Stone
此图表显示了 Alpine 中完成一些标准操作的方式与其他发行版的比较。
操作 | Alpine | Arch | Gentoo | Debian/Ubuntu | Fedora | VoidLinux |
---|---|---|---|---|---|---|
更新软件包数据库 | apk update |
pacman -Sy |
emerge --sync |
apt update |
dnf update |
xbps-install -S |
显示可用更新 | apk version -l '<' |
pacman -Qu |
emerge --deep --update --pretend @world |
apt upgrade --simulate |
dnf list updates |
xbps-install -n -u |
安装软件包 | apk add [软件包名称] |
pacman -S [软件包名称] |
emerge [软件包名称] |
apt install [软件包名称] |
dnf install [软件包名称] |
xbps-install [软件包名称] |
更新所有已安装软件包 | apk upgrade -U -a |
pacman -Su |
emerge --update --deep @world |
apt upgrade |
dnf update |
xbps-install -u |
搜索软件包数据库 | apk search -v '[字符串]*' |
pacman -Ss [字符串] |
emerge --search [字符串] |
apt search [字符串] |
dnf search [字符串] |
xbps-query -Rs [字符串] |
移除软件包 | apk del [软件包名称] |
pacman -R [软件包名称] |
emerge --depclean [软件包名称] |
apt remove [软件包名称] |
dnf remove [软件包名称] |
xbps-remove [软件包名称] |
更新软件包数据库
Gentoo 将更新源代码构建脚本,数据库更新比 Debian 或 Alpine 的数据库更新花费更多时间。
Alpine
apk update
Arch
pacman -Sy
Debian
apt update
Gentoo
emerge --sync
显示可用更新
显示哪些软件包有可用更新
Alpine
apk version -v
或
apk version -v -l '<'
Gentoo
emerge --deep --update --pretend @world
Debian
apt list --upgradable
更新特定软件包
Alpine
apk add -u package1 package2
或
apk upgrade package1 package2
Debian
apt install package1 package2
Gentoo
emerge --update package1 package2
安装软件包
Alpine
apk add package1 package2
关于源码编译,请参阅 Aports tree 和 abuild 工具。
Gentoo
emerge package1 package2
Debian
apt-get install package1 package2
Debian 源码编译
apt-get build-dep package1
apt-get source package1
(可选:通过修改 debian/rules makefile 自定义构建)(或设置环境变量,如 DEB_BUILD_OPTIONS)(请注意,这将使您的 bug 报告对维护者无效)
dpkg-buildpackage -rfakeroot -uc -b
dpkg -i generatedpackagename
简化源码编译
apt-get build-dep package1
apt-get -b source package1
(软件包使用上面的 -b 开关自动生成)
注意: 此过程可用于从 testing 和 unstable 向后移植软件包,只需将它们各自的源仓库添加到 sources.list,这类似于在 Gentoo 中将 ~x86 添加到 package.keywords。这将在下面的“架构与仓库”部分进一步探讨。
重新安装特定软件包
Alpine
apk del package1 package2 && apk add package1 package2
或
apk fix package1 package2
Gentoo
emerge --oneshot package1 package2
Debian
apt-get install --reinstall package1 package2
注意:您 很少 需要在 Debian 上重新安装软件包
搜索软件包数据库
Alpine
Alpine 只会搜索软件包名称。
apk search searchword
Gentoo
要搜索软件包名称和描述
emerge --searchdesc searchword
注意: 在 Gentoo 上,实际上最好安装并使用 eix 软件包进行搜索。您可以这样使用它们
eix searchword
Debian
apt-cache search searchword
emerge 和 apt-cache search 都支持正则表达式。
要在 Debian 上获取详细的软件包信息(仅在软件包名称中搜索)
apt-cache search --full --names-only searchword
移除软件包
Alpine
apk del package1 package2
apk del 当使用 --purge 标志时将删除配置文件。请确保您已备份配置文件。
您很可能希望在递归删除软件包之前快速查看依赖项。
要查看软件包的依赖项,请使用
apk info -R package1 package2
要查看软件包是否被其他软件包需要(是否是其他软件包的依赖项),请使用
apk info -r package1 package2
Gentoo
在 gentoo 上移除软件包的正确方法。
emerge --depclean package1 package2
如果您知道自己在做什么,您可以跳过依赖项检查,并可能使您的系统处于损坏状态。
emerge --unmerge package1 package2
Debian
apt-get remove package1 package2
或连同所有配置文件一起删除
apt-get remove --purge package1 package2
仅下载软件包
这可能很有用,例如,如果您使用的是拨号连接,并且想要先下载所有内容,然后再安装。
Alpine
apk fetch package1 package2
Gentoo
emerge --fetchonly package1 package2
Debian
apt-get install --download-only package1 package2
清理已下载软件包
为安装而下载的压缩包很容易占用千兆字节的存储空间。
Alpine
Alpine 将自动清理软件包。
Gentoo
以下命令将保持 /var/cache/distfiles/ 文件夹完整,同时删除所有子项。
find /var/cache/distfiles/ -mindepth 1 -delete
要仅删除过时的软件包,您需要安装 gentoolkit 软件包并使用 eclean
eclean distfiles
清理来自 emerging 软件包的临时文件
rm -rf /var/tmp/portage/*
Debian
apt-get clean
仅删除过时的软件包
apt-get autoclean
反向依赖
Alpine
apk-tools 将处理反向依赖。
Gentoo
Portage 的最新版本包含使用 preserved-libs 功能的库跟踪和保留。Portage 将通知您运行
emerge @preserved-rebuild
以帮助重建可能已损坏的二进制文件。
Debian
反向依赖由 dpkg 处理。
运行级别与 Initscripts
目录与文件
在 Gentoo 中,运行级别具有相同的名称,但这些名称被映射到更易于理解的名称(在 /etc/inittab 中):“boot”、“default”、“nonetwork”,并可以选择添加更多。代表它们的目录在 /etc/runlevels/ 中
- /etc/runlevels/boot
- /etc/runlevels/default
- /etc/runlevels/nonetwork
在 Gentoo 中,如果服务未在运行级别中显式启动,则在切换到该运行级别时会停止!
在 Gentoo 中,在哪些运行级别中启动(和停止)哪些内容由运行级别目录中指向 /etc/init.d/ 中脚本的链接控制,例如:Gentoo
$ ls -l /etc/runlevels/boot/hostname lrwxrwxrwx 1 root root 20 Mar 25 2004 /etc/runlevels/boot/hostname -> /etc/init.d/hostname
Alpine
在 Alpine 中,运行级别的工作方式与 Gentoo 相同
- /etc/runlevels/boot
- /etc/runlevels/default
- /etc/runlevels/sysinit
- /etc/runlevels/nonetwork
- /etc/runlevels/shutdown
运行级别管理
要管理在哪些运行级别中启动哪些内容,请使用以下命令
Alpine
要查看运行级别中服务的当前状态,请执行
rc-status
要将 sshd 添加到默认运行级别,请执行
rc-update add sshd default
要从所有运行级别中删除 sshd,请执行
rc-update del sshd
Gentoo
rc-update
要将 cupsd 添加到默认运行级别,请执行
rc-update add cupsd default
要从 boot 运行级别中删除 alsasound,请执行
rc-update del alsasound boot
另请参阅关于使用 rc-update 进行 gentoo 运行级别管理的 wiki 页面
配置文件
/etc/portage/make.conf 和 use 标志
虽然在 Gentoo 中有大量配置文件控制软件包管理系统的行为,但在 Debian 中相对较少,因为不需要指示如何编译下载的软件并对其进行调整/更改。在 Gentoo 中,/etc/portage/make.conf 文件用于许多配置;这包括 USE 标志,它影响编译软件包的哪些元素,以及要构建支持哪些库 - 常见的 USE 标志(USE 或 -USE 用于专门否定支持)包括 Gnome 用户的 'gtk gnome'(以及相应的 -qt -kde -arts)和 KDE 用户的 'qt kde arts'。Gentoo 用户的完整 use 标志集可能如下所示
USE="-kde -arts -qt xv truetype bluetooth crypt slang readline gpm berkdb mmx gdbm tcpd pam libwww ssl nls ethereal perl python esd gif imlib sdl oggvorbis mpeg gnome gtk X motif opengl avi png tiff nptl pcmcia nptl ldap eds"
架构与仓库
Gentoo
同样在 /etc/portage/make.conf 中是 ACCEPT_KEYWORDS 设置,对于基于 X86 的处理器,有两个设置,x86 用于更稳定的软件包,~x86 用于前沿软件包。但是,不建议在 /etc/portage/make.conf 中进行此更改。而是在 /etc/portage/package.accept_keywords 中为每个软件包配置此设置。在该文件中放入一行命名软件包(例如 'app-foo/bar')就足够了。该文件可能如下所示
app-crypt/gpg-agent app-text/docbook-xsl-stylesheets =app-text/docbook-xml-dtd-4.3-r1
最后一行表示,_只有_ 版本 4.3-r1 应该被取消屏蔽。较旧和较新的版本仍将被忽略。
非 x86 用户请注意: 关键字 x86 和 ~x86 当然可以用 sparc 和 ~sparc 等替换。
Debian
在 Debian 中设置此项稍微复杂一些,通过在 /etc/apt/sources.list 中设置不同的“仓库”来完成 - 以及要用于软件包的“树”;在 Debian 中,这些是 stable、testing 和 unstable。Debian testing 用户的 /etc/apt/sources.list 文件可能如下所示
deb https://mirrors.kernel.org/debian testing main non-free contrib deb ftp://ftp.nerim.net/debian-marillat testing main deb https://security.debian.org testing/updates main contrib non-free
或者,/etc/apt/sources.list 可以包含任何树的任意数量的仓库,以及 /etc/apt/apt.conf 中的默认树(可以使用命令行上的 -t 开关覆盖)。
APT::Default-Release "testing";
每个软件包的设置都放在 /etc/apt/preferences 中,有点像 Gentoo 的 /etc/portage/package.keywords。
网络
Alpine
Alpine 使用 /etc/network/interfaces,类似于 Debian。Alpine 默认使用 busybox 的实现。
/etc/network/interfaces:
auto eth0 iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 auto eth0:0 iface eth0:0 inet static address 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 # etc.
Gentoo
Gentoo 使用 netifrc。此软件包也可在 edge 社区仓库中找到。(在 Alpine 上使用风险自负。)
/etc/conf.d/net:
config_eth0="192.168.1.100 netmask 255.255.255.0 192.168.2.100 netmask 255.255.255.0" routes_eth0="default via 192.168.1.1"
请注意,这最近已更改。有关更多信息,请参阅 https://wiki.gentoo.org/wiki/Handbook:X86?part=4
Debian
/etc/network/interfaces:
auto eth0 iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 auto eth0:0 iface eth0:0 inet static address 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 # etc.