инструмент или технику, чтобы получить разницу двух разных установок Linux

10

Альберт Эйнштейн цитата

Безумие: делать одно и то же снова и снова и ожидать разных результатов

Часто Linux сводит меня с ума, потому что я делаю одно и то же снова и снова и получаю разные результаты от коробки к коробке. (См. Мой предыдущий вопрос ).

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

Есть ли какой-нибудь умный инструмент сравнения, который я могу запустить на установке Linux (Ubuntu), чтобы дать мне понять, как эта машина отклонилась от установки по умолчанию?

то есть что-то, что может показать мне список команд, которые будут вести себя удивительно, избегая метода проб и ошибок.

JW01
источник
4
Вы не получите «список команд, которые будут работать на удивление». Программное обеспечение не может предсказать, что вы найдете удивительным.
Жиль "ТАК - перестань быть злым"
Спасибо. Эти ответы дают мне лучшее понимание того, как смоделировать соответствующие области различий, которые необходимо учитывать при захвате машины, которую установил кто-то другой. Пока у нас есть различия в: установленных пакетах , запущенных сервисах , конфигурациях и типе файловой системы . Мне интересно узнать, так ли это или список бесконечен? @ Жиль - да, с ограниченным знанием 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

... и т. д., и vimdiff тех.

3) Если вы устраняете неполадки, например, в несовместимых конфигурациях с Apache, сделайте копии файлов конфигурации, vimdiff и т. Д.

Карл
источник
2
Хорошее резюме вариантов. Также рекомендуется поместить файлы под /etcконтроль версий, чтобы отслеживать, что происходит. etckeeperсделаю это для вас.
Фахим Митха
Я получаю "dpkg: не удалось открыть файл информации пакета` / var / lib / dpkg / status 'для чтения: нет такого файла или каталога ". Как бы это выглядело на Centos с yum? PS Неважно, нашел его "установлен
ням
5

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

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

Если вы хотите сравнить машину с установкой по умолчанию, получите копию из новой установки по умолчанию (возможно, на виртуальной машине).

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

Конечно, будет много различий. Если у вас еще нет идеи, где искать, это неправильный подход для изучения конкретной разницы в поведении. Например, скажем, команда adduserведет себя по-разному на двух машинах. Тогда лучший подход - посмотреть на то, что adduserделает; запустите его на обеих машинах и сравните. Если у него есть возможность сказать, что он будет более многословным ( adduserне), используйте его. Более радикально, запустите программу под strace , например

strace -s9999 -efile adduser …

чтобы увидеть, какие файлы adduserдоступны.

Жиль "ТАК - перестань быть злым"
источник
2

Чтобы вернуться к более раннему вопросу, ваш изящный инструмент, который звучит для меня как хорошая идея, но я никогда не слышал о существовании такого зверя, должен проверять такие вещи, как тип и размеры файловой системы.

Пример из реальной жизни, который произошел со мной в 2002 году: два человека установили системы SuSE 7.3 на двух соседних серверах, монтируемых в стойку. Они приложили много усилий, чтобы пакеты были одинаковыми на обоих серверах. Некоторое время спустя у нас возникли проблемы с некоторым программным обеспечением в разработке. Все дело в файловой системе ext3 на одном сервере, Reiserfs на другом. Простое «ls» в Reiserfs дает имена файлов в лексическом порядке, но не в ext3. Одна программа завершилась с ошибкой в ​​именах файлов не по порядку.

Брюс Эдигер
источник
1

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

Майк
источник