J'ai besoin de mon fichier Debian rules pour simplement copier des fichiers vers sa cible.
j'ai un grand projet où nous avons les fichiers suivants:
- quelques binaires pré-compilés par des tiers
- nos propres binaires maison
- , Une collection de scripts Ruby
- Un nombre considérable de Ruby on Rails projet
ce produit sera installé sur le matériel d'appareil que mon employeur a déjà sélectionné, en utilisant Ubuntu Linux (Lucid) comme cible O. S., avec notre objectif de distribuer L'archive sous forme de paquet Debian pour faciliter l'installation et les mises à jour. En outre, nous avons un certain nombre de modèles ERB que nous devons "remplir" avec des valeurs appropriées sur une base par client, de sorte que l'utilisation du postinst script sera particulièrement pratique à nos fins.
en parallèle, les paquets Debian seront stockés dans un dépôt serveur que nous gérons en interne.
à ce étape j'ai utilisé dh_make pour créer le répertoire debian et les fichiers associés (par exemple, les règles, le contrôle, etc.), mais les règles de fichier qui est généré semble exagéré pour mes fins.
basé sur cette description, tout ce dont j'ai vraiment besoin du fichier "rules" est simplement de copier des fichiers à partir d'un répertoire source (ou dans une archive) vers 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/licence
- ...Et ainsi de suite.
j'ai lu le manuel de la Politique Debian et plusieurs How-To qui indiquent que vous ne devez pas modifier le fichier de règles pour utiliser mkdir pour créer des répertoires et il y a généralement une application dh_ (par exemple dh_installdirs, et.al.) qui peut convenir vos besoins pour presque n'importe quelle installation. Les pages de manuel de ces applications dh_ sont, au mieux, superficielles, et je suis du genre "exemple".
cela dit, je suis un peu perdu sur ce que la meilleure approche est de faire mon règles fichier pour installer mes différentes des binaires pré-compilés et Ruby/Rails de fichiers texte à l'endroit désiré.
Voici mon fichier initial rules . C'est à peu près un fichier standard de règles boilerplate que dh_make crée. Ma pensée est que je devrais commenter toutes les sections sauf pour le installer et puis trouver la commande appropriée(s) pour faire des répertoires, copier des fichiers, etc. au sein de cette section.
tous conseils ou suggestions sont grandement appréciés.
#!/usr/bin/make -f package = testapp CC = gcc CFLAGS = -g -Wall 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 "Place the Install Script here" cp $(CURDIR)/testapp-2.0.tar.gz $(CURDIR)/debian/$(package)/opt/testapp-2.0 echo "Finished copying folders" build: touch build binary-indep: install # There are no architecture-independent files to be uploaded # generated by this package. If there were any they would be # made here. binary-arch: install 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 binary: binary-indep binary-arch .PHONY: binary binary-arch binary-indep clean checkroot
2 réponses
bien que vous ayez déjà votre propre réponse, je vais vous faire remarquer 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
avec le format suivant:
path/to/file/relative/to/source/root path/to/install/relative/to/system/root
(ne pas préparer /
avant /usr
, ou /opt
, ou quelque soit votre répertoire cible. Lire man dh_install
pour plus d'information)
puis votre debian/rules
peut être:
#!/usr/bin/make -f
%:
dh $@
si vous avez une sorte de makefile, etc dans votre racine source, puis ajoutez ceci au fichier rules
ci-dessus:
override_dh_auto_build:
override_dh_auto_install:
n'oubliez pas de mettre 7
dans debian/compat
.
aussi, vous ne devriez pas installer de fichiers dans /opt/
ou /usr/local/
, etc. Ceux-ci sont destinés aux fichiers et non installés par les paquets Debian. Debian recommande l'installation dans /usr/share/yourcompany/
. Comme juzzlin souligne ci-dessous, le centre de logiciel Ubuntu peut avoir des exigences différentes.
plus précisément, votre fichier mypackage.install
devrait ressembler à ceci:
src/bin/* usr/bin
src/etc/* etc/
vous pouvez installer cdbs et modifier le fichier de règles comme ceci
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
binary-install/package_name::
mkdir debian/$(cdbs_curpkg)/destination_path
cp path_of_your_files debian/$(cdbs_curpkg)/destination_path