epkg

torsten torsten at inetw.net
Mon Feb 10 17:46:10 PST 2003


On Mon the 10 Feb 2003 at 17 hours EST
EM wrote...
>Tushar, et al-
>
>I am very interested in some of these package
>management alternatives.  I use emerge and portage
>almost exclusively, but I have not yet taken the
>plunge to port it to LFS.  I have X and KDE on my LFS
>box, but pretty much just use manual package
>management on that system.
>
>You mention epkg and a hint that sounds like another
>solution.  Can you give me a brief rundown on these
>and any others in comparison to portage?
>
>Thanks!


Following the hint, epkg is just a relinker.  It is, however,
a very well designed relinker.
	epkg <pkgname>    //links up latest version of package
	epkg -r <pkgname> //unlinks a package
	epkg -1 <pkgname> //dowgrades to previous package version
	epkg -r *         //from inside pkg source dir, uninstalls everything
	epkg -b           //reinstalls every package

That's pretty much all I ever use.  epkg can package thing up,
and there are three repositories of premade packages here:
http://www.encap.org/search/search.fcgi?results_only=yes&search_string=all&search_type=encap&search_collection=contrib
http://www.encap.org/search/search.fcgi?results_only=yes&search_string=all&search_type=encap&search_collection=psg
http://www.encap.org/search/search.fcgi?results_only=yes&search_string=all&search_type=encap&search_collection=wsg

I haven't tried any of them (I still like to compile my own stuff).
There are a few problems during installation, here with solutions.

1) /etc - shouldn't be wiped out when package is deleted from system.
solution:  add to configure line, make install line, resp.
	--sysconfdir=/etc/local
	  sysconfdir=/opt/local

2) var subdirectory should be in /var
solution: add to configure, make install, resp.
	--localstatedir=/var/local
	  localstatedir=/var/local

3) installation of package puts files everywhere!
solution:  remove all packages (epkg -r *).  What's left in the
filesystem belongs to the just-installed program.  So, just
	cd /usr/local
	mv * /usr/local/src/<pkgname-version>
also, use itrace to help make sure you get all files.  Put this
before make install.  You'll want to examine the file list.
	itrace -l log -L list make ......

4) During LFS chroot phase, wiping out all linked packages to
move the just-installed package to a subdirectory makes (like in number
(3), epkg fails - no glibc!
solution: compile epkg static.  $1 is package, $2 is destdir
for example, $1=/usr/local/src, $2=/usr/local
	configure --disable-encap --with-encap-source=$1 --with-encap-target=$2
	make CC="gcc -static"
don't forget to use absolute paths to call epkg.
	/usr/bin/epkg-root

5) During LFS chroot phase, itrace can't track installation of
files, because make is compiled statically!
solution: compile and use itrace kernel module.  insmod just before
make install, rmmod just after.  list file dumped into /tmp

Final thoughts.  The number (3) method if isolating a package
does not work after the basic LFS system, unless you have a lot
of patience.  Unlinking can take a long time.  It is better to
just look at the list file, and pick out files - they are usually
contained in subdirectories and are easy to move.  i.e.
	/usr/local/include/gtk-2.0
is very simple to move over, rather than unlink _everything_.

Torsten

-- 
Unsubscribe: send email to listar at linuxfromscratch.org
and put 'unsubscribe lfs-chat' in the subject header of the message



More information about the lfs-chat mailing list