Домашнее задание №3
Задания выполняются на персональных виртуальных машинах. После выполнения всех заданий нужно записаться в очередь на проверку (ссылка сверху на странице курса). Дедлайн – 01:00 AM (час ночи) 4 декабря.
1. Установка и удаление пакетов
Задача – научиться определять и изменять состояние пакетов.
В Debian есть несколько средств для высокоуровневого взаимодействия с пакетами и репозиториями пакетов. Полезно освоить aptitude, потому что эта программа имеет ряд полезных функций, отсутствующих в apt. Но все равно необходимо уметь использовать apt, так как это имено то, что есть по умолчанию в любой системе. Стоит понимать, что apt – это просто пользовательский интерфейс к более низкоуровневым программам apt-get, apt-cache, и т.д. Документация apt описывает только наиболее часто используемые возможности. Полный список команд и опций следует искать в документации низкоуровневых инструментов.
Обновление списка пакетов
Прежде чем устанавливать какие-либо пакеты, необходимо обновить индекс репозиториев пакетов, которые использует apt, см. apt(8). Если после обновления индекса оказалось, что для некоторых установленных пакетов в репозитории появились новые версии, то эти пакеты следует обновить перед установкой новых пакетов. Все пакеты можно обновить одной командной.
Поиск и установка пакета
Вам потребуется установить программу множественного выравнивания T-Coffee. Для этого необходимо определить имя соответствующего пакета и установить его вместе с зависимостями, см. apt(8).
Удаление пакета
Оказалось, что для всех задач множественного выравнивания вам оказалось достаточно программ Muscle, Mafft и ClustalO, которые были установлены вместе с T-Coffee. Вам потребовалось удалить T-Coffee вместе со всеми зависимостями, которые не требуются другим пакетам в системе, кроме пакетов clustalo, mafft и muscle.
С помощью apt remove удалите основной пакет, содержащий T-Coffee – тот, который вы указали при установке. Проверьте статус пакета с помощью dpkg. Если от пакета остались файлы конфигурации, найдите способ удалить пакет полностью.
Удаление ненужных зависимостей
Многие из зависимостей T-Coffee не используются другими пакетами в системе и могут быть удалены, о чем apt вам будет сообщать. Все более не требующиеся пакеты, которые были установлены автоматически для разрешения зависимостей других пакетов, можно удалить одной командой, узнайте её.
Однако, в списке пакетов для автоматического удаления окажутся программы выравнивания, которые вы не хотите удалять. Чтобы сообщить apt, что какие-то из "ненужных" пакетов удалять не следует, надо поменять метку этих пакетов с auto на manual, см. apt-mark(8).
Для автоматического удаления пакетов можно использовать команду apt autoremove, но она оставит файлы конфигурации. Вместо того, чтобы вручную "вычищать" каждый такой пакет, можно найти опцию apt autoremove, которая сразу удалит пакеты полностью. Но эта опция не указана в документации apt, догадайтесь сами, как её найти. В новых версиях apt добавили новую команду, которая является сокращенным написания для apt autoremove с нужной опцией, но эта команда тоже не упоминается в apt(8). И опция, и команда упоминались на занятии.
Удалите все автоматически удаляемые пакеты из системы полностью. Проверьте, что /var/log/apt/history.log содержит список всех выполненных операций. Вызовов apt-mark в файле не будет, но их можно отследить по косвенным признакам. Скопируйте файл history.log в папку /root и назовите task3-1.log
2. Поиск и восстановление измененных файлов
Задача – обнаружить изменившуюся строку в файле, установленном из deb-пакета. Программа damager (лежит на kodomo, /P/ai24/admlin/damager) изменит одну строку в одном из системных файлов конфигурации. Вам надо будет определить имя этого файла и номер измененной строки.
Программа damager не запоминает состояние. Она внесет столько изменений, сколько раз вы её запустите. Поэтому не запускайте её несколько раз!
Предлагаю следующую последовательность действий.
Поиск изменившихся пакетных файлов
Для каждого файла в deb-пакете вычислена хеш-сумма md5. При установке пакета dpkg сохраняет эти суммы и имена соответствующих им файлов в один из файлов в разделе /var. Поэтому вполне возможно отследить все пакетные файлы, изменившиеся после установки. Такой функционал реализован в самой утилите dpkg, надо только найти нужную опцию.
Чтобы определить, какой из измененных файлов был испорчен программой damager, можно проверить время модификации каждого измененного файла. Другой вариант – получить список измененных файлов не только после запуска программы, но и до.
Получение исходной версии файла
Определить, какая из строк файла была изменена, можно сравнением с оригинальной версией. Исходную версию файла можно найти в deb-пакете, который придется загрузить и распаковать.
Определить версию установленного пакета можно с помощью dpkg. Скачать нужную версию пакета можно с помощью программы apt-get, описание нужной команды см. в apt-get(8).
Далее можно полностью распаковать пакет с помощью dpkg-deb и искать нужный файл в его содержимом. Но проще сразу извлечь только нужный файл, воспользовавшить конвейером из dpkg-deb и tar. Предлагаю поискать строку "particular file" на man-странице dpkg-deb(1). Еще может быть полезна опция -O программы tar.
Сравнение версий
Сравнить извлеченный (т.е. исходный) файл с испорченной версией удобно с помощью diff. Как узнать номер измененной строки, придумайте самостоятельно. При записи на проверку в качестве комментария нужно будет указать хэш, который выдала программа damager, имя измененного файла и номер измененной строки.
