Μια απάντηση σε φόρουμ σας δίνει ένα πλήρες όνομα αρχείου, και το όνομα μοιάζει με τη λύση: ένα .deb, μία εντολή, τέλος. Αυτό που κωδικοποιεί στην πραγματικότητα αυτή η συμβολοσειρά είναι μια έκδοση πακέτου, μια αρχιτεκτονική επεξεργαστή και η σουίτα της διανομής για την οποία χτίστηκε την ημέρα που κάποιος έγραψε τη δημοσίευση. Κανένα από τα τρία δεν περιγράφει αυτόματα την πλακέτα στο γραφείο σας. Η παλιά λήψη είναι ένα στιγμιότυπο της κατάστασης μιας μηχανής, όχι ένα σχέδιο εγκατάστασης για τη δική σας.

Τι καθηλώνει σιωπηλά το όνομα αρχείου

Διαβάστε ένα όνομα όπως openfortivpn_1.17.0-1_armhf.deb από δεξιά προς αριστερά. Το επίθεμα είναι η αρχιτεκτονική για την οποία μεταγλωττίστηκε το δυαδικό, το μεσαίο πεδίο είναι η αναθεώρηση upstream και συσκευασίας, και το σιωπηρό τέταρτο πεδίο είναι το σύνολο βιβλιοθηκών της σουίτας στην οποία χτίστηκε.

Σε εγκατάσταση Raspberry Pi OS 64 bit η αρχιτεκτονική του συστήματος είναι arm64, οπότε το dpkg -i απορρίπτει ένα πακέτο armhf λόγω αναντιστοιχίας αρχιτεκτονικής. Ακόμη και όπου το multiarch επιτρέπει την εγκατάσταση, το δυαδικό περιμένει εκδόσεις βιβλιοθηκών από την έκδοση για την οποία χτίστηκε, και ένα νεότερο βασικό σύστημα μπορεί να μην τις παρέχει πλέον. Το αποτέλεσμα είναι ένα εγκατεστημένο πακέτο του οποίου το εκτελέσιμο δεν εκκινεί, και αυτή είναι η αποτυχία που οι άνθρωποι συνήθως παρερμηνεύουν ως το ίδιο το πρόγραμμα-πελάτη χαλασμένο.

Το ότι η πλακέτα είναι συσκευή ARM δεν κάνει κατάλληλο ένα πακέτο ARM. Η αρχιτεκτονική είναι ένας άξονας· η έκδοση και το ABI είναι οι άλλοι δύο, και αποτυγχάνουν ανεξάρτητα.

Ρωτήστε τη διανομή πριν ζητήσετε σύνδεσμο λήψης

Κάθε συντηρούμενο κανάλι μπορεί να σας πει τι θα εγκαθιστούσε αυτή τη στιγμή. Εκτελέστε το ερώτημα στη μηχανή-στόχο, με τα αποθετήρια που χρησιμοποιεί πραγματικά, πριν σκεφτείτε οποιαδήποτε μεταφορά αρχείου.

cat /etc/os-release
dpkg --print-architecture
apt-cache policy openfortivpn

Μια γραμμή υποψηφίου με έκδοση και όνομα αποθετηρίου σημαίνει ότι η διανομή έχει ήδη χτίσιμο για αυτό το σύστημα. Η απουσία υποψηφίου, ή ένας υποψήφιος από σουίτα που δεν σκοπεύατε να χρησιμοποιήσετε, είναι πληροφορία για τις πηγές σας και όχι για το αν το λογισμικό υπάρχει κάπου.

Αν η ανανέωση των μεταδεδομένων αποτύχει, κρατήστε αυτή την αποτυχία χωριστά από το ζήτημα του πακέτου. Η επίλυση ονομάτων, η μεταφορά αποθετηρίων, μια υπογραφή Release που λείπει και μια σουίτα στο τέλος της ζωής της σπάνε όλα το apt update πριν εμπλακεί το πρόγραμμα-πελάτη. Η διόρθωση πηγών είναι διαφορετικό έργο από την επιλογή προγράμματος-πελάτη VPN, και το να τα μπερδεύει κανείς είναι ο τρόπος με τον οποίο οι άνθρωποι καταλήγουν να δείχνουν ένα τρέχον σύστημα σε μια παρωχημένη έκδοση.

Τι επαληθεύει το apt και τι δεν παίρνει ένα αρχείο που κατέβηκε

Μια κανονική εγκατάσταση ακολουθεί μια αλυσίδα υπογραφών: το αρχείο υπογράφει το ευρετήριό του, το ευρετήριο φέρει κατακερματισμούς για κάθε πακέτο, και το πακέτο πρέπει να ταιριάζει. Η αναφορά ταυτοποίησης αρχείου χωρίζει αυτή την αλυσίδα από την ιδέα του ελέγχου υπογραφής προσαρτημένης σε κάθε μεμονωμένο αρχείο.

Ένα αρχείο που αποθηκεύτηκε από παλιό σύνδεσμο HTTP δεν έχει τίποτα από αυτά. Φτάνει χωρίς ταυτότητα αποθετηρίου, δεν ενημερώνεται όταν η διανομή διορθώνει το πρόγραμμα-πελάτη, και τίποτα δεν καταγράφει ποιος είναι υπεύθυνος για την αντικατάστασή του. Αυτό μπορεί ακόμα να είναι νόμιμη επιλογή για έναν διαχειριστή με καθηλωμένο τεχνούργημα, αλλά η επιλογή πρέπει να συνοδεύεται από ιδιοκτήτη, ένα άθροισμα ελέγχου καταγεγραμμένο κάπου και ένα σχέδιο για την επόμενη ενημέρωση ασφαλείας.

Η καταστολή σφαλμάτων υπογραφής ή η απενεργοποίηση της επαλήθευσης TLS για να συνεχίσει να λειτουργεί μια παλιά οδηγία αφαιρεί το μόνο μέρος της διαδικασίας που έλεγχε κάτι. Αποκαταστήστε τον έλεγχο που αποτυγχάνει αντ' αυτού.

Εγκαταστήστε το πρόγραμμα-πελάτη και μετά κάντε αποσφαλμάτωση της σύνδεσης ξεχωριστά

Όταν υπάρχει συντηρούμενος υποψήφιος, εγκαταστήστε τον μέσω της κανονικής ελεγμένης συναλλαγής και αφήστε τον διαχειριστή πακέτων να καταγράψει τι έκανε.

Αν η ανάπτυξη χρειάζεται πραγματικά χτίσιμο από upstream, ακολουθήστε τις τρέχουσες οδηγίες χτισίματος του έργου και αντιμετωπίστε το ως λογισμικό που συντηρείτε τώρα: τα πακέτα ανάπτυξης, το pkg-config, οι κεφαλίδες της βιβλιοθήκης TLS και ο δαίμονας PPP είναι πραγματικές εξαρτήσεις, όπως και η διαδικασία αφαίρεσης που θα χρειαστείτε αργότερα.

Η εγκατάσταση είναι μόνο το τοπικό στάδιο λογισμικού. Η πύλη πρέπει να αποδεχτεί το πρωτόκολλο και τη ροή ταυτοποίησης του προγράμματος-πελάτη, το πρόγραμμα-πελάτης πρέπει να εμπιστεύεται το πιστοποιητικό που παρουσιάζει η πύλη, και η σήραγγα χρειάζεται ένα λειτουργικό επίπεδο PPP συν διαδρομές και ιδιοκτήτη του resolver. Μια ολοκληρωμένη συναλλαγή πακέτου δεν αποδεικνύει τίποτα για το αν η πύλη δέχεται τον λογαριασμό ή αν το ιδιωτικό εύρος είναι προσβάσιμο. Δοκιμάστε κάθε επίπεδο εκεί όπου σπάει αντί να ξανατρέχετε τον εγκαταστάτη.

Το σχέδιο που πρέπει να αντικαταστήσει το παλιό όνομα αρχείου

Γράψτε πρώτα την ταυτότητα της πλατφόρμας: έκδοση λειτουργικού, αρχιτεκτονική και τη λίστα πηγών που χρησιμοποιείται. Μετά ονομάστε το εξουσιοδοτημένο σημείο από το οποίο προέρχεται το πακέτο, είτε είναι αποθετήριο διανομής, αποθετήριο προμηθευτή με καθηλωμένο κλειδί είτε χτίσιμο που μεταγλωττίζετε και συσκευάζετε μόνοι σας.

Τέλος, ονομάστε τον συντηρητή και τη διαδρομή ενημέρωσης. Ένα Pi που τρέχει ένα πρόγραμμα-πελάτη που δεν ανήκει σε κανέναν θα συνεχίσει να λειτουργεί μέχρι την πρώτη αναβάθμιση βιβλιοθήκης, και τότε το ίδιο νήμα του φόρουμ θα το βρει ξανά κάποιος με το ίδιο πρόβλημα.

Η διορθωμένη πεποίθηση είναι αρκετά απλή για να ειπωθεί σε μία γραμμή: το παλιό πακέτο είναι απόδειξη ότι το πρόγραμμα-πελάτη κάποτε χτίστηκε και έτρεξε, όχι απόδειξη ότι θα εγκατασταθεί στην πλακέτα σας απόψε. Ελέγξτε τους τρεις άξονες και μετά επιλέξτε ένα κανάλι που μπορείτε να συνεχίσετε να ενημερώνετε.

Σχετικά άρθρα