Reprepro ne permet pas d’avoir plusieurs versions d’un même paquet dans son dépôt. Pour contourner cette limitation, je suis donc passé à Freight.

Freight :

  • permet d’ajouter des .deb directement sans fichier .changes
  • signe à la volée les paquets
  • autorise plusieurs versions d’un même paquet
  • permet d’avoir plusieurs branches
  • est très simple à installer et à maintenir
  • est très léger et n’a pas besoin de base SQL
  • L’installation est ultra simple :

    echo "deb http://packages.rcrowley.org $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/rcrowley.list
    wget -O /etc/apt/trusted.gpg.d/rcrowley.gpg http://packages.rcrowley.org/keyring.gpg
    apt-get update
    apt-get -y install freight

    On génère ensuite une clé GPG :

    gpg --gen-key
    gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.

    Please select what kind of key you want:
       (1) RSA and RSA (default)
       (2) DSA and Elgamal
       (3) DSA (sign only)
       (4) RSA (sign only)
    Your selection? 1
    RSA keys may be between 1024 and 4096 bits long.
    What keysize do you want? (2048) 2048
    Requested keysize is 2048 bits
    Please specify how long the key should be valid.
             0 = key does not expire
          <n>  = key expires in n days
          <n>w = key expires in n weeks
          <n>m = key expires in n months
          <n>y = key expires in n years
    Key is valid for? (0) 0
    Key does not expire at all
    Is this correct? (y/N) y

    You need a user ID to identify your key; the software constructs the user ID
    from the Real Name, Comment and Email Address in this form:
        "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

    Real name: Internal Repository
    Email address: repository@exemple.com
    Comment:
    You selected this USER-ID:
        "Internal Repository <repository@exemple.com>"

    Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
    You need a Passphrase to protect your secret key.

    On peut entrer une passphrase ou pas.

    Ensuite, on initialise le dépôt (ici je crée 2 branches) :

    mkdir /var/www/freight
    cd /var/www/freight
    freight-init --gpg=repo@exemple.com --libdir=/var/www/freight/lib --cachedir=/var/www/freight/cache --archs="i386 amd64 all" --origin="My Internal Repository" --label="My Internal Reposiroty" --suite="wheezy-php53 wheezy-php54"

    Puis pour ajouter des paquets, la commande est la suivante :

    freight add php5-cli_5.3.26_amd64.deb php5-cli_5.3.27_amd64.deb apt/wheezy-php53
    freight cache apt/wheezy-php53

    Voilà, il ne reste plus qu’à créer un Vhost qui point vers /var/www/freight/cache

    Alias /debian   /space/www/freight/cache
    <Directory "/space/www/freight/cache">
          Options Indexes FollowSymLinks MultiViews
          AllowOverride Options
          Order allow,deny
          allow from all
    </Directory>

    Les lignes à ajouter dans le fichier /etc/apt/sources.list des machines clientes seront de la forme suivante :

    deb http://exemple.com/debian wheezy-php54 main
    deb http://exemple.com/debian wheezy-php53 main

    Pour ajouter la clé publique sur les machines clientes :

    wget -O /etc/apt/trusted.gpg.d/exemple.gpg http://exemple.com/debian/keyring.gpg

    Et voilà :

    # apt-cache policy php5-cli
    php5-cli:
      Installed: (none)
      Candidate: 5.5.9+dfsg-1
      Version table:
         5.5.9+dfsg-1 0
            500 http://ftp.fr.debian.org/debian/ unstable/main amd64 Packages
         5.3.27-1 0
            500 http://exemple.com/debian/ wheezy-php53/main amd64 Packages
         5.3.26-1 0
            500 http://exemple.com/debian/ wheezy-php53/main amd64 Packages

    Si la clé a une passphrase et qu’on ne souhaite pas la taper à chaque ajout de paquet, on peut créer un fichier contenant la passphrase, et ajouter l’option suivante dans le fichier de configuration de Freight :

    GPG_PASSPHRASE_FILE="/root/.passphrase"

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *