LINUX.ORG.RU

Как поставить одновременно две версии одного пакета?

 ,


0

1

Приветствую!

В Astra Linux SE (это Debian) необходимо установить пакет libncurses5 для одного средства разработки для STM32 (всё по человечески, в виде deb-пакета). Проблема в том, что уже стоит родной libncurses6 и apt указывает на конфликт пакетов. 😣

Как в такой ситуации, в 2022 году, принято поступать?

Понятно, что теоретически сами .so-бинарники библиотек могут быть разных версий, т.к. номер версии часто фигурирует в имени файла и они просто лежат бок о бок в каком-нибудь «/lib», а на самую последнюю указывает симлинк. Но в данном случае хотелось бы рецепт подходящий для электроника только пересевшего на Linux, и пользующегося максимум Synaptic’ом. 😎

P.S. На LOR подобные проблемы с установкой двух разных версий одного пакета/библиотеки конечно уже описаны, и не однократно, но первый ответ везде - «никак». Но, может быть, за последние пару лет появились какие-нибудь способы это сделать?

Как в такой ситуации, в 2022 году, принято поступать?

В десктопном Линуксе 2022 года эта проблема всё ещё не решена системно, кек. Проще всего будет кинуть libncurses5 куда-нибудь и запускать желаемую прогу с LD_LIBRARY_PATH=куда-нибудь

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

оптимально вести два трека - тележить астро-жителей ну и тут семафорить об их эффективности

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

Ну Астру дебиан портит в основе

Интересная точка зрения… 🙄

Только, по моему скромному мнению, Astra - это и есть чистокровный Debian настолько, что можно подключить официальную репу Debian и обновить всё ничего при этом не сломав. В Astrу добавлены только несколько своих программ - ностальгический рабочий стол Fly с темами под Windows XP, утилиты для настройки Linux через GUI (за что разработчикам надо сказать наверное большое спасибо), доменная архитектура ALD (не уверен откуда у неё ноги растут) и проприетарный драйвер защиты в SE-редакции (что вызывает большие вопросы).

raspopov
() автор топика

Можно сделать symlink с нужным именем ведущий на существующию библиотеку, мне такой хак помогает при работе с китайским софтом.

imb ★★
()

Эээ…

# apt list libncurses*
…
libncurses5/stable 6.2+20201114-2 amd64
libncurses6/stable,now 6.2+20201114-2 amd64 [installed]
…
# apt install libncurses5
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libgpm2 libtinfo5
Suggested packages:
  gpm
The following NEW packages will be installed:
  libgpm2 libncurses5 libtinfo5
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 468 kB of archives.
After this operation, 920 kB of additional disk space will be used.
Do you want to continue? [Y/n] 
Rootlexx ★★★★★
()
Ответ на: комментарий от raspopov

Я бы тогда лучше над первым комментарием подумал:

Проще всего будет кинуть libncurses5 куда-нибудь и запускать желаемую прогу с LD_LIBRARY_PATH=куда-нибудь

С докером явно больше возни будет имхо, ну и сущностей он нагородит явно больше.

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

Эээ…

Вот это действительно интересно… 🤔

raspopov
() автор топика

Как в такой ситуации, в 2022 году, принято поступать?

В дебиане как-то так:

$ apt list --installed | grep libncurses

libncurses-dev/oldstable,now 6.1+20181013-2+deb10u2 amd64 [установлен, автоматически]
libncurses5-dev/oldstable,now 6.1+20181013-2+deb10u2 amd64 [установлен]
libncurses5/oldstable,now 6.1+20181013-2+deb10u2 amd64 [установлен]
libncurses6/oldstable,now 6.1+20181013-2+deb10u2 amd64 [установлен, автоматически]
libncurses6/oldstable,now 6.1+20181013-2+deb10u2 i386 [установлен, автоматически]
libncursesw5-dev/oldstable,now 6.1+20181013-2+deb10u2 amd64 [установлен]
libncursesw5/oldstable,now 6.1+20181013-2+deb10u2 amd64 [установлен]
libncursesw6/oldstable,now 6.1+20181013-2+deb10u2 amd64 [установлен, автоматически]
libncursesw6/oldstable,now 6.1+20181013-2+deb10u2 i386 [установлен, автоматически]

В астре эти пакеты тоже есть. Вы же пакеты из репозитория астры ставите? Что пишет apt?

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

А в NixOS нет

Тогда зачем ты её ТС-у посоветовал?

не нужно

Сомнительное утверждение. ТС-у вот нужно. И гентушникам нужно. Остальным – страдать.

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

Потому что для успешного использования нескольких версий одновременно не нужно никакое дурацкое слотирование.

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

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

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

Отнюдь не терминологический. Это как назвать отмену частной собственности «комплексом мер по снижению числа мелких краж».

Отказаться от дурацкого «пакет стоит в системе» как изначально безвыигрышной концепции, от которой только боль и рукотворные проблемы. И просто не распаковать пакеты в одну большую помойку в /.

Вот тут я куда пространней распространяюсь: https://discourse.nixos.org/t/half-a-presentation-i-had-in-my-company-about-nixos/16467

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

Отказаться от дурацкого «пакет стоит в системе» как изначально безвыигрышной концепции, от которой только боль и рукотворные проблемы. И просто не распаковать пакеты в одну большую помойку в /.

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

По ссылке какие-то английские буквы, в заглавном посте ответа кажется нет. Впрочем мне и не интересно, т.к. методом исключения: либо два файлика libxxx.so.1 и libxxx.so.2 лежат вместе в /lib, либо лежат порознь, т.е. под каждый заводится какой-то отдельный /lib, т.е. либо уже упоминавшийся LD_LIBRARY_PATH (UPD: блин, точно, ошибся), либо контейнеры. В любом случае, тупо скопировать два разных файла в общий lib – тупо проще. И бардака, между прочим, меньше (UPD: если обе версии – от дистро-мейнтейнера; windows-way когда каждая софтина тупо ставится в свой подкаталог /opt и тащит с собой все зависимости – т.е. LD_LIBRARY_PATH – ну в общем каждый сам себе хозяин, в некотором смысле этот подкаталог в /opt – тоже контейнер).

Контейнеризация оправдана на публичных серверах, где окружения разных юзеров действительно могут быть неустранимо несовместимы; а у ТС-а астра и ncurses, да и не станет админ публичных серверов такие простые вопросы задавать.

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

А чё вы спорите? В первом же ответе сказали про LD_LIBRARY_PATH.
Скачать нужные deb-ки, распаковать в папочку, обернуть запускалку в скрипт и готово.

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

А ещё и общий bin, и общий lib – и вообще filesystem hierarchy standard, столь странный для скажем виндузятников, – придуманы не с бухты барахты, а эффективности ради: и устранение дублирования одинаковых либ, и упрощения поиска программ и либ. (Никогда гигантский PATH в маленьком поле ввода в настройках системы в винде не редактировал?) С этой точки зрения повальная контейнеризация – шаг назад. Здесь мог бы быть пассаж про поколение ЕГЭ, но мне лень.

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

Это не один пакет в разных версиях, это разные пакеты - libncurses5 и libncurses6. 5 и 6 - это не версии, а часть названия. Версии у них тоже есть, время от времени обновляются, заменяя старую, но вот хранить одновременно две версии пакета libncurses6 точно никогда не пригодится.

firkax ★★★★★
()

Проблема в том, что уже стоит родной libncurses6 и apt указывает на конфликт пакетов.

Покажи лог.

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

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

Нет, и этой дряни нету.

либо два файлика libxxx.so.1 и libxxx.so.2 лежат вместе в /lib

Нет никакого /lib.

либо лежат порознь, т.е. под каждый заводится какой-то отдельный /lib

Да.

т.е. либо уже упоминавшийся LD_LIBRARY_PATH

Нет.

либо контейнеры.

Нет.

каждая софтина тупо ставится в свой подкаталог /opt и тащит с собой все зависимости

Нет.

В одном предложении: вместо известных путей и помойки каждая деривация лежит в своей директории в /nix и «линкуется» с конкретными зависимости через rpath/врапперы или аналоги. Прелесть в том, что эта красота требует не добавления идиотизма, а убирания идиотизма.

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

Он лог не привёл. Там скорее всего что-то другое.

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

Так бы сразу и сказал. Примерно понятно. Не знаю, выглядит несколько замороченно…

