Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Feb 2003 08:34:39 -0800
From:      "Kevin Oberman" <oberman@es.net>
To:        "Brian T. Schellenberger" <bts@babbleon.org>
Cc:        Yann Golanski <yann@kierun.org>, Gordon Broom <gjbroom@alumni.uwaterloo.ca>, ajs@labs.mot.com, freebsd-stable@freebsd.org
Subject:   Re: Upgrading ports and such 
Message-ID:  <20030227163439.A13145D04@ptavv.es.net>
In-Reply-To: Your message of "Thu, 27 Feb 2003 09:18:51 EST." <200302270918.51075.bts@babbleon.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
> From: "Brian T. Schellenberger" <bts@babbleon.org>
> Date: Thu, 27 Feb 2003 09:18:51 -0500
> Sender: owner-freebsd-stable@FreeBSD.ORG
> 
> 
> Well, it's probably a case of "once bitten, twice shy" but the last time 
> I tried portupgrade it completely destroyed my system.  (Well, the 
> /usr/local part anyway.)  And since I wasn't banking on the downtime 
> then, and hadn't done the "pkg_info -aI" beforehand it was a lot worse 
> for me than my current approach.
> 
> And I *did* try upgrading "all" the ports.  (Among other things.)
> 
> This script might work, though.  The basic problem that portupgrade gave 
> me, I think, was that my pkgdb wasn't quite right to start with and 
> portupgrade can really screw things up badly.  It looks like it tries 
> to warn you about that now but either it didn't then or I didn't follow 
> what it was trying to tell me to do.

Brian,

I have been using portupgrade since it was first added to ports and,
for the past 5 or 6 months, it's been close to flawless. Before that
it required a fair bit of hand-holding and occasion manual massage of
the databases.

portupgrade is also a good toll to mess up a system if not properly
used. Read the man pages before trying to use it.

My "standard" procedure is:

1. Create a ${prefix}/etc/pkgtools.conf file for ports that require
   special options. I use this for galeon2, nautilus2, and the
   like. Start with the .sample.config file supplied. I will append
   my file as an example. Normally I only need to touch the MAKE_ARGS
   section, but you may want to do other things and this tool allows
   lots of customizations.
2. cvsup ports tree
3. portsdb -Uu (There are several ways to cut down the time required to
   do this, but I'll leave it at the vanilla stage to avoid
   confusion.)
4. portversion -vL= (to list the ports in need to upgrade)
5. portupgrade -R portupgrade (Only needed if portupgrade was listed
   in 4.)
6. portupgrade -Ra (This upgrades everything in the proper order)

This usually is all that is required. Occasionally there will be a
change which REQUIRES that all ports dependent on some other port be
upgraded (as was the case for Xft). For that you need to use the -f
option (portupgrade -fR Xft).

Oh, and in case you missed it the first time, READ THE MAN PAGES!

R. Kevin Oberman, Network Engineer
Energy Sciences Network (ESnet)
Ernest O. Lawrence Berkeley National Laboratory (Berkeley Lab)
E-mail: oberman@es.net			Phone: +1 510 486-8634
--[[application/octet-stream
Content-Disposition: attachment; filename="pkgtools.conf"][7bit]]
# -*- ruby -*-
#
# pkgtools.conf - the configuration file for the pkgtools suite
#
# $Idaemons: /home/cvs/pkgtools/etc/pkgtools.conf,v 1.14 2002/04/28 19:52:12 knu Exp $

# Syntax:
#   string:	'...' or "..."; use the `+' operator to concatinate
#   boolean:	true or false
#   array:	[ value, ... ]; use the `+' operator to concatinate
#   hash:	{ key => value, ... }

# Useful predefined constants:
#
#   Name:		Example value:
#   OS_RELEASE:		"5.0-CURRENT"
#   OS_REVISION:	"5.0"
#   OS_MAJOR:		"5"
#   OS_BRANCH:		"CURRENT"
#   OS_PLATFORM:	"i386"

# Useful predefined functions:
#
#  localbase()
#    Returns LOCALBASE.
#
#  x11base()
#    Returns X11BASE.
#
#  pkg_site_builder([latest])
#    Returns a URI of the packages directory on the package builder site;
#    Equivalent to:
#     on i386:
#      sprintf('http://bento.FreeBSD.org/errorlogs/packages-%s-%s/',
#              OS_MAJOR, latest ? 'latest' : 'full')
#     on alpha:
#      sprintf('http://beta.FreeBSD.org/errorlogs/packages-%s-%s/',
#              OS_MAJOR, latest ? 'latest' : 'full')
#
#  pkg_site_mirror([root])
#    Returns a URI of the packages directory on the preferred mirror site;
#    Equivalent to:
#      sprintf('%s/pub/FreeBSD/ports/%s/packages-%s/',
#              root  || ENV['PACKAGEROOT'] || 'ftp://ftp.FreeBSD.org',
#              OS_PLATFORM, OS_RELEASE.downcase)
#
#  pkg_site_primary()
#    Returns a URI of the packages directory on the primary FTP site;
#    Equivalent to:
#      pkg_site_mirror('ftp://ftp.FreeBSD.org')

module PkgConfig

  # Environment Variables: string
  #
  # Uncomment and edit as necessary.  The `||=' operator means `set only
  # if it is not set', i.e. it gives a variable its default value.
  #
  # It is particularly recommendable that you set PORTS_INDEX to
  # something other than the default value to avoid conflict with CVS,
  # CVSup, or CTM.
  #
  # cf. portupgarde(1), pkg_which(1)
  #
  # defaults:
  #   ENV['PORTSDIR'] ||= '/usr/ports'
  #   ENV['PORTS_INDEX'] ||= ENV['PORTSDIR'] + '/INDEX'
  #   ENV['PORTS_DBDIR'] ||= ENV['PORTSDIR']
  #   ENV['PKG_DBDIR'] ||= '/var/db/pkg'
  #
  #   ENV['PKG_TMPDIR'] ||= '/var/tmp'
  #
  #   ENV['PACKAGES'] ||= ENV['PORTSDIR'] + '/packages'
  #
  # e.g.:
  #   ENV['PORTSDIR'] ||= '/export/freebsd/ports'
  #   ENV['PORTS_INDEX'] ||= ENV['PORTSDIR'] + '/INDEX.txt'
  #   ENV['PORTS_DBDIR'] ||= ENV['PKG_DBDIR']
  #
  #   ENV['PACKAGES'] ||= sprintf('/export/freebsd/packages-%s-%s',
  #	OS_RELMAJOR, OS_BRANCH.downcase)
  #   ENV['PKG_PATH'] ||= ENV['PACKAGES'] + '/All'
  #
  #   ENV['PKG_FETCH'] = "wget -O '%2$s' '%1$s'"
  #   ENV['PKG_FETCH'] = "curl '%s' -o '%s'"
  #   ENV['PKG_FETCH'] = 'false'	# never fetch packages from a remote site
  #   ENV['PACKAGEROOT'] = 'ftp://ftpN.XX.FreeBSD.org'

  ENV['PORTSDIR'] ||= '/usr/ports'
  ENV['PACKAGES'] ||= ENV['PORTSDIR'] + '/packages'
  ENV['PKG_PATH'] ||= ENV['PACKAGES'] + '/All'

  # SANITY_CHECK: boolean (default: true)
  #
  # If true, perform sanity checks on stale dependencies.  This makes
  # it up to 50% slower to parse package globs but offers unfailing
  # upgrades.  If you are sure you won't forget to run `pkgdb -F'
  # regularly, turn this off to take performance. (default: true)
  #
  # cf. -O/--omit-check of pkg_deinstall(1), pkg_glob(1),
  #     portupgrade(1) and portversion(1)

  SANITY_CHECK = true

  # IGNORE_CATEGORIES: array
  #
  # This is a list of port categories you want the pkgtools to ignore.
  # Typically you want to list language specific categories of the
  # languages you don't use.
  #
  # After configuring this list, you need to rebuild the ports
  # database to reflect the changes. (run 'portsdb -Ufu')
  #
  # e.g.:
  #  IGNORE_CATEGORIES = [
  #  'chinese',
  #  'french',
  #  'german',
  #  'hebrew',
  #  'japanese',
  #  'korean',
  #  'russian',
  #  'ukrainian',
  #  'vietnamese',
  #]

  IGNORE_CATEGORIES = [
  ]

  # EXTRA_CATEGORIES: array
  #
  # This is a list of extra port categories you put your locally
  # maintained ports.  You must prepare a Makefile in each directory
  # that defines a variable SUBDIR which lists all the ports in the
  # category.
  #
  # After configuring this list, you need to rebuild the ports
  # database to reflect the changes. (run 'portsdb -Ufu')
  #
  # e.g.:
  #   EXTRA_CATEGORIES = [
  #     'local',
  #   ]

  EXTRA_CATEGORIES = [
  ]

  # HOLD_PKGS: array
  #
  # This is a list of ports you don't want portupgrade(1) to upgrade,
  # portversion(1) to suggest upgrading, or pkgdb(1) to fix.
  # You can use wildcards ("ports glob" and "pkgname glob").
  # -f/--force of each command will force the held status.
  #
  # cf. pkg_glob(1), ports_glob(1)
  #
  # e.g.:
  #   HOLD_PKGS = [
  #     'bsdpan-*',
  #     'x11/XFree86*',
  #   ]

  HOLD_PKGS = [
    'bsdpan-*',
  ]

  # MAKE_ARGS: hash
  #
  # This is a hash of ports glob => arguments mapping.  portupgrade(1)
  # and portinstall(1) look it up to pick command line arguments to
  # pass to make(1).  You can use wildcards ("ports glob").  If a
  # port/package matches multiple entries, all the arguments are
  # joined using the space as separator.
  #
  # cf. -m/--make-args of portupgrade(1), ports_glob(1)
  #
  # e.g.:
  #   MAKE_ARGS = {
  #     'databases/mysql323-*' => 'WITH_CHARSET=ujis',
  #   }

  MAKE_ARGS = {
     'www/galeon2' => '-DWITH_FULL_MOZILLA',
     'x11-fm/nautilus2' => '-DWITH_FULL_MOZILLA',
     'x11-servers/XFree86-4-Server' => '-DWITH_MATROX_GXX_DRIVER',
     'multimedia/mplayer' => '-DWITHOUT_RUNTIME_CPUDETECTION',
  }

  # BEFOREBUILD: hash
  #
  # This is a hash of ports glob => command mapping.  portupgrade(1)
  # and portinstall(1) look it up to pick commands to run before
  # building a port.  You can use wildcards ("ports glob").  If a
  # port/package matches multiple entries, all the commands are joined
  # using the semicolon as separator and run.
  #
  # cf. -B/--beforebuild of portupgrade(1), ports_glob(1)
  #
  # e.g.:
  #   BEFOREBUILD = {
  #     # Always do cvs update before building a port
  #     '*' => 'cvs update',
  #   }

  BEFOREBUILD = {
  }

  # AFTERINSTALL: hash
  #
  # This is a hash of ports glob => command mapping.  portupgrade(1)
  # and portinstall(1) look it up to pick commands to run after
  # installing a port.  You can use wildcards ("ports glob").  If a
  # port/package matches multiple entries, all the commands are joined
  # using the semicolon as separator and run.
  #
  # cf. -B/--afterinstall of portupgrade(1), ports_glob(1)
  #
  # e.g.:
  #   AFTERINSTALL = {
  #     # Automatically start MySQL server
  #     'databases/mysql323-server' => localbase() + '/etc/rc.d/mysql-server.sh start',
  #
  #     # Disable the startup script of Canna
  #     'ja-Canna' => 'cd ' + localbase() + '/etc/rc.d && mv canna.sh canna.sh.noauto',
  #   }

  AFTERINSTALL = {
  }

  # PKG_SITES: array
  #
  # This is a list of URI's to get packages from.  Each site directory
  # must contain directories named 'All' and 'Latest'.  The value of
  # the environment variable `PKG_SITES' is automatically prepended to
  # the list. (default: [pkg_site_mirror()])
  #
  # e.g.:
  #   PKG_SITES = [
  #     sprintf('ftp://ftp.localdomain/pub/freebsd/packages-%s/', OS_MAJOR),
  #     pkg_site_builder(true),
  #     pkg_site_builder(),
  #     pkg_site_mirror(),
  #     pkg_site_primary(),
  #   ]

  PKG_SITES = [
    pkg_site_mirror(),
  ]

  # PORTUPGRADE_ARGS: string
  #
  # This sets the default options passed to portupgrade(1).
  #
  # e.g.:
  #   PORTUPGRADE_ARGS = ENV['PORTUPGRADE'] || \
  #     '-v -l /var/tmp/portupgrade.results " + \
  #     '-L /var/tmp/portupgrade-'

  PORTUPGRADE_ARGS = ENV['PORTUPGRADE']

end

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030227163439.A13145D04>