Обновление
-
Можно замаскировать текущую версию. Представим, что нам нужно замаскировать пакет app-xxx/proga. У нас стоит версия app-xxx/proga-2.3.1, а все, что новее - на фиг нам не нужно. Создаем (если не создан) в папке /etc/portage файл package.mask
touch /etc/portage/package.mask
Далее делаем
(ну, можно все это и не через консоль, это я так, привык просто).echo ">app-xxx/proga-2.3.1" >> /etc/portage/package.mask
Записав в этот файл строку >app-xxx/proga-2.3.1 мы блокируем все, что выше этой версии. Теперь важное: знаки перед именем пакета и формат написания имени пакета.
Во всех файлах для управления компиляции следует явно указывать имя пакета, то есть, с категорией. Например, не
firefox
а
www-client/firefox
Просто в portage могут встретиться одинаковые имена пакетов в разных категориях, а если взять за привычку такой формат, то можно избежать этих проблем. Так, теперь об этих значках.
> - все, что новее указанной версии;
>= - все, что новее или равно указанной версии;
< - все, что старее указанной версии;
<= - все, что старее или равно указанной версии;<br />= - все, что равно указанной версии;
Мы могли просто вписать:
Но таким образом мы бы замаскировали все версии пакета app-xxx/progaecho "app-xxx/proga" >> /etc/portage/package.mask
А вот так мы сказали, что имеем в виду все, что новее указанной версии:echo ">app-xxx/proga-2.3.1" >> /etc/portage/package.mask
В общем, если мы в имени пакета указываем версию, то нужен какой-то определяющий знак в начале.
Вот так бы мы замаскировали конкретную версию пакета, а именно 2.3.1:echo "=app-xxx/proga-2.3.1" >> /etc/portage/package.mask
Кстати, то же применимо и к USE флагам. Просто берем и создаем файл:touch /etc/portage/package.use
Тут можно прописать USE флаги для каждого конкретного пакета. Например для версии 2.3.1:echo "=app-xxx/proga-2.3.1 doc gnome ffmpeg -kde -qt" >> /etc/portage/package.use
Или для всех версий этого пакета:echo "app-xxx/proga doc gnome ffmpeg -kde -qt" >> /etc/portage/package.use
-
Но есть тут подводные камни. Если мы замаскируем новые версии пакета app-xxx/proga, то при обновлении мира некие другие пакеты могут запросить эту самую замаскированную версию app-xxx/proga. Тогда придется либо смириться с обновлением, либо маскировать зависимости, либо лезть и ковырять ebuild'ы. Я обновляю мир так:
emerge -pv --update world
Это выводит на экран все, что должно обновиться, но ничего не качает, не устанавливает. А после я делаю так:emerge тут список устанавливаемых пакетов через пробел
То есть, в начале смотрю, что portage хочет обновить, а потом сам решаю, что обновлять.