与其他发行版的比较
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 将更新 build-from-source 脚本,数据库更新比 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) (请注意,这将使您的错误报告对维护者无效)
dpkg-buildpackage -rfakeroot -uc -b
dpkg -i generatedpackagename
简化的源码编译
apt-get build-dep package1
apt-get -b source package1
(软件包使用上面的 -b 开关自动生成)
注意: 此过程可用于从 testing 和 unstable 反向移植软件包,只需将它们各自的源仓库添加到 sources.list,这类似于将 ~x86 添加到 Gentoo 中的 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
当使用 --purge 标志时,apk del 将删除配置文件。请确保您备份了配置文件。
您很可能希望在递归删除软件包之前快速查看依赖项。
要查看软件包的依赖项,请使用
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 添加到 default 运行级别,请执行
rc-update add sshd default
要从所有运行级别中删除 sshd,请执行
rc-update del sshd
Gentoo
rc-update
要将 cupsd 添加到 default 运行级别,请执行
rc-update add cupsd default
要从 boot 运行级别中删除 alsasound,请执行
rc-update del alsasound boot
另请参阅此 wiki 页面,了解关于 使用 rc-update 的 gentoo 运行级别管理
配置文件
/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 community 仓库中获得。(在 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.