The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск инструментария для поддержания локальных зеркал apt-mirror2 4

08.04.2024 11:34

Опубликован выпуск инструментария apt-mirror2 4, предназначенного для организации работы локальных зеркал apt-репозиториев дистрибутивов на базе Debian и Ubuntu. Apt-mirror2 может использоваться в качестве прозрачной замены вместо утилиты apt-mirror, которая не обновлялась с 2017 года. Основным отличием apt-mirror2 является использование языка Python с библиотекой asyncio (код оригинального apt-mirror был написан на Perl), а также применением проверки целостности на всех стадиях зеркалироваиня для недопущения нарушения работоспособности зеркала. Код распространяется под лицензией GPLv3.

В новой версии:

  • Реализована поддержка совместимых с apt-mirror списков файлов (ALL, NEW, MD5, SHA256, SHA512).
  • Добавлена поддержка передачи метрик Prometheus для мониторинга.
  • Добавлена проверка целостности файлов с релизами и обеспечены повторные попытки их загрузки в случае сбоев.
  • Улучшено прогнозирование размера загружаемых данных.
  • Улучшено ведение лога.
  • Решены проблемы при создании зеркал FTP-серверов.


  1. Главная ссылка к новости (https://gitlab.com/apt-mirror2...)
  2. OpenNews: Новая версия apt-mirror
  3. OpenNews: Уязвимость в пакетном менеджере APT, проявляющаяся в конфигурациях с зеркалами
  4. OpenNews: Уязвимость в пакетном менеджере APT, позволяющая подменить загружаемый пакет
  5. OpenNews: Опубликована утилита deb-get, предлагающая подобие apt-get для сторонних пакетов
  6. OpenNews: В пакетном менеджере APT 2.7 реализована поддержка снапшотов
Лицензия: CC BY 3.0
Наводку на новость прислал nE0sIghT
Короткая ссылка: https://opennet.ru/60938-apt-mirror
Ключевые слова: apt-mirror, apt
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (20) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Golangdev (?), 12:00, 08/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Есть ли что-то подобное для rpm ?
     
     
  • 2.2, Аноним (2), 12:08, 08/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Наверно, должно что-то быть. Присоединяюсь к вопросу.
     
  • 2.13, Аноним (13), 14:10, 08/04/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Хватает обычного rsync. Благо сама структура репозитория rpm не такая дрянная как в deb, где смешали всё в одну кучу.

    Если выдел структуру тогоже Debian и Fedora, то сразу поймёшь...

     
     
  • 3.15, Golangdev (?), 15:08, 08/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    спасибо
     
  • 3.17, Tigro (??), 17:42, 08/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Хватает - это если есть rsync на зеркале. А при нынешних облаках есть только https, и даже листинга может не быть.

    В общем в этих случаях dnf reposync.

     
  • 2.14, WE (?), 14:30, 08/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    rsync + createrepo
     
  • 2.16, Аноним (-), 15:42, 08/04/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.19, anonymous (??), 02:06, 09/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Artifactory
     
  • 2.20, Аноним (20), 02:54, 09/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если стоит задача установить что-то в "закрытом контуре", то можно скачать с зависимостями на имеющем выход в интернет компьютере необходимые пакеты такой командой:
    dnf download --downloaddir=.  --resolve --arch x86_64 <пакет>
    Или, если всё ещё используется yum: repotrack --arch=x86_64 --download_path=. <пакет>
     
  • 2.27, knike (?), 22:50, 15/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    /usr/bin/reposync
     

  • 1.3, Аноним (3), 12:10, 08/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > использование языка Python с библиотекой asyncio
    > код оригинального apt-mirror был написан на Perl

    И правильно. Сейчас найти не выжившего из ума перловика - та еще задача.
    А питонистов как собак нерезаных.
    И чтобы проект жил, перловку пришлось выкинуть((

     
     
  • 2.4, scriptkiddis (?), 12:22, 08/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Надеюсь ты скоро перепишешь весь стек dpkg и dpkgutils для сборки пакетов и все утилиты около него (например schroot и тд)
     
     
  • 3.7, Аноним (7), 12:36, 08/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это как код на коболе его не перепишут его просто выкинут и напишут новые тулзы.
     
  • 3.9, нах. (?), 13:03, 08/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    боюсь что да и ты этому не обрадуешься. Посмотри на список изменений и улучшизмов.
    Безусловно вот "метрик прометеуса" очень не хватает для банальной копии зеркала deb'ов.

    К счастью, debmirror пока работает.

     

  • 1.6, Аноним (7), 12:33, 08/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Зачем это всё когда уже 300 миллионов лет есть https://www.stablebuild.com/
     
  • 1.11, Аноним (13), 14:00, 08/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    https://gitlab.com/apt-mirror2/apt-mirror2/-/blob/master/requirements.txt?ref_

    Вот это да. Солидно(

     
     
  • 2.12, Аноним (13), 14:05, 08/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Бегло посмотрел код этой поделки.

    Одним словом - сверхинжиниринг.

     
  • 2.18, nE0sIghT (ok), 19:17, 08/04/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Прямых обязательных зависимостей 5 [1]:
    - библиотека асинхронной работы с файлами (нет в Python)
    - библиотека лимитирования asyncio
    - 2 библиотеки асинхронной работы с HTTP (одна - для http2)
    - библиотека асинхронной работы с FTP

    В requirements.txt - все зависимости, включая опциональные, dev и вторичные

    [1] https://gitlab.com/apt-mirror2/apt-mirror2/-/blob/master/pyproject.toml?ref_ty

     
     
  • 3.23, PnD (??), 13:17, 09/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Респект. Поставил хинт куда смотреть, по мере отсыхания функциональности старого apt-mirror.

    * У apt-mirror, помимо захардкоженных нюансов работы с прокси, есть ещё один сюрприз.
    Если на том конце дропают соединение, он делает вид что всё хорошо (нечего качать) и выходит без ошибки.
    Тут, как минимум, вижу обработчик httpx.RemoteProtocolError. Есть надежда что по итогам будет ненулевой код возврата.

     
     
  • 4.26, nE0sIghT (ok), 09:11, 10/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У apt-mirror на самом деле много больше сюрпризов. Им сделанное зеркало может сломаться во многих случаях:
    1. На источнике рассинхронизированы InRelease и Release файлы
    2. На источнике удалили InRelease или Release файл, а раньше они были уже зазеркалированы
    3. Как ты написал - любой сетевой сбой не приводит к ошибке приложения, но приводит к сломанному зеркалу
    4. Если в источнике убраны хеш суммы md5 - новые файлы пула качаться не будут.
    5. Если в источнике нет архивированных метаданных, то он не зазеркалируется
    6. Если файл пула был скачен не правильно, он не перекачается пока ты его не удалишь
    7. Если не используешь недокументированную опцию _unlink - в 100% случаев получишь сломанное зеркало на время обновления
    ...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру