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

Nadav Vinik nadavvin at gmail.com
Sat Jan 20 12:23:19 PST 2007


Do you have script like that?

since It user readable but it harder to parse in simple regular expression:

$ ldd /bin/bash
        linux-gate.so.1 =>  (0xffffe000)
        libreadline.so.5 => /lib/libreadline.so.5 (0xb7f6c000)
        libhistory.so.5 => /lib/libhistory.so.5 (0xb7f64000)
        libncurses.so.5 => /lib/libncurses.so.5 (0xb7f22000)
        libdl.so.2 => /lib/libdl.so.2 (0xb7f1e000)
        libc.so.6 => /lib/libc.so.6 (0xb7df4000)
        /lib/ld-linux.so.2 (0xb7fb7000)


On 1/20/07, Zeb Packard <cyphercell4 at gmail.com> wrote:
> 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
> >
> --
> 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