Στον σημερινό οδηγό του Arch Linux, θα συνεχίσουμε με το τρίτο μέρος της σειράς μας σχετικά με την Δημιουργία πακέτων στο Arch Linux και θα ανεβάσουμε το πακέτο μας στο AUR.
To AUR, όπως επισημαίνει και το Wiki, δεν περιέχει binary πακέτα, αλλά επιτρέπει στους χρήστες να ανεβάζουν PKGBUILDs που μπορούν να ληφθούν από άλλους όπως είδαμε στον προηγούμενο οδηγό.
Το PKGBUILD όπως είπαμε είναι ένα αρχείο που περιγράφει το πως θα δημιουργηθεί το πακέτο, που θα εγκατασταθεί κλπ.
Σημείωση: Όλη σειρά οδηγών του Arch Linux Packaging είναι διαθέσιμη εδώ :
Για να μπορούμε να ανεβάσουμε στο AUR το PKGBUILD που δημιουργήσαμε πρέπει να έχουμε ένα λογαριασμό.
Δημιουργία Λογαριασμού AUR
Πριν την δημιουργία του λογαριασμού, θα πρέπει να αφιερώσουμε όσο χρόνο χρειαστεί για να διαβάσουμε και να κατανοήσουμε τα AUR submission guidelines.
Στην συνέχεια πάμε στην σελίδα:
Το πρώτο σκέλος της εγγραφής περιλαμβάνει απλές πληροφορίες για τον χρήστη της οποίες θα πρέπει να συμπληρώσουμε.

Όπως βλέπετε για την δημιουργία του λογαριασμού δεν χρειάζονται πολλές λεπτομέρειες.
Στο τελευταίο σημείο είναι μια ερώτηση ασφαλείας (μια εντολή) στην οποία δίνεται το αποτέλεσμα της εντολής στο τερματικό σας και έχετε την απάντηση της ερώτησης.

Να σημειώσουμε ότι τα προαιρετικά στοιχεία (όσα δεν έχουν σε παρένθεση το required
) μπορούν να συμπληρωθούν αργότερα όταν συνδεθούμε στον λογαριασμό μας.
Σε μερικά όμως από αυτά θα σταθούμε λίγο πιο αναλυτικά.
Υποβολή PGP Fingerprint (προαιρετικό)
Το πεδίο PGP Key Fingerprint
μπορεί να προκαλέσει σύγχυση ως προς το τι αφορά και που χρησιμεύει.
Ας το δούμε πιο προσεκτικά. Για να δημιουργήσουμε το PGP κλειδί θα χρησιμοποιήσουμε το εργαλείο gpg
(το οποίο δεν θα αναλύσουμε εδώ αφού τα έχουμε δείξει αναλυτικά στον οδηγό Πώς να κρυπτογραφήσετε και να αποκρυπτογραφήσετε αρχεία με GPG σε Linux.)
gpg --full-generate-key
Για να εξάγουμε το fingerprint του κλειδιού που μας ζητάει:
gpg --fingerprint toemail@mou.com

Αντιγράφουμε την σειρά που ξεκινάει από 6168 στην δικιά μου περίπτωση. Με αυτόν τον τρόπο μπορούν να πιστοποιήσουν οι ενδιαφερόμενοι ότι ήμαστε εμείς αυτοί οι οποίοι ισχυριζόμαστε αφού φυσικά έχουμε δημοσιεύσει και το Public Key του GPG μας όπως είδαμε στον σχετικό οδηγό. Επίσης μπορείτε να συμπληρώσετε και το nickname σας από το IRC στο οποίο είναι επίσης χρήσιμο το PGP Fingerprint.
Υποβολή SSH Public key
Το δεύτερο σκέλος της δημιουργίας λογαριασμού στο AUR, αφορά αυτούς που θέλουν να υποβάλλουν πακέτα στο AUR.
Αφού λοιπόν θέλουμε να υποβάλουμε το πακέτο μας στο AUR θα πρέπει να δημιουργήσουμε ένα SSH Public Key.
Πάμε λοιπόν στο προσωπικό σας υπολογιστή και εκτελέσετε στο τερματικό:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
-C "AUR packaging"
όπου:
-t
: Ο τύπος κλειδιού (στην περίπτωσή μας ed25519)-f
: Όνομα και διαδρομή αποθήκευσης κλειδιού-C
: Ένα προαιρετικό σχόλιο όπως π.χ. που ή γιατί το χρησιμοποιείτε
Για τις παραπάνω επιλογές διαβάστε τον αναλυτικό οδηγό 10 απλά βήματα για ένα ασφαλές SSH
Αφού πατήσετε Enter, θα σας ζητήσει να δώσετε ένα συνθηματικό το οποίο ασφαλίζει το Ιδιωτικό τμήμα του κλειδιού (αυτό που θα μείνει στον υπολογιστή σας). Εδώ πρέπει να προσθέσετε και ένα συνθηματικό για το ιδιωτικό κλειδί ώστε μόνο εσείς να μπορείτε να το χρησιμοποιήσετε. Για το συνθηματικό, δεν χρειάζεται να παιδεύεστε, τρεις ή τέσσερις απλές λέξεις ενωμένες με σημεία στίξης είναι ένα καλό και ασφαλές μοντέλο για κωδικούς πρόσβασης και συνθηματικά.
Πλέον έχει δημιουργηθεί στην τοποθεσία ~/.ssh
ένα αρχείο id_ed25519.pub
. Το περιεχόμενο του αρχείου πρέπει να τοποθετηθεί στο συγκεκριμένο πλαίσιο.
cat ~/.ssh/id_ed25519.pub

