porting install scripts : can rpm replace apt?
rpm
is mostly equivalent to dpkg
, not apt
; the apt
equivalent is yum
(on RHEL and CentOS up to release 7), or dnf
(on Fedora, and RHEL and CentOS starting with release 8), or zypper
(on SuSE). For your specific commands:
sudo dnf distro-sync
sudo dnf install jq
sudo dnf clean all
sudo dnf autoremove
or
sudo yum upgrade
sudo yum install jq
sudo yum clean all
(This works because jq
is packaged under the same name in both cases. This isn’t always true; a given piece of software can be packaged under different names in different distributions or even different releases of a given distribution.)
See the Pacman Rosetta and the Ubuntu RHEL migration guide for details.
You might want to look into configuration management tools instead, they will help you abstract the differences away (or at least, deal with them more robustly).
Your if [ $(command -v yum) ]
test is flawed because yum
can be installed on Debian derivatives (including Ubuntu); its presence doesn’t mean it’s the package manager. You should probably detect the running operating system and base your choice on that; see How can I reliably get the operating system's name? for details.
No, the options and arguments to apt
and yum
are different, so are package names in a lot of cases.
You also seem to be getting rpm
and yum
confused, yum
is the equivalent of apt
, rpm
is the equivalent of dpkg
. dpkg
is the backend for apt
, rpm
is the backend for yum
.
You will have to look at the man
pages for both apt
and yum
to find the equivalent options. Alternativly you could look at a configuration management tool like puppet
which will abstract a lot of OS differences between distros, but this may be overkill for what you're doing.