LINUX.ORG.RU

Почему дистрибутивы всё ещё считают нормальным иметь «версии»? Типа там Debian 8, 9, 10, 11? Почему это не просто Debian сквозной?

 


0

1

Знаю такой ответ: потому что настают моменты, когда автор библиотеки «sobaka» выпиливает старый код/API в новых версиях, а двум разным софтинам «Dura» и «Mihalych» нужно разное в этой библиотеке - «Dura» хочет старые методы (потому что автор Dura помер и больше некому поддержать), а «Mihalych» хочет новые.

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

Возможно я козёл и такие дистры уже есть и такие манифесты уже внедрены в мир? Обсудите!

Например, захотел выпилить старые методы - идёшь нахрен - так нельзя

Ну наверное никто не хочет идти нахрен. Может, поэтому?

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

И что они там в /etc имеют?

Настройки всякие. settings.ini.

Старое GTK приложение будет работать через XWayland и никуда оно не денется. Старое pulseaudio приложение будет работать через pipewire, ну и так далее.

Хорошо, когда есть сервисы на подмену. Для какого-нибудь jack1 или udisks можно и не найти.

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

И что это вообще за АВТО обновление на следующий релиз дистрибутива? Я такого в жизни не видел, даже на винде.

Ловите виндузятника!

А вообще

apt full-upgrade

И у тебя вместо Debian-10 уже Debian-11.

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

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

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

АВТО - имеется в виду, что оно запускается само, в фоне.

Когда есть нормальные релизы, это вполне безопасно. Например, в том же Debian.

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

Я где-то писал что релизы не нужны? К чему это?

Автор темы писал. В названии темы прямо.

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

Но суть ты понял нет например библиотеки libjanson.so а есть кучка func_blabla_janson.so.v1.2 и программа запрашивая символы берёт ровно то что нужно в той версии что нужна.

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

Автоматическая преемственность.

Если не считать разбивки по файлам, то версионирование уже есть. И вот: https://harmful.cat-v.org/software/dynamic-linking/versioned-symbols

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

Об этом и речь - я имею в виду, что такие дистрибутивы лучше.

Смотря как определять слово «лучше».

В таких дистрибутивах у пользователя оказываются менее протестированные комбинации библиотек. Зато пользователь может обновлять отдельные программы минимально изменяя остальную систему.

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

Даааа, оно есть всё уже и не всё так гладко… Ну ладно. Тогда лучше по старинке пока что.

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

а мой Java iKVM Viewer для серваков Supermicro работает только на 7 версии JRE. на 8 и выше не работает.

Если он твой — возьми и почини!

mord0d ★★★★★
()

А почему не декларировать

Сам можешь что угодно декларировать, никого заставить не можешь. Из авторов библиотек кто-то может/хочет предоставлять стабильный API в течение неограниченного времени, кому-то другому важнее фичи и удобство, и он будет считать нормальным ломать API в каждой версии. То же с дистрибутивами - есть стабильнота где замораживается софт и далее в нём только чинятся баги, при этом пользователь может быть уверен что при обновлении ничего не сломается в течение срока поддержки, а есть роллинги где всё наисвежайшее.

инновационный подход

Ни в одном из них ничего инновационного нет.

к разработке библиотек, если ты не соблюдаешь который, то ты псина и тебе не место в мире нормальных дистрибутивов

У тебя каша в голове?

Почему это не просто Debian сквозной?

Sid сквозной. А в стабильных без номерных релизов никак, потому что вот этим:

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

бесконечно заниматься нельзя, ибо сложность поддержки растёт со временем, причём нелинейно, особенно в твоей постановке. Поэтому через N лет всё это стабильное добро неизбежно идёт в помойку, от sid отпочковывается условный Debian N+1 и начинает гнить заживо вместо предшественника.

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

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

Да, тут я немного наврал.

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

Таки не всегда

Да, бОльшая часть из выкидываемого это то что попало в java.* явно по ошибке и изначально должно было лежать в com.* или sun.*
Есть и обратное - весь http* был, наоборот, перенесён из sun в java.

На практике у меня с 6 до 17 ломалось только:

  • base64 который зачем-то перепилили емнип между 8 и 11
  • на 17 совершенно внезапно поломалась рефлексия к классу polygon- никогда не обращал внимания что это «хранилище двух массивов точек» оказывается внутрях имеет awt, который стал новомодно модульным. В результате gson печалился при попытке сериализовать polygon в строчку с двумя массивами. Вылечилось оберткой над двумя массивами с выкинутым awt. Но тут я скорее сам дурак что пользую убогий gson.
rukez ★★★★★
()
Ответ на: комментарий от agentgoblin

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

  1. ломается обычно не .java а всякое внешнее накрученное через .com/.sun, jni или рефлексию к типовым классам - это изначально не рассчитано на работу без поддержки и к яве прямого отношения не имеет.
    Список выпиленных апи Явы есть чуть выше по ссылке - посмотри насколько редкоземельные вещи там менялись и подумай могли ли они использоваться в «управлении железом» пр трезвом проектировании управлятора или нет.
  2. апплеты аналогично это не Ява
  3. виртуалки ставить не надо - Ява машины можно спокойно держать в одной ОС рядом друг с другом

Если софтина на яве работает только под определённой версии ОСи (и виртуалка ради неё) то проблема в jni/jna подпихнутых библиотеках на сях, которые дёргает софтина на яве, это частая проблема «управления железом» но к яве она не имеет отношения - если либа на сях валится то она валится чем её не дергай

rukez ★★★★★
()

идёшь нахрен - так нельзя.

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

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

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

на 17 совершенно внезапно поломалась рефлексия

Ибо нехрен. А то я помню как весело можно прямо в проде сделать из строго типизированной жабы пистон через Jackson + List + type erasure. Хз пофиксили или нет, но осадок остался. Хуже было только с checked/unchecked exception + type erasure, тут жвм вообще в корку валилась.

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

Ибо нехрен

С одной стороны да, сериализатор в json, написанный руками без рефлексии работает в 100 раз быстрее чем gson с рефлексией.
С другой стороны десериализатор json’а для классов с вложенными массивами мне писать лень, а gson их разбирает уверенно.
Пока не ломается рефлексия :D

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

десериализатор json’а для классов с вложенными массивами мне писать лень, а gson их разбирает уверенно. Пока не ломается рефлексия

Или пока вместо целого числа не приедет double. Json’у то пофиг, там number. А вот жабе будет весело.

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

Или пока вместо целого числа не приедет double. Json’у то пофиг, там number. А вот жабе будет весело.

десериализация в любом случае должна быть обёрнута в try catch ибо никаких гарантий что прилетел жсон, валидный жсон, не битый жсон и вообще ожидаемый объект - обычно нет
в данном то примере как-раз печаль в том что класс, который мог сериализоваться в 11 «в лоб» не смог сериализоваться в 17 (ну видимо в 9+ или когда там пилу завезли но я не лтс не трогаю) - т.е. по сути это «поломка» программы с чистыми .java
Такое бывает, факт, но реально редко и дюже метко, бонусом это часто лечится через аргументы (хайли лайкли можно разрешить рефлексию к модулю awt но я не пробовал)

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

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

не очень понятно в чём лул

если у тебя сломалась библиотека на С или api ОС, которые дёргает ява, то ява тут не приём от слова вообще.

если у тебя сломались классы в .com или .sun то тебе изначально в документации на эти классы написано что они не входят в яву и их использование сугубо на свой страх и риск с пониманием что это и зачем - по сути это сторонние библиотеки, которые поставляются с конкретной версией jdk

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

по факту большинство разумно написанных вещей, написанных в 1996ом под яву 1 без проблем запустятся в 2022ом на 17ой яве, а написанные неразумно потребуют минимальных правок.
ну а самый цимус - это всё относится и к гуям - свинг в яве начиная с 1.2, у меня со свингом ровно ноль проблем под линухами на армах и х86, макосью (ок, последние 3 версии не пробовал ибо не целевая платформа) и любой виндой начиная с xp и заканчивая 11. Единственный нюанс - под виндой свинг летает аки конь а под линухами упорно не любит в 2д ускорение из коробки но чоуж

ну и напомню что версии jdk не прибиты к версиям ОС (например 8 ява без проблем работает на 11 дебиане а 11 ява на 8ом дебиане) и их можно держать рядом

rukez ★★★★★
()

Возможно я козёл и такие дистры уже есть и такие манифесты уже внедрены в мир? Обсудите!

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

  • nixOS/guix, держит в себе все возможные библиотеки и каждому пользователю позволяет использовать то что он хочет. Зависимости будут только фундаментальные, такие как от загруженного ядра и т.п.
  • fedora silverblue, декларирует неизменяемый образ ОС из которого происходит загрузка, весь приклад уезжает в контейнеры. Зависит только от железа на котором получится её завести.

А вообще интересно, как ты видел задачу по принуждению разрабов писать только то ПО, которое обратно совместимо. И при этом не быть посланным в «пеший эротический тур»

torm7 ★
()

Почему дистрибутивы всё ещё считают нормальным иметь «версии»? Типа там Debian 8, 9, 10, 11? Почему это не просто Debian сквозной?

потому что дебиану сквозному уже больше 20 лет, и называется он Debian Sid

alt-tab-let ★★★
()
Ответ на: комментарий от rukez

по факту большинство разумно написанных вещей, написанных в 1996ом под яву 1 без проблем запустятся в 2022ом на 17ой яве, а написанные неразумно потребуют минимальных правок.

Это откровеный бред жавафанбоя, который даже комментировать не хочется. Почему-то всё требующее «минимальных правок» просто берут и выкидывают на практике.

agentgoblin ★
()

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

Я за. Но к сожалению в мире Линукс-бардака это повидимому малореально.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.