It occurred to me that Zbigniew Baniewski wrote in
gmane.os.netbsd.general:
> Hallo,
>
> recently I tried to update ROX-filer to a newer
version. So, I unpacked
> (as root) pkgsrc "tree" (the one from 1.
April), changed directory to
> appropriate (/usr/src/pgsrc ... /rox), then simply
typed "make". After a
> while there was a report, that a newer version of
glib2-2.8.4 will be
> needed.
There's probably a lot of packages which will be outdated,
then. You don't
say what pkgsrc you had before, but if it's an older stable
branch, or an
older snapshot, there's likely to be a lot of updated
packages. Updating
individual packages while keeping most others is a bit
tricky.
> So far - so good. So, removed current version of
ROX-filer with "pkg_delete
> rox" (I know, it wasn't necessary), and then
typed "make update", still
> being in [..]/rox sub-dir. And then the whole problem
began:
Well, you probably didn't. You probably entered 'make
update' in devel/glib2.
'make update' in /rox wouldn't have done a lot; it
would've deleted all
packages dependant on rox-filer (But since you already
removed the rox-filer
package, there wouldn't have been any), rebuild rox, and
re-compile all
dependencies that were installed before.
But there were none.
> It did remove about 100 packages, which I wasn't going
to update - packages,
> which aren't "corresponding" to ROX in any
way (like irssi, mc and so on).
Which is making me believe that you really entered it in
devel/glib2. irssi
depends only on glib2 and perl, for instance. If you 'make
update' glib2, it
will delete *all* packages that depend on glib2 (Which is
quite a lot), replace
glib2, and rebuild the packages that were there before.
> The compilation was about 40 hours long :(( (Pentium
II-400). Not all the
> removed packages were rebuilt - f.e. it did remove
firefox, but it didn't
> update it from sources! I had to install it
"manually", when I noticed, it's
> not present.
That's probably because the 'make update' failed. Because
you updated glib2,
all packages that depended on glib2 (or gtk2, or..) would be
updated in
the process. There is a big chance that one of them have
another updated
dependency, one which you didn't update. If some package
'bar-1.0' you
installed before depends on glib2 and libfoo, it will be
rebuilt if you
run 'make update' in glib2. However, 'bar-1.1' happens
to require a newer
version of libfoo *in addition* to the updated glib2. Since
you didn't update
libfoo, building 'bar-1.1' will fail. Unfortunately, this
also means that
the 'make update' you started in glib2 will abort.
Really, entering 'make update' can be a dangerous process,
if you do it
without care and attention. If you do it in the wrong order,
you might end
up rebuilding packages over and over again, with no
guarantee of success.
> My question: did I something wrong, that instead of
just update ROX (and
> eventually a few corresponding libraries, that ROX's
depending on), "make
> update" wanted to replace about 1/3 of all the
already installed packages?
Yes. You told it to update glib2 instead of ROX.
> And why it was done in such unclean way - I mean: some
packages were removed,
> but not restored in newer version anymore (like
firefox)?
See above; you have other conflicts besides the glib2 one.
See lintpkgsrc -i
(to be found in pkgtools/pkglint) to find them out.
pkgdepgraph can help you
find the best rebuild order.
See http://mail-index.netbsd.org/port-i386/2004/05/31/000
3.html for an
example.
> And why it didn't even report something like:
"these packages were erased,
> but not built again: *a list of missing
packages*"?
"Error 1. Stop." sounds like a "hey,
something is wrong here." to me..
|