Я горячо приветствую всех! :) Я хотел бы поделиться своим опытом сборки RPM-пакетов в CentOS 6.4 x64. Мне нравится эта система, все просто, информации много.
И на большинстве наших сервисов (небольших хостинговых компаний) он установлен.
Не собирайте пакеты на своем рабочем сервере; зачем вам дополнительные пакеты? Я создал виртуальную машину и делаю это.
Сегодня мы будем собирать PHP-5.5.4, который вышел буквально день назад. Почему PHP? Потому что больше всего я страдал с его сборкой: то ли не было нормального spec-файла, то ли в нем были ошибки (когда я сам что-то добавлял/исправлял).
Короче говоря, я прожил с ним больше недели.
И в муках родилось решение, как правильно собрать пакет для PHP. Ну что, дорогие, приступим к делу! 1. Установил ОС.
Учтем, что все действия по установке и обновлению выполняются от имени пользователя root, поэтому мы не используем sudo. Теперь обновимся и перезагрузимся:
2. Подключаем дополнительные репозитории.yum update -y && shutdown -r now
Я использую следующие немногие:
rpm -ivh --nosignature http://rpm.axivo.com/redhat/axivo-release-6-1.noarch.rpm && rpm -ihv http://centos.alt.ru/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm
Давай сделаем
yum update -y
3. Теперь мы устанавливаем все хорошее, без чего мы никогда не будем собирать PHP. Сначала от CentALT:
yum install -y libcurl-devel pam-devel sqlite-devel libedit-devel libtool-ltdl-devel libc-client-devel --enablerepo=CentALT
Тогда из Аксиво:
yum -y install postgresql-devel unixODBC-devel net-snmp-devel libxslt-devel libxml2-devel aspell-devel enchant-devel libicu-devel mariadb-server mariadb-devel t1lib-devel libjpeg-devel libpng-devel freetype-devel libXpm-devel libvpx-devel gmp-devel tokyocabinet-devel libmcrypt-devel libtidy-devel freetds-devel recode-devel --enablerepo=axivo
Итак, давайте проверим версию openssl:
openssl version
Если не 1.0.1e, то сделайте так:
yum install -y openssl openssl-devel--enablerepo=axivo
Теперь устанавливаем то, что необходимо для непосредственной сборки:
yum groupinstall -y "Development Tools" && yum install rpmdevtools
4. Теперь создадим необходимую среду для сборки.
Действия, описанные ниже, необходимо выполнять от имени обычного пользователя, а не от имени root, это очень важный момент.
Давайте сделаем это следующим образом: rpmdev-setuptree
Эта команда создаст каталог со следующими подкаталогами: + rpmbuild
-BUILD
-BUILDROOT
-RPMS
-SOURCES
-SPECS
-SRPM
Здесь СТРОИТЬ файлы из исходного архива будут распакованы.
В РПМС будут ваши пакеты RPM. Здесь ИСТОЧНИКИ разместите все исходники с конфигами.
СПЕЦИФИКАЦИИ — содержит спецификационный файл с инструкциями по сборке.
Это самая важная часть сборки пакета.
СРПМ — содержит файл *.
src.rpm — исходники пакета rpm. Мы можем распространять его вместе с пакетами rpm, для тех, кому нужно что-то добавить/удалить из будущего пакета.
Содержит файл спецификации и исходники для сборки.
Весь файл спецификации здесь выкладывать не буду, потому что там и так 1200 с лишним строк, поэтому предлагаю скачать архив.
здесь Я думал, что можно просто переделать spec-файл из исходников rpm-пакета php-5.4, но не тут-то было! Есть масса подводных камней, которые сложно решить самостоятельно.
Нашел в репозиториях Реми необходимый src.rpm версии 5.5 и переделал его под новую версию.
И все получилось.
Итак, предположим, что вы скачали все исходники и распаковали их в свой домашний каталог.
Затем перейдите в каталог SPEC и выполните следующую команду, чтобы собрать пакет rpm вместе с src.rpm: rpmbuild -ba php55.spec
Сбор начался.
Это займет много времени, в зависимости от мощности компьютера.
У меня это заняло около 40 минут. Если выйдет новая версия PHP (скажем 5.5.*), то скачайте архив bz2 в папку с исходниками (напомню, это SOURCES), отредактируйте файл SPECS/php55.spec. Измените «Версия: 5.5.4» на нужную версию.
И можно собрать новый.
Уже собранные пакеты можно скачать здесь P.S. После обновления одного из серверов с версии 5.4 до 5.5.4 ничего страшного не произошло.
Единственная проблема заключалась в том, что у клиента было «Depraceted: preg_replace() /e», что легко исправить заменой preg_replace()/е на preg_replace_callback() .
Всем творческих узбеков :) Теги: #*nix #Системное администрирование #администрирование
-
Темное Затмение Юноны?
19 Oct, 24 -
Как Я Езжу?
19 Oct, 24 -
Сколько Ресурсов Вы Посещаете? Они Меняются?
19 Oct, 24