LINUX.ORG.RU

Обновляйте glibc через $DESTDIR

 , ,


1

2

Сколько помню, всегда обновлял glibc как написано в LFS Book:

./configure && make && make install
Однако, по ходу, после glibc 2.31 поведение изменилось и теперь такое работает только для новой системы, а не обновления уже существующей.

Грабли возникают уже на том этапе, что «make install» сначала устанавливает ряд файлов, а только потом ещё дособирает другой ряд файлов. В итоге получается, что, например, GCC уже собирает бинарники для нового glibc'а, а его в системе пока ещё нет. И вот обойти эти грабли можно задав отдельную директорию через $DESTDIR. Сначала glibc устанавливает себя туда, а уже потом это файло перемещается в систему.

Также glibc теперь хардкодит в себя --prefix, который должен быть «/usr». А по старым стандартам *.so файлы glibc'а перемещались из /usr/lib в /lib на тот случай, если, вдруг, /usr нет при загрузке системы. А теперь оно стало работать не так.

Сейчас буду обновлять систему дальше, а пока нахожусь одной ногой в старых стандартах, а другой в новых, это выглядит в т.ч. так:

> ls -l /lib/ld-linux-x86-64.so.2
lrwxrwxrwx 1 root root 31 сен 28 12:57 /lib/ld-linux-x86-64.so.2 -> ../usr/lib/ld-linux-x86-64.so.2
>
Старые бинарники ищут /lib/ld-linux-x86-64.so.2, а новые /usr/lib/ld-linux-x86-64.so.2.

★★★★★

Последнее исправление: sudopacman (всего исправлений: 1)

А я люблю представлять, что я скрипт для сборки, и вручную выполнять все команды. На две команды целый день уходит…

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

Ты просто не любишь конпелять так же, как любим мы.

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

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

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

Не всем нужен пакетный менеджер.

Не всем нужен Интернет.

Не всем нужен компьютер.

Не всем нужно электричество.

Не всем нужен водопровод.

Не всем нужна термическая обработка пищи.

Не всем нужна одежда.

Не всем нужно прямохождение.

🐒

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

Это не так называется, поскольку у софта со временем появляются новые особенности, которые не до конца отражены в документации.

Вот я и рассказываю то, о чём молчит документация. А то, мало ли, кто-нибудь будет думать, что у него в системе где-то грабли есть, и будет долго их искать. А тут дело не в этом, а в том, что если раньше glibc обновлялся по LFS Book, то теперь LFS Book недостаточно.

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

Это не так называется, поскольку у софта со временем появляются новые особенности, которые не до конца отражены в документации.

если в документации к пистолету не написано «не направлять себе в глаз» - всё равно ты облажался

для серьёзных дядь достаточно исходников, остальные не лезут в сборку низкоуровневых системных компонентов

anonymous
()

Пакетники? Нет, не слышал.

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

Сравнение некорректно. В документации написано.

./configure && make && make install
Раньше так обновление и работало. А теперь оно так работать перестало. Теперь так только установка работает, но не обновление. Для обновления теперь надо
./configure && make && DESTDIR="newglibcdir" make install
+ дополнительные шаги.

И вот эти вот изменения не описаны в документации.

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

Сравнение некорректно

корректно.

В документации написано

серьёзные дяди, собирающие системные компоненты не читают эту документацию

anonymous
()

make && make install

Всегда удивляло зачем надо вызывать make 2 раза если одного make install достаточно?

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

Но причём тут хардкодит префикс? По дефолту если без параметров вообще запускать, то префикс вообще будет /usr/local. Это же поведение самой системы сборки такое.

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

Даже Патрик читает .spec файлы Федоры.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от Ja-Ja-Hey-Ho

Ну и обратите внимание на часть книги. Это описание сборки промежуточного тулчейна. Сборка glibc'а для системы описана в другой части книги.

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

