Upgrading packages
Chris
racerx at makeworld.com
Wed Sep 2 05:05:16 UTC 2009
On Wed, 2 Sep 2009 01:32:47 +0200
Polytropon <freebsd at edvax.de> wrote:
> On Tue, 1 Sep 2009 17:15:53 -0500, Chris <racerx at makeworld.com> wrote:
> > Greetings,
> >
> > Probably a long time discussed question:
> > Updating a system is (or can be) done with freebsd-update.
> > What is the suggested way of upgrading packages (not ports)?
>
> There's at least portupgrade with the -P option that forces the
> use of packages. You can as well use pkg_add to perform an
> "upgrade-like" action, but you'll have to take care for more
> things manually.
>
>
>
From sysutils/bsdadminscripts - pkg_upgrade looks like what I am
after.
From the pkg_upgrade man page...
PKG_UPGRADE(1) BSD Reference Manual
PKG_UPGRADE(1)
NAME
pkg_upgrade - upgrade an installed package in-place
SYNOPSIS
pkg_upgrade [-afqsv] pkgname.cgz
DESCRIPTION
The pkg_upgrade command is used to upgrade an installed package
in-place. If no other version of the package is installed and -a
is not given, pkg_upgrade simply calls pkg_add(1). Otherwise, the
installed package is deleted and the new version is added, keeping
dependencies intact.
The following command line options are supported:
-a Ignore packages for which no older version is installed
(auto).
-f Force upgrading the package: Also upgrade if the exact
same ver- sion is already installed, useful if you rebuilt a
package from source. If a conflicting package other than an older
version of the same package is installed, remove it.
-q Don't print less important messages (quiet).
-s Enable special treatment for shared libraries, see below
(shlibs).
-v Pass the -v flag to subprocesses for more verbose
operation.
SHARED LIBRARY SUPPORT
pkg_upgrade has a special mode for upgrading shared library
packages. Consider the following situation: You have installed a
package foo that contains libfoo.so.1.0. Package bar is also
installed and contains a binary that depends on this version of
libfoo. Now you upgrade the foo package, the new version contains
libfoo.so.2.0 instead. The other binary will no longer run.
For this reason, systems like Debian split their library packages
in two: the library itself and a "developer" package containing
headers and so on. Instead, pkg_upgrade creates a "stub package"
from the installed package. Basically, the installed package is
split in two. The old li- braries are kept as a package named
stub-pkgname while the rest is delet- ed and replaced by the new
version.
In the general case, this should work but you may still run into
situa- tions where you will need to rebuild dependent packages
from source. In any case, you can delete unused stub packages
after you have rebuilt dependent packages.
SEE ALSO
pkg_add(1), pkg_create(1), pkg_delete(1), ports(7)
--
Best regards,
Chris
() ascii ribbon campaign - against html e-mail
/\ www.asciiribbon.org - against proprietary attachments
"There's no place like 127.0.0.1"
More information about the freebsd-questions
mailing list