Во-первых, rpath и LD_LIBRARY_PATH – по сути одного поля ягоды, только LD_LIBRARY_PATH виден сразу же при просмотре скриптов/конфигов, а до rpath нужно специально добираться. Хотя безусловно он гибче.

Во-вторых, даже если это всё мейнтейнеры обеспечивают и у них у самих там всё автоматизировано… Например, если я хочу что-то левое поставить через configure + make + make install, где оно будет зависимости искать?

pr849
()
Последнее исправление: pr849 (всего исправлений: 3)
Ответ на: комментарий от alex1101

дальше он стал тормозом

В каких-то специфических ситуациях – возможно. Но, как говорится, УМВР. И не только у меня, по виденным мною дистрам судя.

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

если я хочу что-то левое поставить

то ты его должен опакетить

через configure + make + make install, где оно будет зависимости искать?

Ты не сможешь это сделать без ПМ.

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

Понятно. У всякого решения свои недостатки. Полагаю, опакечивание в новомодных дистрах достаточно простое, уж всяко не gentoo, но тем не менее – лишнее приседание, без которого даже собственный hello world в /usr/local не поставишь. Всё-таки пока что большинство дистров вполне себе нормально живёт по-старинке, и подавляющему большинству как десктопов, так и допустим внутрикорпоративных серверов эта стрельба из пушки на фиг не нужна. Так что – любопытно, спасибо за информацию, но я пока что останусь на арчике. :) UPD: Кто тут на нас с Гейбом? :)

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

придуманы не с бухты барахты, а эффективности ради

Придуманы в древности, когда надо было экономить каждый мегабайт и ОС очень задумывалась просто при запуске любой программы.

и упрощения поиска программ и либ

Ну как-то ТС'у не очень просто либы найти.

С этой точки зрения повальная контейнеризация – шаг назад.

Нет, это решение системной проблемы возникшей из-за устаревания набора парадигм которым продолжают следовать (например когда структуру FHS пытаются распространить за пределы её нормальной применимости — образа ОС).

В целом ты просто пытаешься выгородить текущее положение вещей в линуксе, из-за того что врос в парадигму (плюс стандартные для местных психологические загоны о превосходстве над тупой виндой и тупыми виндузятниками).

Здесь мог бы быть пассаж про поколение ЕГЭ, но мне лень.

Вот-вот, «превосходнические» замашки. Уж предыдущему поколению стоило бы молчать о том кто глуп, а кто нет - ибо если начать разбираться можно прийти к очень неприятным для себя выводам и станет грустно.

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

Придуманы в древности, когда надо было экономить каждый мегабайт и ОС очень задумывалась просто при запуске любой программы.

Ну да, а нынче модно говнокодить под девизом «память дешёвая». Но дешёвая она временно, как и остальные ресурсы, как и основанная на этой дешевизне копроэкономика.

Ну как-то ТС’у не очень просто либы найти.

Это проблема не FHS, а конкретного дистра, создатели которого не удосужились в слотирование, которое в свою очередь ортогонально FHS. (UPD: И gentoo тому доказательство. Описанную @t184256 модель NixOS тоже можно обозвать слотированием, просто по-другому реализованным. Пофиг что там нету FHS, главное что нет дублирования всего и вся, никто не тащит с каждой софтиной полный дубликат библиотек.)

Нет, это решение системной проблемы возникшей из-за устаревания набора парадигм которым продолжают следовать (например когда структуру FHS пытаются распространить за пределы её нормальной применимости — образа ОС).

Бла-бла-бла какое-то. В чём заключается устаревание? Что такое образ ОС? Звучит как что-то read-only. Структура FHS как использовалась в рабочих системах, так и используется. И будет использоваться ещё очень и очень долго.

В целом ты просто пытаешься выгородить текущее положение вещей в линуксе, из-за того что врос в парадигму

Если я во что и врос, то это в неприятие костылей и излишне переусложнённых и неэффективных решений. Как минимум для десктопа – FHS норм.

плюс стандартные для местных психологические загоны о превосходстве

Которые ты тут демонстрируешь даже в большей степени, чем я: многословнее раз в пять, аж два абзаца накатал, с переходом на личности. Комплексы какие-то? Так обычно себя ведут те, кто чувствуют, что не прав, и за многословием прячут это ощущение от самих себя.

pr849
()
Последнее исправление: pr849 (всего исправлений: 5)
Ответ на: комментарий от pr849

В чём заключается устаревание?

Концепция расширенного использования FHS (базовая система + прикладное ПО) больше не решает проблем распространения и доставки ПО.
Наглядный пример переход дистрибутивов на поставку браузеров в виде самодостаточных пакетов и нарастающее количество ПО которое поставляется со всеми библиотеками, т.к. патчить под каждый дистр сложно и вносит новые ошибки.
Историчейкий этап на котором эта концепция в расширенном варианте работала удовлетворительно закончился.

Что такое образ ОС?

Базовая система.

Звучит как что-то read-only.

В идеале да.

Структура FHS как использовалась в рабочих системах, так и используется.

Ничего не объясняющий отввет.

И будет использоваться ещё очень и очень долго.

Я и без тебя это знаю. В своём ответе я говорил, что концепцию применяют там где это не нужно и вредно.

Если я во что и врос, то это в неприятие костылей и излишне переусложнённых и неэффективных решений.

Поздравляю ты только что описал текущее состояние дел на линуксе, которое также полностью соотвествует ОПу и всей практике людей которые сталкиваются с линуксом в реальной практике.
Секта УМВРщиков конечно скажет своё сакральное

Как минимум для десктопа – FHS норм.

Нет. Для десктопа нужно гибридное решение, идеал это модель macOS или Android.

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

Тут я напишу всё с преходом на личности чтобы защитник мармеладно-сахарных куколдов мог потереть без ущерба для содержательной части.

Ну да, а нынче модно говнокодить под девизом «память дешёвая».
Но дешёвая она временно, как и остальные ресурсы, как и основанная на этой дешевизне копроэкономика.
временно

Это по какой информации и почему ты ещё не миллиардер? (с такими-то способностями к предсказанию будущего).

Так обычно себя ведут те, кто чувствуют, что не прав, и за многословием прячут это ощущение от самих себя.

Ха-ха, ну если пользоваться диванными детекторами, тогда и я внесу пять копеек: могу сказать про людей которые начинают говорить про «с переходом на личности», в моей практике это товарищи которые хорошо описываются через концепцию «educated stupidity». Ну а про то, что кысо жалуется на многбукаф вообще смешно.

Комплексы какие-то?

Конечно, я человек — у меня есть комплексы. Я могу не видеть свои, но могу разгадывать чужие, в том числе и твои, о чём и написал выше о «превосходничестве над виндузятниками».

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

Отвечу на оба камента сразу: (1) попытка выдать свои предпочтения за истину в последней инстанции; (2) обезьянье ёрничанье и продолжение хамства. В обоих случаях – с откровенным враньём, передёргиванием и прочей демагогией. Ничего общего с поведением профессионалов. Продолжать общение смысла не вижу: у @t184256 я узнал как устроена NixOS, за что ему ещё раз спасибо, а у вас мне поучиться нечему. Всего хорошего. В игнор. :)

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

Это не один пакет в разных версиях, это разные пакеты - libncurses5 и libncurses6. 5 и 6 - это не версии, а часть названия.

Спасибо firkax и Rootlexx за формирование правильной точки зрения на «проблему». 👍

Результат:

Действительно, это разные пакеты и они могут ставится одновременно, собственно и были поставлены. STM32 установился, инженер-электроник доволен. 😎

Причина:

В Astra Linux пакет libncurses6 появляется при установке ОС, а пакет libncurses5 - нет, как нет его и на установочном iso. Пришлось выкачивать весь репозиторий Astra Linux (~45 ГБ), т.к. рабочее место без интернета.

Постскриптум:

Не понятно, почему скрипт установки вообще упомянул, что «в уже стоит libncurses6, а пакету нужен libncurses5», если это разные библиотеки. Это сообщение и заставило нас думать, что дело в версии, и возможно в необходимости даунгрейда, а вовсе не в отсутствии в репозитарии.

И ещё большие вопросы к мейнтейнерам libncurses. Я конечно понимаю, что некоторые продукты, особенно связанные с разработкой, имеют необходимость одновременной установки разных версий. Но чтобы простая библиотека вывода на терминал… 🤔

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