Φτιάξτε πακέτα με το openSUSE Build Service

dimitris | Κυρ, 12/16/2012 - 10:09 | 29'

Αντί να εγκαθιστάς 10 διανομές για να φτιάξεις πακέτα του αγαπημένου σου λογισμικού, κάντο με μερικά κλικ στο openSUSE Build Service. Δες πως.

Του Ευσταθίου Αγραπίδη *

Η ανάγκη μεταγλώττισης πηγαίου κώδικα, ώστε να εκτελείται απρόσκοπτα σε ποικίλες πλατφόρμες Linux, αποτέλεσε και εξακολουθεί να αποτελεί μια σημαντική πρόκληση για τους σχεδιαστές και προγραμματιστές λογισμικού. Συνήθως, αυτό σήμαινε ότι για κάθε διανομή στην οποία ήθελε να υποστηρίξει κάποιος προγραμματιστής το λογισμικό του, έπρεπε να την έχει εγκατεστημένη (σε διάφορες εκδόσεις και εκδοχές) και να κατασκευάζει πακέτα για την κάθε πλατφόρμα – μια πολύ κοπιαστική εργασία. Και ενώ υπάρχουν κάποια πρότυπα όπως το Linux Standards Base (Βάση Προτύπων Linux) που θα έπρεπε να μετριάσουν κάπως την κατάσταση όλο και κάποιο πρόβλημα θα εμφανιζόταν (πχ περίεργα ονόματα εξαρτήσεων κλπ).

