Header Shadow Image


rpmlib(X-CheckUnifiedSystemdir) is needed by filesystem

The error

rpmlib(X-CheckUnifiedSystemdir) is needed by filesystem

came about when trying to upgrade from FC16 ( Fedora Core 16 ) to Fedora Core 19 ( FC19 ).  There is a fundamental filesystem change that has been done impacting every rpm on the new Fedora Linux distribution.  More towards the error, it came about when trying to upgrade rpm using yum upgrade rpm.  There was no simple solution.  It was a catch-22 situation.  We needed filesystem FC19 to get rpm FC19 upgraded.  However, we needed filesystem FC19 in order to get rpm FC19.  This is the case when upgrading to FC17 and up.  

What we needed to do was to obtain a number of FC19 packages on our Fedora Core 16 system then unpackage them manually and copy them over.  Here are the basic steps of doing this however we would also recommend reviewing the above link for more on the entire upgrade process.  One important note to keep in mind is that this will get you past the mentioned error but you'll likely see others you'll need to resolve.  This is also not an easy fix.  Before you try this solution, please visit the Fedora Howto Page to upgrade from  FC16 to see for alternative ways.  If that fails, come back here.

Create a folder on your system that will contain files for your manual upgrade.  Then, AND THIS IS IMPORTANT download sash using yumdownloader or yum search sash and install that package.  Then download the following files off the web for this exercise (since source web links change often we won't provide one explicitly.  Any reputable source will do.):

rpm-4.11.0.1-2.fc19.i686.rpm
rpm-build-4.11.0.1-2.fc19.i686.rpm
rpm-build-libs-4.11.0.1-2.fc19.i686.rpm
rpm-python-4.11.0.1-2.fc19.i686.rpm
rpm-libs-4.11.0.1-2.fc19.i686.rpm
rpm-devel-4.11.0.1-2.fc19.i686.rpm

glibc-2.17-4.fc19.i686.rpm
libdb-5.3.21-11.fc19.i686.rpm

(Optional)
fedora-
release-notes-17.95.0-1.fc19.noarch.rpm
fedora-release-19-2.noarch.rpm

And extract them to the current temp folder then copy them using these steps (NOTE: Keep in mind this is a delicate operation and you need to be familiar with quite a bit of UNIX commands for this to work.  These steps will temporarily break RPM until the process is fully done.  Add a -i to the /bin/cp commands to see any overwrites.):

rpm2cpio <RPM .rpm's> | cpio -idmv
/bin/cp -Rp ./usr/* /usr/; /bin/cp -Rp ./etc/* /etc/; /bin/cp -Rp ./var/* /var/; /bin/cp -Rp ./bin/* /bin/

We use cp -Rp becuase there were alot of confirmations. Note we are copying like directory to it's counterpart in /.  Ensure all the ones we are copying exist in the temporary folder you created earlier.  However as we mentioned, it will break RPM because we are overwriting the older copies of the same files from an older rpm installation without using yum / rpm and you'll get this:

# rpm -aq
illegal flag specified to DB_ENV->set_timeout
Segmentation fault
#

This message is coming from the libdb:

# strings /usr/lib/libdb* | grep -i "illegal flag specified"
BDB0055: illegal flag specified to %s

BDB0055: illegal flag specified to %s
BDB0055: illegal flag specified to %s

#

which we haven't updated yet and is what the new FC19 version of rpm we just extracted is looking for.

NOTE:  If you do not get the rpm-build-libs FC19  library, you'll also get this along the way:

# rpm -aq
rpm: error while loading shared libraries: librpm.so.2: cannot open shared object file: No such file or directory
#

However, rpm2cpio will also be broken but we need it for our next step.  We can restore temporary functionality of rpm2cpio by relinking to the lower version library ( This is in /usr/lib and not /lib.  We can do this because rpm2cpio isn't using any of the newer features in the higher end library.  We know this because rpm2cpio works after we relink below. ):

# ls -altri libdb*

787025 -rwxr-xr-x 1 root root 1551836 Feb  8  2011 libdb-4.7.so

785046 -rwxr-xr-x 1 root root 1668908 Feb  8  2011 libdb_cxx-4.7.so

788599 -rwxr-xr-x 1 root root 1612404 Feb  8  2011 libdb-4.8.so

787003 -rwxr-xr-x 1 root root 1805292 Sep 20  2011 libdb-5.2.so

786395 -rwxr-xr-x 1 root root  297128 Sep 13  2012 libdbus-1.so.3.5.6

786391 lrwxrwxrwx 1 root root      18 Jul 19 12:16 libdbus-1.so.3 -> libdbus-1.so.3.5.6

790180 lrwxrwxrwx 1 root root      18 Jul 19 12:39 libdbus-1.so -> libdbus-1.so.3.5.6

# ln -s libdb-5.3.so ./libdb-5.2.so

ln: failed to create symbolic link `./libdb-5.2.so': File exists

# ln -s libdb-5.2.so ./libdb-5.3.so

# ls -altri libdb*

787025 -rwxr-xr-x 1 root root 1551836 Feb  8  2011 libdb-4.7.so

785046 -rwxr-xr-x 1 root root 1668908 Feb  8  2011 libdb_cxx-4.7.so

788599 -rwxr-xr-x 1 root root 1612404 Feb  8  2011 libdb-4.8.so

787003 -rwxr-xr-x 1 root root 1805292 Sep 20  2011 libdb-5.2.so

786395 -rwxr-xr-x 1 root root  297128 Sep 13  2012 libdbus-1.so.3.5.6

786391 lrwxrwxrwx 1 root root      18 Jul 19 12:16 libdbus-1.so.3 -> libdbus-1.so.3.5.6

790180 lrwxrwxrwx 1 root root      18 Jul 19 12:39 libdbus-1.so -> libdbus-1.so.3.5.6

784930 lrwxrwxrwx 1 root root      12 Aug  9 16:45 libdb-5.3.so -> libdb-5.2.so

#

When trying to use RPM again, just to check, if you get this error its because we haven't completed the process yet and RPM for FC19 is trying to use non FC19 libraries and functions that don't exist.  We'll add these libraries next.  Here's the error you may see (And that is also because we have libdb-5.3.so -> libdb-5.2.so to restore functionality to rpm2cpio ):

# rpm -aq
error: bad option 'archcolor' at (null):91
error: bad option 'archcolor' at (null):91
error: cannot open /usr/lib/rpm/rpmrc at /usr/lib/rpm/redhat/rpmrc:1: No such file or directory
BDB1565 DB_ENV->stat_print: method not permitted before handle's open method
Segmentation fault
#

# strings /lib/libdb-5.2.so|grep -i "method not permitted"       # This is the old library being used temporarily where this error is coming from.
BDB1564 %s: method not permitted when environment specified
BDB1565 %s: method not permitted %s handle's open method
BDB3029 DB_ENV->memp_fcreate: method not permitted when replication is configured
BDB3001 %smethod not permitted when replication is configured
#

Next we do the same kind of restoration for libdb-5.3.21-11.fc19.i686.rpm and glibc-2.17-4.fc19.i686.rpm to satisfy rpm above:

# rpm2cpio <LIBDB rpm> | cpio -idmv
./usr/lib/libdb-5.3.so
./usr/lib/libdb-5.so                                  # This is a link
./usr/share/doc/libdb-5.3.21
./usr/share/doc/libdb-5.3.21/LICENSE
./usr/share/doc/libdb-5.3.21/README
3618 blocks
#

Then copy the .so files to their respective folders under /. Again, use cp -iRp <SOURCE> <TARGET> so it tells you if a copy exists and asks you if you wish to overwrite.  Cancel the copy and check that it's not a link if cp asks to confirm an overwrite.  If you're copying the above libdb-5.3.so copy them to the same folder path that they extracted to in your work / temporary folder ( ie cp -iRp ./usr/lib/libdb-5.3.so /usr/lib/libdb ).  They should look like this when done:

# ls -al /usr/lib/libdb-5*
lrwxrwxrwx 1 root root      22 Jul 19 12:17 /usr/lib/libdb-5.2.so -> ../../lib/libdb-5.2.so
-rwxr-xr-x 1 root root 1847852 Aug  9 17:24 /usr/lib/libdb-5.3.so
-rwxr-xr-x 1 root root      12 Aug  9 17:24 /usr/lib/libdb-5.so -> 
libdb-5.3.so
#

Once you do this, the new error will be ( Yes, our reward is another error but it is a different one, in orange, which means: progress ):

# ls -altri /lib/libdb*
787025 -rwxr-xr-x 1 root root 1551836 Feb  8  2011 /lib/libdb-4.7.so
785046 -rwxr-xr-x 1 root root 1668908 Feb  8  2011 /lib/libdb_cxx-4.7.so
788599 -rwxr-xr-x 1 root root 1612404 Feb  8  2011 /lib/libdb-4.8.so
787003 -rwxr-xr-x 1 root root 1805292 Sep 20  2011 /lib/libdb-5.2.so
786395 -rwxr-xr-x 1 root root  297128 Sep 13  2012 /lib/libdbus-1.so.3.5.6
786391 lrwxrwxrwx 1 root root      18 Jul 19 12:16 /lib/libdbus-1.so.3 -> libdbus-1.so.3.5.6
790180 lrwxrwxrwx 1 root root      18 Jul 19 12:39 /lib/libdbus-1.so -> libdbus-1.so.3.5.6
784930 lrwxrwxrwx 1 root root      12 Aug  9 17:04 /lib/libdb-5.3.so -> libdb-5.2.so
# cd /lib/
# unlink /lib/libdb-5.3.so
# rpm -aq
rpm: /lib/libc.so.6: version `GLIBC_2.17' not found (required by /usr/lib/libdb-5.3.so)
# pwd
/lib
# ln -s libdb-5.2.so libdb-5.3.so                # Only to show how the below error in red occurs.
# rpm -aq

error: bad option 'archcolor' at (null):91
error: bad option 'archcolor' at (null):91
error: cannot open /usr/lib/rpm/rpmrc at /usr/lib/rpm/redhat/rpmrc:1: No such file or directory
BDB1565 DB_ENV->stat_print: method not permitted before handle's open method
Segmentation fault
# unlink /lib/libdb-5.3.so
# rpm -aq
rpm: /lib/libc.so.6: version `GLIBC_2.17' not found (required by /usr/lib/libdb-5.3.so)
#

Note the message /usr/lib/libdb-5.3.so which is the new libdb we just extracted with rpm2cpio and copied ro /usr/lib.  This is good.  This is telling us we have the FC19 rpm and the FC19 libdb and now we need GLIBC: glibc-2.17-4.fc19.i686.rpm:  So we extract the files of this package with rpm2cpio again (There will be a few files.  Ensure ./etc ./lib ./sbin ./usr ./var are non existent or empty before you do this. ):

# rpm2cpio <GLIBC rpm> | cpio -idm    # glibc-2.17-4.fc19.i686.rpm
# pwd
/Files/F13toF18
# ls -ald etc usr var sbin lib
drwxr-xr-x 3 root root 4096 Aug  9 18:37 etc
drwxr-xr-x 4 root root 4096 Aug  9 18:37 lib
drwxr-xr-x 2 root root 4096 Aug  9 18:37 sbin
drwxr-xr-x 6 root root 4096 Aug  9 18:37 usr
drwxr-xr-x 4 root root 4096 Aug  9 18:37 var
#

This is the most tricky part of the operation.  Here we cannot just copy the above 5 folders.  We need to copy some manually using a utility mentioned above called sash.  This is a standalone shell statically linked.  In other words, it is a standalone shell that does not rely on external sources for it's commands to work.  Ensure you have this sash utility before proceeding here because glibc is used by commands like cp, ls, ln, mv etc and copying it here manually will bring you to the bring of destruction of your system.  You may also loose your ssh session here however we managed to reestablish it:

# sash
Stand-alone shell (version 3.7)
> -cp
usage: -cp srcName … destName
> -ls
.
..
16
18
19
> -cp ./lib/* /lib/
/lib//i686: Is a directory
/lib//rtkaio: Is a directory
> ls                                             # This should now work.

# for KEY in $( ls -d etc var usr sbin); do /bin/cp -Rp ./$KEY/* /$KEY/; done
#

NOTE: If we had not done the above and used this line instead:

# rpm -aq
error: bad option 'archcolor' at (null):91
error: bad option 'archcolor' at (null):91
error: cannot open /usr/lib/rpm/rpmrc at /usr/lib/rpm/redhat/rpmrc:1: No such file or directory
error: db5 error(-30969) from dbenv->open: BDB0091 DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages index using db5 –  (-30969)
error: cannot open Packages database in /var/lib/rpm
error: db5 error(-30969) from dbenv->open: BDB0091 DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages database in /var/lib/rpm
# for KEY in $( ls -d etc var usr sbin lib); do /bin/cp -Rp ./$KEY/* /$KEY/; done
/bin/cp: cannot create regular file `/lib/ld-2.17.so': Text file busy
Bus error
/bin/cp: error while loading shared libraries: /lib/libc.so.6: file too short
/bin/cp: error while loading shared libraries: /lib/libc.so.6: file too short
/bin/cp: error while loading shared libraries: /lib/libc.so.6: file too short
#
#
#
# rpm -aq
rpm: error while loading shared libraries: /lib/libc.so.6: file too short
#
#
# rpm -aq
rpm: error while loading shared libraries: /lib/libc.so.6: file too short
# ls -al /lib/libc.so.6
ls: error while loading shared libraries: /lib/libc.so.6: file too short
#

We would have broken alot of commands.  We would still be able to recover from this using sash to copy the ./lib to /lib however.  Possibly copying the ./lib folder first in the loop (ls -d lib etc var usr sbin) would have worked as expected but we have not tried that in our panic stricken state.  ;)

We copy in that sequence because the new binary commands require the new ./lib files but that is not available yet, hence the manual copy using sash.  The ./lib subfolders can be copied using regular cp at this point since it will work now.  Since RPM will still complain about some of the libraries we have (see below) due to linking as well, we'll individually identify them, run strings to search for the error message we are getting in each of the libraries RPM links too then update them accordingly:

# ldd /bin/rpm
        linux-gate.so.1 =>  (0xb7768000)
        librpm.so.3 => /usr/lib/librpm.so.3 (0xb76c9000)
        librpmio.so.3 => /usr/lib/librpmio.so.3 (0xb769f000)
        libselinux.so.1 => /lib/libselinux.so.1 (0xb767f000)
        libcap.so.2 => /lib/libcap.so.2 (0xb767a000)
        libacl.so.1 => /lib/libacl.so.1 (0xb7671000)
        libdb-5.3.so => /usr/lib/libdb-5.3.so (0xb74b0000)
        libbz2.so.1 => /lib/libbz2.so.1 (0xb74a0000)
        libelf.so.1 => /usr/lib/libelf.so.1 (0xb7489000)
        liblzma.so.5 => /usr/lib/liblzma.so.5 (0xb745f000)
        liblua-5.1.so => /usr/lib/liblua-5.1.so (0xb7433000)
        libm.so.6 => /lib/libm.so.6 (0xb73ef000)
        libnss3.so => /usr/lib/libnss3.so (0xb72ab000)
        libpopt.so.0 => /lib/libpopt.so.0 (0xb72a2000)
        libz.so.1 => /lib/libz.so.1 (0xb728c000)
        libdl.so.2 => /lib/libdl.so.2 (0xb7287000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb726d000)
        libc.so.6 => /lib/libc.so.6 (0xb70ae000)
        /lib/ld-linux.so.2 (0xb7769000)
        libattr.so.1 => /lib/libattr.so.1 (0xb70a9000)
        librt.so.1 => /lib/librt.so.1 (0xb70a0000)
        libnssutil3.so => /usr/lib/libnssutil3.so (0xb707c000)
        libplc4.so => /lib/libplc4.so (0xb7076000)
        libplds4.so => /lib/libplds4.so (0xb7070000)
        libnspr4.so => /lib/libnspr4.so (0xb7033000)
#

Here's an example of how to do this.  First start by checking the most obvious lib to try to see where that error is coming from:

# strings /usr/lib/librpm.so.3|grep -i "error: bad option"
# strings /usr/lib/librpm.so.3|grep -i "bad option"

bad option '%s' at %s:%d
# ls -al /usr/lib/librpm.so.3
lrwxrwxrwx 1 root root 15 Aug  9 01:31 /usr/lib/librpm.so.3 -> librpm.so.3.0.3
# ls -al /usr/lib/librpm.so.3.0.3
-rwxr-xr-x 1 root root 398888 Feb  6  2013 /usr/lib/librpm.so.3.0.3
#

whereas the latest version available from the FC19 rpm-libs rpm is:


# rpm -qlp rpm-libs-4.11.0.1-2.fc19.i686.rpm
error: bad option 'archcolor' at (null):91
error: bad option 'archcolor' at (null):91
error: cannot open /usr/lib/rpm/rpmrc at /usr/lib/rpm/redhat/rpmrc:1: No such file or directory

error: db5 error(-30969) from dbenv->open: BDB0091 DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages index using db5 –  (-30969)
error: cannot open Packages database in /var/lib/rpm
warning: rpm-libs-4.11.0.1-2.fc19.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fb4b18e6: NOKEY
/usr/lib/librpm.so.3
/usr/lib/librpm.so.3.1.0
/usr/lib/librpmio.so.3
/usr/lib/librpmio.so.3.1.0
#

Extracting ( rpm2cpio rpm-libs-4.11.0.1-2.fc19.i686.rpm | cpio -idmv ) and copying / relinking the 3.2 librpm to /usr/lib results in some of the errors disappearing.  Here's how to do this.  First check if archcolor appears in the old librpm.so file:

# strings /usr/lib/librpm.so.3.0.3 | grep -i archcolor
#

It doesn't.  Whereas the new one does have it in the extracted files in your temporary work folder:

# ls -altri ./usr/lib/
total 588
1978612 -rwxr-xr-x 1 root root 416256 May 28 03:15 librpm.so.3.1.0
1978614 -rwxr-xr-x 1 root root 166824 May 28 03:15 librpmio.so.3.1.0
1978598 lrwxrwxrwx 1 root root     15 Aug  9 21:18 librpm.so.3 -> librpm.so.3.1.0
1978613 lrwxrwxrwx 1 root root     17 Aug  9 21:18 librpmio.so.3 -> librpmio.so.3.1.0
1684496 drwxr-xr-x 3 root root   4096 Aug  9 21:18 ..
1684497 drwxr-xr-x 2 root root   4096 Aug  9 21:18 .
# strings ./usr/lib/librpm.so.3|grep -i archcolor
rpmGetArchColor
archcolor

#

meaning we need the new one.  Next we check the linkeage in the existing folder to ensure we are pointing to the latest one available:

# ls -altri /usr/lib/librpm.so.3*
4456493 -rwxr-xr-x 1 root root 398888 Feb  6  2013 /usr/lib/librpm.so.3.0.3
4456625 lrwxrwxrwx 1 root root     15 Aug  9 01:31 /usr/lib/librpm.so.3 -> librpm.so.3.0.3
# ls -altri /usr/lib/librpmio.so.3*
4456515 -rwxr-xr-x 1 root root 162652 Feb  6  2013 /usr/lib/librpmio.so.3.0.3
4456513 lrwxrwxrwx 1 root root     17 Aug  9 01:31 /usr/lib/librpmio.so.3 -> librpmio.so.3.0.3
#

And we are not.  Because that library is linked to one that doesnt'have the archcolor function.  So we need to copy over the new one and relink or just relink if the copy is already there:

# cd /usr/lib
# unlink /usr/lib/librpm.so.3

# unlink /usr/lib/librpmio.so.3
#
# ls -altri /usr/lib/librpm.so.3*
4456493 -rwxr-xr-x 1 root root 398888 Feb  6  2013 /usr/lib/librpm.so.3.0.3
# ls -altri /usr/lib/librpmio.so.3*
4456515 -rwxr-xr-x 1 root root 162652 Feb  6  2013 /usr/lib/librpmio.so.3.0.3
# pwd
/usr/lib
# cp -ip /Files/F13toF18/usr/lib/librpm [TAB]
librpmio.so.3      librpmio.so.3.1.0  librpm.so.3        librpm.so.3.1.0
# cp -ip /Files/F13toF18/usr/lib/librpm.so.3.1.0 .
# cp -ip /Files/F13toF18/usr/lib/librpmio.so.3.1.0 .

# ls -altri /usr/lib/librpm.so.3*
4456493 -rwxr-xr-x 1 root root 398888 Feb  6  2013 /usr/lib/librpm.so.3.0.3
4456513 -rwxr-xr-x 1 root root 416256 May 28 03:15 /usr/lib/librpm.so.3.1.0
# ls -altri /usr/lib/librpmio.so.3*
4456515 -rwxr-xr-x 1 root root 162652 Feb  6  2013 /usr/lib/librpmio.so.3.0.3
4456625 -rwxr-xr-x 1 root root 166824 May 28 03:15 /usr/lib/librpmio.so.3.1.0
# pwd
/usr/lib
# ln -s librpm.so.3.1.0 librpm.so.3
# ln -s librpmio.so.3.1.0 librpmio.so.3
# ls -altri /usr/lib/librpmio.so.3*

4456515 -rwxr-xr-x 1 root root 162652 Feb  6  2013 /usr/lib/librpmio.so.3.0.3
4456625 -rwxr-xr-x 1 root root 166824 May 28 03:15 /usr/lib/librpmio.so.3.1.0
4456748 lrwxrwxrwx 1 root root     17 Aug  9 21:38 /usr/lib/librpmio.so.3 -> librpmio.so.3.1.0
# ls -altri /usr/lib/librpm.so.3*
4456493 -rwxr-xr-x 1 root root 398888 Feb  6  2013 /usr/lib/librpm.so.3.0.3
4456513 -rwxr-xr-x 1 root root 416256 May 28 03:15 /usr/lib/librpm.so.3.1.0
4456745 lrwxrwxrwx 1 root root     15 Aug  9 21:37 /usr/lib/librpm.so.3 -> librpm.so.3.1.0
#

So now that we run the rpm command again to see what's the latest output to verify we are seeing less issues (Normally this is done with RPM but we need to fix up RPM so we can use it to automaticaly fix up everything else).  And sure enough, the error about archcolor is gone and so is the error about rpmrc:

# rpm -aq 
error: db5 error(-30969) from dbenv->open: BDB0091 DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages index using db5 –  (-30969)
error: cannot open Packages database in /var/lib/rpm
error: db5 error(-30969) from dbenv->open: BDB0091 DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages database in /var/lib/rpm
#

Next we look after BDB0091:

# strings /usr/lib/libdb-5.3.so | grep BDB0091
BDB0091 DB_VERSION_MISMATCH: Database environment version mismatch
#
# ls -al /var/lib/rpm
total 324000
drwxr-xr-x.  2 root root      4096 Aug  9 21:46 .
drwxr-xr-x. 97 root root      4096 Aug  9 17:48 ..
-rw-r–r–.  1 rpm  rpm   22614016 Aug  9 01:31 Basenames
-rw-r–r–.  1 rpm  rpm      24576 Aug  9 01:31 Conflictname
-rw-r–r–   1 root root    262144 Aug  9 01:31 __db.001
-rw-r–r–   1 root root     81920 Aug  9 01:31 __db.002
-rw-r–r–   1 root root   1318912 Aug  9 01:31 __db.003
-rw-r–r–   1 root root         0 Aug  9 21:46 .dbenv.lock
-rw-r–r–.  1 rpm  rpm   10817536 Aug  9 01:31 Dirnames
-rw-r–r–   1 root root  42332160 Jul 19 23:41 Filedigests
-rw-r–r–.  1 rpm  rpm   21217280 Dec  5  2008 Filemd5s
-rw-r–r–.  1 rpm  rpm     110592 Aug  9 01:31 Group
-rw-r–r–.  1 rpm  rpm      53248 Aug  9 01:31 Installtid
-rw-r–r–.  1 rpm  rpm     172032 Aug  9 01:31 Name
-rw-r–r–   1 root root     86016 Aug  9 01:03 Obsoletename
-rw-r–r–.  1 rpm  rpm  238227456 Aug  9 01:31 Packages
-rw-r–r–.  1 rpm  rpm    2707456 Aug  9 01:31 Providename
-rw-r–r–.  1 rpm  rpm     774144 Jul 19 23:41 Provideversion
-rw-r–r–.  1 rpm  rpm      12288 Jul 19 21:01 Pubkeys
-rw-r–r–.  1 rpm  rpm    1986560 Aug  9 01:31 Requirename
-rw-r–r–.  1 rpm  rpm    1200128 Jul 19 23:41 Requireversion
-rw-r–r–   1 root root         0 Jun 27  2010 .rpm.lock
-rw-r–r–.  1 rpm  rpm     626688 Aug  9 01:31 Sha1header
-rw-r–r–.  1 rpm  rpm     323584 Aug  9 01:31 Sigmd5
-rw-r–r–.  1 rpm  rpm      12288 Aug  9 01:30 Triggername
#

In this case our libdb-5.3 was already fine from our previous changes based on file sizes and a quick check:

# rpm2cpio libdb-5.3.21-11.fc19.i686.rpm | cpio -idmv
./usr/lib/libdb-5.3.so
./usr/lib/libdb-5.so
./usr/share/doc/libdb-5.3.21
./usr/share/doc/libdb-5.3.21/LICENSE
./usr/share/doc/libdb-5.3.21/README
3626 blocks
# ls -al ./usr/lib/libdb-5.3.so
-rwxr-xr-x 1 root root 1847852 May 16 07:41 ./usr/lib/libdb-5.3.so
# ls -al /usr/lib/libdb-5.3*
-rwxr-xr-x 1 root root 1847852 Aug  9 17:24 /usr/lib/libdb-5.3.so
#

So we may now need to look at converting the RPM database on our system.  First, let's back it up:

# cp -iRp /var/lib/rpm /var/lib/rpm-Aug.09.2013
# du -sm /var/lib/rpm
317     /var/lib/rpm
# diff /var/lib/rpm /var/lib/rpm-Aug.09.2013
#

Once that's done, run:

# rpm –rebuilddb
#

And for a change we get no errors from at least one command.  Now we try a simple rpm command again to list some RPM packages and ensure RPM FC19 is working:

# rpm -aq|head
liboil-0.3.16-5.fc15.i686
arj-3.10.22-13.fc15.i686
perl-POE-1.289-6.fc16.noarch
autocorr-sv-3.4.6.2-1.fc16.noarch
….

#

And we are done and back in business this time with the RPM FC19 portion in our upgrade.  You will still need to continue with your upgrade at this point if that is what led you here since next in line is to update filesystem rpm manually.  And because yum relies on rpm, it too works.

Now I also check that the rpmlib (librpm.so.3) also has the right string from the error that was plaging us earlier:

# strings /usr/lib/librpmio.so.3|grep -i CheckUnifiedSystemdir
# strings /usr/lib/librpm.so.3|grep -i CheckUnifiedSystemdir

rpmlib(X-CheckUnifiedSystemdir)
#

Cheers,
TK

2 Responses to “rpmlib(X-CheckUnifiedSystemdir) is needed by filesystem”

  1. [...] rpmlib(X-CheckUnifiedSystemdir) is needed by filesystem [...]

  2. [...] Major Google Index Problem? Or is that by design? rpmlib(X-CheckUnifiedSystemdir) is needed by filesystem [...]

Leave a Reply

 


     
  Copyright © 2003 - 2013 Tom Kacperski (microdevsys.com). All rights reserved.

Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License