pkgsrc tips (Was Re: Proper choice of package management strategy)

Zeb Packard cyphercell4 at gmail.com
Sat Jan 20 11:34:33 PST 2007


Thank you for taking the time to explain what I was geussing at.
And I think ldd used with package_users will put me directly on the
path to a dynamic dependecy tree.

for instance ldd bash returns bash's dependencies which in turn are
owned by the package that installed them. A script that updates the
dependency tree would be simple enough to run on exiting from a
package_user.


On 1/20/07, Amadeus <amadeus.stevenson at gmail.com> wrote:
> Hi list,
>
> Seeing as I haven't tried pkgsrc on Linux before I decided to try it out
> on my host system, Fedora Core 6, to see if anything needed tweaking (I
> use pkgsrc on netbsd so am fairly familiar with it), especially as I
> have justly "blindly recommended" it :)
>
> Hopefully this will be helpful to anyone else trying (perhaps the
> makings of a hint if someone with LFS went through similar examples?).
>
> I started from scratch to compile "tuxracer" (what else? :)
>
> Following the on-line documentation I extracted pkgsrc.tar.gz (from
> www.pkgsrc.org) to /usr, and ran /usr/pkgsrc/bootstrap/bootstrap.
>
> To compile and install into /usr/pkg/{bin,lib,etc} (including dependencies):
>
> cd /usr/pkgsrc/games/tuxracer && make && make install
>
> Things I tweaked in my /usr/pkgsrc/etc/mk.conf:
>
> X11BASE = /usr #pkgsrc looks for include/X11/X.h on the host system,
> which, for me, was in /usr
>
> I had to use /usr/pkgsrc/bin/bmake instead of "make" to make install
> packages.
> I had to make sure /usr/pkg/bin/pkg-config was used not my host's copy
> in /usr/bin (ie. set PATH)
> I had to install /usr/pkgsrc/devel/imake for some X11 dependencies. This
> involved fixing the xorg-cf-files Makefile. This also involved
> installing x11/xproto manually (ie. the dependency wasn't handled). I
> also had to bash it into working by faking pkg-config output.
> For the SDL dependency -> nas dependency I had to bodge
> work/.tools/bin/imake as well as pkg-config :( I removed nas support in
> SDL as a quick fix after this failed.
>
> I also specified CFLAGS += in the mk.conf for optimizations (note the +=
> not and =, as some packages require special CFLAGS...)
>
> Sources are stored in /usr/pkgsrc/distfiles (in case you need to
> manually download any).
>
> Make sure your PATH and MANPATH point to /usr/pkg (or whatever you chose
> for the pkgsrc base.)
>
> There is a nice "bmake show-options" functionality which lets you
> configure the packages so as not to compile unwanted supports for kde
> etc. You can globally set options in mk.conf (ala portage). I couldn't
> figure out how to show-options for dependencies automatically tho.
> "bmake clean CLEANDEPENDS=YES" is useful.
>
> Results:
>
> pkgsrc checks its own pkg db for dependency checking (by default in
> /var/db). For a fresh pkgsrc install this was empty so all the
> dependencies were compiled (even though most of them already existed on
> the host system, just not in /var/db). You could add fake entries into
> /var/db but that's an ugly fudge.
>
> After compiling and installing tuxracer (which works) I checked what
> pkgsrc had compiled and installed for this using the "pkg_info" tool in
> /usr/pkg/sbin.
>
> [amadeus at poff SDL]$ /usr/pkg/sbin/pkg_info
> imake-1.0.2         Imake and other utilities from modular X.org
> renderproto-0.9.2   Render extension headers from modular X.org
> perl-5.8.8nb3       Practical Extraction and Report Language
> expat-2.0.0nb1      XML parser library written in C
> Xft2-2.1.7nb2       Library for configuring and customizing font access
> freetype2-2.2.1nb2  Font rendering engine and library API
> jpeg-6bnb3          IJG's jpeg compression utilities
> arts-1.5.5          Analog Real-Time Synthesizer
> Xfixes-2.0.1nb4     X Fixes extension of X RandR
> Xrender-0.9.0nb1    Client library for the X Rendering Extension protocol
> aalib-1.4.0.5nb2    ASCII Art library
> autoconf-2.61       Generates automatic source code configuration scripts
> xproto-7.0.9nb3     X protocol and ancillary headers from Xorg X11
> png-1.2.14nb1       Library for manipulating PNG images
> automake-1.10       GNU Standards-compliant Makefile generator
> randrproto-1.1.2    Randr extension headers from modular X.org
> qt3-libs-3.3.7      C++ X GUI toolkit
> pkg_install-20061103 Package management and administration tools for pkgsrc
> xcursor-1.1.2nb2    Client-side cursor loading library for X
> pax-20060202        POSIX standard archiver with many extensions
> xpkgwedge-1.16      Allows X11 pkgs to be built and used outside of
> ${X11BASE}
> p5-perl-headers-2.6.18-1.2869.fc6nb3 Perl header files
> glib2-2.12.4nb1     Some useful routines for C programming (glib2)
> tcl-8.4.14          Ousterhout's Tool Command Language, a scripting language
> unzip-5.52nb3       List, test and extract compressed files in a ZIP archive
> libmad-0.15.1bnb1   High-quality MPEG audio decoder
> bootstrap-mk-files-20061111 *.mk files for the bootstrap bmake utility
> nasm-0.98.39nb2     General-purpose x86 assembler
> smpeg-0.4.4nb13     SDL MPEG Player Library
> Xrandr-1.0.2nb3     X RandR extension (Library)
> libaudiofile-0.2.6nb1 Sound library for SGI audio file
> digest-20060826     Message digest wrapper utility
> libogg-1.1.3        Ogg project codecs library
> mng-1.0.9nb1        Multiple-image Network Graphics (MNG) reference library
> libtool-base-1.5.22nb4 Generic shared library support script (the script
> itself)
> MesaLib-6.4.2nb2    Graphics library similar to SGI's OpenGL
> mtree-20040722      Utility for mapping and checking directory hierarchies
> libvorbis-1.1.2     Library for the Ogg Vorbis audio encoding format
> x11-links-0.30      Shadow tree of links to native X11 headers and libraries
> tiff-3.8.2nb3       Library and tools for reading and writing TIFF data
> files
> lcms-1.15nb2        Light Color Management System -- a color management
> library
> SDL-1.2.11nb1       Simple DirectMedia Layer, a cross-platform
> multimedia library
> tnftp-20050625      The enhanced FTP client in NetBSD
> pkgmanpages-20050911 Manual page(s) for the packages collection
> SDL_mixer-1.2.7nb1  Multi-channel audio mixer library
> tuxracer-0.61nb12   3D penguin racing game using OpenGL
> xorg-cf-files-1.0.2 Xorg imake rules
> esound-0.2.36nb1    The Enlightened sound daemon
> glu-6.4.2           GLU polygon tessellation facility for Mesa
> fontconfig-2.4.2    Library for configuring and customizing font access
> pkg-config-0.21     System for managing library compile/link flags
> qt3-tools-3.3.7     QT GUI (WYSIWYG) builder and other tools
>
> I should note I only specified not to include nas support in my mk.conf,
> and had I specified other supports to be removed less of the above stuff
> would have been compiled.
>
> I also checked against which libraries tuxracer was compiled...
>
> [amadeus at poff SDL]$ ldd `which tuxracer`
>         linux-gate.so.1 =>  (0x00d68000)
>         libSM.so.6 => /usr/lib/libSM.so.6 (0x00c93000)
>         libICE.so.6 => /usr/lib/libICE.so.6 (0x00c77000)
>         libX11.so.6 => /usr/lib/libX11.so.6 (0x00aa1000)
>         libXi.so.6 => /usr/lib/libXi.so.6 (0x006de000)
>         libXext.so.6 => /usr/lib/libXext.so.6 (0x00ba5000)
>         libXmu.so.6 => /usr/lib/libXmu.so.6 (0x007d0000)
>         libXt.so.6 => /usr/lib/libXt.so.6 (0x00761000)
>         libdl.so.2 => /lib/libdl.so.2 (0x00a75000)
>         libtcl84.so.1 => /usr/pkg/lib/libtcl84.so.1 (0x00110000)
>         libSDL-1.2.so.0 => /usr/pkg/lib/libSDL-1.2.so.0 (0x001f2000)
>         libpthread.so.0 => /lib/libpthread.so.0 (0x00a7b000)
>         libSDL_mixer-1.2.so.0 => /usr/pkg/lib/libSDL_mixer-1.2.so.0
> (0x002ae000)
>         libGL.so.1 => /usr/pkg/lib/libGL.so.1 (0x0032f000)
>         libGLU.so.1 => /usr/pkg/lib/libGLU.so.1 (0x007e7000)
>         libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x0090b000)
>         libm.so.6 => /lib/libm.so.6 (0x00a4c000)
>         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x006bc000)
>         libc.so.6 => /lib/libc.so.6 (0x00d69000)
>         libXau.so.6 => /usr/lib/libXau.so.6 (0x00a9c000)
>         libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00a94000)
>         /lib/ld-linux.so.2 (0x008f0000)
>         libaa.so.1 => /usr/pkg/lib/libaa.so.1 (0x006e6000)
>         libsmpeg-0.4.so.0 => /usr/pkg/lib/libsmpeg-0.4.so.0 (0x00bb5000)
>         libgpm.so.1 => /usr/lib/libgpm.so.1 (0x008bc000)
>
> pkgsrc include paths included /usr/lib so a lot of the libraries are not
> the ones compiled by pkgsrc...
>
> I manually updated /usr/pkg/lib/libGL.so to my system's
> /usr/lib/libGL.so to get hardware accelerated tuxracer.
>
> It seems to me to be an "all or nothing" affair. Either use it from the
> beginning of your LFS installation to compile everything (and thus
> against the "spirit" of LFS as discussed in the original thread
> vis-a-vis portage etc) or don't use it, unless you want wasted
> space/time although arguably the ease of "make install" might save you
> lots (of time)...
>
> It always comes down to personal preference...
>
> Great, I can get back to some work now :)
>
> HTH
>
> Amadeus
>
> ps. If there's a package you can't find in pkgsrc try pkgsrc-wip (work
> in progress)
>
> Zeb Packard wrote:
> > The one thing I would really like though, is some sort of general
> > "here's how to handle dependancies in PM"
> >
>
> --
> http://linuxfromscratch.org/mailman/listinfo/lfs-support
> FAQ: http://www.linuxfromscratch.org/lfs/faq.html
> Unsubscribe: See the above information page
>



More information about the lfs-support mailing list