[linux-lvm] Debian packaging

Andreas Dilger adilger at turbolinux.com
Sun Dec 17 18:00:18 UTC 2000

Russel Coker writes:
> >I mean, it would be better to place the utilities into /sbin instead of
> >/usr/sbin.
> Depends.  One thing I would like to do is go through the utilities and put 
> things that are needed to kickstart a system or to recover a hosed system 
> into /sbin .  Then things that aren't so critical to the boot process (lvmsar 
> springs to mind) belong in /usr/sbin .

As with other people, I think it would be best to place the LVM user utils
into /sbin/lvm-<IOP version>.  However, I think it is NOT a good idea to
put wrapper scripts in /sbin.  Instead, simply set the path at boot time
(/etc/rc.d/rc.sysinit, and for root) to include the correct directory if
it exists.

Basically, I'm going to write a 5 line program that only gets the LVM IO
protocol version and spits it to stdout, ala:

IOP=`lvmiopversion`	# only this command will be directly in /sbin

[ "$IOP" ] && PATH=/sbin/lvm-$IOP:$PATH

so if the version-specific LVM user tools directory doesn't exist, we will
still look for old tools in /sbin.  Never reference LVM tools by absolute path.
It would be nice if the stock LVM configuration also started doing this,
but it will be a minor change to the Makefile.

> Yes.  My package will differ quite a bit from the existing Debian package.  
> Also I plan to make everything use shared libraries.  ls, cp, and mv are not 
> statically linked so I don't think that there is any need for statically 
> linked lvm utilities.  My lvm package will be considerably smaller than the 
> current one (which is necessary for boot support).

Probably not a bad idea.

> One other thing, it seems that the protocol is changing often.  How should 
> this be managed in Debian packages?  I had thought of doing lvm22 and lvm24 
> as package names for the 2.2.x and 2.4.x kernels, but now I get the 
> impression that the interfaces will change between those series.  Also 0.8.1, 
> 0.9, and 0.8i all seem to have different protocol versions.

You should name packages by the IOP version.  It will be a bit of a challenge
as LVM 0.8i was IOP 5, LVM 0.8final was IOP 6, and LVM 0.9 is IOP 10.  Maybe
Heinz can number future LVM releases by their IOP version?

> I was thinking that perhaps what I should do is have /sbin/lvm-ver and 
> /lib/lvm-ver directories where "ver" is the version of LVM in question.
> Then at boot time there is a script that determines the version of LVM in the 
> kernel and creates sym-links from /sbin and /lib to the correct directories.  

Think PATH - this is really easy, and shells already support it.  No more
work to be done, and it's not ugly.  The IOP version will probably never
change within a boot (unless LVM is a module and it gets upgraded without
upgrading the kernel - unlikely).

Cheers, Andreas
Andreas Dilger  \ "If a man ate a pound of pasta and a pound of antipasto,
                 \  would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/               -- Dogbert

More information about the linux-lvm mailing list