Home Fórum How-to Criando RPMs para o EOS
 Fórum :: How-to
Welcome Guest   [Register]  [Login]
 Subject :Criando RPMs para o EOS.. 21-10-2009 08:05:17 
felipe
Joined: 29-01-2009 10:58:15
Posts: 5
Location
  

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

IP Logged

#========================#
Felipe Santos ''
E-mail/Gtalk: felipe.nix@gmail.com
MSN: flph2@hotmail.com
Comunidade Openswan-BR
www.br.openswan.org
Mantenedor EOS-Linux
eos.brc.com.br
#========================#
Page # 


Powered by ccBoard