J'ai un grand projet où nous avons les fichiers suivants:
Ce produit sera installé sur le matériel de l'appliance que mon employeur a déjà sélectionné, en utilisant Ubuntu Linux (Lucid) comme O.S. cible, dans le but de distribuer l'archive sous forme de package Debian pour faciliter l'installation et les mises à niveau. De plus, nous avons un certain nombre de modèles ERB que nous devons "compléter" avec les valeurs appropriées sur une base par client, donc l'utilisation de la postinst le script sera particulièrement utile pour nos besoins.
En remarque, les paquets Debian seront stockés sur un référentiel de serveur que nous gérons en interne.
A ce stade, j'ai utilisé dh_make pour créer le répertoire debian et les fichiers associés (par exemple, règles, contrôle, etc.), mais le fichier de règles qui est généré semble exagéré pour mes besoins.
Sur la base de cette description, tout ce dont j'ai vraiment besoin, c'est de copier les fichiers d'un répertoire source (ou d'une archive) dans les répertoires cibles indiqués ci-dessous.:
J'ai lu le manuel de politique Debian et plusieurs procédures qui indiquent que vous ne devrait pas modifier le fichier de règles à utiliser mkdir pour créer des répertoires et il y a généralement un dh_ application (par exemple, dh_installdirs, et.al.) qui peut répondre à vos besoins pour presque toutes les fins d'installation. Les pages de manuel de ces dh_ les applications liées sont au mieux superficielles, et je suis un type "d'exemple".
Cela dit, je suis un peu perdu sur la meilleure approche pour obtenir mon règles pour installer mes différents fichiers binaires précompilés et Ruby/Rails aux emplacements souhaités.
Voici mon initiale règles fichier. C'est à peu près un fichier de règles standard standard créé par dh_make. Je pense que je devrais commenter toutes les sections à l'exception du installer puis recherchez la ou les commandes appropriées pour créer des répertoires, copier des fichiers, etc. dans cette section.
Tous les conseils ou suggestions sont grandement appréciés.
#!/usr/bin/make -f package = testapp CC = gcc CFLAGS = -g -Mur Ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 Endif # export DH_VERBOSE = 1 clean: dh_testdir dh_clean rm -f build install: build dh_clean dh_installdirs echo "Placer le script d'installation ici" cp $ (CURDIR) /testapp-2.0.tar.gz $ (CURDIR) /debian/$(package)/opt/testapp-2.0 echo "Dossiers de copie terminés" build: touch build build indépendant des binaires: installer # Il n'y a aucun fichier indépendant de l'architecture à télécharger # généré par ce package. S'il y en avait, ils seraient # Fabriqués ici. Binary-Arch: installe Dh_testdir -a Dh_testroot -a dh_installdocs -a dh_installchangelogs -a dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a binaire: Arch binaire indépendant binaire . PHONY: checkroot propre binaire-Arch binaire-indépendant binaire
Bien que vous ayez déjà votre propre réponse, je soulignerai deux ou trois choses.
Vous semblez faire cela d'une manière très compliquée. Si vous avez simplement besoin de copier des fichiers dans certains répertoires, écrivez un debian/mypackagename.install
au format suivant:
path/to/file/relative/to/source/root path/to/install/relative/to/system/root
(ne pas ajouter de préfixe /
avant /usr
, ou /opt
, ou quel que soit votre répertoire cible. Lis man dh_install
pour plus d'informations)
Alors votre debian/rules
peut être:
#!/usr/bin/make -f
%:
dh $@
Si vous avez une sorte de makefile, etc. dans votre racine source, ajoutez-la au fichier rules
ci-dessus:
override_dh_auto_build:
override_dh_auto_install:
N'oubliez pas de mettre 7
dans debian/compat
.
De plus, vous ne devez pas installer de fichiers dans /opt/
ou /usr/local/
, etc. Ceux-ci sont destinés aux fichiers non installés par les paquets Debian. Debian recommande l'installation dans /usr/share/yourcompany/
. Comme juzzlin le souligne ci-dessous, le Centre logiciel Ubuntu peut avoir des exigences différentes.
Plus précisément, votre mypackage.install
le fichier devrait ressembler à ceci:
src/bin/* usr/bin
src/etc/* etc/