Речь о том, что в итоговых бинарниках захардкожено с каким префиксом был запущен ./configure. Т.е. перемещать их по системе не получится, поскольку другие бинарники будут искать требуемое именно по захардкоженным путям. А раньше такого не было.

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

и каким образом make install проверяет надо ли сделать пересборку?
То есть если ты собрал из исходников что-то, потом внес правку в исходники, то make install должно пересобрать заново измененный исходник? Почему?

xmikex ★★★★
()
Ответ на: комментарий от Ja-Ja-Hey-Ho

Но раньше всё работало и без этого. А теперь поведение изменилось. Я-то теперь об этом знаю. Сообщаю тем, кто ещё не знает.

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

то make install должно пересобрать заново измененный исходник? Почему?

У меня пересобирает. Или кривые autotools это не умеют? Если поменять файлы сборки, то тоже пересобирает как надо.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от xmikex

вообще можешь посмотреть любой макефайл. make install делает make all и шаги для установки.

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

А у меня так:

> file /lib64
/lib64: symbolic link to lib
> file /usr/lib64
/usr/lib64: symbolic link to lib
>

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

Компьютером и интернетом вполне можно пользоваться без пакетного менеджера и юникодной локали.

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

жить вполне можно без рук, ног, и некоторых внутренних органов

anonymous
()
Ответ на: комментарий от hobbit

LFS ты устанавливаешь либо в образовательных целях, либо потому что собрался свой дистрибутив создавать. В первом случае ты это не будешь всерьёз использовать в течение длительного времени в качестве основной системы. Во втором нужен пакетный менеджер.

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

И во втором случае пакетный менеджер не обязателен. Особенно, если в системе нет иксов, вейланда и GUI софта.

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

LFS ты устанавливаешь либо в образовательных целях, либо потому что собрался свой дистрибутив создавать.

А все остальные применения ты запрещаешь? Свободное ПО (за которое ты, между прочим, топишь в соседней теме) — оно про разнообразие. Я вот считаю, что опыт ТСа может неожиданно оказаться востребованным, в том числе людьми, которые этого не ожидали. Пусть экспериментирует.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от sudopacman

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

DMITRY
()
Ответ на: комментарий от hobbit

Ну, применения могут быть либо серьёзными, либо несерьёзными, A ∪ ¬A = U. Я не предлагаю ничего запрещать, просто выражаю мнение, что для серьёзного применения нужен пакетный менеджер, а использование дистрибутива без оного — это как когда «коту нечего делать». А так, конечно, пусть эксперементирует. Может даже заняться портированием Метапрога для работы в ядерной консоли.

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

и каким образом make install проверяет надо ли сделать пересборку?
То есть если ты собрал из исходников что-то, потом внес правку в исходники, то make install должно пересобрать заново измененный исходник? Почему?
★★★★

Ну, на четырёх звёздах ты открыл для себя мейк. Это не плохо, некоторые и на пяти о нём не знают.

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

необязательно в install будет правило выполнить make all. Makefile может быть любым в общем случае, обязательного all в install нигде не прописано.

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

необязательно в install будет правило выполнить make all.

А его и не будет. Но должны быть перечислены устанавливаемые артефакты, для которых в свою очередь должны быть правила создания.

Это, конечно, если make’ом пользовались как make’ом, а не вызывали баш-портянки на питоне.

make all же делают, потому что кроме артефактов в all может быть прогон тестов и ещё какая-нибудь не существенная для инсталляции, но принятая в проекте побочная активность.

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

А как же компиляние ради компеляния, чтобы по лбу регулярно били грабли? Вот идёшь ты бухой по улице, падаешь на асфальт, разбиваешь голову. А саахрикту ломает асфальт.

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

у софта со временем появляются новые особенности, которые не до конца отражены в документации

Я б сказал у софта со временем иногда появляется документация, и именно в таком порядке

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

Не всем нужна нужность. Саахрикту — божество. Именно он и сотворил пространство-время где и появились причинно-следственные связи.

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

Саахрикту не пьянеет! Когда он выпьет опьянеет алкоголь.

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