Renuncia de responsabilidad:
Este manual ha sido sustituido por una versión más reciente y no tendrá
soporte de aquí en adelante.
|
[ << ]
[ < ]
[ Inicio ]
[ > ]
[ >> ]
3. Características del Portage
Contenido:
3.a. DistCC
¿Qué es 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 mas detallada sobre distcc (y información de
como tenerlo funcionando sobre Gentoo) en nuestra Documentación Gentoo de Distcc.
Instalando 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.
Instalar distcc es, como lo es con todo el software disponible a través del
Portage de Gentoo, extremadamente fácil.
Nota:
A partir de ahora, como conoce como instalar paquetes binarios si lo desea,
omitiremos la opción --usepkg durante el resto del Gentoo Handbook.
|
Listado de Código 1.1: Instalando Distcc |
# emerge distcc
|
Activando el soporte en el Portage
Bien, si la instalación fue fácil, el resto también debe serlo :) Así que vamos
a activar rápidamente el soporte en el portage para distcc.
Primero, abra /etc/make.conf y edite la variable FEATURES de
forma que contenga la palabra distcc. Hecho esto, edite la variable
MAKEOPTS para que se lea -jX con X representando el número
de CPUs que corren distccd (incluyendo el host local) mas uno:
Listado de Código 1.2: Definición posible de MAKEOPTS en /etc/make.conf |
MAKEOPTS="-j4"
|
Ahora, aún dentro de /etc/make.conf, descomente la linea
PORTAGE_TMPDIR y añada la siguiente linea al final del fichero:
Listado de Código 1.3: Añadiendo una variable extra, específica de distcc al /etc/make.conf |
DISTCC_DIR=${PORTAGE_TMPDIR}/portage/.distcc
|
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 1.4: Configurando 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 de ejecutar también el demonio distccd:
Listado de Código 1.5: Arrancando el demonio distcc |
# /etc/init.d/distccd start
|
Felicidades, ¡su sistema usará ahora compilación distribuida! Para profundizar
más sobre DistCC y Gentoo, por favor lea nuestra Documentación Gentoo de DistCC.
3.b. ccache
¿Qué es ccache?
ccache es un caché de compilación rápida. Cuando compila un programa,
puede cachear resultados intermedios, de forma que, si usted recompilara el
mismo programa, el tiempo de compilación se reduciría ampliamente. En las
aplicaciones comunes, esto puede significar un aumento de velocidad entre 5 y
10 veces.
Si esta interesado en los pros y contras de ccache, por favor visite la
página web de ccache.
Instalando ccache
Instalar ccache en Gentoo es coser y cantar. Tan solo emérgelo y ya está
:)
Listado de Código 2.1: Instalando ccache |
# emerge ccache
|
Activando el Soporte en el Portage
Primero, edite el /etc/make.conf y cambie la variable
FEATURES de forma que contenga la palabra clave ccache:
Listado de Código 2.2: Editando las FEATURES en el /etc/make.conf |
FEATURES="ccache"
|
Después, edite (o cree) la variable CCACHE_SIZE (también en el
/etc/make.conf) que contiene la cantidad de espacio de disco que
quiere sacrificar para el ccache:
Listado de Código 2.3: Editando CCACHE_SIZE en el /etc/make.conf |
CCACHE_SIZE="2G"
|
A partir de ahora, Portage usará ccache para acelerar la compilación
donde sea posible. Si dudas del funcionamiento de ccache, puedes
ejecutar ccache -s para ver las estadísticas de ccache:
Listado de Código 2.4: Visualizando las estadísticas de ccache |
# ccache -s
|
3.c. Paquetes Binarios
Creando paquetes binarios
Hemos discutido anteriormente como trabajar con paquetes precompilados, pero
como creas tus propios paquetes precompilados?
Si el paquete ya está instalado, puedes usar el comando quickpkg que
hará un tar de los ficheros instalados. ¡Es muy interesante para los backups!
Listado de Código 3.1: Usando quickpkg |
# quickpkg gnumeric
|
Si el paquete no está instalado aún, puede instalarlo usando emerge y
especificándole crear un paquete binario. emerge usa el argumento
--buildpkg (-b en su versión corta) para esto:
Listado de Código 3.2: Instalando gnumeric y creando paquetes binarios |
# emerge --buildpkg gnumeric
|
Si quieres que el Portage haga esto por defecto, debería poner la palabra clave
buildpkg en la variable FEATURES declarada en el
/etc/make.conf.
Listado de Código 3.3: Creando automáticamente paquetes binarios |
FEATURES="buildpkg"
|
Si no quiere instalar el software, pero si compilar el paquete, puede usar el
argumento --buildpkgonly (-B en su versión corta):
Listado de Código 3.4: Compilando un paquete binario de gnumeric |
# emerge --buildpkgonly gnumeric
|
3.d. Características de Seguridad
Sandbox
Mientras se compilan y instalan paquetes, el Portage usa una sandbox
(caja de arena) para proteger tu sistema en funcionamiento. Esto significa que,
mientras el paquete no se instale en tu sistema, este no tocará ningún fichero
fuera de la "caja de arena" Esto asegura que el Portage sabe que ficheros se
crearon y se modificaron por el paquete.
Cuando la compilación de un paquete se completa, el Portage "preinstalará" el
paquete en la "caja de arena", registrando que ficheros se han puesto y donde.
Entonces moverá estos ficheros desde la "caja de arena" a tu sistema en
funcionamiento.
Privilegios de usuario
El Portage también soporta la compilación de paquetes como usuario no
privilegiado (para ser mas exactos, como usuario "portage", dentro del grupo
"portage"). Esto aumenta la seguridad durante el proceso de compilación. Puede
optar por usar los privilegios de usuario con o sin "sandboxing". Por supuesto,
ni que decir que los privilegios de usuario y el "sandboxing" es el método
más preferible :)
Activando sandbox y/o userpriv
Portage usará sandbox por defecto. Si desea userpriv, deberá
agregarlo a la variable FEATURES. Fíjese en que activando
userpriv descartará el soporte sandbox, a menos que también
active usersandbox:
Listado de Código 4.1: Activando userpriv y usersandbox |
FEATURES="userpriv usersandbox"
|
Aviso:
No quite sandbox de la variable FEATURES
|
Chequeo estricto
El Portage puede prepararse para reaccionar a las posibles condiciones de
peligro (como ficheros Manifest perdidos o incorrectos). Para activar este
chequeo estricto agregue la palabra clave strict a la variable
FEATURES:
Listado de Código 4.2: Activando el chequeo estricto |
FEATURES="strict"
|
Permisos Inteligentes del Sistema de Ficheros
Portage puede ser configurado para tratar con permisos de ficheros
potencialmente peligrosos que representen un riesgo de seguridad. Lo hace
quitando los bits de lectura "grupo" y "otros" en los ficheros "setuid" y
quitando el bit de lectura "otros" en los ficheros "setgid" en la fase de
preinstalación. Para activar los permisos de ficheros inteligentes, agregue la
palabra clave sfperms a la variable FEATURES:
Listado de Código 4.3: Activando los permisos inteligentes del sistema de ficheros |
FEATURES="sfperms"
|
3.e. Otras características
Ayuda del Portage
Existen muchas otras palabras clave que puede introducir en la variable
FEATURES. Muchas de ellas están dirigidas a los desarrolladores y son
menos interesantes para los usuarios comunes. Si está interesado en aprender
más sobre estas características (o del Portage en general), no olvide leer
la pagina del manual del make.conf que le proporcionamos.
Listado de Código 5.1: Más información sobre el Portage |
# man make.conf
|
[ << ]
[ < ]
[ Inicio ]
[ > ]
[ >> ]
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|