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

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

Установка net-snmp-utils в RHEL

Добрый день. Возникла необходимость установить на RedHat x86_64 snmpwalk. Естественно в репозитории rhel его нет. snmpwalk находится в пакете net-snmp-utils . Поискав решение в интернете я поключил несколько репозиториев EPEL, REMI, RPMforge .

Комманды для x86_64 (RHEL 6) :

cd /tmp
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install -y yum-priorities

Комманды для i386 (RHEL 6) :

cd /tmp
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
rpm -ivh rpmforge-release-0.5.3-1.el6.rf.i686.rpm
rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install -y yum-priorities
 
Включаем репозитории и выставляем приоритет: 
Во всех репозиториях выставляем enabled=1 и после этой строчки добавляем priority=10 .
vim /etc/yum.repos.d/remi.repo
 
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority
 
vim /etc/yum.repos.d/epel.repo
 
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
 
Но это не сработало. На http://mirror.centos.org/centos/5/os/x86_64/CentOS/ я нашёл 
нужные пакеты:
wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/net-snmp-5.3.2.2-20.el5.x86_64.rpm
wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/net-snmp-utils-5.3.2.2-20.el5.x86_64.rpm
wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/net-snmp-libs-5.3.2.2-20.el5.i386.rpm
rpm -Uhv net-snmp-libs-5.3.2.2-20.el5.i386.rpm
rpm -Uhv net-snmp-5.3.2.2-20.el5.x86_64.rpm
rpm -Uhv net-snmp-utils-5.3.2.2-20.el5.x86_64.rpm

Теперь работает.

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