Προσωπικά εργαλεία

Linux/Πακετοποίηση

Από WIKI Τεχνικής Στήριξης
Μετάβαση σε: πλοήγηση, αναζήτηση
Σε αυτή την ενότητα, καταγράφεται η διαδικασία της δημιουργίας πακέτων λογισμικού σε μορφή debian (.deb), για λογισμικά που εκτελούνται σε λειτουργικό σύστημα Ubuntu Linux μέσω του λογισμικού Wine. Η διαδικασία που περιγράφεται, είναι, σε γενικές γραμμές, ανάλογη της διαδικασίας που εφαρμόστηκε για τα εκπαιδευτικά λογισμικά του Αποθετηρίου Πιστοποιημένου Εκπαιδευτικού Λογισμικού της Τεχνικής Στήριξης ΣΕΠΕΗΥ, τα οποία εκτελούνται και αυτά μέσω του Wine.

Περιεχόμενα

Τι είναι το λογισμικό Wine;

Το Wine (ακρωνύμιο της έκφρασης "Wine Is Not an Emulator") είναι ένα ελεύθερο (free) και ανοικτού κώδικα (open source) λογισμικό, με το οποίο είναι δυνατόν εφαρμογές που έχουν σχεδιαστεί να εκτελούνται σε λειτουργικό σύστημα Microsoft Windows, να μπορούν επίσης να εκτελούνται και σε λειτουργικά συστήματα παρόμοια με το Unix, όπως είναι το Ubuntu Linux.

Τι είναι το πακέτο debian (.deb);

Ένα (binary) πακέτο debian (.deb) περιέχει όλα εκείνα τα αρχεία (εκτελέσιμα αρχεία, βιβλιοθήκες, τεκμηριώσεις, κ.ά.), τα οποία είναι απαραίτητα για την εγκατάσταση νέου λογισμικού σε λειτουργικά συστήματα τύπου Debian Linux (π.χ. Ubuntu). Είναι, δηλαδή, κάτι αντίστοιχο των εκτελέσιμων αρχείων .exe, τα οποία περιέχουν οδηγίες για την εγκατάσταση νέου λογισμικού σε λειτουργικά συστήματα DOS, Microsoft Windows, κ.ά. Τα περιεχόμενα ενός πακέτου debian οργανώνονται σε μια συγκεκριμένη μορφή. Σε γενικές γραμμές, ένα πακέτο debian περιέχει τους καταλόγους upstream και debian. Παρακάτω, αναλύεται η δομή ενός πακέτου debian και περιγράφονται αναλυτικά τα περιεχόμενα των καταλόγων upstream και debian.

Προετοιμασία

Απαιτήσεις σε λογισμικό

Θα πρέπει να έχουν εγκατασταθεί τα παρακάτω πακέτα, μαζί με τις εξαρτήσεις τους:

Terminal.pngsudo apt-get install devscripts debhelper

Κατά την εγκατάσταση των devscripts, εμφανίζεται ένας διάλογος ρύθμισης του πακέτου postfix (Postfix Configuration). Προτείνεται να επιλεγεί η ρύθμιση "No configuration".

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

Για ένα νέο πακέτο debian, θα δημιουργείται ένας κατάλογος, ο οποίος μπορεί να έχει ως όνομα κάτι αντίστοιχο του ονόματος του λογισμικού, για να είναι εύκολο να απομνημονευθεί. Όπως αναφέρθηκε και παραπάνω, ένα πακέτο debian περιέχει τους καταλόγους upstream και debian. Η δομή των καταλόγων upstream και debian για κάθε πακέτο debian που δημιουργείται για ένα λογισμικό είναι η εξής:

Κατάλογος upstream

Ο κατάλογος upstream περιέχει όλα τα αρχεία που προκύπτουν από την εγκατάσταση του πρωτότυπου λογισμικού σε λειτουργικό σύστημα Microsoft Windows. Πιο αναλυτικά, ακολουθείται η παρακάτω διαδικασία.

1. Μεταφόρτωση του πρωτότυπου λογισμικού σε λειτουργικό σύστημα Microsoft Windows. Σε γενικές γραμμές, ακολουθούνται οι οδηγίες εγκατάστασης που υπάρχουν διαθέσιμες μαζί με κάθε λογισμικό. Συγκεκριμένα:
  • Σε περίπτωση που διατίθεται το λογισμικό σε μορφή .zip ή .iso θα πρέπει να αποσυμπιεστεί.
  • Σε περίπτωση που διατίθεται σε μορφή αρχείου εγκατάστασης, π.χ. setup.exe, θα πρέπει να εκτελεστεί και στη συνέχεια να συλλεχθούν τα αρχεία που προέκυψαν από την εκτέλεσή του.
  • Σε περίπτωση που διατίθεται μέσω κάποιου CD/DVD, το οποίο περιέχει το αρχείο εγκατάστασης (π.χ. setup.exe) και βοηθητικό υλικό (π.χ.: Οδηγός χρήσης, Βιβλίο καθηγητή, κλπ.), θα πρέπει να εκτελεστεί το αρχείο εγκατάστασης και στη συνέχεια να συλλεχθούν τα αρχεία που προέκυψαν, καθώς και το βοηθητικό υλικό.

