当我尝试在 Fedora 中安装任何软件包(例如sudo apt-get upgrade
)时,我看到以下错误:
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
libc6
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
3 not fully installed or removed.
Need to get 0 B/2,814 kB of archives.
After this operation, 13.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
dpkg: warning: files list file for package 'gcc-10-base:amd64' missing; assuming package has no files currently installed
(Reading database ... 0 files and directories currently installed.)
Preparing to unpack .../libc6_2.31-13+deb11u2_amd64.deb ...
dpkg (subprocess): cannot set security execution context for maintainer script: Invalid argument
dpkg: error processing archive /var/cache/apt/archives/libc6_2.31-13+deb11u2_amd64.deb (--unpack):
new libc6:amd64 package pre-installation script subprocess returned error exit status 2
dpkg (subprocess): cannot set security execution context for maintainer script: Invalid argument
dpkg: error while cleaning up:
new libc6:amd64 package post-removal script subprocess returned error exit status 2
Errors were encountered while processing:
/var/cache/apt/archives/libc6_2.31-13+deb11u2_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
答案1
这 APT转速未维护且已损坏,您应该使用dnf
而不是apt
.
Fedora 文档:为什么 APT 存在于 Fedora 存储库中?
警告
Fedora 上无法使用 APT 来安装软件包,必须使用 DNF 来代替。
Fedora 上的 apt 命令在 Fedora 32 之前实际上是 APT-RPM,它基本上映射了普通的 apt 命令,以便它们与 Fedora 的 RPM 包管理系统一起使用。
然而,APT-RPM 缺乏维护、损坏且不安全,因此被放弃,转而使用实际的 Debian APT 软件。由于 APT 专门处理 .deb 软件包,因此 apt 命令不能再用于管理 Fedora 软件包。现在它的目的纯粹是作为人们在 Fedora 系统上为基于 Debian 的发行版构建软件包的工具。
答案2
“APT”工具系列来自 Debian 世界。在 Fedora 中,我们使用名为“DNF”(以前称为“Yum”)的类似工具。两者都有优点和缺点,但从用户级别(尤其是基本功能)来看,它们实际上是可以互换的。我们这里有一个备忘单:Fedora 上使用 DNF 的 APT 命令等效项,但简而言之:
apt upgrade
→dnf upgrade
apt install
→dnf install
apt remove
→dnf remove
apt search
→dnf search
主要要注意的是 Debian 世界中的软件包名称(特别是开发库名称,还有其他实用程序和工具)不一定匹配。所以,你可能会sudo apt install apcalc
在 Debian 上找到它,而结果却是sudo dnf install calc
在 Fedora Linux 上。
正如其他人指出的那样,有是Fedora Linux 中的一个apt
软件包,但它的存在是为了方便开发人员从 Fedora Linux 系统构建 Debian 软件包。它不适合典型的最终用户使用。
答案3
Fedora 中 apt 的目标是能够从 Debian 发行版下载软件包,而不是安装软件包。 apt 只是像 repos 一样读取 Debian,而不是 Fedora repos,因此,当您有一个只包含 debian 软件包的项目时,您可以在 Fedora 中轻松下载它。例如 jitsi、leap (riseup-vpn_0.19.11_amd64.deb、signal 或 slack
例如信号(https://signal.org/download/linux/)
作为根用户:
- 安装官方公共软件签名密钥
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
cat signal-desktop-keyring.gpg | tee -a /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
- 将存储库添加到您的存储库列表中
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' |\
tee -a /etc/apt/sources.list.d/signal-xenial.list
- 下载 signal-desktop_x.xx.x_amd64.deb
apt update
apt-get download signal-desktop
警告结束下一个命令的其他事情可能会损坏系统并使其不可恢复。
- 正如您可能怀疑的那样,在 Fedora 上安装它而不检查依赖项这是一个大黑客并且官方也不推荐,但以非常快的方式为我工作。
dpkg --force-depends -i signal-desktop_5.23.0_amd64.deb
desktop-file-install ./usr/share/applications/signal-desktop.desktop