LINUX.ORG.RU
ФорумAdmin

Centos 8, dnf reposync - локальное зеркало пакетов, что может быть проще?

 , , ,


0

1

Всем привет.

Столкнулся с забавным эффектом, при создании зеркала репозитория встроенными в восьмерку средствами, aka reposync: репозиторий вытягивается, метадата присутствует, однако количество файлов меньшее, чем в оригинальной репе.

Например:

dnf reposync --delete --remote-time --download-metadata -p ${dest_path} --repo=BaseOS

Зеркалируется, но не выкачивает 509 файлов, если сравнить с оригиналом.

Если указать архитектуру, к примеру --arch=x86_64, то вдобавок будут пропущены пакеты без указания архитектуры а-ля ****.el8.noarch.rpm.

Есть подозрения, что фиговничают новомодно-молодежные модули, которые теперь вместе с dnf идут, однако найти информацию по настройке их совместно с reposync у меня не получилось.

Сталкивался кто?

Ответ на: комментарий от alpha

BaseOS - был указан для примера.

Выкачиваю сразу скопом BaseOS PowerTools AppStream centosplus epel, со штатного зеркала. Думал,может с зеркалами проблема - подсовывал другие (яндекса того же), включал в /etc/dnf/dnf.conf выбор самого быстрого зеркала fastestmirror=1.

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

В случае с BaseOS, к примеру, обновление сваливается из-за отсутствия пакета kbd-legacy-2.0.4-8.el8.noarch.rpm. Он должен присутствовать в репе, матадата о нем копируется, а файл - нет.

Сравнивал просто, по старинке - выкачивая репу rsync'ом. Мету на глаз не сравнить, однако список и состав пакетов - запросто.

Вот сравнение директорий с репами, выкачанными rsync и reposync:

reporsyncreposync
BaseOS2,223,980 KiB in 2233 files988,573 KiB in 1663 files
AppStream10,314,697 KiB in 5947 files7,852,952 KiB in 2950 files

Та же картина с остальными.

bslpzk ()
Ответ на: комментарий от t184256

Надеюсь, что это внесет ясность (на примере того же BaseOS):

так выкачивается reposync’ом

dnf reposync \
    --delete \
    --remote-time \
    --download-metadata \
    -p /reposync/ \
    --repo=BaseOS

а так с зеркала яндекса, через rsync

rsync  \
    -avSHP \
    --delete \
    rsync://mirror.yandex.ru/centos/8/BaseOS/x86_64/os/

Diff’им каталоги Packages:

diff /rsync_repo/   /reposync_repo/ > /repo/baseos_diff

Вывод диффа большой, уберу под спойлер.

bslpzk ()
Ответ на: комментарий от t184256

diff output

То, что надиффилось - все пакеты отсутствуют в содержимом репы, загруженной репосинком (первые строки из 570, которые влезли под спойлер):

