20
PASOS ESENCIALES PARA GENERAR EL RPM DE TU ELASTIX-ADDON Dpto. Desarrollo Elastix Luis Abarca

Pasos esenciales para generar el RPM de tu Elastix Addon

  • Upload
    elastix

  • View
    653

  • Download
    1

Embed Size (px)

DESCRIPTION

Luis Abarca Elastix Development Engineer PaloSanto Solutions

Citation preview

Page 1: Pasos esenciales para generar el RPM de tu Elastix Addon

PASOS ESENCIALES PARA GENERAR

EL RPM DE TU ELASTIX-ADDON

Dpto. Desarrollo Elastix

Luis Abarca

Page 2: Pasos esenciales para generar el RPM de tu Elastix Addon

RPM

Dpto. Desarrollo Elastix

Un rpm es una forma de referirse al formato de archivos manejado

por el Administrador de Paquetes RPM, a los propios archivos con

este formato, a software empaquetado en estos archivos, y al propio

administrador de paquetes en si.

Nos referiremos en esta ocasión como rpms al software

empaquetado bajo este tipo de formato.

Page 3: Pasos esenciales para generar el RPM de tu Elastix Addon

Estructura de un entorno

de Generación Básico

Dpto Desarrollo Elastix

Page 4: Pasos esenciales para generar el RPM de tu Elastix Addon

Estructura de un Entorno

~/rpmbuild/SOURCES Paquete fuente prístina (Ej:, tarballs y

parches).

~/rpmbuild/BUILD Los archivos fuentes son desempaquetados y

compilados en un subdirectorio dentro de

este.

~/rpmbuild/BUILDROOT Los archivos son instalados bajo este directorio

durante la etapa %install.

~/rpmbuild/RPMS Los RPM binarios son creados y

almacenados bajo este directorio.

~/rpmbuild/SRPMS Los RPM fuente son creados y almacenados

bajo este directorio.

~/rpmbuild/SPECS Archivos de especificaciones RPM (.spec).

Dpto. Desarrollo Elastix

Page 5: Pasos esenciales para generar el RPM de tu Elastix Addon

Generalidades al construir

un RPM

Dpto. Desarrollo Elastix

Page 6: Pasos esenciales para generar el RPM de tu Elastix Addon

Visión GeneralEl código fuente.

Parches.

Administrar el desempaquetado, la construcción y la

instalación.

Controla el paquete.

Dpto. Desarrollo Elastix

Page 7: Pasos esenciales para generar el RPM de tu Elastix Addon

Archivo SpecTodo lo que se hace con el paquete se encuentra

aquí.

Mantiene toda la información junta.

Provee de información.

Controla la construcción del paquete

Dpto. Desarrollo Elastix

Page 8: Pasos esenciales para generar el RPM de tu Elastix Addon

Estructura RPM Elastix-

Addon

Dpto. Desarrollo Elastix

Page 9: Pasos esenciales para generar el RPM de tu Elastix Addon

Estructura RPM-Elastix-Addon

El source debe tener la siguiente estructura:

Dpto. Desarrollo Elastix

NOMBREMODULO

-->modules

-->setup

-->menu.xml

Page 10: Pasos esenciales para generar el RPM de tu Elastix Addon

Estructura RPM-Elastix-Addon

El source debe tener la siguiente estructura:

Dpto. Desarrollo Elastix

-->modules

-->moduloaddon

-->setup

-->delete

-->nombremoduloaddon

-->#number_nombremoduloaddon.sql

-->install

-->nombremoduloaddon

-->#number_schema.sql

-->update

-->nombremoduloaddon

-->version_sql

-->#number_#lastVersion_#newVersion.sql

-->db.info

-->menu.xml

Page 11: Pasos esenciales para generar el RPM de tu Elastix Addon

Archivo: db.info

[myDBSqlite]

ignore_backup = no

engine = sqlite3

path = /var/www/db

deletable = no

[myDBMysql]

ignore_backup = no

engine = mysql

path = /var/lib/mysql

deletable = no

Dpto. Desarrollo Elastix

Page 12: Pasos esenciales para generar el RPM de tu Elastix Addon

Archivo: menu.xml<?xml version="1.0" encoding="UTF-8"?>

<module>

<menulist>

<menuitem menuid="userListTest"

desc="Users List Test"

parent="" module="no" link=""

order="8"></menuitem>

<menuitem menuid="user_list"

desc="User List"

parent="userListTest" module="yes"

link="" order="1">

<permissions>

