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 будут пропущены и не склонированы