LINUX.ORG.RU

Для тех, кто думает перейти на Gentoo

 


61

25

Привет

Достаточно часто создаются темы, где люди думают переходить на Gentoo и хотят уточнить некоторые моменты. Чтобы сэкономить время себе и другим, решил создать этот топик, в котором буду собирать ответы на частые вопросы.

TL; DR: Для тех, кто думает перейти на Gentoo (комментарий)

Преимущества
#1 Gentoo очень гибкая и всенастраиваема
Пример того что в Gentoo делается просто:
- Использовать openrc вместо systemd или наоборот; pulseaudio или без него
- Наложить кастомный патч; пример когда это нужно
- Подключить или отключить такие вещи как vaapi, vdpau, opencv и т. п.
- Иметь несколько веток софта; уточню, что это работает только для определённых пакетов; например можно одновременно установить python 2.7, 3.4, 3.5 или qt4 и qt5, но нельзя одновременно установить qt 5.7 и 5.8

#2 Очень удобный и функциональный пакетный менеджер
Примеры удобных фич:
- Прервать установку (вплоть до перегрузки компьютера), а потом ее продолжить. Можно продолжить с последнего пакета (emerge --resume), продолжить но пропустить последний пакет, например, если его установка прервалась с ошибкой (emerge --resume --skipfirst, некоторые нюансы); для больших пакетов можно продолжить саму компиляцию (ebuild <полный путь и имя файла>.ebuild merge).
- Когда при установке обновляется конфиг приложения, определяется редактировался ли предыдущий конфиг пользователем. Если да, конфиг не перезаписывается, а кладётся радом, и выводится сообщение пользователю с предложением обновить конфиг.
- Обновить всю систему, но исключить некоторые пакеты (удобно для исключения больших пакетов из ежедневного обновления)
- Почистить зависимости - удалить те пакеты, которые больше никому не нужны.
- Поскольку ebuild - текстовый файл, то можно пропарсить на предмет требований к количеству ресурсов для установки:

$ for F in $(find /usr/portage -name "*.ebuild") ; do REQ=$(grep "CHECKREQS" "$F") ; if [[ -n "$REQ" ]]; then echo -e "\n$F\n$REQ" ; fi; done
- Вынести компиляцию на другой компьютер (поддержка distcc на уровне пакетного менеджера). Важно когда Gentoo устанавливается на слабый компьютер.


#3 Хорошая документация, по крайней мере на английском. Более того, поскольку Gentoo-специфичные утилиты являются лишь надстройкой на generic механизмами, документация от других дистрибутивов (например от Arch) в большинстве случаев тоже подходит.
Опрос 2014: У какого дистрибутива лучшая документация

#4 Достаточно свежий софт, много сторонних репозиториев.
Список сторонних репозиториев
Gentoo - rolling release, а значит как только новая версия конкретного софта появилась в репозитории, её можно установить. Но здесь не имеется ввиду, что как только новая версия зарелизилась, она моментально становится доступна в основном дереве; лаг есть, но он как правило не большой, хотя зависит от пакета. В тестинг ветке новые версии появляются раньше. Кроме того мейнтейнеры Gentoo могут маскировать некоторые версии, если в них обнаруживаются серьезные баги. Однако всегда можно размаскировать нужную версию. Кроме того для некоторых пакетов есть -live версии, когда исходники скачиваются напрямую из github или аналога.
Пример когда «у меня не самый свежий софт в Gentoo»

#5 Полный порядок в системе, ничего лишнего - эстетическое удовольствие, плюс возможно можно немного улучшить перформанс

#6 В процессе установки и эксплуатации получаешь полное понимание как работает система, а значит возникающие проблемы решаются быстро. На самом деле без должного знания Линукса (или желания его узнать в процессе) Gentoo нормально не установить.

Недостатки
#1 Сложная и долгая первичная установка. Если устанавливать в первый раз, нужно готовиться потратить несколько дней. Для опытных - несколько часов + компиляция.
Время установки (компиляции) Gentoo, еще немного цифр по большим пакетам

