openSUSE:Build Service Debian builds

Μετάβαση σε: πλοήγηση, αναζήτηση

Κατασκευές 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
το Build Service δε θα δημιουργήσει ένα αποθετήριο πηγαίου κώδικα για τις βασιζόμενες σε .deb διανομές, αλλά μόνο τα .deb θα δημιουργηθούν

Συνεπώς, είναι σημαντικό να το έχετε υπόψη γιατί ένα 'κανονικό' αποθετήριο για 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')

Εγκαταστήστε τα με:

# zypper install deb binutils


Ελάχιστο σύνολο αρχείων που απαιτούνται για τη δημιουργία .deb

Για να δημιουργήσετε ένα πακέτο .deb με επιτυχία, πρέπει να φτιάξετε τουλάχιστον αυτά τα αρχεία:

  1. packageName.dsc
  2. debian.changelog
  3. debian.control
  4. 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

Εδώ εξηγώ περιληπτικά για να καταλάβετε τι σημαίνουν:

  1. Format : είναι η έκδοση της μορφής του πακέτου .deb. Βάλτε 1.0
  2. Source : το όνομα του πηγαίου πακέτου χωρίς το .tar.gz
  3. Version : αποτελείται από την έκδοση του πηγαίου και την αναθεωρημένη έκδοση του πακέτου: εδώ το 5.6 είναι η έκδοση του πηγαίου κώδικα, ενώ το 3 (μετά την '-') είναι η αναθεωρημένη έκδοση του πακέτου debian. Κάθε φορά που αλλάζετε κάποιο από τα απαραίτητα αρχεία για τη δημιουργία ενός .deb θα πρέπει να το αυξάνετε
  4. Binary : είναι το όνομα του δυαδικού πακέτου όπως φαίνεται από το διαχειριστή apt (πχ. Για να το εγκαταστήσετε γράφετε apt-get install τοΌνομαΠουΓραφετεΣτοΠεδίοBinary)
  5. Maintainer : είναι το όνομα του συντηρητή του πηγαίου (όχι το όνομά σας, ή του πακέτου)
  6. Architecture : η λίστα για τις αρχιτεκτονικές που θέλετε να το μεταγλωττίσετε
  7. Build-Depends : η απαραίτητη βιβλιοθήκη για τη μεταγλώττιση. Πρέπει να ορίσετε 'debhelper (>= 4.1.16)' γιατί περιλαμβάνει όλα τα βοηθητικά σενάρια που χρησιμοποιούνται από το σύστημα για μεταγλώττιση
  8. 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 αρχεία:

  1. packageName.dsc
  2. debian.changelog
  3. debian.control
  4. debian.rules
  5. 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 ανακατεύθυνσης για αποθετήρια πακέτων (Γιατί; Δε μας έχουν πει ακόμα. Απλά λένε ότι είναι ανασφαλές)

Αλλά μπορείτε να λύσετε αυτό το πρόβλημα με δυο τρόπους:

  1. αν έχετε έναν εξυπηρετητή, κάντε mirror το αποθετήριο εκεί και στείλτε τους χρήστες σε εκείνο
  2. ψάξτε στο 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})".