Создание локального репозитория

On: 29 января 2010 г.

Недавно наткнулся на утилиту reprepro. Она помогает создавать локальный репозиторий deb-based дистрибутивов. Тут та меня осенило. Я давно собираю пакеты которых нет в официальных архивах потому каждый раз прогибаться по ним и устанавливать стало в падлу и я решил создать раздел с хранящимися там репозиториями таких пакетов. Так что бы при смене системы просто под монтировать его и пользать по надобности. Вещь как мне кажется полезнее чем сохранять кеш из apt-get.


Кратко о reprepro
Необходимо создать директорию для репозитория. У меня выбор падает на /repository потому для работы нужны права суперпользователя. А в принцепе если права записи на этот каталог будут только у администратора то есть большая вероятность что никто посторонний не сможет навредить вашему "архиву"
# mkdir /repository
переходим туда:
Создаем папку /repository/conf/ для конфигурационных файлов
# mkdir /repository/conf

Создаем файл /repository/conf/distributions, добавляя нужные секции (подробнее об этом можно почитать в выводе команды man reprepro в разделе CONFIG FILES)
# mousepad /repository/conf/distributions
В оригинале текста объяснения автор предоставляет такой пример этого файла


Origin: Debian
Suite: testing
AlsoAcceptFor: unstable experimental
Codename: lenny
Version: 5.0
Architectures: i386 source
Components: main contrib non-free
UDebComponents: main contrib non-free
Description: my local repository
где:
Origin - Имя дистрибутива = Debian
Suite - ветка = testing
AlsoAcceptFor - позволяет "засовывать" в репозиторий тестинга пакеты для других веток = unstable experimental, если опция не указана, то будет ругаться вот так при попытке добавить пакеты из анстэбл/экспериментал веток.
Codename - кодовое имя ветки = lenny
Version - версия ветки = 5.0
Architectures - архитектуры, у меня x86 процессор, соответственно есть i386, также иногда закидываю в репозиторий исходники, поэтому есть source
Components - разделы ветки, куда можно поместить deb-пакеты, а также исходники = main contrib non-free (можно еще насоздавать, сколько угодно)
UDebComponents - разделы ветки, куда можно поместить udeb-пакеты (бывают и такие ) = main contrib non-free (лучше, когда совпадают со строкой выше)
Description - краткое словесное описание репозитория = например, my local repository



Если каталог репозиторий не являеться текущим то в строке команды прописывают так называемую BASEDIR опции -b BASEDIR (в моем случае BASEDIR=/repository).

После создания файла /repository/conf/distributions инициализацируем репозиторий
# reprepro export
# reprepro createsymlinks


Можно репозиторий заполнять пакетами. Для этого существует множество команд и опций, подробнее о которых можно узнать в man reprepro
Наиболее употребляемые

Добавление deb-пакета в репозиторий.
В общем виде выглядит так:
# reprepro -b BASEDIR -C РАЗДЕЛ includedeb ВЕТКА /путь/до/файла/имя_файла.deb
Как я и описывал раньше это пример добавления пакета не из каталога с репозиторием, а из произвольного каталога. Если вы находитесь в каталоге репозитория то команда выглядит так же но без  -b BASEDIR
К примеру, для добавления пакета foo_1.0.deb, находящегося в папке /home/user/debian, в раздел main ветки lenny команда будет иметь следующий вид
# reprepro -b /repository -C main includedeb lenny /home/user/debian/foo_1.0.deb

Удаление deb-пакета из репозитория
Для удаления одного deb-пакета из указанной ветки репозитория нужно дать такую команду
# reprepro remove ветка имя_пакета

К примеру, для рассмотренного пакета foo_1.0.deb, находящегося в ветке lenny даем такую команду:
# reprepro remove lenny foo

Для использования репозитория нужно добавить его в файл /etc/apt/sources.list в виде следующей строки (в общем виде):
deb file:///путь_к_папке_репозитория/ ветка разделы

Что для нашего примера будет выглядеть так:
deb file:///repository/ lenny main contrib non-free


Это базовое что я считаю достаточно в моем  случае. Статья оригинала находиться здесь.

0 коммент. on "Создание локального репозитория"