2. Μεταφορά του καταλόγου που προέκυψε από το προηγούμενο βήμα, σε ένα "καθαρό" Ubuntu μηχάνημα και προσπάθεια εκτέλεσης του αρχείου εγκατάστασης του λογισμικού με τη βοήθεια του Wine. Σε περίπτωση αποτυχίας, ανάκτηση των αρχείων που μπορεί να παρελήφθησαν κατά τη διάρκεια της εγκατάστασής του.

3. Το επόμενο βήμα, είναι η δημιουργία του καταλόγου upstream στο Ubuntu μηχάνημα. Στον κατάλογο upstream που θα δημιουργηθεί, αντιγράφονται τα αρχεία που έχουν προκύψει από τα προηγούμενα βήματα. Δηλαδή, ο κατάλογος upstream θα πρέπει να περιέχει τα αρχεία που προέκυψαν από την εγκατάσταση του λογισμικού σε Windows, τα οποία αποθηκεύονται στον κατάλογο "Program Files (Αρχεία Εφαρμογών)" (π.χ. C:\Program Files, για Windows XP), στον αντίστοιχο κατάλογο που έχει δημιουργηθεί μετά την εγκατάσταση του λογισμικού, καθώς και τυχόν βοηθητικό υλικό για το λογισμικό, εάν υπάρχει.

Dialog-information.pngΣε περίπτωση που εμπεριέχονται μαζί με το πρωτότυπο λογισμικό αρχεία εγκατάστασης (π.χ. setup.exe) βοηθητικών προγραμμάτων (π.χ. acrobat.exe, quicktime.exe, κλπ.), ακολουθείται η εξής διαδικασία:
  • Εάν τα βοηθητικά προγράμματα είναι απαραίτητα για την εγκατάσταση ή/και την εκτέλεσή του προς πακετοποίηση λογισμικού, τότε γίνεται προσπάθεια εκτέλεσης των αντίστοιχων αρχείων εγκατάστασής τους με τη βοήθεια του Wine, προκειμένου να εξασφαλιστεί η σωστή λειτουργία του λογισμικού.
  • Εάν τα βοηθητικά προγράμματα δεν είναι υποχρεωτικά για το λογισμικό, τότε είναι προαιρετική και η εγκατάστασή τους.
  • Και στις δύο παραπάνω περιπτώσεις, υπάρχει το ενδεχόμενο να προκύψει κάποιο σφάλμα είτε κατά την εγκατάσταση, είτε κατά την εκτέλεση των βοηθητικών προγραμμάτων, καθώς με το Wine δεν είναι δυνατόν να εκτελεστούν όλα τα Windows προγράμματα. Τότε, μία λύση είναι να αναζητηθούν παραπλήσιες native εφαρμογές του Ubuntu. Για παράδειγμα, η εφαρμογή "Προβολή εγγράφων" που διαθέτει το Ubuntu μπορεί να χρησιμοποιηθεί για τη διαχείριση αρχείων τύπου .pdf. Διαφορετικά, θα πρέπει να γίνει αποσφαλμάτωση (debugging) του λογισμικού που παρουσιάζει πρόβλημα, σε περίπτωση που είναι απαραίτητο για τη σωστή εκτέλεση του προς πακετοποίηση λογισμικού, έτσι ώστε να βρεθεί τρόπος, εάν είναι δυνατόν, να εκτελεστεί με τη βοήθεια του Wine. Παρακάτω, αναφέρονται κάποια από τα πιο συνηθισμένα προβλήματα που προκύπτουν όταν ένα λογισμικό εκτελείται με τη βοήθεια του Wine και τρόποι που μπορούν να επιλυθούν.

Προβλήματα κατά την εκτέλεση ενός λογισμικού μέσω του Wine και τρόποι αντιμετώπισής τους

Με το Wine, δεν είναι πάντα εφικτό να επιτευχθεί η εκτέλεση ενός Windows προγράμματος σε Linux. Υπάρχουν λογισμικά, τα οποία είναι αδύνατον να τρέξουν με τις υπάρχουσες υλοποιήσεις και εκδόσεις του Wine. Αλλά υπάρχουν και λογισμικά, για τα οποία πρέπει να γίνουν ορισμένες ενέργειες, για να γίνει δυνατή η σωστή εκτέλεσή τους με τη βοήθεια του Wine. Παρακάτω, αναφέρονται ορισμένες από τις πιο συνηθισμένες ενέργειες που μπορούν να γίνουν, όταν εμφανιστεί πρόβλημα κατά την εκτέλεση ενός λογισμικού μέσω του Wine:
Αρκετές φορές, υπάρχουν προβλήματα με dll αρχεία, που είναι απαραίτητα για την εκτέλεση ενός λογισμικού ή/και για την εγκατάστασή του. Δηλαδή, μπορεί ένα λογισμικό να απαιτεί την ύπαρξη ορισμένων dll αρχείων για την εκτέλεσή του. Αυτό θα γίνει εμφανές, με ένα αντίστοιχο μήνυμα στο τερματικό παράθυρο κατά την εκτέλεση του λογισμικού, όπως για παράδειγμα:

