PKGBUILD (Ελληνικά)
Το PKGBUILD είναι το αρχείο περιγραφής της διαδικασίας δημιουργίας πακέτων του Arch Linux.
Τα πακέτα στο Arch Linux δημιουργούνται με το εργαλείο makepkg και οι πληροφορίες για τη δημιουργία τους βρίσκονται στο αρχείο PKGBUILD. Όταν εκτελείται η εντολή makepkg, το πρόγραμμα ψάχνει για ένα αρχείο PKGBUILD
στον τρέχον κατάλογο και ακολουθεί τις οδηγίες είτε για την μεταγλώττιση είτε για την ανάκτηση των αρχείων που απαιτούνται για τη δημιουργία του πακέτου (pkgname.pkg.tar.xz
) το οποίο τελικά θα περιέχει όλα τα binary αρχεία καθώς και τις οδηγίες εγκατάστασης και μπορεί πλέον να εγκατασταθεί απευθείας μέσω του pacman.
Μεταβλητές
Οι παρακάτω μεταβλητές μπορούν να συμπληρωθούν στο αρχείο PKGBUILD.
Είναι συνήθης πρακτική να ορίζει κανείς τις μεταβλητές με την ίδια σειρά με την οποία παρουσιάζονται εδώ. Ωστόσο, αυτό δεν είναι αναγκαστικό, εφόσον χρησιμοποιείται ορθή σύνταξη Bash.
pkgname
Το όνομα του πακέτου. Πρέπει να περιέχει είτε αλφαριθμητικούς χαρακτήρες και/ή τους χαρακτήρες @ . _ + - (at, τελεία, underscore, συν, παύλα). Όλοι οι χαρακτήρες πρέπει να είναι πεζοί ενώ τα ονόματα δεν πρέπει να ξεκινάνε με παύλες. Για λόγους συνοχής, το pkgname
πρέπει να αντιστοιχεί στο όνομα που χρησιμοποιείται στο tarball του πηγαίου κώδικα του προγράμματος για το οποίο προορίζεται το PKGBUILD. Για παράδειγμα, αν ο πηγαίος κώδικας του προγράμματος διαμοιράζεται ως foobar-2.5.tar.gz
τότε η μεταβλητή pkgname
πρέπει να είναι foobar
. Ο τρέχον ενεργός κατάλογος στον οποίο βρίσκεται το PKGBUILD πρέπει επίσης να ταιριάζει με το pkgname
.
pkgver
Η τρέχουσα έκδοση του πακέτου. Αυτή η τιμή πρέπει να είναι ίδια με την έκδοση την οποία δημοσίευσε ο προγραμματιστής του πακέτου. Μπορεί να περιέχει χαρακτήρες, αριθμούς και τελείες αλλά δεν πρέπει να περιέχει παύλες. Αν ο αρχικός προγραμματιστής χρησιμοποιεί παύλες στην έκδοση του πακέτου, τότε αυτές πρέπει να αντικατασταθούν με underscore. Για παράδειγμα, αν η έκδοση είναι 0.99-10 τότε πρέπει να αλλαχτεί σε 0.99_10. Αν η μεταβλητή pkgver
χρησιμοποιείται μετέπειτα στο PKGBUILD τότε το underscore μπορεί εύκολα να αντικατασταθεί. Για παράδειγμα:
source=($pkgname-${pkgver//_/-}.tar.gz)
pkgrel
Ο αριθμός έκδοσης του πακέτου, ο οποίος αφορά το Arch Linux. Αυτή η μεταβλητή επιτρέπει στους χρήστες να διαφοροποιούν συνεχόμενα builds της ίδιας έκδοσης του πακέτου. Όταν βγαίνει μια νέα έκδοση του πακέτου ή ένα πακέτο δημιουργείται πρώτη φορά τότε το pkgrel
πρέπει να είναι 1. Καθώς βγαίνουν διορθώσεις ή βελτιστοποιήσεις στο PKGBUILD το pkgrel
αυξάνει κατά ένα και το πακέτο επαναδημοσιεύεται.
epoch
Μια ακέραια τιμή, ειδική για το Arch Linux, η οποία υπαγορεύει ως προς ποιο 'χρονικό' πρέπει να συγκριθούν οι αριθμοί έκδοσης. Η τιμή αυτή επιτρέπει την παράκαμψη των συνήθων κανόνων σύγκρισης έκδοσης για πακέτα τα οποία έχουν ασυνεπή αρίθμηση έκδοσης, απαιτούν υποβάθμιση, αλλαγή πλαισίου αρίθμησης, κτλ. Εξ' ορισμού, τα πακέτα θεωρείται πως έχουν τιμή epoch 0. Μην χρησιμοποιείτε το πεδίο αυτό εκτός και αν γνωρίζετε τι κάνετε.
pkgdesc
Περιγραφή του πακέτου. Η έκταση της περιγραφής πρέπει να είναι το πολύ 80 χαρακτήρες και δεν πρέπει να περιλαμβάνει το όνομα του πακέτου με αυτοαναφορικό τρόπο. Για παράδειγμα, "Το Nedit είναι ένας επεξεργαστής κειμένου για το X11" θα έπρεπε να γραφεί ως "ένας επεξεργαστής κειμένου για το X11."
arch
Μια σειρά αρχιτεκτονικών στις οποίες είναι γνωστό ότι το αρχείο PKGBUILD
μπορεί να λειτουργήσει. Προς το παρόν, πρέπει να περιέχει i686
ή/και x86_64
, arch=('i686' 'x86_64')
. Η τιμή any
μπορεί να χρησιμοποιηθεί για πακέτα ανεξαρτήτου αρχιτεκτονικής.
Μπορείτε να προσπελάσετε την αρχιτεκτονική του συστήματος που απευθύνεστε με την μεταβλητή $CARCH
κατά την διάρκεια της μεταγλώττισης, ακόμα και κατά τον ορισμό μεταβλητών. Δείτε επίσης FS#16352. Παράδειγμα:
depends=(foobar) if test "$CARCH" == x86_64; then depends+=(lib32-glibc) fi
url
Η διεύθυνση URL της επίσημης ιστοσελίδας του λογισμικού του οποίου το πακέτο δημιουργείται.
license
Η άδεια υπό την οποία διανέμεται το λογισμικό. Το πακέτο licenses έχει δημιουργηθεί στην ομάδα πακέτων [core]
το οποίο συγκεντρώνει τις κοινά χρησιμοποιούμενες άδειες στον κατάλογο /usr/share/licenses/common
, π.χ. /usr/share/licenses/common/GPL
. Εάν ένα πακέτο έχει διανεμηθεί υπό μιας εκ των προαναφερθέντων αδειών, η τιμή πρέπει να είναι ίση με το όνομα του καταλόγου, π.χ. license=('GPL')
. Εάν η ανάλογη άδεια εμπεριέχεται στο επίσημο πακέτο licenses, πρέπει να ακολουθεί η παρακάτω διαδικασία:
- Το αρχείο(α) άδειας πρέπει να συμπεριληφθεί στο κατάλογο:
/usr/share/licenses/pkgname/
, π.χ./usr/share/licenses/foobar/LICENSE
. - Αν το πηγαίο αρχείο tarball ΔΕΝ περιέχει τις λεπτομέρειες αδείας και η άδεια εμφανίζεται μόνο σε κάποια άλλη τοποθεσία, π.χ. μια ιστοσελίδα, τότε θα πρέπει να αντιγράψετε την άδεια σε ένα αρχείο και να το συμπεριλάβετε.
- Προσθέστε το ενδεικτικό
custom
στο πεδίοlicense
. Προαιρετικά, μπορείτε να αντικαταστήσετε το ενδεικτικόcustom
με τοcustom:όνομα αδείας
. Όταν μια άδεια χρησιμοποιηθεί σε δύο ή περισσότερα πακέτα σε επίσημο repository (συμπεριλαμβανομένου του[community]
), προστίθεται στο πακέτο licenses.
- Οι άδειες BSD, MIT, zlib/png και Python είναι ειδικές περιπτώσεις και δεν ήταν δυνατό να συμπεριληφθούν στο πακέτο licenses. για την διατήρηση της απλότητας του πεδίου
license
, αντιμετωπίζονται σαν κοινή άδεια (license=('BSD')
,license=('MIT')
,license=('ZLIB')
καιlicense=('Python')
) αλλά τεχνικά μιλώντας, κάθε μια είναι μια κοινή άδεια διότι κάθε μια ακολουθεί την δική της γραμμή πνευματικών δικαιωμάτων. Οποιαδήποτε πακέτα έχουν αδειοδοτηθεί υπό μια εκ των τεσσάρων αδειών θα πρέπει να έχουν την δική τους μοναδική άδεια αποθηκευμένη στον κατάλογο/usr/share/licenses/pkgname
. Κάποια πακέτα μπορεί να μην καλύπτονται από μια και μόνο άδεια. Σε αυτές τις περιπτώσεις, μπορούν να γίνουν πολλαπλές καταχωρήσεις στο πεδίο license, π.χ.license=('GPL' 'custom:όνομα αδείας')
. - Επιπροσθέτως, η (L)GPL έχει πολλές εκδόσεις και παραλλαγές αυτών. Όσον αφορά το λογισμικό (L)GPL, η σύμβαση είναι:
- (L)GPL - (L)GPLv2 ή οποιαδήποτε μεταγεννέστερη έκδοση
- (L)GPL2 - (L)GPL2 μόνο
- (L)GPL3 - (L)GPL3 ή οποιαδήποτε μεταγεννέστερη έκδοση
- Εάν έπειτα από διερεύνηση του θέματος δεν μπορεί να προσδιοριστεί κάποια άδεια, το
PKGBUILD.proto
προτείνει την χρήση του ενδεικτικούunknown
. Παρόλα αυτά, το upstream πρέπει να ειδοποιηθεί για τους όρους υπό τους οποίους το λογισμικό είναι ( και δεν είναι) διαθέσιμο.
μεταγλώττισης
με την χρήση ανάλογης εντολής με την: sed -n '/This software/,/ thereof./p' ReadMe.txt > LICENSE
.groups
Η ομάδα στη οποία ανήκει το πακέτο. Για παράδειγμα, όταν εγκαταστήσετε το πακέτο kdebase[broken link: package not found], εγκαθίστανται όλα τα πακέτα τα οποία ανήκουν στην ομάδα kde[broken link: package not found].
depends
Μια σειρά ονομάτων πακέτων τα οποία πρέπει να εγκατασταθούν πριν να μπορέσει το εν λόγω λογισμικό να εκτελεστεί. Αν κάποιο λογισμικό απαιτεί την ύπαρξη μιας ελάχιστης έκδοσης κάποιας εξάρτησης, ο τελεστής >=
θα πρέπει να χρησιμοποιηθεί για να υποδείξει αυτήν την απαίτηση, π.χ. depends=('foobar>=1.8.0')
. δεν χρειάζεται να παραθέσετε τα πακέτα από τα οποία εξαρτάται το λογισμικό σας εάν άλλα πακέτα από τα οποία εξαρτάται το λογισμικό σας έχουν ήδη ορίσει τα πακέτα αυτά ως εξαρτήσεις τους. Επί παραδείγματι, το πακέτο gtk2 εξαρτάται από το πακέτο glib2 και το πακέτο glibc. Όμως, το πακέτο glibc δεν χρειάζεται να παρατεθεί ως εξάρτηση για το πακέτο gtk2 διότι είναι μια εκ των εξαρτήσεων του πακέτου glib2.
makedepends
Μια σειρά ονομάτων πακέτων τα οποία πρέπει να εγκατασταθούν για να είναι δυνατή η μεταγλώττιση του λογισμικού αλλά δεν είναι απαραίτητα για την χρήση του μετά την εγκατάσταση. Μπορείτε να ορίσετε την ελάχιστη έκδοση εξάρτησης των πακέτων με τον ίδιο τρόπο που περιγράφηκε στην παράγραφο depends
.
makedepends
checkdepends
Μια σειρά πακέτων από τα οποία εξαρτάται το εν λόγω πακέτο ώστε να εκτελέσει την σειρά δοκιμών του τα οποία όμως δεν χρειάζονται κατά την κανονική εκτέλεση. Τα πακέτα που παραθέτονται σε αυτή την λίστα ακολουθούν το ίδιο πρότυπο με το πεδίο depends. Αυτές οι εξαρτήσεις λαμβάνονται υπόψη μόνο όταν η συνάρτηση check() είναι παρούσα και πρόκειται να εκτελεστεί από το makepkg.
optdepends
Μια σειρά ονομάτων πακέτων τα οποία δεν χρειάζονται για την λειτουργικότητα του λογισμικού αλλά παρέχουν επιπρόσθετα χαρακτηριστικά. Μια σύντομη περιγραφή του τι παρέχει το κάθε πακέτο πρέπει επίσης να σημειωθεί. Ένα πεδίο optdepends
μπορεί να έχει την εξής μορφή:
optdepends=('cups: printing support' 'sane: scanners support' 'libgphoto2: digital cameras support' 'alsa-lib: sound support' 'giflib: GIF images support' 'libjpeg: JPEG images support' 'libpng: PNG images support')
provides
Μια σειρά ονομάτων πακέτων (ή ένα εικονικό πακέτο όπως το cron
η το sh
) των οποίων τα χαρακτηριστικά παρέχει το τρέχον πακέτο. Πακέτα τα οποία παρέχουν τα ίδια πράγματα μπορούν να εγκατασταθούν ταυτόχρονα εκτός εάν συγκρούονται μεταξύ τους (δείτε παρακάτω). Εάν χρησιμοποιήσετε την μεταβλητή αυτή, θα πρέπει να προσθέσετε την έκδοση (pkgver
και ίσως την pkgrel
) την οποία θα παράσχει αυτό το πακέτο εάν οι εξαρτήσεις επηρεάζονται από αυτό. Για παράδειγμα, Αν παρέχετε μια προσαρμοσμένη έκδοση του πακέτου qt με όνομα qt-foobar έκδοση 3.3.8 η οποία παρέχει το πακέτο qt τότε το πεδίο provides
θα πρέπει να είναι κάπως έτσι provides=('qt=3.3.8')
. Εάν χρησιμοποιούσαμε το provides=('qt')
θα αποτύγχαναν να ικανοποιηθούν εκείνες οι εξαρτήσεις οι οποίες απαιτούν μια συγκεκριμένη έκδοση του qt. Μην προσθέσετε το πεδίο pkgname
στο πεδίο provides , διότι γίνεται αυτόματα.
conflicts
Μία σειρά ονομάτων πακέτων τα οποία μπορεί να δημιουργήσουν προβλήματα με το τρέχον πακέτο εάν εγκατασταθεί. Το Πακέτο με αυτό το όνομα και όλα τα πακέτα που παρέχει
όπως εικονικά πακέτα με αυτό το όνομα, θα αφαιρεθούν. Μπορείτε να ορίσετε τις ιδιότητες έκδοσης των συγκρουόμενων πακέτων όπως και στο πεδίο depends
.
replaces
Μια σειρά παρωχημένων ονομάτων πακέτων τα οποία αντικαθίστανται από το τρέχον πακέτο, π.χ. replaces=('wireshark')
αντικαθίσταται με το πακέτο wireshark-gtk[broken link: replaced by wireshark-qt]. μετά τον συγχρονισμό η εντολή pacman -Sy
, θα αντικαταστήσει άμεσα ένα εγκατεστημένο πακέτο μόλις εντοπίσει κάποιο άλλο πακέτο με την κατάλληλη ετικέτα replaces
στα αποθετήρια. Αν παρέχετε μια εναλλακτική έκδοση για ένα ήδη υπάρχον ένα άλλο πακέτο, Χρησιμοποιείστε την μεταβλητή conflicts
η οποία λαμβάνεται υπόψη μόνο κατά την εγκατάσταση του συγκρουόμενου πακέτου.
backup
Μια σειρά αρχείων τα οποία περιέχουν τροποποιήσεις των χρηστών του συστήματος και θα πρέπει να διατηρηθούν κατά την αναβάθμιση η την απομάκρυνση ενός πακέτου, αποσκοπεί κυρίως σε αρχεία ρυθμίσεων στον κατάλογο /etc
.
Κατά την αναβάθμιση, η νέα έκδοση μπορεί να αποθηκευτεί ως file.pacnew
ώστε να αποφευχθεί η αντικατάσταση ενός αρχείου που υπάρχει ήδη και έχει τροποποιηθεί απο τον χρήστη. Ομοίως, όταν το πακέτο απομακρύνεται, το τροποποιημένο από το χρήστη αρχείο θα διατηρηθεί ως file.pacsave
εκτός και αν το πακέτο απομακρύνθηκε με την εντολή pacman -Rn
.
Οι διαδρομές των αρχείων σε αυτό το πεδίο θα πρέπει να είναι σχετικές διαδρομές (π.χ. etc/pacman.conf
) και όχι απόλυτες (π.χ. /etc/pacman.conf
). Δείτε επίσης Pacnew and Pacsave files.
options
Αυτό το πεδίο σας επιτρέπει να παρακάμψετε ένα μέρος της προκαθορισμένης συμπεριφοράς του makepkg, ορισμένη στο αρχείο /etc/makepkg.conf. Για να ορίσετε μια επιλογή, προσθέστε το όνομα της επιλογής στο πεδίο. Για να αντιστρέψετε την προκαθορισμένη επιλογή , εισάγετε ένα ! στην αρχή της επιλογής. Οι ακόλουθες επιλογές μπορούν να προστεθούν στο πεδίο:
- strip - Αφαιρεί σύμβολα από εκτελέσιμα αρχεία και βιβλιοθήκες. Αν χρησιμοποιείτε συχνά έναν ανιχνευτή σφαλμάτων σε προγράμματα η βιβλιοθήκες, ίσως είναι σκόπιμο να απενεργοποιήσετε την επιλογή αυτή.
-
docs - Αποθηκεύει καταλόγους
/doc
. -
libtool - Διατηρεί τα αρχεία libtool (
.la
) στα πακέτα. - emptydirs - Διατηρεί τους κενούς καταλόγους στα πακέτα.
- zipman - Συμπιέζει τις σελίδες man και info με την εφαρμογή gzip.
-
ccache - Επιτρέπει την χρήση
ccache
κατά την δημιουργία του πακέτου. Χρησιμεύει περισσότερο στη αρνητική του μορφή!ccache
με συγκεκριμένα πακέτα που αντιμετωπίζουν προβλήματα κατά την δημιουργία τους με την επιλογήccache
ενεργή. -
distcc - Επιτρέπει την χρήση
distcc
κατά την δημιουργία του πακέτου. Χρησιμεύει περισσότερο στη αρνητική του μορφή!distcc
με συγκεκριμένα πακέτα που αντιμετωπίζουν προβλήματα κατά την δημιουργία τους με την επιλογήdistcc
ενεργή. -
buildflags - Επιτρέπει την χρήση ορισμένων από τον χρήστη
buildflags
(CFLAGS, CXXFLAGS, LDFLAGS) κατά την δημιουργία του πακέτου. Χρησιμεύει περισσότερο στη αρνητική του μορφή!buildflags
με συγκεκριμένα πακέτα που αντιμετωπίζουν προβλήματα κατά την δημιουργία τους με τροποποιημένεςbuildflags
. -
makeflags - Επιτρέπει την χρήση ορισμένων από τον χρήστη
makeflags
κατά την δημιουργία του πακέτου. Χρησιμεύει περισσότερο στη αρνητική του μορφή!makeflags
με συγκεκριμένα πακέτα που αντιμετωπίζουν προβλήματα κατά την δημιουργία τους με τροποποιημένεςmakeflags
.
install
Το όνομα της δέσμης εντολών .install
η οποία θα συμπεριληφθεί στο πακέτο. Το pacman έχει την δυνατότητα να αποθηκεύει και να εκτελεί μια δέσμη εντολών ανά πακέτο κατά την εγκατάσταση, την απομάκρυνση η την αναβάθμιση ενός πακέτου. Η δέσμη εντολών περιέχει τις ακόλουθες συναρτήσεις οι οποίες εκτελούνται σε διάφορες χρονικές στιγμές:
- pre_install - Η δέσμη εντολών εκτελείται ακριβώς πριν εξαχθούν τα αρχεία. Δέχεται ένα όρισμα: η νέα έκδοση του πακέτου.
- post_install - Η δέσμη εντολών εκτελείται ακριβώς μετά την εξαγωγή των αρχείων. Δέχεται ένα όρισμα: η νέα έκδοση του πακέτου.
- pre_upgrade - Η δέσμη εντολών εκτελείται πριν εξαχθούν τα αρχεία. Δέχεται δύο ορίσματα κατά σειρά: η νέα έκδοση του πακέτου, η παλαιά έκδοση του πακέτου.
- post_upgrade - Η δέσμη εντολών εκτελείται μετά την εξαγωγή των αρχείων. Δέχεται δύο ορίσματα κατά σειρά: η νέα έκδοση του πακέτου, η παλαιά έκδοση του πακέτου.
- pre_remove - Η δέσμη εντολών εκτελείται ακριβώς πρίν απομακρυνθούν τα αρχεία. Δέχεται ένα όρισμα: η παλαιά έκδοση του πακέτου.
- post_remove - Η δέσμη εντολών εκτελείται ακριβώς μετά την απομάκρυνση των αρχείων. Δέχεται ένα όρισμα: η παλαιά έκδοση του πακέτου.
Κάθε συνάρτηση εκτελείται υπό αλλαγή ριζικού καταλόγου (chroot) μέσα στον κατάλογο εγκατάστασης του pacman. Δείτε το νήμα.
.install
παρέχεται στην διαδρομή /usr/share/pacman/proto.install
.changelog
Το όνομα του αρχείου καταγραφής αλλάγών του πακέτου. Για να δείτε το αρχείο καταγραφής εγκατεστημένων πακέτων (δεδομένου οτι παρέχουν τέτοιο αρχείο):
pacman -Qc pkgname
/usr/share/pacman/ChangeLog.proto
source
Μια σειρά αρχείων τα οποία χρειάζονται για την δημιουργία του πακέτου. Πρέπει να περιέχει την τοποθεσία των πηγαίων αρχείων του λογισμικού, τα οποία συνήθως βρίσκονται σε μια πλήρη διεύθυνση HTTP ή FTP. Οι μεταβλητές που ορίστηκαν προηγουμένως pkgname
και pkgver
μπορούν να χρησιμοποιηθούν εδώ (π.χ. source=(http://example.com/$pkgname-$pkgver.tar.gz)
)
PKGBUILD
και προσθέστε το όνομα αρχείου στο πεδίο αυτό. Οποιεσδήποτε διαδρομές προστεθούν εδώ επιλύονται σε σχέση με τον κατάλογο που βρίσκεται το αρχείο PKGBUILD
. Πριν ξεκινήσει η πραγματική διαδικασία δημιουργίας του πακέτου, όλα τα αρχεία που αναφέρονται στο πεδίο αυτό θα μεταφορτωθούν ή θα ελεγχθεί η ύπαρξη τους, και το makepkg
δεν θα συνεχίσει εάν λείπουν.filename::fileuri
, για παράδειγμα $pkgname-$pkgver.zip::http://199.91.152.193/7pd0l2tpkidg/jg2e1cynwii/Warez_collection_16.4.exe
noextract
Μια σειρά αρχείων τα οποία παραθέτονται στο πεδίο source
, δεν πρέπει να εξαχθούν από την συμπιεσμένη τους μορφή με το makepkg
. Εφαρμόζεται κυρίως σε συγκεκριμένα αρχεία zip τα οποία δεν μπορεί να χειριστεί το /usr/bin/bsdtar
διότι το libarchive αντιμετωπίζει όλα τα αρχεία ως ροές σε αντίθεση με το unzip που ακολουθεί την λογική της τυχαίας προσπέλασης. Σε αυτές τις περιπτώσεις το unzip
πρέπει να παρατίθεται στο πεδίο makedepends
και η πρώτη γραμμή της συνάρτησης build() πρέπει να περιέχει:
cd "$srcdir/$pkgname-$pkgver" unzip [source].zip
Ας σημειωθεί ότι ενώ το πεδίο source
δέχεται URLs, το noextract
αντιπροσωπεύει απλά το κομμάτι του ονόματος αρχείου . Επί παραδείγματι, θα κάνατε κάτι σαν αυτό (απλοποιημένο από το αρχείο PKGBUILD[dead link 2021-11-15 ⓘ] του grub2 ):
source=("http://ftp.archlinux.org/other/grub2/grub2_extras_lua_r20.tar.xz") noextract=("grub2_extras_lua_r20.tar.xz")
Για να μην εξάγετε τίποτα, μπορείτε να κάνετε κάτι έξυπνο όπως (υιοθετημένο από το αρχείο firefox-i18n[dead link 2021-11-15 ⓘ]):
noextract=(${source[@]##*/})
basename
. Εάν έχετε διαβάσει ως εδώ θα πρέπει να αντιλαμβάνεστε το νόημα.md5sums
Μια σειρά από MD5 checksums των αρχείων που παραθέτονται στο πεδίο source
. Μόλις όλα τα αρχεία του πεδίου source
είναι διαθέσιμα, Ένα MD5 hash για κάθε αρχείο θα παραχθεί αυτόματα και θα συγκριθεί με τις τιμές αυτού του πεδίου με την ίδια σειρά που εμφανίζονται στο πεδίο source
. Ενώ η σειρά των πηγαίων αρχείων δεν έχει σημασία, είναι σημαντικό να ακολουθεί την σειρά αυτού του πεδίου μιας και το makepkg
δεν μπορεί να μαντέψει ποιο checksum ανήκει σε ποιό πηγαίο αρχείο. Μπορείτε γρήγορα και εύκολα να παράγετε τις τιμές του πεδίου αυτού εκτελώντας την εντολή makepkg -g
στον κατάλογο τον οποίο βρίσκεται το αρχείο PKGBUILD
. Ας σημειωθεί ότι ο αλγόριθμος MD5 έχει γνωστές αδυναμίες, οπότε θα πρέπει να σκεφτείτε την χρήση ενός ισχυρότερου εναλλακτικού.
sha1sums
Μια σειρά από SHA-1 160-bit checksums. Αποτελεί εναλλακτικό των md5sums
που περιγράφονται παραπάνω, όμως είναι επίσης γνωστό ότι έχει αδυναμίες, οπότε θα πρέπει να σκεφτείτε την χρήση ενός ισχυρότερου εναλλακτικού. Για να ενεργοποιήσετε την χρήση και την παραγωγή αυτών των checksums, σιγουρευτείτε ότι ρυθμίσατε την επιλογή INTEGRITY_CHECK
στο αρχείο /etc/makepkg.conf
. Δείτε τις σελίδες makepkg.conf(5).
sha256sums, sha384sums, sha512sums
Μια σειρά από SHA-2 checksums με ακολουθίες των 256, 384 και 512 bits αντίστοιχα. Αποτελούν εναλλακτικές των md5sums
που περιγράφηκαν παραπάνω και γενικά πιστεύεται ότι είναι ισχυρότερες. Για να ενεργοποιήσετε την χρήση και την παραγωγή αυτών των checksums, σιγουρευτείτε ότι ρυθμίσατε την επιλογή INTEGRITY_CHECK
στο αρχείο /etc/makepkg.conf
. Δείτε τις σελίδες man makepkg.conf(5).