Compilación de YaST bajo Debian

Historial de revisiones
Revisión 0.213 / 03 / 05Revisado por: R.A
Añadidos varios comentarios aclaratorios. Conversión a DocBook
Revisión 0.106 / 03 / 05Revisado por: J.L.C
Primera versión en castellano basada en la how-to en inglés

El objetivo de este documento es redactar los pasos hasta conseguir compilar YaST bajo Debian, tarea no demasiado fácil, aunque tampoco imposible, este how-to, intentará amenizar esa tarea.

Todo lo aquí lo relatado ha sido hecho bajo Debian Sid, con kernel 2.6.10.


Tabla de contenidos
1. Instalación de los programas necesarios
2. Instalación de RPM de SuSE
3. Compilación de yast2-devtools
4. Compilación de liby2util
5. Compilación yast2-packagemanager
6. Instalación de los fuentes de hwinfo
7. Compilación de yast2-core
8. Compilación de yast2-testsuite
9. Compilación de yast2
10. Compilación de yast2-ncurses
11. Conclusiones

1. Instalación de los programas necesarios

Instalaremos los siguientes paquetes desde apt:


ramon@pangeadm:~/$ apt-get install libxml-writer-perl dejagnu flex-old doxygen electric-fence \
libslp-dev libcurl3-dev libstdc++6-dbg libsysfs-dev  checkinstall
		

Después de haber instalado esos paquetes, hacemos los siguientes enlaces:


ramon@pangeadm:~/$ ln -sf /usr/lib/debug/libstdc++.la /usr/lib/
ramon@pangeadm:~/$ ln -sf /usr/lib/debug/libstdc++.so /usr/lib/
		

2. Instalación de RPM de SuSE

Necesitamos el rpm de Debian para extraerlo y varios paquetes más para compilarlo:


ramon@pangeadm:~/$ apt-get install rpm bzip2 libelfg0
		

Nos bajamos el rpm y lo extraemos


ramon@pangeadm:~/$ wget	ftp://ftp.suse.com/pub/suse/i386/9.2/suse/src/rpm-4.1.1-191.src.rpm
ramon@pangeadm:~/$ rpm2cpio rpm-4.1.1-191.src.rpm | cpio -
		

Ahora tenemos que aplicar los parches, de SuSE, en el archivo rpm.spec, viene el orden de los patch, veremos algo parecido a esto:


ramon@pangeadm:~/$ grep ^Patch ../rpm.spec
Patch:        rpm-4.1.1.diff
Patch1:       rpmqpack.diff
Patch2:       rpm-4.1.1-findlang.diff
Patch3:       ia64-asm.patch
Patch4:       rpm-4.1.1-fdleak.diff
Patch6:       rpm-4.1.1-hppa.diff
Patch7:       rpm-4.1.1-ice.diff
Patch8:       rpm-4.1.1-ppc-no-mfspr_jmpbuf.diff
Patch9:       lvalue.diff
Patch11:      brp-compress.diff
		

Extraemos el tar.gz del código fuente, nos situamos en el directorio y lo parcheamos en el orden que vemos con el grep:


ramon@pangeadm:~/$ patch -p0 < ../patch.diff
		

Después de aplicar todos los parches, ejecutamos el configure:


./configure --prefix=/usr
		

Ahora instalamos los siguientes paquetes:


apt-get install python2.3-dev libltdl3-dev libdwarf-dev
		

Tenemos que quitar la opción -Werror de los Makefiles situados en elfutils/lib*/Makefile y elfutils/test/Makefile dentro del código fuente del rpm. Algunos se generan mientras se compila, cuando de error veremos qué Makefile es y le quitamos el -Werror.

