LINUX.ORG.RU
ФорумTalks

Идеальная пакетная система.

 


0

1

Какой вы её видите. В частности интересен способ избегания «ада зависимостей».
1:
Cтатическая линковка:
1 Система превращается в винду, сложность замены библиотек на более новые с исправленными уязвимостями. Но для обновления можно попытаться перелинковать их не перекомпилируя.
2 Дублирование библиотек в рамках дистрибутива. Но в ядре есть функциональность дублирования одинаковых участков оперативной памяти.
3 Не все программы можно так собрать. Glibc не готова для статики, но есть musl.
2:
Установка каждого пакета в собственную папку и управление библиотеками через симлинки:
1 Сложноватая система. Нужен принципиально новый пакетный менеджер.
2 Нужно менять путь к библиотекам при компиляции. Есть случаи когда это невозможно?
3 Многоуровневое файловое дерево.
3:
Установка конфликтующих пакетов в отдельное пространство имён для процесса:
1 Эта технология используется кажется для виртуализации, но можно упростить её для такой цели. Это не докер, а просто ядро будет подставлять например разный /usr/ для разных процессов. Немного похоже на Plan9.
2 Стандартная компиляция. Довольно просто прикрутить к стандартным дистрибутивам.
3 Путаница с пространствами имен.
4 Не охватывает ядро и драйвера.

Ответ на: комментарий от KennyMinigun

Это круто, но я не могу отредактировать! Именно такой и должна была быть тема.

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

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

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

И такого быть на должно. Ставить пакеты только из репы - уже дикое ограничение.
Я ставил Elementary OS и там не работало правильно разрешение. Я обратил внимание что драйвера и иксы имеют другую версию.
Устанавливаю версию из репы (там много своих ppa подключено) - конфликт зависимостей, устанавливаю и прошу aptitude - она сносит иксы, устанавливаю стандартные дистрибутивные иксы - не запускаются, устанавливаю на всякий случай ядро из дистрибутива и перезагружаюсь - всё равно толку нет.
Несколько раз система даже порывалась снести половину себя.

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

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

Затык в том, что разработчики смешали коней и поней в одном стойле.
Хотя на 2003 год уже было ясно, что «прикладные программы» надо отделять от базовой системы.

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

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

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

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

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

Это позволит ставить много программ одновременно

А что сейчас нельзя ставить много программ одновременно? У меня их вроде не одна и не две установлены.

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

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

А ещё организация по программам кажется более удобной чем организация по типу.

Только кажется. Весь bash в говно скатится, если будет организация по программам. Мне этого не нужно, спасибо.

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

Скрипт будет видеть из какой директории запущен и на основе этого принимать решение о том какой пакет ставить?
Ещё запускать дополнительные инструкции из пакета?

Да

Почему легче опакечивать make install?

Потому что можно, поправив makefile, собрать пакет в одну директорию, сделать её пакетной, и создать ссылки на файлы. Проще будет удаить пакет: просто снёс нужную папку в /opt, демон сам уберёт ссылки.

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

если еще не сделали по-другому, то значит либо не родился еще аматор-теоретик, которому это надо.

Либо дистроклепателей такое положение устраивает.

Меня, например, такой зверинец с клеткой-репозиторием не устраивает на десктопе.

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

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

bitbucket подаст...

Реально, уже задаюсь вопросом - на каком навозе и в какой компостной яме собирается Гном и более мелкие приложения. И даже НЕ хочу знать, каким макаром формируются новые релизы, которые не запускаются на старых дистрах , старый - это убунта-14.04. ага.

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

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

А Ubuntu 12.04 LTS, которая все еще поддерживается и для которой выходят Security-апдейты — устаревшая по-твоему или нет?

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

А что сейчас нельзя ставить много программ одновременно? У меня их вроде не одна и не две установлены.

Только те библиотеки которых не конфликтуют с друг другом. Вышла более новая версия foobaz например. Её опакетили для ...sid.

Это нужно. Устаревшие версии чего-то могут отличаться интерфейсом и важными фичами.

Это работает и наоборот: нельзя обновить пакет с уязвимостью без того чтобы не сломать систему об обновление.

Таки...да. Но можно создать символьные линки из /opt/. Даже скорее всего нужно потому что без этого не всё будет работать и вообще очень неудобно. Можно будет даже откатывать / к определённому бывшему состоянию (например до обновления) перестраивая линки.

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

Неправильно оформил комментарии, а исправить уже не получится.

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

Я просто не понимаю как. Если использовать старые версии программ - скорее всего придётся использовать старые версии библиотек.

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

А это не будет проблемой?

По идее, нет. make нам соберёт нужные файлы и их нужно только будет переместить куда надо и создать сслыки. Процесс можно попробовать автоматизировать.

Мы же хотим отображать всё в корень.

В каком смысле ?

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

И такого быть на должно.

Я и не спорю, что убунта - дно.

Я ставил Elementary OS и там не работало правильно разрешение. Я обратил внимание что драйвера и иксы имеют другую версию. Устанавливаю версию из репы (там много своих ppa подключено) - конфликт зависимостей, устанавливаю и прошу aptitude - она сносит иксы, устанавливаю стандартные дистрибутивные иксы - не запускаются, устанавливаю на всякий случай ядро из дистрибутива и перезагружаюсь - всё равно толку нет.

Остросюжетная пьеса в трёх частях «мыши и кактус»...

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

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

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

Чуть сложнее сделать. Нужно хранить где-то таблицу что /opt/pkg/network/firefox/firefox должен быть /usr/bin/firefox и линковать его отдельно от всего. Если будет /opt/pkg/network/bin/firefox , то его можно просто целиком отправить в /usr/

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

Ой! /opt/pkg/network/firefox/firefox. Конечно. Даже с версией.

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

Но нужно где-то хранить что первое это второе. И так вообще на каждый файл в системе. Хотя удобнее тоже.

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

Но нужно где-то хранить что первое это второе

Будет понятно по названию директории. Т.е $PKGDIR/bin/ отправлять в /bin/ (ну точнее всё в /usr/bin). В обычных бинарниках тоже так, как я описал, но там файлы просто распаковываются сразу куда надо.

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