mklpmcompat — Update RPM resources
mklpmcompat
[--force]
The mklpmcompat script allows LPMtool to be usable on platforms that use RPM as a primary package manager. This a temporary, stop-gap measure mechanism that permits development and further work on LPMtool. Use mksyscompat instead of mklpmcompat on systems that do not use RPM as a primary package manager. The mklpmcompat script runs the following commands:
All resources and files installed by all LPMtool packages (except for any package called “lpmcompat”) are extracted.
An RPM package called “lpmcompat” gets built. The package does not install any files. The “lpmcompat” package only contains virtual resources downloaded from the package database maintained by the lpm command.
The new “lpmcompat” RPM package is installed, replacing any older “lpmcompat” package.
All resources and files installed by all existing RPM packages (except for any package called “lpmcompat”) are extracted from the RPM database.
A LPMtool package called “lpmcompat” gets built. The package does not install any files. The “lpmcompat” package only contains virtual resources downloaded from the RPM database.
The new “lpmcompat” package is installed, replacing any older “lpmcompat” package.
This prevents accidental installation of LPMtool packages that overwrite files installed by RPM, and allows the installation of LPMtool packages that require resources installed by RPM.
Unfortunately, it's not possible to prevent RPM from clobbering individual files installed by lpm. Use care to avoid installing RPM packages that overwrite files installed by LPMtool. Rerun the mklpmcompat script often to try and keep both databases in sync.
If RPM packages were removed or installed that somehow
break
dependencies of LPMtool packages, the new “lpmcompat” package
will not install, by default, due to a dependency conflict.
Write down what dependencies were broken,
and figure out what needs to be fixed.
If necessary,
rerun mklpmcompat
with the --force
option to force an update
of the “lpmcompat” package and ignore the dependency conflict,
as a temporary stop-gap solution
(--force
will NOT fix the
dependency conflict, it's only a temporary band-aid to cover the bleeding
for a short time before the final surgery that fixes the real issue).
mklpmcompat is very resource intensive. This script essentially downloads and installs a database of resources that represent a full, complete, system. A typical RPM database tracks over a thousand packages. All the information from those packages gets merged into a single humongous “mklpmcompat” package, which then replaces an older, humongous, package.
mklpmcompat was observed swallowing more than 200MB of RAM, and take almost three minutes to chew through an average RPM database on a fairly beefy Opteron server.