Debian Repo

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску

Создание репозитория для дебиана/убунты

В отлисии от православной CentOS/RH б-мерзкий дебиан требует танцев с бубном.

GPG

Подготовка ключа

gpg --gen-key
  • Choose RSA (sign only)
  • Choose your keysize from the options given (doesn’t really matter for our purposes).
  • Enter your name and email address when prompted

Все очевидно - сделать ключик только для подписи и ввсети свои данные. Пасс-фразу тоже.

Экспорт публичной части ключа

gpg --armor --export jon@aframe.com --output jon@aframe.com.gpg.key

Получится что-то вроде

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.14 (GNU/Linux)
mI0EUjq9rQEEANCDbFegXdHcae+IZzMyvEEIo3oajU3JXKPgKZ6sCEUjKfJ1J/dJ
<SKIPPED>
C2BAFvN3v2lWP++BXrJhVPe6SBGyMKIXGRl1ToZMaW7WBDY0z2823ViP
=jTOV
-----END PGP PUBLIC KEY BLOCK-----

Подписывание пакетов

Под убунтой поставить dpkg-sig

apt-get install dpkg-sig

Подписать:

for P in `ls -1 | grep deb `; do dpkg-sig --sign builder $P; done

Тут перебор всех пакетов и подписывание.
--sign builder - cудя по всему если ключей более чем один то надо будет выбрать. Мне было не надо.

The “builder” name mentioned is a debian convention, indicating that the builder of the package signed it. 
The GPG key used will be the one you set up above, providing you’re running the command as the same user you set up the key with. 
gpg  --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   1024R/880B596A 2013-09-19
uid                  Max Mazur (Deb_heat_repo) <mmaxur@mirantis.com>

Создание репозитория

nginx

Под nginx - абсолютный минимум:

        root /usr/share/nginx/www;
        index index.html index.htm;

        location / {
                autoindex on;
        }

reprepo

Далее собственно создание репозитория
Создать конфиг - у меня нет понимания на 100% но по-моему конфиг должен лежать в --basedir в $basedir/conf и называться distributions.
У меня он выглядит так:

Origin: Mirantis Heat For Murano
Label: Openstack Heat
Codename: precise
Architectures: i386 amd64
Components: main
Description: Apt repository for project Murano
#DebOverride: override.precise
#DscOverride: override.precise
SignWith: 880B596A
  • Origin - the name of who made the packages.
  • Label - some label adequate for the packages or for your repository. Use your fantasy.
  • Codename - codename of the distributions that may use this repo (e.g. lenny in case of Debian or precise in case of Ubuntu). Additionally, if you’re going to package for more than one distribution, you'll want to copy the above section for each distro. It all stays in the same file, you just change the “<osrelease>” parts as applicable.
  • Component - the component of the packages in the directory, for example main, non-free, or contrib. The free packages go into main; the non-free ones into non-free, and the free ones which depend on non-free ones into contrib.
  • DebOverride and DscOverride fields tell reprepro what files to use for the override rules. Override rules can be used to override .deb and .dsc configuration fields. The .dsc files always need an override file because .dsc files do not contain Section and Priority information, e.g. optional - games for gnome-hearts.
  • SignWith - indicates that you want to create a Release.gpg file, creating a signed APT repository. It is highly recommended that you do so. If you have multiple GPG keys installed on your APT server, you can also replace the "yes" value with something that tells GPG what key to use. A name or a key ID for example. key-id the ID of the GnuPG key you generated. You can check the key ID with gpg:


SignWith можно взяьт в gpg --list-keys
Далее запускаем:

reprepro --verbose --basedir=/var/www/debian/heat --ask-passphrase  includedeb precise *.deb
  • --ask-passphrase - если ключ с пассфразой то прашивать ее, без этого ключа фейлится
  • --basedir - где будет репозиторий
  • precise - это имя дистрибутива для которого этот репозиторий
  • *.dev <-- очевидно.


Подключение репозитория

Ключ:

wget -O - http://www.domain.com/repos/apt/conf/<whatever>.gpg.key|apt-key add -

Creating a sources.list.d file

deb http://www.domain.com/repos/apt/debian <osrelease> main


Или то же самое паппетом

  apt::source { 'heat':
    location          => 'http://127.0.0.1/debian/heat/',
    release           => 'precise',
    repos             => 'main',
    include_src       => false,
  }

  apt::key { 'heat':
    key        => 'D50582E6',
    key_source => 'http://172.18.196.75/debian/heat/pubilc_key',
  }
  • Не забыть apt-get update