#2 Пакетный менеджер хоть и удобный, но очень медленный

#3 Если не обновлять систему долго (полгода и более), то сложность обновления сопоставима с установкой новой системы. Есть мнение, что emerge-webrsync --revert=yyyymmdd должен помочь (лично я не проверял).

Особенности
#1 Высокий порог входа; дистрибутив не для новичков. Если человек не комфортно чувствует себя в командной строке, никогда не компилировал ядро, не разбивал диски на разделы, не привык изучать докуменацию, вчитываться в сообщения и анализировать логи, то Gentoo покажется сложной в обслуживании, а возникающие проблемы будут списываться на дистрибутив.

#2 Обновляться нужно часто.

#3 Основные фичи - в командной строке. Для тех, кто не привык работать в командной строке, это будет минусом. А для тех, кто комфортно чувствует себя в командной строке, это будет плюсом, так как работа в командной строке более эффективна, а типовые сценарии можно обернуть в скрипты и еще больше сократить время на обслуживание системы.

#4 Есть две ветки: stable и testing. В stable меньше шансов встретить проблему, но в testing более свежий софт. Ветки можно комбинировать.

Мифы
Миф #1 Gentoo даст прирост производительности за счет того, что весь софт компилируется под конкретное железо.
Краткий ответ: В 99% случаев при смене дистрибутива X на Gentoo вы не заметите какого-либо улучшения в плане скорости работы. Если вы зададитесь целью сравнить свежеустановленный дистрибутив X с свежеустановленной Gentoo, то в 90% вы не увидите значительной разницы.

Детальный ответ.
Не следует ожидать что просто скомпилировав систему из исходников вы получите сколько-нибудь заметное улучшение перформанса.
Для большинства приложений компиляции под конкретное железо даст прирост производительности в районе 1-2%.
Ложка дегтя: в некоторых случаях даже может быть замедление. Например Firefox, можно ускорить с помощью PGO. В Gentoo по умолчанию это отключено, так как PGO увеличивает время компиляции почти в два раза. В бинарных дистрибутивах соотв. софт может быть скомпилирован с PGO.
Так как добиться улучшения производительности? Узкий круг приложений может быть значительно ускорен при компиляции под конкретную платформу - на 30%-50% и больше. В основном это приложения которые активно занимаются вычислениями. Но для этого требуется соотв. настройки. Например, активация SIMD инструкций, даст прирост производительности в мультимедиа приложениях. Некоторые процессоры имеют аппаратную поддержку шифрования AES. В бинарных дистрибутивах подобные фичи будут отключены, так как не все процессоры это поддерживают, а бинарные дистрибутивы в первую очередь заботятся о совместимости.
Небольшое улучшения перформанса возможно если убрать из системы всё лишнее (мнение 1, мнение 2).
Еще интересный случай

Миф #2 Обновления занимают много времени
Краткий ответ: 5-10 минут на фоне, не мешая основной работе.

Детальный ответ.
Обновления не занимают много времени, но опять же, при правильном подходе.
Во-первых, как было сказано выше, обновляться нужно часто. Для testing ветки это каждый день, или по крайней мере не реже чем в раз 2-3 недели. Для стабильной ветки - раз в неделю достаточно (на стабильной ветке намного реже выпускаются обновления)
Во-вторых, есть пакеты которые правда очень долго компилятся: libreoffice, firefox, chromium... Их всего 10-15. Я их исключаю из ежедневного обновления, а обновляю раз в несколько месяцев.
Еще нужно сказать, что на этом вопросе часто заостряют неоправданно много внимания. Обычно обновления происходят на фоне, и не сильно влияют на работу; так какая разница как долго они выполняются?
В итоге, у меня обновления занимают примерно 5-10 мин ежедневно (у меня тестинг-ветка).
К тому же всё происходит на фоне, в любой момент можно поставить на паузу (Ctrl+Z, fg), продолжить после прерывания (умышленного или случайного).
Мой скрипт ежедневного обновления

Миф #3 Gentoo требует много времени на обслуживание
Краткий ответ: Может быть больше, может быть меньше по сравнению с другими дистрибутивами. Очень зависит от того, насколько вы будете вчитываться в то, что пишет вам пакетный менеджер, и разбираться первопричинах.

Детальный ответ.
Обслуживание Gentoo занимает меньше времени по сравнению с другими дистрибутивами, но только при грамотном обращении, конечно. Достигается это за счет следующего:
- хороший пакетный менеджер: маскировки, глобальные и индивидуальные установки для пакетов (USE флаги, опции компиляции, каталоги), хуки, приоритеты (чтобы компиляция происходила на фоне и можно было работать), много опций для установки и анализа, подсказки после установки.
- всё происходит в CLI, а значит типовые операции можно обернуть в скрипты/алиасы.
- уже существуют много утилит для облегчения обслуживания: eselect, equery, eix, eclean, euse, genlop и др.
Грамотное обращение означает, что вы правильно и регулярно обновляете систему, исполняете предписания emerge, которые он выдает после установки, держите в порядке конфигурационные файлы, а если таки возникает проблема, которую решить вы не можете, то вы обращаетесь в форумы, а не просто жалуетесь на жизнь.
Что до проблем с обновлениями - см. следующий пункт «Миф #4 Установка, обновление постоянно падают; частые блокировки»

Миф #4 Установка, обновление постоянно падают; частые блокировки
Краткий ответ: Не чаще чем в других дистрибутивах

Детальный ответ.
Если говорить про «часто» и «постоянно», то проблемы с обновлением/установкой могут быть если:
- система давно не обновлялась
- система неправильно обслуживается (см. выше про Грамотное обращение)

В редких случаях пакет просто не компилируется. На самом деле это проблема не Gentoo, а тех, кто писал этот софт. И в подавляющим большинстве случаев это не является проблемой, и вот почему. Если это обновление, то можно продолжить процесс запустив emerge с параметрами --resume --skipfirst - он обойдет проблемный пакет, пересчитает зависимости чтобы система осталась консистентной, и продолжит обновление (а можно изначально передать параметр --keep-going, тогда это будет происходить автоматически, прерываний вообще не будет). Если пакет критичен, можно установить предыдущую версию, которая компилировалась (а проблемную замаскировать чтобы пакетный менеджер ее не видел).

Что может заблокировать обновление полностью:
- просьба пакетного менеджера поменять флаги пакета. При этом emerge предлагает сделать это автоматически, но лично я предпочитаю делать вручную. Для ручного способа, решается добавлением строчки в package.use
- просьба пакетного менеджера задать лицензию. Это валидно только для не-свободных лицензий, например EULA, Skype, Adobe Flash и т. п. Если мы говорим имено про обновление, то такое бывает только когда лицензия обновляется, что бывает очень редко (как много у вас пакетов под не-свободной лицензией, и как часто они меняют лицензию?). Решается добавлением одного слова в make.conf
- просьба пакетного менеджера размаскировать пакет. По моему опыту нужно не размаскировывать, а наоборот замаскировывать пакеты, которые тянут замаскированные зависимости. Это, да, требует минут 5-10 на разобраться. Но, если только у вас нет смешения веток и live пакетов, такой вариант случается раз в пятилетку.
- сложные блокировки. Большинство блокировок пакетный менеджер разрешает сам; по моим наблюдениям, качество данного механизма значительно улучшилось пару лет назад. Из своего опыты скажу, что (учитывая частые обновления) блокировок, которые бы совсем останавливали обновление я уже не видел года 1.5. Но если они есть, то это действительно сложный кейс.

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

Миф #5 В Gentoo нет бинарных пакетов
Краткий ответ: Есть там, где это действительно нужно.

