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 в дистрибутиве нет, как и многих других распространённых программ.

Потому что это не Арчь, где ОС собирают примерно как есть. У архитекторов Дебьяна есть свои ожидания, меры, прецеденты, дальновидность, приоритеты. Вопрос в том, хорошо ли это получается.

kaldeon
()

usr/lib/cargo

Rust по умолчанию не ставится. Зачем вы его поставили?

Например, утилита bat

А, понятно. Это очередной клон cat, только с перламутров… на Rust.

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

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

her_s_gory ★★
()

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

А ларчик просто открывается:

In this package the executable and its manpage have been renamed from ‘bat’ to ‘batcat’ because of a file name clash with another Debian package.

u-235
()

Ничего, что во всех скриптах написанных где-либо на Земле, она пишется как bat, и теперь все их надо переписывать.

открой для себя алиасы, виндузятник.

anonymous
()

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

зато добавляется симлинк /usr/bin/fdfind на это дело

А fdfind оно потому что /usr/bin/fd идет из пакета fdclone

Например, anki в дистрибутиве нет, как и многих других распространённых программ.

становись мэнтейнером и будут

anonymous
()

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

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

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

anonymous
()

Я как-то Java поставил через пакетный менеджер. Конечно же ничего не заработало. Т.к. я Java занимаюсь профессионально, я удивился и полез разбираться. Когда я осознал, на какие лоскуты они её порвали, примерно с тех пор я разочаровался в пакетных менеджерах и стал предпочитать все программы ставить из обычных архивов.

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

anki, кстати, тут как раз хороший пример. он когда-то в дебилиане был. и угадайте, каков был release critical bug, из-за которого его выкинули?

ЛИЦЕНЗИЯ НЕПРАВИЛЬНАЯ. CC-BY НЕДОСТАТОЧНО КОШЕРНА, БЛДЖАД! и нет, это не прикол.

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

Rust по умолчанию не ставится. Зачем вы его поставили?

Нет, Rust и не стоит. Вот и вопрос, зачем пихать туда fd?

А, понятно. Это очередной клон cat, только с перламутров… на Rust.

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

Так же, как и fd. Я умею пользоваться find, но меня раздражает, что в нём сделаны абсолютно инопланетные умолчания и зубодробительные названия параметров (--regextype egrep --regex). Я пользуюсь командной строкой постоянно, и в ней fd на порядок быстрее и полезнее. find теперь использую только для скриптов, чтобы везде работали.

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

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

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

поддерживать сами мы не хотим, надо выкинуть

т.е. где-то есть прям поддерживаемые форки всего-всего от мэнтейнеров других дистрибутивов?

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

и мэнтейнер должен постоянно скакать между ними по мере отмирания или слушать нытьё по поводу «неправильный форк выбрали»?

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

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

мейнтейнеры должны уметь поддерживать (патчить, дописывать) софт особенно в дебиане, где мейнтейнеры на каждый пакет просто так по десятку патчей накладывают

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

чтобы пользователи могли добавить /var/lib/cargo/… в PATH и пользоваться утилитами с конфликтующими названиями не мешая другим

Тогда делали бы консистентно. Потому что пока что у меня в /usr/lib/cargo только fd, другие пакеты ставят в /usr/bin, но под неправильным названием.

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

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

@Chiffchaff, стань мейнтейнером - сделай мир лучше.

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

Я в /opt всегда руками кладу последний стабильный Open J9 (AOT) и graalvm, и по настроению/ситуации ставлю переменные окружения. java из пакета - горе в семье!

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

на самом деле туда ставится 6 пакетов, но формат каталогов говорит, что мое предположение было неверным и будет работать только для 3 пакетов.
Разве что среди раст пакетов уже тоже есть коллизии

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

пока что у меня в /usr/lib/cargo только fd, другие пакеты ставят в /usr/bin

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

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

дык в чем же дело. займись мейнтенингом данного пакета в дебъяне. будет лутший пакет на свете !!

я вот не уверен, что пустят, поскольку от наличия .ru в почтовом адресе или окончания -ov в фамилии тамошние радужно-разнообразные «feel uncomfortable».

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

Это уже киберсквоттинг какой-то получается. Кто первый программу написал, того и имя. И ладно бы, если бы речь шла об общеиспользуемых именах, вроде cat или find.

Спасибо за пример очередного маразма дистростроителей.

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

Железная логика. Но идея положить утилиту в пыльный чулан и запускать через симлинк не выглядит вменяемой. Растишки конечно сами хороши с такими названиями. Обещали везде rs добавлять, и не было бы конфликтов.

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

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

Ну и разруливай через альтернативы. сделай fdclone-fd, fdfind-fd и альтернативой линкуй fd на один из них, если вдруг пользователю пришло в голову ставить оба пакета. Пускай сам решает. Какая разница, какое назначение. Пользователю видней.

vbr ★★★★★
()

Ничего, что во всех скриптах написанных где-либо на Земле, она пишется как bat, и теперь все их надо переписывать.

Сначала я хотел съязвить про Дебиан, но если ты используешь все эти новомодный растовский сифак в скриптах, то ты ССЗБ.

p.s. в использовании для интерактивщины ничего плохого не вижу, но не для скриптов.

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

Для общепринятых бинарей из coreutils такое делать не нужно. А для подобных относительно редких - почему бы и нет. Не думаю, что в дистрибутиве так уж много конфликтов (если что, я не предлагаю 100% команд заменять симлинками, только те, в которых случился конфликт).

Ну а ты считаешь нормальным, что клон досовского fd, который не обновлялся 12 лет, захватывает контроль над этой весьма удобной для пользователя командой? Уверен, что в мире пользователей fdfind в 1000 раз больше, чем пользователей fdclone. Они бы ещё rg переименовали, маразматики.

vbr ★★★★★
()

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

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

линкуй fd на один из них

и читай багрепорты, что у людей fd работает не так как они ожидали.

Пускай сам решает. Какая разница, какое назначение. Пользователю видней.

так он и сейчас может решать вволю, в чем проблема?

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

и читай багрепорты, что у людей fd работает не так как они ожидали.

Так прям сейчас у людей fd работает не так, как они ожидают. Они пишут fd, а им пишет: command not found.

так он и сейчас может решать вволю, в чем проблема?

Не может. Дебиановские маразматики решили за него.

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

При чем тут это? Скрипт по определению должен работать на дефолтной системе без зависимостей. Надеяться на всякие bat, fd, rg и т.п. – это глупость.

Но для своего удобства, если прям хочется, можно пользоваться. Хотя тот же bat, сколько я его не пробовал, мне больше мешал. Т.е. нумерация, имя файла, всякие линии – это, конешно, прикольно, но потом ты хочешь скопировать часть вывода и это все попадает в него. И либо вспоминаешь как это все отключить в bat, либо возвращаешься к обычному cat.

Ну и, конечно, судьба bat как замена cat уже более-менее определена, потому что в Fedora он называется bat, а в Убунте – batcat. Значит никогда он по дефолту не будет.

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

Так прям сейчас у людей fd работает не так, как они ожидают. Они пишут fd, а им пишет: command not found.

странно я написал fd и мне тоже написало command not found
Ах да, это ожидаемо, потому что я не поставил fdclone

Не может. Дебиановские маразматики решили за него.

отключили возможность создавать симлинки и украли /usr/local/bin?

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

Надеяться на всякие bat, fd, rg и т.п. – это глупость.

Они вообще не нужны. Там нечего улучшать. Но если втащили уже, почему бы не писать скрипты с ними? Для себя же пишешь, а не для дяди. Если есть задача обеспечить совместимость с чем-то, тогда другой разговор. Там и баш могут запретить, не то что смузи-утиль.

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

Они вообще не нужны. Там нечего улучшать

Ну-ну. Так может сказать только человек, который не работает с командной строкой.

Мне ещё много лет назад надоело городить всю эту тряхомудию с:

find . -name '*.c' -print0 | xargs grep -E foobar

Когда напишешь такое 20 раз за день, хочется сделать что-то нехорошее.

К счастью, появились люди, которые придумали интерфейс, как у ripgrep (кстати, первым был ag, написанный на Perl, вовсе не на Rust), fd. Которыми просто удобно пользоваться.

Молиться на дедов, придумавших 40-50 лет назад неудобный UX, потому что было мало опыта, давили ограничения тогдашних машин и стандартов - бессмысленный карго культ.

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

Т.е. нумерация, имя файла, всякие линии – это, конешно, прикольно, но потом ты хочешь скопировать часть вывода и это все попадает в него. И либо вспоминаешь как это все отключить в bat, либо возвращаешься к обычному cat.

bat удобен в связке с другими командами для построения всяких интерактивных пайплайнов. Например, fzf + bat для предпросмотра файлов перед тем, как что-нибудь с ними сделать.

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

Да нормально всё с find. Ну а grep простой как валенок, какие к нему претензии? Ag это не замена grep, это вообще для другого. Ну и вот нахрена ag заменять ещё чем то? Единственная инновация полезная это fzf, но и тут растишки подсуетились со своими заменами. Хотя уж казалось бы fzf очень быстрый и навороченный. Заняться просто нечем кое-кому.

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

grep простой как валенок, какие к нему претензии

  1. Он очень медленно работает, в сравнение с альтернативами.

  2. У него отвратительный синтаксис регулярных выражений.

  3. У него нет опции для замены найденного текста на нужное выражение, эта задача встречается при работе с текстом чуть менее чем всегда. В итоге приходится городить уродливые пайплайны с grep + sed.

Просто попробуй написать аналог rg '(\w+)=(\w+)' -r '$1: $2'

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