Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Dec 2008 10:16:00 +0000
From:      Matthew Seaman <m.seaman@infracaninophile.co.uk>
To:        Li <fender0107401@gmail.com>
Cc:        freebsd-doc@freebsd.org
Subject:   Re: A question about update(I think it should be added to our faq).
Message-ID:  <49535D60.2060101@infracaninophile.co.uk>
In-Reply-To: <1230175126.1189.26.camel@localhost>
References:  <1230175126.1189.26.camel@localhost>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig57D2B81E6E55B9C2B6926419
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

Li wrote:

> The question is:
>=20
> If I update system from release_6.1 to release_7.0, whether I should
> re-compile every ports use the "portupgrade -af" command.
>=20
> Somebody told me "yes", "no" or "recommendatory", but they have not giv=
e
> me any explanation, so I am confused about it.

Something like this as an answer to the FAQ?

The answer is definitely "yes" -- while a 7.0 system will run with
software compiled under 6.1, you will end up with stuff randomly
crashing and failing to work once you start installing other ports or
updating a portion of what you already have.

The simple reason is that software compiled for 6.1 will link against
libc.so.6 and software compiled on 7.0 will link against libc.so.7 --=20
this includes other shlibs, loadable modules etc. which themselves can be=

linked against or loaded by end-user applications.  Applications that
ultimately try to load two different versions of libc.so tend to have
short and unhappy lives.

However, simply doing 'portupgrade -af' unfortunately won't get you
there.  portupgrade itself will crash when it updates packages it
depends on.

There are three procedures that should work effectively:

 1) Make a list of all your installed software, then 'pkg_delete -a'
    to remove everything and then reinstall it all from scratch.  This
    is the most effective method, in that it's impossible for any
    packages to slip through un-updated, but it means downtime for
    everything on that server throughout the whole update procedure.=20
    If you have pkgs pre-built for everything you need so you can
    reinstall quickly, then this is definitely the way to go.

 2) First, delete portupgrade and everything it depends on.  ie.
   =20
       pkg_info -qrx portupgrade | cut -d ' ' -f 2 | xargs pkg_delete -f

    (Note: 'pkg_deinstall -fR portupgrade' is not recommended)=20

    Then reinstall portupgrade (and dependencies):

       cd /usr/ports/port-mgmt/portupgrade
       make install
       pkgdb -F

    And then use the newly rebuilt portupgrade to reinstall all the
    rest of the software on the machine -- or rather, all ports installed=

    before the current date:

       portupgrade -f '<2008-12-25'

    The big advantage of this command is that if something goes wrong (an=
d
    it is quite likely to), you can fix the problem and then rerun the sa=
me
    command to pick up anything still left un-updated.

 3) Use portmaster instead of portupgrade.  Very simple, and because
    portmaster is a /bin/sh script with no dependencies other than
    the base system it won't suffer the same randomly-crashing fate.

	Cheers,

	Matthew

--=20
Dr Matthew J Seaman MA, D.Phil.                   7 Priory Courtyard
                                                  Flat 3
PGP: http://www.infracaninophile.co.uk/pgpkey     Ramsgate
                                                  Kent, CT11 9PW


--------------enig57D2B81E6E55B9C2B6926419
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAklTXWgACgkQ8Mjk52CukIw2WACeJpiUxPZq+jgXJlKxpB6/rTBz
2n8An3JXR/J5C5Bp9Zp5WjTvX1ehpGQO
=tH3j
-----END PGP SIGNATURE-----

--------------enig57D2B81E6E55B9C2B6926419--



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