Shell-Script

移植安裝腳本:rpm 可以替換 apt 嗎?

  • April 17, 2019

我有以下 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

rpm主要等同於dpkg,不是aptapt等效項是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是因為在兩種情況下都以相同的名稱打包。這並不總是正確的;給定的軟體可以在不同的發行版中以不同的名稱打包,甚至可以在給定發行版的不同版本中打包。)

有關詳細資訊,請參閱Pacman RosettaUbuntu RHEL 遷移指南

相反,您可能想研究配置管理工具,它們將幫助您抽像出差異(或至少更穩健地處理它們)。

您的if [ $(command -v yum) ]測試存在缺陷,因為yum可以安裝在 Debian 衍生產品(包括 Ubuntu)上;它的存在並不意味著它是包管理器。您可能應該檢測正在執行的作業系統並以此為基礎進行選擇;請參閱如何可靠地獲取作業系統的名稱?詳情。

引用自:https://unix.stackexchange.com/questions/512799