LinuxForum.Fans
Тема

компилирование libc6

Автор: Peter 36 сообщений 3631 просмотров
17.01.2017 13:49 · отредактировано #419053

Здравствуйте!

В Astra Linux 1.3 с ядром 3.0.27-generic по совету от "Русбитех" пытаюсь
скомпилировать libc6 от Debian Wheezy, т.к. сейчас в установленной системе libc6
не от Astra, а от Wheezy и именно это, по их предположению, делает невозможным
вход в систему со скомпилированым ядром, с дистрибутивным проблем со входом нет.

Есть два варианта, пока ни один не получается.
1-й - взять исходный текст в виде eglibc-2.13.tar.gz и патч к нему, наложить патч,
при этом в дереве исходных текстов создаётся каталог debian, затем командой

text
quilt push -a

применить эти патчи и дальше компилировать как обычно, через configure и make.
Компилирование останавливается из-за несовпадения интерфейсов - некий
программный модуль ищет в структуре член, которого в ней нет, хотя linux-headers
соответствуют ядру, но, возможно, являются устаревшими для libc6.

2-й - взять deb-пакет с libc6-source той же версии, там каталог debian с патчами
уже есть, а исходные тексты в архиве. Я установил пакет, распаковал архив,
сделал в нём ссылку на этот debian, либо прямо переносил debian внутрь,
результат одинаковый - эта же команда не накладывает патчи, идут сообщения
FAILED да rejected.
В чём тут дело, как в этом случае, с deb-пакетом, выполнить команду "quilt push -a"?
Я раньше даже не знал о её существовании.

Пётр.

17.01.2017 14:01 #419054
"Peter" написал:
В чём тут дело

В том, что Астра ни разу не Дебиан и совместимости с его репами никому никто не обещал.

17.01.2017 14:51 #419060
stranger написал:
[quote="Peter"]В чём тут дело

В том, что Астра ни разу не Дебиан и совместимости с его репами никому никто не обещал.[/quote]
Да, на сегодняшний день совместимости нет, но, когда Astra 1.3 только вышла,
то мне в поддержке сказали, что к ней можно прямо подключать репозитарии Wheezy.
Сейчас это не так, версии пакетов уже не совпадают.

Что касается моего вопроса, то такое впечатление, что эти патчи уже наложены,
т.к. файлы debian/patches/series со списками просмотренных патчей совпадают
для debian/patches в deb-пакете и в debian/pathes, созданным сегодня при наложении
патчей для варианта с архивом, отличаются только даты, но в в этом варианте после
выполнении команды "quilt push -a" в дереве исходных текстов создался также
каталог manual, содержащий Makefile, а в deb-пакете его нет,
из-за чего и останавливается компиляция.

Пётр.

17.01.2017 14:56 #419061

Вы можете внятно объяснить, зачем лично Вам Астра?

17.01.2017 15:05 #419062

Peter, сравните дифом файл, который затрагивает один из патчей. Тогда поймете.

17.01.2017 15:43 #419063
stranger написал:
Вы можете внятно объяснить, зачем лично Вам Астра?

Да мне лично не так уж важно, это на работе Astra.

Пётр.

17.01.2017 15:44 #419064
Peter написал:
[quote=stranger]Вы можете внятно объяснить, зачем лично Вам Астра?

Да мне лично не так уж важно, это на работе Astra.

Пётр.[/quote]

Вы на ней работаете с приложениями или Вы её администрируете?

17.01.2017 15:53 · отредактировано #419065
XliN написал:
Peter, сравните дифом файл, который затрагивает один из патчей. Тогда поймете.

Я пробовал искать вручную с помощью grep, откуда там добавляется этот manual.
Там сказано, что его и не должно быть из-за каких-то лицензионных соглашений,
но патч с этим Makefile есть и он совпадает с manual/Makefile из варианта с просто
архивом исходных текстов. Я добавил его вручную и после этого компиляция прошла
уcпешно. Теперь надо как-то построить бинарный deb-пакет.

Пётр.

stranger написал:
[quote=Peter][quote=stranger]Вы можете внятно объяснить, зачем лично Вам Астра?

Да мне лично не так уж важно, это на работе Astra.

Пётр.[/quote]

Вы на ней работаете с приложениями или Вы её администрируете?[/quote]
И то и другое, хотя это не больше чем одноранговая сеть с тремя или четырьмя
компьютерами. Я даже и создаю эти придожения.

Пётр.

17.01.2017 16:27 · отредактировано #419066
Peter написал:

И то и другое, хотя это не больше чем одноранговая сеть с тремя или четырьмя
компьютерами. Я даже и создаю эти придожения.

Пётр.

Тогда обратитесь в официальную техподдержку Астры.

Там очень вменяемые люди.

17.01.2017 17:50 · отредактировано #419067
stranger написал:
[quote=Peter]
И то и другое, хотя это не больше чем одноранговая сеть с тремя или четырьмя
компьютерами. Я даже и создаю эти придожения.

Пётр.

Тогда обратитесь в официальную техподдержку Астры.

Там очень вменяемые люди.[/quote]
Так они мне и посоветовали скомпилировать libc6.
Не знаю, надо ли компилировать ещё и libc6-386.

Пётр.

17.01.2017 17:52 #419068
Peter написал:
[quote=stranger][quote=Peter]
И то и другое, хотя это не больше чем одноранговая сеть с тремя или четырьмя
компьютерами. Я даже и создаю эти придожения.

Пётр.

Тогда обратитесь в официальную техподдержку Астры.

Там очень вменяемые люди.[/quote]
Так они мне и посоветовали скомпилировать libc6.
Не знаю, надо ли компилировать ещё и libc6-386.

Пётр.[/quote]

Зачем?

17.01.2017 18:10 #419069
stranger написал:

Зачем?

Если это насчёт libc6-386, то не знаю, м.б., для единообразия.
Вдруг что-нибудь случится или потребуется.

Пётр.

17.01.2017 18:15 #419070
Peter написал:
[quote=stranger]
Зачем?

Если это насчёт libc6-386, то не знаю, м.б., для единообразия.
Вдруг что-нибудь случится или потребуется.

Пётр.[/quote]

Потребуется вдруг ЧТО?

Ещё раз, Вам Астра зачем? Вы работаете в организации, которая имеет лицензию на её использование?

17.01.2017 20:17 #419079
stranger написал:
[quote=Peter][quote=stranger]
Зачем?

Если это насчёт libc6-386, то не знаю, м.б., для единообразия.
Вдруг что-нибудь случится или потребуется.

Пётр.[/quote]

Потребуется вдруг ЧТО?

Ещё раз, Вам Астра зачем? Вы работаете в организации, которая имеет лицензию на её использование?[/quote]
Да, Astra была законно куплена.

Что потребуется - не знаю, т.к. до сих пор ничего такого не требовалось.
Вдруг захочется запустить 32-разрядное приложение.

Пётр.

18.01.2017 16:56 · отредактировано #419108

Оказалось, что скомпилировалось не всё:
не скомпилировались две *.so для /usr/lib/x86_64-linux-gnu/libc -
memcpy-preload.so и memcpy-syslog-preload.so,
а ещё в usr/lib/x86_64-linux-gnu/gconv должны быть два файла - gconv-modules и
gconv-modules.cache, они тоже не создались.
М.б., кто-нибудь знает, как компилировать этот eglibc-source, чтобы появились эти
две библиотеки и как создаются эти два файла?

Пётр.

19.01.2017 15:07 · отредактировано #419135

Скомпилировать как-то удалось, но для компилирования memcpy-preload.so и
memcpy-syslog-preload.so пришлось вручную запускать make в каталоге с
memcpy-preload.c, там есть свой Makefile, но он не обрабатывается при запуске
make для всего пакета. Я этот каталог перенёс в корень дерева исходных
текстов.

