Год на Gentoo после Xubuntu и macOS: мой опыт (мне нравится)

Эффект IKEA — когнитивное искажение, которое появляется, когда покупатели непропорционально высоко оценивают значимость (ценность) товаров, которые они создают отчасти сами (например, собирают из деталей)[1].

logologo

tldr: хоть я и любитель скакать по разным граням реальности — с Gentoo я обрел чувство гармонии. Gentoo качественная, проработанная, не чувствую что проект умирает. Я получил перформанс, минимализм, и не нужно год ждать пока в Debian/Ubuntu выйдет текущая версия например Audacity. Gentoo просто работает, я не уделяю много времени ее настройке — поставил и все, теперь браузер, Vim, и иногда обновления системы.

First of all, welcome to Gentoo! You are about to enter the world of choices and performance. Gentoo is all about choices. When installing Gentoo, this is made clear several times — users can choose how much they want to compile themselves, how to install Gentoo, what system logger to use, etc. Gentoo is a fast, modern meta-distribution with a clean and flexible design. It is built on an ecosystem of free software and does not hide what is beneath the hood from its users.

Теперь подробнее

С 2016 до 2019 я провел на корпоративных Маках — гештальт закрыт, и теперь я знаю что macOS мне не нравится. Тем более на сервере же Линукс. Я люблю открытые технологии, мне нравится что Linux можно установить на флешку, телефон, Raspberry Pi, что Линукс в роутере. MacOS отдавал жирком bloatware, это хорошая гостиница для среднего человека, но я строитель и люблю строить свой домик в лесу. В macOS большинство моего времени было в терминале и браузере, так что сейчас мой UX такой же, только чувство что система работает легче, как то поджаристей. В Маке не оказалось ничего крутого для меня. Годы идут, и Линукс дистрибутивы хорошеют, оптимизируются, странно если к 2030 доля Windows будет такой же высокой как и сегодня, хотя я не тревожусь об этом, если в жизни есть чтото хорошее — не нужно втягивать в это всех.

До 2016 года я жил несколько лет на Xubuntu: добротная Ubuntu, только с оболочкой которая легче для системных ресурсов. Тоже терминал с Вимом и браузер. Я давно хотел попробовать Gentoo, даже не знаю откуда, но я чувствовал чтото в этом названии, через их сайт и уродский логотип. В Ubuntu я замучался тем что там старые версии пакетов в репозитории — это была главная причина вновь попробовать другой дистрибутив. И вот год назад я попробовал Gentoo. Я был в восторге. Хотел сразу поделиться своим счастьем, но прожил на ней год перед тем как это все написать, чтобы остыть и осмотреться.

Известная шутка — Install Gentoo, это значит что если сможешь одолеть этот квест, то будешь знать как разобраться со многими техническими проблемами. Оказалось что у Gentoo нет инсталятора. Хорошая документация по шагам, добрый сабреддит где мне всегда помогали. За день поставил. Потом графическое окружение, несколько программ — и все, оно работает. Тут я познал радости конфигурирования ядра — просто отключил лишее, гуглил некоторые пункты. Ядро получилось маленьким, система запускается быстро, работает шустро — одна из ключевых фич Gentoo это то что пакеты собираются из исходников, и можно указать чтобы компиляция происходила для определенной платформы, то есть если я этот жесткий диск вставлю в другой компьютер — загрузка возможно не случится. Главный минус сборки из исходников — время компиляции, но меня это не сильно тревожит — оставить раз в месяц включенным компьютер на ночь. Большие пакеты можно устанавливать уже в бинарном виде — например Firefox.

Мой главный конфигурационный файл /etc/portage/make.conf:

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
COMMON_FLAGS="-O2 -march=ivybridge -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"

CPU_FLAGS_X86="aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"

USE="glamor libinput -pulseaudio -qt5 opus vpx ffmpeg -proprietary-codecs -cdda -dvd -bluetooth -closure-compile -cups"

