Пропустить конкретное обновление в мире emerge -auvD

14548
ThiefMaster

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

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

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

28

3 ответа на вопрос

36
ThiefMaster

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

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

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

emerge -auvD --exclude=media-sound/teamspeak-server-bin world 
Мне не удалось найти пример, когда кто-то исключает несколько пакетов в одном выражении, поэтому для справки: для каждого пакета требуется тег `--exclude` afaik. `emerge --deep --update @world -av --exclude = chromium --exclude = firefox`. NuclearPeon 5 лет назад 0
11
Keith

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

3
equaeghe

ThiefMaster's answer is the right way to go, but there is another option, which I think improves upon Keith's answer. Namely, with his answer the emerge will be tried and may take time. In case you know that the first package is problematic because you've just encountered a problem, you can use --resume and --skipfirst:

--resume(-r)

Resumes the most recent merge list that has been aborted due to an error. This re-uses the arguments and options that were given with the original command that's being resumed, and the user may also provide additional options when calling --resume. It is an error to provide atoms or sets as arguments to --resume, since the arguments from the resumed command are used instead. Please note that this operation will only return an error on failure. If there is nothing for portage to do, then portage will exit with a message and a success condition. A resume list will persist until it has been completed in entirety or until another aborted merge list replaces it. The resume history is capable of storing two merge lists. After one resume list completes, it is possible to invoke --resume once again in order to resume an older list. The resume lists are stored in /var/cache/edb/mtimedb, and may be explicitly discarded by running emaint --fix cleanresume (see emaint(1)).

--skipfirst

This option is only valid when used with --resume. It removes the first package in the resume list. Dependencies are recalculated for remaining packages and any that have unsatisfied dependencies or are masked will be automatically dropped. Also see the related --keep-going option.

Похожие вопросы