Окт 01

KDE всегда было крепким орешком для разработчиков Gentoo. В начале 2005 года структура KDE была разбита на несколько сотен пакетов: от kwin до kolourpaint’а. С одной стороны это облегчало минорные обновления (когда из-за уязвимости в konqueror не надо было полностью перекомпилировать kdebase), а также давало возможность устанавливать только необходимые компоненты, с другой — управляться с несколькими сотнями пакетов сложновато и пользователям, и разработчикам.

В любом случае, схема «разделённые ебилды» была введна во времена 3.4.x, и к настоящему времени полностью заменила «монолитные ебилды». Для KDE 4.0 и KDE 4.1 монолитных ебилдов нет и не будет, как и даже для KDE 3.5.10. В прочем, к выходу KDE 4.2 разделённых ебилдов уже тоже не останется.

Стоп, как это не останется?

Ну ладно, я пошутил. Ебилды по-прежнему будут разделены, но вместо установки мета-пакетов (kde-meta, kdegames-meta и т.д.) предлагается использовать новую возможность Portage 2.2 — наборы (коллекции? множества? sets, в общем). Скажем, чтобы установить KDE полностью, надо будет запускать emerge @kde вместо emerge kde-meta (в 4.1.x будут поддерживаться обе схемы, в 4.2 мета-пакетов не будет).

Какие это даёт преимущества? Например, если вы ставили kde-meta, то при удалении любого KDE-пакета при следующем обновлении он снова вытягивался в зависимостях. «Обрезать лишнее» возможности не было, чтобы избавиться от лишних компонент приходилось ставить нужные пакеты по одному.

Наборы призваны решить эту проблему. Вообще-то не все планируемые возможности войдут в первый стабильный релиз Portage 2.2, но в будущих версиях Portage можно будет удалять пакеты из набора, и они не будут упорно светиться в зависимостях (восстановить полный набор тоже будет возможно).

Рекомендуемым способом получить минимальную KDE-инсталляцию будет установить набор @kdebase. А вообще наборы будут предоставлены для всех основых тарболлов KDE (то, что раньше было сначала монолитными пакетами, а затем — мета-пакетами): @kdeaccessibility, @kdeadmin, @kdeartwork, @kdebase, @kdeedu, @kdegames, @kdegraphics, @kdemultimedia, @kdenetwork, @kdepim, @kdesdk, @kdetoys и @kdeutils. Будут также наборы @kde-3.5 и @kde-4x, чтобы не промахнуться с версией; отдельный набор зависимостей @kdedeps и опциональных пакетов @kdeoptional. Qt будет @qt-split.

Пользователи также смогут определять свои наборы и даже совершать операции над наборами! Среди предопределённых наборов будут @system, @world и @installed. К примеру, чтобы обновить system, а затем world, можно будет запустить

emerge @system && emerge @world-@system

Чтобы обновить только установленные пакеты из наборов @kde и @gnome

emerge @kde+@gnome/@installed

Ещё раз напомню: в Portage 2.2 может войти далеко не всё из выше перечисленного. Но базовые возможности по установке наборов там будут.

Тем временем команда разработчиков Exherbo решила проявить другой подход к разделению пакетов: parts (доли, части). Дольки (будем пока что их называть так) — это примерно те же USE-флаги, но с дополнительным набором правил (например, долька A не может быть включена, если также не влючена долька B). Таким образом для каждого монолитного пакета можно указать, какие именно дольки-приложения вы хотите установить. При этом каждый монолитный пакет будет соответствовать одному KDE-тарболлу, что, кстати, положительно скажется на время установки.

Здесь мы снова возвращаемся к нашему примеру с Konqueror, когда из-за небольшого изменения нам приходится обновлять весь монолитный пакет. Так что решение разработчиков Exherbo страдает от многих недостатков монолитных ебилдов. В прочем, разработчики не исключают некоторого разделения пакетов в будущем, но в то же время уверены, что такого полного разделения, как в Gentoo, делать не стоит. Учитывая текущее состояние Exherbo, ожидать можно чего угодно.

Кстати, я сегодня выложил статью о некоторых грядущих нововведениях в Gentoo, рекомендую к ознакомлению.

Добавка: Судя по комментариям у народа есть некоторые непонимание данных изменений. Что ж, давайте попростому. Вы привыкли писать emerge kde-meta? Привыкните и к emerge @kde. Больше от вас ничего и не требуется :) Ничего сложного в этом нет. Всякими продвинутыми изощрениями с операциями над наборами заниматься необязательно (другое дело — если вы с ними разберётесь, то инструмент будет весьма удобный).

Есть ещё такой момент. Допустим, вам нужно удалить KDE 3.5. Как это сделать? С нынешней системой —

emerge -C kde-meta:3.5
emerge --depclean

…и молиться. Потому что реализация –depclean в портежах оставляет желать лучшего. А в Portage 2.2 вы сможете сделать

emerge -C @kde-3.5

…и не волноваться по поводу сломанного –depclean

Добавка. Вот тут ещё про наборы

И ещё одна добавка В данный момент в официальное дерево портежей добавляются ебилды KDE 4.1.2. Пакеты пока что замаскированы, и поддержки наборов пока что не видно.

  • LXj

    Честно говоря, пока что помочь ничем не могу. По идее один из пакетов сета должен каким-то образом при желании удаляться. Но как там это всё сейчас реализовано -- не знаю, ибо в настоящий момент Gentoo не пользуюсь. В ближайшую неделю-две планирую вернуться обратно на Gentoo и посмотреть, как там оно с сетами.


    Пока что могу только как обычно посоветовать RTFM

  • Pavel

    Вдохновленный Вашей статьей вот уже пол-года обновляю KDE так:
    emerge @kdebase-4.2 (начиная с бета-версий)
    но, недавно, при попытке обновится до 4.2.1 получил:
    [blocks B ] <kde-base/libkworkspace-4.2.1:4.2 ("<kde-base/libkworkspace-4.2.1:4.2" is blocking kde-base/kdelibs-4.2.1-r2)
    Чтож...
    emerge -vC kde-base/libkworkspace
    Not unmerging package kde-base/libkworkspace-4.2.0 as it is
    still referenced by the following package sets:
    kdebase-4.2


    И что теперь делать? emerge -C @kdebase-4.2 ?!!!

  • LXj

    Странно. Не экспериментировал ещё с этим, постараюсь посмотреть

  • klopik

    "Преимущества такие emerge @kdepim поставил весь ПИМ, emerge -C akregator - удалил его за ненадобностью и потом после обновления @kde-pim akregator не будет установлен. А можно будет создать свой набор и поставить только нужный софт."
    Вот как бы нетак, не получится:
    emerge -pvC akregator





    These are the packages that would be unmerged:
    Not unmerging package kde-base/akregator-3.5.10 as it is
    still referenced by the following package sets:
    kdepim-3.5


  • Отличная фича :)
    Очень не хватало, будем пользоваться. Особенно для kde применимо.
    Может они ещё чего понафигачат в portage позитивного, типа маскировки пооверлейно, так и забуду про желание осилить paludis (его сборка это ппц).

  • LXj

    Я так понимаю, что виртуальные пакеты тут совсем не при чём.

  • А наборы как-то пересекаются с виртуальными пакетами, или последние остаются без изменений?


    P. S. Вводное слово «впрочем» пишется слитно.

  • LXj

    Вот это очень интересный вопрос :) С сетами пока что не всё так просто


    Подробности читайте в логе чата: http://knotes.ru/wp-content/uploads/2008/10/gentoo-kde.log

  • Андрей

    Мне интересно, собираются ли в Paludis поддерживать формат sets от portage? поскольку сеты из genkdesvn paludis видит, а из kde4-overlay(kdesvn-portage) нет.


  • А каждый раз на невозможность залогиниться через OpenID не ругается?



    Неа.


    По сабжу. После прочтения вики начал качать генту. Заинтересовали.

  • увлекся маленько, естественно это зависит от репозитория, у Arch (pacman) приложения не разбиты

  • нет их, если APT может устанавливать отдельные программы, тот же akregator, то pacman вовсе не знает о них, только kdeedu, kdegames и прочее.
    Таким образом, они не настолько гибкие, как представленная система.

  • LXj

    Я, кстати, правильно понимаю, что в других пакетных менеджерах аналогов наборов нет, только свои мета-пакеты/виртуальные пакеты?

  • хм, никогда не юзал Дженту, слабо представляю, что она из себя представляет.
    Однако по аналогии с пакетными менеджерами (APT, pacman) описанные изменения кажутся довольно удобными, если я все правильно понял.

  • LXj

    Честно говоря не уверен, что сделает -1C akregator. Это надо спросить у разработчиков, и если такой фичи нет — то отправить фичереквест.


    В любом случае всегда можно сделать что-то вроде emerge @kdepim-@installed


  • Теперь же — просто установить @kdepim, после чего удалить akregator и забыть про него.



    А есть возможность удалить пакет, но чтоб он вытянулся при обновлении ? (как раньше)
    Аля emerge -1C akregator

  • LXj

    И ещё: создать свой набор — это просто перечислить пакеты.


    Написать свой ебилд — это налить к тому ещё же кучу воды. Ну да, всего строчек на 10 больше, но всё равно — менее удобно.Ещё и целый оверлей городить надо (а чтобы перенести определение набора с одного компьютера на другой, достаточно будет скопировать один файлик)


    При этом для наборов будут ещё и всякие плюшки типа того же @set/@installed или @set1/@set2 поддерживаться

  • LXj

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



    emerge @kde — заново вытянуть весь KDE со всеми зависимостями
    emerge @kde/@installed — обновить только то, что есть в системе


    Идея понятна? То же, что и с мета-пакетами, но удобнее отсекать ненужные тебе вещи.



    А раньше типа я не мог свой ебилд написать?



    Это ты предлагаешь свой мета-пакет писать? И каждый раз его обновлять? Удалить нужный пакет средствами системы и не приделавыть потом костыли — это гораздо удобнее.


    Т.е. раньше чтобы убрать тот же akregator нужно было либо


    <ul>
    <li>не ставить kdepim-meta, а смотреть всего его зависимости и ставить их вручную</li>
    <li>скопировать kdepim-meta.ebuild к себе в оверлей, а затем следить за его обновлением с выходом каждой версии KDE</li>
    </ul>

    Теперь же -- просто установить @kdepim, после чего удалить akregator и забыть про него.


    А любители мета-пакетов, повторяюсь, ничего не заметят.



    Почти. Я раньше авторизовывался через ЖЖ (x_dris_x), и меня твой вордпресс не просил ввести имя и мыло :-) А сейчас попросил. Фигня каэш, всё запомнилось и без проблем комментирую.



    Ну если попросил только один раз, то это естественно — я сменил OpenID-плагин. А каждый раз на невозможность залогиниться через OpenID не ругается?


  • Вопрос к вам обоим: с авторизацией через OpenID проблем не возникло?



    Почти. Я раньше авторизовывался через ЖЖ (x_dris_x), и меня твой вордпресс не просил ввести имя и мыло :-) А сейчас попросил. Фигня каэш, всё запомнилось и без проблем комментирую.

  • 2Алексей



    Преимущества такие emerge @kdepim поставил весь ПИМ, emerge -C akregator - удалил его за ненадобностью и потом после обновления @kde-pim akregator не будет установлен



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



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



    А раньше типа я не мог свой ебилд написать?

  • Алексей

    Преимущества такие emerge @kdepim поставил весь ПИМ, emerge -C akregator - удалил его за ненадобностью и потом после обновления @kde-pim akregator не будет установлен. А можно будет создать свой набор и поставить только нужный софт.

  • LXj

    proton, какие усложнения? Просто там где ты раньше писал emerge kde-meta, будешь писать emerge @kde. Вот и всё усложнение. Продвинутыми фичами пользоваться никто тебя не заставляет.


    Kol4ak, исправил, спасибо.


    Вопрос к вам обоим: с авторизацией через OpenID проблем не возникло?

  • "Например" слитно.


    Как всё интересно. Пожалуй, как-нибудь всё-таки поковыряюсь в генте. Очень здравые решения придумывают разработчики.

  • Что-то не вижу я преимуществ перед мета-пакетами, имхо только лишние усложнения

blog comments powered by Disqus