RPM: Difference between revisions

From Leo's Notes
This page was last edited on 5 July 2017, at 20:01.
m Text replacement - "</code>" to "}}"
m formatting
Line 3: Line 3:


=== List installed packages ===
=== List installed packages ===
<syntaxhighlight lang="bash" enclose="div">
{{highlight|lang=terminal|code=
rpm -qa
# rpm -qa
</syntaxhighlight>
}}


=== Look for a specific package by name ===
=== Look for a specific package by name ===
<syntaxhighlight lang="bash" enclose="div">
{{highlight|lang=terminal|code=
rpm -qi <package name>
# rpm -qi <package name>
</syntaxhighlight>
}}


=== Determine the origin of a file ===
=== Determine the origin of a file ===
<syntaxhighlight lang="bash" enclose="div">
{{highlight|lang=terminal|code=
rpm -qf <path to file>
# rpm -qf <path to file>
</syntaxhighlight>
}}


eg:
eg:
<syntaxhighlight lang="bash" enclose="div">
{{highlight|lang=terminal|code=
# rpm -qf /etc/hosts
# rpm -qf /etc/hosts
setup-2.8.14-10.el6.noarch
setup-2.8.14-10.el6.noarch
</syntaxhighlight>
}}


=== Extracting a rpm package ===
=== Extracting a rpm package ===
Go into a directory and extract it using cpio. This will dump the files in the current directory, so make a directory to avoid having your files clobbered.
Go into a directory and extract it using cpio. This will dump the files in the current directory, so make a directory to avoid having your files clobbered.


<syntaxhighlight lang="bash" enclose="div">
{{highlight|lang=terminal|code=
mkdir package && cd package
# mkdir package && cd package
rpm2cpio ~/custom-package.rpm | cpio -idmv
# rpm2cpio ~/custom-package.rpm | cpio -idmv
</syntaxhighlight>
}}


=== Viewing / Editing rpm package scripts ===
=== Viewing / Editing rpm package scripts ===
Line 41: Line 41:


=== Remove a package with a broken uninstall script ===
=== Remove a package with a broken uninstall script ===
<syntaxhighlight lang="bash" enclose="div">
{{highlight|lang=terminal|code=
rpm -e --noscripts <package>
# rpm -e --noscripts <package>
</syntaxhighlight>
}}


== Building RPM ==
== Building RPM ==
Line 84: Line 84:


Example usage:
Example usage:
<syntaxhighlight lang="bash">
{{highlight|lang=bash|code=
%pre
%pre


Line 90: Line 90:
   # Initial install
   # Initial install
fi
fi
</syntaxhighlight>
}}


== Troubleshooting ==
== Troubleshooting ==
Line 99: Line 99:


... it probably means that you ran {{code|rpm}}. To fix this warning, clear {{code|yum}}'s cache and force a rebuild by running:
... it probably means that you ran {{code|rpm}}. To fix this warning, clear {{code|yum}}'s cache and force a rebuild by running:
<syntaxhighlight lang="bash" enclose="div">
{{highlight|lang=terminal|code=
yum clean all
# yum clean all
yum makecache
# yum makecache
</syntaxhighlight>
}}
 
 


[[Category:Linux]]
[[Category:Linux]]

Revision as of 20:01, 5 July 2017

Common RPM Tasks

Below are the common tasks I do with RPM.

List installed packages

# rpm -qa

Look for a specific package by name

# rpm -qi <package name>

Determine the origin of a file

# rpm -qf <path to file>

eg:

# rpm -qf /etc/hosts
setup-2.8.14-10.el6.noarch

Extracting a rpm package

Go into a directory and extract it using cpio. This will dump the files in the current directory, so make a directory to avoid having your files clobbered.

# mkdir package && cd package
# rpm2cpio ~/custom-package.rpm

Viewing / Editing rpm package scripts

Use the rpmrebuild utility to generate a .spec file from an existing RPM package. The spec file that gets generated will contain any scripts that may be bundled with rpm which you can modify.

# rpmrebuild -e -p some-package.rpm
## This should open your editor with the .spec file that was generated.
## Save and quit when done to have the option to rebuild the rpm.

Remove a package with a broken uninstall script

# rpm -e --noscripts <package>

Building RPM

Creating 32bit Dependency

In your RPM.spec file, have the following in your Requires line:

Requires: nss-pam-ldapd(x86-32)

Not:

Requires: nss-pam-ldapd.i686

Checking for Install/Upgrade/Remove in Install Scripts

To check whether a .rpm file is being installed, upgraded, or removed in the pre/post install scripts, check $1 against the table below:

$1 = 0 1 2
%pre Install Upgrade
%post Install Upgrade
%preun Uninstall Upgrade
%postun Uninstall Upgrade

Example usage:

%pre

if [ $1 -eq 1 ] ; then
  # Initial install
fi

Troubleshooting

Warning: RPMDB altered outside of yum.

If you ever get the error:

Warning: RPMDB altered outside of yum.

... it probably means that you ran rpm. To fix this warning, clear yum's cache and force a rebuild by running:

# yum clean all
# yum makecache