інструмент або техніка, щоб отримати різницю двох різних установок Linux


10

Цитата Альберта Ейнштейна

Божевілля: робити те саме і знову і знову і очікувати різних результатів

Часто-раз Linux зводить мене з розуму, тому що я роблю те саме, що знов і знов і отримую різні результати від коробки до коробки. (Дивіться моє попереднє запитання ).

Для мене найбільша плутанина - це перейняття машини, яку встановив хтось інший (як це відбувається під час реєстрації з веб-хостинговою компанією). Ви просто не знаєте, з чим маєте справу.

Чи є якийсь розумний різний інструмент, який я можу запустити під час встановлення Linux (Ubuntu), щоб дати мені уявлення про те, як ця машина вийшла з установки за замовчуванням?

тобто щось, що може показати мені список команд, які будуть вести себе напрочуд, таким чином уникаючи підходу до спроб та помилок.


4
Ви не отримаєте "список команд, які будуть вести себе дивно". Програмне забезпечення не може передбачити, що вас здивує.
Жил "ТАК - перестань бути злим"

Дякую. Ці відповіді дають мені краще розуміння того, як моделювати відповідні ділянки різниці, які потрібно враховувати при переході машини, яку встановив хтось інший. Поки ми маємо відмінності в: встановлених пакетах , запущених службах , конфігураціях та типі файлової системи . Мені цікаво знати, чи це все, чи список нескінченний? @Gilles - так, з обмеженими знаннями linux, мені важко передбачити, що я також "знайду дивно"!
JW01

1
Список нескінченний. Не приклад Linux, але деякий час тому Visual Studio не відображав би діалогових вікон на певній машині (без помилок, просто порожній простір, де мали бути елементи управління). Це виявилося через те, що встановлено занадто багато шрифтів. Мораль цієї історії полягає в тому, що в кутках завжди будуть сюрпризи.
Жил "ТАК - перестань бути злим"

Відповіді:


10

Кожен раз, коли у мене є хороша система відліку та неправильна поведінка, я намагаюся порівняти їх із vimdiff. Те, що я порівнюю, залежить від проблеми, наприклад

1) Порівнюючи сервери на рівні пакету, я створюю відсортовані списки пакетів на кожному сервері, надсилаю результати у файли та розрізняю їх, наприклад

На сервері1:

dpkg --get-selections|sort > server1_packages

На сервері2:

dpkg --get-selections|sort > server2_packages

Скопіюйте обидва файли на одній машині та відміньте (або vimdiff) їх.

2) Складіть список запущених служб, як у прикладі 1

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

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

... тощо.

3) Якщо, наприклад, у Apache виправляєте непослідовні конфігурації, зробіть копії файлів конфігурацій та виконайте вимкнення цих тощо.


2
Хороший підсумок варіантів. Також хороша ідея помістити файли під /etcконтроль версій, щоб допомогти вам відслідковувати, що відбувається. etckeeperзробить це за вас.
Faheem Mitha

Я отримую "dpkg: не вдалося відкрити файл інформації про пакет` / var / lib / dpkg / status 'для читання: Немає такого файлу чи каталогу ". Як би це виглядало на Centos з yum? PS Nevermind, знайшов його "yum list встановлений"
giorgio79

5

Більшість відмінностей між двома установками одного і того ж розподілу будуть у /etc. Скопіюйте вміст /etcз однієї машини у тимчасовий каталог з іншого та запустіть

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

Якщо ви хочете порівняти машину з установкою за замовчуванням, отримайте копію зі свіжої установки за замовчуванням (можливо, у віртуальній машині).

Якщо ви можете керувати машиною з самого початку, не забудьте встановити etckeeper, щоб тримати його /etcпід контролем версій. Тоді ви зможете точно побачити, що змінилося.

Звичайно, відмінностей буде дуже багато. Якщо ви ще не маєте уявлення, де шукати, це неправильний підхід до дослідження певної різниці в поведінці. Наприклад, скажімо, що команда adduserповодиться по-різному на двох машинах. Тоді найкращий підхід - подивитися на те, що adduserробиться; запустіть його на обох машинах і порівняйте. Якщо у неї є можливість сказати, що вона є більш багатослівною ( adduserні), використовуйте її. Більш радикально запускайте програму в напрузі , наприклад

strace -s9999 -efile adduser …

щоб побачити, які файли мають adduserдоступ.


2

Щоб повернутися до попереднього питання, ваш чудовий інструмент, який мені здається непоганою ідеєю, але я ніколи не чув про існуючого такого звіра, щоб перевірити такі речі, як тип і розміри файлової системи.

Приклад із реального життя, який трапився зі мною у 2002 році: двоє людей встановили системи SuSE 7.3 на двох сусідніх серверних системах. Вони доклали багато зусиль, щоб отримати пакети точно однакові на обох серверах. Через деякий час у нас виникли проблеми з деяким програмним забезпеченням у розробці. Він зводився до файлової системи ext3 на одному сервері, Reiserfs - на іншому. Простий "ls" на Reiserfs дає назви файлів у лексичному порядку, але не на ext3. Одна програма вийшла з ладу за іменами, що не були замовлені


1

Для файлів, користувачів, груп, пакетів, служб тощо я використовував http://www.scriptrock.com ; це безкоштовно для декількох серверів і дає хороший візуальний порівняння відмінностей між серверами. Дуже зручно для дрейфу

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.