Gentoo Logo

[ << ] [ < ] [ Inicio ] [ > ] [ >> ]


3. Características de Portage

Contenido:

3.a. Características de Portage

Portage tiene varias características adicionales que hacen de su experiencia con Gentoo algo mucho mejor. Muchas de estas características residen en ciertas herramientas software que mejoran el rendimiento, la estabilidad, la seguridad, ...

Para activar o desactivar ciertas características de Portage necesita editar la variable FEATURES del archivo /etc/portage/make.conf. Esta variable contiene una lista con las palabras clave de cada característica separadas por un espacio en blanco. En algunos casos necesita además instalar la herramienta que implementa la característica.

No todas las características que soporta Portage están aquí reflejadas. Para una consulta completa por favor revise la página de la ayuda referente a make.conf

Listado de Código 1.1: Consultar la página de ayuda sobre make.conf

$ man make.conf

Para conocer qué características están siendo utilizadas por defecto, ejecute emerge --info y busque la variable FEATURES o utilice grep:

Listado de Código 1.2: Conocer qué características están definidas

$ emerge --info | grep ^FEATURES=

3.b. Compilación Distribuida

Usar distcc

distcc es un programa para distribuir un trabajo de compilación a través de muchas, no necesariamente idénticas, máquinas en una red. Los clientes de distcc envían toda la información necesaria a los servidores DistCC disponibles (corriendo distccd) así pueden compilar trozos de código fuente para el cliente. El resultado final, es un tiempo de compilación más rápido.

Puede encontrar información más detallada sobre distcc (e información de como tenerlo funcionando sobre Gentoo) en nuestra Documentación Gentoo sobre Distcc.

Instalar distcc

Distcc se distribuye con un monitor gráfico para monitorizar las tareas que su computador está enviando para compilar. Si usa Gnome entonces ponga 'gnome' en su configuración USE. De todas formas, si no usa Gnome pero sigue deseando disponer de un monitor, entonces debería poner 'gtk' en su configuración USE.

Listado de Código 2.1: Instalar distcc

# emerge distcc

Activar el soporte en Portage

Añada distcc a la variable FEATURES dentro de /etc/portage/make.conf. Hecho esto, edite la variable MAKEOPTS conforme a sus necesidades. Una pauta conocida para configurarla es poner -jX con X representando el número de CPUs que ejecutan distccd (incluyendo la máquina local) más uno, pero quizá obtenga mejores resultados con otros números.

Ahora ejecute distcc-config y cree una lista de los servidores distcc disponibles. Para un ejemplo simple, supondremos que los servidores DistCC son 192.168.1.102 (el host local), 192.168.1.103 y 192.168.1.104 (los dos hosts "remotos"):

Listado de Código 2.2: Configurar distcc para usar los tres servidores DistCC disponibles

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Por supuesto, no se olvide ejecutar también el demonio distccd:

Listado de Código 2.3: Arrancar el demonio distcc

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Compilación utilizando caché

Acerca de ccache

ccache es un caché de compilación rápida. Cuando compila un programa, puede cachear resultados intermedios, de forma que, si recompila el mismo programa, el tiempo de compilación se reducirá ampliamente. La primera vez que se ejecuta ccache, ésta será más lenta que una compilación normal. Recompilaciones posteriores deberían ser más rápidas. La herramienta ccache solo es útil si va a recompilar la misma aplicación muchas veces; por lo tanto en la mayoría de los casos es útil únicamente para los desarrolladores de software.

Si esta interesado en los pros y los contras de ccache, por favor visite la página web de ccache.

Aviso: ccache puede causar numerosos fallos de compilación. Algunas veces ccache mantendrá objetos con código obsoleto o ficheros corruptos que pueden llevar a que no se pueda hacer emerge de ciertos paquetes. Si esto ocurre (Si obtiene errores como "File not recognized: File truncated"), intente recompilar la aplicación con ccache deshabilitado (FEATURES="-ccache" en /etc/portage/make.conf) antes de informar de una incidencia bug. A menos que esté realizando trabajo de desarrollo, no active ccache.

Instalar ccache

Para instalar ccache, ejecute emerge ccache:

Listado de Código 3.1: Instalar ccache

# emerge ccache

Activar el Soporte en Portage

Primero, edite el fichero /etc/portage/make.conf y añada a la variable FEATURES la palabra clave ccache. A continuación, añada una nueva variable llamada CCACHE_SIZE y dele el valor "2G":

Listado de Código 3.2: Editar CCACHE_SIZE en /etc/portage/make.conf

CCACHE_SIZE="2G"

Para comprobar si ccache funciona, pídale a ccache que te muestre las estadísticas. Ya que Portage utiliza un directorio diferente para guardar los datos, se necesita fijar la variable CCACHE_DIR para reflejar esto:

Listado de Código 3.3: Observar las estadísticas de ccache

# CCACHE_DIR="/var/tmp/ccache" ccache -s

La ruta /var/tmp/ccache es el directorio por defecto que emplea Portage para ccache; si quiere cambiar esta variable, configure CCACHE_DIR en /etc/portage/make.conf.

Sin embargo, si ejecuta ccache, empleará como directorio por defecto ${HOME}/.ccache, que es la razón por la cual necesita configurar la variable CCACHE_DIR cuando se le pide a Portage que muestre las estadísticas de ccache.

Utilizar ccache para compilaciones de C sin relación con Portage

