Notes on converting from RPM to DPKG
Some notes on making the transition from RPM (RedHat Package Manager, e.g. SuSE) to DPKG (Debian PacKaGe, e.g. Ubuntu).
Package status
rpm -q package_name dpkg -l package_name
List files in package
rpm -ql package_name rpm -qlf filename dpkg -L package_name dpkg -c filename apt-file list package_name [even if package not installed, may need "apt-file update" first]
Info on package
rpm -qi package_name rpm -qip package_file_name rpm -qif filename rpm -qf --changelog filename apt-cache show package_name [even if package not installed] dpkg-query -l package_name dpkg-query -s package_name dpkg -s package_name
There is no single command for extracting a changelog from a Debian package.
Package owning file
rpm -qf filename dpkg -S filename apt-file search filename [even if package not installed / file not present. May need "apt-file update" first]
List all installed packages
rpm -qa dpkg -l apt list --installed
Install package
rpm -i package_file_name dpkg -i package_file_name [no dependency checking] apt-get install package_name [will download package and dependencies]
Download package
apt-get install --download-only package_name apt-get download package_name
The first downloads uninstalled dependencies as well, and places the result
in /var/cache/apt/archives
. The second needs a recent
version of apt-get
, and downloads only the package to the
current directory.
Remove package
rpm -e package_name apt-get purge package_name dpkg --remove package_name
Basic extraction
A Debian package is an ar archive whose components are compressed, most probably with xz or gz. Extraction of the main files can be achieved with
ar p package.deb data.tar.xz | tar --xz -xf -
(replace xz with gz for older archives)
A rpm package contains a cpio archive in a wrapper, and the use of a tool such as rpm2cpio (perl, and packaged for many distributions) or rpm2dir (C) is necessary to extract this. If rpm2cpio is available, then
rpm2cpio package.rpm | cpio -id
should work. Note that the cpio archive is stored compressed, and that rpm2cpio knows how to decompress it. However, old versions of rpm2cpio might not work with modern rpms. Also there are many programs called rpm2cpio, some written in languages other than perl.
Mirroring repositories and architectures
One cannot successfully point apt at a repository which does not contain all the architectures which one claims to be using. So, for a machine which is natively amd64, and which has suffered
dpkg --add-architecture i386
attempts to point apt at a mirror containing amd64 only are unlikely to work.