Детальный ответ
Во-первых есть Calculate Linux - полностью бинарный форк Gentoo.
Во-вторых даже в самом Gentoo в основном репозитории есть несколько бинарных пакетов: libreoffice-bin, firefox-bin, некоторые другие. Связано это с тем, что из исходников они очень долго компилируются, и иногда проще поставить бинарник.
Бинарный пакет можно сделать самому командой quickpkg --include-config y <установленный пакет> - удобно для бекапов.

FAQ

#1 Установка на слабый компьютер
Смотря что есть слабый компьютер.
Из собственного опыта: Intel Core2 Duo 6600 @ 2.40GHz, 2Gb RAM + 4Gb swap хватало для комфортной работы в Gentoo.
Зачастую ebuld'ы содержат информацию о том, сколько нужно памяти для компиляции пакета. TOP 5:
16G - chromium
8G - ledger, isabelle
7G - ceph
6G - firefox x64 (для x32 нужно 3G), pypy x64 (для x32 нужно 3G)
5G - electron
Если компьютер и вправду слабый, то лучше выбрать не Gentoo (точнее не-source-based дистрибутив). Альтернатива - можно вынести компиляцию на другой «не-слабый» компьютер с помощью distcc.


Опрос 2021: Какую операционную систему и/или дистрибутив GNU/Linux вы используете на ПК?
Опрос 2018: Какой ОС вы пользуетесь на основном ПК?
Опрос 2017: Какую ОС вы используете на основном ПК?
Опрос 2014: Какой дистрибутив вы используете на десктопе?
W3Tech стастика дистрибутивов на серверах
Отличия дистрибутивов, время работы ноутбука
Чем удобны USE флаги
Сколько памяти нужно для РАБОТЫ Gentoo (сколько нужно для компиляции было указано выше)
Сколько места на диске нужно для Gentoo
Правильное полное обновление Gentoo, Мой скрипт ежедневного обновления, Еще вариант
Gentoo для девелоперов
Практика инсталляции Gentoo: в двух словах простым языком
Небольшой скрипт - сборка livecd

★★★★★

Последнее исправление: Kroz (всего исправлений: 36)

Ответ на: комментарий от Booster

А теперь что? Я просто недавно поставил Gentoo, так теперь и не знаю, как быть? Что делать? Не хочу быть идотом, даже по Достоевскому, а source хочу. Альтернативу дашь?

B0B
()
Ответ на: комментарий от annulen

Так Gentoo всё. Systemd победил. к 22 году выпилят все пакеты на «e».
Повторю для неосведомлённых: в Void запустить нормально Wayland WM - задача, мягко говоря, нетривиальная. Когда общался с разработчиками по поводу внедрения systemd напрямую, то меня отоваривали аявлениями, что «безопасно», «лучше» и так далее. даже русскоговорящие.

К сожалению, альтернативы тоже на ладан дышат. Не могу найти хорошей замены, пока… K1ss - слишком KISS, Crux преследует требования фирмы, где работает главный мейнтейнер, Mage - 2 калеки, Venom - musl, может и не особо плохо, но… И да! Slackware - помойка! Там такого намешано, что у меня вызывает недоумение.

Добавлю, в stable - циклические зависимости, harfbuzz/freetype, opengl/vaapi.
При нежелании установки perl и USE=«-pcre» - всё равно наваливает 80+ пакетов

И раньше я отвечал, на данный момент clang собирает всё, кроме glibc, даже emacs. Glibc валит ошибок (хаки? костыли?). Если кто разберётся - соберут. Значит всё. По лицензиям свободны конторы от GPL.

B0B
()
Последнее исправление: B0B (всего исправлений: 2)
Ответ на: комментарий от annulen

https://wiki.gentoo.org/wiki/Eudev

Посмотри, и я разговаривал с мейнтенерами. Они - «за». Безопасность и надёжность, говорят они.

https://archives.gentoo.org/gentoo-dev/message/dff4bf35636efef95f6d7926823b4e8d

