openSUSE:Build Service Debian builds
Περιεχόμενα
- 1 Κατασκευές Debian
- 2 Απαιτούμενα rpms στο σύστημα που θα φιλοξενήσει την κατασκευή .deb πακέτων
- 3 Ελάχιστο σύνολο αρχείων που απαιτούνται για τη δημιουργία .deb
- 4 Προσθήκη μιας διόρθωσης (patch)
- 5 Μια εναλλακτική μέθοδος δημιουργίας ενός πακέτου Debian
- 6 Διαφορετικές ρυθμίσεις για διαφορετικές εκδόσεις διανομών
- 7 Ρύθμιση του sources.list
- 8 Παραδείγματα
- 9 Συνηθισμένα προβλήματα
Κατασκευές Debian
Αυτή η σελίδα παρέχει πληροφορίες πακεταρίσματος για τις βασιζόμενες στο debian διανομές linux που υποστηρίζονται από το openSUSE Build Service, ονομαστικά:
- Debian
- Debian 5.0 (Lenny)
- Debian 6.0
- xUbuntu
- xUbuntu 6.06
- xUbuntu 8.04
- xUbuntu 9.10
- xUbuntu 10.04
- xUbuntu 10.10
- xUbuntu 11.04
Τα πακέτα Debian χωρίζονται σε 2 κατηγορίες: δυαδικά και πηγαία. Τα δυαδικά πακέτα έχουν κατάληξη .deb και περιέχουν τη μεταγλωττισμένη έκδοση της εφαρμογής που θέλετε να διανείμετε. Από την άλλη, τα πηγαία αρχεία δεν είναι ένα μόνο αρχείο (όπως ο μηχανισμός για τα πηγαία .rpm), αλλά αποτελούνται από τρία αρχεία:
- την άθικτη αρχειοθήκη
- ένα αρχείο diff
- ένα αρχείο .dsc
Συνεπώς, είναι σημαντικό να το έχετε υπόψη γιατί ένα 'κανονικό' αποθετήριο για Debian αποτελείται τουλάχιστον από δύο καταλόγους:
(η ρίζα του αποθετηρίου σας) | +-binary +-source
ενώ το Build Service θα δημιουργήσει απευθείας τον κατάλογο των δυαδικών με το όνομα της διανομής (πχ το http://download.opensuse.org/repositories/home:/EmmeG/Debian_Etch/ αντιστοιχεί στο δυαδικό κατάλογο και όχι στη ρίζα του αποθετηρίου... αυτή είναι το http://download.opensuse.org/repositories/home:/EmmeG/ ).
Επίσης, έχετε υπόψη ότι τα 3 κομμάτια για τη δημιουργία ενός πηγαίου πακέτου δε χρειάζονται για τη δημιουργία ενός .deb, αλλά από την άλλη είναι απαραίτητα όταν δημιουργείτε ένα αποθετήριο πηγαίων επιτρέποντας στους χρήστες να μεταγλωττίζουν και να πακετάρουν αυτόματα στα μηχανήματά τους μέσω του apt-get.
Το Build Service δε θα φτιάξει αποθετήρια πηγαίων, έτσι δε χρειάζεται να ξέρετε πως κατασκευάζονται και χρησιμοποιούνται.
Το build service επίσης χρησιμοποιεί λίγη μαγεία, λίγη επιπρόσθετη πληροφορία μπορεί να δοθεί στο αρχείο .dsc στη μορφή ετικετών 'debtransform'. Αυτές είναι τεκμηριωμένες σε αυτό το μήνυμα: http://lists.opensuse.org/opensuse-buildservice/2007-03/msg00067.html και ο πηγαίος κώδικας μπορεί να βρεθεί εδώ: https://forgesvn1.novell.com/svn/opensuse/trunk/buildservice/src/build/debtransform Βλέποντάς το μπορείτε να δείτε ότι δέχεται τρεις ετικέτες:
- DEBTRANSFORM-TAR
- DEBTRANSFORM-FILES-TAR
- DEBTRANSFORM-SERIES
Αυτές μπορούν να χρησιμοποιηθούν για να ορίσετε ένα .tar.gz αρχείο ως πηγαίο, το οποίο μπορεί να μοιραστεί μεταξύ RPM και debian κατασκευές, και μπορεί επίσης να του οριστεί να επαναχρησιμοποιεί τα patch για RPM στις debian κατασκευές. Μπορείτε να χρησιμοποιήσετε πολλαπλά tar.gz αρχεία για το DEBTRANSFORM-FILES-TAR ως εξής:
Debtransform-Files-Tar: debian.tar.gz debian-control-xUbuntu_6.06.tar.gz
Απαιτούμενα rpms στο σύστημα που θα φιλοξενήσει την κατασκευή .deb πακέτων
Τα ακόλουθα πακέτα χρειάζονται σε διανομές που βασίζονται στο openSUSE για την τοπική κατασκευή πακέτων με το osc (osc build ....):
- deb (for 'dpkg')
- binutils (for 'ar')
Εγκαταστήστε τα με:
Ελάχιστο σύνολο αρχείων που απαιτούνται για τη δημιουργία .deb
Για να δημιουργήσετε ένα πακέτο .deb με επιτυχία, πρέπει να φτιάξετε τουλάχιστον αυτά τα αρχεία:
- packageName.dsc
- debian.changelog
- debian.control
- debian.rules
Και φυσικά μια αρχειοθήκη (tar.gz) που περιέχει τον πηγαίο κώδικα του πακέτου για μεταγλώττιση.
packageName.dsc
Ένα μινιμαλιστικό πρότυπο για αυτό το αρχείο είναι:
Format: 1.0 Source: packageName Version: 5.6-3 Binary: packageName Maintainer: FirstName LastName <email@hostname.org> Architecture: any Build-Depends: debhelper (>= 4.1.16), nameOfPackageNeededToBuildIt Files: d57283ebb8157ae919762c58419353c8 133282 packageName_5.6.orig.tar.gz 2fecf324a32123b08cefc0f047bca5ee 63176 packageName_5.6-1.diff.tar.gz
Στο παραπάνω πρότυπο υπάρχουν μόνο τα απαραίτητα πεδία, αλλά υπάρχουν πολλά προαιρετικά. Μπορείτε να βρείτε όλη τη σχετική πληροφορία με αυτά τα πεδία στο http://www.debian.org/doc/debian-policy/ch-controlfields.html
Εδώ εξηγώ περιληπτικά για να καταλάβετε τι σημαίνουν:
- Format : είναι η έκδοση της μορφής του πακέτου .deb. Βάλτε 1.0
- Source : το όνομα του πηγαίου πακέτου χωρίς το .tar.gz
- Version : αποτελείται από την έκδοση του πηγαίου και την αναθεωρημένη έκδοση του πακέτου: εδώ το 5.6 είναι η έκδοση του πηγαίου κώδικα, ενώ το 3 (μετά την '-') είναι η αναθεωρημένη έκδοση του πακέτου debian. Κάθε φορά που αλλάζετε κάποιο από τα απαραίτητα αρχεία για τη δημιουργία ενός .deb θα πρέπει να το αυξάνετε
- Binary : είναι το όνομα του δυαδικού πακέτου όπως φαίνεται από το διαχειριστή apt (πχ. Για να το εγκαταστήσετε γράφετε apt-get install τοΌνομαΠουΓραφετεΣτοΠεδίοBinary)
- Maintainer : είναι το όνομα του συντηρητή του πηγαίου (όχι το όνομά σας, ή του πακέτου)
- Architecture : η λίστα για τις αρχιτεκτονικές που θέλετε να το μεταγλωττίσετε
- Build-Depends : η απαραίτητη βιβλιοθήκη για τη μεταγλώττιση. Πρέπει να ορίσετε 'debhelper (>= 4.1.16)' γιατί περιλαμβάνει όλα τα βοηθητικά σενάρια που χρησιμοποιούνται από το σύστημα για μεταγλώττιση
- Files: θεωρητικά πρέπει να ορίσετε το MD5SUM και το μέγεθος σε byte των .orig.tar.gz και .diff.tar.gz, αλλά πρακτικά βάλτε κάποιες τιμές, δεν είναι σημαντικό αν δεν είναι σωστές... το σημαντικό είναι ότι υπάρχουν δυο γραμμές με τρία πεδία όπως φαίνεται στο πρότυπο. (πχ. Μπορείτε να πάρετε το συγκεκριμένο πρότυπο να αντικαταστήσετε το packageName με το όνομα του .deb που θέλετε να δημιουργήσετε και όλα καλά... το Build Service θα κάνει τα υπόλοιπα)
debian.changelog
Ο μηχανισμός του Debian για τη δημιουργία ενός .deb είναι το να βάλετε στο δέντρο του πηγαίου κώδικα ένα κατάλογο με το όνομα 'debian' με ένα σωρό αρχεία απαραίτητα για την αυτοματοποίηση της διαδικασίας μεταγλώττισης και πακεταρίσματος.
Δε χρειάζεται να το κάνετε μόνοι σας, το Build Service θα φτιάξει τον κατάλογο για εσάς και θα βάλει όλα τα αρχεία που ονομάζονται debian.fileName
Αυτό είναι έγκυρο για όλες τις .deb διανομές!! Επομένως, ακόμα και για το αποθετήριο του Ubuntu πρέπει να φτιάξετε ένα αρχείο με το όνομα debian.changelog (και όχι ubuntu.changelog).
Αυτό είναι το μινιμαλιστικό πρότυπο:
packageName (5.6-3) stable; urgency=low * Initial Release -- YourName <youremail@hostname.de> Mon, 25 Dec 2007 10:50:38 +0100
Μπορεί να υποθέσετε ότι πρόκειται απλά για ένα αρχείο καταγραφής αλλαγών... αλλά η σύνταξή του είναι τόσο περιορισμένη που ακόμα κι ένα μικρό λαθάκι (ένα κενό που λείπει) μπορεί να ευθύνεται για την αποτυχία όλης της διαδικασίας δημιουργίας του πακέτου!! :-( Λοιπόν, προσοχή στη σύνταξη που ορίζεται στο http://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog
debian.control
Αυτό το αρχείο χρησιμοποιείται για να περιγράψει το πακέτο και τις εξαρτήσεις, αυτό είναι ένα μινιμαλιστικό πρότυπο:
Source: packageName Section: sectionName Priority: optional Maintainer: yourName <yourEmail@hostname.de> Build-Depends: debhelper (>= 4.1.16), nameOfPackageNeededToBuildIt Package: nameOfPackage Architecture: any Depends: ${shlibs:Depends} Description: This first line is a brief description Then, here there is the long description of the package... also here the syntax is very painful (look at the documentation of Debian Policy to avoid errors http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f- Description)
Εδώ υπάρχουν κάποιες περιττές πληροφορίες που μπορείτε να αντιγράψετε από το αρχείο .dsc: το 'Build- Depends', το 'Package' είναι το ίδιο με το 'Binary', το 'Architecture', το 'Maintainer' τυπικά είναι τα ίδια με την τελευταία γραμμή του debian.changelog
debian.rules
Αυτό είναι ένα αρχείο που μοιάζει με Makefile και περιέχει όλους τους κανόνες για εξαγωγή, μεταγλώττιση, εγκατάσταση και πακετάρισμα του πηγαίου Μπορείτε να αλλάξετε ότι θα θέλατε, αλλά είναι απλούστερο να αλλάξετε μόνο μερικές γραμμές για να το κάνετε να μεταγλωττίσει. Όλα τα υπόλοιπα μπορούν να μείνουν ανέπαφα.
#!/usr/bin/make -f # Sample debian/rules that uses debhelper. # GNU copyright 1997 to 1999 by Joey Hess. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # This is the debhelper compatibility version to use. export DH_COMPAT=4 CFLAGS = -g ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif build: build-stamp build-stamp: dh_testdir # Add here commands to compile the package. ./configure make all # --- end custom part for compiling touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp # Add here commands to clean up after the build process. make clean || true # --- end custom part for cleaning up dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package # The DESTDIR Has To Be Exactly /usr/src/packages/BUILD/debian/<nameOfPackage> make install DESTDIR=/usr/src/packages/BUILD/debian/ace # --- end custom part for installing # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install dh_testdir dh_testroot # dh_installdebconf dh_installdocs dh_installexamples dh_installmenu # dh_installlogrotate # dh_installemacsen # dh_installpam # dh_installmime # dh_installinit dh_installcron dh_installman dh_installinfo # dh_undocumented dh_installchangelogs dh_link dh_strip dh_compress dh_fixperms # dh_makeshlibs dh_installdeb # dh_perl dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install
Προσθήκη μιας διόρθωσης (patch)
Για να εφαρμόσετε μια διόρθωση στα πηγαία σας πρέπει να προσθέσετε ένα αρχείο debian.series που να περιέχει τις ονομασίες των διορθώσεων και τις παραμέτρους στο εργαλείο διορθώσεων, π.χ.
avoid_sysarg.patch -p0
Μια εναλλακτική μέθοδος δημιουργίας ενός πακέτου Debian
Από τα παραπάνω συνεπάγεται ότι για τη δημιουργία ενός πακέτου Debian, πρέπει να φτιάξετε τουλάχιστον 5 αρχεία:
- packageName.dsc
- debian.changelog
- debian.control
- debian.rules
- tarball (tar.gz)
Ωστόσο υπάρχει κι ένας εναλλακτικός τρόπος: Δημιουργήστε (ή επαναχρησιμοποιήστε) ένα πρότυπο πηγαίο πακέτο Debian χρησιμοποιώντας έτοιμα εργαλεία του Debian ή του Ubuntu! Για να αναθεωρήσουμε, ένα πρότυπο πηγαίο πακέτο Debian απαρτίζεται από τρία αρχεία:
- την άθικτη αρχειοθήκη
- ένα αρχείο (προαιρετικό)
- μια αρχειοθήκη debian (προαιρετικό)
- ένα αρχείο .dsc
Ένα τέτοιο πηγαίο πακέτο μπορεί να δημιουργηθεί σε συστήματα Debian χρησιμοποιώντας σενάρια όπως "dpkg-buildpackage -S" ή "dpkg-source -b" έτσι όπως περιγράφεται στην τεκμηρίωση του Debian.
Μια τέτοια τριάδα αρχείων μπορεί να ανέβει στο buildservice ως πηγαία αρχεία και το build service μπορεί να τα χρησιμοποιήσει για να κατασκευάσει ένα πακέτο. Η πληροφορία στα διάφορα αρχεία debian.xxx είναι ακόμα εκεί, αλλά είναι σφραγισμένη στο αρχείο diff της άθικτης αρχειοθήκης.
Συχνά τα πηγαία πακέτα Debian χρειάζεται να δημιουργηθούν για λόγους που δεν έχουν καμία σχέση με το buildservice. Αν ένα τέτοιο πακέτο υπάρχει, δεν υπάρχει λόγος να μην το χρησιμοποιήσετε.
Εναλλακτικά, το χαρακτηριστικό "service" του "add file" μπορεί να χρησιμοποιηθεί για να ορίσει τα αρχεία προς χρήση μέσω URI. Κατ' αυτόν τον τρόπο, το build service θα κατεβάσει τα τρία αρχεία από ένα υπάρχουν αποθετήριο Debian ή Ubuntu!
Αν κάποιος κοιτάξει τα πακέτα που εμφανίζονται από το http://packages.ubuntu.com/ (Αναζήτηση Πακέτων Ubuntu) θα βρει ότι στο κάτω μέρος της σελίδας εμφανίζεται ένα πηγαίο πακέτο, τα URLs των τριών αρχείων που είναι το πηγαίο πακέτο. Αυτά τα URLs μπορούν να αντιγραφούν στο πρόχειρο χρησιμοποιώντας τη λειτουργία "αντιγραφή συνδέσμου" του περιηγητή. Τα URLs μπορούν να χρησιμοποιηθούν στη συνέχεια από τις σελίδες "add file" του buildservice. (Στο πεδίο "Upload from remote URL" της σελίδας.) Κατ' αυτόν τον τρόπο μπορείτε να εξαναγκάσετε το buildservice να ανακατασκευάσει ένα από τα πακέτα ας πούμε, του αποθετηρίου "Universe" του Ubuntu, χωρίς να υπάρχει καμία πηγαία μορφή στο σύστημά σας.
Διαφορετικές ρυθμίσεις για διαφορετικές εκδόσεις διανομών
Για να χρησιμοποιήσετε διαφορετικές ρυθμίσεις για πολλαπλές εκδόσεις του Debian ή του Ubuntu, πρέπει να χρησιμοποιήσετε της εναλλακτικές μεθόδους δημιουργίας πακέτων Debian. Τα αρχεία .dsc πρέπει να ονομάζονται με παρόμοιο τρόπο στο σχήμα των εναλλακτικών αρχείων .spec για τις βασισμένες στο RPM διανομές, π.χ. projectName-repository.dsc , . Διαφορετικά αρχεία .dsc μπορούν να αναφέρονται σε διαφορετικές αρχειοθήκες αν αυτό είναι απαραίτητο.
Παράδειγμα:
- wonderproj-xUbuntu_10.10.dsc
- wonderproj-new_0.0.1-1.debian.tar.gz
- wonderproj-new_0.0.1.orig.tar.bz2
Σε αυτή την περίπτωση, το wonderproj-xUbuntu_10.10.dsc μπορεί να περιέχει αναφορές κάπως έτσι:
Format: 3.0 (quilt) Source: wonderproj-new Binary: wonderproj-new Architecture: any Version: 0.0.1-1 Maintainer: I.M.Coder <im@wonder-code.org> Standards-Version: 0.0.1 Build-Depends: cdbs, cmake, debhelper, pkg-kde-tools, kdelibs5-dev Checksums-Sha1: 0ba9af478421ce1b0ca652b0d035a49ed4f5513f 2893892 wonderproj-new_0.0.1.orig.tar.bz2 f0d12c000ac09c48439408e2978eea56f152ae1c 20710 wonderproj-new_0.0.1-1.debian.tar.gz Checksums-Sha256: 0afd23eecf11a8d387019a007064c6554dad3adaf640c28a39a12143ac8ccc19 2893892 wonderproj-new_0.0.1.orig.tar.bz2 f10e4a9ff5b629b2b73e8b6ca97f4d47b7ac4e53c33930db1e5fefc317f2c123 20710 wonderproj-new_0.0.1-1.debian.tar.gz Files: 437a8d1df895203af8b08e64717a6e30 2893892 wonderproj-new_0.0.1.orig.tar.bz2 0323ebdd4a1983de61a5e4f326194426 20710 wonderproj-new_0.0.1-1.debian.tar.gz
Χειρισμός διαφορών στις εξαρτήσεις κατασκευής
Αν χρειάζεστε να παρέχετε επιπλέον εξαρτήσεις κατασκευής για κάποιες εκδόσεις διανομών, μπορούν να δοθούν στη γραμμή Build-Depends στα αρχεία .dsc.
Αν κάποια εξάρτηση κατασκευής που υπάρχει στο debian/control (μέσα στο αρχείο .debian.tar.gz) δεν είναι εφαρμόσιμη σε κάποια έκδοση διανομής, αφαιρέστε την από το debian/control και, για τις εκδόσεις που είναι απαραίτητη, προσθέστε την στα κατάλληλα αρχεία .dsc.
Μπορεί να χρειαστεί να αφαιρέσετε τον αριθμό έκδοσης από εξαρτήσεις κατασκευής στο αρχείο debian/control, αν αυτός είναι λανθασμένος για κάποιες εκδόσεις διανομών.
Αν το αρχείο debian/control έχει τροποποιηθεί, διαθέστε το ως εξής:
- Αναδημιουργήστε το αρχείο .debian.tar.gz για να συμπεριλάβετε το τροποποιημένο αρχείο debian/control
- Τροποποιήστε τα αρχεία .dsc για να έχουν τα νέα checksums και το μέγεθος του αρχείου .debian.tar.gz. Τα νεά checksums μπορούν να ληφθούν με τη χρήση των εντολών md5sum, sha1sum και sha256sum.
Ρύθμιση του sources.list
Μετά τη δημιουργία των πακέτων .deb, θα θέλετε να προσθέσετε το αποθετήριο στο αρχείο sources.list (πιθανότατα στο /etc/apt/) για να μπορείτε να χρησιμοποιήσετε το apt-get για την εγκατάσταση των πακέτων.
Ορίστε κι ένα παράδειγμα:
deb http://download.opensuse.org/repositories/home:/robermann79:/codesounding/Ubuntu_8.10 ./
Το πρόβλημα είναι ότι το apt-get δε χειρίζεται τις HTTP ανακατευθύνσεις (302) για mirrors, και έτσι το εκλαμβάνει σαν σφάλμα.
Δεν είναι σφάλμα στο apt-get. Είναι μια απόφαση που πάρθηκε από τους προγραμματιστές του apt: θεωρούν πολύ ανασφαλή την επιλογή χρήσης της 302 ανακατεύθυνσης για αποθετήρια πακέτων (Γιατί; Δε μας έχουν πει ακόμα. Απλά λένε ότι είναι ανασφαλές)
Αλλά μπορείτε να λύσετε αυτό το πρόβλημα με δυο τρόπους:
- αν έχετε έναν εξυπηρετητή, κάντε mirror το αποθετήριο εκεί και στείλτε τους χρήστες σε εκείνο
- ψάξτε στο http://old-en.opensuse.org/Mirrors_Development_Build για έναν εξυπηρετητή που κάνει mirror το αποθετήριό σας και κατευθύνετε τους χρήστες σε αυτόν (με την ελπίδα ότι το mirror είναι μόνιμο)
Ο γρήγορος δρόμος είναι να πάρετε μια λίστα με mirror από το ίδιο το αποθετήριο:
- περιηγηθείτε στη λίστα με τα mirror:
http://download.opensuse.org/repositories/<project>://<package>/<repository>/Packages?mirrorlist
Έτσι, για παράδειγμα:
http://download.opensuse.org/repositories/home://robermann79://codesounding/Ubuntu_8.10/Packages?mirrorlist
- πάρτε ένα από τα mirror στη λίστα, για παράδειγμα:
http://widehat.opensuse.org/repositories/home:/robermann79:/codesounding/Ubuntu_8.10/Packages
έπειτα αφαιρέστε την τελευταία "/Packages" διαδρομή και προσθέστε το URL στο δικό σας /etc/apt/sources.list, ως εξής:
deb http://widehat.opensuse.org/repositories/home:/robermann79:/codesounding/Ubuntu_8.10 ./
Τώρα οι εντολές apt-get δουλεύουν όπως πρέπει.
Προσθήκη του apt-key στο σύστημα
Για σύγχρονες διανομές βασισμένες στο Debian GNU/Linux, θα χρειαστείτε επίσης να προσθέσετε το κλειδί του αποθετηρίου του έργου στη λίστα με τα κλειδιά που δέχεται το apt.
- Μπορείτε να πάρετε το ένα από το api.opensuse.org, πχ: https://api.opensuse.org/source/home:herzi/_pubkey (αντικαταστήστε το "home:herzi" με το δικό σας έργο, θα χρειαστείτε τα διαπιστευτήριά σας για το OBS)
- ή πάρτε ένα από ένα repomd αρχείο, πχ: http://download.opensuse.org/repositories/home:/herzi/xUbuntu_11.04/Release.key (αντικαταστήστε το "home:/herzi" με το δικό σας έργο και το "xUbuntu_11.04" με ένα αποθετήριο του έργου, αυτό εδώ είναι δημόσιας πρόσβασης)
Έπειτα μπορείτε να προσθέσετε το κατεβασμένο κλειδί:
sudo apt-key add <downloaded-file>
Παραδείγματα
Μπορείτε να δείτε παραδείγματα στον κατάλογο του προσωπικού μου έργου: https://build.opensuse.org/project/show?project=home%3AEmmeG
Συνηθισμένα προβλήματα
Σημείωση για το packageName
Τα ονόματα για τα RPM πακέτα δεν έχουν αυστηρή σύνταξη όπως τα αντίστοιχα για debian. Επομένως προσοχή πριν ανεβάσετε τα αρχεία σας!
- Τα ονόματα των πακέτων (πηγαίων και δυαδικών, δείτε το Package, Section 5.6.7) πρέπει να αποτελούνται μόνο από πεζά γράμματα (a-z), ψηφία (0-9), συν (+) και μείον (-), και τελείες (.). Πρέπει να είναι τουλάχιστον δύο χαρακτήρων σε μήκος και να ξεκινούν με ένα αλφαριθμητικό χαρακτήρα.
Περισσότερες πληροφορίες στο http://www.debian.org/doc/debian-policy/ch-controlfields.html
Σημείωση για το tar.bz2
Τα Debian 4.0 και xUbuntu 8.04 και παλιότερα επέτρεπαν τη χρήση αρχείων .tar.bz2. Αυτά μπορούσαν να χρησιμοποιηθούν μεταξύ κατασκευών deb και rpm. Τα Debian 5.0 και xUbuntu 8.10 επιτρέπουν μόνο αρχεία .tar.gz σύμφωνα με την πολιτική του Debian. Για να μοιράσετε τον πηγαίο κώδικα σε κατασκευές rpm και deb για όλες τις πλατφόρμες στο OBS, προτείνεται η χρήση αρχείων .tar.gz.
Όταν το upstream αρχείο tar είναι της μορφής tar.bz2 (ή οποιασδήποτε άλλης), το recompress service (υπηρεσία επανασυμπίεσης) θα σας φανεί χρήσιμη για την επανασυμπίεση του πακέτου στη μορφή tar.gz.
Ένα χρήσιμο παράδειγμα:
<services> <service name="download_url"> <param name="host">master.dl.sourceforge.net</param> <param name="protocol">http</param> <param name="path">/project/someproject/somefolder/someproject.data.tar</param> </service> <service name="recompress"> <param name="file">_service:download_url:someproject.data.tar</param> <param name="compression">gz</param> </service> </services>
Σημειώστε το πρόθεμα _service:download_url:, απαιτείται, και δε θα δουλέψει χωρίς αυτό αν επανασυμπιέσετε ένα αρχείο που έχει κατέβει από κάποιο άλλο service.
Στη δικτυακή διεπαφή χρήστη (Web UI), αυτό σημαίνει ότι πρέπει να επεξεργαστείτε τις παραμέτρους του service αφού δημιουργήσετε μια καταχώρηση για αυτό (δε θα αρχικοποιηθεί σωστά)
Σημείωση για τα σενάρια "postinst" (μετά την εγκατάσταση)
Αν χρειάζεται να τρέξετε κάποιο σενάριο μετά την εγκατάσταση, θα μπορούσατε:
- να ανεβάσετε ένα αρχείο με την ονομασία debian.postinst (δείτε το πρόθεμα "debian"), όπως και με το debian.rules
- να βάλετε το αρχείο σας package.postinst (όπου "package" είναι το όνομα του πακέτου σας) μέσα στο debian.tar.gz
Δείτε σαν παράδειγμα το πακέτο https://build.opensuse.org/package/show?package=openvas-scanner&project=security%3AOpenVAS%3ASTABLE%3Av4
Στήσιμο Patch
Τα Debian 4.0 και xUbuntu < 8.x απαιτούν το αρχείο προς διόρθωση και το νέο να έχει το ίδιο όνομα για -p0 patche (Σφάλμα #492297 ).
Το xUbuntu 6.06 επιπλέον δεν επιτρέπει περιεχόμενο μετά την γραμμή @@..@@. Πχ
@@ -37,7 +37,7 @@ openvas-libraries.tmpl: openvas-librarie
θα αποτύχει ενώ
@@ -37,7 +37,7 @@
θα δουλέψει μια χαρά. Απλά αφαιρώντας το περιεχόμενο μετά τα δεύτερα @@ λύνει το πρόβλημα.
Σύνδεση των πακέτων -dev με το κύριο που αντιστοιχούν
Το Ubuntu 6.06 δεν καταλαβαίνει το "(= ${binary:Version})" στο αρχείο .control. Εκεί πρέπει να χρησιμοποιηθεί το "(= ${Source-Version})".