LINUX.ORG.RU

Как обновить glibc или glibc-2.11.1 против ASPLinux 11.2(glibc-2.3.6)


0

0

Здравствуйте!
Cистема APSLinux 11.2, kernel 2.6.32.8, gcc 4.4.3.

Возникла необходимость обновить “glibc” ибо без версии выше 2.4 сейчас никуда.
скомпилил новые необходимые пакеты (gcc 4.4.3, binutils… и что там ему не хватало) для обновления “glibc” , но как всегда на мейке мы приехали….
In file included from nscd.c:46:
selinux.h:26:29: error: sys/capability.h: Нет такого файла или каталога
In file included from nscd.c:46:
selinux.h:49: ошибка: expected '=', ',', ';', 'asm' or '__attribute__' before 'preserve_capabilities'
selinux.h:51: ошибка: expected ')' before 'new_caps'
make[2]: *** [/usr/src/gnu/glibc-build/nscd/nscd.o] Ошибка 1
make[2]: Leaving directory `/usr/src/gnu/glibc-2.11.1/nscd'
make[1]: *** [nscd/others] Ошибка 2
make[1]: Leaving directory `/usr/src/gnu/glibc-2.11.1'
make: *** [all] Ошибка 2
конфигурил так:
../glibc-2.11.1/configure --prefix=/usr --with-headers=/usr/headers/include --enable-kernel=2.6.32.8
В каталоге /usr/headers/include находятся хеадеры которые туда положились по завершении компиляции ядра….
make headers_install ARCH=х86 INSTALL_HDR_PATH=/usr/headers

все это отписал на форум asplinux.ru но быстрого ответа от разработчиков не последовало, жду пока отпишут. Вот решил и у Вас попросить помощи...

но по ходу возникла более глобальная проблема , решил собрать более «младьшею» версию glibc 2.8 и вот make прошел и make install прошел и тут началось ни одна прога не запускается, а после ребута капец…. /etc/rc.d/rc.sysinit и куча ошибок посыпалось ...

попытка загрузить прежнее ядро 2.6.30 привела к неудаче система мне выдала типа kernel too old, kernel panic, подозреваю из-за того что glibc-2.8 был собран с headers от ядра 2.6.32.8 на котором и собирал glibc.

можно ли загрузившись с live cd смонтировать винт так чтобы можно было скомпилить glibc 2.8 с headers от ядра 2.6.30. На ядре 2.6.30 работал почти с даты его выхода и проблем с ним не было.
И если кто знает как правильно обновлять систему , чтобы не было подобных проблем yum install не предлагать )))))).
Спасибо за внимание.

можно ли загрузившись с live cd смонтировать винт так чтобы можно было скомпилить glibc 2.8 с headers от ядра 2.6.30

грузишься, компилишь, монтируешь винт, заменяешь glibc, кто мешает?

И если кто знает как правильно обновлять систему , чтобы не было подобных проблем yum install не предлагать ))))))

О боже... Возможно я вас удивлю, но package management действительно придумали не зря, а описанные выше действия, кажется, откровенно преследуют цель наделать дырок в собственной ноге, побюольше да побыстрее.

t184256 ★★★★★
()

>чтобы не было подобных проблем yum install не предлагать )))))).

чтобы не было подобных проблем - возьмите обновленный пакет с вашего дистрибутива, если шибко чешется собрать - возьмите source rpm и соберите или хотя бы посмотрите как и с какими ключами там собирается glibc, в противном же случае не удивляйтесь что у вас ничего не работает...

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

ASP 11.2 и через yum для него новые пакеты не доступны((( я вышел из ситуации скопровав из другой рабочей системы папку /lib со старым glibc. Но все же если вы знаете как превельно собрать glibc то подскажите пожалуйста. И какие параметры передавать configure?

doctor-ua
() автор топика
Ответ на: комментарий от doctor-ua

опишу общий неспецифичный дистрибутиву случай для GLIBC 2.9 и выше

устанавливаем заголовочные файлы ядра в /usr/include
заголовки должны быть не ниже той версии ядра, которую вы возможно когда либо будете загружать, в Ubuntu (даже новой) обычно берут 2.6.24 серверное ядро.

распаковываем исходники glibc (eglibc) применяем возможные патчи, я обычно беру eglibc с debian и их патчи
В принципе если вам все равно какая версия, то возьмите GLIBC 2.11.2 (ванильную) или EGLIBC 2.10.2 (Debian Sid), вторую нужно патчить патчами в debian/patches/


для GLIBC младше чем 2.10 используется GCC 4.3.x, 2.10 и старше - 4.4 ,
для EGLIBC можно более свободно задавать флаги CFLAGS

ставите окружение (можно другое, но это общий безопасный случай)

export CC=gcc
export CFLAGS="-O2 -march=i686"

-march= ключик фактически обязательный и если его не указать, могут быть ошибки, указываете свою архитектуру

создаете отдельный каталог где будете вести сборку

mkdir build
cd build
конфигурируете

../configure --prefix=/usr --host=i686-pc-linux --build=i686-pc-linux --enable-omitfp --enable-stackguard-randomization --without-cvs --enable-add-ons=libidn,nptl --with-tls


--prefix=/usr - обязателен
--host= --build= указываете архитектуру
--with-tls для ядра больше 2.6.8 (в совсем новых GLIBC - включен по умолчанию)
--enable-addons=libidn,nptl - обязательный параметр, NPTL включен в ядрах серии 2.6

для debian multiarch (i686/tls/sse2) версий - все «клоны» должны быть одной версии, т.е. их тоже надо обновить или удалить чтобы не мешались

В целом могу сказать что ручное обновление Glibc не очень уж и простая задача.


Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Спасибо большее!!!! попробую. Хочу сразу сказать что если headers установить сразу в /urs/include то ничего мейком собрать нельзя сыпятся ошибки..потому и сменил папку. Может это граби в самом ASP дистрибутиве с путями или еще счемто....но заметил ситуацию если glibc явно указать хеадеры при сборке то можно загрузить только то ядро с которым собран glibc, на все остальное система говорит kernel too old и хоть убейся )))). Ладно буду пробывать. ЕЩЕ РАЗ СПАСИБО!!!!!

doctor-ua
() автор топика
Ответ на: комментарий от doctor-ua

cыпалось у вас возможно потому что

не указали -march

не работало потому что
не указали --with-tls --enable-add-ons=nptl,libidn

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

((((( Сделал все как Вы указали. Установил заголовки в /usr/include, но при конфигуре ../glibc-2.11.1/..... выдает
checking how to run the C preprocessor... /lib/cpp
configure: error: in `/usr/src/gnu/glibc-build':
configure: error: C preprocessor «/lib/cpp» fails sanity check
See `config.log' for more details.

и как я уже писал при попытке что то скомпилисть, к примеру make menuconfig вываливает...
HOSTCC scripts/basic/fixdep
In file included from scripts/basic/fixdep.c:107:
/usr/include/sys/types.h:27:22: error: features.h: ����� ���������
In file included from /usr/include/sys/types.h:31,
from scripts/basic/fixdep.c:107:
/usr/include/bits/types.h:31: ошибка: expected '=', ',', ';', 'asm' or '__attribute__' before 'typedef'
/usr/include/sys/types.h:133:18: error: time.h: ����� ���������
ну и так далее...

дело в том что при установке хеадеров не появляется папка sys в /usr/include ее приходится копировать из ядра вручную. Может я не так устанавливаю заголовки?

make headers_install ARCH=x86 INSTALL_HDR_PATH=/usr

coonfig.log от glibc если это поможет.

http://193.239.178.253:57081/help/www/tmp/config.log

буду..далеше разбираться в чем проблема. Спасибо!


doctor-ua
() автор топика
Ответ на: комментарий от doctor-ua

Да к стати Ваш архивчик помог. http://narod.ru/disk/17846202000/eglibc-2.10.2-5.tar.gz.html

Все заработало. Только так не интерестно...не люблю «списывать». Попробую на другой винт поставить чистую систму и собрать все с 0. ЕЩЕ раз спасибо!!!!

doctor-ua
() автор топика

и кто там говорил, что гентушники - мазохисты?

FractalL
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.