Para gerar um rpm para o eos são necessárias algumas alterações na estrutura de diretórios, os parâmetros para alteração da estrutura podem ser obtidos através do arquivo configure, contido no source da maioria dos pacotes.
Ex.: Criação do RPM para o Mysql
1 - Baixar o fonte do site.
Após baixar o pacote descompacta-lo e executar ./configure –help
Algo parecido será apresentado:
Fine tuning of the installation directories:
–bindir=DIR user executables [EPREFIX/bin]
–sbindir=DIR system admin executables [EPREFIX/sbin]
–libexecdir=DIR program executables [EPREFIX/libexec]
–datadir=DIR read-only architecture-independent data [PREFIX/share]
–sysconfdir=DIR read-only single-machine data [PREFIX/etc]
–localstatedir=DIR modifiable single-machine data [PREFIX/var]
–libdir=DIR object code libraries [EPREFIX/lib]
–includedir=DIR C header files [PREFIX/include]
–infodir=DIR info documentation [PREFIX/info]
–mandir=DIR man documentation [PREFIX/man]
Essas opções serão utilizadas para alterar os diretórios de instalação para o padrão do EOS.
São Eles:
–prefix=/opt/addons/mysql
–bindir=/opt/addons/bin/
–sbindir=/opt/addons/sbin
–libexecdir=/opt/addons/mysql/libexec/
–datadir=/opt/addons/mysql/share
–sysconfdir=/opt/addons/mysql/etc
–localstatedir=/opt/addons/mysql/var
–libdir=/opt/addons/lib
–includedir=/opt/addons/include
–infodir=/opt/addons/info
–mandir=/opt/addons/man
2 - Dentro da sua estrutura de RPM colocar o pacote (compactado) dentro do diretório SOURCE/
3 - Criar o arquivo .spec
Exemplo de arquivo de SPEC do mysql
Name: mysql
Summary: The MySQL Server
Version: 5.0.67
Release: 1
Source0: %{name}-%{version}.tar.gz
Group: Addons
URL: http://www.mysql.com
BuildRoot: %{_tmppath}/%{name}-buildroot
Packager: Felipe Santos < \n felipe@brc.com.br Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo. >
License: GPL
%package client
Summary: MySQL client
Group: Addons
%package docs
Requires: %{name} = %{version}-%{release}
Summary:Documentation of MySQL
Group: Addons/Docs
%package devel
Requires: %{name} = %{version}-%{release}
Summary: Headers of MySQL
Group: Addons/Devel
%description
The MySQL server
%description client
The MySQL Client
%description docs
Documentation of the MySQL Server
%description devel
The MySQL headers and build for development including original config files
%prep
%setup -q
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d/
mkdir -p $RPM_BUILD_ROOT/etc/{logrotate.d,sysconfig}
%build
./configure \
–prefix=/opt/addons/mysql \
–localstatedir=/opt/addons/mysql/var/ \
–bindir=/opt/addons/bin \
–sbindir=/opt/addons/sbin \
–libdir=/opt/addons/lib \
–mandir=/opt/addons/man \
–infodir=/opt/addons/info \
–includedir=/opt/addons/include \
–libexecdir=/opt/addons/sbin \
make
%install
make DESTDIR=$RPM_BUILD_ROOT install
mkdir -p $RPM_BUILD_ROOT%{_mysqldir}/etc/
mkdir -p $RPM_BUILD_ROOT%{_mysqldir}/var/logs/
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%exclude /opt/addons/include
%exclude /opt/addons/man
%exclude /opt/addons/info
%exclude /opt/addons/mysql
%exclude /opt/addons/bin/msql2mysql
%exclude /opt/addons/bin/mysql
%exclude /opt/addons/bin/mysql_find_rows
%exclude /opt/addons/bin/mysql_tableinfo
%exclude /opt/addons/bin/mysql_waitpid
%exclude /opt/addons/bin/mysqlaccess
%exclude /opt/addons/bin/mysqladmin
%exclude /opt/addons/bin/mysqlbinlog
%exclude /opt/addons/bin/mysqlcheck
%exclude /opt/addons/bin/mysqldump
%exclude /opt/addons/bin/mysqlimport
%exclude /opt/addons/bin/mysqlshow
%exclude /opt/addons/lib/mysql
%config(noreplace,missingok) /opt/addons/mysql/etc/my.cnf
%config(noreplace,missingok) /etc/sysconfig/mysql
%config(noreplace,missingok) /etc/logrotate.d/mysql
/*
%files client
%defattr(755,root,root,-)
/opt/addons/bin/msql2mysql
/opt/addons/bin/mysql
/opt/addons/bin/mysql_find_rows
/opt/addons/bin/mysql_tableinfo
/opt/addons/bin/mysql_waitpid
/opt/addons/bin/mysqlaccess
/opt/addons/bin/mysqladmin
/opt/addons/bin/mysqlbinlog
/opt/addons/bin/mysqlcheck
/opt/addons/binmysqldump
/opt/addons/bin/mysqlimport
/opt/addons/bin/mysqlshow
/opt/addons/lib/mysql
%files docs
%defattr(-,root,root,-)
/opt/addons/man
/opt/addons/info
%files devel
%defattr(-,root,root,-)
/opt/addons/include
/opt/addons/mysql
%post
groupadd mysql -g 47 2> /dev/null
useradd -c "MySQL Server" -u 47 -s /sbin/nologin -g mysql -d /opt/addons/var/mysql mysql 2> /dev/null
chown mysql:mysql /opt/addons/mysql/var
if [ ! -d /var/log/mysql ];then
mkdir /var/log/mysql
fi
if [ -d /opt/addons/var/logs ];then
rm -rf /opt/addons/var/logs
fi
chown mysql:mysql /var/log/mysql
if [ ! -d /opt/addons/var ];then
mkdir /opt/addons/var
chown mysql:mysql /opt/addons/var
fi
%postun
userdel mysql 2> /dev/null
%changelog
* Mon Aug 18 2008 Felipe Santos < \n felipe@brc.com.br Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo. >
- Criado este Spec
Este é um exemplo apenas para demonstrar como alterar a estrutura de diretórios dentro de um SPEC, no caso do mysql outras opções podem ser setadas no ./configure para adicionar ou remover recursos no mysql.
4 - Após a criação do Spec e do download do source executar o comando:
#rpmbuild -ba SPECS/mysql.spec