Μια πρώτη λύση δόθηκε με τα πακέτα deb και rpm. Ωστόσο, καθώς οι διανομές GNU/Linux άρχισαν να αυξάνονται και να διαφοροποιούνται η μία από την άλλη, το πρόβλημα επανήλθε. Το επόμενο βήμα ήταν η δημιουργία πλατφορμών ανοιχτής συνεργασίας. Σε αυτή τη λύση οι ίδιες οι κοινότητες αναλαμβάνουν συνεργατικά την υποστήριξη πακέτων για τη διανομή τους, μειώνοντας το φόρτο εργασίας από τους αρχικούς προγραμματιστές του λογισμικού. Πολύ γνωστές είναι το Fedora Koji, το Launchpad, το Mandriva Build System, το Project Builder και το [url=http://build.opensuse.org ]openSUSE Build Service[/url] (OBS) που θα δούμε εμείς.

Μερικές δυνατότητες του OBS

Σε αυτόν τον σύντομο οδηγό θα δούμε πως μπορούμε να χρησιμοποιήσουμε το OBS στο build.opensuse.org για να κατασκευάσουμε πακέτα deb για το Ubuntu.

Τι; Βγάζει deb το OBS; Ναι, πολύ καλά διαβάσατε. Για την ακρίβεια υποστηρίζει πλήθος διανομών rpm και deb και μάλιστα διαφορετικές εκδόσεις τις ίδιας διανομής. Αυτή τη στιγμή χρησιμοποιείται από τους σχεδιαστές του openSUSE για την κατασκευή ολόκληρης της διανομής, καθώς επίσης και για πολλές άλλες. Κατασκευάζει περίπου 115,000 πακέτα από 25,000 χρήστες που δουλεύουν σε 15,000 διαφορετικά έργα λογισμικού. Εμείς, μπορούμε να το χρησιμοποιήσουμε για να κατασκευάσουμε πακέτα για Mandriva, Ubuntu, Fedora, Debian, CentOS, openSUSE κ.α. Θα δούμε τη διαδικασία και από το διαδικτυακό περιβάλλον (WebUI) που μας προσφέρει, το οποίο είναι χρηστικότατο, αλλά και από το εργαλείο osc για τη γραμμή εντολών, το οποίο μας δίνει κάποιες επιπλέον δυνατότητες. Ωραία, και τι θα πακετάρουμε; Μα φυσικά το πασίγνωστο hello world! Να ο κώδικας

Κώδικας greet.c

#include
int main() {
  printf("Hello World!\n");
  return 0;
}

Τι χρειάζεται να ξέρω;

Καλό είναι να υπάρχουν κάποιες γενικές γνώσεις γύρω από τα deb και την κατασκευή τους. Για έναν αρχάριο δε χρειάζονται πολλά, καθώς το OBS μπορεί να ξεπεράσει κάποια συνηθισμένα λάθη και να τον καθοδηγήσει σε περιπτώσεις αποτυχιών. Στην πορεία του οδηγού θα δούμε τα απολύτως απαραίτητα. Επίσης, είναι απαραίτητη και κάποια εξοικείωση με το περιβάλλον μεταγλώττισης του πηγαίου κώδικα, για την αντιμετώπιση πιθανών προβλημάτων. Αν ο πηγαίος κώδικας δε μεταγλωττίζεται επιτυχώς, το OBS δεν μπορεί να κάνει κάτι για αυτό.

Αν θέλουμε να μπορούμε να κατασκευάζουμε τα πακέτα μας τοπικά μέσα από μια rpm διανομή όπως το openSUSE θα χρειαστούν τα πακέτα deb (για το 'dpkg') και binutils (για το 'ar'). Τα εγκαθιστούμε με:

# zypper install deb binutils

Ένας λόγος για να κάνουμε κάτι τέτοιο είναι είτε γιατί δε θέλουμε να περιμένουμε το OBS πότε θα κάνει τη δουλειά, είτε για να μην το επιβαρύνουμε άσκοπα με απλές δοκιμές.

Τι άλλο θα χρειαστώ;

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

  • packageName.dsc
  • debian.changelog
  • debian.control
  • debian.rules

και φυσικά ένα συμπιεσμένο αρχείο (tar.gz) που περιέχει τον πηγαίο κώδικα του πακέτου για μεταγλώττιση. Μπορείτε να βρείτε κάποια μινιμαλιστικά πρότυπα καθώς και αυτά που θα χρησιμοποιήσουμε ΕΔΩ.

Για τα δικά σας έργα, τουλάχιστον στην αρχή, μην προσπαθήσετε να γράψετε τα παραπάνω αρχεία από το μηδέν. Για να μην κάνετε τη ζωή σας δύσκολη η λογική είναι η εξής: απλά αλλάζετε κάποια σημεία στο πρότυπο μέχρι να δουλέψει ο μηχανισμός. Τέλος, για τη χρήση του OBS στο build.opensuse.org απαραίτητος είναι κι ένας openSUSE/Novell λογαριασμός. Αν δεν έχετε ακόμα λογαριασμό, επισκεφθείτε το http://build.opensuse.org και κάντε κλικ στο σύνδεσμο “Register” στην κορυφή της σελίδας για να δημιουργήσετε έναν.

Δημιουργία έργου

Στο Webclient:
Το OBS περιλαμβάνει έργα (projects). Κάθε έργο περιέχει τις απαραίτητες πηγές για την κατασκευή ενός ή περισσότερων πακέτων (packages). Αυτές οι πηγές περιλαμβάνουν τα αρχεία που απαριθμήσαμε προηγουμένως. Η έξοδος ενός έργου είναι ένα ή περισσότερα αποθετήρια (repositories), που αντιστοιχούν σε διαφορετικές εκδόσεις λειτουργικών συστημάτων όπως openSUSE 12.1, κλπ. Τέλος, στον κάθε χρήστη παρέχεται ένας χώρος για να μπορεί να εργαστεί – ένα προσωπικό έργο που ονομάζεται home:username και που πρέπει να δημιουργήσουμε την πρώτη φορά που θα μπούμε στο σύστημα, κάνοντας κλικ στο σύνδεσμο “Home Project” πάνω δεξιά (εικόνα 1). Συμπληρώνουμε τον τίτλο και προαιρετικά δίνουμε μια περιγραφή και πατάμε στο κουμπάκι “Create Project” κάτω αριστερά.


1 Η αρχική σελίδα του Home Project στο OBS.

Από γραμμή εντολών:
Πρώτα πρώτα, πρέπει να εγκαταστήσουμε το εργαλείο osc στο μηχάνημά μας. Μπορούμε να βρούμε ενημερωμένα πακέτα του osc για διάφορες διανομές στο αποθετήριο http://download.opensuse.org/repositories/openSUSE:/Tools/. Τουλάχιστον για το openSUSE δε χρειάζεται να το προσθέσουμε στις πηγές του συστήματος αφού υπάρχει και στις προεπιλεγμένες. Επομένως, αρκεί ένα (ως root φυσικά):

# zypper install osc

Αν χρησιμοποιούμε Ubuntu (ναι, και από εκεί μπορούμε να δουλέψουμε στο OBS), τότε τη δουλειά μας θα την κάνει το γνωστό:

# sudo apt-get install osc

Στη συνέχεια “cd” στον κατάλογο που θέλουμε να χρησιμοποιήσουμε για τα αρχεία του έργου μας. Εδώ τα πράγματα μοιάζουν πολύ με το SVN. Ας κάνουμε ένα checkout το έργο μας με:

# cd <κατάλογος_που_περιέχει_τη_ρίζα_του_έργου>
# osc checkout home:
# cd home:

Αντικαταστήστε το με το δικό σας όνομα χρήστη. Θα σας ζητηθεί το όνομα χρήστη σας και το συνθηματικό πρόσβασης – αμέσως μετά το osc θα προσπαθήσει να κάνει checkout πακέτα στο προσωπικό σας έργο και να δημιουργήσει ένα νέο κατάλογο που ονομάζεται home:. Προσοχή! Τα στοιχεία αυτά (προς το παρόν) αποθηκεύονται στο αρχείο ρυθμίσεων ~/.oscrc σε μη κρυπτογραφημένη μορφή. Μπορούμε να τα δούμε στις τελευταίες γραμμές του αρχείου, πολύ εύκολα δίνοντας από τερματικό

# tail -n15 ~/.oscrc

Επιλογή διανομών για το έργο

Τώρα θα επιλέξουμε για ποια διανομή θα χτίσουμε πακέτα και θα κατασκευάσουμε αποθετήριο.

Στο Webclient:
Στην καρτέλα “repositories” από το έργο μας, κλικ στο “Αdd repositories” και επιλέγουμε μια από τις διαθέσιμες Διανομές και Αρχιτεκτονικές (εικόνα 2). Η λίστα αν μη τι άλλο από εντυπωσιακή μπορεί να χαρακτηριστεί. Εμείς επιλέγουμε π.χ. Ubuntu 12.04 και κλικ στο “Add selected repositories”.


2 Η λίστα με τις υποστηριζόμενες διανομές είναι εντυπωσιακή

Εξ ορισμού το OBS θα χτίσει πακέτα για την 32bit, αλλά και για την 64bit έκδοση του λειτουργικού συστήματος (i586 και x86_64 αρχιτεκτονικές αντίστοιχα). Ο αποκλεισμός όμως κάποιας είναι πολύ απλός. Από την καρτέλα “repositories” αν αφήσουμε το ποντίκι στο αντίστοιχο τικαρισμένο πεδίο εμφανίζει μια μικρή λίστα με επιλογές, από την οποία επιλέγουμε “Explicitly disable” (εικόνα 3). Κάνουμε το ίδιο στο πλαίσιο Build Flag, στο Publish Flag και στο Use for Build Flag.


3 Ο αποκλεισμός κάποιας αρχιτεκτονικής είναι πολύ απλός.

Από γραμμή εντολών:
Πρώτα παίρνουμε τη λίστα με τα διαθέσιμα αποθετήρια με

# osc repositories

έπειτα αλλάζουμε τα μεταδεδομένα του έργου μας με:

# osc meta prj -e home:

Το osc θα ανοίξει τον αγαπημένο μας κειμενογράφο (σύμφωνα με τη μεταβλητή περιβάλλοντος EDITOR, αν δεν είναι ορισμένη θα ανοίξει το vi) με τα μεταδεδομένα του έργου μας, όπου τέλος προσθέτουμε το αποθετήριο:

i586
x86_64

Αν δε θέλουμε υποστήριξη για x86_64 απλά αφαιρούμε την αντίστοιχη γραμμή από το παραπάνω

Δημιουργία πακέτων

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

Στο Webclient:
Κλικ στο “Home Project” για να ανοίξει το προσωπικό έργο, έπειτα κλικ στο “Create new package” στην καρτέλα “packages”. Θα πρέπει να συμπληρώσουμε τα επόμενα τρία πεδία κειμένου: “Name” (υποχρεωτικό), “Title” και “Description”. Απλά χρησιμοποιούμε το όνομα του πακέτου για το πεδίο “Name”, μια περιγραφική φράση για το πακέτο ως “Title” και την πλήρη περιγραφή στο “Description”. Οι πληροφορίες αυτές θα εμφανίζονται στην πρώτη σελίδα που ανοίγει κάνοντας κλικ στο πακέτο.

Μετά τη δημιουργία, πηγαίνουμε στην καρτέλα “Sources” για να προσθέσουμε αρχεία για το πακέτο μας. Πρέπει να ανεβάσουμε τον πηγαίο κώδικα και τα απαιτούμενα αρχεία για την κατασκευή του deb πακέτου μας (εικόνα 4).


4 Ανεβάζουμε τα αρχεία που ειναι απαραίτητα για την κατασκευή του deb πακέτου μας.

Από γραμμή εντολών:

# osc meta pkg -e home: 

Το osc θα ανοίξει ένα πρότυπο αρχείο xml όπου μπορούμε να προσθέσουμε τα ίδια στοιχεία (Όνομα, Τίτλο και Περιγραφή) όπως περιγράφηκαν παραπάνω. Τώρα δίνουμε την εντολή:

# osc up

και θα πάρουμε ένα νέο κατάλογο με το όνομα του νέου πακέτου μας. Για να προσθέσουμε αρχεία μέσω της γραμμής εντολών, απλά 'cd' στο νέο κατάλογο, αντιγραφή των σχετικών αρχείων (greeter-0.1.tar.gz και αρχεία υποστήριξης: debian.changelog, debian.control, debian.rules, greeter.changes, greeter.dsc). Όταν τα αρχεία είναι έτοιμα καλούμε

# osc add *

Αυτό θα μαρκάρει τα αρχεία στον κατάλογο για την επόμενη υποβολή. Γενικότερα, με osc add <όνομα_αρχείου>, μαρκάρουμε κάποιο αρχείο για ανέβασμα. Για να τα στείλουμε στο OBS εκτελούμε

# osc commit

Κατασκευή πακέτου

Μια υποβολή εκκινεί αυτόματα τη διαδικασία κατασκευής. Για την ακρίβεια το πακέτο προγραμματίζεται για κατασκευή μόλις οι υπολογιστικοί πόροι του OBS στο build.opensuse.org γίνουν διαθέσιμοι από άλλες εργασίες (εικόνα 5).


5 Ανεβάζουμε τα αρχεία που ειναι απαραίτητα για την κατασκευή του deb πακέτου μας.

Μπορούμε επίσης χειροκίνητα να ορίσουμε μια ανακατασκευή με την εντολή:

# osc rebuildpac home: greeter

Η γενική σύνταξη της εντολής είναι:

osc rebuildpac [ []]. 

Με τα προαιρετικά ορίσματα και , η ανακατασκευή μπορεί να περιοριστεί σε ένα συγκεκριμένο αποθετήριο ή αρχιτεκτονική. Εδώ να σημειώσουμε ότι αν κάποιο από τα απαιτούμενα πακέτα ανακατασκευαστεί, το OBS φροντίζει να ανακατασκευάσει αυτόματα και οποιοδήποτε άλλο εξαρτάται από αυτά, για να εξασφαλιστεί η πλήρη συμβατότητα μεταξύ τους. Μπορούμε να δούμε την κατάσταση των πακέτων μας από την καρτέλα “overview” στο πλαίσιο με τίτλο “Build Status”. Επειδή η σελίδα δεν ενημερώνεται αυτόματα αν θέλουμε να δούμε σε πια φάση βρίσκεται η κατασκευή, κλικ στο εικονίδιο της ανανέωσης δίπλα. Επιλέγοντας την ίδια την κατάσταση μεταφερόμαστε αυτόματα στο πλήρες αρχείο καταγραφής της διαδικασίας (το οποίο είναι πάντα μεγάλο και αναλυτικό).

Τοπική κατασκευή πακέτου

Μερικές φορές θα ήταν γρηγορότερο να κατασκευάσουμε το πακέτο στο δικό μας μηχάνημα αντί να περιμένουμε τα αποτελέσματα του buildservice. Το osc υποστηρίζει τοπικές κατασκευές πακέτων, αν φυσικά και το υλικό μας το υποστηρίζει (σε x86_64 μπορούμε να κατασκευάσουμε για i586 και x86_64, σε i586 μόνο για i586). Η σύνταξη της εντολής είναι η εξής:

osc build [--clean|--noinit]

Να σημειωθεί ότι αν η τοπική κατασκευή εκκινηθεί από κανονικό χρήστη, θα ζητηθεί ο κωδικός του root του τοπικού μηχανήματος. Μπορούμε να ελέγξουμε αν το πακέτο μας μπορεί να κατασκευαστεί τοπικά κάπως έτσι:

# osc build xUbuntu_12.04 i586 greeter.dsc

Το osc θα κατεβάσει τα απαραίτητα deb στον κατάλογο προσωρινής μνήμης /var/tmp/osbuild-packagecache///, θα δημιουργήσει με αυτά ένα περιβάλλον chroot στο /var/tmp/build-root/ και θα ξεκινήσει την κατασκευή του πακέτου. Σε περίπτωση που κάνουμε δοκιμές με μικρές αλλαγές (minor) μέχρι να πετύχει η κατασκευή, μπορούμε να αποφύγουμε την αναδημιουργία ολόκληρου του περιβάλλοντος κατασκευής, το οποίο είναι μια χρονοβόρα διαδικασία, αν προσθέσουμε το όρισμα –noinit στην παραπάνω εντολή. Αν υποψιαστούμε ότι το περιβάλλον chroot για κάποιο λόγο είναι προβληματικό, μπορούμε να εκκινήσουμε μια πλήρη ανακατασκευή με το όρισμα --clean. Επίσης, γίνεται να αλλάξουμε τον κατάλογο chroot προσθέτοντας τη γραμμή: build-root = <διαδρομή/προς/κατάλογο/δικής/μας/επιλογής>. Γενικά, τα σχόλια στο ~/.oscrc αρχείο είναι αρκετά σαφή από μόνα τους για όλες τις δυνατές ρυθμίσεις.
Μετά την κατασκευή των πακέτων σε αυτό το περιβάλλον chroot, μπορούμε να τα βρούμε στο /var/tmp/build-root/usr/src/packages/DEBS/. Το πλήρες αρχείο καταγραφής της τοπικής κατασκευής αποθηκεύεται στο /var/tmp/build-root/.build.log.

Από τον κατάλογο του πακέτου (τοπικά στο δίσκο μας) για να δούμε τα αποτελέσματα κατασκευής του δίνουμε την εντολή:

# osc results

Το ίδιο αλλά για όλο το έργο μπορούμε να το δούμε με την εντολή:

# osc prjresults

Προς το παρόν δεν έχει και πολύ νόημα μιας και έχουμε μόνο ένα πακέτο στο έργο μας, επομένως τα αποτελέσματα και των δύο εντολών έχουν την ίδια ακριβώς ερμηνεία. Σε διαφορετική περίπτωση δε θα πρέπει να παραξενευτούμε αν τα αποτελέσματα των εντολών φαίνονται να είναι αντικρουόμενα. Τέλος, για να δούμε το log της κατασκευής του πακέτου για i586, θα δώσουμε στο τερματικό:

# osc buildlog xUbuntu_12.04 i586

Η γενική σύνταξη είναι:

osc buildlog .

Διόρθωση σφαλμάτων στη Διαδικασία Κατασκευής

Ο κύριος λόγος για τον οποίο θα μπούμε στην όλη διαδικασία κατασκευής πακέτων (ακόμα και μη προγραμματιστές), είναι για να δοκιμάσουμε κατά πόσο συμβατό είναι τελικά ένα λογισμικό που δεν υποστηρίζεται στην αγαπημένη μας διανομή (όποια κι αν είναι αυτή). Ωστόσο, με αυτόν τον τρόπο είναι πολύ πιθανό να αντιμετωπίσουμε νέα λάθη κατά τη διαδικασία κατασκευής που θα χρειαστεί να διορθώσουμε. Ο ευκολότερος και γρηγορότερος τρόπος είναι να κάνουμε chroot στο περιβάλλον κατασκευής και να δημιουργήσουμε εκεί τη διόρθωση. Για όσους δεν είναι συνηθισμένοι στους κειμενογράφους τερματικού προτείνεται το openroot αντί του chroot το οποίο επιτρέπει τη χρήση γραφικών εργαλείων από το εξωτερικό περιβάλλον.

# chroot /var/tmp/build-root/
# cd /usr/src/packages/BUILD/κατάλογος_πακέτου
# ls

ή:

# openroot /var/tmp/build-root/ 'cd /usr/src/packages/BUILD/your-package-dir; ls; bash'

Στην περίπτωση που πρέπει να πειράξουμε κάτι στον πηγαίο κώδικα, αντιγράφουμε το αρχείο πριν την επεξεργασία στο .orig, δοκιμάζουμε τις αλλαγές μέχρι να πετύχει η διαδικασία κατασκευής και μετά δημιουργούμε το ανάλογο patch για αυτό

# diff -Naur /var/tmp/build-root/usr/src/packages/BUILD/κατάλογος_πακέτου/Makefile.orig \
# /var/tmp/build-root/usr/src/packages/BUILD/κατάλογος_πακέτου/Makefile \
# >/πλήρη/διαδρομή/έργου/home:/κατάλογος_πακέτου/my.patch

Τώρα μπορούμε να προσθέσουμε το patch στο debian.rules αρχείο ορίζοντας την εφαρμογή του ακριβώς πριν από τις εντολές μεταγλώττισης. Στα πρότυπα αρχεία που δίνουμε στο dvd, οι εντολές μεταγλώττισης μπαίνουν ανάμεσα στα σχόλια

# Add here commands to compile the package.
make
# --- end custom part for compiling

επομένως το patch που κατασκευάσαμε θα πρέπει να εφαρμοστεί ακριβώς πριν από την εντολή make. Δηλαδή, μπορούμε να το εφαρμόσουμε κάπως έτσι:

# Add here commands to compile the package.
patch -Np1 /πλήρη/διαδρομή/original/αρχείου /πλήρη/διαδρομή/my.patch
make
# --- end custom part for compiling

Αποθετήρια

Μετά την επιτυχή δημιουργία των πακέτων .deb, θα προσθέσουμε το αποθετήριο που δημιουργήθηκε από το OBS μέσα στο αρχείο sources.list (πιθανότατα στο /etc/apt/) του Ubuntu για να μπορούμε να χρησιμοποιήσουμε το apt-get για την εγκατάσταση των πακέτων μας. Η γραμμή που θα προσθέσουμε στο sources.list είναι η εξής:

deb http://download.opensuse.org/repositories/home:/:/xUbuntu_12.04 ./

Προσθήκη του apt-key

Για σύγχρονες διανομές βασισμένες στο Debian GNU/Linux, θα χρειαστεί επίσης να προσθέσουμε το κλειδί του αποθετηρίου του έργου, στη λίστα με τα κλειδιά που δέχεται το apt. Το κατεβάζουμε από το api.opensuse.org. Συγκεκριμένα για το έργο μας βρίσκεται στο https://api.opensuse.org/source/home:/_pubkey (αντικαθιστούμε το "home:" με το σωστό έργο). Έπειτα μπορούμε να προσθέσουμε το κατεβασμένο κλειδί:

sudo apt-key add <κατεβασμένο_αρχείο_κλειδιού>

Αφού κάνουμε μια επαναφόρτωση των πηγών με sudo apt-get update, μπορούμε να εγκαταστήσουμε το πακέτο μας με sudo apt-get install greeter και το εκτελούμε δίνοντας greet στο τερματικό, που μας απαντάει με hello world!.

Καλή επιτυχία και καλό πακετάρισμα! :)


