28

Есть ли простой способ пропустить определенное обновление в emerge -auvD world?

Например, в настоящее время существует поврежденный media-sound/teamspeak-server-bin-3.0.5-r1 помеченный как стабильный в дереве портежей, который нарушает все обновление, поскольку этот пакет является первым в списке. Конечно, я мог бы просто замаскировать эту версию, используя файл package.mask , но я бы предпочел, чтобы переменная окружения или параметр командной строки пропускали ее только сейчас - она, вероятно, скоро будет исправлена.

Обратите внимание, что я не хочу использовать emerge -auvD1 list of working packages (т. Е. Обновлять только другие пакеты, указав все их имена).

3 ответа3

36

Похоже, опция --exclude делает это:

--exclude ATOMS
Разделенный пробелами список имен пакетов или атомов слотов. Emerge не будет устанавливать никакой ebuild или бинарный пакет, который соответствует любому из указанных атомов пакета.

Так что это сделало работу за меня:

emerge -auvD --exclude=media-sound/teamspeak-server-bin world
11

Если вы не хотите маскировать его, вы можете использовать опцию --keep-going . Это заставляет emerge сбрасывать свой список и продолжать работу, без сбойного пакета в списке.

3

Ответ ThiefMaster - правильный путь, но есть и другой вариант, который, я думаю, улучшает ответ Кейта. А именно, с его ответом emerge будет опробован и может занять время. Если вы знаете, что первый пакет проблемный, потому что вы только что столкнулись с проблемой, вы можете использовать --resume и --skipfirst:

--resume(-r)

Возобновляет последний список слияния, который был прерван из-за ошибки. Это повторно использует аргументы и параметры, которые были даны с исходной командой, которая возобновляется, и пользователь может также предоставить дополнительные параметры при вызове --resume . Ошибочно предоставлять атомы или наборы в качестве аргументов --resume , поскольку вместо них используются аргументы возобновленной команды. Обратите внимание, что эта операция будет возвращать только ошибку при сбое. Если portage ничего не нужно сделать, то portage завершит работу с сообщением и условием успеха. Список возобновления будет сохраняться до тех пор, пока он не будет завершен полностью или пока другой прерванный список слияния не заменит его. История резюме может хранить два списка слияния. После завершения одного списка возобновления можно снова вызвать --resume для возобновления старого списка. Списки возобновления хранятся в /var/cache/edb/mtimedb и могут быть явно удалены, запустив emaint --fix cleanresume (см. Emaint (1)).

--skipfirst

Эта опция действительна только при использовании с --resume . Удаляет первый пакет в списке резюме. Зависимости пересчитываются для оставшихся пакетов, и любые, которые имеют неудовлетворенные зависимости или маскируются, будут автоматически удалены. Также смотрите соответствующую опцию --keep-going .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .