You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
2.1 KiB
58 lines
2.1 KiB
10 years ago
|
Title: Upgrading to musl 1.1.5
|
||
|
Author: Anthony G. Basile <blueness@gentoo.org>
|
||
|
Content-Type: text/plain
|
||
|
Posted: 2014-10-22
|
||
|
Revision: 1
|
||
|
News-Item-Format: 1.0
|
||
|
Display-If-Installed: sys-libs/musl
|
||
|
|
||
|
Versions 1.1.4 and above of musl provide Native Language Support (nls). Up
|
||
|
till now, Gentoo musl stages have used GNU gettext to provide nls via libintl.so
|
||
|
and linked applications against it. Beginning with musl-1.1.5 we are switching
|
||
|
to nls provided by musl. Since musl is experimental, you are better off starting
|
||
|
with a new stage3 dated later than 2014-10-20. However, if you wish to upgrade
|
||
|
an existing system, you can proceed as follows:
|
||
|
|
||
|
1. Remove any references to -lintl from /etc/portage/package.env and
|
||
|
/etc/portage/env/*. If you did not modify these from the original stage3
|
||
|
then you can just do `rm -rf /etc/portage/package.env /etc/portage/env`
|
||
|
|
||
|
2. Update your system, except for musl:
|
||
|
|
||
|
emerge --exclude musl -uvNDq world
|
||
|
|
||
|
3. Remove the libintl header belonging to gettext:
|
||
|
|
||
|
rm -f /usr/include/libintl.h
|
||
|
|
||
|
4. Now you can update musl without a file collision:
|
||
|
|
||
|
emerge -1q =sys-libs/musl-1.1.5
|
||
|
|
||
|
5. We need to turn USE=nls off in gettext:
|
||
|
|
||
|
echo "=sys-devel/gettext-0.19.3" >> /etc/portage/package.accept_keywords
|
||
|
echo "sys-devel/gettext -nls" >> /etc/portage/package.use
|
||
|
emerge -1 gettext
|
||
|
|
||
|
6. Rebuild any packages that might be linking against libintl.so:
|
||
|
|
||
|
USE=-nls emerge -uvDNq world
|
||
|
|
||
|
7. The previous step probably missed some executables, so find them all:
|
||
|
|
||
|
for i in /bin/* /sbin/ /usr/bin/* /usr/sbin/* ; do
|
||
|
readelf -d $i 2>&1 | grep -q libintl.so && echo $i
|
||
|
done
|
||
|
|
||
|
You can identify what packages these belong to uing `equery b <exe>` Rebuild
|
||
|
those packages.
|
||
|
|
||
|
8. At this point you can remove /usr/lib/libintl.so*. To be safe, check that
|
||
|
all your coreutils utilities (like mv, cp, ls, etc.) really aren't linking
|
||
|
against libintl.so as described in the previous step and then mv that library
|
||
|
out of the dynamic linker's search path.
|
||
|
|
||
|
9. While not strictly necessary, you can rebuild your entire system to make
|
||
|
sure everything links nicely against the new libc.so: emerge -evq world
|