Σε αυτό το σύντομο σημείωμα θα μιλήσουμε για την τεχνολογία OSTree, μια τεχνολογία που θα αλλάξει τον τρόπο με τον οποίο αλληλεπιδρούμε με ένα σύστημα Linux αρκετά σύντομα, αν και αυτό είναι μια μεγάλη υπερβολή. Έχει ήδη αλλάξει τον τρόπο και πολλοί από εμάς την χρησιμοποιούμε ήδη, μόνο που δεν το ξέρουμε. Πως γίνεται αυτό και γιατί δεν την έχεις ακούσει; Απλό είναι η βάση που πατάει το flatpak. Επίσης διανομές όπως το Fedora Silverblue. Ας σηκώσουμε το καπάκι και ας δούμε λοιπόν τι ακριβώς είναι.
Τι είναι το OSTree;
Είχα γράψει για αυτό στο παρελθόν
Αν κάποιος καταλαβαίνει πως δουλεύει εσωτερικά το git μπορεί να καταλάβει και τον εσωτερικό τρόπο λειτουργίας του OSTree. Ουσιαστικά και τα δυο είναι σαν μια αποθήκη που κρατάει τις διαφορετικές εκδόσεις των αρχείων κάτω από ένα φάκελο. Και μπορούμε να επιστρέψουμε ανά πάσα στιγμή σε μια προηγούμενη έκδοση του δέντρου των φακέλων. Αυτό μπορεί να γίνει είτε σε επίπεδο όλου του συστήματος (όπως για παράδειγμα κάνουν διανομές όπως το EndlessOS ή το Fedora Silverblue) είτε σε επίπεδο μεμονωμένων εφαρμογών όπως κάνει ή τεχνολογία Flatpak.
Λίγη εξάσκηση με το τερματικό
Ας φτιάξουμε μια αποθήκη για τα αρχεία που θέλουμε
ostree –repo=myrepo init
και ας προσθέσουμε κάποια αρχεία (σε κάποιο άλλο κατάλογο)
mkdir tree
echo "Hello world!" > tree/hello.txt
Στην συνέχεια θα προσθέσουμε τον κατάλογο στην αποθήκη
ostree –repo=myrepo commit –branch=version1 tree/
Μπορούμε να σβήσουμε πλέον τα αρχικά αρχεία, και να δούμε τι υπάρχει στην αποθήκη
ostree –repo=myrepo refs
ostree –repo=myrepo ls version1
ostree –repo=myrepo cat version1 /hello.txt
επίσης μπορούμε να τα εξάγουμε σε κάποιον κατάλογο
ostree –repo=myrepo checkout version1 tree-checkout/
Μια χαρά δεν είμαστε με τα deb/rpm ;
Κάθε χρήστης έχει κάποια στιγμή πέσει σε μια προβληματική αναβάθμιση. Αλλά ακόμα και αν δεν υπάρχει κάποιο πρόβλημα εφόσον η αναβάθμιση ολοκληρωθεί, έχουμε την περίπτωση που δεν ολοκληρωθεί όπως για παράδειγμα σε μια διακοπή ρεύματος. Αν μιλάμε για κάποιο desktop μπορούμε να επέμβουμε, όπως επίσης και σε ένα server αν εξακολουθούμε να έχουμε δυνατότητα απομακρυσμένης σύνδεσης, αλλά δεν είναι οι μόνες περιπτώσεις. Τι γίνεται σε κάποιο embedded σύστημα όπως πχ σε ένα αυτοκίνητο;
Αν εγκαταστήσουμε μια εφαρμογή και δεν μας αρέσει πως την αφαιρούμε; Η μόνη λύση είναι η χρήση κάτι σαν το Timeshift ή να χρησιμοποιήσουμε τα snapshoots του συστήματος αρχείων, εφόσον είμαστε τυχεροί και αυτό υποστηρίζει μια τέτοια δυνατότητα. Το btrfs υποστηρίζει, αλλά οι περισσότεροι έχουμε ext4 που δεν. Αλλά αυτό είναι έξω από τον έλεγχο του διαχειριστή των πακέτων και είναι μια πολύ δραστική λύση. Και μπορούμε να επιστρέψουμε ένα βήμα μόνο πίσω κάθε φορά.
Δηλαδή αντικαθιστά τα deb/rpm ;
Όχι δεν είναι ένας διαχειριστής πακέτων, είναι απλά μια αποθήκη που δεν ξέρει τι περιέχει και ποιες έχουν τα αρχεία που περιέχει μεταξύ τους. Αυτό είναι η δουλεία ενός διαχειριστή πακέτων.
Αλλά μπορεί να κάνει ένα διαχειριστή πακέτων πολύ ποιο εύχρηστο. Αντί να αλλάζει απλά τα αρχεία στον δίσκο, μπορεί να φτιάξει πρώτα μια νέα δεντρική δομή, που να επικαλύπτει το παλιό σύστημα αρχείων και να κάνει τις αλλαγές εκεί. Στην συνέχεια να αντικαταστήσει το παλιό σύστημα αρχείων με το καινούργιο. Έτσι το παλιό σύστημα μένει απείραχτο, και οι αλλαγές θα γίνουν με την μία και όχι σταδιακά. Αντί να κάνεις αναβάθμιση των πακέτων κάνεις αναβάθμιση όλης της διανομής. Και δεν απαιτεί κάποιο ειδικό σύστημα αρχείων όπως πχ το btrfs. Πραγματικά φοβερό !
Με το OSTree το σύστημα των αρχείων κάτω από το /usr
είναι μόνο για ανάγνωση, κανείς ούτε ο root δεν έχει λόγο να το πειράξει, άρα είναι εύκολο να ελεγχθεί και αν κάποιο κακόβουλο πρόγραμμα κατάφερε να το πειράξει. Μόνο οι κατάλογοι /etc
και `/var’ υπάρχει λόγος να πειραχτούν. Κατά κάποιο τρόπο μοιάζει με τον τρόπο που λειτουργεί ένας server στο cloud. Το σύστημα των αρχείων μένει σταθερό πάντα και απλά ανεβαίνει σε κάποιο server αν αυξηθεί η ζήτηση. Οι αποθήκες για τα δεδομένα είναι εξωτερικές.
Άλλες τεχνολογίες
Οι χρήστες του Mint χρησιμοποιούν το Timeshift και οι χρήστες του SuSE το snapper σε btrfs. Αλλά δεν είναι μια ιδανική λύση όπως είδαμε, θα πρέπει με κάποιο τρόπο να κρατήσεις το /home
και κάποιους άλλους καταλόγους εκτός. Το Timeshift με χαρά θα αντικαταστήσει και τα περιεχόμενα του /etc
για παράδειγμα. Και αλλιώς θα χρησιμοποιήσουν τις δυνατότητες του btrfs τα δυο εργαλεία με ασύμβατους μεταξύ τους τρόπους. Και αν θέλεις docker με Timeshift απλά ατύχησες.
ChromiumOS updater εδώ έχουμε δυο διαφορετικές κατατμήσεις, οι αναβαθμίσεις θα συμβούν σε άλλη κατάτμηση. Μετά την επανεκκίνηση το σύστημα θα χρησιμοποιήσει την δεύτερη κατάτμηση. Μεγάλη σπατάλη χώρου και καθόλου βολικό. Το Ubuntu δουλεύει σε ένα παρόμοιο σχήμα αν και με λίγο λιγότερους περιορισμούς. Οι διανομές Clear Linux και NiXOS χρησιμοποιούν παρόμοιες τεχνολογίες. Το Conda έχει κάποιες ομοιότητες στην χρήση των hardlinks.
Docker/Balena To Docker λειτουργεί με επίπεδα, σαν ένα ρυζόχαρτο σε ένα τεχνικό σχέδιο, όπου πάνω μπορούν να προστεθούν αλλαγές χωρίς να πειράξεις το αρχικό σχέδιο. Ένα μειονέκτημα είναι πως δεν μπορείς να κάνεις έλεγχο για κάποιο μεμονωμένο αρχείο, και προσωπικά πάντα ενοχλούσε την αισθητική μου αυτή η λύση.
Συμπεράσματα
Το Linux αλλάζει και γίνεται ποιο σταθερό και ποιο ασφαλές μέρα με την μέρα. Ανεξάρτητα αν μας αρέσουν αυτές οι αλλαγές, ή μάλλον καλύτερα για να ξέρουμε και να έχουμε γνώμη αν μας αρέσουν αυτές οι αλλαγές, θα πρέπει να γνωρίζουμε κάποια πράγματα για το ποιες είναι αυτές και τι σκοπό εξυπηρετούν. Έχω δει για παράδειγμα χρήστες που να κατηγορούν το flatpak γιατί δεν παρέχει καλή απομόνωση των εφαρμογών και ταυτόχρονα να παραπονιούνται για το ότι η απομόνωση που παρέχει δεν τους βολεύει . (Η απομόνωση των εφαρμογών αξίζει να μελετηθεί σε μελλοντικά αρθράκια)
Ένα από τα προβλήματα είτε αποδοχής είτε απόρριψης μιας τεχνολογίας είναι τουλάχιστον να γνωρίζεις γιατί αυτή δημιουργήθηκε και τι προβλήματα προσπαθεί να λύσει είτε με επιτυχία είτε όχι. Ελπίζω τα σύντομα αυτά σημειώματα να βοηθήσουν στο επίπεδο της αντιπαράθεσης. Ο χώρος εδώ είναι ανοικτός.
Update
O Will Thompson από την ομάδα του Endless OS κάνει μια ανάλυση του αναφερόμενου και του πραγματικού χώρου στον δίσκο με το OS Tree. Το Enless OS ερχετε μαζί με 58 εφαρμογές Flatpak σε 13 διαφορετικά runtimes.
https://blogs.gnome.org/wjjt/2021/11/24/on-flatpak-disk-usage-and-deduplication/