Terminal.pngerr:module:import_dll Library MSVBVM60.DLL (which is needed by L"Z:\\home\\sordelka\\Desktop\\DMD_Calendrier.exe") not found

Αυτό το μήνυμα λάθους αναφέρει ότι λείπει το αρχείο MSVBVM60.DLL. Από το εργαλείο Winetricks του Wine (βρίσκεται στο μενού του Wine στο Gnome), μπορεί να γίνει λήψη και εγκατάσταση των πιο απαραίτητων και πιο συχνά χρησιμοποιούμενων dll αρχείων για Windows εφαρμογές (π.χ. MSVBVM60.DLL, MSVBVM50.DLL, MFC42.DLL, MSVCRT.DLL, COMDLG32.OCX, κ.ά.). Τα dll αρχεία αποθηκεύονται στον κατάλογο c:\windows\system32 του Wine (κατά αντιστοιχία με τα Windows συστήματα). Εάν το σύστημα συνεχίζει να μην βρίσκει το dll αρχείο, τότε θα πρέπει να γίνει αντιγραφή του στον κατάλογο του λογισμικού που το χρειάζεται, που βρίσκεται στον c:\Program Files. Εάν το πρόβλημα συνεχίζει να παραμένει, τότε καλό είναι να γίνει εγγραφή του dll αρχείου με την εντολή:

Terminal.pngwine regsvr32 MSVBVM60.DLL

Με την παραπάνω εντολή γίνεται εγγραφή του MSVBVM60.DLL. Γενικά, εάν ένα dll αρχείο χρειάζεται εγγραφή και δεν έχει γίνει, στο τερματικό παράθυρο του Ubuntu θα εμφανιστεί ένα μήνυμα λάθους, όπως για παράδειγμα:

Terminal.pngerr:ole:create_server class {00000514-0000-0010-8000-00aa006d2ea4} not registered

Τότε, μπορεί να γίνει αναζήτηση στο διαδίκτυο, για να βρεθεί σε ποιο dll αντιστοιχεί το class id {00000514-0000-0010-8000-00aa006d2ea4}. Εάν, όντως, αυτό το id αντιστοιχεί σε κάποιο dll αρχείο, τότε θα πρέπει να γίνει εγγραφή του.
Από το Winetricks μπορεί να γίνει, επίσης, εγκατάσταση και ορισμένων Wine εφαρμογών, που προσομοιώνουν τις αντίστοιχες Windows εφαρμογές, όπως ο Internet Explorer, o Windows Media Player, ο Adobe Flash Player, κ.ά., σε περίπτωση που απαιτούνται από κάποιο λογισμικό.
Ένα άλλο πρόβλημα που μπορεί να προκύψει με τα dll αρχεία που απαιτεί ένα λογισμικό για την εκτέλεσή του, είναι το γεγονός το Wine να μην υποστηρίζει την native (Windows) υλοποίηση ενός dll αρχείου. Σε αυτή την περίπτωση, θα πρέπει να γίνει υπερκάλυψη (override) του dll αρχείου στην builtin υλοποίησή του, εάν υπάρχει, η οποία υποστηρίζεται από το Wine. Αυτό μπορεί να γίνει με το εργαλείο winecfg (Wine configuration) (βρίσκεται στο μενού του Wine στο Gnome) και, συγκεκριμένα, από την καρτέλα "Libraries" του winecfg. Γενικά, από το γραφικό περιβάλλον του winecfg μπορούν να γίνουν αρκετές αλλαγές, εκτός από τo override στις απαραίτητες βιβλιοθήκες ενός λογισμικού, όπως στα γραφικά, τον ήχο, την έκδοση των Windows που το Wine μπορεί να "μιμηθεί", κτλ. και να διορθωθούν, έτσι, διάφορα προβλήματα που μπορεί να προκύψουν με ένα λογισμικό που εκτελείται με τη βοήθεια του Wine.
Ακόμη, μπορεί να γίνει χρήση διαφορετικών εκδόσεων του Wine και να διορθωθεί με αυτόν τον τρόπο ένα πρόβλημα με ένα λογισμικό, καθώς κάθε νεότερη έκδοση του Wine είναι βελτιωμένη έκδοση των προηγούμενων.
Σε κάθε περίπτωση, μπορεί να γίνει αποσφαλμάτωση (debugging) του λογισμικού που παρουσιάζει πρόβλημα, κάνοντας χρήση της μεταβλητής περιβάλλοντος του Wine, της WINEDEBUG. Περισσότερες πληροφορίες υπάρχουν στη σελίδα βοήθειας του Wine, η οποία μπορεί να βρεθεί με την εντολή:

Terminal.pngman wine

Κατάλογος debian

Ο κατάλογος debian περιέχει τα ακόλουθα αρχεία, τα οποία περιγράφουν το debian πακέτο που δημιουργείται για ένα λογισμικό:

Dialog-information.pngΓενικά, όταν ένα λογισμικό εκτελείται σε Ubuntu με τη βοήθεια του Wine, ο κατάλογος debian περιέχει επιπλέον τα εξής αρχεία:
  • Αρχείο mime, το οποίο περιέχει δεδομένα σχετικά με την εντολή για το άνοιγμα των αρχείων που εξάγει το λογισμικό. Το αρχείο αυτό εγκαθίσταται στον κατάλογο /usr/lib/mime/packages/debian-package-name, όπου το debian-package-name είναι το όνομα του πακέτου debian του λογισμικού.
  • Αρχείο sharedmimeinfo, το οποίο περιέχει δεδομένα για την ενημέρωση του λειτουργικού συστήματος, ώστε να αναγνωρίζει τα εξαγόμενα αρχεία του λογισμικού. Το αρχείο sharedmimeinfo εγκαθίσταται στον κατάλογο /usr/share/mime/packages/debian-package-name.xml.
  • Αρχείο postinst, το οποίο είναι ένα shell script, το οποίο ορίζει τις ενέργειες που πρέπει να γίνουν μετά την εγκατάσταση του πακέτου debian.
  • Αρχείο postrm, το οποίο είναι ένα shell script, στο οποίο ορίζονται οι ενέργειες που πρέπει να γίνουν μετά την αφαίρεση του πακέτου debian.
Ωστόσο, τα αρχεία αυτά χρησιμοποιούνται σε πιο προχωρημένες περιπτώσεις πακετοποίησης λογισμικών και δεν είναι απαραίτητα για τις περιπτώσεις πακετοποίησης που περιγράφονται σε αυτή την ενότητα.

Στη συνέχεια, αναφέρονται ορισμένα στοιχεία, για τη μορφή και τα περιεχόμενα των αρχείων του καταλόγου debian.

Αρχείο changelog

Το αρχείο changelog περιέχει πληροφορίες για την έκδοση του πακέτου debian ενός λογισμικού και τις αλλαγές που έχουν γίνει σε κάθε έκδοση. Ένα απλό παράδειγμα της μορφής που έχει ένα αρχείο changelog φαίνεται παρακάτω:

Editor.png debian-package-name (6.3.0.5.1-­1) stable; urgency=low

  * Αρχική έκδοση.

 -- Maintainer of the debian package <e-mail> Wed, 15 Jul 2015 08:29:22 +0300

Όπου:
  • debian-package-name: το όνομα του πακέτου debian.
  • 6.3.0.5.1­-1: η έκδοση του πακέτου debian.
  • Maintainer of the debian package <e-mail>: πληροφορίες (όνομα, e-mail) αυτού του οποίου ευθύνεται για τη διατήρηση του πακέτου debian.

Το αρχείο changelog μπορεί να δημιουργηθεί με την εντολή dch (debian changelog):

Terminal.pngdch --create

Την πρώτη φορά που θα εκτελεστεί η εντολή dch, θα εμφανιστεί η παρακάτω ερώτηση:

Editor.pngSelect an editor. To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano <---- easiest
  3. /usr/bin/vim.tiny
Choose 1-3 [2]:

Πατήστε Enter για να αφήσετε τον προεπιλεγμένο editor "nano". Μετά την αρχική δημιουργία του αρχείου changelog, νέες καταχωρήσεις σε αυτό μπορούν να δημιουργηθούν με την εντολή:

Terminal.pngsch-changelog

Αρχείο compat

Το αρχείο compat περιέχει μόνο τον αριθμό της έκδοσης του debhelper που απαιτείται για να μεταγλωττιστεί το πακέτο. Η τρέχουσα έκδοση του debhelper είναι:

Editor.png7

Αρχείο control

Το αρχείο control περιέχει την περιγραφή και τις εξαρτήσεις του πακέτου. Αναλυτικότερα, το αρχείο control περιέχει οδηγίες για την εγκατάσταση του πακέτου debian ενός λογισμικού σε λειτουργικό σύστημα Ubuntu (από ποια πακέτα λογισμικού έχει εξάρτηση, κλπ.). Η μορφή του είναι η εξής:

Editor.pngSource: debian-package-name
Section: misc
Priority: extra
Maintainer: Maintainer of the debian package <e-mail>
Build-Depends: debhelper (>= 7.3.0)
Standards-Version: 3.9.6
Homepage: "Ιστοσελίδα από την οποία έγινε λήψη του λογισμικού" (χωρίς τα εισαγωγικά)

