Đổi tên thư viện mã hóa không sửa được ứng dụng cũ
Liên kết tượng trưng thay đổi tệp mà trình nạp mở, không phải giao diện mà tệp nhị phân được biên dịch theo. Hãy kiểm tra loại lỗi trước khi động vào bất kỳ thư viện nào.
Xem xét lỗi của trình nạp theo thứ tự: tệp nào thiếu, tệp nhị phân dùng kiến trúc nào, nó cần ký hiệu nào, và lỗi xảy ra trước hay sau khi tiến trình khởi động. Đó là bốn vấn đề khác nhau, và liên kết tượng trưng chỉ giải quyết vấn đề đầu tiên. Làm theo thứ tự giúp tránh kết cục phổ biến là ứng dụng khởi chạy rồi thất bại ngay ở lần bắt tay đầu tiên. Danh sách kết thúc bằng việc xác minh qua trình khởi chạy thật chứ không phải một bài kiểm tra thủ công.
Ghi lại đường dẫn tệp thực thi, kiến trúc của nó và lỗi đầu tiên nguyên văn trước khi thay đổi bất cứ điều gì.
Bốn kiểu hỏng khác nhau sau một thông báo lỗi
Thiếu một đối tượng chia sẻ là vấn đề tìm tệp: trình nạp tìm một cái tên và không thấy gì. Thiếu một ký hiệu là vấn đề giao diện: tệp tồn tại và không xuất ra thứ mà tệp nhị phân tham chiếu. Lệch phiên bản ký hiệu cũng cùng loại nhưng kèm nhiều chi tiết hơn. Một thuật toán không được hỗ trợ bị báo sau khi khởi động là thay đổi hành vi bên trong một thư viện đã nạp thành công. Mỗi trường hợp cần một phản ứng khác nhau, và chỉ trường hợp đầu tiên là vấn đề tên gọi.
ldd trên tệp nhị phân và readelf -d trên phần động của nó cho thấy nó yêu cầu gì, thường đủ để tách vấn đề tệp khỏi vấn đề giao diện.
OpenSSL 3 thực sự yêu cầu gì
Hướng dẫn chuyển đổi sang OpenSSL 3 nói rõ: các ứng dụng biên dịch theo phiên bản cũ cần ít nhất là biên dịch lại, và khả năng tương thích mã nguồn không được bảo đảm. Các giao diện đã thay đổi, một số bị ngừng khuyến nghị hoặc loại bỏ. Một bí danh tên tệp không thể thực hiện việc biên dịch lại và không thể dạy giao diện mới cho một tệp nhị phân cũ. Liên kết một thư viện mới hơn dưới một cái tên trông cũ hơn tạo ra chương trình có thể khởi chạy rồi hỏng ở một chỗ khó thấy hơn nhiều.
Điều đó tệ hơn một lỗi rõ ràng. Lỗi trình nạp gọi tên vấn đề ngay lập tức, trong khi một lỗi muộn bên trong một thao tác trông giống sự cố mạng hoặc thông tin đăng nhập và đưa cuộc điều tra đi sai hướng.
Vì sao thư viện của bản phân phối là chỗ sai
Thay thế thư viện của bản phân phối để làm hài lòng một ứng dụng sẽ thay đổi môi trường của mọi chương trình trên máy, kể cả các bản cập nhật bảo mật và mọi thứ dựa vào giao diện hiện có. Sao chép một thư viện cũ bên cạnh tệp nhị phân thì hẹp hơn, nhưng vẫn tạo ra một phụ thuộc mà ai đó phải duy trì và vá. Cả hai đều không phải con đường tương thích được chấp thuận, kể cả khi nó có vẻ chạy được vào ngày áp dụng. Một bí danh toàn cục để lại sau thử nghiệm còn tệ hơn, vì không ai nhớ vì sao nó tồn tại.
Dùng ứng dụng và bộ phụ thuộc được nhà cung cấp hỗ trợ cho đúng bản hệ điều hành, kiến trúc và cổng kết nối. Một định dạng gói từng chạy được cho một người không xác lập con đường hiện tại đúng, và một công thức lưu trữ chỉ là bằng chứng về quá khứ.
Xác minh trình khởi chạy, không phải việc khởi chạy
Sau một thay thế được hỗ trợ, hãy kiểm tra trình khởi chạy thông thường phân giải những gì: ldd trên tệp thực thi đã cài, các phiên bản thư viện mà nó nêu tên, và môi trường mà dịch vụ truyền vào. Sau đó chạy xác thực dự kiến và một thao tác thật. Gọi thủ công với môi trường đã sửa chỉ chứng minh shell của bạn khởi chạy được nó. Trình khởi chạy, mục trên màn hình nền hay unit dịch vụ mới là thứ người dùng thực sự chạy.
Nếu không có bản dựng được hỗ trợ, hãy hỏi chủ VPN về phương án thay thế hoặc con đường chuyển đổi. Âm thầm chuyển sang giao thức khác, hoặc cho rằng một ứng dụng có tên nhà cung cấp quen thuộc là đáp ứng được cổng kết nối, chỉ di chuyển lỗi chứ không sửa nó.
Ở đâu không tránh được một thỏa thuận tương thích tạm thời, hãy ghi lại, giới hạn trong tệp nhị phân đó và gỡ bỏ khi bản dựng được hỗ trợ xuất hiện.