Ubuntu Создаем собственный deb-репозиторий (на примере создания репозитория для Komodo Edit)

В одной из предыдущих статей («Собираем deb-пакет с текстовым редактором Komodo Edit») я рассказывал, как создать deb-пакет с текстовым редактором Komodo Edit. Одним из недостатков установки Komodo Edit из deb-пакета я называл невозможность его удобного обновления без подключения внешнего репозитория. Постараюсь исправить этот недостаток, создав собственный репозиторий deb-пакетов, откуда пользователи Ubuntu смогут легко и просто установить текстовый редактор Komodo Edit.

Для создания собственного репозитория используем команду reprepro, которая существенно облегчит нашу работу. Сначала установим ее следующей командой:

sudo aptitude install reprepro

Затем нужно решить, где будет находиться наш репозиторий с deb-пакетами. Следует отметить, что для доступа к нашему репозиторию нужно будет использовать веб-сервер, поэтому логично разместить его в каталоге /var/www. Создадим в этом каталоге директорию repository.

sudo mkdir /var/www/repository

Далее нужно настроить наш репозиторий. Перейдем в каталог /var/www/repository и создадим каталог conf, а в внутри него два файла: distributions и options.

sudo cd /var/www/repository
sudo mkdir conf
sudo touch conf/distributions
sudo touch conf/options

При настройке конфигурации репозитория следует указать стабильность входящих в него пакетов (в нашем случае — stable), версию операционной системы (например, поддерживаемые на данный момент версии дистрибутивов Ubuntu: lucid, maverick и natty), тип архитектуры процессора (i386 и amd64), а также тип программного обеспечения в зависимости от лицензии (в случае с Komodo Edit — non-free). Также в список настроек входят название репозитория, его метка и описание. Таким образом, содержимое файла distributions получилось таким:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Origin: Anosov.Org.Ru Deb-Repository
Label: AORDEB
Suite: stable
Codename: lucid
Architectures: i386 amd64
Components: non-free
Description: Repository for web-development
SignWith: yes
 
Origin: Anosov.Org.Ru Deb-Repository
Label: AORDEB
Suite: stable
Codename: maverick
Architectures: i386 amd64
Components: non-free
Description: Repository for web-development
SignWith: yes
 
Origin: Anosov.Org.Ru Deb-Repository
Label: AORDEB
Suite: stable
Codename: natty
Architectures: i386 amd64
Components: non-free
Description: Repository for web-development
SignWith: yes

Особое внимание следует обратить на параметр SignWith. Если его значение установлено в yes, то наш репозиторий будет использовать GPG-ключ для подтверждения подлинности пакетов, что крайне рекомендуется.

В файле options нужно перечислить параметры, которые автоматически будут подставляться ко всем командам reprepro. Пожалуй, что самым оптимальным в этом файле будет список из следующих команд:

1
2
verbose
ask-passphrase

Первый параметр определяет, что всегда будет выводиться информация о ходе выполнения команды, а второй заставит reprepro спрашивать пароль для GPG-ключа при добавлении нового deb-пакета в репозиторий.

Теперь самое время сгенерировать GPG-ключ, которым мы будем подтверждать подлинность нашего репозитория. Работа с GPG-ключами в Linux выполняется с помощью команды gpg.

gpg --gen-key

Команда предложит выбрать тип шифрования ключа (выбираем RSA and RSA), затем длину ключа (оставляем по умолчанию 2048), срок истечения действия ключа (пожалуй, что лучше выбрать значение 0 — ключ не имеет срока истечения), затем команда предложит нам указать свое имя, адрес электронной почты и краткое описание. На следующем шаге нужно будет ввести пароль (passphrase), который будет защищать GPG-ключ. Именно этот пароль будет запрашивать команда reprepro при добавлении новых deb-пакетов в репозиторий. На последнем шаге команда потребует от нас инициализации генератора случайных чисел, поэтому в течение некоторого времени потребуется набирать произвольный текст на клавиатуре. После этого команда должна завершить свою работу, создав в нашем домашнем каталоге папку .gnupg, а внутри нее среди прочих, файлы secring.gpg (закрытый ключ) и pubring.gpg (открытый ключ).

После проведения операций по генерации GPG-ключа можно приступать к добавлению файлов в репозиторий. Будем считать, что мы заранее собрали deb-пакеты komodo-edit_6.1.2ubuntu0_i386.deb и komodo-edit_6.1.2ubuntu0_amd64.deb.
Учитывая, что настройках в файле distributions мы прописали поддержку дистрибутивов lucid, maverick и natty, то для добавления двух пакетов в наш репозиторий нужно выполнить следующие команды:

cd /var/www/repository
sudo reprepro -b . includedeb lucid ~/komodo-edit_6.1.2ubuntu0_i386.deb
sudo reprepro -b . includedeb lucid ~/komodo-edit_6.1.2ubuntu0_amd64.deb
sudo reprepro -b . includedeb maverick ~/komodo-edit_6.1.2ubuntu0_i386.deb
sudo reprepro -b . includedeb maverick ~/komodo-edit_6.1.2ubuntu0_amd64.deb
sudo reprepro -b . includedeb natty ~/komodo-edit_6.1.2ubuntu0_i386.deb
sudo reprepro -b . includedeb natty ~/komodo-edit_6.1.2ubuntu0_amd64.deb

После этого настройку нашего репозитория можно считать завершенной. Наш репозиторий уже доступен локально, но еще нужно настроить веб-сервер, чтобы предоставить доступ к репозиторию через интернет. Для репозитория я выделил субдомен deb.anosov.org.ru, поэтому ниже привожу пример конфигурационного файла для веб-сервера nginx для организации доступа к репозиторию через доменное имя deb.anosov.org.ru:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
        server_name             deb.anosov.org.ru;
        listen                  80;
        root                    /var/www/repository/;
 
        location / {
                autoindex       on;
        }
 
        location /conf {
                deny            all;
        }
 
        location /db {
                deny            all;
        }
}

Учитывая, что созданный репозиторий — публичный, то имеет смысл включить отображение листинга находящихся в нем файлов. Однако также рекомендуется ограничить доступ к каталогам /conf и /db, содержащим сведения о настройках репозитория.

Кроме открытия доступа к репозиторию с помощью веб-сервера нужно предоставить пользователям репозитория возможность свободно получить открытый GPG-ключ. Лучший способ для этого — загрузить открытый ключ на публичный GPG-сервер, например, на keyserver.ubuntu.com. Следует отметить, что keyserver.ubuntu.com принимает ключи в формате ASCII-armored. Поэтому сначала следует конвертировать файл pubring.gpg в файл pubring.asc:

gpg --output pubring.asc --export -a $GPGKEY

Затем нужно открыть в браузере сайт keyserver.ubuntu.com, найти на нем форму «Submit a key», скопировать в текстовое поле все содержимое файла pubring.asc и нажать кнопку «Submit this key to the keyserver!».

На этом настройку deb-репозитория можно считать завершенной. На момент написания этой статьи в репозитории deb.anosov.org.ru находится только пакет komodo-edit для архитектур i386 и amd64. Для того, чтобы воспользоваться репозиторием и установить из него текстовый редактор Komodo Edit нужно выполнить следующие шаги:

1. Установить открытый GPG-ключ репозитория deb.anosov.org.ru:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 8B9E0439

2. Добавить в файл /etc/apt/sources.list одну из следующих строк в зависимости от дистрибутива Ubuntu:

deb http://deb.anosov.org.ru natty non-free
deb http://deb.anosov.org.ru maverick non-free
deb http://deb.anosov.org.ru lucid non-free

3. Обновить список пакетов и установить Komodo Edit:

sudo aptitude update
sudo aptitude install komodo-edit

По мере выхода новых версий текстового редактора Komodo Edit я планирую обновлять deb-пакеты в репозитории, что означает простую и удобную процедуру обновления программного обеспечения.

Очень надеюсь, что для одних эта статья окажется полезной при настройке собственного deb-репозитория, другим же поможет легко и просто установить Komodo Edit.

 

P.S. Установить deb-пакет с Komodo Edit можно из репозитория https://launchpad.net/~mystic-mirage/+archive/ubuntu/komodo-edit.