tat*_*tsu 5 yum rpm apt shell-script software-distribution
我有以下 ubuntu 安装脚本:
#!/bin/bash
sudo apt update
sudo apt full-upgrade -y
sudo apt install jq
sudo apt autoclean -y
sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)
以下是否可以在 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
Run Code Online (Sandbox Code Playgroud)
我也可以做些什么来达到以下效果吗?:
#!/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
Run Code Online (Sandbox Code Playgroud)
Ste*_*itt 14
rpm大体上等价于dpkg,不apt;的apt当量是yum(在RHEL和CentOS以释放7),或dnf(在Fedora,和RHEL和开始释放8 CentOS的),或zypper(在SuSE) 。对于您的特定命令:
sudo dnf distro-sync
sudo dnf install jq
sudo dnf clean all
sudo dnf autoremove
Run Code Online (Sandbox Code Playgroud)
或者
sudo yum upgrade
sudo yum install jq
sudo yum clean all
Run Code Online (Sandbox Code Playgroud)
(这jq是可行的,因为在两种情况下都以相同的名称打包。这并不总是正确的;给定的软件可以在不同的发行版甚至给定发行版的不同版本中以不同的名称打包。)
有关详细信息,请参阅Pacman Rosetta和Ubuntu RHEL 迁移指南。
您可能想要查看配置管理工具,它们将帮助您抽象出差异(或者至少,更稳健地处理它们)。
您的if [ $(command -v yum) ]测试有缺陷,因为yum可以安装在 Debian 衍生产品(包括 Ubuntu)上;它的存在并不意味着它是包管理器。您可能应该检测正在运行的操作系统并以此为基础进行选择;请参阅如何可靠地获取操作系统的名称?详情。
不,选项和参数apt,并yum是不同的,所以在很多情况下,包名。
您也似乎变得rpm和yum困惑,yum是等效的apt,rpm是等效的dpkg。dpkg是 的后端apt,rpm是 的后端yum。
您必须查看man两者的页面apt并yum找到等效的选项。或者,您可以查看配置管理工具,例如puppet它可以抽象出发行版之间的许多操作系统差异,但这对于您正在做的事情来说可能有点过头了。
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |