Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 253076 - sys-fs/lvm2-2.02.36: init scripts intalled to wrong location and look for librc.so in the wrong place
Summary: sys-fs/lvm2-2.02.36: init scripts intalled to wrong location and look for lib...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Core system (show other bugs)
Hardware: AMD64 Linux
: High normal (vote)
Assignee: Robin Johnson
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-12-30 01:33 UTC by Nathan Phillip Brink (binki) (RETIRED)
Modified: 2009-01-18 10:09 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nathan Phillip Brink (binki) (RETIRED) gentoo-dev 2008-12-30 01:33:54 UTC
I get this incorrect message when I try to start the lvm init scripts:
# /etc/init.d/lvm start
lvm              |* The lvm init-script is written for baselayout-2!
lvm              |* Please do not use it with baselayout-1!.
lvm              |* ERROR: lvm failed to start

I am running openrc/baselayout2: 
# qlist openrc |grep '/librc.so$'
/usr/lib64/librc.so
/lib64/librc.so

but the lvm initscripts look for librc.so at /lib/librc.so.

As a workaround, I ran:
$ cd /lib
$ ln -s ../lib64/librc.so


After convincing the lvm iniscripts that openrc was installed, I got the following error:

 # rc-service lvm start
lvm              |* ERROR: lvm failed to start

this is because lvm2 and a few other apps have installed addons to /lib/rcscripts rather than /lib64/rcscripts where openrc looks for them:
# qfile /lib/rcscripts
sys-fs/cryptsetup (/lib/rcscripts)
sys-fs/lvm2 (/lib/rcscripts)
sys-fs/device-mapper (/lib/rcscripts)

I worked around this by moving all files in /lib/rcscripts into /lib64/rcscripts and making /lib/rcscripts a symlink to /lib64/rcscripts. However, I think that the ebuilds should install the initscript/openrc addons into the correct location. The mdadm ebuild is an example of how to handle this correctly. I also think the scripts should change the check for baselayout2/openrc to something more reasonable than checking if /lib/librc.so exists. mdadm's initscripts also do wrong an look for /lib/rc.so.

Maybe this bug report is about too many packages/should be a meta bug/should block a metabug.

Reproducible: Always

Steps to Reproduce:
Comment 1 Doug Goldstein (RETIRED) gentoo-dev 2009-01-02 21:06:18 UTC
Your /lib should be a symlink to /lib64, so as a result this works. If it's not then your system is broken.
Comment 2 Nathan Phillip Brink (binki) (RETIRED) gentoo-dev 2009-01-03 04:01:20 UTC
(In reply to comment #1)
> Your /lib should be a symlink to /lib64, so as a result this works. If it's not
> then your system is broken.
> 

The only part of my system which seems to be broken by my not having /lib symlinked to /lib64 is the rc scripts. Not OpenRC itself, but the scripts that attempted to make use of its addons capability. Not to say that OpenRC is correct...

Regardless of whether or not /lib/rcscripts should be a symlink to /lib64/rcscripts, other programs which use libraries (like librc.so) always look in /lib64 rather than /lib. I still think it is incorrect for scripts/programs to look for /lib/rc.so when bug #209679 is considered legitimate. Or is /usr/lib* treated differently than /lib* ?

Before I haphazardly mess with my /lib* directories, may you answer a few of the following questions?
Why does mdadm install scripts to /lib64/rcscripts/addons rather than /lib/rcscripts/addons? Why does OpenRC install files to /lib64/rc rather than /lib/rc?
What I'm most interested in is this: what package is responsible for creating /lib as a symlink to /lib64? I just did a fresh binary-package-based reinstall of my system as I upgraded to a new HD and the resulting root doesn't have a symlink. baselayout-2.0.0 is a package that I had in my binpkgs and I'd guess that it would be responsible for the symlink. But it didn't create the symlink when I did the ``somewhat fresh'' binkpkg-based install. Should I file this as another bug?

After reading http://devmanual.gentoo.org/archs/amd64/index.html#libdir-links , I am convinced of three things:

1). The devmanual is out of date :-D. My system appears to be using the ``>=2005.0/no-symlink'' option, but there are not profiles with the names described in the devman in ${PORTDIR}/profiles.

2). OpenRC is looking for scripts in the wrong place: /lib64. The devmanual says arch-independent stuff should go in /lib. I'd consider shell-scripts to be arch-independent. This means OpenRC has to move /lib64/rc to /lib/rc and the same for /lib64/rcscripts. Now do I have to fire a bug at OpenRC? Does Roy Marples, who is respected by Gentoo, respect the Gentoo devmanual? This idea of arch-independent stuff makes sense to me.

3). Any rc-script which looks for /lib/librc.so is also incorrect - librc.so is a native binary containing arch specific code and _should_ be looked for in /lib64. Any program which _should_ look for that binary will be linked by binutils and binutils will automatically look in /lib64 when appropriate. I don't think shell-scripts are supposed to deal with files that ld can find easily when given ``-lrc''. Maybe this is what this bug's scope should be reduced to - finding a better way to determine if openrc is installed. ``rc --version | grep OpenRC 2>/dev/null >/dev/null'' might work?

Sorry for the long and drawn out comment: maybe what I've said belongs in a ml rather than bugcomment?
Comment 3 Robin Johnson archtester Gentoo Infrastructure gentoo-dev Security 2009-01-17 23:08:01 UTC
I did a fix for now, no revision bump, re-emerge to get it.
I raised an email on the -dev list, because I can see other places with breakage on no-symlink profiles with 64-bit userspace.
Comment 4 Nathan Phillip Brink (binki) (RETIRED) gentoo-dev 2009-01-18 00:09:50 UTC
(In reply to comment #3)
> I did a fix for now, no revision bump, re-emerge to get it.
Thanks
> I raised an email on the -dev list, because I can see other places with
> breakage on no-symlink profiles with 64-bit userspace.
I am interested to hear what comes of this. Maybe I'm just crazy and should just symlink my /lib dirs - yet I still am interested in the ``arch neutral'' idea...