audispd-plugins-3.0-0.10.20180831git0047a6c.el8.x86_64.rpm audispd-plugins-zos-3.0-0.10.20180831git0047a6c.el8.x86_64.rpm audit-3.0-0.10.20180831git0047a6c.el8.x86_64.rpm audit-libs-3.0-0.10.20180831git0047a6c.el8.i686.rpm audit-libs-3.0-0.10.20180831git0047a6c.el8.x86_64.rpm audit-libs-devel-3.0-0.10.20180831git0047a6c.el8.i686.rpm audit-libs-devel-3.0-0.10.20180831git0047a6c.el8.x86_64.rpm augeas-1.12.0-2.el8.x86_64.rpm augeas-libs-1.12.0-2.el8.i686.rpm augeas-libs-1.12.0-2.el8.x86_64.rpm binutils-2.30-58.el8.0.1.x86_64.rpm binutils-2.30-58.el8_1.1.x86_64.rpm binutils-2.30-58.el8.i686.rpm binutils-2.30-58.el8.x86_64.rpm bpftool-4.18.0-147.0.3.el8_1.x86_64.rpm bpftool-4.18.0-147.3.1.el8_1.x86_64.rpm bpftool-4.18.0-147.5.1.el8_1.x86_64.rpm bpftool-4.18.0-147.el8.x86_64.rpm bsdtar-3.3.2-7.el8.x86_64.rpm ca-certificates-2018.2.24-6.el8.noarch.rpm centos-gpg-keys-8.1-1.1911.0.8.el8.noarch.rpm centos-release-8.1-1.1911.0.8.el8.x86_64.rpm centos-repos-8.1-1.1911.0.8.el8.x86_64.rpm coreutils-8.30-6.el8.x86_64.rpm coreutils-common-8.30-6.el8.x86_64.rpm coreutils-single-8.30-6.el8.x86_64.rpm ctdb-4.9.1-8.el8.x86_64.rpm ctdb-tests-4.9.1-8.el8.x86_64.rpm dnf-4.2.7-6.el8.noarch.rpm dnf-automatic-4.2.7-6.el8.noarch.rpm dnf-data-4.2.7-6.el8.noarch.rpm dracut-049-27.git20190906.el8.x86_64.rpm dracut-caps-049-27.git20190906.el8.x86_64.rpm dracut-config-generic-049-27.git20190906.el8.x86_64.rpm dracut-config-rescue-049-27.git20190906.el8.x86_64.rpm dracut-live-049-27.git20190906.el8.x86_64.rpm dracut-network-049-27.git20190906.el8.x86_64.rpm dracut-squash-049-27.git20190906.el8.x86_64.rpm dracut-tools-049-27.git20190906.el8.x86_64.rpm firewalld-0.7.0-5.el8.noarch.rpm firewalld-filesystem-0.7.0-5.el8.noarch.rpm glibc-2.28-72.el8.i686.rpm glibc-2.28-72.el8.x86_64.rpm glibc-all-langpacks-2.28-72.el8.x86_64.rpm glibc-common-2.28-72.el8.x86_64.rpm glibc-devel-2.28-72.el8.i686.rpm glibc-devel-2.28-72.el8.x86_64.rpm glibc-headers-2.28-72.el8.i686.rpm glibc-headers-2.28-72.el8.x86_64.rpm glibc-langpack-aa-2.28-72.el8.x86_64.rpm glibc-langpack-af-2.28-72.el8.x86_64.rpm glibc-langpack-agr-2.28-72.el8.x86_64.rpm glibc-langpack-ak-2.28-72.el8.x86_64.rpm glibc-langpack-am-2.28-72.el8.x86_64.rpm glibc-langpack-an-2.28-72.el8.x86_64.rpm glibc-langpack-anp-2.28-72.el8.x86_64.rpm glibc-langpack-ar-2.28-72.el8.x86_64.rpm glibc-langpack-as-2.28-72.el8.x86_64.rpm glibc-langpack-ast-2.28-72.el8.x86_64.rpm glibc-langpack-ayc-2.28-72.el8.x86_64.rpm glibc-langpack-az-2.28-72.el8.x86_64.rpm glibc-langpack-be-2.28-72.el8.x86_64.rpm glibc-langpack-bem-2.28-72.el8.x86_64.rpm glibc-langpack-ber-2.28-72.el8.x86_64.rpm glibc-langpack-bg-2.28-72.el8.x86_64.rpm glibc-langpack-bhb-2.28-72.el8.x86_64.rpm glibc-langpack-bho-2.28-72.el8.x86_64.rpm glibc-langpack-bi-2.28-72.el8.x86_64.rpm glibc-langpack-bn-2.28-72.el8.x86_64.rpm glibc-langpack-bo-2.28-72.el8.x86_64.rpm glibc-langpack-br-2.28-72.el8.x86_64.rpm glibc-langpack-brx-2.28-72.el8.x86_64.rpm glibc-langpack-bs-2.28-72.el8.x86_64.rpm glibc-langpack-byn-2.28-72.el8.x86_64.rpm glibc-langpack-ca-2.28-72.el8.x86_64.rpm glibc-langpack-ce-2.28-72.el8.x86_64.rpm glibc-langpack-chr-2.28-72.el8.x86_64.rpm glibc-langpack-cmn-2.28-72.el8.x86_64.rpm glibc-langpack-crh-2.28-72.el8.x86_64.rpm glibc-langpack-cs-2.28-72.el8.x86_64.rpm glibc-langpack-csb-2.28-72.el8.x86_64.rpm glibc-langpack-cv-2.28-72.el8.x86_64.rpm glibc-langpack-cy-2.28-72.el8.x86_64.rpm glibc-langpack-da-2.28-72.el8.x86_64.rpm glibc-langpack-de-2.28-72.el8.x86_64.rpm glibc-langpack-doi-2.28-72.el8.x86_64.rpm glibc-langpack-dsb-2.28-72.el8.x86_64.rpm glibc-langpack-dv-2.28-72.el8.x86_64.rpm glibc-langpack-dz-2.28-72.el8.x86_64.rpm glibc-langpack-el-2.28-72.el8.x86_64.rpm glibc-langpack-en-2.28-72.el8.x86_64.rpm glibc-langpack-eo-2.28-72.el8.x86_64.rpm glibc-langpack-es-2.28-72.el8.x86_64.rpm glibc-langpack-et-2.28-72.el8.x86_64.rpm glibc-langpack-eu-2.28-72.el8.x86_64.rpm glibc-langpack-fa-2.28-72.el8.x86_64.rpm glibc-langpack-ff-2.28-72.el8.x86_64.rpm glibc-langpack-fi-2.28-72.el8.x86_64.rpm glibc-langpack-fil-2.28-72.el8.x86_64.rpm glibc-langpack-fo-2.28-72.el8.x86_64.rpm glibc-langpack-fr-2.28-72.el8.x86_64.rpm glibc-langpack-fur-2.28-72.el8.x86_64.rpm glibc-langpack-fy-2.28-72.el8.x86_64.rpm glibc-langpack-ga-2.28-72.el8.x86_64.rpm glibc-langpack-gd-2.28-72.el8.x86_64.rpm glibc-langpack-gez-2.28-72.el8.x86_64.rpm glibc-langpack-gl-2.28-72.el8.x86_64.rpm glibc-langpack-gu-2.28-72.el8.x86_64.rpm glibc-langpack-gv-2.28-72.el8.x86_64.rpm glibc-langpack-ha-2.28-72.el8.x86_64.rpm glibc-langpack-hak-2.28-72.el8.x86_64.rpm glibc-langpack-he-2.28-72.el8.x86_64.rpm glibc-langpack-hi-2.28-72.el8.x86_64.rpm glibc-langpack-hif-2.28-72.el8.x86_64.rpm glibc-langpack-hne-2.28-72.el8.x86_64.rpm glibc-langpack-hr-2.28-72.el8.x86_64.rpm glibc-langpack-hsb-2.28-72.el8.x86_64.rpm glibc-langpack-ht-2.28-72.el8.x86_64.rpm glibc-langpack-hu-2.28-72.el8.x86_64.rpm glibc-langpack-hy-2.28-72.el8.x86_64.rpm glibc-langpack-ia-2.28-72.el8.x86_64.rpm glibc-langpack-id-2.28-72.el8.x86_64.rpm glibc-langpack-ig-2.28-72.el8.x86_64.rpm glibc-langpack-ik-2.28-72.el8.x86_64.rpm glibc-langpack-is-2.28-72.el8.x86_64.rpm glibc-langpack-it-2.28-72.el8.x86_64.rpm glibc-langpack-iu-2.28-72.el8.x86_64.rpm glibc-langpack-ja-2.28-72.el8.x86_64.rpm glibc-langpack-ka-2.28-72.el8.x86_64.rpm glibc-langpack-kab-2.28-72.el8.x86_64.rpm glibc-langpack-kk-2.28-72.el8.x86_64.rpm glibc-langpack-kl-2.28-72.el8.x86_64.rpm glibc-langpack-km-2.28-72.el8.x86_64.rpm glibc-langpack-kn-2.28-72.el8.x86_64.rpm glibc-langpack-ko-2.28-72.el8.x86_64.rpm glibc-langpack-kok-2.28-72.el8.x86_64.rpm glibc-langpack-ks-2.28-72.el8.x86_64.rpm glibc-langpack-ku-2.28-72.el8.x86_64.rpm glibc-langpack-kw-2.28-72.el8.x86_64.rpm glibc-langpack-ky-2.28-72.el8.x86_64.rpm glibc-langpack-lb-2.28-72.el8.x86_64.rpm glibc-langpack-lg-2.28-72.el8.x86_64.rpm glibc-langpack-li-2.28-72.el8.x86_64.rpm glibc-langpack-lij-2.28-72.el8.x86_64.rpm glibc-langpack-ln-2.28-72.el8.x86_64.rpm glibc-langpack-lo-2.28-72.el8.x86_64.rpm glibc-langpack-lt-2.28-72.el8.x86_64.rpm glibc-langpack-lv-2.28-72.el8.x86_64.rpm glibc-langpack-lzh-2.28-72.el8.x86_64.rpm glibc-langpack-mag-2.28-72.el8.x86_64.rpm glibc-langpack-mai-2.28-72.el8.x86_64.rpm glibc-langpack-mfe-2.28-72.el8.x86_64.rpm glibc-langpack-mg-2.28-72.el8.x86_64.rpm glibc-langpack-mhr-2.28-72.el8.x86_64.rpm glibc-langpack-mi-2.28-72.el8.x86_64.rpm glibc-langpack-miq-2.28-72.el8.x86_64.rpm glibc-langpack-mjw-2.28-72.el8.x86_64.rpm glibc-langpack-mk-2.28-72.el8.x86_64.rpm glibc-langpack-ml-2.28-72.el8.x86_64.rpm glibc-langpack-mn-2.28-72.el8.x86_64.rpm glibc-langpack-mni-2.28-72.el8.x86_64.rpm glibc-langpack-mr-2.28-72.el8.x86_64.rpm glibc-langpack-ms-2.28-72.el8.x86_64.rpm glibc-langpack-mt-2.28-72.el8.x86_64.rpm glibc-langpack-my-2.28-72.el8.x86_64.rpm glibc-langpack-nan-2.28-72.el8.x86_64.rpm glibc-langpack-nb-2.28-72.el8.x86_64.rpm glibc-langpack-nds-2.28-72.el8.x86_64.rpm glibc-langpack-ne-2.28-72.el8.x86_64.rpm glibc-langpack-nhn-2.28-72.el8.x86_64.rpm glibc-langpack-niu-2.28-72.el8.x86_64.rpm glibc-langpack-nl-2.28-72.el8.x86_64.rpm glibc-langpack-nn-2.28-72.el8.x86_64.rpm glibc-langpack-nr-2.28-72.el8.x86_64.rpm glibc-langpack-nso-2.28-72.el8.x86_64.rpm

bslpzk ()
Ответ на: комментарий от t184256

В том-то и дело, ничего непонятно, но при обновлении из созданной репы с помощью reposync - получаю 404 ошибку от nginx.

Я бы не заморачивался - стянул все по-старинке - _rsyncом_, но засада в том, что "repocreate" в восьмерке тоже переписали - и сгенерированная им "реподата" - не устраивает клиентов, как минимум это происходит при обработкеAppStream` (дальше я уже и не пробовал).

Уже серьезно хочется кого-то убить. Проксю а-ля нексус не поставить т.к. надо зафиксировать релиз… и нате вам.

bslpzk ()
Ответ на: Re: diff output от anonymous

Простыня - частично - сверху. Принцип изъятия пакетов - непонятный. Отсутствуют пакеты разных архитектур и разного назначения. Нет никакого явного признака, указывающего на пропущенный ключ или не заданный параметр.

bslpzk ()
Ответ на: комментарий от bslpzk

Ты куда-то не туда смотришь при проверке работы репозитория и неправильно считаешь diff.

Возьми один конкретный пакет, c которым ты считаешь что у тебя расхождение и проследи конкретно для него, где у него файлы и сколько их, на зеркале и локально.

Только что проверила в чистом CentOS8 контейнере:

dnf repolist -v показывает, что в BaseOS 1663 пакета, так что откуда у тебя взялись 2233 файла при rsync непонятно.

Далее по имеющимся 1663 пакетам reposync всё корректно выкачивает. Из того что ты привел в качестве примера и пакет kbd-legacy-2.0.4-8.el8.noarch.rpm, и например audispd-plugins-3.0-0.13.20190507gitf58ec40.el8.x86_64.rpm скачиваются и видны локалько в Packages.

Вот так:

# dnf reposync --delete --remote-time --download-metadata -p /reposync/ --repo=BaseOS

# find /reposync/BaseOS/Packages/ -type f | wc -l
1663

# dnf --disablerepo=* --repofrompath Local,/reposync/BaseOS list kbd-legacy
Available Packages
kbd-legacy.noarch          2.0.4-8.el8              Local

Так что не надо пенять на CentOS, разберись что ты намудрил. Сам, или вместе с яндексом.

alpha ★★★★★ ()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от alpha

мистика

- Скажите, а когда тут обычно появляется знаменитое Лох-Несское чудовище?
– Обычно после пятого стакана виски, сэр.

После очередного выкачивания «по-новой» - стало работать.

Учитывая, что эксперименты ставились в контейнере, возможность что-то «подправить» исключаю.

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

Ушел за бутылкой вискаря.

bslpzk ()
Ответ на: комментарий от bslpzk

Простите, Вы rsync тянете только rpm ? Тогда мне Вас жаль.

repocreate необходим для создания СВОЕГО репозитория.

а для родных он не нужен, там уже лежит repodata.

И еще: крайне не рекомендую фиксировать релиз т.к. у Сентос идиотская политика класть все пакеты в одно место. т.е. Обновления безопасности отдельно Вы притащить не сможете.

404 ошибка скорее всего вызвана тем что Вы положили их не в том месте где было нужно, по логам nginx прекрасно можно понять где именно он их ищет.

Slackware_user ★★★★★ ()
Ответ на: комментарий от bslpzk

Как минимум часть из них отрезана как локализация, весьма вероятно что остальные могут не проходить по каким-либо другим критериям.

Если Вам нужно сделать локальный слепок на определенную дату, то лучше это делать rsync. Если требуется его периодически обновлять rsync уже в теории может быть медленней.

Slackware_user ★★★★★ ()
Ответ на: комментарий от Slackware_user

reposync с –download-metadata тянет метаданные в том числе. На выходе получается готовый к использованию репозиторий.

При этом файлы метаданных там исчисляются парой десятков, а не тысячами.

Но про это всё не надо гадать. Надо взять конкретные файлы из этих 2333 и сравнить. А так - обсуждаем непонятно что. Мало ли там у яндекса на зеркалах мусора могло оказаться. У него вообще с зеркалами всё плохо обычно.

alpha ★★★★★ ()
Ответ на: комментарий от Slackware_user

Список пакетов там ничего не значит. Я уже выше написала, это какой-то непонятно откуда взятый список, скорее всего некорректно посчитанный diff.

На самом деле reposync все эти пакеты выкачивает.

alpha ★★★★★ ()
Ответ на: комментарий от alpha

Что у яндекса бывают черные дни когда они ломают зеркала соглашусь, пару раз натыкался. Насчет метаданных - их десятки точно.

Если reposync тянет только текущий срез то там как минимум не будет пакетов обновившихся с момента выхода, сотня там уже должна быть.

Т.е. разница в 400 файлов вполне может набежать.

Мне больше кажется что человеку просто крупно повезло с зеркалом.

UPD: audispd-plugins-zos-3.0-0.10.20180831git0047a6c.el8.x86_64.rpm - был в релизе, потом обновили. Очень похоже что reposync тащит текущий срез а не релиз.

Slackware_user ★★★★★ ()