Package: debian-package-name
Architecture: all
Description: "Όνομα του λογισμικού" (χωρίς τα εισαγωγικά)
 "Σύντομη περιγραφή του λογισμικού." (χωρίς τα εισαγωγικά)
 .
 "Πιο εκτεταμένη περιγραφή του λογισμικού."
 "Οι γραμμές θα πρέπει να είναι το πολύ 3 με 4 και"
 "να μην έχουν μεγάλο μήκος." (χωρίς τα εισαγωγικά)
Depends: ${misc:Depends}, wine­-el

Παρακάτω, δίνεται μια συνοπτική περιγραφή των πεδίων του αρχείου control, τα οποία χρησιμοποιούνται αρκετά συχνά στην πακετοποίηση σε debian μορφή των λογισμικών:

  • Στο πεδίο ‘Source’ του αρχείου control εισάγεται το όνομα του πακέτου debian, π.χ. debian-package-name.

  • Στο πεδίο ‘Section’ δηλώνεται η ενότητα της διανομής στην οποία θα συμπεριληφθεί το source πακέτο. Συνήθως, εισάγονται οι τιμές misc (εάν πρόκειται για λογισμικό με διάφορα είδη χρήσεων) ή devel (εάν πρόκειται για λογισμικό που χρησιμεύει ως εργαλείο προγραμματιστών).

  • Στο πεδίο ‘Priority’ εκφράζεται η σημαντικότητα του πακέτου debian και εισάγονται οι τιμές extra ή optional.

  • Στο πεδίο ‘Maintainer’ αναφέρεται το όνομα αυτού του οποίου ευθύνεται για τη διατήρηση του πακέτου debian.

  • Στο πεδίο ‘Build-Depends’ μπαίνει η τιμή debhelper και η έκδοσή του, η οποία θα πρέπει να ελέγχεται, καθώς αλλάζει ανά έξι μήνες περίπου.

  • Στο πεδίο ‘Standards-Version’ εισάγεται η τρέχουσα έκδοση, π.χ. 3.9.6, η οποία θα πρέπει να ελέγχεται κι αυτή, καθώς αλλάζει, επίσης, ανά έξι μήνες περίπου.

  • Στο πεδίο ‘Homepage’ καταγράφεται η κεντρική σελίδα του λογισμικού.

  • Στο πεδίο ‘Package’ γράφεται το όνομα του debian πακέτου, π.χ. debian-package-name.

  • Στο πεδίο ‘Architecture’ εισάγεται η τιμή all, δηλαδή, υποστήριξη για 32-bit και 64-bit συστήματα.

  • Tο πεδίο ‘Description’ αποτελείται από δύο μέρη, τη σύντομη και την αναλυτική περιγραφή του λογισμικού. Στη σύντομη περιγραφή, στην πρώτη γραμμή εισάγεται η ονοματολογία του λογισμικού, η οποία πρέπει να αποτελείται από περιορισμένο αριθμό χαρακτήρων. Μετά, εισάγονται περίπου 2 με 3 γραμμές το πολύ, με μια σύντομη περιγραφή της λειτουργίας του λογισμικού (single line synopsis). Έπειτα, ακολουθεί η αναλυτική περιγραφή (extended description) του λογισμικού, η οποία όμως δεν είναι απαραίτητη. Την σύντομη και την αναλυτική περιγραφή του εκπαιδευτικού λογισμικού τις χωρίζει μια τελεία (‘.’). Θα πρέπει να δίνεται ιδιαίτερη προσοχή στο μήκος των γραμμών. Δεν θα πρέπει μια γραμμή να είναι μεγάλη, καθώς κατά τη διάρκεια του debuild, στη φάση lintian, θα υπάρξει προειδοποίηση (warning) ότι το μήκος της γραμμής στο πεδίο ‘Description’ είναι πολύ μεγάλο. Για παράδειγμα, η σύντομη περιγραφή του λογισμικού δεν θα πρέπει να υπερβαίνει τους 80 χαρακτήρες. Επίσης, δεν θα πρέπει να αναφέρεται το όνομα του πακέτου debian. Τέλος, σε ό,τι αφορά την αναλυτική περιγραφή καλό είναι να μην είναι συνέχεια της σύντομης περιγραφής.

  • Στο πεδίο ‘Depends’, στο οποίο, γενικά, πρέπει να δίνεται ιδιαίτερη προσοχή, καταγράφονται οι εξαρτήσεις του πακέτου debian του λογισμικού από άλλα πακέτα λογισμικού. Αυτό σημαίνει ότι για να εγκατασταθεί το προς πακετοποίηση λογισμικό, θα πρέπει πρώτα να εγκατασταθούν τα πακέτα λογισμικού που αναφέρονται στο πεδίο ‘Depends’. Για ένα λογισμικό που εκτελείται σε Ubuntu με τη βοήθεια του Wine, θα πρέπει στις εξαρτήσεις του πακέτου debian να υπάρχει οπωσδήποτε και η εξάρτηση από το Wine, δηλαδή, wine-el.

Επίσης, μπορεί να υπάρχουν και άλλου είδους εξαρτήσεις του λογισμικού, όπως:

  • ‘Suggests’: Σε αυτό το πεδίο δηλώνονται τα πακέτα λογισμικού με τα οποία το πακέτο debian του λογισμικού θα είναι πιο χρήσιμο. Αυτό όμως δεν σημαίνει ότι πακέτα που αναφέρονται σε αυτό το πεδίο είναι απαραίτητα για την εγκατάσταση του λογισμικού.

  • ‘Recommends’: Δηλώνεται μια ισχυρή, αλλά όχι απόλυτη εξάρτηση.

  • Κτλ.

Τέλος, ένα αρχείο control μπορεί να περιέχει και τα εξής πεδία:

  • ‘Conflicts’: Όταν για ένα πακέτο debian δηλώνεται μια «σύγκρουση» (conflict) με ένα άλλο πακέτο, το εργαλείο dpkg (με το οποίο γίνεται διαχείριση των πακέτων debian, όπως εγκατάσταση ενός πακέτου κτλ.) θα αρνηθεί να επιτρέψει και στα δύο να από-πακετοποιηθούν (unpack) ταυτόχρονα στο σύστημα. Δηλαδή, εάν ένα πακέτο πρόκειται να από-πακετοποιηθεί, το άλλο πρέπει να διαγραφεί πρώτα.

  • ‘Replaces’: Τα πακέτα debian μπορούν να δηλώσουν στο αρχείο control ότι μπορούν να αντικαταστήσουν αρχεία σε συγκεκριμένα άλλα πακέτα ή να αντικαταστήσουν τελείως άλλα πακέτα (σε αυτή την περίπτωση χρησιμοποιείται σε συνδυασμό με το ‘Conflicts’), αναγκάζοντας τη διαγραφή τους. Το πεδίο ‘Replaces’, δηλαδή, χρησιμοποιείται για αυτούς τους δύο ξεχωριστούς σκοπούς.

Περισσότερες πληροφορίες για το αρχείο control ενός πακέτου debian και τα πεδία του υπάρχουν στην εξής ιστοσελίδα: https://www.debian.org/doc/debian-policy/ch-controlfields.html.

Αρχείο copyright

Το αρχείο copyright έχει την παρακάτω μορφή:

Editor.pngFormat: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: "Όνομα του λογισμικού" (χωρίς τα εισαγωγικά)
Source: "Σελίδα λήψης του εκτελέσιμου αρχείου του λογισμικού" (χωρίς τα εισαγωγικά)

Files: *
Copyright: 2015 "Maintainer of the debian package" (εισάγεται το όνομα αυτού του οποίου ευθύνεται για τη διατήρηση του πακέτου debian, χωρίς τα εισαγωγικά)
License: GPL-2+ (γενικά, θα μπορούσε η άδεια να είναι π.χ. GPL-2, ή L-GPL, κ.ά.)
This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later
version.
.
This program is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more
details.
.
You should have received a copy of the GNU General Public
License along with this package; if not, write to the Free
Software Foundation, Inc., 51 Franklin St, Fifth Floor,
Boston, MA 02110-1301 USA
.
On Debian systems, the full text of the GNU General Public
License version 2 can be found in the file
'/usr/share/common-licenses/GPL-2'.

