Στον σημερινό οδηγό του Arch Linux, θα συνεχίσουμε με το τρίτο μέρος της σειράς μας σχετικά με την Δημιουργία πακέτων στο Arch Linux και θα ανεβάσουμε το πακέτο μας στο AUR.

To AUR, όπως επισημαίνει και το Wiki, δεν περιέχει binary πακέτα, αλλά επιτρέπει στους χρήστες να ανεβάζουν PKGBUILDs που μπορούν να ληφθούν από άλλους όπως είδαμε στον προηγούμενο οδηγό.

Το PKGBUILD όπως είπαμε είναι ένα αρχείο που περιγράφει το πως θα δημιουργηθεί το πακέτο, που θα εγκατασταθεί κλπ.

Σημείωση: Όλη σειρά οδηγών του Arch Linux Packaging είναι διαθέσιμη εδώ :

cerebrux.net/tag/arch-linux-packaging

Για να μπορούμε να ανεβάσουμε στο AUR το PKGBUILD που δημιουργήσαμε πρέπει να έχουμε ένα λογαριασμό.

Advertisements

Δημιουργία Λογαριασμού AUR

Πριν την δημιουργία του λογαριασμού, θα πρέπει να αφιερώσουμε όσο χρόνο χρειαστεί για να διαβάσουμε και να κατανοήσουμε τα AUR submission guidelines.

Στην συνέχεια πάμε στην σελίδα:

Το πρώτο σκέλος της εγγραφής περιλαμβάνει απλές πληροφορίες για τον χρήστη της οποίες θα πρέπει να συμπληρώσουμε.

περιλαμβάνει απλές πληροφορίες

Όπως βλέπετε για την δημιουργία του λογαριασμού δεν χρειάζονται πολλές λεπτομέρειες.

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

αποτέλεσμα της εντολής στο τερματικό σας

Να σημειώσουμε ότι τα προαιρετικά στοιχεία (όσα δεν έχουν σε παρένθεση το required ) μπορούν να συμπληρωθούν αργότερα όταν συνδεθούμε στον λογαριασμό μας.

Σε μερικά όμως από αυτά θα σταθούμε λίγο πιο αναλυτικά.

Υποβολή PGP Fingerprint (προαιρετικό)

Το πεδίο PGP Key Fingerprint μπορεί να προκαλέσει σύγχυση ως προς το τι αφορά και που χρησιμεύει.

Ας το δούμε πιο προσεκτικά. Για να δημιουργήσουμε το PGP κλειδί θα χρησιμοποιήσουμε το εργαλείο gpg (το οποίο δεν θα αναλύσουμε εδώ αφού τα έχουμε δείξει αναλυτικά στον οδηγό Πώς να κρυπτογραφήσετε και να αποκρυπτογραφήσετε αρχεία με GPG σε Linux.)

gpg --full-generate-key

Για να εξάγουμε το fingerprint του κλειδιού που μας ζητάει:

gpg --fingerprint toemail@mou.com
εξάγουμε το fingerprint του κλειδιού

Αντιγράφουμε την σειρά που ξεκινάει από 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
Το περιεχόμενο του αρχείου πρέπει να τοποθετηθεί στο συγκεκριμένο πλαίσιο
Advertisements

Πως ανεβάζω πακέτο στο 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 
git commit -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
Advertisements

Παράδειγμα με δημιουργία 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 με το αγαπημένο μας VIM
    cd 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 ορφανά πακέτα. Το λιγότερο που μπορούμε να κάνουμε είναι να βρούμε ένα ορφανό πακέτο και αν μας ενδιαφέρει να συνεχίσουμε την υποστήριξη του.

Παραπομπές: