công cụ hoặc kỹ thuật để có một khác biệt của hai cài đặt linux khác nhau


10

Trích dẫn Albert Einstein

Sự điên rồ: làm đi làm lại nhiều lần và mong đợi những kết quả khác nhau

Thông thường, Linux khiến tôi phát điên vì tôi làm đi làm lại nhiều lần và nhận được kết quả khác nhau từ hộp này sang hộp khác. (Xem câu hỏi trước của tôi ).

Đối với tôi, khu vực nhầm lẫn lớn nhất là chiếm lấy một máy mà người khác đã cài đặt (như trường hợp khi đăng ký với một công ty lưu trữ web). Bạn chỉ không biết những gì bạn đang đối phó với.

Có một số loại công cụ khác biệt thông minh mà tôi có thể chạy trên bản cài đặt Linux (Ubuntu) để cung cấp cho tôi thông tin về cách mà máy đó đã tránh khỏi cài đặt mặc định?

tức là thứ gì đó có thể chỉ cho tôi một danh sách các lệnh sẽ hành xử một cách đáng ngạc nhiên, do đó tránh được cách tiếp cận thử và sai.


4
Bạn sẽ không nhận được một danh sách các lệnh sẽ hành xử một cách đáng ngạc nhiên. Phần mềm không thể dự đoán những gì bạn sẽ thấy ngạc nhiên.
Gilles 'SO- ngừng trở nên xấu xa'

Cảm ơn. Những câu trả lời này giúp tôi hiểu rõ hơn về cách mô hình hóa các khu vực khác biệt cần thiết cần được xem xét khi tiếp quản một máy mà người khác đã cài đặt. Cho đến nay chúng ta có sự khác biệt trong: các gói được cài đặt , các dịch vụ đang chạy , cấu hìnhloại hệ thống tệp . Tôi muốn biết liệu đó có phải là danh sách vô hạn không? @Gilles - vâng, với kiến ​​thức hạn chế về linux, tôi cũng khó đoán được điều gì tôi cũng 'thấy ngạc nhiên'!
JW01

1
Danh sách là vô hạn. Không phải là một ví dụ về Linux, nhưng cách đây một thời gian, Visual Studio sẽ không hiển thị một số hộp thoại trên một máy cụ thể (không có lỗi, chỉ là không gian trống nơi cần có các điều khiển). Hóa ra là do có quá nhiều phông chữ được cài đặt. Đạo đức của câu chuyện này là sẽ luôn có những điều bất ngờ ẩn giấu trong các góc.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


10

Bất cứ khi nào tôi có một hệ thống tham chiếu tốt và một hệ thống tham chiếu sai, tôi cố gắng so sánh chúng với vimdiff. Những gì tôi so sánh khác nhau với vấn đề, ví dụ

1) Khi so sánh các máy chủ ở cấp gói, tôi tạo danh sách các gói được sắp xếp trên mỗi máy chủ, gửi kết quả đến tệp và tìm khác biệt, ví dụ:

Trên máy chủ1:

dpkg --get-selections|sort > server1_packages

Trên máy chủ2:

dpkg --get-selections|sort > server2_packages

Sao chép cả hai tập tin vào cùng một máy và tìm khác biệt (hoặc vimdiff) chúng.

2) Lập danh sách các dịch vụ đang chạy như trong ví dụ 1

sysv-rc-conf --list|sort > server1_services

sysv-rc-conf --list|sort > server2_services

... vv, và vimdiff những người.

3) Ví dụ: nếu bạn đang khắc phục các cấu hình không nhất quán với Apache, hãy tạo các bản sao của các tệp cấu hình và vimdiff chúng, v.v.


2
Tóm tắt tốt các lựa chọn. Nó cũng là một ý tưởng tốt để đặt các tập tin dưới /etcsự kiểm soát phiên bản để giúp bạn theo dõi những gì đang xảy ra. etckeepersẽ làm điều này cho bạn.
Faheem Mitha

Tôi nhận được "dpkg: không thể mở tệp thông tin gói` / var / lib / dpkg / status 'để đọc: Không có tệp hoặc thư mục như vậy ". Làm thế nào điều này sẽ nhìn vào Centos với yum? PS Nevermind, đã tìm thấy "danh sách yum được cài đặt"
giorgio79

5

Hầu hết sự khác biệt giữa hai cài đặt của cùng một phân phối sẽ có trong /etc. Sao chép nội dung /etctừ máy này sang thư mục tạm thời trên máy kia và chạy

diff -ru /etc /copy/of/other/etc

Nếu bạn muốn so sánh một máy với cài đặt mặc định, hãy lấy một bản sao từ cài đặt mặc định mới (có lẽ trong một máy ảo).

Nếu bạn có thể kiểm soát một máy tính từ khi bắt đầu, hãy chắc chắn để cài đặt etckeeper để giữ /etcdưới sự kiểm soát phiên bản. Sau đó, bạn sẽ có thể thấy chính xác những gì đã thay đổi.

Tất nhiên, sẽ có rất nhiều sự khác biệt. Nếu bạn chưa có ý tưởng về nơi để tìm, thì đây là cách tiếp cận sai để điều tra một sự khác biệt cụ thể trong hành vi. Ví dụ: giả sử lệnh adduserhoạt động khác nhau trên hai máy. Sau đó, cách tiếp cận tốt nhất là nhìn vào những gì adduserđang làm; chạy nó trên cả hai máy và so sánh. Nếu nó có một tùy chọn để bảo nó dài dòng hơn ( adduserkhông), hãy sử dụng nó. Triệt để hơn, chạy chương trình theo strace , vd

strace -s9999 -efile adduser …

để xem những gì tập tin addusertruy cập.


2

Để trở lại câu hỏi trước đó, công cụ tiện lợi của bạn, nghe có vẻ là một ý tưởng tốt đối với tôi, nhưng tôi chưa bao giờ nghe thấy một con thú như vậy tồn tại, cần kiểm tra những thứ như loại và kích cỡ hệ thống tập tin.

Một ví dụ thực tế đã xảy ra với tôi vào năm 2002: hai người đã cài đặt hệ thống SuSE 7.3 trên hai máy chủ gắn trên giá liền kề. Họ đã nỗ lực rất nhiều để có được các gói giống hệt nhau trên cả hai máy chủ. Một lát sau, chúng tôi gặp vấn đề với một số phần mềm đang phát triển. Nó đi xuống hệ thống tập tin ext3 trên một máy chủ, Reiserfs trên máy chủ khác. Một "ls" đơn giản trên Reiserfs cung cấp tên tệp theo thứ tự từ vựng, nhưng không phải trên ext3. Một chương trình thất bại trên tên tập tin không theo thứ tự.


1

Đối với các tệp, người dùng, nhóm, gói, dịch vụ, v.v. Tôi đã sử dụng http://www.scriptrock.com ; nó miễn phí cho một vài máy chủ và cung cấp cho bạn một so sánh trực quan tuyệt vời về sự khác biệt giữa các máy chủ..rất tiện lợi cho việc di chuyển

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.