Есть ли способ предотвратить emerge -sync для удаления файлов из дерева порталов?

Хотя PORTAGE_RSYNC_OPTS , параметр make.conf , позволяет изменять параметры rsync, но удаление --delete из него приводит к сбою emerge . Я думаю, что он замечает про недостающие записи md5-cache или такие.

Я хотел бы сохранить старые файлы ebuild немного дольше, чем это делает предыдущее дерево портов.

Существует причина, по которой этот ebuild был удален из главного дерева. Если ваша цель – сохранить ebuild, потому что вы хотите иметь возможность создавать их после их удаления из главного дерева, я предлагаю вам создать локальный оверлей и извлечь удаленные ebuilds из sources.gentoo.org .

В тот же день были бы хранилища дерева порталов, которые вы могли бы клонировать / проверить в своем сердце. Внутри этих репозиториев вы всегда сможете вытащить старые ebuild. Поскольку portage / gentoo помещает манифесты и контрольные суммы повсюду, вы не можете иметь ebuild, который вверх по течению не хочет быть частью дерева portage. Только как оверлей.

Я искал это для вас и нашел этот вопрос в Superuser SE, который рассказывает вам, как выполнять наложение, а также включает ссылку на репозиторий CVS портажа.

Подробнее:

Вы не используете rsync , вы используете emerge Первый используется последним, что делает его частью emerge, фактически, частью portage , и именно это вы действительно используете для управления (а не просто копировать!) Ваши пакеты и информацию о пакете. Посмотрев на rsync вы смотрите на довольно глубокие детали portage, и вы не можете просто изменить эту деталь. Вместо этого вы должны рассмотреть всю систему. Вот почему простое изменение поведения rsync никогда не достигнет того, чего вы хотите, и вызывает ошибку в emerge .

Другая часть системного portage , который вы используете, – контрольные суммы. Для каждого файла должна быть контрольная сумма. Когда вы запускаете emerge --sync вы не только копируете и удаляете ebuild, но также синхронизируете список файлов в дереве портов и соответствующих контрольных сумм. Файлы, которые удаляются вверх по течению и, следовательно, из дерева портов, также удаляются из списка файлов в дереве портов (поскольку они больше не являются частью дерева порталов).

Вот почему вы терпите неудачу: удалив – --delete конечном итоге файлы в вашем дереве --delete для которых нет контрольных сумм. Но, как указано выше, контрольные суммы являются частью системы, поэтому они вам нужны.

Существует также контрольная сумма в списке файлов и, возможно, одна или другая дополнительная контрольная сумма, поэтому ее, вероятно, утомительно обойти.

Если вы хотите сохранить свои старые ebuilds, те, которые сопровождающие заключили, это хорошая идея для удаления, у вас есть два варианта:

  1. вы можете разбить систему порталов,

    a) поведение силы rsync ,

    b) взломать, чтобы список файлов всегда включал ваши ebuild с контрольными суммами и

    c) создать что-то, чтобы убедиться, что все контрольные суммы всегда есть и нормально, в том числе список файлов

    d) создать согласованную систему, которая сохранит ваши специальные ebuild, но удалит старые, устаревшие и неисправные, чтобы у вас была стабильная и поддерживаемая операционная система

  2. вы действуете в системе portage, которая позволяет вам модифицировать дерево порталов с помощью наложений.

У вас явно есть проблема xy . Вы заявляете, что хотите сохранить вокруг себя некоторые важные вещи. Но вместо того, чтобы спрашивать, как это сделать, вы спрашиваете, как изменить поведение инструмента, который используется emerge, который является инструментом portage.

Можно довести эту фигуру до проблемы wxyz, так как w – ваша фактическая проблема, вы бежите вдоль x (portage), передавая y (emerge) и заканчивая на стене в z (rsync). Пришло время вернуться на несколько шагов.

У других было такое же намерение (сохраняйте старые ebuilds), как вы делаете прямо сейчас. Существует действительный и документированный способ достижения этой цели, не испортив всю систему. Я предлагаю вам пойти именно так.