web-dev-qa-db-fra.com

J'ai besoin de mon fichier de règles Debian pour copier simplement les fichiers sur sa cible

J'ai un grand projet où nous avons les fichiers suivants:

  • Quelques binaires précompilés tiers
  • Nos propres fichiers binaires internes
  • Une collection de scripts Ruby
  • Un important projet Ruby on Rails

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.:

  • / opt/company_product/3rd_party_binaries/bin
  • / opt/company_product/3rd_party_binaries/etc
  • / opt/company_product/in_hourse_binaries/bin
  • / opt/company_product/in_hourse_binaries/etc
  • / opt/company_product/Ruby
  • / opt/company_product/Rails_project
  • / opt/company_product/etc
  • / opt/company_product/shared/logs
  • / opt/company_product/shared/tmp
  • / opt/company_product/shared/license
  • ...Etc.

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 
33
Chip Castle

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/
58
Umang