# NOTE: This stage was built with the bindist Use flag enabled
PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"

# This sets the language of build output to English.
# Please keep this setting intact when reporting bugs.
LC_MESSAGES=C

# Without this cannot "grub-install /dev/sda"
GRUB_PLATFORMS="pc"

# ipw3945 needed for ThinkPad wireless firmware
ACCEPT_LICENSE="@FREE ipw3945"

VIDEO_CARDS="intel i965"

USE флаги — чтобы все пакеты знали с чем и без чего собираться. Например мне нужен opus чтобы экспортировать аудио в этот современный формат — добавил. Нигде не нужен bluetooth — удалил. Платформа: ivybridge, дорогой компилятор, сим сообщаю тебе что у меня не тупо дженерик x64, а вот этот ivybridge — может тебе это поможет производить более кастомный код именно для моего компьютера.

Я читал что и патчи свои тащить можно, которые будут применяться при каждом обновлении пакета, и передавать свои флаги для каждого отдельного пакета — я не пробовал. Я пишу JavaScript, Go — мне редко в жизни нужно было чтото перекомпилировать. Помню разок Python и Git — менял там SSL.

UNIX is very simple, it just needs a genius to understand its simplicity.

Dennis Ritchie

Я не чувствую себя задротистым красноглазиком. У меня есть Tinder и я встречаюсь с девочками. Им я стараюсь не рассказывать о своей любви. Система просто работает. Я чуть лучше разобрался в GNU/Linux. У Gentoo есть дух, стиль. У меня не Gnome, не KDE — у меня минималистичный i3. Нет панелей — только горячая клавиша для запуска браузера и терминала, так что для этого текста у меня нет секси скриншота как из фильма будущего, даже браузер в полноэкранном режиме. Если нужно запустить Audacity (известный аудиоредактор) — я запускаю ее через терминал. Никаких виджетов — если мне нужно узнать загрузку CPU или сети — я запускаю соответствующие утилиты в терминале. Я не проводил тестов, но уверен что и батарея от этого живет лучше.

Здесь видео как я устанавливаю и использую equery: утилиту для получения информации о пакетах:

Тут что я вижу перед установкой Terminator - эмулятора терминала: сам пакет и его зависимости с флагамиТут что я вижу перед установкой Terminator — эмулятора терминала: сам пакет и его зависимости с флагами

Несколько раз у меня случались проблемы с зависимостями -, но я смог несложно их починить. При установке пакета мне приятно узнать его зависимости, лучше понимать обстановку. Например я узнал что для установки Chromium по умолчанию нужно установить Яву для Closure Compiler — проверить собственный код. Я отключил это флагом.

У Gentoo хорошие веб интерфейсы — если не из терминала, но можно приятно посмотреть на возможные флаги пакета:

d7acca2ae347f7fa21c8fca100efb6d2.png

Несколько раз поправил несколько конфигурационных файлов. Wi-Fi: пароли тоже в конфиге. Зарепортал им несколько багов, и даже пулл реквест в дерево пакетов. Добавил в страницу моего лаптопа. Сотворчество. Gentoo у меня на двух машинах, немного другие конфиги, чуть другое ядро (некоторые галочки стоят в других местах). Зачем мне Arch? Gentoo дает перформанс. Я нашел тебя. Проблем нет, Gentoo хорошо работает, я доволен. Gentoo это GNU/Linux, без лишнего, с развитым пакетным менеджером который большинство пакетов собирает из исходников; вот так просто, без магии и сюрпризов, скучно и прагматично. Ну еще у них есть своя инит система OperRC, но даже не знаю что о ней сказать — она просто работает. Кто хочет можно выбрать systemd. Не нужно после установки удалять почтовый клиент, игры. Даже cron из коробки нет. Одна команда — и cron есть. Репозиторий пакетов большой, можно подключать внешние репозитории, как ppa в Ubuntu, но пока мне всего хватает. Есть две программки которые я сам хочу добавить в репозиторий, я изучал вопрос — оказывается это не сложно, по суть нужно создать файлик ebuild который есть баш скрипт, например вот для Terminator:

# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

PYTHON_COMPAT=( python3_{7,8,9} )
inherit distutils-r1 optfeature virtualx xdg-utils

DESCRIPTION="Multiple GNOME terminals in one window"
HOMEPAGE="https://github.com/gnome-terminator/terminator"
SRC_URI="https://github.com/gnome-terminator/terminator/archive/v${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~x86"
IUSE="test"

RDEPEND="
	dev-libs/glib:2
	dev-python/configobj[${PYTHON_USEDEP}]
	dev-python/psutil[${PYTHON_USEDEP}]
	dev-python/pycairo[${PYTHON_USEDEP}]
	dev-python/pygobject:3[${PYTHON_USEDEP}]
	gnome-base/gsettings-desktop-schemas[introspection]
	x11-libs/gtk+:3
	x11-libs/vte:2.91[introspection]
"
BDEPEND="
	dev-util/intltool
	sys-devel/gettext
	test? (
		dev-python/dbus-python[${PYTHON_USEDEP}]
		x11-libs/libnotify[introspection]
	)
"
distutils_enable_tests pytest

PATCHES=(
	"${FILESDIR}"/terminator-1.91-without-icon-cache.patch
	"${FILESDIR}"/terminator-1.91-desktop.patch
)

src_prepare() {
	xdg_environment_reset
	sed -i -e '/pytest-runner/d' setup.py || die
	distutils-r1_src_prepare
}

src_test() {
	virtx distutils-r1_src_test
}

pkg_postinst() {
	xdg_desktop_database_update
	xdg_icon_cache_update

	elog "Consider installing the following for additional features:"
	optfeature "D-Bus" dev-python/dbus-python
	optfeature "Desktop notifications" "x11-libs/libnotify[introspection]"
	optfeature "Global keyboard shortcuts" "dev-libs/keybinder:3[introspection]"
}

pkg_postrm() {
	xdg_desktop_database_update
	xdg_icon_cache_update
}

В Gentoo есть стабильные версии пакетов, тестовые (я читал что некоторые включают тестовый режим для всей системы, и все работает), а также 9999 версии — так тут обозначается git HEAD — когда сборка будет производиться прямо из головы репозитория.

Я не буду ставить Gentoo другу — субьект должен любить компьютер, хотеть чуть разобраться в железе (какие компоненты присутствуют, что нужно, а что нет). Я могу сделать это за него, но замена видеокарты может потребовать немножко телодвижения — включить ее поддержку в ядре (нажать кнопочку, сохранить, запустить компиляцию, скопировать файлы, обновить загрузчик одной командой). Хотя можно изначально скомпилировать ядро с поддержкой устройств которых пока нет. Другу-непрограммисту я поставлю Xubuntu/Lubuntu — ведь там есть аналог меню Пуск для запуска программки, горячая клавиша это слишком магично. Хотя в Gentoo можно установить LXQt, и внешне будет то же самое, хм.

Да, я понимаю, многие уже наигрались в это, и уставшие от жизни купили Маки, я понимаю. Тебе не нужно ползти в горы и справляться на байдарке — ты уже взрослый, отращивай попу в сиденье с подогревом. Может я тоже таким стану. По моему опыту я не вижу что Gentoo является фрикерством — она просто работает, давая удобные инструменты для конфигурирования системы до этапа компиляции, если вам это нужно. Пакеты просто ставятся, как в Ubuntu. Думаю, что имидж трудного диструбутива был реальнее в прошлом, за годы комьюнити выточило простую рабочую систему, которая работает чуть быстрее прочих. Gentoo так хороша что я даже не считаю себя экспертом — не было резона глубоко копать, я же работаю за компьютером, мы же ценим свое время. И иногда эти гадкие околорабочие штуки тоже могут быть приятными.

© Habrahabr.ru