USE флаги
Will 14 октября, 2016 - 12:30
При установки сталкиваюсь с проблемой флагов. Планирую установить awesome. Какие флаги использовать? Нужны ли ему gtk,qt и прочие? Если к примеру я планирую ставить NetworkManager могу ли я обойтись без всех зависимостей gnome. Или скажем я буду устанавливать chomuim или firefox опять же хотелось обойтись без всех ненужных библиотек и прочие, нужен ли там gtc или qt, или все будет работать и без них? Как вообще понять будет ли работать какая либо программа если я поставлю -gtc -qt -gnome -kde?
»
- Для комментирования войдите или зарегистрируйтесь
С флагами у awesome выбор не
С флагами у awesome выбор не велик: dbus, doc и gnome из которых только dbus он предлагает по умолчанию и его лучше оставить.
Каждое приложение в gentoo имеет свои собственные зависимости и, соответственно, флаги, а система portage устанавливает именно те пакеты которые нужны устанавливаемому по зависимостям. Допустим приложению А имеет в зависимостях gtk и qt, здесь уже можно выбрать поставить либо gtk либо qt, зависит от предпочтений. Возможна так же такая ситуация - понадобилось приложение а оно только с поддержкой qt, вот тут уже никак без qt не обойтись.
Посмотреть флаги пакетов можно выполнив
equery u имя_пакета
, кажется эта команда входит в пакет gentoolkit.p.s. возможно для первого раза awesome слишком смелое решение.
Вот к примеру у awesome
Вот к примеру у awesome говорите в зависимостях dbus, doc и gnome. Что будет если я укажу -gnome? Он не стартанет при запуске? Как вы поняли что флаг dbus предлагается по умолчанию? А что будет если в make.conf напишу «USE=""» пакеты будут собирать со всеми флагами или вообще без флагов? Вот вы сказали что допустим есть какое то приложение которое с поддержкой только qt, как мне понять что это приложение без qt не будет работать?
Если вопросы позникают в
Если вопросы позникают в такой форме то крайне желательно подробно прочитать хендбук и/или проводить установку gentoo именно по этому руководству.
Про USE-флаги очень доходчиво написано здесь
В gentoo даже если вы не указываете никакие флаги во время установки пакетов выбор флагов производится согласно установленному профилю. Поэтому даже не внося никаких изменений в make.conf при выполнении команды emerge awesome вы получите что то подобное этому - x11-wm/awesome-3.5.6-r2::gentoo USE="dbus -doc -gnome" 704 KiB, т.е. awesome будет установлен только с флагом dbus.
Мне кажется без прочтения хендбука и без ознакомления с описанием работы USE-флагов, здесь можно будет только запутаться. Но если в двух словах профиль определяет базовый набор USE-флагов соответствующих только этому профилю, в файле /etc/portage/make.conf указываются общие USE-флаги (т.е. те которые будут распространяться на все устанавливаемые приложения/пакеты), но все эти USE флаги можно обойти и вручную настроить их через директории /etc/portage/package.use индивидуально для каждого приложения. Есть и другие директории для настройки USE-флагов, но не все сразу.
p.s. Немного разочарую, awesome сам по себе при запуске не запустится....
Вот пишу и задумываюсь, а нужен ли действительно awesome, в вашем случае вполне возможно самым хорошим вариантом было бы поставить одну из версий ( допустим amd64-minimal) с openbox на виртуальную машину и поэкспериментировать со всем этим добром.
Я так понимаю если в профиле
Я так понимаю если в профиле содержатся все флаги для каждого пакета, то есть структура вроде package.use? Хм.. допустим в зависимостях у пакета идет qt и gtc, как мне понять что нужно именно выбрать или одно или другое а не отключить оба? Вы говорили что если приложению явно нужно скажет qt и без него оно не будет работать то по идею флага qt не должно быть, потому что бессмысленно его отключать так как работать оно не будет, или я не прав?
P.S. По поводу awesome. Ну по идею нужно установить иксы, slim добавить в ~/.xinitrc запись «exec awesome», добавить slim в автозагрузку, скопировать конфигурационные файлы в ~/.config/awesome/, rc.lua и прочие и потом все должно запуститься. Во всяком случай в Arch делалось примерно так. Потом останется только пились конфиг что бы все выглядело красиво и все работало. А по поводу openbox он же весь по сути такой же как xfce только собирать все самому придется, ну то есть у xfce группой пакетов можно все сразу необходимое поставить а в openbox все отдельные программы я там понимаю. Да и системные требования в них вроде не сильно отличаются.
В профиле не описываются
В профиле не описываются флаги для каждого пакета, там указаны некоторые USE-флаги а так же пакеты которые должны быть установлены для этого профиля. В основном для домашнего компьютера устанавливают профиль desktop. Установка профиля - eselect profile list и затем eselect profile set N, где N номер выбранного профиля. Это так сказать основная схема, которую один раз выбрал и "забыл".
Следующая "волна" USE-флагов - это флаги прописываемые в /etc/portage/make.conf - здесь уже указываются собственные предпочтения своего рода ярлыки. Т.е. допустим нЕкто противник qt и не хочет его видеть ни в каком виде, следовательно устанавливаем -qt -qt3 -qt4 -qt5 и наоборот включаем поддержку gtk, gtk2 или gtk3 (или все одновременно). По сути эти флаги не последняя инстанция, объясню почему. Допустим понадобилось установить kvirc, а эта штука ну никак не хочет работать без qt5, потому что так прописано у нее в ebuild-файле и тянет она qtcore и все в таком роде. Поэтому приходится выбирать между ставить и при этом тащить ВСЕ библиотеки qt или же отказаться и искать альтернативу.
И наконец третья "волна" USE-флагов которые мы можем указать в директории /etc/portage/package.use/ . В этой директории создаются файлы в которых прописываются индивидуальные флаги для каждого пакета. Так вот не смотря на установленные в make.conf USE-флаги пакет будет собран именно с теми флагами, которые будут прописаны в этой директории. И для того же quirc и зависимых пакетов просто прописать флаг qt. (Правда в этом случае наверное будет более разумным просто исключить ограничение -qt, -qt3, -qt4 и -qt5 из make.conf-файла)
В итоге программа будет установлена и будет работать в 99% случаев даже если установить ее и выключить при этом ВСЕ USE-флаги, при этом просто будет ограничен ее функционал.
Если каждый раз при установке вводить
emerge -pv имя_пакета
тогда пакет установлен не будет, но будет выведены все флаги с которыми он будет установлен если выполнитьemerge имя_пакета
. Если в make.conf включить строку EMERGE_DEFAULT_OPTS="--ask " то при каждом вызове emerge будет спрашивать "собираетесь ли вы выполнить установку?" при этом можно будет так же посмотреть флаги.Ну и прямой ответ на вопрос нужно или не нужно qt или gtc если он прямо идет в зависимостях. Ответ такой - если нравится qt и все что с ним связано значит нужно. Если не нравится то можно явно отключить через make.conf или /etc/portage/package.use/ если после такого отключения будет ругаться значит нужно думать. Если думать не получится значит никак без этого флага не обойтись. Как то так. :)
Чтобы не запутать, самый простой вариант:
1.
emerge имя_пакета
(при включенyом в make.conf - EMERGE_DEFAULT_OPTS="--ask ")2. если какие либо флаги не устраивают то N
3. если есть сомнения то можно проверить назначения флагов -
equery u имя_пакета
4. какой то флаг не понравился - отключаем через /etc/portage/package.use/
5.
emerge имя_пакета
и соглашаемся с установкой и если система не ругается пакет будет установлен.p.s. все зависит от личных предпочтений, система флагов позволяет гибко настраивать каждый пакет.
Странная система если тот же
Странная система если тот же kvirc ну не как не будет работать без qt5 то почему его можно собрать без qt5?
Посмотрел ebuild и нашел ebuild файл kvirc, нашел сл. строку:
Я так понимаю это все флаги с которыми может быть собран пакет. Как понять что какой то флаг жизненно необходим, а какой можно и опустить жертвую функционалом? Об этом говорит + перед флагом, то если в данном случай эти флаги жизненно необходимы:
а вот эти можно опустить:
Или я не там понял?
Kvirc не будет работать без
Kvirc не будет работать без qt5 и его нельзя собрать без qt5.
Собственно, поэтому флаг и не нужен - qt5 всё равно будет подтянут при попытке сборки kvirc.
Флаги - это именно опции, с которыми или без которых может быть собран пакет. Если пакет имеет какой-то флаг, то его можно включить, а можно выключить. Но многие зависимости абсолютны, и вообще никак от USE флагов не зависят.
То есть, можно глобально установить -qt5, например. При этом все пакеты, имеющие такой флаг, будут собраны без поддержки qt5. Но если хотя бы одному пакету Qt5 необходим, эта библиотека будет установлена и использоваться этим (и только этим) пакетом.
+ перед флагом в ebuild означает лишь то, что если ничего специально не указывать в package.use, этот флаг включается по умолчанию.
Спасибо, теперь ясно =) А вот
Спасибо, теперь ясно =) А вот если есть некий пакет который может работать на qt или на gtc то это будут 2 разных пакета, то есть изначально один написан с помощью qt другой gtc правильно, получается одна программа но разная реализация, следовательно исходники будут разные правильно я понимаю?
Исходник будет один и тот же.
Исходник будет один и тот же. В бинарных дистрибутивах майнтейнеры собирают эти две конфигурации и выпускают результат в виде нескольких пакетов. В Gentoo результатом будет один набор бинарных файлов, но, скорее всего, если включены оба флага одновременно, среди прочих общих скомпилированных файлов просто будет два исполняемых файла а-ля /usr/bin/progname_gtk и /usr/bin/progname_qt.
Если некий пакет может
Если некий пакет может работать либо на qt либо на gtc и исходник у такого пакета один и тот же то как происходит манипуляция с чем собирать qt или gtc? С помощью флагов? Ведь пакет не может быть собран без qt либо без gtc. Допустим в make.conf указано
-qt -gtc
то система спросит меня с чем собирать или есть некое правило для таких ситуации?Почему gtc а не gtk?
Скорее всего, portage просто попросит включить либо одно, либо другое.
Спасибо =)P.S.WiseLord
Спасибо =)
P.S.
ну да =)
Пакет может быть собран без qt и gtk
Пакет может быть собран без qt и gtk (если устанавливаемый пакет имеет такие USE-флаги)
На команду
# USE="-gtk -gtk3 -qt5" emerge audacious
portage предлагает продолжить установкуа вот если попробовать
# USE="gtk qt5" emerge audacious
то имеем конфликт с предложением выбрать один из трех вариантов gtk или gtk3 или qt5
Вообще предполагается что пользователь gentoo-linux знает для каких целей он устанавливает пакет :) И уж если нужен gtk3, то и нужно выбирать именно его (с gtk и qt[3,4,5] то же самое).
elder написал(а):Пакет может
Эм.. а пакет
audacious
вообще запуститься и будет работать в таком случай? То есть данные зависимости не жизненно необходимы, но все сразу конфликтуют между собой правильно?Ну допустим мне нужна некая программа которая реализована в нескольких вариантах, допустим есть реализация с помощью qt и есть реализация с помощью gtk, соответственно реализация на qt не может работать без qt а реализация на gtk не может без gtk.
Если исходник у такой программы один и тот же то я там понимаю манипуляция по поводу того с помощью чего собирать идет через флаги. Но если программу нельзя собрать без всего полностью как писал
то получается что тот же пакет
audacious
не относиться к нашему случаю и должен работать без всего???Вот мне и интересно как определить что можно собрать либо с одним либо с другим но нельзя собрать без всего, система сама мне об этом сообщит???
Will написал(а): Вот мне и
Да, в случае если некоторые зависимости у пакета не удовлетворены(а USE это тоже зависимость), будет выведено сообщение с предложением это исправить.