移植安装脚本:rpm 可以替代 apt 吗?

移植安装脚本:rpm 可以替代 apt 吗?

我有以下 ubuntu 安装脚本:

#!/bin/bash

sudo apt update
sudo apt full-upgrade -y
sudo apt install jq
sudo apt autoclean -y
sudo apt autoremove

以下内容可以在 Fedora、Red Hat、Mageia 或其他基于 rpm 的发行版下工作吗

...或者语法是否需要改变更多?

#!/bin/bash

sudo rpm update
sudo rpm full-upgrade -y
sudo rpm install jq
sudo rpm autoclean -y
sudo rpm autoremove

我还可以做一些事情来达到以下效果吗? :

#!/bin/bash
if [ $(command -v yum) ]
then
    sudo yum update
    sudo yum full-upgrade -y
    sudo yum install jq
    sudo yum autoclean -y
    sudo yum autoremove
else
    sudo rpm update
    sudo rpm full-upgrade -y
    sudo rpm install jq
    sudo rpm autoclean -y
    sudo rpm autoremove
fi

答案1

rpm大部分相当于dpkg, 不apt;等效apt项是yum(在 RHEL 和 CentOS 上版本 7 之前),或者dnf(在 Fedora 上,以及 RHEL 和 CentOS 从版本 8 开始),或者zypper(在 SuSE 上)。对于您的特定命令:

sudo dnf distro-sync
sudo dnf install jq
sudo dnf clean all
sudo dnf autoremove

或者

sudo yum upgrade
sudo yum install jq
sudo yum clean all

(这jq是有效的,因为在两种情况下都以相同的名称打包。这并不总是正确的;给定的软件可以在不同的发行版甚至给定发行版的不同版本中以不同的名称打包。)

吃豆人罗塞塔Ubuntu RHEL 迁移指南了解详情。

您可能想研究一下配置管理工具,它们将帮助您抽象出差异(或者至少更稳健地处理它们)。

你的if [ $(command -v yum) ]测试是有缺陷的,因为yum可以安装在Debian衍生品上(包括Ubuntu);它的存在并不意味着它是包管理器。您可能应该检测正在运行的操作系统并根据该操作系统进行选择;看如何可靠地获取操作系统的名称?了解详情。

答案2

不, 和 的选项和参数aptyum不同的,在很多情况下包名称也是不同的。

你似乎也感到rpm困惑yumyum相当于aptrpm相当于dpkgdpkg是 的后端aptrpm是 的后端yum

您必须查看man两者的页面aptyum找到等效的选项。或者,您可以查看配置管理工具,puppet该工具可以抽象发行版之间的许多操作系统差异,但这对于您正在做的事情来说可能有点过头了。

相关内容