Показаны сообщения с ярлыком CentOS. Показать все сообщения
Показаны сообщения с ярлыком CentOS. Показать все сообщения

четверг, 17 октября 2013 г.

RPM

Простые манипуляции

Чтобы ... Нужно выполнить
Импортировать GPG ключ для проверки пакетов # rpm --import RPM-GPG-KEY
Посмотреть информацию о пакете, который лежит в текущем каталоге $ rpm -qip package-1.rpm
Посмотреть список файлов из неустановленного пакета $ rpm -qlp package-1.rpm
Посмотреть скрипты %pre- %post- install (uninstall) $ rpm -qp --scripts package-1.rpm
Посмотреть changelog пакета $ rpm -qp --changelog package-1.rpm
Установить пакет $ rpm -ivh package-1.rpm
Обновить или установить пакет $ rpm -Uvh package-1.rpm
Обновить пакет, если его предыдущая версия установлена в системе $ rpm -Fvh package-1.rpm
Узнать, какому пакету принадлежит данный файл $ rpm -qf /etc/sysctl.conf
Посмотреть информацию об уже установленном пакете $ rpm -qi initscripts
Посмотреть список всех установленных пакетов $ rpm -qa
Найти все пакеты, начинающиеся на gnome $ rpm -qa "gnome*"
Удалить пакет $ rpm -e package
Посмотреть даты инсталляции пакетов $ rpm -qa --last
Посмотреть зависимости необходимые пакету $ rpm -qR yum



Манипуляции посложнее

Использование ключа подсказки --aid

При инсталляции нового пакета иногда возникают ситуации, в которых требуется добавить еще один или несколько пакетов для удовлетворения зависимостей. К сожалению, по-умолчанию RPM не сообщает какой именно пакет нужен, сообщает только имя библиотеки и версию. Дело в том, что информация о все пакетах, входящих в официальный дистрибутив, содержится отдельно - в специальном пакете rpmdb-* (для версий дистрибутивов RedHat это будет rpmdb-redhat-<дата-релиза>, для CentOS - rpmdb-CentOS-<дата-релиза> и т.д.).
Например: rpmdb-CentOS-4.4-0.20060828
Т.е. необходимым условием является наличие этого пакета, проинсталлированного в системе.
Проверяем:
# rpm -ivh --aid samba-swat-3.0.9-1.3E.7.x86_64.rpm
error: open of /var/spool/up2date/samba-3.0.9-1.3E.7.x86_64.rpm failed: No such file or directory
error: Failed dependencies:
        samba = 0:3.0.9 is needed by samba-swat-3.0.9-1.3E.7
Здесь нам указали, что для инсталляции samba-swat потребуется обязательный пакет samba с версией 0:3.0.9
Обратите внимение на строчку "error: open of /var/spool/up2date/samba-3.0.9-1.3E.7.x86_64.rpm failed: No such file or directory". RPM сам попытался проинсталлировать пакет, но не нашел его в каталоге /var/spool/up2date. Если мы заглянем в конфигурационный файл /etc/rpm/macros.solve и исправим параметр %_solve_pkgsdir на местоположение всех пакетов дистрибутива, то после повторного выполнения команды, RPM найдет необходимый пакет и автоматически его проинсталлирует.
Например, все пакеты дистрибутива у нас живут в каталоге /opt/linux/redhat/as30u7/x86-64, который в свою очередь смонтирован по NFS с сервера. Тогда в файле /etc/rpm/macros.solve должно быть:
%_solve_pkgsdir /opt/linux/redhat/as30u7/x86-64
А вот результат выполнения команды:
# rpm -ivh --aid samba-swat-3.0.9-1.3E.7.x86_64.rpm
Preparing...                ########################################### [100%]
   1:samba                  ########################################### [ 50%]
   2:samba-swat             ########################################### [100%]


Чтобы добавить новые ключи, расширяющие возможности стандартного вывода:

$ cat >~/.popt 
rpm     alias --arch --qf '%{NAME}  %{VERSION}-%{RELEASE} %{ARCH}\n' \
        --POPTdesc=$\"list package name, version, release and arch\"
