pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg_comp HOWTO (Was: pkgsrc)



On Sun 08 Feb 2009 at 16:42:05 +0000, David Brownlee wrote:
>       Alternatively, does anyone have a reference to a good howto on
>       using pkg_comp, or better still some suggested text to add to the
>       pkgsrc guide?

I have a checklist of things to do every 3 months when a stable pkgsrc
branch is made. It is for my situation, where I build binary packages
and try to keep separate directories of binary packages corresponding to
each branch.
It is missing the steps to set up, since I have that already ;-)

PROCEDURE TO UPDATE PKGSRC
==========================

- Update pkgsrc using the update script, edited for the new stable branch.

- Fix all C-onflicts. Sometimes cvs reports conflicts in files when there
  are none (sometimes this seems to be related to conflicts that did
  exist in the past).

- Create a new All-2007Q7 - like directory in /scratch/packages.amd64-4.0/
  for the old branch

- Hardlink everything from All/ into that as a backup

- In /usr/pkgsrc, use "pkg_chk -g" to generate a config file with currently
  installed packages - or -
  in further pkg_chk commands, add the option "-C 
/usr/pkgsrc/pkgchk.conf.manual"

- In pkg_comp: ("pkg_comp chroot")

  - pkg_chk -rvk to remove "mismatched" (outdated) packages

  - For a comprehensive rebuild of packages with changed dependencies,
    move their binaries to the Attic directory with
      cd /p/packages &&
      /usr/pkgsrc/check_installed_binary_packages All Attic
    This prevents them being reinstalled from binaries, if their version
    number has not changed.

  - pkg_chk -vak   and have a looooot of patience
      If this fails due to pkg_chk being removed:
      cd /usr/pkgsrc/pkgtools/pkg_chk && make package
    Fix any errors that may occur and retry until done.

- Outside pkg_comp: now comes the critical part.
  Have a backup first.

  - Carefully upgrade important services such as sendmail + spamassassin +
    spamass-milter + milter-greylist, bind9 (named9), siproxd, sudo, pkg_chk.
    If an easy upgrade isn't possible due to dependencies (Perl), just stop
    the service.
    Keep a root shell running just in case sudo stops working.

  - export PACKAGES=/scratch/packages.amd64-4.0/All

  - (nonroot) pkg_chk -lb       double-check all binary packages are present

  - pkg_chk -rv         remove outdated packages
    pkg_chk -akbv       add, keep going, use binaries only.     
  or
  - pkg_chk -ukbv       update, use binaries only, keep going.

    This should be able to use only binaries as generated before.

- Restart any services stopped before.

check_installed_binary_packages is this:


#!/bin/sh
#
# Usage: $0 fromdir todir
#
# Moves all binary packages in fromdir that are not installed anymore
# to todir.

fromdir=$1
todir=$2

if [ ! -w $todir ]
then
    echo "Can't write in $todir"
    exit
fi

for f in $(ls $fromdir)
do
    pkg=${f%.tgz}
    if pkg_info -e "$pkg"
    then
        echo $pkg is still installed
    else
        echo $pkg moved to Attic...
        mv "$fromdir/$f" "$todir"
    fi
done

-Olaf.
-- 
___ Olaf 'Rhialto' Seibert    -- You author it, and I'll reader it.
\X/ rhialto/at/xs4all.nl      -- Cetero censeo "authored" delendum esse.


Home | Main Index | Thread Index | Old Index