Académique Documents
Professionnel Documents
Culture Documents
Debian
Repository, Packages and Live USB Debian Key
Version : 1.2
dépots et paquets.odt 2
Dépôts, Paquets et Clé Live USB Debian v. 1.2
dépots et paquets.odt 3
Dépôts, Paquets et Clé Live USB Debian v. 1.2
1 Objet du document
Fournir un guide de création de paquet Debian, de gestion de dépôts Debian et de génération de clé
Live USB Debian
dépots et paquets.odt 4
Dépôts, Paquets et Clé Live USB Debian v. 1.2
2 Source documentaire
2.1 Clé GPG
2.2 Paquets
• https://www.debian.org/doc/manuals/maint-guide/
• http://blog.jonliv.es/blog/2011/04/26/creating-your-own-signed-apt-repository-and-debian-
packages/
2.3 Dépôt
• https://wiki.debian.org/DebianRepository/SetupWithReprepro
• https://blog.heckel.xyz/2015/10/18/how-to-create-debian-package-and-debian-repository/
• http://arpinux.developpez.com/construire-un-live-debian/
• https://openclassrooms.com/forum/sujet/construire-un-live-debian-nomme-dflinux
2.5 Disque dur en mémoire ram (pour génération clé Live USB Debian)
• http://linuxmao.org/tiki-index.php?page=Tuto%20Utilisez%20la%20RAM%20comme
%20disque%20de%20travail&structure=Accueil+Tutos&redirectpage=Tuto%20Utilisez
%20la%20RAM%20comme%20disque%20de%20travail
• https://github.com/xobs/debian-installer/blob/master/doc/devel/partman-auto-recipe.txt
dépots et paquets.odt 5
Dépôts, Paquets et Clé Live USB Debian v. 1.2
Espace de travail
dépots et paquets.odt 6
Dépôts, Paquets et Clé Live USB Debian v. 1.2
list
sec rsa2048/A8620DBA3904E710
created: 2017-11-09 expires: 2037-11-05 usage: SC
trust: ultimate validity: ultimate
ssb rsa2048/751274C541762FFD
created: 2017-11-09 expires: 2019-11-09 usage: E
[ultimate] (1). Système de signalisation Vossloh-Cogifer France <signalisation@vossloh.com>
expire
Changing expiration time for the primary key.
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
sec rsa2048/A8620DBA3904E710
created: 2017-11-09 expires: never usage: SC
trust: ultimate validity: ultimate
ssb rsa2048/751274C541762FFD
created: 2017-11-09 expires: 2019-11-09 usage: E
[ultimate] (1). Système de signalisation Vossloh-Cogifer France <signalisation@vossloh.com>
save
dépots et paquets.odt 7
Dépôts, Paquets et Clé Live USB Debian v. 1.2
Saisir cette commande dans le réprtoire de partage cité plus haut (,,,,/go/src/,,,/sv/keys,gpg
Il est à noter que le mdp est « vossloh »
gpg --import public.key
gpg --import private.key -mdp vossloh
Pour changer à « sans mot de passe » saisir cette commande, pour mdp tajoter le mdp à la fin
dépots et paquets.odt 8
Dépôts, Paquets et Clé Live USB Debian v. 1.2
Attention le nom d’un paquet ne peut contenir que des caractères minuscules, numériques, souligné
‘_’, point ‘.’ et tilde ‘~’.
dépots et paquets.odt 9
Dépôts, Paquets et Clé Live USB Debian v. 1.2
Les fichiers ayant pour extension ‘.ex’ sont des exemples de paramétrage. Il faut supprimer
l’extension pour l’intégrer dans le paquet.
cd debian
mv postinst.ex postinst
gedit --new-window changelog control copyright postinst rules
4.1.1 changelog
4.1.2 control
Source: svcoordinateur
Section: supervision
Priority: optional
Maintainer: Christophe KOEHLER <christophe.koehler@vossloh.com>
Build-Depends: debhelper (>= 9)
Standards-Version: 3.9.8
Homepage: www.vossloh.com
#Vcs-Git: https://anonscm.debian.org/collab-maint/svcoordinateur.git
#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/svcoordinateur.git
Package: svcoordinateur
Architecture: any → ‘any’ quand c’est compilé, ‘all’ si ça ne dépend pas du processeur
Depends: svbdd → liste des dépendance séparé par des virgules ex. : python (>=3), svbdd
Description: Coordinateur pour la gestion des services Vossloh SV
<insert long description, indented with spaces>
4.1.3 rules
#!/usr/bin/make -f
export DH_VERBOSE = 1
%:
dh $@
override_dh_auto_install:
dh_auto_install -- prefix=/usr
override_dh_strip:
echo "No stripping for go compiler"
true;
dépots et paquets.odt 10
Dépôts, Paquets et Clé Live USB Debian v. 1.2
Pour que le paquet puisse être compilé en 32bits et en 64bits, il faut utiliser un Makefile.
Saisir la commande make dans le répertoire de ce fichier pour l’exécuter.
GO_OS=linux
GO_ARCH=386
ifeq ($(DEB_TARGET_ARCH_CPU),amd64)
GO_ARCH=amd64
endif
PROJECT=svBdd
all: $(PROJECT)
$(PROJECT): *.go
#export
target=${DEB_TARGET_ARCH_CPU} GOOS=${GO_OS} GOARCH=${GO_ARCH} go build -o
$@
install: $(PROJECT)
install -D $(PROJECT) $(DESTDIR)$(prefix)/bin/$(PROJECT)
clean:
-rm -f $(PROJECT)
go clean
distclean: clean
uninstall:
-rm -f $(DESTDIR)$(prefix)/bin/$(PROJECT)
dépots et paquets.odt 11
Dépôts, Paquets et Clé Live USB Debian v. 1.2
5 Gestion du dépôt
Configuration du dépôt :
gedit apt/debian/conf/distributions
Origin: Vossloh SV
Label: Vossloh SV
Codename: stretch
Architectures: i386 amd64
Components: main
Description: Apt repository for Vossloh SV
SignWith: 0B8B0580D9BBDFE68CE53F8EA8620DBA3904E710
verbose
basedir /home/echange/mirroirs/vossloh/apt/debian
ask-passphrase
dépots et paquets.odt 12
Dépôts, Paquets et Clé Live USB Debian v. 1.2
cat /etc/apt/sources.list.d/vossloh.list
# Version WEB
deb http://10.103.5.0:8085/apt/debian stretch main
cat /etc/nginx/conf.d/repository.conf
server {
listen 8085;
server_name packages.internal;
access_log /var/log/nginx/packages-access.log;
error_log /var/log/nginx/packages-error.log;
root /home/echange/mirroirs/vossloh/;
location / {
index index.html index.php;
}
location ~ /(.*)/conf {
deny all;
}
location ~ /(.*)/db {
deny all;
}
location ~ [^/]\.php(/|$) {
fastcgi_index index.php;
dépots et paquets.odt 13
Dépôts, Paquets et Clé Live USB Debian v. 1.2
include fcgi.conf;
fastcgi_pass unix:/var/run/php/localhost-packages.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
client_max_body_size 100M;
upload_max_filesize = 100M
post_max_size = 120M
dépots et paquets.odt 14
Dépôts, Paquets et Clé Live USB Debian v. 1.2
dépots et paquets.odt 15
Dépôts, Paquets et Clé Live USB Debian v. 1.2
6.2.1 Installation
sudo apt install apt-cacher-ng
6.2.2 Configuration
sudo nano acng.conf
Ajouter la ligne suivante pour autoriser http et https
PassThroughPattern: .*
dépots et paquets.odt 16
Dépôts, Paquets et Clé Live USB Debian v. 1.2
Pour créer la clé, copier dans le répertoire …./ ramdisk le contenu du répertoire souhaité (liveusb ou
liveusbkep ATTENTION ces fichiers sont paramétrés pour récupérer les paquets sur le serveur
127.0.0.1. Mettre à jour l’adresse en cas de génération à partir d’un autre PC.
• liveusb/auto/config supprimer la dernière ligne --apt-http-proxy http://127.0.0.1:3142/ \
• liveusb/config/common, supprimer dans la ligne
LB_APT_HTTP_PROXY="http://127.0.0.1:3142" l’adresse http
Ouvrir une terminal en tant que root rentrer dans le répertoire ramdisk et pour créer la clé exécuter
dans l’ordre les commandes
lb clean
lb config
lb build
La génération est effectuée par la commande build, ce qui crée le fichier ISO.
dépots et paquets.odt 17
Dépôts, Paquets et Clé Live USB Debian v. 1.2
--binary-images "iso-hybrid" \
--apt-indices "false" \
--apt-recommends "true" \
--memtest "none" \
--win32-loader "true" \
--source "false" \
--debootstrap-options "--include=apt-transport-https,ca-
certificates,openssl" \
--apt-http-proxy http://127.0.0.1:3142/ \
"${@}"
►config/build
apparaît seulement après lancement de la commande build
►config/debian-installer
▼config/hooks
►config/hooks/live
Répertoire contenant des scripts '***.hook.chroot' exécutés lors de l'exécution de la clé
comme système d'exploitation (clé usb live)
►config/hooks/normal
Répertoire contenant des scripts '***.hook.chroot' exécutés lors de l'installation de la clé
comme système d'exploitation de l'ordinateur cible.
En plus de ceux générés par la commande « lb config », on rajoute les scripts
personnels, ce qui font le paramétrage 9900 ( pour sudoerr…. ), 9910 ( pour
installations depuis svn, etc), 9920 spécifique KEP
9900
#!/bin/sh
set -e
# Enlève les logiciels préinstallés qui peuvent poser problèmes
apt-get -y remove wicd-daemon wicd-gtk python-wicd
apt-get -y autoremove
# Paramètres sudoers
chmod 777 /etc/sudoers
echo "">>/etc/sudoers
echo "signalisation ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers
dépots et paquets.odt 18
Dépôts, Paquets et Clé Live USB Debian v. 1.2
HOME_DIR='/home/signalisation'
# Désactivation du lancement de svCoordinateur
sudo rm ${HOME_DIR}/.xsessionrc
cd ${HOME_DIR}
mkdir -p vossloh-exe
cd vossloh-exe
svn co ${SVN_SRV}/vossloh-exe . ${SVN_OPT}
rm .svn -R
cd ${HOME_DIR}
mkdir -p ${REP_APP}/Configuration
cd ${REP_APP}/Configuration
svn co ${SVN_SRV}/${SVN_APP}_configuration . ${SVN_OPT}
rm .svn -R
cd ${HOME_DIR}
mkdir -p scripts
cd scripts
svn co ${SVN_SRV}/scripts . ${SVN_OPT}
rm .svn -R
cd /usr/local
cp ${HOME_DIR}/scripts/usr_local/* . -Rf
# copie des scripts corrigés pour Debian
cd bin/debian
cp * ..
#remplacement /usr/local/share/applications de ${HOME} par la valeur de $
{HOME_DIR}
cd ${HOME_DIR}
chown 1000:100 . -R
9920
#!/bin/bash
HOME_DIR='/home/signalisation'
mkdir -p ${HOME_DIR}/driver_kep/edsbe
cd ${HOME_DIR}/driver_kep
mount -t cifs //10.103.5.0/echangedsbe edsbe
-odomain=railway.ad,username=ckh,password=c*5Sh3rn
tar --bzip2 -xvf "edsbe/logiciels/linux 64 bits/PenMount-Debian-9_32-
64bit_driver-v4.5.7_R6.tar.bz2"
umount edsbe
rmdir edsbe
# Script d'installation
dépots et paquets.odt 19
Dépôts, Paquets et Clé Live USB Debian v. 1.2
# Script de calibrage
►config/includes
▼config/includes.binary avec des répertoires spécifiques, disponibles lors de l'installation. La
clé aura 3 systèmes d'exploitation:
• à installer sur la cible
• pour fonctionement "live"
• pour exécuter l'installation sur la cible
Tout le contenu de ... includes.binary se trouvera copié sur la clé d'installation, répertoire /cdrom.
Entre autres répertoires il y a :
►config/includes.binary/install
vss-preseed.cfg : Paramètres pour automatiser l'installation (les réponses aux questions
du debian installer (d–i ) - ça se lit – demande installation QUOI REPONSE)
►config/includes.bootstrap
►config/includes.chroot
Répertoire contenant des répertoires et fichiers copiés tel quel à la racine du système
d'exploitation généré
Exemple : le fichier 'config/includes.chroot/home/signalisation/.xsessionrc' pour définir
pour l'utilisateur signalisation le script de démarrage de session au lieu d'un classique
gestionnaire de fenêtre.
►config/includes.installer
dépots et paquets.odt 20
Dépôts, Paquets et Clé Live USB Debian v. 1.2
►config/includes.source
►config/packages
►config/packages.binary
►config/packages.chroot
Les paquets à installer manuellement par le générateur, avec la commande dpkg. Les
dépendences ne seront pas traitées, si les dépéndences ne sont pas déjà installés, le paquet
cité n'est pas installé. S'applique à librsvg2 pour application Mono.
►config/package-lists
Répertoire contenant des fichiers '*.list.chroot' qui listent les paquets et méta-paquets à
installer pour le système d’exploitation. Ces paquets sont installés avec la commande
apt install et les dépendances sont traitées (installées). On y trouve app.*, live.*,mono.*,
virtual.*, vossloh.*. Dans vossloh,* se trouvent tous les paquets du système Linux
nécessaires pour notre environnement graphique et utilitares (cifs, samba...)
►config/preseed
►config/rootfs
splash-screen.svg il faut adapter le chemin des fichiers en fonction de l'ordinateur, par exemple
inkscape:export-filename="/home/ckh/Travail/vos….
Modifier le dessin, l’exporter en format png et le sauvegarder en taille 640 x 480 pixels dans le
réprtoire ,,/config/includes,binary/isolinux/splash,png
cat mono.list.chroot
deb https://download.mono-project.com/repo/debian stretch main
Appliquer la configuration
lb config
dépots et paquets.odt 21
Dépôts, Paquets et Clé Live USB Debian v. 1.2
Nota : si on relance une configuration, il se peut qu’il soit utile de supprimer les répertoires .build et
cache.
Pour sauvegarder le tar,xz, faire d’abord une commande « clean » et seulement après zipper.
fdisk /dev/sdc
dépots et paquets.odt 22
Dépôts, Paquets et Clé Live USB Debian v. 1.2
echo "Creation de la partition 3 de type FAT32 avec pour label VOSSLOH sur la
clé USB en ${1}3"
(echo "n" ;echo "p" ;echo ;echo ;echo ;echo "t" ;echo ; echo "b" ;echo "w" )|
fdisk $1
partprobe
sleep 5
Après le script, exécuter comme indiqué les commandes des deux dernières lignes.
Pour monter la nouvelle partition, exécuter les commandes suivantes :
mkdir /tmp/vossloh
Pour visualiser le contenu de la clé dans l’environnement graphique, il faut démonter la clé par la
commande
umount /dev/sdc*
l’enlever et la remettre dans le connecteur USB. Deux partitions sont alors visibles, une VOSSLOH
et une contenant le fichier d’installation.
rm -rf .svn
Modifier install,sh.
dépots et paquets.odt 23