[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ next ]
Στο ελεύθερο λογισμικό συνηθίζεται η μελέτη πηγαίου κώδικα ή και η διόρθωση προβληματικού κώδικα. Για να το κάνετε, θα πρέπει να κατεβάσετε τον πηγαίο κώδικα του προγράμματος. Το σύστημα APT παρέχει έναν εύκολο τρόπο για να αποκτήσετε τον πηγαίο κώδικα των προγραμμάτων που περιέχονται στη διανομή, συμπεριλαμβάνοντας όλα τα αρχεία που χρειάζονται για τη δημιουργία ενός αρχείου .deb για το πρόγραμμα.
Επίσης συνηθισμένη χρήση των πηγαίων κωδικών του Debian είναι η προσαρμογή μιας πιο πρόσφατης έκδοσης ενός προγράμματος, από την ασταθή διανομή, για παράδειγμα, για χρήση με την σταθερή διανομή. Η μεταγλώττιση ενός πακέτου που δεν ανήκει στην σταθερή διανομή θα δημιουργήσει πακέτα .deb με εξαρτήσεις προσαρμοσμένες ώστε να ταιριάζουν τα διαθέσιμα πακέτα της διανομής αυτής.
Για να το πετύχετε αυτό, η καταχώρηση deb-src στο αρχείο σας /etc/apt/sources.list θα πρέπει να κατευθυνθεί στην ασταθή, καθώς και να είναι ενεργοποιημένη (να μην αποτελεί σχόλιο). Δείτε τον τομέα Το αρχείο /etc/apt/sources.list, Section 3.1.
Aptitude, the Debian Package Manager is mainly targeted at binary packages. To
use source packages we'll need to use apt-get
instead. To
download a source package, you would use the following command:
$ apt-get source packagename
Αυτή θα κατεβάσει τρία αρχεία: ένα .orig.tar.gz, ένα .dsc και ένα .diff.gz. Σε περίπτωση που έχετε πακέτα που έχουν δημιουργηθεί ειδικά για το Debian, το τελευταίο αυτών των αρχείων δεν κατεβάζεται και το πρώτο συνήθως δε θα έχει το "orig" στο όνομά του.
Το .dsc αρχείο χρησιμοποιείται από το dpkg-source για το ξεπακετάρισμα του πηγαίου πακέτου στον κατάλογο packagename-version. Μέσα σε κάθε κατεβασμένο πηγαίο πακέτο υπάρχει ένας κατάλογος debian/ που περιέχει τα αρχεία που είναι απαραίτητα για τη δημιουργία του πακέτου .deb.
Για να χτίσετε αυτόματα το πακέτο όταν έχει κατέβει, απλά προσθέστε την παράμετρο -b στην γραμμή εντολής,ως εξής:
# apt-get -b source packagename
Αν αποφασίσετε να μην δημιουργήσετε το πακέτο .deb την ώρα του κατεβάσματος, μπορείτε να το δημιουργήσετε αργότερα εκτελώντας:
# dpkg-buildpackage -rfakeroot -uc -b
Notice that to build most packages you'll need at least the following packages:
devscripts
, dpkg-dev
, debhelper
,
fakeroot
, take a look at Εγκαθιστώντας πακέτα, Section
4.4 and install them before proceeding. Most packages will also depend on
compilation tools, so it may be useful to install the
build-essential
package as well. Other packages may be needed,
take a look at Πακέτα απαραίτητα για τη μεταγλώττιση
ενός πηγαίου πακέτου, Section 5.2 for more information.
To install the package built by the commands above one must use the package
manager directly. Take a look at Installing manually
downloaded or locally created debian packages, Section 4.5. A useful tool
is provided by the devscripts
package: debi
. If you
run debi
from inside the source package directory it will look for
the .changes file at the parent directory to discover what are the
binary packages the package produces and will run dpkg
to install
all of them. While this is not very useful if your source package produces
conflicting packages, it might be in most circunstances. Of course you need
root powers in order to perform this.
Υπάρχει διαφορά ανάμεσα στη μέθοδο source του apt-get
και τις άλλες μεθόδους του. Η μέθοδος source μπορεί να
χρησιμοποιηθεί από απλούς χρήστες, χωρίς να απαιτεί κάτι ιδιαίτερο από πλευράς
διαχειριστή. Τα αρχεία κατεβάζονται στον κατάλογο από τον οποίο εκτελέστηκε η
εντολή apt-get source package.
Φυσιολογικά, συγκεκριμένες επικεφαλίδες και κοινόχρηστες βιβλιοθήκες πρέπει να είναι διαθέσιμες ώστε να είναι δυνατή η μεταγλώττιση ενός πηγαίου πακέτου. Όλα τα πηγαία πακέτα έχουν ένα πεδίο στα αρχεία ελέγχου τους που ονομάζεται 'Build-Depends:' το οποίο δηλώνει ποια επιπλέον πακέτα χρειάζονται ώστε να χτιστεί το πακέτο από τον πηγαίο κώδικα.
Το APT έχει έναν απλό τρόπο για να κατεβάζει αυτά τα πακέτα. Απλώς εκτελέστε την εντολή apt-get build-dep package, όπου `package' είναι το όνομα του πακέτου που που θα χτίσετε. Για παράδειγμα:
# apt-get build-dep gmc Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: comerr-dev e2fslibs-dev gdk-imlib-dev imlib-progs libgnome-dev libgnorba-dev libgpmg1-dev 0 packages upgraded, 7 newly installed, 0 to remove and 1 not upgraded. Need to get 1069kB of archives. After unpacking 3514kB will be used. Do you want to continue? [Y/n]
Τα πακέτα που θα εγκατασταθούν είναι τα πακέτα που χρειάζονται ώστε το πακέτο
gmc
να χτιστεί σωστά. Είναι σημαντικό να παρατηρήσετε ότι η
εντολή αυτή δεν ψάχνει για το πηγαίο πακέτο του προγράμματος προς μεταγλώττιση.
Επομένως θα χρειαστεί να εκτελέσετε την εντολή apt-get source
ξεχωριστά για να το αποκτήσετε.
Αν το μόνο που θέλετε είναι να ελέγξετε ποια πακέτα χρειάζονται για να χτίσετε ένα δοθέν πακέτο, υπάρχει μια παραλλαγή της εντολής apt-cache show (δείτε τον τομέα Παίρνοντας πληροφορίες για πακέτα., Chapter 6), η οποία θα παρουσιάσει, ανάμεσα σε άλλες πληροφορίες, την γραμμή Build-Depends που παρουσιάζει τα πακέτα αυτά σε λίστα.
# apt-cache showsrc package
If you want to build a package for debuging purposes to, for example, report a bug -- or fix one, you can use simple environment variables that are supported by most Debian packages.
To build a package which contains unstriped binaries[6] all you need to do is prefix it with DEB_BUILD_OPTIONS=nostrip. Optimizations can also make debuging harder, so you can disable them by adding the noopt string to the DEB_BUILD_OPTIONS variable too. Example:
# dpkg-buildpackage -rfakeroot -uc -b
If what you want is to customize the way the package is built you'll have to go
about editing the debian/rules
file. This means: inside the main
directory created when the source package is extracted there will be a
debian directory, which contains many files. One of them is
special: the rules
file.
This file is usually a Makefile that has targets to configure, build, install
and create the package. For example, if I want to have the
luola
[7] built without sound I can, after downloading and extracting
its source edit the debian/rules
file that looks like this:
[...] configure: configure-stamp configure-stamp: dh_testdir # Add here commands to configure the package. ./configure $(confflags) \ --prefix=/usr \ --mandir=share/man \ --infodir=share/info \ --datadir=share/games \ --bindir=games \ --enable-sound # --enable-sdl-gfx touch configure-stamp [...]
See the --enable-sound switch? If I remove it or replace it with --disable-sound and then rebuild the package using the technique described on Κατεβάζοντας πακέτα κώδικα, Section 5.1 I'll have a luola package that is built with no sound.
If you really want to work with source packages on a daily basis I would
suggest reading the Debian New Maintainers
Guide
and the Debian Policy
,
mainly. Other documentation available from the Debian Developers Corner
may be
useful too.
Sometimes, people want to use a specific version of a program available only on source code, with no Debian package. But the packaging system can be a trouble when doing this. Suppose you want to compile a new version of your email server. All is fine, but many packages in Debian depend on an MTA (Mail Transfer Agent). Since you installed something you compiled by yourself, the packaging system doesn't know about it.
Εδώ μπαίνει στο παιγνίδι η εντολή equivs
. Για να τη
χρησιμοποιήσετε, εγκαταστήστε το πακέτο με αυτό το όνομα. Αυτό που κάνει είναι
να δημιουργεί ένα άδειο πακέτο που έχει τη δυνατότητα να ικανοποιεί τις
εξαρτήσεις, κάνοντας το σύστημα πακέτων να πιστεύει ότι οι εξαρτήσεις είναι
ικανοποιημένες.
Πριν αρχίσουμε, είναι καλό να σας θυμήσουμε ότι υπάρχουν ασφαλέστεροι τρόποι να μεταγλωττίσετε ένα πρόγραμμα, ήδη πακεταρισμένο, για το Debian με διαφορετικές παραμέτρους, και δεν θα πρέπει να χρησιμοποιείτε την εντολή equivs για να αντικαταστήσετε τις εξαρτήσεις εαν δεν ξέρετε. Δείτε τον τομέα Building from source, Chapter 5 για περισσότερες πληροφορίες.
Ας συνεχίσουμε με το παράδειγμα του MTA. Μόλις εγκαταστήσατε το νέο
μεταγλωττισμένο postfix
, το οποίο συνεχίζει με την εγκατάσταση του
πακέτου mutt
. Ξαφνικά αντιλαμβάνεστε ότι το mutt
θέλει να εγκαταστήσει ένα άλλο MTA. Αλλά εσείς έχετε ήδη το δικό σας.
Πηγαίνετε σε κάποιο φάκελο (/tmp
, για παράδειγμα) και εκτελέστε:
# equivs-control name
Αντικαταστήστε το name με το όνομα του αρχείου ελέγχου που θέλετε να δημιουργήσετε. Το αρχείο θα δημιουργηθεί ώς εξής:
Section: misc Priority: optional Standards-Version: 3.0.1 Package: <enter package name; defaults to equivs-dummy> Version: <enter version here; defaults to 1.0> Maintainer: <your name and email address; defaults to username> Pre-Depends: <packages> Depends: <packages> Recommends: <packages> Suggests: <package> Provides: <(virtual)package> Architecture: all Copyright: <copyright file; defaults to GPL2> Changelog: <changelog file; defaults to a generic changelog> Readme: <README.Debian file; defaults to a generic one> Extra-Files: <additional files for the doc directory, comma separated> Description: <short description; defaults to some wise words> long description and info . second paragraph
Για να κάνουμε αυτό που θέλουμε πρέπει να το τροποποιήσουμε. Ρίξτε μια ματιά στη διαμόρφωση των πεδίων και στις περιγραφές τους, δεν υπάρχει λόγος να εξηγήσουμε το καθετί εδώ, ας κάνουμε ότι χρειάζεται:
Section: misc Priority: optional Standards-Version: 3.0.1 Package: mta-local Provides: mail-transport-agent
Ναι, αυτό είναι όλο. Το πακέτο mutt
εξαρτάται από το πακέτο
mail-transport-agent
, που είναι ένα εικονικό πακέτο παρεχόμενο από
όλους τους MTA, μπορούσαμε απλά να ονομάσουμε το πακέτο
mail-transport-agent
, αλλά προτιμήσαμε να χρησιμοποιήσουμε το
σχήμα του εικονικού πακέτου, χρησιμοποιώντας την εντολή Provides.
The Conflicts and Replaces fields are needed, too, so
that APT
and dpkg
will understand they should remove
the currently installed MTA package in favour of the new one you're installing.
Τώρα μένει μόνο να χτίσετε το πακέτο:
# equivs-build name dh_testdir touch build-stamp dh_testdir dh_testroot dh_clean -k # Add here commands to install the package into debian/tmp. touch install-stamp dh_testdir dh_testroot dh_installdocs dh_installchangelogs dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package `name' in `../name_1.0_all.deb'. The package has been created. Attention, the package has been created in the current directory,
Και εγκαταστήστε το αρχείο .deb που προκύπτει.
Όπως μπορείτε να δείτε, υπάρχουν αρκετοί τρόποι χρήσης της equivs
.
Μπορείτε να δημιουργήσετε ακόμα και ένα πακέτο my-favorites, που
εξαρτάται από τα προγράμματα που συνήθως κάνετε εγκατάσταση, για παράδειγμα.
Απλά ελευθερώστε τη φαντασία σας, αλλά να είστε προσεκτικοί.
Είναι σημαντικό να σημειώσετε ότι υπάρχουν παραδείγματα αρχείων ελέγχου στο
αρχείο /usr/share/doc/equivs/examples
. Δείτε τα.
[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ next ]
APT HOWTO
2.0.2 - October 2006kov@debian.org
costas@step.gr