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
29
demandé sur tripleee 2010-07-09 19:52:41

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/
56
répondu Umang 2017-05-23 12:09:32

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
-1
répondu ZIADI Mohamed ali 2013-12-26 16:03:12