Compilación de Mozilla e instalación de módulos conectables

TÍTULO:			Compilación de Mozilla e instalación de módulos conectables
VERSIÓN LFS:	Cualquiera 
AUTOR:			Tushar Teredesai <Tush@Yahoo.Com>
TRADUCTOR:	Proyecto LFS-ES

SINOPSIS: 
	Cómo compilar 'Mozilla desde cero' e instalar algunos módulos
	conectables (plugins) importantes.

RECETA:

Registro de Cambios:
[2002-08-07]
	* Hechos parches individuales.
[2002-07-12]
	* Añadido el enlace netscape -> mozilla.
[2002-06-20]
	* Modificada la variable CFLAGS que uso.
[2002-06-19]
	* Añadido un emplazamiento alternativo para la receta. 
[2002-06-17]
	* Añadida la opción "make install"
	* Añadida la variable MOZ_PLUGIN_PATH. 
	* Añadida una advertencia para la opción GTK2
[2002-05-14]
	* Añadidas explicaciones de las opciones de configuración. 
	* Añadidas opciones para compilar únicamente el navegador.
[2002-04-28]
	* Añadida la opción de las herramientas gkt2.
	* Se añade una sección a la lista de URLs de relevancia.
[2002-04-24]
	* Añadido un truco para ignorar el atributo que deshabilita el
	autocompletado (autocomplete=off) usado en algunos sitios web.
	* Añadidas algunas opciones en las preferencias muy útiles. 
[2002-04-22]
	* Corregidas algunas erratas, ¡de nuevo!
	* Renombrada la receta a mozilla. 
	* Añadidas advertencias para CFLAGS, CXXFLAGS. 
	* Añadida advertencia para las herramientas QT y XLib.
	* Añadida información sobre las distribuciones precompiladas. 
	* Añadida la variable MOZILLA_FIVE_HOME al .mozconfig 
	* Añadidas las instrucciones para copiar la página man, los ficheros
	de cabecera y los archivos idl. 
[2002-03-28]
	* Corregidas algunas erratas.
	* Variables de entorno para acelerar Mozilla. 
	* Primera versión (llamada mozcompile).

Requisitos previos:
	* X 4.2.0
	* GLib & GTK >= 1.2 (<2.0)
	* libIDL >= 0.6.3 && < 0.7
	* JPEG, PNG, MNG Libraries (últimas versiones)

Paquetes a descargar:
	* Info Zip >= 2.3 <http://www.info-zip.org/Zip.html>
	* iCal <http://www.softwarestudio.org/libical/> [Opcional]
	* Mozilla:) <http://www.mozilla.org/releases>
	* Mozilla SpellChecker <http://spellchecker.mozdev.org/source.html>

Emplazamiento alternativo:
Esta receta está disponible también en
<http://www.geocities.com/tush/lfs>. La última versión de la receta
está disponible allí.

También en ese sitio hay disponibles varios parches. Pruebalos.

Instalando X:

Yo tengo X-4.2.0. Si es posible, utiliza la última versión. Ha habido
algunos problemas cuando se compila el soporte Xft para algunas
versiones de X. Consulta el libro BLFS para la instalación de X.


Instalando GTK:

Instala GTK 1.2 y sus dependencias (GLib-1.2). Mozilla tiene una opción
nueva para compilar para GTK 2.0 pero yo tuve problemas compilándolo
para GTK2.  En tu caso puede ser diferente.

La instalación no es más que una instalación normal:
	./configure --help
	./configure "$OPTIONS" && make && make install


Instalando libIDL:

libIDL es parte de ORBIT (Orbit1, no Orbit2). Si no has instalado
ORBIT1, descarga libIDL del ftp de mozilla.


Instalando las Bibliotecas de Imagen (JPEG, PNG, MNG):

Consulta el libro BLFS para las instrucciones de instalación. Consigue
las últimas versiones.

Instalando Zip:

Hay opciones adicionales, revisa el unix/makefile. Yo uso:
	make -f unix/Makefile prefix=/usr generic_gcc &&
	make -f unix/Makefile prefix=/usr install


Instalando libical:

libical sólo es necesaria si quieres enredar con el calendario. Yo tuve
problemas para compilar el calendario de Mozila,  en tu caso puede ser diferente. 
Mozilla requiere la libical que está disponible en el CVS de mozilla (dubbed 0.23a).
	./configure --prefix=/usr --disable-static &&
	make &&
	make install


Compilando Mozilla:

Aplica los parches que creas necesarios del sitio mencionado anteriormente.

Una alternativa es pasar las opciones a configure. La otra consiste en
que estas opciones se pongan en el fichero .mozconfig que es leído por
el guión de configuración de mozilla. Yo prefiero el último método (muy
útil para recompilar).

Primero asignaremos las banderas de forma que podamos compilar una
versión distribuible en vez de ejecutar Mozilla desde el directorio en
que hemos compilado.
	export MOZILLA_OFFICIAL=1
	export BUILD_OFFICIAL=1
	export MOZ_INTERNAL_LIBART_LGPL=1
	export MOZ_CALENDAR=1
El tercer "export" especifica que aceptas la Licencia LGPL para libart.
Es un requerimiento para el soporte SVG (Gráficos Vectoriales
Escalables) y es muy recomendable. El cuarto "export" se requiere
únicamente si quieres compilar el interfaz de calendario
(experimental).

Asigna CFLAGS y CXXFLAGS en base a tus necesidades. Es conocido que
Mozilla aborta al arrancar si se usa -fomit-frame-pointer. Yo no he
tenido problemas asignando tanto CFLAGS como CXXFLAGS a "O3 -march=i686
-fforce-addr -funroll-loops -frerun-cse-after-loop -frerun-loop-opt
-falign-functions=4".  En tu caso puede ser diferente.

Si quisieras compilar el spellchecker, necesitarás descargar el código
fuente a través de cvs. Primero nos identificamos.
	cvs -d :pserver:guest@mozdev.org:/cvs login
La palabra clave (password) es guest. Ahora descarga el código de spellchecker.
	cvs -d :pserver:guest@mozdev.org:/cvs co spellchecker/spellcheck
Mueve el directorio spellcheck al directorio de extensiones de mozilla
	mv spellchecker/spellcheck $MOZSRC/extensions

Primero intenta
	cd $MOZSRC &&
	./configure --help
para entender todas las opciones que tienes disponibles.

Ahora crea el archivo .mozconfig que contenga las opciones que quieres.
El archivo .mozconfig puede estar en varios sitios (en el directorio
home del usuario que compila, o en el directorio del código fuente de
mozilla). Puesto que uso la receta de paquetes de usuario de MSB
Matthias Benkmann(1), prefiero mantener el fichero en el directorio home.  

(1)<URL:http://hints.linuxfromscratch.org/hints/more_control_and_pkg_man.txt>

Hay opciones que puedes utilizar para instalar únicamente el navegador
y saltarte toda la carga adicional que viene con mozilla. Estas son
algunas de las opciones habituales con una corta descripción.

Mozilla soporta ahora la opción "make install" :). Yo prefiero
instalarlo en una de las localizaciones normalizadas, como /usr/X11R6. 
	echo ac_add_options --prefix=/usr/X11R6 >> .mozconfig

La opción enable-default-mozilla-five-home ya no tendrá relevancia, ya
que mozilla se instalará con la localización estándar.

Redundante, pero incluido por motivos de integridad :)
	echo ac_add_options --with-x >> .mozconfig

Usa los paquetes que tenemos instalados para que estén disponibles con
mozilla.
	echo ac_add_options --with-system-jpeg >> .mozconfig
	echo ac_add_options --with-system-zlib >> .mozconfig
	echo ac_add_options --with-system-png >> .mozconfig
	echo ac_add_options --with-system-mng >> .mozconfig

Compilar el cliente de calendario (opcional).
	echo ac_add_options --enable-calendar >> .mozconfig

Deshabilitar los clientes de correo y noticias (opcional).
	echo ac_add_options --disable-mailnews >> .mozconfig

Deshabilitar el soporte de LDAP, recomendable si el correo está
deshabilitado.
	echo ac_add_options --disable-ldap >> .mozconfig

Habilitar el soporte de Xft.
	echo ac_add_options --enable-xft >> .mozconfig

Habilitar el administrador de seguridad personal (psm) para disponer de
conexiones SSL (cifradas).
	echo ac_add_options --enable-crypto >> .mozconfig

Deshabilitar todas las opciones de depuración y habilitar todas las
opciones de optimización. Elige. 
	echo ac_add_options --disable-jsd >> .mozconfig
	echo ac_add_options --disable-accessibility >> .mozconfig
	echo ac_add_options --disable-tests >> .mozconfig
	echo ac_add_options --disable-debug >> .mozconfig
	echo ac_add_options --enable-optimize=-O3 >> .mozconfig
	echo ac_add_options --disable-dtd-debug >> .mozconfig
	echo ac_add_options --disable-logging >> .mozconfig
	echo ac_add_options --enable-reorder >> .mozconfig
	echo ac_add_options --enable-strip >> .mozconfig
	echo ac_add_options --enable-elf-dynstr-gc >> .mozconfig
	echo ac_add_options --enable-cpp-rtti >> .mozconfig

La siguiente opción es para actualizar el título de la xterm con el
comando actual cuando compilamos.
	echo ac_add_options --enable-xterm-updates >> .mozconfig

Deshabilita el soporte para la edición de HTML (opcional).
	echo ac_add_options --enable-plaintext-editor-only >> .mozconfig

Habilitar las extensiones que quieres.
	echo ac_add_options --enable-extensions="all" >> .mozconfig
Puedes también elegir las extensiones que quieras. Para deshabilitar
todas excepto el navegador, utiliza lo siguiente.
	echo ac_add_options \
		--enable-extensions="default,-venkman,-inspector,-irc" >> \
		.mozconfig

Habilitar el soporte para SVG (Gráficos vectoriales escalables).
	echo ac_add_options --enable-svg >> .mozconfig

Ahora mozilla soporta tanto gtk 1.2 como gtk 2.0. Para habilitar el
soporte gtk2 utiliza la opción enable-default-toolkit=gtk2'. Yo tuve
problemas construyendo para GTK2 incluso con parches.

El soporte para QT y XLib no es estable y puede (!) fallar la
compilación. Intenta compilar sin ellas primero, y si todo va bien,
experimenta con las otras herramientas.

<ADVERTENCIA>
Si hacemos caso a lo que dicen las instituciones financieras, el
siguiente truco hace que tu navegador sea inseguro. EMMO, no es más
inseguro que usar MS-ISS (con todo su historial de seguridad) como
servidor para instituciones financieras ;). Has sido advertido. Muchos
sitios usan una etiqueta específica de MS-IE (autocomplete=off) para
evitar el autocompletado cuando se trabaja con algunos formularios.
Esta etiqueta está soportada ahora por mozilla para aplacar a las
instituciones financieras. Y por requerimientos de las instituciones
financieras, ni siquiera se admite la solución de que esto sea una
opción. Mi opinión es que esto debería estar en manos del usuario. Para
activar al autocompletado saltándose esta restricción, necesitamos
hacer una modificación en el código.
</ADVERTENCIA>

<RETOQUE DE CÓDIGO>
Abre el archivo usr/src/mozilla/extensions/wallet/src/wallet.cpp, busca
la línea
	#define WALLET_DONT_CACHE_ALL_PASSWORDS
y bórrala o quítale el comentario. 
</RETOQUE DE CÓDIGO>

Si alguien te dice que MS-IE es fácil de usar, dale este ejemplo :)

Opcionalmente puedes aplicar el parche que mencioné al principio de la
receta para habilitar el truco de la contraseña.

Ahora configura y compila el paquete de forma habitual. Si hay
problemas ejecuta "configure" de nuevo eliminando la opción
conflictiva.
	./configure &&
	make
Tardará unas pocas horas en compilar. Ponte a ver tu película favorita
de Startrek.

Tienes dos opciones, instalar mozilla en la localización habitual o
hacer una distribución que pueda instalarse en varios ordenadores.

Instalar mozilla encima de una instalación anterior causa algunos problemas.
Así que yo por norma borro la instalación anterior antes de instalar la nueva

Si te gustaría instalar en la localización habitual haz el típico:
	make install
	
Algunos subprogramas buscan netscape cuando necesitan un navegador
(RMS ha iniciado una campaña para que estos subprogramas reconozcan
la variable de entorno BROWSER). Así que es mejor hacer un
	ln -sf mozilla netscape
en el directorio en el que está instalado en guión de arranque de mozilla
(/usr/X11R6/bin).

