Monday, 19 April 2010

Пересборка libc6 в Debian 5 Lenny

Ога, даже такое может потребоваться :)

Ставим все для сборки:
apt-get install -y dpkg-dev devscripts build-essential fakeroot



cd /usr/src
apt-get build-dep libc6 -y
apt-get source libc6 -y
cd glibc-2.7


Накладываем патчи:

debian/rules patch


После этого в папке ls build-tree/glibc-2.7/ можно видеть все необходимое для сборки, заходим туда и нагло патчим все, что нужно :)

На правах ремарки, код сборки ld-linux.so.2 расположен по пути: build-tree/glibc-2.7/elf/Makefile. Вызов сборки идет из:
build-tree/glibc-2.7/Makefile:

100 # Make sure that the dynamic linker is installed before libc.
101 $(inst_slibdir)/libc-$(version).so: elf/ldso_install


А сам код расположен в build-tree/glibc-2.7/elf.

Собираем libc:

debian/rules build


Собираем бинарный пакет:
fakeroot debian/rules binary


Итого в папке /usr/src появится куча файлов, из которых нам нужны:

libc6-dev-i386_2.7-18lenny2_amd64.deb
libc6-dev_2.7-18lenny2_amd64.deb
libc6-i386_2.7-18lenny2_amd64.deb
libc6_2.7-18lenny2_amd64.deb


Так как в стандартной сборке Дебы:
dpkg -l | grep 'GNU C Library'
ii libc6 2.7-18lenny2 GNU C Library: Shared libraries
ii libc6-dev 2.7-18lenny2 GNU C Library: Development Libraries and Hea
ii libc6-dev-i386 2.7-18lenny2 GNU C Library: 32bit development libraries f
ii libc6-i386 2.7-18lenny2 GNU C Library: 32bit shared libraries for AM


Ставим:

dpkg -i libc6-dev-i386_2.7-18lenny2_amd64.deb libc6-dev_2.7-18lenny2_amd64.deb libc6-i386_2.7-18lenny2_amd64.deb libc6_2.7-18lenny2_amd64.deb


Блокируем пропатченный libc от апдейта:
echo "libc6 hold" | dpkg --set-selections
echo "libc6-i386 hold" | dpkg --set-selections
echo "libc6-i386-dev hold" | dpkg --set-selections
echo "libc6-dev hold" | dpkg --set-selections


Спасибо за помощь: http://www.pubbs.net/200910/ubuntu/23274-re-how-to-apply-a-patch-to-glibc-and-build-it.html и http://www.debian.org/doc/maint-guide/ch-build.en.html

No comments:

Post a Comment

Note: only a member of this blog may post a comment.