Πως ανεβάζω πακέτο στο AUR;
Έχουμε συμπληρώσει τα στοιχεία που χρειάζεται ο λογαριασμός μας οπότε μένει τώρα να ανεβάσουμε το PKGBUILD που είχαμε φτιάξει στο προηγούμενο οδηγό.
Για να ανεβάσετε το PKGBUILD στο AUR θα χρειαστείτε να κάνετε μια προεργασία. Σε πρώτη φάση δημιουργούμε ένα κενό αποθετήριο, βάζουμε μέσα το αρχείο PKGBUILD και τέλος το στέλνουμε.
Δημιουργία αποθετηρίου
Πάμε σε έναν φάκελο που θέλουμε να κρατάμε το πακέτο μας και τρέχχουμε:
git clone ssh://aur@aur.archlinux.org/ονομα_πακετου_σας.git
Όπου το_ονομα_πακετου_σας
θα είναι και το όνομα της εφαρμογής που ανεβάζετε. Να τονίσω εδώ πως το αποτέλεσμα της εντολής θα πρέπει να σας δώσει το παρακάτω output :
Cloning into 'pkgbase'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
Αν δεν σας έδωσε το παραπάνω, τότε το αποθετήριο υπάρχει και χρησιμοποιείται (υπάρχει ήδη εφαρμογή με το ίδιο όνομα) οπότε δεν μπορείτε να το χρησιμοποιήσετε.
Μπείτε στον φάκελο – αποθετήριο που δημιουργήθηκε και δείτε ότι πράγματι έχει δημιουργηθεί ένα κενό αποθετήριο με τις απαραίτητες ρυθμίσεις.
cd ονομα_πακετου_σας
cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = ssh://aur@aur.archlinux.org/ονομα_πακετου_σας.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Ωραία, μπορούμε τώρα να ορίσουμε τις ρυθμίσεις μας σχετικά με το όνομα και το email με τα οποία θα αποστέλνονται τα commit μας.
git config user.name "Όνομα Επώνυμο ή Nickname" git config user.email "email_mas@example.com"
Μεταφορά του PKGBUILD
Εφόσον το πρώτο βήμα μας έδωσε το άδειο αποθετήριο είναι η ώρα να μεταφέρουμε μέσα το αρχείο PKGBUILD. Εφόσον το μετακινήσαμε πρέπει να δημιουργήσουμε το αρχείο .SRCINFO με την εντολή:
makepkg -g >> PKGBUILD && makepkg --printsrcinfo > .SRCINFO
Με την παραπάνω εντολή, υπολογίστηκε το MD5 Checksum και προστέθηκε στο PKGBUILD και στην συνέχεια δημιουργήθηκε το πακέτο αλλά και το .SRCINFO.
Απο τα αρχεία που δημιουργήθηκαν μας ενδιαφέρει μόνο το PKGBUILD
και το .SRCINFO
. Προσθέτουμε τα αρχεία καθώς και ένα commit στο αποθετήριο μας.
git add PKGBUILD .SRCINFO
gitcommit -m "ena xrisimo minima"
Ανέβασμα στο AUR
Η ώρα του upload ήρθε με την εντολή οπότε δίνουμε:
git push
Πλέον έχετε ανεβάσει το πρώτο σας πακέτο στο AUR.
Ενημέρωση για αναβάθμιση
Έστω τώρα ότι έχετε διορθώσει π.χ. κάτι στον κώδικα της εφαρμογής σας και βγάλατε ένα νέο release στο Github/Gitlab/Bitbucket.
Αυτό το release λογικά το έχετε αριθμήσει οπότε αν το προηγούμενο ήταν η έκδοση v1.0
τότε, εφόσον το νέο release είναι η v1.1
θα πάτε απλά να αλλάξετε το pkgver στο PKGBUILD σας ώστε να ανταποκρίνεται στην νέα έκδοση (π.χ. pkgver=1.2
) και θα αφαιρέσετε την γραμμή md5sums.
Στην συνέχεια θα τρέξετε πάλι τις εντολές:
makepkg -g >> PKGBUILD && makepkg --printsrcinfo > .SRCINFO
git commit -am "o logos pou exw nea ekdosi"
git push
Παράδειγμα με δημιουργία PKGBUILD για ένα shell script
Όσοι παρακολουθήσατε τα Μαθήματα Shell Scripting θα έχετε δημιουργήσει κάποιο χρήσιμο script’ακι το οποίο θέλετε να το κάνετε εύκολα εγκαταστήσιμο για Arch Linux.
Ας πάρουμε παράδειγμα το script Sysglance μια μικρή εφαρμογή δημιουργίας αναφοράς συστήματος. Αυτή την στιγμή είναι διαθέσιμο σε AppImage πακέτο το οποίο δημιουργείται αυτόματα με ένα Github CD/CI pipeline βασισμένο σε Travis . Εμείς όμως θέλουμε να το στείλουμε στο AUR. Οπότε πάμε:
- Πάμε στο Github αποθετήριο της εφαρμογής μας και δημοσιεύουμε ένα νέο Release με tag έστω
v1.0
. Αυτό θα δημιουργήσει αυτόματα έναSource.tar.gz
του οποίο χρειαζόμαστε την διεύθυνση του (δεξί κλικ αντιγραφή τοποθεσίας) και φυσικά τοtag name
(δηλαδή τοv1.0
στην περίπτωσή μας και την διεύθυνσηhttps://github.com/Utappia/sysglance/archive/v1.0.tar.gz
) - Αφού έχουμε τελειώσει με την δημιουργία λογαριασμού στο AUR, πάμε σε έναν φάκελό μας και τρέχουμε :
git clone ssh://aur@aur.archlinux.org/sysglance.git
Cloning into 'sysglance'…
warning: You appear to have cloned an empty repository.
Checking connectivity… done. - Ωραία, μας λέει ότι έχουμε κλωνοποιήσει ένα κενό αποθετήριο άρα το
sysglance
όνομα είναι διαθέσιμο για χρήση. Δημιουργούμε ένα κενό αρχείοPKGBUILD
μέσα στον φάκελο sysglance με το αγαπημένο μας VIMcd sysglance
vim PKGBUILD
όπου συμπληρώνουμε:
# Maintainer: Cerebrux <mail@cerebrux.net>
pkgname=sysglance
pkgver=1.0
pkgrel=1
pkgdesc="Utility for collecting information about the hardware and the operating system by generating a simple report."
arch=( 'any' )
url="https://github.com/Utappia/sysglance"
license=('GPL3')
depends=( 'pciutils' 'usbutils' 'util-linux' 'curl' )
source=("${pkgname}-${pkgver}.tar.gz::https://github.com/Utappia/sysglance/archive/v${pkgver}.tar.gz")
package() {
cd "$pkgname-$pkgver"
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
install -Dm755 sysglance.sh "$pkgdir/usr/bin/sysglance"
}
- Κλείνουμε και αποθηκεύουμε. Στην συνέχεια δημιουργούμε το απαραίτητο
.SRCINFO
προσθέτοντας ταυτόχρονα και το MD5 Checksum στο PKGBUILD μας. (δείτε την επίσημη τεκμηρίωση για το Integrity του δικού σας πακέτου)makepkg -g >> PKGBUILD && makepkg --printsrcinfo > .SRCINFO
- Ωραία έτοιμα τα αρχεία αλλά επειδή είναι ένα νέο αποθετήριο θα ρυθμίσουμε λίγο την υποσημείωση των commit του PKGBUILD μας.
git config user.name "Όνομα Επώνυμο ή Nickname"
git config user.email "email_mas@example.com" - Ας τα προσθέσουμε και ας τα στείλουμε:
git add PKGBUILD .SRCINFO
git commit -m "ena xrisimo minima"
git push - Τώρα που το στείλαμε μπορούμε να δοκιμάσουμε να το κάνουμε εγκατάσταση με το yay:
yay -S sysglance
Ενημέρωση του PKGBUILD για ύπαρξη αναβάθμισης
Σε περίπτωση, που θέλουμε να διορθώσουμε τον κώδικα του script μας και να στείλουμε αναβάθμιση στους χρήστες του script μας, το μόνο που μένει να κάνουμε είναι να
- δημιουργήσουμε ένα νέο Release π.χ. με όνομα v1.1
- έπειτα να πάμε στο PKGBUILD αρχείο μας στο
pkgver=1.0
να το κάνουμεpkgver=1.1
. - να διαγράφουμε όλη την γραμμή
md5sums=('xxxx')
μιας και θα δημιουργηθεί νέο. - στην συνέχεια δημιουργούμε ξανά το απαραίτητο
.SRCINFO
προσθέτοντας ταυτόχρονα και το MD5 Checksum στο PKGBUILD μας με την εντολή που είδαμε - και τέλος χωρίς να χρειαστεί άλλη κίνηση απλά δηλώνουμε τις αλλαγές μας και τα στέλνουμε με μια εντολή:
git commit -am "Fixed something bla bla " && git push
Τώρα όσοι χρησιμοποιούν το script μας και κάνουνε εγκατάσταση αναβαθμίσεις από AUR, θα λάβουν και την αναβάθμιση για το script μας.
Προσωπικές παρατηρήσεις
Το AUR φημίζεται για την πληθώρα πακέτων που έχει καθώς ότι λείπει από τα επίσημα αποθετήρια του Arch κατά 99% θα το βρεις εκεί.
Το AUR λόγω του ότι είναι κοινοτικό αποθετήριο υπάρχουν άνθρωποι που ανεβάζουν ένα πακέτο και ύστερα από καιρό για Χ,Ψ λόγους σταματάνε να το υποστηρίζουν. Εδώ έρχεται η κοινότητα και όποιος θέλει και μπορεί συνεχίσει την υποστήριξη του.
Να πω πως το AUR αυτήν την στιγμή έχει 6860 ορφανά πακέτα. Το λιγότερο που μπορούμε να κάνουμε είναι να βρούμε ένα ορφανό πακέτο και αν μας ενδιαφέρει να συνεχίσουμε την υποστήριξη του.
Παραπομπές:
Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα: