I'm trying to install OpenOffice.org 3.0.1 without root access, but it
isn't working for me, not without some extreme hackery.

Here's the specific error I get:

rpm --upgrade --ignoresize -vh --dbpath ~/opt/.RPM_OFFICE_DATABASE
~/ooo/RPMS/userland/openoffice.org-userland-1.0-0.noarch.rpm
Returns: 1 Error during installation
error: can't create transaction lock on /var/lock/rpm/transaction

All subsequent package installations either fail in the same way or die
because prerequisite packages failed.

How can I convince rpm to forgo the transaction lock?  That's the only
thing preventing rpm from working.  As far as I know, the only
command-line option for this is --test, which of course has side
effects.  Or maybe I should say, it doesn't. :^)

>From looking at the source code of my version of rpm (4.3.3), I see that
the name and path of the transaction lock file are hard coded.  It uses
open() and fcntl() to manage the lock.  I guess I could use LD_PRELOAD
to override the behavior of these functions when operating on the lock
file.  But if I'm willing to go that route, it'll be much simpler to
override rpmtsAcquireLock() and rpmtsFreeLock():

$ cat rpmhack.c
void* rpmtsAcquireLock() {return (void*)1;}
void rpmtsFreeLock() {}
$ gcc -shared -o rpmhack.so rpmhack.c
$ LD_PRELOAD="$PWD"/rpmhack.so ./setup

While this does work (YAY!), it's not likely to work for an arbitrary
version of rpm, only unmodified 4.3.3.

I get the impression that (at least on Unix) this feature has been
broken and fixed several times throughout OpenOffice's history.  For
instance, task 33634 says it's fixed by using a special install script,
but then again the resolution is from 2004.  One of its duplicates
(34605) mentions rpm2cpio, and I see that this utility is used (and
required!) by the current setup script to unpack jre-6u11-linux-i586.rpm
without using root, but the actual Java-based installer does not use it.

I am using CentOS 4.7.  Root is not available to me.

-- 
Andy Goth
<[email protected]>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to