LINUX.ORG.RU
решено ФорумAdmin

Как вы там живёте на gentoo с этими USE флагами?

 


0

3

Я вообще фишку не понял. Уже третий раз пытаюсь осилить эту операционку, так как затея выглядит в целом прикольно. Ну вот есть у меня USE флаги. Казалось бы, всё хорошо, всё просто, но как понять какие мне нужны, не пересобирая мир по 1000 раз? Я видел их описание. Надобавлял в make.conf. В очередной раз ты пытаешься поставить пакет и оказывается что надо включать флаг. Правильно включать их для пакетов отдельно, по большей части? Или подбирать самые правильные глобальные? Какие вообще рекомендуемые практики по этой теме есть?

Не использую Gentoo, но думаю что большой разницы между аргументами к ./configure нету. Используй значения по умолчанию которые тебе предоставляет дистрибутив (профили итд), но если понадобится что то включить, или что то пересобрать, тогда уже и смотри USE-флаги. От потребностей зависит и способ определения флага, для пакета или группы.

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

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)

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

Дело вкуса, но глобальных флагов в целом немного, а тех из них, которые имеет смысл задавать для всей системы в целом ещё меньше (и они обычно уже заданы в профиле)

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

Окей, просто как пример:

  1. Выключаешь gtk и gnome
  2. У тебя отказываются ставиться кеды, потому что хочет поставиться gnome-keyring
  3. Оказывается надо включить флаг keyring (или как-то так), чтоб кеды начали собираться со своим
  4. python-pillow вообще требует выключения truetype, иначе отказываются ставиться ещё несколько зависимостей

И вот такие вещи конечно взрывают мозг. Из документации совсем не понятно какие именно мне нужны и как собрать правильно плюс-минус с первого раза.

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

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

Вспомогательные утилиты типа eix и equery сильно помогают.

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

Выключаешь gtk и gnome

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

Как собрать с первого раза с необычными флагами, не знают и сами мейнтеры, уверен в Gentoo было много проблем, когда при определенной конфигурации флагов, пакет становится непригодным для использования.

Думаю твой опыт с разбором проблем вполне нормальный. Я бы поискал чужие, работающие настройки, которые приближены к тому чего ты хочешь добиться. Так ты сможешь избежать хождение по граблям лично.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)

На своё усмотрение. Проще всего конечно включить нужное глобально. А вообще, перед сборкой внимательно надо просматривать список пакетов. например,emerge -av smth. Отключение юзфлагов может помочь убрать лишние зависимости. Сначала сложно, особенно если не знаешь, что делает тот или иной компонент.Я свою первую генту только с 3го раза собрал в юзабельное состояние

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

ну вообще, их задача как раз обеспечить поддержку всех возможнных конфигураций юз-флагов и заблокировать невозможные. То есть если ты попытался установить заведомо несовместимую конфигурацию, portage попытался её собрать и она обломилась или собрала что-то совсем сломанное - это наверняка баг в ебилде. Другое дело, что не всегда с этим справляются и ситуация, когда случайно потерялась какая-то условная зависимость или не включилась фича - вполне обычная и её вероятность возрастает с отдалением от «дефолтов».

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

Окей, просто как пример:
Выключаешь gtk и gnome
У тебя отказываются ставиться кеды, потому что хочет поставиться gnome-keyring

Для этого есть место, под названием /etc/portage/package.use
создай там файлик. Например useflags и добавь в него kde-plasma/plasma-meta gnome-keyring как пример. В этом случае, минуя все гтк и гномы, у тебя для кед подтянется только гном-кейринг

Dodik
()

INHO фишка не столько в use flags, сколько в том, что оно source based, что позволяет собрать системы из любого (по времени) среза portage`а или кобминации срезов (с указанием приоритетов ebuild`ов). AFAIK c бинарными дистрибутивами такой подход затруднен, либо невозможен.

Что касается USE флагов, то глобальное прописываешь в make.conf, остальное - для отдельных пакетов через package.use (они приоритетнее).
Например для условной рабочей станции у меня в make.conf прописано:

