LINUX.ORG.RU
ФорумTalks

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

 


0

1

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

Ответ на: Guix от Camel

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

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

Никогда не встречался с адом зависимостей? Современные пакетные менеджеры на самом деле жутко ограничивают свободу же.

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

Никогда не встречался с адом зависимостей? Современные пакетные менеджеры на самом деле жутко ограничивают свободу же.

я поэтому и пишу, что вижу пакетную систему в аду, и без нее лучше, чем с ней.

waker ★★★★★
()

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

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

Современные пакетные менеджеры на самом деле жутко ограничивают свободу же

Какие пакетные менеджеры и в каком месте ограничивают твою свободу ?

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

Он хороший

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

Почему неизменяемую? Совсем не переусложнён.

Camel ★★★★★
()
Ответ на: Он хороший от Camel

Ну у них там есть файлы configuration.nix и ещё какие-то. И это единственный способ конфигурировать систему из-за того что они хотят полностью «функциональный» подход.
А ещё он очень долго работает, занимает много места...

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

Работает же

А ещё он очень долго работает

То есть большие uptime'ы уже не в радость?

занимает много места...

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

Ну у них там есть файлы configuration.nix и ещё какие-то.

config.scm. И таки программы можно ставить и без записи их в config.scm, просто вызывая guix из командной строки. Но использование config.scm позволяет получить гарантированно такое же состояние как в config.scm. Кроме того каждый пользователь может ставить программы в $HOME.

Camel ★★★★★
()

Мне в целом нравятся DEB-пакеты, но apt-hell — это действительно ад. Давайте вспомним, какие у нас есть инструменты:

apt
apt-add-repository
apt-btrfs-snapshot
apt-build
apt-cache
apt-cacher
apt-cacher-ng
apt-cdrom
apt-clone
apt-config
apt-cudf
apt-cudf-get
aptd
apt-dater
apt-dater-host
aptdcon
apt-extracttemplates
apt-file
apt-forktracer
apt-ftparchive
apt-get
apt-get-build-depends
apt-grip
apticron
aptitude
aptitude-create-state-bundle
aptitude-curses
aptitude-robot
aptitude-robot-session
aptitude-run-state-bundle
apt-key
apt-listchanges
apt-listdifferences
aptly
apt-mark
apt-mirror
apt-move
apt-offline
apt-offline-gui
aptoncd
apt-p2p
apt-rdepends
aptsh
apt-show-source
apt-show-versions
apt-sortpkgs
apt-src
apturl
apturl-gtk
apturl-kde
apt-venv
apt-zip-inst
apt-zip-list
dpkg
dpkg-architecture
dpkg-awk
dpkg-buildflags
dpkg-buildpackage
dpkg-checkbuilddeps
dpkg-cross
dpkg-deb
dpkg-distaddfile
dpkg-divert
dpkg-genchanges
dpkg-gencontrol
dpkg-gensymbols
dpkg-hold
dpkg-maintscript-helper
dpkg-mergechangelogs
dpkg-name
dpkg-parsechangelog
dpkg-preconfigure
dpkg-purge
dpkg-query
dpkg-reconfigure
dpkg-remove
dpkg-repack
dpkg-scanpackages
dpkg-scansources
dpkg-shlibdeps
dpkg-sig
dpkg-source
dpkg-split
dpkg-statoverride
dpkg-trigger
dpkg-unhold
dpkg-vendor
dpkg-www
Наверное, что-то в списке лишнее, случайно попавшее из devscripts, а чего-то наоборот не хватает. Но это жуткий зоопарк. Если сделать как в арче, намного лучше будет.

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

Поставить несколько версий одного пакета

В папке пакета будет 2 папки с разными версиями. Ещё в генте так вроде можно делать.

поставить произвольную версию пакета

А кто будет хранить в репозитории несколько версий одного пакета ? Кому оно надо ? LTS-версии и так в отдельный пакет выделяются.

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

В генте почти нельзя кажется. Только если сам автор пакета озаботился.
Но можно в принципе хранить. Особенно если завезти аналог apt-p2p?

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

Cтатическая линковка:
Система превращается в винду

Ты упоролся?

Там winsxs сейчас.

invy ★★★★★
()

Установка каждого пакета в собственную папку

и union-монтирование пакетов-библиотек с пакетом-бинарём при запуске.

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

почти нельзя

Гугли «package slots». Можно, если вообще реально и майнтайнер не наркоман.

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

Зачем каждый раз кастовать именно меня? Есть куча гентоводов гораздо опытнее меня.

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

Но он выглядит ужасным усложнением

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

странная получится система если она будет управляться им

Чому? Будут пакеты сидеть в своих директориях, вроде /var/packages/b/bash/bash-4.3.30 и т.д.

SystemD-hater
()

Как в слаке - идеально.

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

Ну по сравнением с системой чисто собранной с одним ПМ без обвязок.
Ну она может быть только дополнением. Свои репы и своё всё - очень странно.
Программы будут появляться по запросу?

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

Статика

У меня идея - поставлять исходника пакета с выполненным make (то есть скопилено) и если надо перелинковать - перелниковать!
Во время установки достаточно стрипнуть бинарник!

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

Мне нравится, как в Windows: всё своё ношу с собой.

Всё «ванильное». Понятно, что установлено мной. Поддержка разных версий. Мобильность (за редким исключением). Нет проблем обновить программу из-за того, что другая программа хочет perl версии ниже (да, два раза было :)).

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

Я говорю что достаточно будет обвязки вокруг apt-get или там pacman.

SystemD-hater
()

Какой вы её видите. В частности интересен способ избегания «ада зависимостей».

Нет никакого ада. Работающая система зависимостей - одно из главных преимуществ линукса перед другими системами.

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

я поэтому и пишу, что вижу пакетную систему в аду, и без нее лучше, чем с ней.

Удваиваю этого оратора.

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

Нет никакого ада.

Gentoo, Nixos?
Действительно никогда не было проблем с зависимостями?
Предложений удалить пакет так как он объявлен неподдерживаемым?
Насильственного обновления частей системы для удаления программ?

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

Предложений удалить пакет так как он объявлен неподдерживаемым?

Не было.

Насильственного обновления частей системы для удаления программ?

Это еще что?

Действительно никогда не было проблем с зависимостями?

Приходилось разруливать только юзы.

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

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

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

Никто не мешает использовать сразу несколько подходов.

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

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

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