
Roman
04.09.2018
22:41:04

Михаил
04.09.2018
22:41:21

Noiseless
04.09.2018
22:42:55
ну частично саомдостаточный вряд ли имеет большой смысл
Можно статически линковаться со всеми либами, кроме libc и в пределах дистрибутива/версии ОС ты будешь вполне самодостаточным. Если тебе нужно деплоить приложение на кластер, а не распространять пользователям, то вполне себе ок.
А можно собраться статически с musl под linux-i386 (взять хедеры от какого-нибудь старого ядра, типа 3.12.6) и тогда бинарь будет работать (без зависимостей) в современных линуксах i386 и x86-64, и в линиксулаторе. Например.
Т.е. в зависимости от задачи смысл может и быть.

Google

Roman
04.09.2018
22:43:06

Михаил
04.09.2018
22:43:31


Roman
04.09.2018
22:44:50

Noiseless
04.09.2018
22:44:50
потому что статически линковаться с glibc плохо, и это скорее не работает. https://stackoverflow.com/questions/14567689/static-linking-of-glibc
другие libc тупо не пробовал.

Vadim
04.09.2018
22:45:20
вы чот с темы все спрыгнули

Михаил
04.09.2018
22:45:33

Vadim
04.09.2018
22:45:43
на исходный вопрос "откуда базовая система" ответ получен был?
точнее, "информация к размышлению", что лучше готового ответа

Михаил
04.09.2018
22:46:10

Noiseless
04.09.2018
22:46:12

Михаил
04.09.2018
22:46:39

Google

Roman
04.09.2018
22:46:51

Vadim
04.09.2018
22:46:51
так вот знаешь, Эдичка молодец, он вместо тупых "да/нет" предлагал несколько раз неожиданные вещи

Noiseless
04.09.2018
22:47:46

Михаил
04.09.2018
22:47:48

Vadim
04.09.2018
22:48:17
я тебя соответственно спрошу встречно - а нахера вариант именно "base-system метапакетом с определенным набором зависимостей" ?
есть другие варианты, обоснуй именно этот

Noiseless
04.09.2018
22:51:19

Vadim
04.09.2018
22:51:32
...всё, @pragus слился? =)

Михаил
04.09.2018
22:52:12

Dmitry
04.09.2018
22:53:44
Мне тут сказали что portmgr держит курс на отказ от статических либ вообще

Михаил
04.09.2018
22:53:51
При сборке libc же?
kfreebsd-kernel-headers [kfreebsd-any]
То есть при сборке (g)libc на FreeBSD ядерные заголовки нужны, а на линуксе не нужны.

Dmitry
04.09.2018
22:54:05
Не знаю насколько правда, но было бы неплохо

Vadim
04.09.2018
22:54:13
например, я когда-то предлагал базу как не метапакет, а мегапакет, с вынесением contrib в отдельные

Noiseless
04.09.2018
22:55:12
А вообще, ещё из забавных пакетных менеджеров можно вспомнить nix из nixos. Он странный, но можно держать одновременно несколько версий пакетов. Или ставить их из под юзера в домашнюю директорию без рутовых прав. Имхо, иногда это небесполезные возможности.

Dmitry
04.09.2018
22:56:47
Небесполезные... Это все должны уметь в обязательном порядке по-хорошему

Noiseless
04.09.2018
22:57:05

Михаил
04.09.2018
22:57:25

Noiseless
04.09.2018
22:57:41

Google

Михаил
04.09.2018
22:58:03

Noiseless
04.09.2018
22:58:15

Михаил
04.09.2018
22:58:58
Жить можно) А собирать glibc?
ну я сейчас посмотрел debian/control от glibc. Там ядерные заголовки в сборочных зависимостях только для сборки на kfreebsd

Dmitry
04.09.2018
22:59:18

Михаил
04.09.2018
23:00:23
Жить можно) А собирать glibc?
А может я чего-то не понял. Вот здесь https://abf.io/import/glibc/blob/rosa2016.1/glibc.spec kernel-headers есть в сборочных зависимостях

Noiseless
04.09.2018
23:02:38

Михаил
04.09.2018
23:04:26
А где сейчас во фре статическая линковка?

Dmitry
04.09.2018
23:06:15

Михаил
04.09.2018
23:06:45

Dmitry
04.09.2018
23:07:24

Михаил
04.09.2018
23:08:28

Noiseless
04.09.2018
23:08:32

Dmitry
04.09.2018
23:08:43

Noiseless
04.09.2018
23:09:06

Михаил
04.09.2018
23:09:42

Dmitry
04.09.2018
23:09:56

