Shell-Script
移植安裝腳本: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
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
是因為在兩種情況下都以相同的名稱打包。這並不總是正確的;給定的軟體可以在不同的發行版中以不同的名稱打包,甚至可以在給定發行版的不同版本中打包。)有關詳細資訊,請參閱Pacman Rosetta和Ubuntu RHEL 遷移指南。
相反,您可能想研究配置管理工具,它們將幫助您抽像出差異(或至少更穩健地處理它們)。
您的
if [ $(command -v yum) ]
測試存在缺陷,因為yum
可以安裝在 Debian 衍生產品(包括 Ubuntu)上;它的存在並不意味著它是包管理器。您可能應該檢測正在執行的作業系統並以此為基礎進行選擇;請參閱如何可靠地獲取作業系統的名稱?詳情。