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

Καταγράψτε τη διαδρομή του εκτελέσιμου, την αρχιτεκτονική του και το πρώτο σφάλμα αυτολεξεί πριν αλλάξετε οτιδήποτε.

Τέσσερις διαφορετικές αποτυχίες πίσω από ένα σφάλμα

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

ldd στο δυαδικό και readelf -d στο δυναμικό τμήμα του δείχνουν τι ζητά, κάτι που συνήθως αρκεί για να ξεχωρίσει κανείς πρόβλημα αρχείου από πρόβλημα διεπαφής.

Τι απαιτεί στην πραγματικότητα το OpenSSL 3

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

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

Γιατί η βιβλιοθήκη της διανομής είναι το λάθος μέρος

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

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

Επαληθεύστε τον εκκινητή, όχι την εκκίνηση

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

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

Όπου μια προσωρινή ρύθμιση συμβατότητας είναι αναπόφευκτη, τεκμηριώστε την, περιορίστε την σε αυτό το δυαδικό και αφαιρέστε την όταν φτάσει η υποστηριζόμενη έκδοση.

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