A

ABF scripts

Категория проекта: Ожидает модерации

ABF mirror

Scripts to create and update https://abf.io mirror (local and/or remote)
Скрипты для создания локального и/или удаленного зеркала https://abf.io
При написании скриптов применяется shellcheck из Geany (Сборка->Lint) для их проверки.

Инструкция

Скачать эти скрипты:
git clone https://gitlab.com/abf-mirror/abf-mirror-scripts.git
(Для приема обновлений перейти в папку abf-mirror-scripts и сделать git pull)

Поставить нужные для работы пакеты (от root):

ОС/Дистрибутив Команда установки пакетов
ROSA: urpmi bash lynx git
Ubuntu: apt install bash lynx git
FreeBSD: pkg install bash lynx git
ALT: apt-get install bash lynx git-core

Просто сделать или обновить зеркало платформы rosa2016.1 в домашней папке:
env target_dir=~/abf-mirror ./git-mirror.sh

Поиск по локальному зеркалу:
grep -inHr "что ищем" ~/abf-mirror

Пример директорий в зеркале:

├── ./abcm2ps
│   ├── ./abcm2ps/abcm2ps_makefile.patch
│   ├── ./abcm2ps/abcm2ps.spec
│   ├── ./abcm2ps/.abf.yml

Готовые архивы

По просьбам трудящихся поставляются готовые архивы зеркала. Распаковав их, их можно обновлять этими скриптами для поддержания актуальности.
Зайдите в раздел Tags и скачайте торрент, в котором архив в двух вариантах:

  • abf.io-import_2018.12.23_19.24.tar.xz — тарболл
  • abf.io-import_2018.12.23_19.24.sqfs — образ SquashFS

Монтирование SquashFS (можно также прописать в /etc/fstab в соответствующем формате):

mkdir /tmp/abf
sudo mount -o loop abf.io-import_2018.12.23_19.24.sqfs /tmp/abf

Теперь в папке /tmp/abf доступно содержимое git-репозиториев import с ABF в режиме только чтения.

abf.io-import_2018.12.23_19.24.tar.xz — это обычный архив, содержимое аналогично SquashFS, но требуется распаковать на диск вместо чтения из tmpfs.

Пример упаковки локального зеркала:
mksquashfs "/media/3TB_Toshiba_BTRFS/files/Зеркала репозиториев/abf-import/" ${HOME}/Загрузки/abf.io-import_2018.12.23_19.24.sqfs -comp xz -Xbcj ia64,x86
env XZ_OPT="--extreme -9 --threads=0 -v" tar cJf ${HOME}/Загрузки/abf.io-import_2018.12.23_19.24.tar.xz .
(https://nixtux.ru/732)

Скрипты

pkg-list.sh

pkg-list.sh — получить список SRPM-пакетов

Управлять параметрами можно через переменные окружения:

Переменная Значение по умолчанию Назначение
mirror http://mirror.rosalab.ru Зеркало
platform rosa2016.1 Платформа
debug no Включить ли вывод отладочной информации. Любое значение, отличное от no, включает.
repos main contrib non-free restricted Список репозиториев, разделенный IFS
repotypes release testing updates Список подрепозиториев, разделенный IFS
projects_list_file /tmp/abf-mirror_$(date +%s)/import_SRPM.list Куда сохранять список SRPM-пакетов (файл)

Если переменная не задана, то будет использоваться значение по умолчанию.

Пример запуска без доп. параметров:
./pkg-list.sh

Пример запуска скрипта с установкой своих значений переменных:
env mirror='https://mirror.yandex.ru' platform='rosa2016.1' repos='main contrib non-free restricted' repotypes='release testing updates' projects_list_file='./file.txt' ./pkg-list.sh

git-mirror.sh

git-mirror.sh — сделать локальные копии всех git-репозиториев по именам из списка. Если копии уже есть, они обновляются.

Если не задано никаких параметров, то сначала вызывается pkg-list.sh (принимаются все описанные выше переменные окружения для него), затем делается git clone -b $platform для каждой строки списка.

Переменная Значение по умолчанию Назначение
platform rosa2016.1 Бранч Git
debug no Включить ли вывод отладочной информации. Любое значение, отличное от no, включает.
projects_list_file - Откуда брать список репозиториев; если не задано, то вызывается pkg-list.sh
git_uri https://foo:bar@abf.io/import Префикс для имени репозитория .git ( foo:bar необязательно заменять)
target_dir /media/3TB_Toshiba_BTRFS/files/Зеркала репозиториев/abf-import/ Директория, куда сохранять Git-репозитории

Можно смешивать переменные для pkg-list.sh и git-mirror.sh.

TODO

  • имена некоторых git-репозиториев и SRC RPM не совпадают, пример: https://abf.io/import/webcore-fonts-restricted собирает SRPM webcore-fonts
  • обслуживание нескольких бранчей (rosa2014.1, rosa2016.1, ...)
  • выгрузка на Gitlab (в т.ч. выключение protected branch)
  • в текущей эвристике подбора имени пакета пакеты вида ffmpeg-restricted будут пропущены и не склонированы