LINUX.ORG.RU

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

 


62

26

Привет

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

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

В каких случаях имеет смысл выбирать Gentoo:
1. Вы любите настраивать систему под себя. В Gentoo есть больше возможностей по кастомизации системы в сравнении с многими другими дистрибутивами: USE флаги, параметры компиляции, поддержка пользовательских патчей в пакетном менеджере, хуки пакетного менеджера (вставка своих шагов на этапе установки пакетов), игры с версиями приложений и/или зависимостей, игры с альтернативными имплементациями (openrc/systemd/..., rsyslog/syslog-ng/metalog, slang/ncruses, dhcpcd/dhclient/...).
2. Вы хотите обучиться основам Линукс. Установка Gentoo невозможна без практического понимания базовых принципов Линукс: интерфейс командной строки, chroot, работа с диском (MBR, GPT, возможно LVM, возможно шифрование, типы файловых систем, параметры монтирования и т. п.), настройка сети (WiFi/Ethernet, DHCP, ifconfig/ip, выбор между wicd/NetworkManager/sysinit и т. п.), ядро (конфигурация/компиляция/установка, firmware, внешние модули aka @modules-rebuild, возможно параметры при запуске и т. п.), графический сервер (Xorg/wayland, драйвера) и др. Большинство дистрибутивов скрывают это за инсталлятором, но в Gentoo вам придется столкнуться с этим непосредственно.
3. Требуется система максимально оптимизированная под определённую платформу или нефункциональные требования: минимальный размер (embedded), минимальный отклик (банковские системы, игровые сервера), максимальное быстродействие в конкретных областях (обработка видео потоков) и т. п. Стоит заметить, что Gentoo имеет смысл выбирать только в том случае, когда нет дистрибутива уже заточенного под эти требования, или он чем-то не устраивает.

В остальных случаях Gentoo скорее всего не лучший выбор, разве что Just for Fun.

Сильные стороны 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 даст прирост производительности за счет того, что весь софт компилируется под конкретное железо.
Краткий ответ: Без дополнительных телодвижений - в пределах пары процентов, так что вряд ли вы это заметите.

Детальный ответ.
Не следует ожидать что просто скомпилировав систему из исходников вы получите сколько-нибудь заметное улучшение перформанса.
Для большинства приложений компиляции под конкретное железо даст прирост производительности в районе 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 нет бинарных пакетов
Краткий ответ: Есть там, где это действительно нужно.

Детальный ответ
29 декабря 2023 года было официально объявлено о релизе бинарного варианта Gentoo: Gentoo становится бинарным / https://www.gentoo.org/news/2023/12/29/Gentoo-binary.html Также есть Calculate Linux - полностью бинарный форк Gentoo.
С самого начала в «классическом» Gentoo в основном репозитории всегда были несколько бинарных пакетов: libreoffice-bin, firefox-bin, некоторые другие. Связано это с тем, что из исходников они очень долго компилируются, и иногда проще поставить бинарник.
Бинарный пакет можно сделать самому командой quickpkg --include-config y <установленный пакет> - удобно для бекапов.
Но стоит обратить внимание на то, что при использовании бинарных пакетов пропадают те главные особенности, ради которых имеет смысл выбирать Gentoo. Если вам нужен уже скомпилированный софт, возможно вам имеет смысл присмотреться к другим дистрибутивам.

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 (всего исправлений: 43)
Ответ на: комментарий от Deleted

Помнить бы название его, hplj1018 и драйвер из пакета net-print/foo2zjs. Когда разбирался, все упиралось в cups.

Сначала был удален hotplug через который осуществлялась загрузка фирмвари в принтер. На это я сделал какой-то костыль, или просто скрипт руками запускал или в udev добавил, не помню.

А сейчас даже подгрузив руками fw он не работает.

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

Интересный принтер hplj1018

https://forum.calculate-linux.org/t/hp-lj-1018-ocherednye-problemy/6678/6

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

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

Может пора железки обновить или модернизировать?

Да — стопа не годится под новые ботинки, желудок не в состоянии переварить химсостав гамбургеров нового поколения...

deep-purple ★★★★★
()
Ответ на: комментарий от Kroz

через 5-7 лет с Дебианом ты в любом случае столкнешься с этим

Я уже две-три волны таких пережил. И это печально.

deep-purple ★★★★★
()
Ответ на: комментарий от Kroz

Но в Gentoo можно зафиксировать версию выбранного тобой пакета

В локальном оверлее и до тех пор, пока зависимости пакета существуют в основном дереве.

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

У меня рязань 2700x,16 гигов рамы (не хватает, буду добавлять), nvme. Тормознутость emerge вполне ощутима

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

И при чем тут питон, кстати? Проблема явно не в питоне, а в алгоритме разрешения зависимостей и не хватки индексов аля eix

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

Что самое интересное, ядро бинарного дистрибутива с намного большей вероятностью подойдёт под хотелки, чем покрытые плесенью дефолтные конфиги genkernel

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

И при чем тут питон, кстати? Проблема явно не в питоне, а в алгоритме разрешения зависимостей и не хватки индексов аля eix

Если я правильно понял, то проблема в том, что каждый ebuild - это bash file. И чтобы его распарсить, нужно запустить bash и скормить ему ebuild плюс пачку конфигов и вспомогательных библиотек. И так для каждого из тысяч build'ов. Отсюда и тормоза. И снахрапа такое не исправишь.

То есть с одной стороны решение было хорошее: не велосипедить свой формат, дать максимальную гибкость, язык, который знает любой Линуксоид. А скорость - наверно надеялись, что «закон Мура, компьютеры становятся всё мощнее», или просто оставили на потом, как это обычно бывает. А теперь фиг поменяешь.

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

Что самое интересное, ядро бинарного дистрибутива с намного большей вероятностью подойдёт под хотелки, чем покрытые плесенью дефолтные конфиги genkernel

genkernel'ом не пользуюсь и не рекомендую. Сконфигурить ядро не сложно, если знать подход.

Ядро из другого дистра может и подойдет (хоть в моем случае я бы не был столь уверен). Но с таким подходом тогда Ubuntu в самый раз; зачем нужны тогда всякие Debian, SuSe и Arch с Gentoo? Или вообще Mac - вон люди используют и радуются.

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

Если я правильно понял, то проблема в том, что каждый ebuild - это bash file. И чтобы его распарсить, нужно запустить bash и скормить ему ebuild плюс пачку конфигов и вспомогательных библиотек. И так для каждого из тысяч build'ов. Отсюда и тормоза. И снахрапа такое не исправишь.

Ну да. Но eix однако индексирует эту хрень и работает пулей.

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

Сконфигурить ядро не сложно, если знать подход.

Т.е. если взять за основу конфиг от убунты, например

Нет, если начинать с make defconfig. Внезапно, в дефолте есть 95% всего что нужно, и минимум лишнего.

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

Но eix однако индексирует эту хрень и работает пулей.

Да, они сделали неплохой workaround. Главное не забывать запускать eix-update после каждого обновления дерева или даже одного ebuild'а.

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

Надо обновлять дерево только через eix-sync, и волосы будут гладкими и шелковистыми

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

Но eix однако индексирует эту хрень и работает пулей.

Разве он занимается самой тяжёлой задачей - построением дерева зависимостей?

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

Нет. Но однако юз-флаги парсит, что как бы говорит нам, что хоть ебилды и являются баш-скриптами, парсить их вполне реально и без привлечения баша.

А для самой тяжелой задачи уже давно придумали libsolv

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

Юзфлаги вагон утилит умеет парсить, а зависимости (установленных пакетов) qtools умеет показывать.

libsolv

Supported package formats:
rpm/rpm5
deb
arch linux
haiku

То есть форматы, где никаких сложных ветвлений нет?

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

Которые (conditional requires) используются в основном для других целей (проверка версии системы и прочая мелочь). А в таких же не так часто.

Например, не то, чтобы сложные: проверить для ebuild и всех его зависимостей поддерживаемые версии python и возможность сборки для нескольких его версий одновременно. При этом построить дерево зависимостей с учётом выбранных флагов, которые выставлены в соответствии с текущим профилем, настройками флагов make.conf, индивидуальными настройками флагов для пакетов. И всё это сделать для старшей размаскированной версии (проверить маскировки) каждого пакета в дереве. Для каждого пакета ещё в процессе подцепить eclass, который тоже может определять дополнительные зависимости и набор правил сборки.

Понятно, что если одновременно в дереве только одна версия каждого пакета всё заметно упрощается.

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

На самом деле долго зависимости считаются для всего @world, для отдельного пакета обрабатывается всё намного быстрее

grem ★★★★★
()
26 сентября 2019 г.

У меня Иногда компьютер зависает при выключении на логотипе (Xubuntu 18.04, 19.04). И вчера мне один парень написал «та же херня была при 50% выключений, это дерьмо под названием systemd. поставил gentoo с openrc и все норм выключается upd: хотя не, у меня на хард лок был, через 2мин выключался»

Для себя не вижу смысла переходить

stafik1993
()
11 марта 2020 г.

Если компьютер и вправду слабый, то лучше выбрать не Gentoo (точнее не-source-based дистрибутив).

Отчасти миф. Я пользовался Эксхербой на микробуке с каким-то интел-селероном. Тогда это был ещё слабый селерон, а нынче их маленькие камешки могут разгоняться до 35 ватт, от 5 ватт в покое. Вы получаете все плющки слабого энергопотребления для долгой жизни батарейки, при этом получая и все плюшки компактной, хорошо оптимизированной системы. К тому же плюс большая плюшка - возможность выбрать себе удобные и проверенные пакеты для небольших компуктеров, например wyeb/geary, а тяжелые вроде мозиллы скачать бинарно в юзер-хоум, на всякий случай.

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

Из минусов юзинга на буках и микробуках — необходимость повыёживаться ради гибернаций/энергоуправления/некоторых драйверов.

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

Долгое время пользовался Слакой, поставил Gentoo, сразу возник вопрос по использованию emerge: можно ли при установке пакета увидить сам процесс установки, как скачиваются исходники, распаковываются, процесс сборки? Вроде того как это наглядно видно в Слаке когда запускпешь слакбилд

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

Можно, по умолчанию он и показывает, если специально не использовать опции -q(–quiet) или –quiet-build.

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

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

emerge -v имя пакета,показывает только общую информацию, emerging/installing

Очень странно, может в make.conf какие опции добавлены? Есть там переменная EMERGE_DEFAULT_OPTS что в ней?

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

Тогда не знаю, но -v это –verbose для более подробного вывода информации о use флагах и пары других вещей.

Если я запущу emerge -1 ,то в консоль будет идти весь выхлоп, но я не использую sudo

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

Проверил пор рутом, тоже самое:

[URL=http://vfl.ru/fotos/4ae7586429845237.html][IMG]http://images.vfl.ru/ii/1583960132/4ae75864/29845237_m.png[/IMG][/URL]

я помню и в калькулейте была такая же картина при использовании emerge, я думал, что это стандартная его работа, но вы говорите, что вывод лога сборки должен быть

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

EMERGE_DEFAULT_OPTS=«–jobs=5 –load-average=4»

что-то нашёл такое.

То есть из-за включённой опции -jobs вывод скрывается.
Это опция для параллельной сборки нескольких пакетов.

Для распределённой сборки одного пакета нужно использовать опцию MAKEOPTS в make.conf

Из man emerge:

--quiet-build [ y | n ]
Redirect all build output to logs alone, and do not display it on stdout. If a build failure occurs for a single package, the build log will be automatically displayed on stdout (unless the --quiet-fail option is enabled). If there are multiple build failures (due to options like --keep-going or --jobs), then the content of the log files will not be displayed, and instead the paths of the log files will be displayed together with the corresponding die messages. Note that interactive packages currently force all build output to be displayed on stdout. This issue can be temporarily avoided by specifying --accept-properties=-interactive. Further, note that disabling --quiet-build has no effect if --jobs is set to anything higher than 1.

Особенно важно последнее замечание:

Further, note that disabling –quiet-build has no effect if –jobs is set to anything higher than 1.

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

Но смотри, он правда чуть замедляет сборку из-за вывода. Да и смотреть на него смысла нет - всё нужное (полезная постинстал инфа) на самом деле вытаскивается утилитой elogv.

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

Но смотри, он правда чуть замедляет сборку из-за вывода.

Это если у тебя медленный терминал.
В консоли имеет смысл включить kms.
Если в GUI, то вот я специально исследовал этот вопрос: Эмуляторы терминалов: тест скорости, комментарии... .TL;DR - используйте urxvt.
Тогда замедления не будет (или оно будет не существенным).

Kroz ★★★★★
() автор топика

Подскажите как можно исправить

!!! The following binary packages have been ignored due to non matching USE:

=sys-devel/clang-8.0.1 python_targets_python2_7

!!! The following binary packages have been ignored due to changed dependencies:

 perl-core/File-Path-2.130.0::gentoo
 mail-mta/ssmtp-2.64-r3::gentoo

?

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

Информации недостаточно.

По второму похоже на изменившиеся зависимости; --changed-deps и/или --binpkg-changed-deps должно помочь.

По первому похоже на изменившиеся USE флаги. Ты используешь --binpkg-respect-use?

Помогла бы следующая инфа:
- полная команда, которую ты выполняешь, ее полный вывод
- вывод emerge --info.
- вывод emerge -pvuND --changed-deps --with-bdeps=y --complete-graph=y --backtrack=30 --keep-going --verbose-conflicts world

Kroz ★★★★★
() автор топика

Всем привет, подскажите, по этому руководству:

http://mrcat.ru/advanced-portage

скрипт автопатча через /etc/portage/bashrc ещё актуален и работает или теперь там что-нужно изменить? Сделал у себя, пытаюсь применить к пакету свой патч чтобы не создать локальный оверлеей, ничего не получается

  • Call stack:
  • ebuild.sh, line 125: Called pre_src_configure
  •  bashrc, line   4:  Called src_autopatcher
    
  •  bashrc, line  24:  Called die
    
  • The specific snippet of code:
  •  die "Failed Patch: ${PATCH/*\//} !"
    

может скрипт уже устарел?

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

Блин, уже тяжело найти решение для прошлых версий.

Попробуй вот это добавь в /etc/portage/bashrc

post_src_unpack()
{
    [[ ${EAPI:-0} == [012345] ]] || return

    if type epatch_user &> /dev/null ; then
        if [[ -d ${S} ]]; then
            pushd "${S}" 2>/dev/null
            epatch_user
            popd 2>/dev/null
        else
            epatch_user
        fi
    fi
}

Если не решит вопрос, буду искать более глубоко.

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

Альтернатива:

Создай файл /etc/portage/env/${CATEGORY}/${P} с таким содержимым:

src_prepare() {
        [[ ${EAPI:-0} == [012345] ]] || return
        epatch_user 
}

Сделай файл запускаемым.

Это хук для конкретного пакета или версии.

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

Не знаю, сделал:

mkdir -p /etc/portage/env/games-fps/openarena

там создал файл openarena с таким содержанием как выше, chmod u+x, ложу свои патчи в /etc/portage/patches/games-fps/openarena, запускаю emerge, он их всё равно не видит и не применяет

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

Или вот, например: хочу free paskal собрать по arm64. Создаю mkdir -p /etc/portage/patches/dev-lang/fpc, туда патч копирую, запускаю emerge, ничего тоже не применяется

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

openarena - файл, а не каталог

$ mkdir -p /etc/portage/env/games-fps
$ echo "
src_prepare() {
    einfo '********** Hello from src_prepare() **********'

    [[ ${EAPI:-0} == [012345] ]] || return
    epatch_user 
}
" > /etc/portage/env/games-fps/openarena

$ chmod +x /etc/portage/env/games-fps/openarena
$ emerge -av openarena

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

Работает, но правда теперь та же проблема с патчем, что и в первом сообщении:

  • Failed Patch: openarena.patch !
  • ( /etc/portage/patches//games-fps/openarena/openarena.patch )
  • Include in your bugreport the contents of:
  • /var/tmp/portage/games-fps/openarena-0.8.8/temp/openarena.patch.out
  • ERROR: games-fps/openarena-0.8.8::jorgicio failed (prepare phase):
  • Failed Patch: openarena.patch!
  • Call stack:
  • ebuild.sh, line  125:  Called src_prepare
    
  • openarena, line    6:  Called epatch_user
    
  • environment, line 1312: Called epatch
  • environment, line 1284: Called die
  • The specific snippet of code:
  •           die "Failed Patch: ${patchname}!";
    

Если не трудно, посмотрите патч https://paste.ee/p/xkGIO Оверлей вот этот http://gpo.zugaina.org/games-fps/openarena Что не так?

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

Должно помочь, но не помогает:

emerge -v –binpkg-changed-deps=y perl-core/File-Path показывает блок в virtual/perl-File-Path. Делаю ему –unmerge, оно в итоге говорит обновить perl до свежей версии, но не обновляет т.к некоторым пакетам всё ещё нужна версия старая. Делаю emerge -1 –nodeps perl perl-cleaner обновляет perl с 5.26 до 5.30. Повторяю для perl-core/File-Path и такая же картина: теперь просит даунгрейд perla назад на 5.26. И как это разрулить не понятно

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