^D
Посмотреть оригинальные запросы можно в /usr/lib/rpm/rpmpopt-*.
Альтернативные форматы запросов можно помещать в /etc/popt или в ~/.popt

Чтобы увидеть результат выполним комнду: `rpm -q --arch postfix` 
 и сравним ее вывод с выводом этой команды: `rpm -q --arch kernel`
Посмотреть список полей $ rpm -q --querytags
Вывод дополнительных полей $ rpm -q --qf '%{NAME}\t%{VERSION}-%{RELEASE}.%{ARCH}\t%{LICENSE}\n' package-1
Проверить целостность установленного пакета $ rpm -V postfix
Проверить целостность всех установленных пакетов в системе $ rpm -Va
Откатить пакеты по состоянию на 1 мая $ rpm -Uhv --rollback 'may 1'




  • расшифровка результатов проверки целостности:
    `S.......` отличаются размеры файлов
    `.M......` отличаются флаги и права доступа
    `..5.....` отличается контрольная сумма
    `...D....` несоответствуют major/minor номер устройств
    `....L...` readLink(2) path mismatch
    `.....U..` отличаются владельцы
    `......G.` отличаются группы-владельцы
    `.......T` отличается время модификации
    ` c` - файл из секции %config, то есть явно конфигурационный файл
    ` d` - файл из секции %doc, аналогично - явно принадлежит к документации
    ` g` - файл-призрак, т.е. содержимое файла явно не существует в пакете (но возможно создается скриптами при инсталляции пакета)
    ` l` - файл из секции %license
    ` r` - файл из секции %readme

Сложные манипуляции

Как откатить систему пакетов по состоянию на определенное время

1. Добавить в файл /etc/rpm/macros
%_repackage_all_erasures 1
2. Для отката состояния использовать опцию --rollback
rpm -Uhv --rollback '12 hours ago'
требуется `%_repackage_all_erasures 1` в /etc/rpm/macros

понедельник, 5 августа 2013 г.

Установка паравиртуальной CentOS в Xen

Актуально для: CentOS 5.6 + Xen 4 (на примере dom0 Debian)
Итак, у нас есть задача - установить Linux CentOS 5 как гостевую паравиртуальную виртуальную машину в гипервизор Xen (здесь мы будем рассматривать Xen 4.0.1 как последний на момент написания статьи).

Установка показана на примере Xen 4.0.1 с доменом-0 Linux Debian. Путь к виртуальным машинам оставлен по-умолчанию:
/etc/xen

Суть действий остается одинаковой для любого домена-0.


Начнем.

Перво-наперво - запаситесь горой терпения. Сайт CentOS и его зеркала показывают невероятно медленные скорости работы (около 10 Кбит/с - модемы быстрее работают).

Идем в домен-0 сервера виртуальных машин и создаем заготовку для гостевой системы.

1) В первую очередь создаем папку для нее и виртуальный диск.
# cd /etc/xen
# mkdir vm_centos
# cd vm_centos
# dd if=/dev/zero of=hdd0 bs=1M count=1 seek=10240

Здесь мы создаем файл виртуальной машины размером 10Гб без предварительной аллокации секторов (т.е. динамический) по адресу:
/etc/xen/vm_centos

Если Вы хотите сразу занять все место под файл виртуального диска - используйте следующий вариант команды dd:
# dd if=/dev/zero of=hdd0 bs=1M count=10240

Назвать папку Вы можете как угодно - следите просто, чтобы это название было корректно указано в файлах конфигурации.


2) Создаем файл конфигурации.

# nano vm.cfg
следующего вида:

kernel = "/etc/xen/vm_centos/vmlinuz"
ramdisk = "/etc/xen/vm_centos/initrd.img"
extra = "text"
name = "centos"
memory = "256"
disk = [ 'file:/etc/xen/vm_centos/hdd0,xvda,w' ]
vif = [ 'bridge=eth0, mac=fe:16:3e:68:fc:47' ]
vcpus=1
on_reboot = 'destroy'
on_crash = 'destroy'

Поясним некоторые моменты:

