[Solved] Где находятся глобальные USE флаги и где локальные?
xcislav 19 июня, 2012 - 19:38
Хэндбук только сообщил о их важности. Но как с ними обращаться и более как с ними работать.. на этом текст заканчивается и вопрос мой тоже.
Единственное что, поискав в интернете я нашел что одни, глобальные используются уже позже, но надо сначала использовать
может быть имелось в виду package.use локальным. Хотя я могу быть не прав (и это может быть make.defaults моего профиля, который я тоже не могу найти). Иногда после прочтения документации остаётся только смутная дымка... как же уже приступить к работе. Ибо примеры редко случаются.
»
- Для комментирования войдите или зарегистрируйтесь
...
Ну, профили лежат тут: /usr/portage/profiles/
Заклинание eselect profile list выдаст подобное:
В каталоге профилей все глобальные определения. Далее.
Тут /usr/portage находятся каталоги ПО, названные соответственно категории ПО. Заходим, к примеру, в /usr/portage/app-admin и видим уже список ПО, относимого к данной категории. Далее заходим в, например, /usr/portage/app-admin/apachetop и видим там *.ebuild файлы. В этих файлах указана информация о конкретных пакетах. Это, видимо, вторая вниз по иерархии ступень инициализации переменных. Но лезть в глобальные настройки профиля, редактировать USE в ebuild (если нет острой необходимости) ни к чему. Ведь есть файл /etc/make.conf и там мы выставляем свои USE, keywords, флаги компиляции и проч. и проч. Этот файл - еще одна ступень вниз по иерархической лестнице. Но есть еще вариант. Папка /etc/portage а в ней файл package.use где мы моем прописать для каждого пакета USE флаги. Например
dev-haskell/cgi -doc -profile
Нну, или с указанием версии
=dev-haskell/cgi-100500 -doc -profile
или
>=dev-haskell/cgi-100500 -doc -profile
или
<=dev-haskell/cgi-100500 -doc -profile
(ну, короче, обозначения "равно", "больше", "меньше" и т. д. везде одни).
Кстати, тут же можно управлять маскировками, создав в папке /etc/portage файл package.mask, кейвордами в файле package.keywords и так далее.
И казалось бы, мы добрались до последней ступени иерархии этих треклятых USE флагов... Ан, нет! Колдуем в консоли при установке что-то типа:
И VLC соберется без doc. Это самый локальный метод. Кстати, при последующей пересборке эти USE не сохранятся, нужно помнить.
Скажу в заключении, что в 99% (статистика собрана британскими учёными) случаев пользователь оперирует (далее по иерархии сверху вниз):
1) /etc/make.conf
2) /etc/portage/package.*
3) USE="" emerge
Поправьте, если где ошибся.
UPD: Флаги, коротые установлены для определенного пакета, можно посмотреть так:
«Зрячий, незрячий, а если не смотришь - всё равно не увидишь» - Затойчи.
несмотря на то, что в посте
несмотря на то, что в посте есть и толковая информация, пожалуйста не путайте человека:
глобальные флаги это флаги имеющие общий функционал для > 5 приложений и описанные в profiles/use.desc
локальные относящиеся к конкретному приложению и описанные в метадате.
[1] http://devmanual.gentoo.org/general-concepts/use-flags/index.html
...
Угу, спасибо, почитаю.
«Зрячий, незрячий, а если не смотришь - всё равно не увидишь» - Затойчи.
qnikst
Почему именно 5, а не 10 и не 100. Если флаг встречается более чем у одного ebuild`а то он уже глобальный. Если флаг встречается только у одного ebuild`а то он локальный.
profiles/use.desc - содержит список глобальных флагов.
profiles/use.local.desc - содержит список локальных флагов.
а давай ты пойдёшь почитаешь
а давай ты пойдёшь почитаешь devmanual и вернёшься сюда и сам ответишь на свой вопрос, хорошо?
Цитата: Почему именно 5, а не
Судя по тому, что это документация для разработчиков Gentoo, логично предположить, что данное число принято по соглашению между разработчиками
Нейтральность - высшее достижение сознания!
/etc/portage
А ещё стоит заметить, что /etc/portage/* может иметь внутри себя не только файлы, но и директории. И более того, директории могут "ветвиться" ещё дальше.
Например я часто использую такой хак:
/etc/portage/package.use — директория. В ней лежит симлинк _$OVERLAYNAME_overlay, который смотрит в /var/lib/layman/$OVERLAYNAME/Documentation/package.use, в котором находятся каталоги категорий, в которых уже файлы с назвниями пакетов, содержащие в себе уже то, что надо.
Тоже самое и для keywords, mask, unpask, profile/provided и env ;)
...
А у меня это выглядит так:
$ ls -l /etc/portage drwxr-xr-x 2 root root 4096 июня 10 09:45 bin drwxr-xr-x 2 root root 4096 июня 20 12:42 package.keywords drwxr-xr-x 2 root root 4096 февр. 8 12:56 package.mask drwxr-xr-x 2 root root 4096 марта 19 16:45 package.unmask drwxr-xr-x 2 root root 4096 июня 1 12:39 package.use drwxr-xr-x 2 root root 4096 июня 10 09:45 postsync.d drwxr-xr-x 3 root root 4096 февр. 12 15:55 savedconfig
А после:
$ ls -l /etc/portage/package.use -rw-r--r-- 1 root root 54 окт. 25 2011 app-accessibility -rw-r--r-- 1 root root 140 янв. 18 12:38 app-admin -rw-r--r-- 1 root root 66 окт. 25 2011 app-antivirus ... ... ... -rw-r--r-- 1 root root 191 июня 3 01:52 x11-wm -rw-r--r-- 1 root root 0 нояб. 14 2011 xfce-base -rw-r--r-- 1 root root 53 янв. 19 00:31 xfce-extra
И управляю всем этим делом при помощи простенького быдлоскрипта на bash.
«Зрячий, незрячий, а если не смотришь - всё равно не увидишь» - Затойчи.