I have built rpm 4.1 for arm-linux, to run on arm-linux. But it doesn't work. :( What am I doing wrong?
Oh, you want more detail? ;)
So far, I have rpm 4.1 built to run on x86, but create packages for armv4l. Using that, I built rpm 4.1 to run on armv4l and use packages for armv4l.
I can then use the x86->armv4l rpm 4.1 to convert all my rpms to cpios, transfer them to the target, create a directory, cpio --extract all of those, then chroot into that directory.
In that chroot, I am now able to do an rpm --initdb and rpm -qa (which shows no output, as expected).
But, problem #1:
rpm --install complains that the packages are "intended for a armv4l architecture"
And
# rpm --eval='%{_arch}'
i386
I was expecting it to give 'armv4l' or similar instead. Ok, so I use --ignorearch to get around that for now, and rpm will install the packages successfully. The files are installed as expected.
But, problem #2:
# rpm -qa
Still shows nothing.
So,
# rm -f /var/lib/rpm/*
# rpm --initdb
# echo $?
0
# ls /var/lib/rpm
Packages __db.001 __db.002 __db.003
# rpm --install --nodeps --ignorearch gzip*.rpm
# ls /var/lib/rpm
Basenames Group Packages Requirename Sigmd5 __db.002
Dirnames Installtid Providename Requireversion Triggername __db.003
Filemd5s Name Provideversion Sha1header __db.001
# rpm -qa
Shows nothing, but /var/lib/rpm/Packages has been updated and shows some indication that gzip was added.[1]
# rpm -qa -vv
D: opening db environment /var/lib/rpm/Packages joinenv
D: opening db index /var/lib/rpm/Packages rdonly mode=0x0
D: locked db index /var/lib/rpm/Packages
D: closed db index /var/lib/rpm/Packages
D: closed db environment /var/lib/rpm/Packages
I'm using glibc 2.3.1, a 2.5 kernel in case that matters.
An strace of 'rpm -qa -vv' gives a few hundred lines of output, but I noticed that it seems to do a lot of:
fcntl64(3, F_SETLKW64, {type=F_WRLCK, whence=SEEK_SET, start=8020, len=1}, 0xbeffe81c) = 0
getpid() = 28530
fcntl64(3, F_SETLK64, {type=F_UNLCK, whence=SEEK_SET, start=8020, len=1}, 0xbeffe81c) = 0
Where fd 3 is: open("/var/lib/rpm/__db.001", O_RDWR|O_LARGEFILE) = 3 Probably irrellavent, but it looked odd to me.
I'd appreciate any hints as to what I should look into here.....
TIA,
Eli
[1] I used python and did (basically) this: for d in open('Packages').read().split('\0'): if len(d): print repr(d) to get a basic idea of the file's contents. --------------------. "If it ain't broke now, Eli Carter \ it will be soon." -- crypto-gram eli.carter(a)inet.com `-------------------------------------------------
------------------------------------------------------------------------ Confidentiality Notice: This e-mail transmission may contain confidential and/or privileged information that is intended only for the individual or entity named in the e-mail address. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or reliance upon the contents of this e-mail message is strictly prohibited. If you have received this e-mail transmission in error, please reply to the sender, so that proper delivery can be arranged, and please delete the message from your computer. Thank you. Inet Technologies, Inc. ------------------------------------------------------------------------