是否可以在 Fedora 中安装 Debian 软件包?

是否可以在 Fedora 中安装 Debian 软件包?

我正在尝试编写一个使用一些非 shell 内置命令(例如expect)的脚本,并且我计划离线使用它。

通常,我可以expect使用 Fedora 安装sudo yum install expect或使用 Ubuntu 安装sudo apt install expect

但我想下载expect软件包,一切都取决于使用sudo apt-cache depends expect(学习后取决于使用...)sudo apt download <depends>

我尝试了一下并下载了一些.deb文件。我也尝试过这个:

  1. 从文件中提取data.tar文件.deb(我不想使用,dpkg -i <some_pkg.deb>因为我没有一直成功,我想在 Fedora 中使用它 - 它没有使用dpkg-)。

  2. 使用提取所有文件tar -xhf data.tar -C ~/demo

  3. 最后我使用手动复制系统目录中的所有文件cp -rPn ~/demo/bin/* /bin ~/demo/etc/* /etc ...

但是当我这样做时——特别是.deb在 Fedora 中使用这种类型的包——时,我得到了segmentation fault (core dumped)错误并且我的系统死机了。

我知道我正在尝试不推荐且危险的方法来实现我的目标,但是有没有办法(特别是备份命令,例如/usr/bin/expect及其所有依赖)来离线使用它?

答案1

您可以尝试alien它将在不同的包系统之间转换包。

它不是万无一失的,依赖关系将适用,并且可能存在其他问题,但值得一试。

答案2

不要尝试跨发行版混合和匹配软件包,除非在最简单的情况下,否则它不太可能可靠地工作。

相反,请使用目标发行版的工具。您已经了解了如何在基于 Debian 的发行版上下载软件包及其依赖项;这在基于 Fedora 的发行版上也是可能的。下载expect全部其依赖项,创建临时根目录和临时下载目录,并告诉下载安装在临时根目录中dnf所需的软件包:expect

mkdir /tmp/expectroot
mkdir /tmp/expectdeps
sudo dnf install --installroot /tmp/expectroot \
                 --downloadonly --downloaddir /tmp/expectdeps \
                 --releasever 32 expect

(酌情替换“32”)。

然后,无论目标系统上现有的依赖项如何,您都将在/tmp/expectdeps.

相关内容