Gentoo — дистрибутив, который собирается из исходников на вашей машине. Это не самоцель: Portage позволяет включить ровно те возможности, которые нужны, и убрать всё лишнее. Взамен вы платите временем компиляции и необходимостью разбираться в зависимостях. Ниже — путь от stage3 до обновляемой системы, с реалистичными командами и предупреждениями о граблях.

Как работает Portage

Пакет описывается ebuild-скриптом: где взять исходники, какие патчи применить, как собрать и установить. Portage разрешает зависимости, проверяет USE-флаги и запускает сборку. USE-флаг — это переключатель возможности: X включает графику, wayland — поддержку протокола, systemd — интеграцию с systemd. Набор флагов задаётся глобально и точечно для отдельных пакетов.

Результат — дерево зависимостей, которое нужно один раз настроить. Ошибки проявляются не сразу: неверный флаг может отключить нужную функцию, и вы узнаете об этом через неделю. Поэтому конфигурацию хранят в git и меняют небольшими шагами.

Stage3 и профиль

Установка начинается с распаковки stage3 в подготовленные разделы. Дальше нужен рабочий Portage и корректный профиль: он задаёт базовые USE-флаги, версию init-системы и архитектурные настройки.

eselect profile list
eselect profile set 1
emerge --sync
emerge --ask --verbose @world

Номер профиля берите из списка: он зависит от релиза и выбранного окружения. Для рабочего стола это обычно вариант desktop с OpenRC или systemd; менять init-систему после установки крайне неудобно, так что решайте сразу.

make.conf и USE-флаги

Основные настройки — в /etc/portage/make.conf. -march=native включает оптимизации под текущий процессор, но собранные пакеты не переносятся на другую машину. Число задач подбирайте по памяти: примерно 2 ГБ на поток сборки.

COMMON_FLAGS="-O2 -pipe -march=native"
MAKEOPTS="-j8"
EMERGE_DEFAULT_OPTS="--jobs=4 --load-average=8"
ACCEPT_LICENSE="@FREE"

Точечные флаги кладут в файлы /etc/portage/package.use/. Например, отключение X для vim:

echo "app-editors/vim -X" | sudo tee /etc/portage/package.use/vim
emerge --ask --verbose --newuse app-editors/vim
emerge --ask --depclean
dispatch-conf

После изменения флагов нужен --newuse, иначе Portage не пересоберёт зависимые пакеты. dispatch-conf показывает конфликты конфигурационных файлов и позволяет сохранить вашу версию; etc-update делает то же самое в более простом интерфейсе.

Ядро и загрузчик

Проще всего взять готовое ядро: gentoo-kernel-bin ставится бинарным пакетом и не требует конфигурации. Для контроля над драйверами собирайте gentoo-kernel или vanilla-kernel.

emerge --ask sys-kernel/gentoo-kernel-bin
emerge --ask sys-boot/grub
grub-install --target=x86_64-efi --efi-directory=/efi
grub-mkconfig -o /boot/grub/grub.cfg

При ручной сборке последовательность выглядит так: make menuconfig, make -j$(nproc), make modules_install, make install. Не забудьте про firmware для Wi-Fi и видеокарт — пакет sys-kernel/linux-firmware обязателен почти на любом ноутбуке.

Обновление мира

Порядок действий фиксирован: синхронизация дерева, чтение новостей, обновление @world, очистка.

emerge --sync
eselect news read
emerge --ask --verbose --update --deep --newuse @world
emerge --ask --depclean

Новости читают до обновления, а не после: там предупреждают о переименованиях пакетов и обязательных действиях. Если обновление прервалось, не запускайте --depclean — сначала добейтесь согласованного состояния.

Бинарные пакеты

Официальный binhost позволяет не компилировать типовые пакеты. Он настраивается в /etc/portage/binrepos.conf, после чего Portage сначала ищет готовую сборку и только потом берётся за исходники. Локальный кэш тоже полезен:

emerge --ask --getbinpkg sys-apps/htop
emerge --ask --buildpkg sys-apps/htop
ls /var/cache/binpkgs
emerge --ask --usepkgonly sys-apps/htop

--buildpkg сохраняет собранный пакет, чтобы при переустановке не компилировать заново. --usepkgonly запрещает сборку и завершится ошибкой, если бинарника нет.

Первые шаги после установки

После первой загрузки создайте пользователя, настройте сеть и время. В Gentoo нет готового мастера, поэтому команды выполняются вручную; зато видно, что именно меняется в системе.

emerge --ask app-admin/sudo
emerge --ask net-misc/networkmanager
rc-update add NetworkManager default
emerge --ask net-misc/chrony

Для OpenRC службы включаются через rc-update add, для systemd — через systemctl enable. Локали и часовой пояс задаются в /etc/locale.gen и символьной ссылке /etc/localtime; после правки списка локалей нужно выполнить locale-gen.

Если пакет не собирается

Ошибка компиляции почти всегда означает несовместимый USE-флаг, нехватку памяти или отсутствующую зависимость. Portage пишет полный лог, и начинать надо с него, а не с повторной сборки.

emerge --ask --verbose cat/pkg 2>&1 | tee /tmp/build.log
FEATURES="keepwork" emerge --ask cat/pkg
emerge --info
emerge --ask --changed-use --deep @world

Каталог работы сохраняется в /var/tmp/portage, если включить keepwork; там лежит config.log с причиной. Нехватку памяти решает снижение MAKEOPTS или добавление swap. Команда --changed-use пересобирает только пакеты, у которых изменился набор флагов, и экономит часы.

Диагностика

Пакет app-portage/gentoolkit даёт equery и qlist — без них разбираться в зависимостях тяжело.

emerge --ask app-portage/gentoolkit
equery depends dev-libs/openssl
equery files app-editors/vim
revdep-rebuild

equery depends показывает, кто требует пакет, equery files — какие файлы установлены, revdep-rebuild ищет программы, сломанные после обновления библиотек. Полный список установленного даёт qlist -I.

Кому подходит Gentoo

  • Тем, кто хочет понимать состав системы и управлять каждой опцией.
  • Энтузиастам с мощным процессором: сборка идёт параллельно и предсказуемо.
  • Тем, кому нужны нестандартные флаги или патчи в пакетах.

Если система нужна «просто чтобы работала», Gentoo отнимет больше времени, чем сэкономит. Для серверов и рабочих машин без специфических требований разумнее бинарный дистрибутив.

Сколько времени это занимает

На современном четырёхъядерном процессоре базовая система с OpenRC собирается за несколько часов, рабочий стол с браузером и офисом — за ночь. Обновление @world обычно занимает 20–60 минут, но после смены профиля или крупных библиотек может растянуться на несколько часов. Практический совет: включите binhost, не ставьте -O3 без необходимости и не запускайте полную пересборку emerge -e @world ради сомнительного прироста.

Итог

Gentoo — это не про скорость загрузки, а про контроль. Профиль задаёт основу, USE-флаги — состав возможностей, binhost сокращает компиляцию, а дисциплина обновлений держит систему целой. Начните с готового ядра и малого набора флагов, ведите конфиги в git и читайте новости перед каждым обновлением — тогда сборка из исходников остаётся предсказуемой.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте