Преамбула:
------------------------
Данный репозиторий создан в экспериментальных целях и не является надёжным источником, поскольку его существование зависит сразу от двух сервисов: ЯндексДиска и ресурса-держателя прямой ссылки на его публичный каталог. Однако, для бесплатного, временного решения вариант оказался вполне пригодным. В будущем репу можно безболезненно перенести на настоящий публичный узел с прямыми ссылками.
Содержимое репозитория проходит дополнительную проверку Microsoft Security Essentials (лицензия)
Подключение для i586 и x86_64:
urpmi.addmedia --distrib https://getfile.dokpub.com/yandex/get/https://yadi.sk/d/VJJoFesIEXEOhQ/6/i586
urpmi.addmedia --distrib https://getfile.dokpub.com/yandex/get/https://yadi.sk/d/VJJoFesIEXEOhQ/6/x86_64
Справедливости ради скажу, что структуру каталогов хранилища и файлы media.cfg с описанием привязок путей я нагло спёр у одного из наших админов, из его замечательного хранилища http://packages.gb2bel.ru/mageia6, за что ему большое, полосатое спасибо! Искренне надеюсь, что XliN не обидится на мелкий плагиат со стороны енотов. )) Мог бы "передрать" и у Магии, но там много всего наворочено, а у XliN-a всё по делу.
Поскольку теперь у меня есть наикрутейший RPMCreator, который позволяет быстро и правильно собрать файлы и папки в rpm-пакеты (rpm, src, spec), свои программы я перекомпилил в новом Лазаре 1.8.4 и опакетил. В наличии так же имелись программы других производителей на питонах, перлах и др.
На данный момент в моём "игрушечном" репозитории находятся пакеты:
part-indicator – симпатичный индикатор заполнения раздела на диске
save-indicator - иконка флешки в трее, показывает расход диска сохранения SAVE в MgaRemix
scleaner – программа для очистки Магии от мусора, сирот, старых ядер и т.д.
bbcolor – конвертер цветного текста и композитор ссылок в bb-код
rpmcreator – программа для сборки пакетов из файлов и папок (спеки, src)
patchcreator – программа для снимков объектов файловой системы
vacuum – это какой-то хитрый видео-редактор на питоне. AVOTINI в курсе...
azpainter - шустрый графический редактор
far2l - порт Far Manager (файловый менеджер)
flowblade - многоканальный редактор видео
ekstertera - GUI для Яндекс Диска, работающий через REST API
grive2 - консольный клиент Google Drive с поддержкой REST-API (бэкпортирование x86_64 - Zomby)
grive2folder - GUI для grive2. Настройка, индикация, автосинхронизация
lazarus - Lazarus-1.8.4 для Mageia-6.1 (бэкпортирование x86_64 - saahriktu)
cpu-x - программа для просмотра основной информации о компьютере
ipscan - Angry IP Scanner. Шустрый сетевой сканер
timeshift - программа для создания резервных копий/снятия снэпшотов системы
xnviewmp - просмотрщик изображений
httraqt - программа для скачивания сайтов
qjournalctl - GUI для просмотра логов в реальном времени (journalctl)
windows-10-themes - темы Windows-10 Light и Dark от B00merang
pwgui - GUI для генератора паролей PWGen
ginxi - GUI для консольной утилиты inxi (вывод информации о системе и аппаратной конфигурации)
kodi - v18.2-Leia, профессиональный медиа-центр
deps - скрипт для автоустановки BuildRequires из спека при сборке пакета (команда "deps")
porg - менеджер программ, установленных из исходников
screenpen - электронный карандаш-маркер для рисования «поверх экрана» в Linux
f3 - набор утилит для тестирования емкости и производительности флэш-карт
duc - консольная утилита для отображения информации об использовании диска в текстовом и графическом виде
vboxvdc - программа для создания виртуальных жеских дисков VirtualBox, аналог VBoxVDC из Windows (загрузка VM с флешки)
vdicomp - программа для сжатия VM VirtualBox (компрессор файлов *.vdi)
Как создавался репозиторий
Зашёл в ЯндексДиск через браузер и создал в нем папку REPO. Это будет корень хранилища пакетов. Расшарил её для чтения (общий доступ).
Поскольку для подключения будущего репо через urpmi.addmedia потребуется ПРЯМАЯ ссылка на папку, а не динамическая (на страницу скачивания в облаке Яндекса), воспользовался замечательным ресурсом https://getfile.dokpub.com/yandex. Скопировал ссылку на доступ к папке REPO в буфер и вставил её на вышеуказанном сайте = получил прямую ссылку.
Теперь подготовим систему к созданию репы…
Заходим в терминал с привилегиями root
su (пароль)
Доустановим нужные пакеты для работы с подписью gpg и др.
urpmi --auto gnupg gnupg2 rpm-sign createrepo
Если ранее ключи не использовались, для чистоты эксперимента пересоздадим рабочий каталог gpg с ключами:
rm -rf ~/.gnupg
После генерации связки ключей (секретный и публичный) эту папку нужно заархивировать на случай использования ключей в будущем. Их, конечно можно пересоздать и заново экспортировать публичный ключ в облако + переподписать пакеты, но это лишнее.
Создаём связку ключей (Выбираем 1-позиция, длина 2048 бит, Настоящее имя: aLEX_gRANT (укажите своё), почта alex_q_3000@mail.ru (укажите свою), секретное слово оставить пустым через Enter)
gpg --gen-key
Просмотрим ключи:
gpg --list-key
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/F3419EСA 2018-10-07
uid aLEX_gRANT <alex_q_3000@mail.ru>
sub 2048R/091887BD 2018-10-07
Создаём rpm-макрос с данными подписи:
echo "%_signature gpg" > ~/.rpmmacros;
echo "%_gpg_name aLEX_gRANT <alex_q_3000@mail.ru>" >> ~/.rpmmacros
Возьмёмся за репозиторий... Cоздаём папку /mnt/YandexDisk и монтируем в неё свой ЯндексДиск:
mkdir /mnt/YandexDisk
mount -t davfs https://webdav.yandex.ru /mnt/YandexDisk
(потребуются логин и пароль от облака)
Создаём на сервере структуру хранилища:
/mnt/YandexDisk/REPO/6/SRPMS
/mnt/YandexDisk/REPO/6/RPMS/i586 x86_64 noarch
/mnt/YandexDisk/REPO/6/i586/media/media_info/(файл media.cfg с описанем репо)
/mnt/YandexDisk/REPO/6/x86_64/media/media_info/(файл media.cfg с описанем репо)
В зависимости от архитектуры, распихиваем rpm-пакеты в папки:
/mnt/YandexDisk/REPO/6/SRPMS
/mnt/YandexDisk/REPO/6/RPMS/i586
/mnt/YandexDisk/REPO/6/RPMS/x86_64
/mnt/YandexDisk/REPO/6/RPMS/noarch
Чтобы при установке пакетов из репозитория система не выпендривалась на предмет ключей, пакеты нужно подписать секретным ключом (он индивидуален) и закинуть в хранилище публичный ключ pubkey, который urpmi.addmedia будет импортировать в систему пользователя для "подтверждения личности" устанавливаемого пакета.
Зайдём в каждую из вышеуказанных папок, подпишем наши пакеты и сделаем переиндексацию:
cd /mnt/YandexDisk/REPO/6/SRPMS
rpm --addsign ./*.rpm; genhdlist2 --xml-info ./; createrepo ./
cd /mnt/YandexDisk/REPO/6/RPMS/i586
rpm --addsign ./*.rpm; genhdlist2 --xml-info ./; createrepo ./
cd /mnt/YandexDisk/REPO/6/RPMS/x86_64
rpm --addsign ./*.rpm; genhdlist2 --xml-info ./; createrepo ./
cd /mnt/YandexDisk/REPO/6/RPMS/noarch
rpm --addsign ./*.rpm; genhdlist2 --xml-info ./; createrepo ./
Примечание: если пакеты уже содержат подпись, говорить нужно rpm --resign …
В результате в папках с пакетами, будут созданы подпапки media_info с информацией о лежащих в них пакетах и контрольные суммы:
/mnt/YandexDisk/REPO/6/SRPMS/media_info
/mnt/YandexDisk/REPO/6/RPMS/x86_64/media_info
/mnt/YandexDisk/REPO/6/RPMS/i586/media_info
/mnt/YandexDisk/REPO/6/RPMS/noarch/media_info
Экспортируем публичный ключ pubkey в каждую из указанных выше папок:
cd /mnt/YandexDisk/REPO/SRPMS/media_info
gpg --export -a "aLEX_gRANT <alex_q_3000@mail.ru>" > ./pubkey
cd /mnt/YandexDisk/REPO/RPMS/i586/media_info
gpg --export -a "aLEX_gRANT <alex_q_3000@mail.ru>" > ./pubkey
cd /mnt/YandexDisk/REPO/RPMS/x86_64/media_info
gpg --export -a "aLEX_gRANT <alex_q_3000@mail.ru>" > ./pubkey
cd /mnt/YandexDisk/REPO/RPMS/noarch/media_info
gpg --export -a "aLEX_gRANT <alex_q_3000@mail.ru>" > ./pubkey
Здесь мы использовали uid ключа, который видели в выхлопе команды gpg --list-key выше...
uid aLEX_gRANT <alex_q_3000@mail.ru>
Очищаем кеш urpmi (вдруг там чего лишнее застряло):
urpmi --clean
Подключаем готовый репозиторий i586 или x86_64:
urpmi.addmedia --distrib https://getfile.dokpub.com/yandex/get/https://yadi.sk/d/VJJoFesIEXEOhQ/6/i586
urpmi.addmedia --distrib https://getfile.dokpub.com/yandex/get/https://yadi.sk/d/VJJoFesIEXEOhQ/6/x86_64
Примечание:
Если пакеты в хранилище добавляются/удаляются/обновляются, требуется вновь их переподписать и переиндексировать их каталоги. Созданный ранее публичный ключ pubkey должен присутствовать во всех каталогах media_info с пакетами:
rpm --resign ./*.rpm; genhdlist2 --clean --xml-info ./; createrepo ./
Дополнительно требуется сделать апдейт зеркал (источников) на компе:
urpmi --clean; urpmi.update -a
Отключить репозиторий можно командой:
urpmi.removemedia -y ENOT
p.s. Репа работает уже 3 дня и вроде ещё не отвалилась. Однако, ни что на Земле не вечно. Благодарю за внимание…
Полезные статьи:
-----------------------
genhdlist2 - Описание утилиты создания репозитория
Развёртывание репозиториев Linux
Игорь Олемской — практические заметки по системному администрированию Linux CentOS