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

3 fedora debian dpkg apt

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

通常情况下,我可以安装expect使用的Fedorasudo 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 ...

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

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

Edu*_*ani 5

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

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


Ste*_*itt 5

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

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

mkdir /tmp/expectroot
mkdir /tmp/expectdeps
sudo dnf install --installroot /tmp/expectroot \
                 --downloadonly --downloaddir /tmp/expectdeps \
                 --releasever 32 expect
Run Code Online (Sandbox Code Playgroud)

(酌情替换“32”)。

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