Tên bản phân phối, glibc hay trình biên dịch: trình cài đặt kiểm tra gì
Một trình cài đặt từ chối bản dẫn xuất của bạn có thể đang đọc tên bản phân phối, phiên bản môi trường chạy hay trình biên dịch. Chỉ một trong số đó quyết định tệp nhị phân có chạy được hay không.
Trình cài đặt in ra “unsupported distribution”, bạn sửa một chuỗi và nó tiếp tục cho đến khi thất bại một phút sau đó với lỗi của bộ nạp. Chuỗi sự kiện đó chính là triệu chứng đáng nhận ra: lần thất bại đầu là một phép kiểm tra nhận diện, lần thứ hai là một ranh giới tương thích. Đó là hai vấn đề khác nhau tình cờ xuất hiện trong cùng một terminal. Sửa phép kiểm tra chỉ có thể đưa bạn từ cái thứ nhất sang cái thứ hai.
Triệu chứng: trình cài đặt dừng ở bản dẫn xuất của bạn
Một script đọc tên bản phân phối và từ chối tiếp tục đang nói với bạn rằng tác giả của nó chưa thử bản dẫn xuất của bạn. Đó là một tuyên bố hỗ trợ chứ không phải sự thật kỹ thuật, và nó thường sai theo nghĩa gói đó sẽ chạy tốt.
Rắc rối bắt đầu khi cách lách trở thành kế hoạch. Sửa một tệp nhận dạng khiến phép kiểm tra đi qua, và gói sau đó được nạp, hoặc không nạp được, dựa trên môi trường chạy thực sự được cài. Nếu nó thất bại ở đó, mọi sửa nhận dạng thêm nữa cũng vô ích.
Vì vậy bước hữu ích là tìm ra trình cài đặt đã hỏi câu gì, rồi tìm ra liệu câu trả lời có quan trọng không. Đó là hai cuộc điều tra riêng biệt và chỉ cuộc thứ hai dự đoán được gói có chạy hay không.
Ba phiên bản mà người ta gọi là phiên bản hệ thống
Một bản phát hành phân phối đặt tên cho một môi trường đã đóng gói. Một phiên bản thư viện C đặt tên cho một cách hiện thực môi trường chạy và bản phát hành của nó. Một phiên bản trình biên dịch đặt tên cho một chuỗi công cụ. Trong trò chuyện người ta gọi cả ba là “phiên bản hệ thống”, nhưng trong một trình cài đặt chúng không thể thay thế cho nhau.
cat /etc/os-release ldd --version | head -1 gcc --version | head -1 uname -m
Một ứng dụng đã được dựng sẵn mong đợi môi trường chạy có mặt lúc nó được liên kết. Đổi trình biên dịch trên máy chủ không liên kết lại nó, và một chuỗi công cụ mới hơn không thay đổi gì trong các ký hiệu bộ nạp mà tệp nhị phân yêu cầu. Kiến trúc lại quan trọng riêng, vì một gói 32-bit trên hệ 64-bit thất bại vì những lý do mà không chuỗi phiên bản nào giải thích được.
Giữ bốn đầu ra cùng với báo cáo. Việc thu thập chúng mất mười giây và chúng trả lời phần lớn câu hỏi mà người bảo trì sẽ hỏi bạn qua email.
Hãy đọc lỗi, không phải phép kiểm tra
Lỗi khởi chạy đầu tiên là bằng chứng. Một thông báo về đối tượng chia sẻ bị thiếu, hay về một phiên bản ký hiệu mà bộ nạp không thể đáp ứng, là vấn đề phụ thuộc môi trường chạy. Một thông báo lặp lại tên bản phân phối lại là phép kiểm tra nhận diện, ở một chỗ khác.
tài liệu về bộ liên kết động mô tả cách tìm kiếm thư viện hoạt động và nơi bộ nạp tìm. Đổi nhãn bản phân phối không thêm thư mục nào vào đường tìm kiếm đó, nên lần thất bại thứ hai trông như không liên quan đến lần đầu.
Đừng dùng ldd trên một tệp thực thi đã tải về như bước đầu thông thường. Chính sách tay của nó cảnh báo rằng nó có thể chạy chương trình trong một số hoàn cảnh, và chạy một trình cài đặt không đáng tin chính là trường hợp mà cảnh báo đó nói tới.
Vì sao sửa chuỗi không giúp gì
Làm giả nhận dạng hệ điều hành thay đổi cách mọi chương trình trên máy nhìn thấy chính nó. Các trình quản lý gói, công cụ hỗ trợ và ứng dụng khác đọc cùng một tệp, và một giá trị làm hài lòng một trình cài đặt có thể làm rối một thứ khác vài tháng sau.
Thay thư viện của máy chủ bằng tệp từ một bản phân phối khác thì tệ hơn. Nó có thể làm hỏng phần mềm không liên quan, nó vô hình với trình quản lý gói, và nó cần một kế hoạch bảo trì mà không ai viết ra. Những thay đổi đó không được biện minh bởi một trình cài đặt hà khắc.
Nếu phép kiểm tra thực sự là một khiếm khuyết nhận diện, người bảo trì có thể xác nhận và mô tả cách sửa được hỗ trợ. Nếu nó không phải khiếm khuyết, con đường được hỗ trợ là một bản dựng cho nền tảng của bạn, và câu trả lời đó không đổi chỉ vì chuỗi đã bị sửa.
Viết một báo cáo mà người bảo trì có thể hành động
Ghi lại bản phân phối và phiên bản, kiến trúc, phiên bản VPN, điều kiện chính xác đã bị từ chối, và lỗi môi trường chạy đầu tiên nếu bạn đi được đến đó. Ghi rõ bạn có sửa gì không, vì một báo cáo từ hệ thống đã sửa là một báo cáo khác.
Giữ nguyên trình cài đặt gốc và mô tả phép kiểm tra thay vì lách nó. Sự phân biệt đó cho phép người bảo trì tách một quy tắc nhận diện quá hẹp khỏi một ranh giới tương thích nhị phân thực sự, và đó là hai lỗi rất khác nhau với hai cách sửa rất khác nhau.
Nếu câu trả lời là nền tảng của bạn không được hỗ trợ, đó là một kết quả dùng được. Nó bảo bạn tìm một bản dựng được hỗ trợ thay vì dành thêm một buổi tối cho những tệp nhận dạng chưa bao giờ là vấn đề.