а package.use - это самый шик - пакет может быть записан несколько раз с разными флагами
т.к. я ленивый, меня напрягает править файл
обычно запись в этот файл заключается в
echo "пакет юз" >> /etc/portage/package.useдабы отсортировать всё это безобразие, сделал пару скриптов:
1. для всех package.*
2. специально для package.use
вот, собственно, и они
#!/bin/bash for i in `find /etc/portage/ -type f -name "package*"`;do sort -u ${i} --output=${i} doneда, команда простая, но я же лентяй :3
#!/bin/bash PACKAGES="$(awk '{print $1}' /etc/portage/package.use | uniq)" for ATOM in ${PACKAGES};do for option in "$(grep "^${ATOM} " /etc/portage/package.use | sed -e "s|${ATOM} ||" | tr " " "\n" | uniq | tr "\n" " ")";do ATOM_OPTS+="${option}" done echo "${ATOM} ${ATOM_OPTS}" | sed 's/[ \t]*$//' >> /tmp/package.use unset ATOM_OPTS done mv /tmp/package.use /etc/portage/package.useчто делает этот скрипт:
1. находит пакеты и убирает дубли - чтобы пакет был записан один раз
2. находит все юзы данного пакета и убирает дубли, если таковые имеются
ну и потом, естественно, замещает /etc/portage/package.use результатом своей работы, в котором и даёт нам
"пакет юз1 юз2 юз3 юз4 юз5"
в одной строке
да, все ">", "=" и иже с ними остаются
т.е. если есть юз для отдельной версии - никуда он не денется
P.S. все package.* у меня - файлы, ибо всё в одном месте
P.P.S не велик ли я придумал? :3
А если так?
ОтветитьУдалить/etc/portage/package.use/packagename
не, тогда дольше получится копаться, если есть зависимые пакеты, нуждающиеся в смене юзов
ОтветитьУдалитьв одно месте проще
еще нужно добавить проверку существования /tmp/package.use на случай повторного выполнения скрипта
ОтветитьУдалить[ -f /tmp/package.use ] && rm /tmp/package.use
в нём всё-таки mv, а не cp
Удалитьи все-таки можно добавить, т.к. если выполнить от обычного юзера, то /tmp/package.use нормально сформируется, но не сможет переместиться. А так все нормально.
Удалитьну...думаю, любой гентушник способен это сделать
Удалитья, например, запихать это всё в т.н. einstall (не путать с портажным тезкой), который является обёрткой для emerge, монтирующий диру сборки в tmpfs перед запуском emerge и отмонтирующий её после завершения
итого: каждый запуск einstall эта помойка приобретает человеческий вид без моего вмешательства
короче - проверка эта зависит скорее от способа применения
не вижу смысла
ОтветитьУдалитьскрипт отрабатывает как надо и после себя не оставляет следов
я вот так еще сделал:
ОтветитьУдалитьecho "${ATOM} ${ATOM_OPTS}" |grep -v '^#'| sed 's/[ \t]*$//' >> /tmp/package.use
а то всякие --autounmask-write=y или собственные эксперименты оставляют кучу мусора
а вот это годно :)
Удалить