Para detectarlos podemos hacer: grep Werror elfutils/*/Makefile

Hacemos touch po/mkinstalldirs elfutils/po/mkinstalldirs en el directorio fuente rpm-4.1.

Ahora hacemos un enlace con de los archivos de cabecera de python2.3 a /usr/include y empezamos la compilación:


ramon@pangeadm:~/$ ln -s /usr/include/python2.3/* /usr/include
ramon@pangeadm:~/$ ln -s /usr/include/libdwarf/dwarf.h  /usr/local/include/
#make
#checkinstall
		

Notacheckinstall y mkinstalldirs
 

Si tenéis un problema al hacer make y os sale un fallo de compilación, yo lo arregle modificando el Makefile de popt/po ya que en el MKINSTALLDIRS tenía un directorio de más. Lo deje así:

MKINSTALLDIRS = $(top_builddir)/./mkinstalldirs

Notacheckinstall y dpkg
 

Al acabar el checkinstall intentará instalar el paquete debian creado y quizá tenga problemas de conflicto con el rpm de debian. Borramos el de debian apt-get remove rpm librpm4 libpopt0 e instalamos a mano el paquete generado dpkg -i rpm-4.1.1_4.1.1-1_i386.deb


3. Compilación de yast2-devtools

Instalamos los siguientes paquetes:


#apt-get install sgmltools-lite linuxdoc-tools gettext g++
		

Nos bajamos el código fuente de yast2-devtools del ftp de Suse. Yo lo he hecho todo con la SuSE 9.1, quitando el paquete rpm4.1, debido a que con la versión 9.2 tuve fallos en algunos paquetes. Eso si no hagáis una mezcla de paquetes de las dos versiones, ya que os saldrán muchos errores de compilación.

Extraemos el código fuente


ramon@pangeadm:~/$ rpm2cpio package.src.rpm | cpio -
		

y dentro de la carpeta de código fuente:


ramon@pangeadm:~/YaST4Debian/src.rpm/yast2-devtools/yast2-devtools-2.9.17$ ./configure
ramon@pangeadm:~/YaST4Debian/src.rpm/yast2-devtools/yast2-devtools-2.9.17$ make
ramon@pangeadm:~/YaST4Debian/src.rpm/yast2-devtools/yast2-devtools-2.9.17$ checkinstall
		

4. Compilación de liby2util

Mismo procedimiento que antes, nos bajamos el código fuente del ftp de suse, extraemos dicho código y ejecutamos:


ramon@pangeadm:~/$ wget ftp://ftp.suse.com/pub/suse/i386/9.1/suse/src/liby2util-2.9.22-0.src.rpm
ramon@pangeadm:~/$ rpm2cpio liby2util-2.9.22-0.src.rpm | cpio - 
		

Hace falta el paquete libtool y automake1.6


pangeadm:~/YaST4Debian/src.rpm/liby2util/liby2util-2.9.22# apt-get install libtool
pangeadm:~/YaST4Debian/src.rpm/liby2util/liby2util-2.9.22# apt-get install automake1.6
		

Si tenemos instalado el automake1.4 lo eliminamos


pangeadm:~/YaST4Debian/src.rpm/liby2util/liby2util-2.9.22# /usr/bin/y2tool y2autoconf
pangeadm:~/YaST4Debian/src.rpm/liby2util/liby2util-2.9.22# /usr/bin/y2tool y2automake
pangeadm:~/YaST4Debian/src.rpm/liby2util/liby2util-2.9.22# autoreconf --force --install
pangeadm:~/YaST4Debian/src.rpm/liby2util/liby2util-2.9.22# ./configure
pangeadm:~/YaST4Debian/src.rpm/liby2util/liby2util-2.9.22# make
pangeadm:~/YaST4Debian/src.rpm/liby2util/liby2util-2.9.22# checkinstall
		

5. Compilación yast2-packagemanager

Lo mismo, nos bajamos el código fuente lo extraemos y ejecutamos:


pangeadm:~/YaST4Debian/src.rpm/yast2-packagemanager/yast2-packagemanager-2.9.37# ln -s /usr/lib/libpopt.la /usr/local/lib/
pangeadm:~/YaST4Debian/src.rpm/yast2-packagemanager/yast2-packagemanager-2.9.37# ln -s /usr/lib/libpopt.so /usr/local/lib/
pangeadm:~/YaST4Debian/src.rpm/yast2-packagemanager/yast2-packagemanager-2.9.37# y2tool autoconf
pangeadm:~/YaST4Debian/src.rpm/yast2-packagemanager/yast2-packagemanager-2.9.37# y2tool automake
pangeadm:~/YaST4Debian/src.rpm/yast2-packagemanager/yast2-packagemanager-2.9.37# autoreconf --force --install
pangeadm:~/YaST4Debian/src.rpm/yast2-packagemanager/yast2-packagemanager-2.9.37# ./configure
pangeadm:~/YaST4Debian/src.rpm/yast2-packagemanager/yast2-packagemanager-2.9.37# make
pangeadm:~/YaST4Debian/src.rpm/yast2-packagemanager/yast2-packagemanager-2.9.37# checkinstall
		

Nota: Es posible el siguiente problema con la compilación (puede no ocurrir). No linkaba bien una biblioteca, el archivo en cuestión a modificar era liby2pm.la y lo deje tal que asi:

dependency_libs=' /usr/lib/librpm.la -L/var/tmp/rpm-root/usr/lib -L/root/rpm4.1/rpm-4.1.1/zlib -L/usr/local/lib /usr/lib/librpmdb.la /usr/lib/librpmio.la -lrt -lpthread /usr/lib/libbz2.la /usr/lib/libpopt.la /usr/lib/libslp.la /usr/lib/libcurl.la /usr/lib/libidn.la -lz /usr/lib/liby2util.la -lutil -lssl -lcrypto -ldl '


6. Instalación de los fuentes de hwinfo

Descargaremos y compilaremos el código fuente de hwinfo, programa necesario para YaST.


pangeadm:~/YaST4Debian/src.rpm/hwinfo# wget ftp://ftp.suse.com/pub/suse/i386/9.1/suse/src/hwinfo-8.38-0.src.rpm
pangeadm:~/YaST4Debian/src.rpm/hwinfo# rpm2cpio hwinfo-9.31-1.1.src.rpm  |cpio -i
pangeadm:~/YaST4Debian/src.rpm/hwinfo/hwinfo-8.38# make
		

Ahora copiamos del código fuente de hwinfo, el archivo libhd.a a /usr/lib y las cabeceras a /usr/include.


ramon@pangeadm:~/$ rpm2cpio hwinfo-9.31-1.1.src.rpm  |cpio -i
pangeadm:~/YaST4Debian/src.rpm/hwinfo/hwinfo-8.38# cp src/libhd.a /usr/lib
pangeadm:~/YaST4Debian/src.rpm/hwinfo/hwinfo-8.38# cp src/hd/hd.h /usr/include/
		

7. Compilación de yast2-core

Bajamos el código fuente del ftp de SuSE , lo extraemos y ejecutamos lo siguiente:


pangeadm:~/YaST4Debian/src.rpm/yast2-core# apt-get install bison ncurses-dev libxcrypt-dev
pangeadm:~/YaST4Debian/src.rpm/yast2-core# wget ftp://yast4debian.alioth.debian.org/pub/yast4debian/yast2-core-2.9.79.tar.bz2  
pangeadm:~/YaST4Debian/src.rpm/yast2-core# ln -sf /lib/libpopt.so.0 /usr/lib/libpopt.so.1
pangeadm:~/YaST4Debian/src.rpm/yast2-core/yast2-core-2.9.79# /usr/bin/y2tool y2autoconf
pangeadm:~/YaST4Debian/src.rpm/yast2-core/yast2-core-2.9.79# /usr/bin/y2tool y2automake
pangeadm:~/YaST4Debian/src.rpm/yast2-core/yast2-core-2.9.79#  autoreconf --force --install
pangeadm:~/YaST4Debian/src.rpm/yast2-core/yast2-core-2.9.79# ./configure 
pangeadm:~/YaST4Debian/src.rpm/yast2-core/yast2-core-2.9.79#  make
pangeadm:~/YaST4Debian/src.rpm/yast2-core/yast2-core-2.9.79#  checkinstall 
	

8. Compilación de yast2-testsuite


pangeadm:~/YaST4Debian/src.rpm/yast2-testsuite# wget ftp://yast4debian.alioth.debian.org/pub/yast4debian/yast2-testsuite-2.9.9.tar.bz2
pangeadm:~/YaST4Debian/src.rpm/yast2-testsuite# tar xfj yast2-testsuite-2.9.9.tar.bz2
pangeadm:~/YaST4Debian/src.rpm/yast2-testsuite/yast2-testsuite-2.9.9# ./configure
pangeadm:~/YaST4Debian/src.rpm/yast2-testsuite/yast2-testsuite-2.9.9# /usr/bin/y2tool y2autoconf
pangeadm:~/YaST4Debian/src.rpm/yast2-testsuite/yast2-testsuite-2.9.9# /usr/bin/y2tool y2automake
pangeadm:~/YaST4Debian/src.rpm/yast2-testsuite/yast2-testsuite-2.9.9# autoreconf --force --install
pangeadm:~/YaST4Debian/src.rpm/yast2-testsuite/yast2-testsuite-2.9.9# ./configure
pangeadm:~/YaST4Debian/src.rpm/yast2-testsuite/yast2-testsuite-2.9.9# make
pangeadm:~/YaST4Debian/src.rpm/yast2-testsuite/yast2-testsuite-2.9.9# checkinstall
	

9. Compilación de yast2

De nuevo se procede igual que con los anteriores paquetes:


pangeadm:~/YaST4Debian/src.rpm/yast2# wget ftp://yast4debian.alioth.debian.org/pub/yast4debian/yast2-2.9.60.tar.bz2
pangeadm:~/YaST4Debian/src.rpm/yast2# tar xfj yast2-2.9.60.tar.bz2
pangeadm:~/YaST4Debian/src.rpm/yast2/yast2-2.9.60# /usr/bin/y2tool y2autoconf
pangeadm:~/YaST4Debian/src.rpm/yast2/yast2-2.9.60# /usr/bin/y2tool y2automake
pangeadm:~/YaST4Debian/src.rpm/yast2/yast2-2.9.60# autoreconf --force --install
pangeadm:~/YaST4Debian/src.rpm/yast2/yast2-2.9.60# ./configure
pangeadm:~/YaST4Debian/src.rpm/yast2/yast2-2.9.60# make
pangeadm:~/YaST4Debian/src.rpm/yast2/yast2-2.9.60# checkinstall
	

10. Compilación de yast2-ncurses

Nos bajamos el código fuente, lo extraemos y ejecutamos :


# apt-get install libncursesw5-dev
# ln -s /usr/lib/libpopt.a /usr/local/lib
		

Añadir a yast2-ncurses-2.9.20/src/Makefile y yast2-ncurses-2.9.20/Makefile lo siguiente: include: -I$(oldincludedir)/ncursesw


# /usr/bin/y2tool y2autoconf
# /usr/bin/y2tool y2automake
# autoreconf --force --install
# ./configure
# make
# checkinstall
		

11. Conclusiones

Bueno hasta aquí llega el how-to, quisiera agradecer a Ramón Acedo, su colaboración ya que sin él no creo que hubiera logrado llegar a compilarlo. Después podéis probar a instalar el modulo de Users de Yast y comprobar a ver si os funciona.

Si tenéis algo que añadir al how-to, o algo que no quedo claro, no dudéis en decirlo, podeis contactar conmigo por jabber en pikota@jabber.org, y con Ramón en ramon@linux-labs.net.