6 Τα log της διαδικασίας του πρώτου μας deb πακέτου...

 

Ορολογία

packageName
Τα ονόματα για τα RPM πακέτα δεν έχουν αυστηρή σύνταξη όπως τα αντίστοιχα για debian. Επομένως προσοχή πριν ανεβάσετε τα αρχεία σας! Τα ονόματα των πακέτων (πηγαίων και δυαδικών) πρέπει να αποτελούνται μόνο από πεζά γράμματα (a-z), ψηφία (0-9), συν (+) και μείον (-), και τελείες (.). Πρέπει να είναι τουλάχιστον δύο χαρακτήρων σε μήκος και να ξεκινούν με ένα αλφαριθμητικό χαρακτήρα.

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.

 

Τοπικά build και sudo

Η εκκίνηση της κατασκευής από το λογαριασμό ενός απλού χρήστη είναι το πλέον λογικό. Όταν δουλεύουμε κάνοντας μικρές αλλαγές και πειράματα (συνήθως στα description files) μέχρι να ολοκληρωθεί με επιτυχία μια κατασκευή, τα rebuild γίνονται το ένα μετά το άλλο. Το osc όμως θα επιμένει συνεχώς να ζητάει τον κωδικό του χρήστη root, κάτι το οποίο μπορεί να καταντήσει το λιγότερο εκνευριστικό. Ένα μικρό κολπάκι για να το αποφύγουμε αυτό, είναι να προσθέσουμε το χρήστη μας στο αρχείο /etc/sudoers και να αλλάξουμε κατάλληλα το ~/.oscrc. Για το πρώτο ως root, εκτελούμε visudo και προσθέτουμε τη γραμμή:
<όνομα_χρήστη> ALL = NOPASSWD: /usr/bin/build
στη ρύθμιση του sudo (φυσικά χωρίς τα '<' και '>'). Για το δεύτερο, με οποιοδήποτε κειμενογράφο προσθέτουμε τη γραμμή su-wrapper = sudo στο ~/.oscrc κάτω από το αντίστοιχο σχόλιο στο ίδιο το αρχείο.Το osc δε θα μας ξαναενοχλήσει.

 

Θέλω τον δικό μου editor

Το osc ανοίγει τον προεπιλεγμένο κειμενογράφο για την επεξεργασία των μεταδεδομένων. Για να αλλάξουμε αυτή τη συμπεριφορά εκτελούμε τα εξής:

# EDITOR=kwrite
# export EDITOR

Τώρα η επεξεργασία θα γίνεται με το kwrite, οποιοδήποτε άλλο βάλουμε στη θέση του.

 

Σύνδεσμοι

* Ο Στάθης είναι φοιτητής και ενεργό μέλος της ελληνικής κοινότητας openSUSE

Δώσε αστέρια!

MO: 5 (ψήφοι: 1)