LXF164: Рубрика сисадмина
Olkol (обсуждение | вклад) (→Mondo и Mindi) |
Olkol (обсуждение | вклад) (→Mondo и Mindi) |
||
Строка 37: | Строка 37: | ||
Для создания образов на CD Mondo применяет сопутствующую программу – Mindi, создающую образ по вашему ядру, модулям ядра, библиотекам и утилитам, и при загрузке этого образа мы получим среду, подобную той, резервная копия которой создавалась. Имея CD от Mindi, можно выполнить интерактивное восстановление, т. е. восстановить отдельные компоненты архива, или базовое восстановление – тогда диск будет разбит на разделы с нуля и на него будет восстановлена вся файловая система. Можно также клонировать существующую систему. | Для создания образов на CD Mondo применяет сопутствующую программу – Mindi, создающую образ по вашему ядру, модулям ядра, библиотекам и утилитам, и при загрузке этого образа мы получим среду, подобную той, резервная копия которой создавалась. Имея CD от Mindi, можно выполнить интерактивное восстановление, т. е. восстановить отдельные компоненты архива, или базовое восстановление – тогда диск будет разбит на разделы с нуля и на него будет восстановлена вся файловая система. Можно также клонировать существующую систему. | ||
+ | |||
+ | ===Итак, вы хотите стать сисадмином?=== | ||
+ | |||
+ | ''Четвертая часть серии, которая превратит вас из новичка в звезду системного администрирования. На сей раз займемся управлением пакетами.'' | ||
+ | |||
+ | Месяц назад мы говорили об управлении жесткими дисками серверов Linux. В этом выпуске мы рассмотрим основы управления пакетами, то есть главным образом команды rpm и yum. | ||
+ | |||
+ | Во всех статьях данной серии мы пользуемся CentOS 6.2. Если вы хотите следовать за нами (что я настоятельно рекомендую), установите CentOS (хотя бы в виртуальную машину) в соответствии с моим описанием в первой части. | ||
+ | |||
+ | У многих команд из обсуждаемых в этом месяце большой объем выходных данных, и на все здесь не хватит места. Если вам нужны подробности, то полный транскрипт многих из сегодняшних команд есть на DVD и на нашем сайте, так что смелее обращайтесь к этому файлу в соответствующих местах. | ||
+ | |||
+ | ===Великий раскол дистрибутивов=== | ||
+ | |||
+ | Управление пакетами – наверное, одна из областей, в которых дистрибутивы Linux отличаются друг от друга больше всего; главным образом это отличие между дистрибутивами, в которых используются пакеты и утилиты формата Red Hat (это Red Hat, CentOS и Fedora), и теми, в которых используются пакеты и утилиты формата Debian (это Debian, Ubuntu, Mint и множество других производных). Так как на уроках я пользуюсь CentOS, то сосредоточусь только на утилитах Red Hat. И, желая познакомиться с утилитами Debian, типа dpkg и apt-get, вы не найдете искомого. | ||
+ | |||
+ | ===Начнем с начала=== | ||
+ | |||
+ | Итак, что же такое пакет? По сути, это архив из файлов, которые будут скопированы в систему при установке пакета. Обычно это несколько двоичных файлов, один или несколько файлов настройки, возможно, несколько вспомогательных библиотек и, зачастую, несколько man-страниц и другая документация. Пакет также содержит метаданные, в которые входят краткое описание пакета, цифровая подпись и некоторая информация о зависимостях. В системах формата Red Hat пакеты находятся в файлах с расширением .rpm. | ||
+ | {{Врезка|left|Заголовок=Сборка из исходников |Ширина=20%|Содержание= | ||
+ | Поскольку исходные коды программ для Linux в основном открыты, весьма заманчиво устанавливать новые программы путем загрузки и компиляции файлов-исходников. На сайтах вроде sourceforge.net есть исходные коды тысяч программ. Но если вы профессиональный администратор, обслуживающий десятки серверов, я советовал бы вам прибегать к этому способу в последнюю очередь: если для необходимой программы нет двоичного пакета или вам обязательно нужна самая свежая версия программы, так как в ней исправлена ошибка или появилась новая возможность. Почему я против установки из исходников? Потому что тогда на вас ложится большая ответственность – вы должны убедиться, что пакет собран правильно и все зависимости разрешены. Стандартные утилиты управления пакетами ничего об этом не знают, и удалить такой пакет бывает непросто. | ||
+ | |||
+ | Нужно отметить, что есть и смешанный подход: начать с исходного кода (в виде RPM с исходными кодами), затем настроить и собрать его в двоичный пакет RPM, который затем устанавливается обычным образом.}} | ||
+ | Имена этих файлов четко структурированы. Например, разберем имя файла пакета aide-0.14-3.el6.i686.rpm. Имя пакета – aide, а версия – 0.14 (номер выбирают разработчики пакета). Версия сборки – 3.el6 (номер выбирают создатели пакета), и пакет собран для архитектуры i686 (32-битная архитектура Intel). | ||
+ | |||
+ | Другой пример: пакет yum-3.2.29-22.el6.centos.noarch.rpm не привязан к конкретной архитектуре процессора (noarch). Такое возможно потому, что данный пакет написан на Python, а это интерпретируемый скриптовый язык. | ||
+ | |||
+ | Прежде чем продолжить, я хотел бы немного поговорить о зависимостях. Зависимости пакета – это программы, которые нужно установить, чтобы пакет работал. Распространенные примеры зависимостей – вспомогательные библиотеки, утилиты командной строки и используемые пакетом внешние сервисы. Устранение отсутствующих зависимостей иногда может стать серьезной проблемой – подробнее мы займемся ими далее. Утилита, используемая для просмотра, установки и обновления пакетов RPM, называется также rpm. Изначально это было сокращение от Red Hat Package Manager [менеджер пакетов Red Hat]. Эта команда – мастер на все руки, и параметров у нее даже больше, чем необходимо. Чтобы продемонстрировать ее работу, требуется источник файлов RPM. На установочном DVD CentOS (или на ISO-образе, если система запущена на виртуальной машине) есть каталог Packages с более чем 3000 пакетами, поэтому воспользуемся ими. | ||
+ | |||
+ | Во-первых, номер версии пакета можно узнать таким образом: | ||
+ | |||
+ | $ cd /media/CentOS_6.2_Final/Packages | ||
+ | |||
+ | $ rpm -qp aide-0.14-3.el6.i686.rpm | ||
+ | |||
+ | aide-0.14-3.el6.i686 | ||
+ | |||
+ | Она не сообщила нам ничего нового, потому что, как сказано выше, номер версии пакета есть в имени файла. | ||
+ | |||
+ | Содержимое пакета можно просмотреть командой | ||
+ | |||
+ | $ rpm -qip aide-0.14-3.el6.i686.rpm | ||
+ | |||
+ | Если вам было интересно, что же такое aide, вывод команды вам все расскажет. Это средство обнаружения атак на основе проверки целостности файлов (полный вывод команды есть в файле транскрипта). | ||
+ | |||
+ | Список файлов пакета выдаст команда | ||
+ | |||
+ | $ rpm -qlp aide-0.14-3.el6.i686.rpm | ||
+ | |||
+ | В нем вы увидите один исполняемый файл (/usr/sbin/aide), файл настройки (/etc/aide.conf) и немного документации, в том числе несколько man-страниц. Также есть файл /etc/logrotate.d/aide. Поместив его в каталог logrotate.d, мы автоматически настраиваем logrotate на ротацию лог-файлов, создаваемых aide. Кстати, постоянные читатели этой рубрики, возможно, помнят, как я жаловался на явление, которое назвал «болезнью точка-d». Эта хворь поразила многие системные программы, так что вместо одного файла настройки (например, /etc/logrotate.conf) у них возник целый каталог таковых (в данном случае, каталог /etc/logrotate.d). Ну, а здесь мы видим преимущества этого подхода. Дополнительный файл настройки можно просто перекинуть в должное место, не возясь со скриптами, чтобы добавить запись в существующий файл. | ||
+ | |||
+ | ===Повышаем запрос=== | ||
+ | Теперь рассмотрим запрос к уже установленному пакету. Команда выглядит точно так же, не считая того, что нужно опустить опцию p и указать только основу имени пакета, а не все имя. Так, чтобы узнать номер нашей версии Bash, командуем: | ||
+ | |||
+ | $ rpm -q bash | ||
+ | |||
+ | bash-4.1.2-8.el6.centos.i686 | ||
+ | |||
+ | Либо можно было просмотреть содержимое пакета командой | ||
+ | |||
+ | $ rpm -qi bash | ||
+ | |||
+ | и вывести список файлов пакета командой | ||
+ | |||
+ | $ rpm -ql bash | ||
+ | |||
+ | В дополнение к вопросу «какие файлы в этом пакете?» можно спросить «из какого пакета этот файл?» и получить ответ так: | ||
+ | |||
+ | $ rpm -qf /bin/ping | ||
+ | |||
+ | iputils-20071127-16.el6.i686 | ||
+ | |||
+ | Наконец, список всех установленных пакетов вы получите по команде | ||
+ | |||
+ | $ rpm -qa | ||
+ | |||
+ | Приготовьтесь, он может оказаться весьма длинным! | ||
+ | |||
+ | Ладно, довольно запросов. Установим-ка пакет aide. Обратите внимание, что для этого нужно быть администратором: | ||
+ | |||
+ | # cd /media/CentOS_6.2_Final/Packages | ||
+ | |||
+ | # rpm -ivh aide-0.14-3.el6.i686.rpm | ||
+ | |||
+ | Preparing... ############## [100%] | ||
+ | |||
+ | 1:aide ############## [100%] | ||
+ | |||
+ | Программа rpm сохраняет информацию об установленных пакетах в /var/lib/rpm. | ||
+ | |||
+ | Установка aide прошла довольно легко, но так бывает не всегда. Например, попробуем установить amanda (утилиту резервного копирования): | ||
+ | |||
+ | # rpm -i amanda-2.6.1p2-7.el6.i686.rpm | ||
+ | |||
+ | error: Failed dependencies: xinetd is needed by amanda-2.6.1p2-7.el6.i686 | ||
+ | |||
+ | [Ошибка зависимостей: xinetd требуется для amanda.] Здесь установка завершилась неудачно, потому что у amanda есть зависимость (программа xinetd), которая не установлена. В данном случае это довольно легко исправить – просто установите пакет xinetd первым. Но иногда список неразрешенных зависимостей гораздо длиннее, и не всегда понятно, какие пакеты нужно установить для их разрешения. Здесь rpm исчерпывает свои возможности. | ||
+ | |||
+ | ===Знакомьтесь: желтая собака=== | ||
+ | |||
+ | Что плавно подводит нас к yum. Это сокращение от “YellowDog Updater, Modified” [Программа обновления Желтой собаки, модифицированная], и если вы хотите понять, что это значит, разрешаю обратиться к Google. Yum – средство управления пакетами более высокого уровня, и у него есть два ключевых отличия от rpm. Во-первых, yum обычно загружает пакеты из интернет-репозиториев (хотя с его помощью можно устанавливать пакеты и с DVD CentOS). Во-вторых, yum разрешает зависимости, автоматически установив все необходимые пакеты. Перейдем прямо к делу и установим с его помощью amanda: | ||
+ | {{Врезка|right|Заголовок= Удаление пакетов|Ширина=10%|Содержание= Для удаления пакета достаточно скомандовать | ||
+ | |||
+ | # rpm --erase aide | ||
+ | |||
+ | К счастью, rpm достаточно разумна, чтобы не удалять пакеты, если от них зависят другие установленные пакеты. Поэтому, если попробовать выполнить | ||
+ | |||
+ | # rpm --erase mindi | ||
+ | |||
+ | error: Failed dependencies: | ||
+ | |||
+ | mindi >= 2.0.7 is needed by (installed) mondo-3.0.2-1.rhel6.i386 | ||
+ | |||
+ | rpm вполне справедливо откажется удалить mindi, так как тот нужен (установленному) пакету mondo. | ||
+ | }} | ||
+ | # yum install amanda | ||
+ | |||
+ | Dependencies Resolved [Зависимости разрешены, установлено] | ||
+ | |||
+ | Installing : 2:xinetd-2.3.14-35.el6_3.i686 1/2 | ||
+ | |||
+ | Installing : amanda-2.6.1p2-7.el6.i686 2/2 | ||
+ | |||
+ | Complete! [Готово!] | ||
+ | [[Файл: | |thumb|400px|В мире не один формат пакетов, но большинство из них соответствуют этой схеме.]] | ||
+ | Я существенно сократил вывод, но оставил достаточно, чтобы вы ясно увидели: yum автоматически установил xinetd для разрешения зависимости. Еще больше упростить установку пакетов нельзя. Однако учтите, что установка пакета для какого-либо сервиса не запускает сам сервис – в этом примере он даже не добавляется в файл настройки xinetd (этот подход отличается от используемого в Debian, там при установке сервиса тот обычно приводится в базовое рабочее состояние). | ||
+ | |||
+ | У yum есть файл настройки – естественно, в /etc/yum.conf. Но вас скорее заинтересуют файлы в каталоге /etc/yum.repos.d (опять болезнь «точка-d»!), где задается расположение репозиториев. По умолчанию у вас будет файл CentOS-Base.repo, с пятью репозиториями (base, updates, extras, centosplus и contrib), хотя два последние по умолчанию отключены. | ||
+ | |||
+ | Рассмотрим один из разделов этого файла: | ||
+ | |||
+ | [base] | ||
+ | |||
+ | name=CentOS-$releasever - Base | ||
+ | |||
+ | mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os | ||
+ | |||
+ | #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ | ||
+ | |||
+ | gpgcheck=1 | ||
+ | |||
+ | gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 | ||
+ | |||
+ | Вместо конкретного адреса репозитория можно указать yum список адресов для загрузки в параметре mirrorlist. При желании можно указать конкретный URL (параметром baseurl), и адреса сторонних репозиториев обычно задаются именно так. | ||
+ | |||
+ | Для данного репозитория настроена проверка цифровых подписей пакетов (и это хорошая идея), а параметр gpgkey указывает путь к ключу. Обратите внимание, что это локальный файл, который является частью стандартной установки CentOS, чтобы CentOS по умолчанию знал публичные ключи своих репозиториев. Если вы включите другие репозитории (скоро мы это сделаем), понадобится загрузить дополнительные ключи. | ||
+ | |||
+ | У yum можно спросить об известных ей репозиториях следующей командой: | ||
+ | |||
+ | # yum repolist | ||
+ | |||
+ | repo id repo name status | ||
+ | |||
+ | base CentOS-6 - Base 4,776 | ||
+ | |||
+ | extras CentOS-6 - Extras 4 | ||
+ | |||
+ | updates CentOS-6 - Updates 374 | ||
+ | |||
+ | repolist: 5,154 | ||
+ | |||
+ | ===Сторонние пакеты=== | ||
+ | |||
+ | В сторонних репозиториях можно найти массу программ для CentOS. Если вы захотите их установить, понадобится добавить файлы .repo в /etc/yum.repos.d, чтобы yum знал, где искать репозитории. В качестве примера установим утилиту восстановления системы Mondo, о которой я рассказывал ранее. Для начала убедимся, что ее нет в стандартных репозиториях: | ||
+ | |||
+ | # yum search mondo | ||
+ | |||
+ | ... < несколько строк вывода опущено > ... | ||
+ | |||
+ | No Matches found [Совпадений не найдено] | ||
+ | |||
+ | Итак, нам придется добавить в каталог yum.repos.d файл (mondorescue.repo) со следующим текстом: | ||
+ | |||
+ | [mondorescue] | ||
+ | |||
+ | name=rhel 6 i386 - mondorescue Vanilla Packages | ||
+ | |||
+ | baseurl=ftp://ftp.mondorescue.org//rhel/6/i386 | ||
+ | |||
+ | enabled=1 | ||
+ | |||
+ | gpgcheck=1 | ||
+ | |||
+ | gpgkey=ftp://ftp.mondorescue.org//rhel/6/i386/mondorescue.pubkey | ||
+ | |||
+ | Кстати, я не написал все это сам, а просто загрузил этот файл с сайта mondorescue. Обратите внимание, что мы велим yum импортировать публичный ключ с сайта mondorescue, чтобы можно было проверить цифровые подписи пакетов. | ||
+ | |||
+ | Здесь, вспомнив о безопасности, я должен предупредить вас, что по сути мы здесь даем yum право устанавливать пакеты с сайта от имени суперпользователя-root. Если вы не доверяете авторам ПО, не делайте этого! Мало ли какой ущерб могут принести их пакеты? Вообще, если вы работаете в корпоративной среде, проверьте, есть ли в вашей компании политика полного запрета сторонних репозиториев. | ||
+ | |||
+ | С указанным файлом наш поиск стал более плодотворным: | ||
+ | |||
+ | # yum search mondo | ||
+ | |||
+ | ... < несколько строк вывода опущено > ... | ||
+ | |||
+ | ====== N/S Matched: mondo ======= | ||
+ | |||
+ | mondo.i386 : MondoRescue is a GPL Disaster Recovery and Cloning Solution | ||
+ | |||
+ | Теперь можно установить пакет: | ||
+ | |||
+ | # yum install mondo | ||
+ | |||
+ | ... < опущено множество строк вывода > ... | ||
+ | |||
+ | Installed: | ||
+ | |||
+ | mondo.i386 0:3.0.2-1.rhel6 | ||
+ | |||
+ | Dependency Installed: | ||
+ | |||
+ | afio.i386 0:2.5-1.rhel6 | ||
+ | |||
+ | buffer.i386 0:1.19-4.rhel6 | ||
+ | |||
+ | mindi.i386 0:2.1.3-1.rhel6 | ||
+ | |||
+ | mindi-busybox.i386 0:1.18.5-1.rhel6 | ||
+ | |||
+ | syslinux.i686 0:4.02-7.el6 | ||
+ | |||
+ | Complete! | ||
+ | |||
+ | Как видите, здесь yum установил пять дополнительных пакетов для разрешения зависимостей. У yum есть и другие козыри, например, поиск, и я советую вам почитать man-страницу. | ||
+ | |||
+ | Места у меня осталось только на то, чтобы вновь вернуться к безопасности и рассказать вам еще об одной возможности rpm. При указании параметра --verify команда сообщит о любых изменениях в файлах пакета с момента установки. Например, выполните команду: | ||
+ | |||
+ | # rpm --verify xinetd | ||
+ | |||
+ | Она не выведет ничего: пакет с момента установки не изменился. Зато команда: | ||
+ | |||
+ | $ rpm --verify initscripts | ||
+ | |||
+ | ..5....T. c /etc/inittab | ||
+ | |||
+ | говорит нам, что у файла /etc/inittab изменились размер, контрольная сумма MD5 и временная отметка по сравнению с изначально установленным (подробную информацию о выводе команды можно получить, поискав “differs” на man-странице rpm). Изменения в файлах настройки после установки – дело обычное, но если вы видите изменения, например, в двоичных файлах системы, это может быть поводом для опасений. Таким образом, эту команду можно использовать как простейшее средство обнаружения вторжений. | ||
+ | |||
+ | В следующем месяце мы дадим нашему серверу настоящий повод для жизни, установив на него несколько сервисов. Увидимся! | |
Версия 14:59, 29 октября 2018
|
|
|
По рецептам доктора Брауна
Эзотерическое системное администрирование из причудливых заворотов кишок серверной
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Содержание |
Mondo и Mindi
Быстро ли вы восстановите систему при сбое жесткого диска? С Mondo это делается за несколько минут.
Как вы делаете резервные копии? Для домашних систем отлично работают простые решения, например, запись tar-архива с важными файлами на жесткий диск. Для систем уровня предприятия есть хитроумные централизованные решения, такие как Amanda, Bacula и BackupPC. Но большинство из них не восстанавливают файлы на «голом железе» – если жесткий диск выйдет из строя, то с ними сначала придется переустановить ОС и только потом восстановить содержимое из резервной копии.
Mondo Rescue (www.mondorescue.org) решает эти проблемы, позволяя создать загрузочный диск с выбранными файлами и каталогами для «голого железа». Mondo распространяется по лицензии GPL в пакетах для большинства крупных дистрибутивов Linux (Fedora, RHEL, openSUSE, SLES, Mandriva, Mageia, Debian, Ubuntu и Gentoo) и может создавать копии файловых систем различных типов (ext2, ext3, etx4, reiserfs, NTFS и других с дисков IDE, SCSI, LVM, программного и аппаратного RAID) на магнитной ленте, дисках, сетевых дисках или на CD/DVD. Программу можно запустить в интерактивном режиме, и она проведет вас по этапам создания копии и соберет нужную ей информацию, или с командной строки.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
В качестве полного руководства, где есть и инструкции по сборке собственных пакетов RPM, обратите внимание на прекрасную книгу Эрика Фостера-Джонсона [Eric Foster-Johnson] по ссылке http://docs.fedoraproject.org/en-US/Fedora_Draft_ Documentation/0.1/html/RPM_Guide – она поможет вам скоротать время долгими зимними вечерами.
Для создания образов на CD Mondo применяет сопутствующую программу – Mindi, создающую образ по вашему ядру, модулям ядра, библиотекам и утилитам, и при загрузке этого образа мы получим среду, подобную той, резервная копия которой создавалась. Имея CD от Mindi, можно выполнить интерактивное восстановление, т. е. восстановить отдельные компоненты архива, или базовое восстановление – тогда диск будет разбит на разделы с нуля и на него будет восстановлена вся файловая система. Можно также клонировать существующую систему.
Итак, вы хотите стать сисадмином?
Четвертая часть серии, которая превратит вас из новичка в звезду системного администрирования. На сей раз займемся управлением пакетами.
Месяц назад мы говорили об управлении жесткими дисками серверов Linux. В этом выпуске мы рассмотрим основы управления пакетами, то есть главным образом команды rpm и yum.
Во всех статьях данной серии мы пользуемся CentOS 6.2. Если вы хотите следовать за нами (что я настоятельно рекомендую), установите CentOS (хотя бы в виртуальную машину) в соответствии с моим описанием в первой части.
У многих команд из обсуждаемых в этом месяце большой объем выходных данных, и на все здесь не хватит места. Если вам нужны подробности, то полный транскрипт многих из сегодняшних команд есть на DVD и на нашем сайте, так что смелее обращайтесь к этому файлу в соответствующих местах.
Великий раскол дистрибутивов
Управление пакетами – наверное, одна из областей, в которых дистрибутивы Linux отличаются друг от друга больше всего; главным образом это отличие между дистрибутивами, в которых используются пакеты и утилиты формата Red Hat (это Red Hat, CentOS и Fedora), и теми, в которых используются пакеты и утилиты формата Debian (это Debian, Ubuntu, Mint и множество других производных). Так как на уроках я пользуюсь CentOS, то сосредоточусь только на утилитах Red Hat. И, желая познакомиться с утилитами Debian, типа dpkg и apt-get, вы не найдете искомого.
Начнем с начала
Итак, что же такое пакет? По сути, это архив из файлов, которые будут скопированы в систему при установке пакета. Обычно это несколько двоичных файлов, один или несколько файлов настройки, возможно, несколько вспомогательных библиотек и, зачастую, несколько man-страниц и другая документация. Пакет также содержит метаданные, в которые входят краткое описание пакета, цифровая подпись и некоторая информация о зависимостях. В системах формата Red Hat пакеты находятся в файлах с расширением .rpm.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Имена этих файлов четко структурированы. Например, разберем имя файла пакета aide-0.14-3.el6.i686.rpm. Имя пакета – aide, а версия – 0.14 (номер выбирают разработчики пакета). Версия сборки – 3.el6 (номер выбирают создатели пакета), и пакет собран для архитектуры i686 (32-битная архитектура Intel).
Другой пример: пакет yum-3.2.29-22.el6.centos.noarch.rpm не привязан к конкретной архитектуре процессора (noarch). Такое возможно потому, что данный пакет написан на Python, а это интерпретируемый скриптовый язык.
Прежде чем продолжить, я хотел бы немного поговорить о зависимостях. Зависимости пакета – это программы, которые нужно установить, чтобы пакет работал. Распространенные примеры зависимостей – вспомогательные библиотеки, утилиты командной строки и используемые пакетом внешние сервисы. Устранение отсутствующих зависимостей иногда может стать серьезной проблемой – подробнее мы займемся ими далее. Утилита, используемая для просмотра, установки и обновления пакетов RPM, называется также rpm. Изначально это было сокращение от Red Hat Package Manager [менеджер пакетов Red Hat]. Эта команда – мастер на все руки, и параметров у нее даже больше, чем необходимо. Чтобы продемонстрировать ее работу, требуется источник файлов RPM. На установочном DVD CentOS (или на ISO-образе, если система запущена на виртуальной машине) есть каталог Packages с более чем 3000 пакетами, поэтому воспользуемся ими.
Во-первых, номер версии пакета можно узнать таким образом:
$ cd /media/CentOS_6.2_Final/Packages
$ rpm -qp aide-0.14-3.el6.i686.rpm
aide-0.14-3.el6.i686
Она не сообщила нам ничего нового, потому что, как сказано выше, номер версии пакета есть в имени файла.
Содержимое пакета можно просмотреть командой
$ rpm -qip aide-0.14-3.el6.i686.rpm
Если вам было интересно, что же такое aide, вывод команды вам все расскажет. Это средство обнаружения атак на основе проверки целостности файлов (полный вывод команды есть в файле транскрипта).
Список файлов пакета выдаст команда
$ rpm -qlp aide-0.14-3.el6.i686.rpm
В нем вы увидите один исполняемый файл (/usr/sbin/aide), файл настройки (/etc/aide.conf) и немного документации, в том числе несколько man-страниц. Также есть файл /etc/logrotate.d/aide. Поместив его в каталог logrotate.d, мы автоматически настраиваем logrotate на ротацию лог-файлов, создаваемых aide. Кстати, постоянные читатели этой рубрики, возможно, помнят, как я жаловался на явление, которое назвал «болезнью точка-d». Эта хворь поразила многие системные программы, так что вместо одного файла настройки (например, /etc/logrotate.conf) у них возник целый каталог таковых (в данном случае, каталог /etc/logrotate.d). Ну, а здесь мы видим преимущества этого подхода. Дополнительный файл настройки можно просто перекинуть в должное место, не возясь со скриптами, чтобы добавить запись в существующий файл.
Повышаем запрос
Теперь рассмотрим запрос к уже установленному пакету. Команда выглядит точно так же, не считая того, что нужно опустить опцию p и указать только основу имени пакета, а не все имя. Так, чтобы узнать номер нашей версии Bash, командуем:
$ rpm -q bash
bash-4.1.2-8.el6.centos.i686
Либо можно было просмотреть содержимое пакета командой
$ rpm -qi bash
и вывести список файлов пакета командой
$ rpm -ql bash
В дополнение к вопросу «какие файлы в этом пакете?» можно спросить «из какого пакета этот файл?» и получить ответ так:
$ rpm -qf /bin/ping
iputils-20071127-16.el6.i686
Наконец, список всех установленных пакетов вы получите по команде
$ rpm -qa
Приготовьтесь, он может оказаться весьма длинным!
Ладно, довольно запросов. Установим-ка пакет aide. Обратите внимание, что для этого нужно быть администратором:
- cd /media/CentOS_6.2_Final/Packages
- rpm -ivh aide-0.14-3.el6.i686.rpm
Preparing... ############## [100%]
1:aide ############## [100%]
Программа rpm сохраняет информацию об установленных пакетах в /var/lib/rpm.
Установка aide прошла довольно легко, но так бывает не всегда. Например, попробуем установить amanda (утилиту резервного копирования):
- rpm -i amanda-2.6.1p2-7.el6.i686.rpm
error: Failed dependencies: xinetd is needed by amanda-2.6.1p2-7.el6.i686
[Ошибка зависимостей: xinetd требуется для amanda.] Здесь установка завершилась неудачно, потому что у amanda есть зависимость (программа xinetd), которая не установлена. В данном случае это довольно легко исправить – просто установите пакет xinetd первым. Но иногда список неразрешенных зависимостей гораздо длиннее, и не всегда понятно, какие пакеты нужно установить для их разрешения. Здесь rpm исчерпывает свои возможности.
Знакомьтесь: желтая собака
Что плавно подводит нас к yum. Это сокращение от “YellowDog Updater, Modified” [Программа обновления Желтой собаки, модифицированная], и если вы хотите понять, что это значит, разрешаю обратиться к Google. Yum – средство управления пакетами более высокого уровня, и у него есть два ключевых отличия от rpm. Во-первых, yum обычно загружает пакеты из интернет-репозиториев (хотя с его помощью можно устанавливать пакеты и с DVD CentOS). Во-вторых, yum разрешает зависимости, автоматически установив все необходимые пакеты. Перейдем прямо к делу и установим с его помощью amanda:
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
# yum install amanda
Dependencies Resolved [Зависимости разрешены, установлено]
Installing : 2:xinetd-2.3.14-35.el6_3.i686 1/2
Installing : amanda-2.6.1p2-7.el6.i686 2/2
Complete! [Готово!] [[Файл: | |thumb|400px|В мире не один формат пакетов, но большинство из них соответствуют этой схеме.]] Я существенно сократил вывод, но оставил достаточно, чтобы вы ясно увидели: yum автоматически установил xinetd для разрешения зависимости. Еще больше упростить установку пакетов нельзя. Однако учтите, что установка пакета для какого-либо сервиса не запускает сам сервис – в этом примере он даже не добавляется в файл настройки xinetd (этот подход отличается от используемого в Debian, там при установке сервиса тот обычно приводится в базовое рабочее состояние).
У yum есть файл настройки – естественно, в /etc/yum.conf. Но вас скорее заинтересуют файлы в каталоге /etc/yum.repos.d (опять болезнь «точка-d»!), где задается расположение репозиториев. По умолчанию у вас будет файл CentOS-Base.repo, с пятью репозиториями (base, updates, extras, centosplus и contrib), хотя два последние по умолчанию отключены.
Рассмотрим один из разделов этого файла:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Вместо конкретного адреса репозитория можно указать yum список адресов для загрузки в параметре mirrorlist. При желании можно указать конкретный URL (параметром baseurl), и адреса сторонних репозиториев обычно задаются именно так.
Для данного репозитория настроена проверка цифровых подписей пакетов (и это хорошая идея), а параметр gpgkey указывает путь к ключу. Обратите внимание, что это локальный файл, который является частью стандартной установки CentOS, чтобы CentOS по умолчанию знал публичные ключи своих репозиториев. Если вы включите другие репозитории (скоро мы это сделаем), понадобится загрузить дополнительные ключи.
У yum можно спросить об известных ей репозиториях следующей командой:
- yum repolist
repo id repo name status
base CentOS-6 - Base 4,776
extras CentOS-6 - Extras 4
updates CentOS-6 - Updates 374
repolist: 5,154
Сторонние пакеты
В сторонних репозиториях можно найти массу программ для CentOS. Если вы захотите их установить, понадобится добавить файлы .repo в /etc/yum.repos.d, чтобы yum знал, где искать репозитории. В качестве примера установим утилиту восстановления системы Mondo, о которой я рассказывал ранее. Для начала убедимся, что ее нет в стандартных репозиториях:
- yum search mondo
... < несколько строк вывода опущено > ...
No Matches found [Совпадений не найдено]
Итак, нам придется добавить в каталог yum.repos.d файл (mondorescue.repo) со следующим текстом:
[mondorescue]
name=rhel 6 i386 - mondorescue Vanilla Packages
baseurl=ftp://ftp.mondorescue.org//rhel/6/i386
enabled=1
gpgcheck=1
gpgkey=ftp://ftp.mondorescue.org//rhel/6/i386/mondorescue.pubkey
Кстати, я не написал все это сам, а просто загрузил этот файл с сайта mondorescue. Обратите внимание, что мы велим yum импортировать публичный ключ с сайта mondorescue, чтобы можно было проверить цифровые подписи пакетов.
Здесь, вспомнив о безопасности, я должен предупредить вас, что по сути мы здесь даем yum право устанавливать пакеты с сайта от имени суперпользователя-root. Если вы не доверяете авторам ПО, не делайте этого! Мало ли какой ущерб могут принести их пакеты? Вообще, если вы работаете в корпоративной среде, проверьте, есть ли в вашей компании политика полного запрета сторонних репозиториев.
С указанным файлом наш поиск стал более плодотворным:
- yum search mondo
... < несколько строк вывода опущено > ...
N/S Matched: mondo =
mondo.i386 : MondoRescue is a GPL Disaster Recovery and Cloning Solution
Теперь можно установить пакет:
# yum install mondo
... < опущено множество строк вывода > ...
Installed:
mondo.i386 0:3.0.2-1.rhel6
Dependency Installed:
afio.i386 0:2.5-1.rhel6
buffer.i386 0:1.19-4.rhel6
mindi.i386 0:2.1.3-1.rhel6
mindi-busybox.i386 0:1.18.5-1.rhel6
syslinux.i686 0:4.02-7.el6
Complete!
Как видите, здесь yum установил пять дополнительных пакетов для разрешения зависимостей. У yum есть и другие козыри, например, поиск, и я советую вам почитать man-страницу.
Места у меня осталось только на то, чтобы вновь вернуться к безопасности и рассказать вам еще об одной возможности rpm. При указании параметра --verify команда сообщит о любых изменениях в файлах пакета с момента установки. Например, выполните команду:
# rpm --verify xinetd
Она не выведет ничего: пакет с момента установки не изменился. Зато команда:
$ rpm --verify initscripts
..5....T. c /etc/inittab
говорит нам, что у файла /etc/inittab изменились размер, контрольная сумма MD5 и временная отметка по сравнению с изначально установленным (подробную информацию о выводе команды можно получить, поискав “differs” на man-странице rpm). Изменения в файлах настройки после установки – дело обычное, но если вы видите изменения, например, в двоичных файлах системы, это может быть поводом для опасений. Таким образом, эту команду можно использовать как простейшее средство обнаружения вторжений.
В следующем месяце мы дадим нашему серверу настоящий повод для жизни, установив на него несколько сервисов. Увидимся! |