а) Мы указываем использовать для загрузки ядро и initrd-образ из папки нашей виртуальной машины. Мы их скачаем в следующем шаге.
б) Указываем использовать LOOP-интерфейс для файла жесткого диска (FILE:) вместо более быстрого, но чаще всего не работающего TAP-интерфейса (последний стабильно работает только для HVM-доменов).
в) Выделяем 256Мб ОЗУ.
г) Сразу прописываем MAC-адрес для сетевого интерфейса. Это крайне рекомендуется, иначе Xen будет выдавать MAC-адрес сам, причем каждый раз разный!
д) Выделяем 1 процессорное ядро.
е) Указываем, что машину нужно будет остановить при перезагрузке. Нам это нужно затем, что после первой же перезагрузки после установки нам нужно будет сразу загасить виртуальную систему - так удобнее. В дальнейшем мы поменяем этот параметр.


3) Скачиваем ядро и initrd для установки:

Для 32-битной системы (x86-32)

# wget http://mirror.centos.org/centos/5/os/i386/images/xen/initrd.img
# wget http://mirror.centos.org/centos/5/os/i386/images/xen/vmlinuz

Для 64-битной системы (x86-64 или, как правильно - amd64)

# wget http://mirror.centos.org/centos/5/os/x86_64/images/xen/initrd.img
# wget http://mirror.centos.org/centos/5/os/x86_64/images/xen/vmlinuz


4) Запускаем установку CentOS:

# xm create -c vm_centos/vm.cfg

Ключ -c указывает, что сразу нужно подцепиться к консоли машины. Если Вы его забыли указать, то подцепиться можно в любой момент командой:

# xm console centos

По ходу установки экран (в отличие от HVM с VNC Viewer) будет черно-белым. Текущее положение селектора можно видеть по блоку курсора (белый блок). Выбор опции - клавиши вверх и вниз. Перейти на кнопки - через Tab.

5) Ставим CentOS в интерактивном режиме.

Нас приветствует установщик. Интуитивно двигаемся по его шагам, указывая нашу локаль. Если это чудо спрашивает нас - Text-mode или VNC, то отвечаем "Text-mode". Когда нас спрашивают - откуда брать файлы для установки - отвечаем "HTTP".


6) Нас просят ввести адрес HTTP - откуда брать файлы для установки. Вводим:

Как я уже говорил - ресурсы самого CentOS демонстрируют нам скорости начала 90х. Если есть желание загрузить и поставить ОС побыстрее - используйте другие зеркала, которые можно посмотреть по адресу:

http://www.centos.org/modules/tinycontent/index.php?id=34

Следите за тем, чтобы в шестой колонке было указано "Yes" (Direct DVD downloads), иначе, по моему опыту, установщик заругается, что не может загрузить образ ОС (например, такая ошибка выскакивает на mirror.yandex.ru).

Одно из неплохих найденных зеркал:

Server: ftp.astral.ro
dir: distros/centos/5/os/x86_64

Если же Вы хотите использовать официальный ресурс - вот его координаты:

Server: mirror.centos.org
dir: centos/5/os/x86_64/

Если нужна 32-битная система - указываем i386 вместо x86_64.

Идем дальше.

Оно довольно долго будет загружать установочный образ, после чего перейдет к следующему окну.


7) Оно пишет "Welcome" и предлагает разметить диск (The partition table on device xvda was unreadable). Отвечаем "Yes". Оно еще раз уточняет - отвечаем "OK" и "Yes".


8) Оно говорит, что готово к разметке и спрашивает - не хотим ли мы заценить - как оно решило нам диск разбить (Review and modify partitioning layout?). Говорим - "Да, конечно!" (Yes).

Здесь оно показывает свой вариант. Если устраивает (редко) - соглашаемся и жмем на "OK". Если не устраивает - меняем и жмем "OK".


9) Если ОЗУ Вы выделили немного (те же 256Мб) - то оно предупреждает, что памяти мало (As you don't have much memory in this machine, we need to turn on swap space immediately) и предлагает сразу включить файл подкачки на целевом диске. Конечно, соглашаемся ("Yes").


10) Загрузчик. Оно спрашивает - какой загрузчик использовать (Which boot loader you like to use). Выбор небольшой - никакого или GRUB. Нас устраивает только GRUB (даже если бы был и другой какой), так что смело выбираем "Use GRUB Boot Loader", через Tab перемещаемся на "OK" и давим на нее.