Si quiere utilizar ccache para compilaciones que no tengan que ver con Portage, añada /usr/lib/ccache/bin al principio de su variable PATH (antes de /usr/bin). Esto puede llevarse a cabo editando el fichero .bash_profile de su directorio home de usuario. .bash_profile es una de las maneras de definir las variables PATH.

Listado de Código 3.4: Editar .bash_profile

PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"

3.d. Soporte para Paquetes Binarios

Crear paquetes binarios

Portage soporta la instalación de paquetes precompilados. A pesar de que Gentoo no proporciona paquetes precompilados por sí mismo, Portage puede funcionar perfectamente con paquetes precompilados.

Para crear un paquete precompilado puede utilizar quickpkg si el paquete está instado en su sistema, o emerge con las opciones --buildpkg o --buildpkgonly.

Si quiere que Portage cree paquetes precompilados de cada paquete individual que instale, añada buildpkg a la variable FEATURES.

Puede encontrar mayor soporte para la creación de conjuntos de paquetes precompilados con catalyst. Para más información sobre catalyst, por favor lea las Preguntas frecuentes sobre Catalyst (en inglés).

Instalar Paquetes Precompilados

A pesar de que Gentoo no proporciona uno, puede crear un repositorio central donde almacene paquetes precompilados. Si quiere utilizar este repositorio, necesita que Portage lo conozca a través de la variable PORTAGE_BINHOST que debe apuntar al repositorio. Por ejemplo, si los paquetes precompilados están en ftp://buildhost/gentoo:

Listado de Código 4.1: Configurar PORTAGE_BINHOST en /etc/portage/make.conf

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Cuando quiera instalar un paquete precompilado, añada la opción --getbinpkg a la orden emerge junto a la opción --usepkg. La primera le indica a emerge que descargue el paquete precompilado del servidor definido previamente, mientras que el segundo indica a emerge que intente instalar el paquete precompilado antes de buscar el código fuente y compilarlo.

Por ejemplo, para instalar gnumeric a través de paquetes precompilados:

Listado de Código 4.2: Instalar el paquete precompilado gnumeric

# emerge --usepkg --getbinpkg gnumeric

Más información sobre las opciones para utilizar paquetes precompilados con emerge puede consultarse en la página de la ayuda:

Listado de Código 4.3: Leer la página de ayuda sobre emerge

$ man emerge

3.e. Descargar los Ficheros

Parallel fetch

Al hacer emerge a una serie de paquetes, Portage puede obtener las fuentes para el siguiente paquete en el lista aún mientras está compilando otro paquete, acortando los tiempos de instalación. Para hacer uso de esta opción agregue "parallel-fetch" a su variable FEATURES. Observe que está activada por defecto de modo que no necesitaría activarla explícitamente.

Userfetch

Cuando Portage se ejecuta por el usuario root, FEATURES="userfetch" permitirá que Portage ejecute sin los privilegios de superusuario mientras obtiene las fuentes. Este es una pequeña mejora en la seguridad.

3.f. Obtener instantáneas validadas del árbol Portage

Como administrador, puede optar por actualizar únicamente su árbol Portage local con una instantánea del árbol validada criptográficamente tal y como publica el equipo de infraestructura de Gentoo. Con esto se asegura que ningún otro servidor réplica falso está añadiendo código no deseado u otros paquete en el árbol que está descargando.

Para configurar Portage, en primer lugar cree un almacén de confianza en el cual pueda descargar y aceptar las claves del equipo de infraestructura de Gentoo responsable del firmado de las instantáneas del árbol Portage. Desde luego, si lo desea puede validar esta clave GPG tal y como muestran estas instrucciones (por ejemplo comprobar la huella digital). Puede encontrar una lista de las claves GPG usadas por el equipo de ingeniería de lanzamientos en su página de proyecto.

Listado de Código 6.1: Crear un almacén de confianza para Portage

# mkdir -p /etc/portage/gpg
# chmod 0700 /etc/portage/gpg
(... Sustituya las claves con las mencionadas en el sitio del
proyecto de ingeniería de lanzamientos ...)
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0xDB6B8C1F96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0xDB6B8C1F96D8BF6D trust

A continuación, edite el fichero /etc/portage/make.conf y active el soporte para la validación de las instantáneas del árbol Portage firmadas (usando FEATURES="webrsync-gpg") y deshabilite la actualización del árbol Portage usando el método común emerge --sync.

Listado de Código 6.2: Actualizar make.conf

FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/etc/portage/gpg"

Listado de Código 6.3: Actualizar repos.conf

# Asegúrese de que sync-type y sync-uri están comentadas
# sync-type = rsync
# sync-uri = ...

Eso es todo. La próxima vez que ejecute emerge-webrsync, únicamente las instantáneas con una firma válida se expandirán en su sistema de ficheros.


[ << ] [ < ] [ Inicio ] [ > ] [ >> ]


Imprimir

Ver completo

Página actualizada 12 de abril, 2014

Esta traducción ha dejado de tener soporte

Sumario: Descubra las características de Portage, como el soporte para la compilación distribuida, ccache y aún más.

Sven Vermeulen
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Joshua Saddler
Autor

Seemant Kulleen
Gentoo x86 Developer

Tavis Ormandy
Gentoo Alpha Developer

Jason Huebel
Gentoo AMD64 Developer

Guy Martin
Gentoo HPPA developer

Pieter Van den Abeele
Gentoo PPC developer

Joe Kallar
Gentoo SPARC developer

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Shyam Mani
Editor

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Contributor

José Alberto Suárez López
Traductor

John Christian Stoddart
Traductor

José Luis Rivero
Traductor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.