Para hacer una distribución que podrías querer instalar en otras máquinas:
	cd xpinstall/packager &&
	make &&
	cd /opt &&
	tar -xzf $MOZSRC/dist/mozilla-i686-pc-linux-gnu.tar.gz &&
	cd $MOZSRC/dist &&
	cp -LfR man /opt/mozilla &&
	cp -LfR idl /opt/mozilla &&
	cp -LfR include /opt/mozilla &&
	mkdir /opt/mozilla/include/nss &&
	cp -Lf private/security/*.h /opt/mozilla/include/nss &&
	cp -Lf public/security/*.h /opt/mozilla/include/nss &&
	cd /opt &&
	tar -cvzf mozilla-dist.tar.gz mozilla/
Los comandos de arriba crean una distribución binaria, se instalan en
opt/mozilla, copian las páginas del manual y los ficheros de cabecera
para la instalación y luego crea un paquete que puede ser
desempaquetado en otras máquinas.

Ahora ajustaremos algunas variables de entorno.

Si instalaste mozilla en un directorio no estándar, asegúrate de que su
localización esté en el PATH. También puedes añadir la página del
manual a MANPATH.
	export PATH=$PATH:/opt/mozilla
	export MANPATH=$MANPATH:/opt/mozilla/man
Puedes también, añadir /opt/mozilla a /etc/ld.so.conf (no es necesario
y no se recomienda). Recuerda ejecutar ldconfig si lo haces.

Para hacer que Mozilla vaya más rápido, añade:
	export XPCOM_CHECK_THREADSAFE=0
en .bash_profile o en run-mozilla.sh. Esto aparentemente sólo afecta a
las versiones de depurado, pero no hace daño en las compilaciones
optimizadas.

Yo tengo los módulos conectables (plugins) de mozilla en una
localización diferente, de forma que puedo borrar o reinstalar mozilla
sin que afecte a los módulos conectables. Si lo haces así asigna a
MOZ_PLUGIN_PATH el directorio apropiado. Yo uso: 
	export MOZ_PLUGIN_PATH=/opt/mozilla-plugins

Para permitir una instalación multiusuario, el camino más fácil es
ejecutar mozilla como el usuario que hizo la instalación (normalmente
root). De otro modo, cuando algún otro usuario intenta ejecutar
mozilla, el resultado es una violación de segmento. Así que comprueba
tu nueva instalación:
	mozilla

En lugar de lanzar mozilla para activar la instalación multiusuario, también puedes
hacer lo siguiente (útil si automatizas la construcción). Ten en cuenta que
MOZILLA_FIVE_HOME y LD_LIBRARY_PATH ya no son importantes cuando se
ejecuta mozilla.
	export LD_LIBRARY_PATH=/usr/X11R6/mozilla-1.0.0:$LD_LIBRARY_PATH
	export MOZILLA_FIVE_HOME=/usr/X11R6/mozilla-1.0.0
	/usr/X11R6/mozilla-1.0.0/regxpcom
	/usr/X11R6/mozilla-1.0.0/regchrome
	touch `find /usr/X11R6/mozilla-1.0.0 -name *.rdf`

Disfruta :)

Instalando una distribución precompilada:

Una alternativa es instalar una distribución precompilada de Mozilla.
Aunque contrario "al espíritu de LFS", las razones por las que puedes
querer hacerlo son:
	1. El problema del huevo y la gallina :). Tienes problemas con la
	   compilación de mozilla y hasta que los resuelvas, necesitas un
	   navegador para conseguir ayuda técnica con el depurado. 
	2. No te quieres pasar 5 horas compilando (Eso es lo que tarda en
	   mi P-II 350) 
	3. Estás satisfecho con las opciones que usa la versión
	   precompilada.
	4. Tienes un compilador GCC3 bajado del CVS y te gustaría usar el
	   mozilla compilado con GCC2 de forma que los módulos conectables
	   comerciales funcionen sin problemas. Aunque yo estoy usando
	   todos los módulos conectables (excepto el Real) mencionados más
	   abajo sin problemas.

Si es así, hecha un vistazo a mozilla.org y descarga el "talkback
enabled full installer" y lee las instrucciones de instalación en las
notas de la versión.
Recuerda seguir las instrucciones para instalaciones multiusuario, de
otra forma te podría salir un "core dump" en el arranque.


URLs de relevancia:

Visita los siguientes sitios para encontrar ayuda y extensiones a
mozilla.
	* http://www.mozdev.org/projects.html
	  Algunas extensiones agradables como la barra de google.
	* http://www.mozilla.org/projects/
	  Proyectos relacionados con mozilla, algunos de ellos ya están
	  integrados en la versión actual, otros todavía tienen que
	  madurar.
	* http://www.gerbilbox.com/newzilla/
	  Las FAQ (Preguntas habituales) no oficiales de mozilla.
	* http://www.themes.org/skins/mozilla/
	  El tema "park" para Mozilla.


Modificando las Preferencias:

Seguir las indicaciones de esta sección es únicamente una decisión que
debe ser tuya. Únicamente me gustaría hacer mención a algunos cambios
en las preferencias que me gustan:
	* Appearance -> Colors -> Enable Use System Colors.
	* Appearance -> Theme -> Select Modern Theme. Mucho mejor que el "Classic".
	* Navigator -> Smart Browsing -> Enable Internet Keywords.
	* Navigator -> Search Engine -> Search Using Google:)
	* Navigator -> Tabbed Browsing -> Enable all options under Open Tabs
	  instead of windows. Las pestañas son mucho mejor.
	* Privacy & Security -> Cookies -> Enable Ask me before storing a
	  cookie (Preguntar antes de aceptar una cookie). Bye bye Doubleclick.
	* Privacy & Security -> Images -> Enable Ask me before downloading an
	  image. (Preguntar antes de bajar una imagen). Hazlo sólo si
	  tienes una conexión muy lenta. De otro modo se convierte más en
	  una molestia. Yo la uso normalmente porque permite que el usuario
	  haga un seguimiento de la carga de las imágenes.
	* Advanced -> Scripts & Windows -> Disable Open Unrequested Windows,
	  Move or resize existing windows, Raise or lower windows. Bye bye X10.
	* Advanced -> Cache -> Disk Cache = 8192KB. He tenido algunos
	  problemas en versiones anteriores cuando la memoria intermedia de
	  disco era muy grande (aunque esto era en Windows 2000:D). De
	  todas formas 50MB parece que es demasiado.


Instalación del módulo conectable de Adobe Acrobat.

Descarga el Acrobat Reader desde la web de Adobe.
	http://www.adobe.com/products/acrobat/readstep2.html

Instala el Acrobat en /opt/acrobat. Ahora haz el enlace al módulo conectable.
	cd $MOZ_PLUGIN_PATH &&
	ln -s /opt/acrobat/Browsers/intellinux/nppdf.so


Instalando el módulo conectable de Java:

Descarga el entorno de ejecución de Java (JRE) de SUN de
	http://java.sun.com/j2se/

Instala el paquete de desarrollo de Java (JDK) y a continuación enlaza el módulo 
conectable.
	cd $MOZ_PLUGIN_PATH &&
	ln -s ${JAVA_HOME}/jre/plugin/i386/ns610/libjavaplugin_oji.so

Algunos módulos de java alternativos:
	http://www.alphaworks.ibm.com/
	http://www.blackdown.org/

Tengo una experiencia exitosa al compilar Java 2 SDK 1.4 que se enlazó
utilizando GCC3. Consulta la receta de Java.


Instalando el reproductor de Flash de Macromedia:

Descarga el reproductor de Flash de la web de Macromedia.
	http://sdc.shockwave.com/shockwave/download/alternates/#linux

Descomprime los archivos y cópialos.
	cp libflashplayer.so ShockwaveFlash.class $MOZ_PLUGIN_PATH


Instalación de RealPlayer:

Descarga el módulo desde Real Networks.
	http://forms.real.com/real/player/unix/unix.html

Instala RealPlayer en /opt/RealPlayer8 y luego copia el módulo conectable al
directorio de módulos de mozilla.
	cp rpnp.so raclass.zip $MOZ_PLUGIN_PATH


Añadido CrossOver de CodeWeavers.

Si tienes interés en usar los módulos conectables para windows, este
producto comercial te permitirá hacerlo. Visita:
	http://www.codeweavers.com/products/crossover/
para más información.


Pásalo bien "mozileando".

No olvides mandarme informes de errores y mejoras para que pueda
mantener la receta al día. Un lugar apropiado para discutir problemas
es la lista de correo blfs-support.