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)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.