Как создаются два файла в usr/lib/x86_64-linux-gnu/libc - gconv-modules и
gconv-modules.cache - я не знаю и поэтому оставил старые, также как и скрипты
в каталоге DEBIAN и файл symbols там же, заново создал только md5sums.
Командой "dpkg-deb --build" построил deb-пакет, но переустановить его
не удалось, вот сообщения:
[console]
Подготовка к замене пакета libc6:amd64 2.13-38+deb7u10 (используется файл …/libc6_2.13-38+deb7u10_amd64.deb) …
Распаковывается замена для пакета libc6:amd64 …
dpkg (подпроцесс): не удалось запустить старый сценарий post-removal (/var/lib/dpkg/info/libc6:amd64.postrm): Отказано в доступе
dpkg: предупреждение: подпроцесс старый сценарий post-removal возвратил код ошибки 2
dpkg: попытка использовать сценарий из нового пакета …
dpkg (подпроцесс): не удалось запустить новый сценарий post-removal (/var/lib/dpkg/tmp.ci/postrm): Отказано в доступе
dpkg: ошибка при обработке параметра /media/hard/repo_w_a_13/debian/pool/main/e/eglibc/libc6_2.13-38+deb7u10_amd64.deb (--unpack):
подпроцесс новый сценарий post-removal возвратил код ошибки 2
dpkg (подпроцесс): не удалось запустить установлен сценарий pre-installation (/var/lib/dpkg/info/libc6:amd64.preinst): Отказано в доступе
dpkg: ошибка при очистке:
подпроцесс установлен сценарий pre-installation возвратил код ошибки 2
При обработке следующих пакетов произошли ошибки:
/media/hard/repo_w_a_13/debian/pool/main/e/eglibc/libc6_2.13-38+deb7u10_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
[/console]

Просьба подсказать, в чём причина и что делать. Заменились только библиотеки.

Пётр.

19.01.2017 15:38 #419137

Если после этого дать команду "apt-get -f install", то она сообщает,
что пакет не готов к настройке.

Пётр.

19.01.2017 17:04 #419139

Я удалил файл lock из /var/lib/dpkg, после этого скомпилированный пакет с libc6
успешно установился, но проблему это не решило - скомпилированное ядро
загружается, но не пускает пользователя в систему, а дистрибутивное пускает.
А до синхронизации установленной системы с Debian Wheezy можно было
войти и со скомпилированным ядром. При этом обновилось 57 пакетов.

Пётр

19.01.2017 20:04 #419147
Peter написал:
Я удалил файл lock из /var/lib/dpkg, после этого скомпилированный пакет с libc6

libc6 - это интерфейс любых приложений к системным вызовам, и если вы и скомпилируете из заплаток таким образом библиотеку, из исходников чужой системы (дистрибутива), то вы потом будете таких runtime ошибок ловить, в тех приложениях, которые вы, якобы, собираетесь писать, что ... "мама не горюй".

Не будет ли целесообразней вам просто уволиться из этой конторы? *DRINK*

19.01.2017 20:12 #419148
Olej написал:
[quote=Peter]Я удалил файл lock из /var/lib/dpkg, после этого скомпилированный пакет с libc6

libc6 - это интерфейс любых приложений к системным вызовам, и если вы и скомпилируете из заплаток таким образом библиотеку, из исходников чужой системы (дистрибутива), то вы потом будете таких runtime ошибок ловить, в тех приложениях, которые вы, якобы, собираетесь писать, что ... "мама не горюй".

Не будет ли целесообразней вам просто уволиться из этой конторы? *DRINK*[/quote]
Каких заплаток? Я же говорил, что это source-пакет от Debian Wheezy, а Astra Linux основана именно на Wheezy,
но сейчас, конечно, версии многих пакетов в них неодинаковые.
Во всяком случае, сегодня после этого я одно такое своё приложение запускал и ничего, работает.

Пётр.

Войдите или зарегистрируйтесь, чтобы ответить.