Не пересоздавать репозитории после обновления - PullRequest
1 голос
/ 09 марта 2019

Мы управляем системами и, следовательно, управляем репозиториями. Мы удаляем репозитории, которые мы не используем, присутствующие в /etc/yum.repos.d/<file>

Наша проблема: после обновления / обновления системы CentOS автоматически воссоздает удаленные репозитории, что является для нас проблемой.

Вопрос. Существует ли команда / метод, обеспечивающий повторное создание хранилищ после обновления на системах CentOS 7.

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Эти репозитории кем-то созданы, ОС не воссоздает их.
Либо они восстанавливаются путем обновления пакета RPM, такого как centos-release, либо с помощью автоматического сценария, который вы настроили/ run (ansible?).

Мне неизвестен автоматический метод удаления репо;Я вижу пару решений:

  1. Исключить centos-release из обновляемых пакетов, добавив
    exclude=centos-release
    к /etc/yum.conf (разделенный пробелами список), ноэто может нарушить некоторые обновления;

  2. Отключить их с помощью:

    # yum-config-manager --disable base,updates,extras,centosplus,epel,whatever
    

    (это может быть легко написано в сценарии и помещено в cron или в вашу ANSIB Playbook)

  3. Напишите небольшой скрипт и поместите его в /etc/cron.hourly/, например /etc/cron.hourly/wipe_repos, содержащий:

    #!/usr/bin/env bash
    rm -f /etc/yum.repos.d/CentOS-Base.repo 
    

    или, что лучше:

    #!/usr/bin/env bash
    yum-config-manager --disable base,updates,extras,centosplus,epel,whatever
    

Я бы предложил использовать решение 2, поскольку файлы репо не перезаписываются обновлениями, а новые версии располагаются вдоль старых в .rpmnew файлах.

Это гарантированос помощью флага %config(noreplace) в исходных оборотах centos-release, применяемого ко всем файлам в /etc/yum.repos.d/.Вы можете проверить это, загрузив файл .src.rpm и открыв файл centos-release.spec.

$ mkdir test && cd test
$ yumdownloader --source centos-release
$ rpm2cpio centos-release*.rpm | cpio -idmv
$ cat centos-release.spec

(или найдите пакет в Интернете и загрузите файл src.rpm)

Затем прокрутите вниз до раздела %files, и вы заметите:

%config(noreplace) /etc/yum.repos.d/*

%config(noreplace) означает, что все эти файлы заменяются не новыми файлами из обновления, а файлами изновые обороты сохраняются с расширением .rpmnew, поэтому у вас будет:

$ ls /etc/yum.repos.d/
CentOS-Base.repo          <-- here you set them as disabled
CentOS-Base.repo.rpmnew   <-- this comes from the update, but yum will ignore it

Для справки см. http://people.ds.cam.ac.uk/jw35/docs/rpm_config.html или https://serverfault.com/a/48819/.

0 голосов
/ 18 марта 2019

Как я уже сказал в комментариях ниже, вопрос , почему эти репозитории продолжают появляться после обновления, довольно прост: файлы, определяющие системные репозитории, принадлежат пакету centos-release и всякий раз, когдаэтот пакет обновляется или переустанавливается, вновь появляются репозитории.

Пакет centos-release является очень базовым пакетом, он обеспечивает возможности redhat-release и system-release, и от него зависит ряд других базовых пакетов..

[local ~]$ rpm -q --provides centos-release
centos-release = 7-6.1810.2.el7.centos
centos-release(upstream) = 7.6
centos-release(x86-64) = 7-6.1810.2.el7.centos
config(centos-release) = 7-6.1810.2.el7.centos
redhat-release = 7.6-1
system-release = 7.6-1
system-release(releasever) = 7

[local ~]$ rpm -q --whatrequires system-release
setup-2.8.71-10.el7.noarch
grubby-8.28-25.el7.x86_64

[local ~]$ rpm -q --whatrequires redhat-release
initscripts-9.49.46-1.el7.x86_64
systemd-219-62.el7_6.5.x86_64

Простого выхода из этого не существует.

Но одним из возможных решений может быть создание настроенного RPM-пакета для замены centos-release.Он должен содержать указатели на ваши собственные репозитории и, конечно, должен обеспечивать возможности redhat-release и system-release.

Пожалуйста, имейте в виду, что я понятия не имею, если это на самом деле будет работать, это просто что-тоэто пришло мне в голову, когда я думал о проблеме.Это может спасти вам работу по созданию полного пользовательского дистрибутива, основанного на CentOS, и это единственный способ, которым я могу придумать, чтобы достичь того, чего вы, похоже, хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...