<group id="1"

name="administrator" desc="total

access"></group>

</permissions>

</menuitem>

</menulist>

</module>Dpto. Desarrollo Elastix

Page 13: Pasos esenciales para generar el RPM de tu Elastix Addon

Ejemplo de Archivo SPEC.. (1/4)%define modname usertest

Summary: Elastix Module Example

Name: elastix-%{modname}

Version: 2.4.0

Release: 1

License: GPL

Group: Applications/System

Source0: %{modname}_%{version}-%{release}.tgz

BuildRoot: %{_tmppath}/%{name}-%{version}-root

BuildArch: noarch

Prereq: elastix-framework >= 2.4.0-10

%description

Elastix Module Example

%prep

%setup -n %{modname}

%install

rm -rf $RPM_BUILD_ROOT

# Files provided by all Elastix modules

mkdir -p $RPM_BUILD_ROOT/var/www/html/

mv modules/$RPM_BUILD_ROOT/var/www/html/

# The following folder should contain all the data

that is required by the installer,

Dpto. Desarrollo Elastix

Page 14: Pasos esenciales para generar el RPM de tu Elastix Addon

Ejemplo de Archivo SPEC.. (2/4)# that cannot be handled by RPM.

mkdir -p

$RPM_BUILD_ROOT/usr/share/elastix/module_installer/%{

name}-%{version}-%{release}/

mv

setup/$RPM_BUILD_ROOT/usr/share/elastix/module_instal

ler/%{name}-%{version}-%{release}/

mv menu.xml

$RPM_BUILD_ROOT/usr/share/elastix/module_installer/%{

name}-%{version}-%{release}/

%pre

mkdir -p /usr/share/elastix/module_installer/%{name}-

%{version}-%{release}/

touch /usr/share/elastix/module_installer/%{name}-

%{version}-%{release}/preversion_%{modname}.info

if [ $1 -eq 2 ]; then

rpm -q --queryformat='%{VERSION}-%{RELEASE}'

%{name} >

/usr/share/elastix/module_installer/%{name}-

%{version}-%{release}/preversion_%{modname}.info

fi

%post

pathModule="/usr/share/elastix/module_installer/%{nam

e}-%{version}-%{release}"

# Run installer script to fix up ACLs and add module

to Elastix menus.

elastix-menumerge $pathModule/menu.xml

Dpto. Desarrollo Elastix

Page 15: Pasos esenciales para generar el RPM de tu Elastix Addon

Ejemplo de Archivo SPEC.. (3/4)pathSQLiteDB="/var/www/db"

mkdir -p $pathSQLiteDB

preversion=`cat

$pathModule/preversion_%{modname}.info`

if [ $1 -eq 1 ]; then #install

# The installer database

elastix-dbprocess "install"

"$pathModule/setup/db"

elif [ $1 -eq 2 ]; then #update

elastix-dbprocess "update"

"$pathModule/setup/db" "$preversion"

fi

%clean

rm -rf $RPM_BUILD_ROOT

%preun

if [ $1 -eq 0 ] ; then # Validation for desinstall

this rpm

echo "Delete example menus"

elastix-menuremove "%{modname}"

# Here you should call to elastix-dbprocess for

deleting, the same way that it was for install, just

that instead of word “install” goes word

#“delete”. But this is not often used due to

the databases usually are not deleted.

fi

Dpto. Desarrollo Elastix

Page 16: Pasos esenciales para generar el RPM de tu Elastix Addon

Ejemplo de Archivo SPEC.. (4/4)

%files

%defattr(-, asterisk, asterisk)

%{_localstatedir}/www/html/*

/usr/share/elastix/module_installer/*

%changelog

* Wed Aug 27 2014 Luis Abarca Villacis

<[email protected]> 2.4.0-1

Initial version.

Dpto. Desarrollo Elastix

Page 17: Pasos esenciales para generar el RPM de tu Elastix Addon

Pasos Finales

Dpto. Desarrollo Elastix

Page 18: Pasos esenciales para generar el RPM de tu Elastix Addon

Pasos FinalesUna vez elaborado el RPM debe enviarlo a nuestro

Departamento de Addons.

Para mas información visite http://addons.elastix.org/

Dpto. Desarrollo Elastix

Page 19: Pasos esenciales para generar el RPM de tu Elastix Addon

Demostración

Dpto. Desarrollo Elastix

Page 20: Pasos esenciales para generar el RPM de tu Elastix Addon

Gracias….

Dpto. Desarrollo Elastix