Οδηγός συσκευασίας του Ubuntu

Απόδειξη με έγγραφα

Συσκευασία με Debhelper


[Σπουδαίος]

Απαιτήσεις: Οι απαιτήσεις από το τμήμα που ονομάζεται "Συσκευασία από το μηδέν" συν debhelper και dh-make

Ως συσκευαστής, σπάνια θα δημιουργείτε πακέτα από το μηδέν, όπως έχουμε κάνει στην προηγούμενη ενότητα. Όπως μπορείτε να φανταστείτε, πολλές από τις εργασίες και οι πληροφορίες στο αρχείο κανόνων , για παράδειγμα, είναι κοινές στα πακέτα. Για να κάνετε τη συσκευασία ευκολότερη και αποτελεσματικότερη, μπορείτε να χρησιμοποιήσετε το debhelper για να βοηθήσετε με αυτές τις εργασίες. Το Debhelper είναι ένα σύνολο σεναρίων Perl (με πρόθεμα dh_ ) που αυτοματοποιούν τη διαδικασία δημιουργίας πακέτων. Με αυτά τα scripts, η δημιουργία ενός πακέτου του Debian γίνεται αρκετά απλή.

Σε αυτό το παράδειγμα, θα χτίσουμε ξανά το πακέτο GNU Hello, αλλά αυτή τη φορά θα συγκρίνουμε την εργασία μας με το πακέτο hello-debhelper του Ubuntu. Και πάλι, δημιουργήστε έναν κατάλογο στον οποίο θα εργάζεστε:

mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http: //ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

Στη συνέχεια, αποκτήστε το πακέτο πηγής Ubuntu:

apt-get πηγή hello-debhelper cd ..

Όπως και το προηγούμενο παράδειγμα, το πρώτο πράγμα που πρέπει να κάνουμε είναι να αποσυσκευάσουμε το αρχικό (upstream) tarball.

tar -xzvf hello-2.1.1.tar.gz

Αντί να αντιγράψουμε το upstream tarball στο hello_2.1.1.orig.tar.gz όπως κάναμε στο προηγούμενο παράδειγμα, θα αφήσουμε το dh_make να κάνει το έργο για εμάς. Το μόνο που πρέπει να κάνετε είναι να μετονομάσετε τον φάκελο προέλευσης έτσι ώστε να έχει τη μορφή - όπου το πακέτο είναι πεζά. Σε αυτή την περίπτωση, το tarball παράγει έναν σωστά κατονομαζόμενο κατάλογο πηγής ώστε να μπορέσουμε να το μετακινήσουμε σε αυτόν:

cd hello-2.1.1

Για να δημιουργήσουμε την αρχική "debianization" της πηγής θα χρησιμοποιήσουμε το dh_make .

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

Το dh_make θα σας ρωτήσει στη συνέχεια μια σειρά ερωτήσεων:

Τύπος πακέτου: ενιαία δυαδική, πολλαπλή δυαδική, βιβλιοθήκη, μονάδα πυρήνα ή cdbs; [s / m / l / k / b] s
Όνομα Συνεργάτη: Captain Packager Διεύθυνση ηλεκτρονικού ταχυδρομείου: packager@coolness.com Ημερομηνία: Thu, 6 Απρ 2006 10:07:19 -0700 Όνομα πακέτου: hello Έκδοση: 2.1.1 Άδεια: κενό Τύπος Συσκευασίας: Απλή Hit to επιβεβαιώστε: Εισάγετε


[Προσοχή]

Εκτελέστε το dh_make μόνο μία φορά. Αν το εκτελέσετε πάλι αφού το κάνετε την πρώτη φορά, δεν θα λειτουργήσει σωστά. Αν θέλετε να την αλλάξετε ή να κάνετε κάποιο λάθος, αφαιρέστε τον κατάλογο προέλευσης και ξεκινήστε ξανά την προηγούμενη tarball. Στη συνέχεια, μπορείτε να μεταφέρετε στον κατάλογο προέλευσης και να προσπαθήσετε ξανά.

Το τρέξιμο dh_make -e κάνει δύο πράγματα:

Το πρόγραμμα Hello δεν είναι πολύ περίπλοκο και όπως έχουμε δει στην ενότητα "Packaging From Scratch", η συσκευασία δεν απαιτεί πολύ περισσότερα από τα βασικά αρχεία. Επομένως, ας αφαιρέσουμε τα αρχεία .ex :

cd debian rm * .ex * .EX

Για το γειά σου , δεν θα το κάνεις

* Άδεια

* Δείκτης οδηγού συσκευασίας του Ubuntu

χρειάζονται README.Debian (αρχείο README για συγκεκριμένα θέματα του Debian, όχι το README του προγράμματος), dirs (χρησιμοποιείται από dh_installdirs για να δημιουργηθούν οι απαραίτητοι κατάλογοι), docs (που χρησιμοποιούνται από dh_installdocs για να εγκαταστήσετε την τεκμηρίωση του προγράμματος) ή πληροφορίες (που χρησιμοποιούνται από το dh_installinfo για να εγκαταστήσετε τις πληροφορίες αρχείο) στον κατάλογο debian . Για περισσότερες πληροφορίες σχετικά με αυτά τα αρχεία, ανατρέξτε στο τμήμα που ονομάζεται αρχεία παράδειγμα dh_make.

Σε αυτό το σημείο, θα πρέπει να έχετε μόνο αρχεία changelog , compat , control , copyright και rules στον κατάλογο debian . Από το τμήμα που ονομάζεται "Συσκευασία από το μηδέν", το μόνο αρχείο που είναι νέο είναι compat , το οποίο είναι ένα αρχείο που περιέχει την έκδοση debhelper (στην περίπτωση αυτή 4) που χρησιμοποιείται.

Θα χρειαστεί να προσαρμόσετε ελαφρώς τον changelog σε αυτή την περίπτωση για να δείξετε ότι το πακέτο αυτό ονομάζεται hello-debhelper και όχι μόνο γεια :

hello-debhelper (2.1.1-1) dapper. επείγουσα ανάγκη = χαμηλή * Αρχική έκδοση - Captain Packager Thu, 6 Απρ 2006 10:07:19 -0700

Χρησιμοποιώντας το debhelper , τα μόνα πράγματα που πρέπει να αλλάξουμε στον έλεγχο είναι το όνομα (αντικαθιστώντας hello για hello-debhelper ) και προσθέτοντας debhelper (> = 4.0.0) στο πεδίο Build-Depends για το πακέτο προέλευσης. Το πακέτο Ubuntu για το hello-debhelper μοιάζει με:

Μπορούμε να αντιγράψουμε το αρχείο πνευματικών δικαιωμάτων και τα scripts postinst και prerm από το πακέτο Ubuntu hello-debhelper , καθώς δεν έχουν αλλάξει από την ενότητα που ονομάζεται "Packaging From Scratch". Θα αντιγράψουμε επίσης το αρχείο κανόνων ώστε να το ελέγξουμε.

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright. cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst. cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm. cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules.

Το τελευταίο αρχείο που πρέπει να δούμε είναι κανόνες , όπου μπορεί να δει κανείς τη δύναμη των scripts debhelper . Η έκδοση των κανόνων του debhelper είναι κάπως μικρότερη (54 γραμμές σε αντίθεση με 72 γραμμές στην έκδοση από την ενότητα που ονομάζεται "κανόνες").

Η έκδοση debhelper μοιάζει με:

#! / usr / bin / make -f πακέτο = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS)) CFLAGS + = -O2 endif #export DH_VERBOSE = : dh_testdir dh_clean rm -f κατασκευή - $ (MAKE) -i distclean install: δημιουργία dh_clean dh_installdirs $ (MAKE) προθέμα = $ (CURDIR) / debian / $ (package) / usr \ mandir = $ (πακέτο) / usr / share / man \ infodir = $ (CURDIR) / debian / $ (πακέτο) / usr / share / info \ install build: ./configure --prefix = / usr $ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Δεν υπάρχουν αρχεία ανεξάρτητα από την αρχιτεκτονική που θα φορτωθούν # δημιουργήθηκαν από αυτό το πακέτο. Αν υπήρχαν κάποια θα γινόταν εδώ. binary-arch: εγκαταστήστε dh_testdir -a dh_testroot -a dh_installdocs -a ΝΕΑ dh_installchangelogs -a ΑλλαγήLog dh_strip -a dh_compress -a dh_fixperms -α dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -μια δυαδική: binary-indep δυαδική- arch .PHONY: δυαδικό δυαδικό-τόξο δυαδικό-indep καθαρό checkroot

Παρατηρήστε ότι οι εργασίες όπως η δοκιμή αν είστε στο σωστό κατάλογο ( dh_testdir ), φροντίζοντας να δημιουργείτε το πακέτο με δικαιώματα root ( dh_testroot ), να εγκαταστήσετε τεκμηρίωση ( dh_installdocs και dh_installchangelogs ) και να καθαρίζετε μετά την κατασκευή ( dh_clean ) . Πολλά πακέτα πολύ πιο περίπλοκα από ό, τι γεια έχουν κανόνες αρχεία όχι μεγαλύτερο, επειδή scripts debhelper χειρίζονται τα περισσότερα από τα καθήκοντα. Για μια πλήρη λίστα των scripts debhelper , ανατρέξτε στην ενότητα με τίτλο "Λίστα σεναρίων debhelper ". Είναι επίσης καλά τεκμηριωμένες στις αντίστοιχες σελίδες τους. Είναι μια χρήσιμη άσκηση για να διαβάσετε τη σελίδα man (είναι καλά γραμμένη και όχι χρονοβόρα) για κάθε βοηθητικό σενάριο που χρησιμοποιείται στο παραπάνω αρχείο κανόνων .