FastNetMon

Showing posts with label RPM. Show all posts
Showing posts with label RPM. Show all posts

Saturday, 6 November 2010

Оказывается, в RPM есть встроенный lua интерпретатор

Ага, правда: http://www.rpm.org/wiki/PackagerDocs/RpmLua

Tuesday, 16 February 2010

Где взять исходники ядра CentOS?

Получаем патч + исходники чистого ядра 2.6.18:
cd /usr/src
wget ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/kernel-`uname -r`.src.rpm
mkdir -p /usr/src/redhat/SOURCES
mkdir -p /usr/src/redhat/BUILD
rpm -ihv kernel-`uname -r`.src.rpm


Патчим дерево ядра 2.6.18 патчами от Red Hat:

yum install -y rpm-build redhat-rpm-config unifdef # необходимы для наложения патчей
cd /usr/src/redhat/SPECS
rpmbuild -bp kernel-2.6.spec


Ключ bp обозначает:

-bp Executes the "%prep" stage from the spec file. Normally this involves unpacking the sources and applying any patches.



Теперь, если необходимо провести подготовку к сборке модулей, выполняем команды:

cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i386
make oldconfig
make prepare


Либо можно подключить srcrpm репо для этого и стянуть оттуда.

Tuesday, 12 January 2010

Аналог rpm -ql в Debian

Просмотреть список файлов входящих в пакет:
dpkg --listfiles postgrey

Полезная опция rpm для борьбы с руткитами


rpm {-V|--verify} [select-options] [verify-options]

Verifying a package compares information about the installed files in the package with information about the files taken from the package metadata stored in the rpm database. Among other things, verifying compares the size, MD5 sum, permissions, type, owner and group of each file. Any discrepancies are displayed. Files that were not installed from the package, for example, documentation files excluded on installation using the "--excludedocs" option, will be silently ignored.


Для Debian есть команда:
apt-get install -y dpkg-sig

Sunday, 20 December 2009

Как скачать файлы указанные как SOURCES в SPEC?

Никак.

The URLs listed in source directives are for convenience and future reference only. RPM will not download these files.

Monday, 7 December 2009

Как собирать RPM под CentOS 5?

Ставим репозиторий Epel:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm


Для начала ставим необходимые пакеты:
yum install -y rpmdevtools


Также нам необходимо получвть SRС RPM пакеты из репозитория для пересборки, для этого нам понадобится программа yumdownloader:
yum -y install yum-utils



Создаем пользователя, под которым будем собирать пакеты:
/usr/sbin/useradd rpmbuild


Входим в систему под именем нового пользователя:

su - rpmbuild


Переходим в домашнюю папку:
cd


Инициализируем структуру каталогов для сборки RPM:
rpmdev-setuptree


Теперь скачиваем SRC RPM пакет интересующего нас модуля:

yumdownloader --enablerepo=epel-source --source nginx


А если требуется пересобрать пакет не из EPEL, а из основного репозитория CentOS? Тут возникает небольшая проблема - репозиторий с SRC RPM пакетами стандартно не добавлен в систему. Поэтому его придется установить:


wget http://fastvps.googlecode.com/svn/trunk/configs/CentOS-SRPMS.repo -O/etc/yum.repos.d/CentOS-SRPMS.repo
yum update


А скачивание с него выглядит так (либо update-SRPMS, если требуется самая новая версия пакета):
yumdownloader --enablerepo=base-SRPMS --source mysql


Итак, вернемся к nginx, попробуем собрать для него бинарный RPM пакет.

От имени рута в папке /home/rpmbuild выполняем команду:
yumdownloader --enablerepo=epel-source --source nginx



После чего, входим в систему под именем rpmbuild и обнаруживаем в домашней папке следующий файл:
nginx-0.6.39-1.el5.src.rpm


Теперь распаковываем его командой:
rpm -ihv nginx-0.6.39-1.el5.src.rpm


Далее нам необходимо поставить все пакеты, требуемые для сборки нашего пакета (запускаем от рута):
yum-builddep nginx-0.6.39-1.el5.src.rpm


После вышеописанных операций, у нас имеются исходный код пакета и SPEC файл, описывающий как его собирать в бинарник.

Переходим в папку со SPEC файлами:

cd rpmbuild/SPECS/


Запускаем сборку пакета:

rpmbuild -bb nginx.spec


Если же требуется только наложить патчи, но не билдить пэкадж, команда такая:
rpmbuild -bp nginx.spec


Если в ответ на это, будет выдан список пакетов с надписью "error: Failed build dependencies", то их придется поставить от имени рута.

Ну вот и все, в случае успешной сборки мы получим бинарные файлы в папке:

ls ~/rpmbuild/RPMS/x86_64/
nginx-0.6.39-1.x86_64.rpm nginx-debuginfo-0.6.39-1.x86_64.rpm