Files: debian/*
Copyright: 2015 "Maintainer of the debian package" (εισάγεται το όνομα αυτού του οποίου ευθύνεται για τη διατήρηση του πακέτου debian, χωρίς τα εισαγωγικά)
License: GPL-2+ (γενικά, θα μπορούσε η άδεια να είναι π.χ. GPL-2, ή L-GPL, κ.ά.)
This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later
version.
.
This program is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more
details.
.
You should have received a copy of the GNU General Public
License along with this package; if not, write to the Free
Software Foundation, Inc., 51 Franklin St, Fifth Floor,
Boston, MA 02110-1301 USA
.
On Debian systems, the full text of the GNU General Public
License version 2 can be found in the file
'/usr/share/common-licenses/GPL-2'.

Η γενική μορφή που ακολουθεί το αρχείο copyright είναι η εξής: Αποτελείται από δύο μέρη. Στο πρώτο μέρος, αναφέρεται η άδεια για τον κατάλογο upstream του πακέτου debian, δηλαδή η επίσημη άδεια από τον κατασκευαστή του λογισμικού στην οποία αναφέρονται τα πνευματικά δικαιώματα του λογισμικού. Στο δεύτερο μέρος, αναφέρονται τα πνευματικά δικαιώματα του καταλόγου debian, τα οποία ανήκουν σε αυτόν που ευθύνεται για τη διατήρηση του πακέτου debian.

Αρχείο install

Το αρχείο install περιέχει μια λίστα με τους φακέλους και τα αρχεία που πρέπει να αντιγραφούν στο σύστημα κατά την εγκατάσταση του προς πακετοποίηση λογισμικού. Ένα παράδειγμα της μορφής που έχει το αρχείο install είναι:

Editor.pngupstream/* usr/share/debian-package-name
debian/additional/debian-package-name.desktop usr/share/applications/
debian/additional/debian-package-name.png usr/share/pixmaps/
debian/additional/debian-package-name usr/bin/

Στη θέση του 'debian-package-name' θα εισάγεται το όνομα του πακέτου debian.
Μέσω του αρχείου install, τα περιεχόμενα του καταλόγου upstream αντιγράφονται στον κατάλογο /usr/share/debian-package-name, κοκ. Η τέταρτη γραμμή του αρχείου install χρειάζεται μόνο για τα λογισμικά που εκτελούνται με τη βοήθεια του Wine. Έτσι, με αυτή τη γραμμή, το εκτελέσιμο αρχείο (π.χ. debian-package-name, που βρίσκεται στο μονοπάτι /debian/additional/) του λογισμικού τοποθετείται στον κατάλογο /usr/bin/. Γενικά, στα αρχεία του καταλόγου debian, στα σημεία όπου χρειάζεται να δηλωθεί κάποια διαδρομή, δεν βάζουμε το αρχικό '/' (π.χ. βάζουμε usr/ και όχι /usr/).

Αρχείο rules

Το αρχείο rules είναι το makefile του πακέτου debian, το οποίο ορίζει τις ενέργειες που πρέπει να γίνουν για τη δημιουργία του. Για λόγους απλότητας, χρησιμοποιείται στην πακετοποίηση λογισμικών το παρακάτω γενικό αρχείο rules, το οποίο καλεί όλα τα προγράμματα dh_* με τη σειρά:

Editor.png#!/usr/bin/make -f
%:
    dh $@

Κατάλογος additional

Ο κατάλογος additional περιέχει τα εξής αρχεία:
Αρχείο .desktop
Το .desktop αρχείο, όπως αναφέρθηκε και παραπάνω, θα έχει όνομα, το όνομα του πακέτου debian (π.χ. debian-package-name) και την κατάληξη .desktop. Δηλαδή, debian-package-name.desktop. Ένα .desktop αρχείο έχει την εξής μορφή:

Editor.png[Desktop Entry]
Name="Όνομα του λογισμικού, το οποίο θα φαίνεται στο μενού του Gnome" (χωρίς τα εισαγωγικά)
Comment="Μία σύντομη πρόταση με την οποία θα γίνεται περιγραφή του λογισμικού, η οποία θα φαίνεται κι αυτή στο μενού του Gnome" (χωρίς τα εισαγωγικά)
Exec=debian-package-name %f
Terminal=false
Type=Application
Icon=debian-package-name
Categories=Wine-Programs;
StartupNotify=true

Όπου 'debian-package-name', είναι το όνομα του πακέτου debian του λογισμικού.
Σε γενικές γραμμές, το .desktop αρχείο περιέχει οδηγίες για την καταχώρηση (desktop entry) του νέου λογισμικού στο μενού του Gnome.
Στο πεδίο 'Exec' καθορίζεται η εντολή για την εκτέλεση ενός λογισμικού και τα τυχόν ορίσματα, εάν είναι απαραίτητα. Το όρισμα '%f' δηλώνει το αρχείο που επιλέγει ένας χρήστης να ανοίξει με το προς πακετοποίηση λογισμικό, και είναι απαραίτητο για τα λογισμικά που εκτελούνται με τη βοήθεια του Wine.
Τέλος, στο πεδίο 'Categories', στο οποίο δηλώνονται οι κατηγορίες των μενού του Gnome στις οποίες θα εμφανίζεται μέσα το λογισμικό, απαιτείται η τιμή 'Wine-Programs', για την περίπτωση των λογισμικών που εκτελούνται μέσω του Wine.
Αρχείο .png
Το .png αρχείο, όπως αναφέρθηκε και παραπάνω, θα έχει όνομα, το όνομα του πακέτου debian (π.χ. debian-package-name) και την κατάληξη .png. Δηλαδή, debian-package-name.png. Το .png αρχείο δηλώνει το εικονίδιο του λογισμικού που θα φαίνεται στο μενού του Gnome, διαστάσεων 32x32 ή 48x48. Ένας τρόπος να κατασκευαστεί το .png αρχείο, είναι με print­screen από κάποιο σημείο της εκτέλεσης του λογισμικού, και στη συνέχεια με αποκοπή και σμίκρυνση της κατάλληλης περιοχής με το πρόγραμμα Gimp.
Εκτελέσιμο αρχείο
Το εκτελέσιμο αρχείο, όπως αναφέρθηκε και παραπάνω, θα έχει όνομα, το όνομα του πακέτου debian (π.χ. debian-package-name). Πρόκειται για το αρχείο εκτέλεσης του προς πακετοποίηση λογισμικού, το οποίο εγκαθίσταται στον κατάλογο /usr/bin/. Το εκτελέσιμο αρχείο είναι στην ουσία μια δέσμη ενεργειών (wrapper script), για να ξεκινήσει η εκτέλεση του .exe αρχείου του λογισμικού μέσω του Wine, αμέσως μετά την εγκατάσταση του λογισμικού στο Ubuntu. Επομένως, είναι απαραίτητη η ύπαρξή του στον κατάλογο additional.
Το εκτελέσιμο αρχείο για ένα λογισμικό που εκτελείται σε Ubuntu με τη βοήθεια του Wine έχει την εξής μορφή:

Editor.png#!/bin/sh
#
# Wrapper script to start a Winelib application once it is installed
#
# Copyright (C) 2002 Alexandre Julliard
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
#

# determine the app Winelib library name
# appname=`basename "$0" .exe`.exe
appname=/usr/share/debian-package-name/filename.exe
if [ -f "$1" ]
then
    file=$(echo "Z:$1" | tr '/' '\\' )
    set "$file"
    echo "Opening «$@»"
else
 set --
fi

# first try explicit WINELOADER
if [ -x "$WINELOADER" ]; then exec "$WINELOADER" "$appname" "$@"; fi

# then default bin directory
if [ -x "/usr/bin/wine" ]; then exec "/usr/bin/wine" "$appname" "$@"; fi

# now try the directory containing $0
appdir=""
case "$0" in
 */*)
 # $0 contains a path, use it
 appdir=`dirname "$0"`
 ;;
 *)
 # no directory in $0, search in PATH
 saved_ifs=$IFS
 IFS=:
 for d in $PATH
 do
  IFS=$saved_ifs
  if [ -x "$d/$0" ]; then appdir="$d"; break; fi
 done
 ;;
esac
if [ -x "$appdir/wine" ]; then exec "$appdir/wine" "$appname" "$@"; fi

# finally look in PATH
exec wine "$appname" "$@"


Dialog-information.pngΣτο 'appname' θα εισάγεται η διαδρομή προς το αρχείο εκτέλεσης του λογισμικού (π.χ. filename.exe), δηλαδή /usr/share/debian-package-name/filename.exe, όπου το debian-package-name είναι το όνομα του πακέτου debian του λογισμικού.
Στο Ubuntu Linux, κάθε νέο λογισμικό (με όνομα πακέτου debian, debian-package-name) εγκαθίσταται στον κατάλογο /usr/share/debian-package-name/.


Με το παραπάνω εκτελέσιμο αρχείο, μετά την εγκατάσταση του λογισμικού, ένα αρχείο του λογισμικού θα πρέπει να είναι δυνατόν να ανοιχθεί και με τους εξής τρεις τρόπους:
i) Με "διπλό κλικ" πάνω στο αντίστοιχο εικονίδιο του αρχείου αυτού.
ii) Από το τερματικό παράθυρο, με την εντολή "όνομα του πακέτου debian" "όνομα του αρχείου" (χωρίς τα εισαγωγικά) και τρέχων κατάλογος να είναι το μονοπάτι στο οποίο είναι αποθηκευμένο το αρχείο αυτό.
iii) Από το τερματικό παράθυρο, με την εντολή "όνομα του πακέτου debian" "μονοπάτι στο οποίο βρίσκεται αποθηκευμένο στο σύστημα το αρχείο".

Μεταγλώττιση και δοκιμή των πακέτων debian

Η μεταγλώττιση και δοκιμή των πακέτων debian είναι ένας τελικός κύκλος δοκιμών, κατά τις οποίες μεταγλωττίζονται τα πακέτα debian, εγκαθίστανται, δοκιμάζονται, απεγκαθίστανται, εάν εμφανίζονται προβλήματα και επαναλαμβάνεται ξανά απ' την αρχή η ίδια διαδικασία, έως ότου όλα να είναι καλά με το πακέτο debian.
Για όλες τις παρακάτω εντολές, θεωρείται ότι ο τρέχων κατάλογος είναι μέσα στο πακέτο debian, δηλαδή ακριβώς έξω από τους καταλόγους upstream και debian.
Καταρχάς, γίνεται μεταγλώττιση του πακέτου, χρησιμοποιώντας το πρόγραμμα debuild, το οποίο εμπεριέχεται στο πακέτο devscripts:

Terminal.pngdebuild -b -tc -uc -us

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

Terminal.pngE: debian-package-name: description-synopsis-is-duplicated

υπάρχουν στη σελίδα http://lintian.debian.org/tags/description-synopsis-is-duplicated.html. Το επόμενο βήμα είναι η εγκατάσταση του πακέτου debian:

Terminal.pngsudo dpkg -i ../debian-package-name_1.0_all.deb

Αφαίρεση του πακέτου debian μπορεί να γίνει με την εντολή:

Terminal.pngsudo apt-get purge debian-package-name_1.0_all

Όπου 'debian-package-name' είναι το όνομα του πακέτου debian. Η επιλογή purge χρησιμοποιείται, ώστε να αφαιρεθούν και τυχόν αρχεία ρυθμίσεων του πακέτου, εάν υπάρχουν.

Παραλλαγές
Ενέργειες
Πλοήγηση
Εργαλεία