Михаил
04.09.2018
23:10:21
в nix извращения с RPATH
насколько я слышал

Google

Noiseless
04.09.2018
23:10:35

Dmitry
04.09.2018
23:10:55
Разве? Я думал там симлинки
И каждый пакет в своей директории вида <хэш> со своими ссылками в директории зависимостей

Noiseless
04.09.2018
23:12:08

Dmitry
04.09.2018
23:13:40
Приложение видит свой lib/ со своим libdepend.so.N, и всё остальное в таком же виде

Admin
ERROR: S client not available

Noiseless
04.09.2018
23:18:42


Михаил
04.09.2018
23:19:48
Приложение видит свой lib/ со своим libdepend.so.N, и всё остальное в таком же виде
а с чего оно увидит свой lib? LD_PRELOAD_PATH ставить? он чреват, например, в LD_PRELOAD подгружаем libz, а libpng берем системный, однако libpng сам требует libz, в итоге рано или поздно получим расхождение, системный libpng не сможет загрузиться с нашим libz, и программа не запустится. про libz+libpng реальный случай - BricsCAD полгода не могли это починить.

Noiseless
04.09.2018
23:21:13

Михаил
04.09.2018
23:22:07

Dmitry
04.09.2018
23:22:51

Михаил
04.09.2018
23:23:06

Dmitry
04.09.2018
23:24:14
Каждое приложение будет зависеть от своей libz лежащей в отдельном поддереве

Noiseless
04.09.2018
23:24:46

Dmitry
04.09.2018
23:24:54

Noiseless
04.09.2018
23:24:57
(по сути)

Михаил
04.09.2018
23:25:27

Dmitry
04.09.2018
23:26:03
Но это же rpath и есть?
rpath захардкожен, тут потребуется в рантайме строить список путей. Иначе нельзч будет обновить промежуточную библиотеку

Google

Михаил
04.09.2018
23:26:41

Noiseless
04.09.2018
23:26:54

Dmitry
04.09.2018
23:27:10

Михаил
04.09.2018
23:27:29

Lev
04.09.2018
23:27:32

Михаил
04.09.2018
23:27:34
Это выстрел в ноги

Dmitry
04.09.2018
23:27:43

Михаил
04.09.2018
23:27:55
в котором вообще ВСЁ
потому что при такой схеме потребуется по цепочке зависимостей именно до такого дойти

Dmitry
04.09.2018
23:28:52

Noiseless
04.09.2018
23:29:44

Dmitry
04.09.2018
23:29:47
в итоге мы получаем snap-пакет?
Нет, не получаем. Получаем просто ограничение видимости зависимостей, чтобы не видеть то что не нужно, включая другую версию libz
Резолвинг цепочки библиотечных зависимостей для статической сборки умел емнип только libtool, который канул в Лету вместе с autocrap, к великому счастью
Кажется его .la повыпилили уже несколько лет назад


Noiseless
04.09.2018
23:38:18
Она ничего не даёт кроме проблем. Следить за путями все равно нужно, поскольку у зависимостей есть ещё и share/, размер пухнет жо небес, обновление убивает время и батарейку потому что нужно перетряхнуть половину диска. Да, который занят дубликатами кода. Которые в случае lto и не задедублицировать. Алсо, для статической сборки нужно очень сильно колдовать - ее никто уже не поддерживает
Мой опыт говорит скорее об обратном, хотя я допускаю, что не очень репрезентативен. Объём для меня проблемой не является, диска точно хватит на толстые статические бинари.
Колдовать иногда надо, это правда.
А насчёт дубликатов кода.. Вот в погоне за самодостаточностю линукс сейчас ушёл в тотальный докер. Получается, что мы таскаем с собой всё как при статической сборке (и даже больше!), при этом, компилятор не может, например, инлайнить библиотечную функцию, или выкинуть те функции из библиотеки, которые не нужны. И это никто не считает толстотой и проблемой. И дубликатами кода. Как по мне, из этого следует, что статическая линковка - куда более экономный к памяти способ создания самодостаточных приложений.


Михаил
04.09.2018
23:38:26
Нет, не получаем. Получаем просто ограничение видимости зависимостей, чтобы не видеть то что не нужно, включая другую версию libz
сейчас почитал man ld.so. Если у нас в заданной через LD_LIBRARY_PATH есть libz, то описанная выше ситуация происходит, т.к. формально этот libz подошел, не важно, что потом libpng не смог с ним запуститься. Но здесь в названиях айлов нет мажорной/минорной версии либы. А что будет, если в названии файла будет версия библиотеки - уже пора спать, а не о таком думать, но место очень узкое.

Dmitry
04.09.2018
23:38:57