11) Оно спрашивает - какую консоль использовать. Оставляем строчку "console=xvc0" и жмем на "OK".


12) Спрашивает - поставить ли пароль на GRUB? Оставляем поля ввода пароля пустыми и через Tab перемещаемся на "ОК". Жмем на нее.


13) Оно спрашивает про то - что загружать через GRUB. Просто жмем на "OK".


14) Очередной вопрос - куда поставить загрузчик. Ставим курсор на "/dev/xvda" и через Tab жмем OK.


15) Следующий вопрос - сконфигурировать ли сетевой интерфейс прямо сейчас. Говорим "Да, несомненно" - жмем "Yes".

Здесь проверяем все настройки нашего сетевого интерфейса, меняем если что-то необходимо.


16) Следующий вопрос - часовой пояс (time zone). Стрелками вверх/вниз выбираем нужный нам (например, Asia/Yekaterinburg), через Tab перемещаемся на "OK" и нажимаем на нее.


17) Спрашиваем рутовый пароль (для root). Вводим пароль для суперпользователя (внимательно) и жмем на "OK".


18) Далее пишет "Retrieving installation information..." и некоторое время тормозит. Может подвиснуть на 40% - ничего страшного, оно продолжит установку.


19) Далее установщик спрашивает - какой софт ставить. Убираем разные GNOME, KDE, Desktop и подобные вещи, зато ставим галочку напротив надписи "Customize software selection" и продолжаем.

В следующем окне выбираем нужный софт. ВНИМАНИЕ! Очень аккуратно выбирайте, не ставьте то, что Вам не нужно на этом сервере - одна лишняя галочка - и оно радостно загрузит половину X-Window для какой-нибудь фигни.


20) Следующий шаг - оно проверяет зависимости выбранных пакетов (Checking dependencies in packages selected for installation...). Процедура занимает некоторое время, паниковать не стоит.


21) Теперь оно нам сообщает, что лог установки будет доступен после перезагрузки по пути "/root/install.log". Учитываем это и давим "ОК".


22) Оно форматирует диск... и начинает ставить софт. Процедура долгая, т.ч. не расчитывайте через 5 минут увидеть радостное сообщение, что все готово. Не волнуйтесь, если зависнет на табличке "Starting install process. This may take several minutes..." - ничего страшного. Оно думает. А может, центосу тоже нужно делать перерывы на кофе? Короче, на этой надписи установшик некоторое время тормозит.


23) После установки оно нам сообщает, что щас перезагрузится. Давим "ОК", в тайне потирая ручки - никуда оно не перезагрузися. Помните строчку "on_reboot = 'destroy'"? Воот. Машина сразу загасится и мы вернемся в консоль домена-ноль Xen.


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


25) Меняем файл конфигурации vm.cfg. Приводим его к такому виду:

bootloader = "/usr/bin/pygrub"
extra = "text"
name = "centos"
memory = "256"
disk = [ 'file:/etc/xen/vm_centos/hdd0,xvda,w' ]
vif = [ 'bridge=eth0, mac=fe:16:3e:68:fc:47' ]
vcpus=1
on_reboot = 'restart'
on_crash = 'restart'
on_poweroff = 'destroy'

Что здесь изменилось?
а) Убрали указание на ядро и initrd - они нам больше не нужны.
б) Указали загрузчиком PyGRUB - дабы ядро оно брало прямо изнутри файловой системы виртуальной машины. Плюс такого метода - при обновлении ядра нам не нужно его выгружать отдельно в домен-ноль для того, чтобы апдейты заработали.
в) Поменяли значение параметров "on_reboot" и "on_crash" на "restart". Таким образом теперь при перезагрузке оно действительно перезагрузиться, а не загасится, как сделало сейчас.


26) Стартуем машину снова:

# xm create -c vm_centos/vm.cfg

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

Здесь крайне рекомендую обратить внимание на файервол - дабы он соответствовал тому, что Вам нужно. Иначе он сразу включен и не особо приветлив даже для стандартных служб (ssh, например).


Ну все, добро пожаловать в паравиртуальный CentOS!

Выйти из консоли и вернуться в dom0 Xen можно сочетанием клавишь Ctrl+]