LINUX.ORG.RU

Зачем сборщики пакетов Debian переименовывают и кладут в странные места бинари

 


0

3

По работе потребовалось установить Debian (нужен специфический софт, сказали, что проще установить распространённый deb-based дистрибутив, нежели мучиться с тем, что софт не будет работать на других).

Поставил Debian Trixie. Сразу же сталкиваюсь с дикой дичью. Например, утилита bat зачем-то устанавливается как бинарник batcat. Ничего, что во всех скриптах написанных где-либо на Земле, она пишется как bat, и теперь все их надо переписывать.

Или вот супер удобная замена find - fd. Оно зачем-то устанавливается, куда бы вы подумали… Тадам! /usr/lib/cargo/bin/fd! При этом, данный каталог даже не добавляется автоматом в PATH.

Зачем? Зачем они всё ломают, в чём сакральный смысл? В чём смысл установки утилиты под другим именем, ломающим все скрипты, или смысл установки бинарника в место, откуда он не может быть запущен?

И это, боюсь, только вершина айсберга.

Да и набор пакетов. Когда-то Debian мне нравился тем, что в нём был вообще весь распространённый софт. Сейчас же в нём нет многих довольно распространённых утилит, приходится устанавливать их как Flatpak, или ещё каким-нибудь уродским образом. Например, anki в дистрибутиве нет, как и многих других распространённых программ.

Ответ на: комментарий от LINUX-ORG-RU

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

а что касается юзабилити, то тут на ЛОРе периодически вижу темы от юзеров Nix'а о каких-то эзотерических ошибках запуска, сборки или отладки софта. и тут сразу понятно, откуда ноги растут. но разобраться, почему лезут ошибки, порою просто невозможно.

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

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

А ещё у опции -exec тоже shell-unfriendly синтаксис: ; надо экранировать.

vbr ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

vbr специально уточнил, что к общепринятым идентификаторам это всё не относится (хотя бы потому, что рандомный скрипт из интернета должен работать адекватно на любой системе). fd не является общепринятым.

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

Ну так-то да, эта та вещь где за интерфейс взаимодействия нужно платить поддержкой работы всего этого фарша из разнородных программ. Там же именно что прям конфигурация программ конфигурируется в одном стиле, но сами по себе программы имеют к этому разный подход, ну и это всё надо поддерживать в консистентном виде. Хотя и другие виды дистрибуции надо поддерживать… Но я тут всё, большего не скажу, большего сам не знаю, я попробовал снаружи, я поглядел внутри, мне не понравилось, не понравилось то как всё это вместе, как всё это как единое целое, как по мне никак, а интересно или нет, это у каждого по своему, кому да, кому нет. Как концепт, мне интересно, но не настолько чтобы использовать ибо внутри какой-то адок, как минимум мне непонятный, а я не люблю когда мне непонятно =))

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от vbr

LINUX-ORG-RU этого не увидел, LINUX-ORG-RU по этому моменту извиняется. Но, тоже спорно. Именуют не как хотят, а по distname policy, и определение «не является общепринятым» туда вписать можно, но сложно, так как в любой момент придётся переписывать, а если переписывать политики дистрибуции, то значит родить несовместимость, обновлять системы управления пакетами и так далее. У всего есть цена, порой замена одного символа, провоцирует целый каскад многолетних изменений, нужно думать о последствиях, и не допускать по возможности даже среды для их возникновения.

Ну да ладно :)

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от vbr

в ОС уже есть система альтернатив

Каким местом эти fd — альтернативы? Они разве делают одно и то же?

Вот я понимаю, как у netcat есть альтернативы, они обе — netcat. Есть различия в мелких деталях, но в общем это очень похожие инструменты для одного и того же. Есть www-browser, который, как понятно, браузер. Может быть множество реализаций браузера, но они все — браузеры. Они умеют ходить в интернет и рендерить HTML. Есть несколько реализаций javac, но они все — Java.

А тут совершенно разные программы для совершенно разных целей.

Так что нет, твоё решение не вписывается в систему альтернатив.

i-rinat ★★★★★
()
Ответ на: комментарий от vbr

Система альтернатив управляет симлинками. Вкладывать в неё какую-то идеологию это очень странно звучит.

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

Система альтернатив в Debian позволяет нескольким программам, выполняющим одни и те же либо сходные задачи, зарегистрироваться как альтернативные приложения. Такие приложения могут быть установлены одновременно, однако одно из них будет назначено по умолчанию. Например, во многих системах установлено сразу несколько текстовых редакторов. Программа vi — классический пример редактора, существующего в различных реализациях: nvi, elvis, vim, и т. д. Но которая из них будет выполняться по умолчанию? 

Можно игнорировать это у себя, локально. Но если майнтейнеры будут пихать в альтернативы всего, всё подряд, то взвоем мы все вместе и дружно, ибо никакой логики в альтентивах прослеживаться не будет :)


Опять же, это системные вещи, если они не подходят и не решают личную задачу из коробки, не беда, есть /usr/local есть PATH в целом, есть симлинки ручные, есть алиасы, лично для себя разрешить проблему можно множеством способов, просто универсального решения нет, и быть не может. Так как желания у людей часто обоснованные, но вот только взаимоисключающие. Так что дефолт, это дефолт, но порой он не всегда делат то что хочется ибо создан для другого, тут только простить и понять, и сделать как надо, одним из множества других вариантов, благо есть выбор.


Можешь ллмку прикрутить и писать

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

:D

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от vbr

да, я тоже рассматриваю это как некую обёртку над симлинками, которой юзер может управлять. называя программы как ему угодно. можно и вручную линки использовать. главное, чтобы без фанатизма, а то дойдёт до какого-нибудь Nix :)

Iron_Bug ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

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

Значит надо менять эти правила.

Можно игнорировать это у себя, локально. Но если майнтейнеры будут пихать в альтернативы всего, всё подряд, то взвоем мы все вместе и дружно, ибо никакой логики в альтентивах прослеживаться не будет :)

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

Потом проверю, как там в арче, даже интересно стало.

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

Логика тут простая. Если две программы имеют одинаковый бинарник, значит надо его сувать в альтернативы и не выёживаться.

Хочешь одновременно игрушку Chromium и браузер Chromium? Звиняй, чувак, @vbr сказал, что хер тебе. Не выёживайся. Наяривай переключалку альтернатив.

Что говоришь? Это разные вещи, и это совсем не альтернативы? Звиняй. Раз @vbr увидел реализацию симлинками, мы теперь обязаны линковать всё называющееся одинаково через систему альтернатив. Это закон. Можешь попробовать выпросить у него исключения.

i-rinat ★★★★★
()
Ответ на: комментарий от vbr

Система альтернатив управляет симлинками.

Это детали реализации. То же самое можно было реализовать скриптами: проверять текущие настройки в какой-нибудь БД, и exec’ать нужный бинарник.

Вкладывать в неё какую-то идеологию это очень странно звучит.

Ты просто за деревьями не увидел леса.
Система альтернатив — не просто ещё один инструмент для создания симлинков. Для этого уже есть ln -s, который с этой задачей отлично справляется. Система альтернатив нужна для реализации идеи выбора альтернатив.

Упомянутые в этом треде разные fd — не альтернативы.

i-rinat ★★★★★
()
Ответ на: комментарий от vbr
Ответ на: комментарий от i-rinat

Что-то проиграл, извиняюсь за выражение.

Годами линуксоиды гордились репами и в итоге (не работает) пришли к флатпакам, снапам и аппимаджам.

Теперь будут с path бороться ещё 10 лет?

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

Я успел много лет поработать в Red Hat, затем много лет в Debian, затем в Ubuntu, и затем в Arch. Притом, к Arch делал два подхода: первый раз не понравился, откатился на Ubuntu. Затем снова попробовал, и распробовал, наконец.

Да, после Arch, новый взгляд на Debian несколько… Потрясает.

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

Т.е. доисторическое окаменевшее никому не нужное гуано мамонта. Но отдельные ЛОРовцы будут защищать его до конца. Ведь древний эзотерический софт - это Ъ!

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

Заодно данные из Debian popcon: https://qa.debian.org/popcon.php?package=fdclone

Этой хренью пользуются в последнее время 0.01% пользователей. Но оно явно востребованнее с точки зрения мантайнеров дистрибутива, чем тот же Anki. Ну-ну.

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

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

не, ты всегда можешь зарепортить wishlist с предложением переименования. и, скорей всего, в оба пакета.

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

Вообще хотелось бы начать с того, что пихать всё подряд в $PATH это идиотизм. Никто не запускает браузер из консоли и уж тем более не запускает игру из консоли. Поэтому их бинарникам в $PATH вообще делать нечего. Только компьютер тормозят лишний раз.

Но - ладно. Ты почему-то думаешь, что я сказал, что нельзя устанавливать два пакета. Но это же неправда. Можно. У каждого пакета будет бинарник вида chromiumbrowser-chromium и chromiumgame-chromium (или как там в дебиане пакеты назвали). Устанавливай и запускай что хочешь. И плюс к этому будет один симлинк chromium, который будет показывать на выбранный пользователем бинарник. А может вообще никакого не будет, если пользователь не хочет ничего выбирать. Вот и всё. Максимально простое и понятное каждому решение, подходящее под 100% ситуаций и не имеющее ни одного изъяна. До которого легко додумается каждый разумный человек. Кроме, видимо, мейнтейнеров дебиана.

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

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

В современном мире, пользовательская инсталляция системы это помойка с миллионом состояний, и для её облагораживания нужно сложное решение. Nix и NixOS это замечательные инструменты, на корню решающие все сложные проблемы современных инсталляций. Без сотен невнятных костылей в виде Docker, Flatpack и своих пакетных менеджеров на каждый язык. А также, устраняющие копание в миллионах конфигов и невоспроизводимость сборок пакетов.

Void же, это классический дедовский KISS. Но сегодня не лохматые 70-е, где достаточно терминала, и парочки утилит в 100 строк. Это тупо не работает. Как деплоить все домашние машины, как гарантированно настраивать и запускать сервисы, как получать временные окружения, как получать гарантированные воспроизводимые сборки пакетов, как декларативно настраивать систему?

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

Но сегодня не лохматые 70-е, где достаточно терминала, и парочки утилит в 100 строк

а прорывные 20, где достаточно браузера и подписки на облачные сервисы

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

они ничего не решают. они только создают проблемы там, где их никогда не было.

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

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

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

Irma ★★★
()
Ответ на: комментарий от LINUX-ORG-RU

главное при это не быть пользователем nixos, а то будешь писать

Никто в здравом уме в /nix/store руками не лезет. Весь установленный софт и так добавляется в PATH, а так тот же curl запускается через nix run nixpkgs#curl (можно на лету и патчи к нему и/или его зависимостям прикрутить, не ломая при этом «установленную» версию).

kneedeep
()