USE="alsa dbus -gnome gstreamer gtk jpeg jpg mmx nls opengl png sse sse2 
tiff truetype type1 unicode utf8 userlocales X -systemd -gnome-shell openrc-force -pulseaudio -gnome-keyring
"
Для условного сервера:
USE="nls unicode -X -qt4 -opengl -gtk -introspection -consolekit -systemd"

Ещё в package.use можно маски использовать и указывать диапазоны версий:

x11-libs/* abi_x86_32

И вот такие вещи конечно взрывают мозг. Из документации совсем не понятно какие именно мне нужны и как собрать правильно плюс-минус с первого раза.

В общем случае с первого раза невозможно, потому что может понадобиться регулировка USE флагов у непрямых зависимостей и т.д.

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

Извините вопрос спецам, я слышал что в gentoo ввели бины, а они с какими флагами собираются? Если это какой то дефаульт то после установки таких пакетов уже нельзя флаги менять?

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

и такой пакет подтягивается только тогда, когда его флаги при сборке совпадают с твоими настройками.

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

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

если требования по флагам не выполнены, то portage просто не предложит бинарный пакет к (пере)установке, т.е. предложит собрать из исходников (если только не включен флаг --usepkgonly, в этом случае ничего не предложит, т.е. откажется в (пере)установке).

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

Если для при вызове emerge не указан ключ --usepkgonly - он предложит пересобрать пакет с отличными от бинарной версии флагами.

То есть бинарные пакеты - это предопределенная дефолтная сборка некоторых(не всех) пакетов из основного дерева Portage, нужная для ускорения установки. Не больше, не меньше - дистрибутив от этого source-based быть не перестал и в любой ситуации когда бинарные пакеты не могут быть установлены(например из-за того что пользователь указал другой набор флагов) - они использоваться НЕ БУДУТ.

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

По умолчания - вообще базовый x86-64. Однако есть отдельный набор пакетов для x86_64-v3 - для тех у кого процы не каменного века.

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

(Надеюсь, это была шутка про пересборку мира…)

Да, ты делаешь это не так.

Ты нарушаешь один важный принцип: сначала заставь работать, потом оптимизируй. Это не касается именно Gentoo, это мудрость которая применима для всех сложных систем. Отключение USE флагов - это вид оптимизации, а ты систему ставишь в первый раз. Ставь дефолт, выбирай профиль который нужен, сделай сначала рабочую систему, а USE флаги всегда можно поменять.

Выставлять флаги лучше локально (и лучше для всех версий пакета; emerge часто предлагает только для конкретной версии). Более точный алгоритм описан ниже. После этого, 1) если проставил локально потому что попросил emerge - просто повтори команду emerge (ты наверняка что-то новое ставил) 2) если по своей инициативе - переустанови пакет которому добавил USE флаг (лучше с ключом -1; вообще контролируй чем у тебя наполнен world - в идеале там не должно зависимостей, а только те приложения, которыми ты пользуешься непосредственно) 3) если флаг глобальный, то классическое заклинание emerge -avuND world; это не пересобирает мир, а только те пакеты, которые имеют дельту с точки зрения USE флагов, новой версии и т. п. Это позволит получить рабочую систему без нервов.

Когда установишь систему, обживёшься в ней, будешь готов выделить время на оптимизацию (любая оптимизация занимает время), тогда можешь аккуратно начать убирать глобальные флаги, которые как ты думаешь тебе не нужны. Принцип такой же как и при компиляции ядра:

  • если ты точно понимаешь что этот флаг делает и знаешь что тебе это не нужно - убираешь.
  • если ты точно понимаешь что этот флаг делает и знаешь что тебе это нужно - добавляешь. Пример: поддержка формата файлов.
  • во всех остальных случаях не трогаешь

Если после того как ты убрал флаг, emerge просит его вернуть для какого-то пакета, первое что нужно сделать, посмотреть нельзя ли убрать пакет который просит этот флаг (он может приноситься зависимостью через другой флаг), или нельзя ли уговорить этот пакет работать без этого флага (иногда пакет просит один из двух флагов, или флаг пакета зависит от другого флага в другом пакете и т. п.). Если нет - ставь флаг локально для этого пакета (то есть для всей системы он будет выключен, а для этого пакета будет включён).

Ну и emerge -avuND world после этого. А в идеале потом ещё полирнуться emerge --depclean, потому убранная зависимость не означает что она автоматически удаляется.

Это для начала. В более сложные материи пока не залазим…

P. S. Про бинарные пакеты пока забудь.

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

Если установлен бинарный пакет (с его дефолтными флагами), а после этого меняешь набор флагов для этого пакета, и новый набор флагов не совпадает с набором флагов бинарника - пакет будет собираться из сорцов.

При этом будет выведен список доступных бинарников и набор флагов, с которыми они были собраны. Таких бинарников может быть несколько для пакета. Т.е. один и тот же пакет может иметься в бинарной репе в нескольких вариантах, с разными наборами флагов. Можно выбрать какой набор флагов тебе больше подходит и установить его. Если не подходит ни один из предложенных вариантов -собирай из сорцов.

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

Вопрос. Можно установленный и рабочий gentoo который собран под v3, изменить и пересобрать по v2?

Что такое v2 и v3?

Но ответ все равно будет - можно. (ЕМНИП нельзя только архитектуру менять на рабочей системе, все остальное - можно). Вопрос только в сложности данной операции.

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

Выставляешь флаги компилятора, пересобираешь систему, ну и получается, что она будет использовать тот набор инструкций, которым ты ограничил компилятор.

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

долго ведь

Ну когда-то я начинал с core2 e6400 и ничё, норм )
Но v2 vs v1 действительно должно дать заметно производительности. То, чем они отличаются, действительно используется на практике.

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

Ну чтобы потом дд содрать

Можно конечно и дд, но gentoo поддерживает «простое» создание своей бинрепы, чтобы потом можно было обновлять клиентов с бинхоста.

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

Обычно в make.conf переменная CFLAGS установлена в -march=native. Это значит код будет собран под набор инструкций текущего процессора. Если тебе нужно собрать код для старого процессора, вместо native нужно указать целевую архитектуру. Например sandybridge, и твои бинарники будут содержать только инструкции, валидные для SandyBridge.Ну и делаешь локальную бинрепу на машине с SandyBridge и ложишь туда бинарники собранные на более мощной машине.

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

Выключаешь gtk и gnome

На это уже обратили внимание, но дополню своим личным опытом. У меня нет ни гнома, ни кед, сижу в awesome с привычным мне набором софта, но при этом я глобально не выключаю ни gtk, ни gnome, ни qt, ни kde. В частных случаях, когда я точно знаю, что какая-тио функциональность в пакете мне не нужна, то могу для него поставить -gtk и т.п. Но при всём при этом у меня глобально стоит -plasma, чтобы кдеешные программы не тащили за собой половину кед (но, само собой, существуют пакеты, жёстко завязанные на плазму, и с таким подходом их установить невозможно)

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

Уже дали ответ что можно менять.

Ну чтобы потом дд содрать на слабый ящик и там не пересобирать все это … долго ведь ;(

Я когда-то для такого использовал distcc. Про бинхосты тоже уже сказали. Сейчас я нацелился автоматизировать установку под себя, благо Gentoo это позволяет, экспериментирую с виртуалками.

По теме (особенно то, что написано красным): https://wiki.gentoo.org/wiki/Distcc

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

Я конечно не спец, но по моему у них вики всегда такая была, причем тогда арч был только в статьях Федор… ;) и про него толком никто не знал даже.

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

Ты нарушаешь один важный принцип: сначала заставь работать, потом оптимизируй.

Здесь немного спорно. Во-первых по дефолту включены не все возможно нужные флаги, во вторых иногда сборка не оптимизированной конфигурации может оказаться проблематичной/сложной/невозможной.
Сейчас по дефолту может тянуться rust, llvm, но часто от них можно и отказаться и не везде объективно хватит памяти, чтобы собрать какой-нибудь clang.
Так что в некоторых случаях придётся сначала оптимизирвоать, а потом уже чинить то, что отвалилось. Но конечно на обычном декстопе и gentoo-capable так сказать системе действительно можно сначала собрать полную конфигурацию, а потом аккуратно выцепить ненужное. Особенно если не знаешь, какие компоненты за что отвечают

mittorn ★★★★★
()