[Nottingham] Gentoo experts: emerge file collisions!?
martin at ml1.co.uk
Thu Nov 12 15:23:55 UTC 2009
In brief-ish for upgrading the Gentoo glibc:
I've found a few useful comments:
"Upgrading glibc doesn't actually work, because glibc depends on
timezone-data. You can't install the new glibc without doing the
>>> emerge -K glibc
> That gives a:
> * Package 'sys-libs/glibc-2.9_p20081201-r2' NOT merged due to file
> * collisions. If necessary, refer to your elog messages for the whole
> * content of the above message.
>>> The best thing to do is probably to just temporarily disable collision
>>> COLLISION_IGNORE="/" emerge glibc
Is there some special functionality for missing out the ";" to make bash
treat that as the two instructions:
Regardless, no change with the "NOT merged".
>>> With any luck thats all it will take, check stuff is working, re-emerge
>>> stuff to use the new glibc, and move on.
> I actually used:
> COLLISION_IGNORE="/" ; emerge glibc
> and it soon dived into a whole big load of compiling. Wouldn't it take
> advantage of the existing compiled binary packages or is a "-K" needed
With or without ";" made no difference.
Meanwhile, portage 2.1.5 /should/ gracefully handle collisions by
juggling the install/update order... Except for system or portage
dependent files... And for when jumping to new 'slots'.
Handling File Collisions Between Blocking Packages
That's all from last year and the current portage is 2.1.6. Very good
and clever stuff. I'm still amazed it all works automatically at all!
Also, you can use "equery belongs file_name" to list what is blocking.
!!! Your current profile is deprecated and not supported anymore.
!!! Please upgrade to the following profile if possible:
To upgrade do the following steps:
# Check 'eselect profile list'.
# Find the number that corresponds with the default/linux/x86/10.0 profile.
# Use 'eselect profile set <number>' to set a new /etc/make.profile symlink.
# Reference: http://www.gentoo.org/doc/en/gentoo-upgrading.xml
# See: "General instructions" in Section 3. "Profile updating instructions"
eselect profile list
eselect profile set 4
emerge -vDup system
Total: 65 packages (29 upgrades, 33 new, 3 in new slots, 1 uninstall),
Size of downloads: 132,304 kB
Conflict: 1 block
Portage tree and overlays:
[?] indicates that the source repository could not be determined
That ran through the new updates fine until the glibc block stopped
The fix for that is to use:
FEATURES="-collision-detect -protect-owned" emerge glibc 2>&1 | tee
Note, I actually used "emerge -K" to take advantage of having already
compiled the glibc by using the -b option previously. The tee log bit is
just to aid debugging if anything were to go wrong!
Afterwards, remember to do:
so that you get collision detection enabled oncemore.
All then updated nicely. As expected, there were quite a few .cfg files
to check and mv or update for the new stuff.
A quick summary for updating is (as root):
emerge --pretend --update portage
emerge --update portage
emerge --pretend gentoo-sources
-D = "deep"
-b = saves binary build packages also
-N - update for new use flag settings made
emerge -vDup system
emerge -vDu system 2>&1 | tee /var/tmp/emerge_system.log
emerge -vDup world
emerge -vDu world 2>&1 | tee /var/tmp/emerge_world.log
Check for any surprises from the "--pretend" steps before actually doing
that step (no "--pretend" or "-p").
The emerge package list abbreviations are:
N new (not yet installed)
S new SLOT installation (side-by-side versions)
U updating (to another version)
D downgrading (best version seems lower)
R replacing (remerging same version))
F fetch restricted (must be manually downloaded)
f fetch restricted (already downloaded)
I interactive (requires user input)
B blocked by another package (unresolved conflict)
b blocked by another package (automatically resolved
USE flags are set in /etc/make.conf
A description of most USE flags are available in the file
And one fun comment:
> kernels should be somewhat looked over by users, not just cleaned up
> like any old package
No big deal at all, once an a while
emerge gentoo-dev-sources -C && emerge gentoo-dev-sources
does the trick (yeah I know I'm too lazy to do it elegant).
Hope that helps others for the Gentoo fun!
martin at ml1.co.uk
More information about the Nottingham