Тут поближе

B0B
()
Последнее исправление: B0B (всего исправлений: 1)
Ответ на: комментарий от B0B

особенно понравилось:

WARNING If you happen to have an INSTALL_MASK with a blanket «systemd» glob, you will inevitably break your system. sys-fs/udev contains «systemd» in some of its filenames, hence a blanket filter rule will likely lead to a non-functional udev installation.

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

Ну и отлично, одним форком меньше. У меня стоит sys-fs/udev и мне это нравится. А в качестве init-системы OpenRC, и она никуда не денется, насколько я понимаю.

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)
Ответ на: комментарий от annulen

у тебя уже 6 элементов systemd, ты ешь OpenRC. Нормас франкенштейн.

Где твоя качественная (за что может нравиться systemd?) интеграция с DBUS? MESSAGES? Нет её, поломана. Я серьёзно говорю, осталось чуть-чуть и всё. Будет принято решение. А musl и embed отпочкуются, или уже? Аlpine - это сборка на основе Gentoo? Am I right?

Я промолчу про Wayland. Ты просто не пользуешься конструктором в этом направлении. Иначе бы знал, как они прибили всю экосистему к systemd. Я выше писал про нетривиальность, мягко говоря. Костылей в самой Gentoo просто мешок в этом ключе.

Правду сказать и не только в Gentoo. Alpine, Void тоже страдают.

B0B
()
Последнее исправление: B0B (всего исправлений: 2)
Ответ на: комментарий от B0B

Где твоя качественная (за что может нравиться systemd?) интеграция с DBUS? MESSAGES? Нет её, поломана.

Зачем мне интеграция инит-системы с копротехнологиями? D-Bus справляется с показом нотификашек в WM, там ему и место

Аlpine - это сборка на основе Gentoo? Am I right?

Вообще хз, меня системы с musl не интересуют

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

у тебя уже 6 элементов systemd

Откуда? udev был до systemd и будет после него, просто разработчики слили их в одну репу. Ну вот стоит у меня sys-apps/systemd-tmpfiles - это отдельный независимый ни от чего бинарник, мне че его хейтить за слово «systemd» в названии? Больше ничего с «systemd» в названии у меня нет

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

Откуда? udev был до systemd и будет после него, просто разработчики слили их в одну репу.

Вчера развернул gentoo, смотри выхлоп PS:

ps ax |grep udev
  564 ?        Ss     0:00 /lib/systemd/systemd-udevd
...etc...
B0B
()
Последнее исправление: B0B (всего исправлений: 1)
Ответ на: комментарий от Dumppper001

На девайсе с сотней мегабайт оперативки - вполне годная альтернатива

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

;) Похоже.

Я всё же не про это. Я уверен, что жаба(мы) сварится.

B0B
()
Ответ на: комментарий от Dumppper001

А на десктопе с кучей гигабайт оперативки от libc важна не абстрактная «жирность», а две вещи: производительность и совместимость. С первым у glibc все хорошо, а со вторым она вообще вне конкуренции, любая проприетарщина заведется.

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

что за чушь я читаю? Ты же тролль тупостью. Набьёшь рейтинг и будешь мнить себя супертроллем. Удивляет, что ты чей-то. Ведь кто-то сидит и думает, что он ого-го! Вот я какой! Удачи тебе в этом деле. Было замечено, что на ЛОР есть определённый пласт персонажей, поддерживающий и такой вид общения - тупизм и многозначительные обрывки фраз.

B0B
()
Ответ на: комментарий от Dumppper001

поставил gentoo с musl и все

Ври больше. Я столкнулся с непростыми задачами и проблемами при установке. Промолчу про использование.

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

Добавлю, в stable - циклические зависимости

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

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

Да минимальная система с Xorg без патчей не собирается. Дай угадаю, скрин ты не покажешь, так как снёс (ведь смог поставить, доказал). Ты же модный дистрохоппер ;) Понимаю.

B0B
()
Ответ на: комментарий от peregrine

А я генту с системд ставил когда только системд начал победное шествие.

Тогда тоже получался франкенштейн. Многие как раз отвязывали, багов небось ловил… Много воевал?

B0B
()
Ответ на: комментарий от grem

А нас - ОРДа! Ну, свято место пусто не бывает. Может за это время что-то придумают.

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

Ну убедил… Это был первый раз когда я собирал ее и с дуру брал musl, патчи были, но не так уж много… Да скрине не будет так как теперь стоит гента с glibc

Dumppper001
()
Ответ на: комментарий от B0B

Не, не много. В основном блевал от того что юниты толком не сообщают где там ошибка и синтаксического анализатора нету.

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

Да скрине не будет так как теперь стоит гента с glibc

Покажи скрин. И чтобы в нём USE показаны были. Посмотрим, на чём живут нынче мегатролли ;))).

B0B
()
Ответ на: комментарий от grem

Или хотя бы название пакета, который вызывает циклическую зависимость в stable

Написано выше. И решается легко, вот только не даёт с одной команды поставить на кмпиляцию и уйти о делам. Повторю - stable.

B0B
()
Ответ на: комментарий от Dumppper001

Схоронил твои высказывания для потомков. Как набьёшь скор этим персонажем и начнёшь многозначительно рассуждать с 3 и выше звёзами - жди меня в гости, будешь кормить. Ну или создавай нового и учись троллить знанием.

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

harfbuzz/freetype, opengl/vaapi.

Проявляется, небось, при первой установке или при попытке поставить пакеты отдельно, на не в рамках обновления world.

stable

Ты плохо понимаешь, что такое stable в Gentoo.

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

Ты плохо понимаешь, что такое stable в Gentoo.

Возможно.

Проявляется, небось, при первой установке или при попытке поставить пакеты отдельно, на не в рамках обновления world.

Вот тут как раз в обоих случаях.

B0B
()
Ответ на: комментарий от Artamudo

Как тут жаловаться? @fernandos! Меня обижают в спец топике!
Я пишу о проблемах, а регистрант выше меня обзывает! А проблемы с установкой Gentoo - шутками!

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

проблемы с установкой Gentoo

Да что ты знаешь о проблемах с установкой Gentoo?

Вот у меня действительно проблема была в 2006, когда я решил установить её: инета у меня не было толком (помпгабайтная оплата очень дорого), в наличии только CD, видимо, с битыми данными и/или кривым графическим установщиком (для x86_32 тогда был такой). Так вот, в зависимости от выбранных в нём параметров установка слетала в произвольный момент. Каждый раз на новом месте. Режим установки в режиме командной строки именно на этом CD не был предусмотрен - не знаю почему. «Через боль и грусть…»

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

И действительно! Что я знаю? Я же имею машину времени, которая меня портирует в 1954! Спорим, что ты сейчас даже не восстановишь свою установку 2006. Знаний не хватит.

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

В смысле не восстановлю? Каких знаний может не хватить? Открываешь handbook и читаешь что и как.

Тот комп я перестал обновлять в 2009 - система жива, но не обновлялась. На другие компы ставил в 2009 и 2017, 2020 годах.

grem ★★★★★
()
22 марта 2022 г.
Ответ на: комментарий от Shushundr

Закопали же топик год назад. Все на NixOS перешли, потому что модно и молодёжно.

Только в твоих фантазиях.

В этом топике прекрасно отвечают когда есть вопрошающие. Но чаще для вопросов создают отдельные темы, что есть тоже хорошей практикой.

Kroz ★★★★★
() автор топика
8 мая 2022 г.

ну ей богу, это простыня для студентов/ноулайферов. Ну скажи мне, ну рили серьёзный человек будет заморчаиваться над пердоленьем и коенпеляеньем в кансоличке, чтобы пару % достичь? Ну это просто смех!. Гента только для хикк. В энтерпрайзе она не применима.

SpaceRanger ★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)