Итак к примеру начали мы установку gentoo по всем известному мануалу.
Собрали: загрузчик, ядро и собственно дошли до того момента когда еще ничего лишнего со времени чистого stage-3 не добавлено однако минимально достаточная система уже загружается и работает.
Дальше начинаются душевные терзания. “Ах чтож теперь делать?” или “Как бы вот поставить вот то а потом вдруг оно мне не понравится?” Так вот на данном этапе избавление от душевных терзаний принесет чтение вот этого довольно скучного документа /usr/portage/sys-apps/portage/ChangeLog
Тут надо сделать лирическое отступление.
В portage есть ebuild, meta ebuild. Первые просто ebuild собирают одну программу/библиотеку. А вторые meta ebuild сами не устанавливают в систему ровным счетом ничего. Однако meta ebuild используется в тех случаях когда нужно поставить множество простых ebuild объединенных некой сущностью.
Ну к примеру app-misc/mc поставит программу mc а вот kde-base/kde-meta вытянет и установит все “стандартные” ebuild-ы для KDE. Иными словами meta ebuild это такой хитрый ebuild для сборки множеств/наборов ebuild.
Тут конец лирического отступления.
Так вот если внимательно читать документ /usr/portage/sys-apps/portage/ChangeLog то можно заметить много раз повторяющееся выражение package set. Так вот если в нескольких словах то package set это решение для человека раздираемого душевными страданиями из второго абзаца.
Напомню он поставил stage-3 собрал загрузчик и ядро. У него уже все заработало но дальше он сомневается что именно он хочет gnome/kde. В общем сомнений и причин душевных терзаний можно придумать множество. Объединяет их одно - желание каким либо образом иметь возможность откатить систему до того счастливого момента когда стоял stage-3, загрузчик и ядро.
Предполагаем что на данный момент установлен stage-3, загрузчик и ядро в общем минимальная рабочая система. В командах все банально:
emerge eix; #если еще нет…
eix-update;
mkdir /etc/portage/sets/
eix -Ic --only-names >> /etc/portage/sets/core
После такого шаманства в системе появится файлик /etc/portage/sets/core со списком всех установленных приложений. А вот с точки зрения portage мы создали package set под названием @core.
Команда
emerge --list-sets
покажет доступные package set`s в системе.
Но stage-3+grub+kernel обычно собирают ради DM/WM. И следущий этап это x11-base/xorg-server и x11-base/xorg-x11. Какой бы DM/WM вы не выбрали xorg все равно нужен. xorg это следущая основная точка бекапа. xorg собирается достаточно долго для того чтобы вы сами придумали как сделать package set для иксов. Важно понять одно USE флаги влияю на зависимости.
Изменение USE флагов поменяет зависимости и не забывайте что package set это обычный текстовой файлик, который автоматически никто за вас переделывать не будет.
Ну к примеру второй этап с USE флагами для иксов определились… Тут можно сделать
emerge x11-base/xorg-x11 x11-base/xorg-server -pv >> ~/some-file
И за время пока иксы будут собираться вы успеете в любимом текстовом редакторе привести файл ~/some-file к виду /etc/portage/sets/core
А можно дождаться окончания сборки иксов а потом повторить
eix -Ic --only-names >> /etc/portage/sets/some-file
а затем diff-ом создать /etc/portage/sets/X в который войдет все что было в /etc/portage/sets/some-file за исключением /etc/portage/sets/core
Вот появилась необходимость и man diff почитать ;)
Ладно предположим вы разобрались и с этим. Зачем нужны были package set и как они облегчат жизнь человеку?
emerge @core #пересоберет все из core
emerge @X #пересобирет все из xorg
Предположим в один прекрасный день человек решил что xorg вовсе ему не нужен
emerge @X --unmerge # прощайте иксы…
И у человека осталось stage-3+grub+kernel.
Конечно package set не исключительно единственно правильный способ. package set это удобное добавление к стандартным средствам. И кроме того package set не отменяет необходимости в
emerge --depclean
revdep-rebuild
И прочих вещах. Однако при использовании package set чистить систему будет гораздо проще после удаления иксов по команде emerge @X –unmerge.
Comments