Renuncia de responsabilidad:
Este manual ha sido sustituido por una versión más reciente y no tendrá
soporte de aquí en adelante.
|
Manuales Gentoo Linux/x86
Contenido:
-
Instalando Gentoo
En esta parte aprenderá cómo instalar Gentoo en su sistema.
-
Acerca de la instalación Gentoo Linux
Los usuarios que no estén familiarizados con Gentoo no siempre saben
que Gentoo representa la posibilidad de escoger.
-
Escoger el Medio de Instalación Adecuado
Gentoo puede instalarse de muchas maneras. Este capítulo explica cómo
hacerlo usando uno de nuestros LiveCDs.
-
Configuración de su Red
Si desea instalar Gentoo a través de internet, debe configurar la red.
-
Preparando los Discos
Para poder instalar Gentoo, debe crear las particiones
necesarias. Este capítulo describe cómo particionar un disco para uso
futuro.
-
Instalando los Archivos de Instalación Gentoo
Las instalaciones de Gentoo funcionan a con los archivos llamados
"stage". En este capítulo describimos cómo se extrae un archivo
stage y configuramos Portage.
-
Instalando el Sistema Base de Gentoo
Independientemente del archivo stage que escoja, el resultado eventual
es que se dispone de un sistema base Gentoo. Este capítulo describe
cómo llegar a esta etapa.
-
Configurando el Kernel
El kernel Linux kernel es el núcleo de cada distribución de
Linux. Este capítulo explica cómo hacerlo.
-
Configurando su Sistema
Hará falta modificar unos archivos de configuración importantes. En
este capítulo verá cuáles son estos archivos y cómo proceder.
-
Instalando Herramientas Necesarias para el Sistema
Como hemos mencionado antes, Gentoo representa la posibilidad de
escoger. En este capítulo ayudaremos a escoger e instalar algunas
herramientas importantes.
-
Configurando el Gestor de Arranque
Existen varios gestores de arranque para la arquitectura x86. Cada uno
tiene su propia configuración. Procederemos paso a paso al configurar
el gestor de arranque según sus necesidades.
-
Finalizando su Instalación Gentoo
Estamos casi listos. Crearemos uno (o más) usuarios para el sistema y
re-iniciaremos a nuestro sistema Gentoo nuevecito.
-
¿Y ahora qué?
Ahora que tenemos un sistema Gentoo, ¿qué hacemos después?
-
Trabajando con Gentoo
Aprenda cómo trabajar con Gentoo: instalación de software,
configuración de variables, cambiando el comportamiento del sistema
Portage, etc.
-
Introducción al Sistema Portage
Este capítulo explica los pasos "sencillos" que un usuario necesita
saber definitivamente para mantener el software en su sistema.
-
Los Parámetros USE
Los parámetros USE son una parte importante de Gentoo. En este
capítulo aprenderá a trabajar con ellos y comprender cómo estos
parámetros USE interactúan con su sistema.
-
Características del Portage
Descubra las características de Portage, como el soporte para la
compilación distribuida, ccache y aún más.
-
Guiones de inicio
Gentoo usa un formato especial para los guiones de inicio, que
permite, entre otras cosas, decisiones derivadas de dependencias y
guiones virtuales. Este capítulo explica estos aspectos y cómo operar
con estos guiones..
-
Variables de Entorno
Con Gentoo se pueden manejar fácilmente las variables de entorno del
sistema. Este capítulo explica cómo hacerlo y describe las variables
más comunes.
-
Trabajando con Portage
"Trabajando con Portage" cubre en profundidad la herramienta de manejo
de software de Gentoo, el sistema Portage.
-
Archivos y Directorios
Una vez que desea conocer Portage en profundidad, le interesará saber
adónde almacena sus archivos y datos.
-
Configuración por medio de Variables
El sistema Portage es completamente configurable por medio de diversas
variables en el archivo de configuración o como variables de entorno.
-
Mezcla de Ramales de Software
Gentoo suministra software en varios ramales, dependiendo de la
estabilidad y soporte de arquitectura. "Mezcla de Ramales de Software"
le informa cómo configurar estos ramales y cómo redefinir esta
separación de manera individual.
-
Herramientas Adicionales de Portage
El sistema Portage viene con algunas herramientas adicionales que
puede hacer que su experiencia con Gentoo sea aún mejor. Siga leyendo
para averiguar cómo se usa dispatch-conf y otras herramientas.
-
Divergiendo del Arbol Oficial
"Divergiendo del Arbol Oficial" le dará algunos datos y trucos para
usar su propio árbol Portage, cómo sincronizar sólamente las
categorías que desee, cómo inyectar paquetes y más.
-
La Aplicación de Ebuilds
En "La Aplicación de Ebuilds" se informa los pasos que toma el sistema
Portage al instalar software y cómo puede hacerlo usted mismo con la
aplicación de ebuilds.
A. Instalando Gentoo
1. Acerca de la instalación Gentoo Linux
1.a. Introducción
¡Bienvenido!
Primero de todo, bienvenido/a a Gentoo. Está a punto de entrar en
un mundo de flexibilidad y rendimiento. Gentoo es la flexibilidad en sí. Cuando
instalas Gentoo, esto queda claro varias veces, puedes elegir cuánto quieres
compilar tu mismo, cómo instalar Gentoo, que gestor de registro prefieres, etc.
Gentoo es una metadistribución moderna, rápida, con un diseño limpio y
flexible. Gentoo está hecha alrededor del software libre y no oculta a sus
usuarios qué hay bajo la alfombra. Portage, el sistema de mantenimiento
de paquetes que usa Gentoo, está escrito en Python, por lo que el código
fuente es fácil de visualizar y modificar. El sistema de paquetes de Gentoo
se basa en el código fuente (aunque también soporta paquetes precompilados)
y para configurar Gentoo se utilizan archivos de texto plano. En otras palabras,
abierto a cualquiera.
Es muy importante que entienda que la flexibilidad es lo que
hace que Gentoo funcione. Intentamos no forzarle a entrar en algo que
no le guste. Si cree en algún momento que lo estamos haciendo, por favor,
envíe su opinión.
¿Cómo está estructurada la instalación?
La instalación de Gentoo puede verse como un procedimiento de 10 pasos,
los correspondientes a los capítulos 2 a 11. Cada paso da como resultado
un cierto estado:
-
Tras el paso 1, te encontrarás en un entorno funcional preparado para
instalar Gentoo
-
Después del paso 2, la conexión a Internet estará funcionando y lista para
instalar Gentoo (esto puede ser opcional en ciertas situaciones)
-
Tras el paso 3, sus discos duros estarán preparados para alojar tu instalación
de Gentoo
-
Tras el paso 4, el entorno de instalación estará preparado y se encontrará
dentro de un entorno chroot.
-
Después del paso 5, los paquetes principales, que son los mismos en toda
instalación de Gentoo, estarán instalados
-
Tras el paso 6, el kernel Linux estará compilado.
-
Después del paso 7, la mayoría de los archivos de configuración de tu
sistema Gentoo estarán preparados
-
Tras el paso 8, las herramientas de sistema necesarios (podrá elegirlas
de una hermosa lista) están instaladas.
-
Al finalizar el paso 9, el gestor de arranque elegido estará instalado y
configurado y usted está dentro de su nueva instalación de Gentoo.
-
Tras el paso 10, se encontrará dentro de su nueva Gentoo.
Cuando se le pide una elección especial, intentamos explicar lo mejor posible
los pros y contras. También propondremos una opción por defecto,
identificada con "Por defecto: " en el título. Las otras
posibilidades se titulan "Alternativa: ". Pero no
crea que la opción por defecto es la que recomendamos. Es la que pensamos
que la mayoría de usuarios van ha utilizar.
Algunas veces puedes seguir un paso opcional. Estos pasos son marcados como
"Opcional: " y no son necesarios para instalar Gentoo.
Sin embargo, algunos pasos opcionales dependen de una decisión tomada
previamente. Le informaremos cuando se dé el caso, tanto cuando tome la
decisión, como cuando se describa el paso opcional.
¿De qué opciones dispongo?
Puedes instalar Gentoo de diferentes formas. Puedes descargar e instalar
desde un LiveCD de Gentoo (CDs de instalación), desde otra distribución,
desde un CD de arranque (como Knoppix), desde un arranque por red, desde
un disquete de arranque,etc. Este documento cubre la instalación
utilizando uno de nuestros LiveCds o, en algunos casos, desde arranque
por red.
Si necesita ayuda para otros tipos de instalación, por favor lea nuestra
Guía de Instalación Alternativa.
También tenemos el documento
Trucos y consejos de Instalación de Gentoo (en inglés) que podría
resultar útil. Si nota que las instrucciones de instalación son demasiado
detalladas, no dude en utilizar nuestra Referencia Rápida para Instalación
la cual se encuentra entre nuestros Recursos
de Documentación si su arquitectura tiene este documento disponible.
También existen otras posibilidades: puede compilar el sistema completo
desde el principio o instalar paquetes precompilados para tener el sistema
listo en poco tiempo. Y, por supuesto, también hay soluciones intermedias
con las cuales no se compila todo el sistema pero se empieza desde un
sistema bastante completo.
¿Problemas?
Si tienes algún problema con la instalación (o con el documento
de instalación), por favor compruebe el error en nuestro
Proyecto de Ingeniería de
Versiones de Gentoo (en inglés), visite nuestro
Sistema de seguimiento
de errores y compruebe si el error es conocido. Si no lo es, por favor
cree un informe sobre él para que podamos encargarnos de él. No
tenga miedo de los desarrolladores que están asignados a sus
informes, normalmente no se comen a nadie.
Acuérdese que, a pesar de que el documento que está leyendo es
específico de la arquitectura, esté también contiene referencias a
otras arquitecturas. Esto es así porque el manual de Gentoo tiene
partes extensas de código que es común para todas las arquitecturas
(para evitar duplicar esfuerzos y el desgaste de los recursos de
desarrollo). Intentaremos reducir esto al mínimo para evitar la
confusión.
Si no estás seguro que el problema es de usuario (algún error que ha cometido al
despistarte y no leer la documentación cuidadosamente) o un problema de software
(algún error que hemos cometido despistándonos al probar la instalación y/o
documentación) eres libre de entrar en #gentoo-es en irc.freenode.net. Por supuesto,
eres bienvenido de todas formas :)
Si tiene cualquier pregunta concerniente a Gentoo, eche un vistazo a las Preguntas de Uso Frecuente, disponibles
en la Documentación de Gentoo. También puede
mirar los FAQs en nuestros
foros. Si no encuentras la respuesta
aquí, pregunta en #gentoo-es, nuestro canal IRC en irc.freenode.net. Sí, algunos de
nosotros somos frikis que aún usan el IRC :-)
1.b. ¿Precompilados o Compilar todo?
¿Qué es la Plataforma de Referencia de Gentoo?
La Plataforma de Referencia de Gentoo, de ahora en adelante la conoceremos
por su abreviatura inglesa GRP (Gentoo Reference Platform), es una imagen de
los paquetes precompilados que los usuarios (esto le implica a usted) pueden
instalar durante la instalación de Gentoo para acelerar el proceso
de instalación. La GRP contiene todos los paquetes necesarios para tener una
instalación de Gentoo completamente funcional. No son todos los necesarios
que hacen falta para tener una instalación base preparada en nada de tiempo,
pero todas las compilaciones grandes (como puedan ser KDE, xorg-x11, GNOME,
OpenOffice, Mozilla, ...) están disponibles como paquetes GRP.
Sin embargo, estos paquetes precompilados no son mantenidos durante la toda
la vida de la distribución de Gentoo. Son simplemente imágenes creadas con
cada distribución de Gentoo y hacen posible tener un sistema funcional en poco
tiempo. Puede actualizar el sistema en segundo plano mientras trabaja con su
entorno Gentoo.
Como maneja Portage los Paquetes GRP
Su árbol de Portage - la colección de ebuilds (los archivos que
contienen toda la información sobre un paquete, como es su descripción,
página oficial, las URLs de código fuente, instrucciones de compilación,
dependencias, etc.) - debe sincronizarse con los GRP: las versiones de
los ebuilds disponibles y su correspondiente paquete GRP deben coincidir.
Por esta razón necesita instalar una imagen de Portage en lugar de sincronizar
Portage con la última versión disponible si quiere utilizar el método de
instalación GRP.
¿Puedo utilizar GRP?
No se proporcionan paquetes GRP para todas las arquitecturas. Esto no
significa que GRP no esté soportado por el resto de arquitecturas, pero
significa que no disponemos de todos los recursos necesarios para
compilar y probar los paquetes GRP..
Por el momento proporcionamos paquetes GRP para las siguientes arquitecturas:
-
La arquitectura x86 (x86, i686, pentium3, pentium4, athlon-xp)
Nota: Los paquetes GRP de x86 e i686 (por ejemplo packages-x86-2004.2.iso)
están disponibles en nuestros servidores espejo, mientras que pentium3,
pentium4, athlon-xp están disponibles a través de bittorrent.
-
La arquitectura amd64 (amd64)
-
La arquitectura sparc (sparc32, sparc64)
-
La arquitectura ppc (G3. G4, G5)
-
La arquitectura alpha (alpha, alphaev5, alphaev56, alphaev6)
-
La arquitectura mips
-
La arquitectura hppa
Si su arquitectura (o subarquitectura) no está en la lista, no podrá
utilizar la opción GRP durante la instalación.
Ahora que ha terminado la introducción, continuemos con Escogiendo el medio apropiado.
2. Escoger el Medio de Instalación Adecuado
2.a. Requerimientos de Hardware
Introducción
Antes de empezar, enumeraremos los requerimientos de hardware
necesarios para instalar con éxito Gentoo en su máquina.
La arquitectura x86
-
Necesita al menos 1 Gb de espacio libre en disco.
-
Si no usa los paquetes precompilados, necesitará por lo menos 300 Mb
de memoria (RAM + swap).
-
Necesita un procesador 486 o mayor y al menos 64 Mb de memoria.
2.b. Haga su Elección
Introducción
¿Sigue interesado en probar Gentoo? Bueno, entonces es hora de elegir
el medio de instalación que quiere usar. Si, puede elegir cuál y no, no son
todos iguales y si, el resultado es siempre el mismo: un sistema
basado en Gentoo.
Los medios de instalación que describiremos son:
- El LiveCD Mínimo Gentoo
- El LiveCD Universal Gentoo
Cada medio tiene sus ventajas y desventajas. Mencionaremos los pro y
los contra de cada medio para que tenga toda la información necesaria
para justificar su decisión. Pero antes de continuar, explicaremos las
tres etapas de instalación.
Las Tres Etapas
Gentoo Linux puede instalarse usando un archivo comprimido en adelante
llamado tarball que corresponde a una de las tres etapas. El
archivo que elige depende mucho de qué cantidad del sistema quiera
compilar. El tarball stage1 se usa cuando quiere hacer
bootstrap uno mismo y construir el sistema completo desde cero. El
tarball stage2 se usa para construir un sistema a partir de un
estado pre-compilado ya hecho el bootstrap. El tarball del stage3
contiene un sistema básico Gentoo Linux pre-construido. Como se
explica más adelante, también puede instalar Gentoo sin compilar nada
(excepto el kernel y algunos paquetes opcionales). Si esto es lo que
quiere, debe usar el tarball stage3.
¿Ahora bien, qué etapa seleccionamos?
Empezar por el stage1 le permite un control total sobre
las opciones de configuración y sobre funcionalidades opcionales a la
hora de compilar que se habilitarán inicialmente en su sistema. Esto
hace de la instalación del stage1 buena para los usuarios
expertos que sepan lo que hacen. También es un excelente método para
aquellos que quieran saber más acerca del funcionamiento interno de
Gentoo Linux.
Una instalación desde stage1 solo puede realizarse si tiene
una conexión a Internet funcionando.
| Stage1 |
Pros y Contras |
| + |
Le permite tener un control total sobre las opciones de
optimización y y sobre funcionalidades opcionales a la hora de
compilar que se habilitarán inicialmente en su sistema.
|
| + |
Recomendada para usuarios expertos que saben lo que hacen |
| + |
Le permite aprender más acerca del funcionamiento interno de
Gentoo
|
| - |
Tarda más en terminar la instalación |
| - |
Si no es su intención ajustar las configuraciones,
probablemente sea una pérdida de tiempo.
|
| - |
No recomendable para instalaciones sin red
|
La instalación desde stage2 le permite saltar el proceso de
arranque. Elija esta opción si está de acuerdo con las optimizaciones establecidas para el tarball stage2.
Una instalación tipo stage2 solo puede llevarse a cabo si tiene
una conexión a Internet.
| Stage2 |
Pros y Contras |
| + |
No necesita hacer el proceso de bootstrap. |
| + |
Es más fácil que empezar con stage1 |
| + |
Todavía puede afinar su configuración |
| - |
No puede afinarla tanto como en stage1 |
| - |
No es la manera más rápida de instalar Gentoo |
| - |
Tiene que aceptar las optimizaciones que escogimos para el bootstrap
|
| - |
No recomendable para instalación sin red
|
Elegir el stage3 es la forma más rápida de instalar Gentoo
Linux, pero también significa que su sistema base tendrá las
optimizaciones que nosotros seleccionamos (que, para ser honestos,
son muy buenas opciones y cuidadosamente seleccionadas para mejorar
el desempeño al mismo tiempo que se mantiene la estabilidad). El
stage3 también es necesario para instalar Gentoo usando
paquetes precompilados o sin una conexión a la red.
| Stage3 |
Pros y Contras |
| + |
La forma más rápida de tener un sistema básico Gentoo |
| + |
Recomendada para instalaciones sin red |
| - |
No puede afinar el sistema básico - ya está hecho |
| - |
No podrá presumir de haber usado un stage1 o stage2 |
Tal vez le interese saber que, si decide usar unas opciones de
optimización diferentes después de haber instalado Gentoo, puede
habilitarlas al recompilar su sistema entero con las nuevas opciones.
Ahora veremos los medios de instalación disponibles.
LiveCDs de Gentoo
Los LiveCDs de Gentoo son CDs arrancables que contienen un
entorno Gento auto-contenido. Permiten arrancar Linux desde el
CD. Durante el proceso de arranque se detecta el hardware y se cargan
los controladores apropiados. Estos discos son mantenidos por los
desarrolladores de Gentoo.
Todos los LiveCDs le permiten arrancar, configurar la red, inicializar
las particiones y empezar a instalar Gentoo desde Internet. Sin
embargo, algunos LiveCD contienen todo el código fuente necesario para
permitirle instalar Gentoo sin configurar la conexión a la red.
¿Qué contienen esos LiveCD?
Minimal LiveCD de Gentoo
Este es un pequeño y ajustado CD arrancable que tiene como único
propósito arrancar el sistema, preparar la red y continuar con la
instalación de Gentoo. No contiene archvios stage (o, en algunos
casos, un solo archivo stage1), código fuente o paquetes
precompilados. Por ejemplo la variante x86 de este LiveCD puede
encontrarse en el subdirectorio universal y se llama
install-x86-minimal-2004.2.iso.
| Minimal LiveCD |
Pros y Contras |
| + |
La descarga más pequeña |
| + |
Recomendable para una arquitectura completa |
| + |
Puede usar un stage1, stage2 o stage3 bajando el tarball
correspondiente de la red
|
| - |
No contiene archivos stage, ni copias del Portage, ni paquetes GRP y por
lo tanto no es recomendada para instalaciones sin red.
|
Universal LiveCD de Gentoo
El Universal LiveCD de Gentoo es un CD arrancable listo para instalar
Gentoo sin necesidad de red. Contiene un stage1 y varios tarball stage3 (optimizados para subarquitecturas individuales). Por
ejemplo, la variante x86 de este CD se llama
install-x86-universal-2004.2.iso y puede encontrarse en el
subdirectorio universal.
Si echa una mirada a releases/x86/2004.2 verá que
también proporcionamos un directorio con CD de Paquetes Gentoo
(en el directorio packagecd/). Este CD (que no es
arrancable) solo contiene paquetes precompilados y puede usarse para
instalar los programas después de instalar con éxito Gentoo. Para
instalar Gentoo, solo necesita el Universal LiveCD, pero si no quiere
OpenOffice.org, Mozilla, KDE, GNOME, etc., sin tener que compilar cada
uno de ellos, necesitará también el CD de Paquetes. Por ejemplo el CD
de Paquetes para i686 (una subarquitectura de x86) se llama
packages-i686-2004.2.iso y puede encontrarse en el
subdirectorio apropiado (i686).
Solo necesitará el CD de Paquetes si quiere realizar una instalación
stage3 con PRG.
| Universal LiveCD con CD de Paquetes |
Pros y Contras |
| + |
Los CD de Paquetes están optimizados para su subarquitectura |
| + |
Los CD de Paquetes proporcionan paquetes precompilados para
rápidas instalaciones de Gentoo
|
| + |
Contienen todo lo que necesita. Los puede instalar incluso sin
conexión a la red
|
| - |
Es una descarga enorme |
2.c. Descargar, Grabar y Arrancar un LiveCD de Gentoo
Descargar y Grabar los LiveCDs
Ha elegido usar un LiveCD Gentoo. Empezaremos por descargar y grabar
el LiveCD que eligió. Ya hablamos anteriormente de los distintos
LiveCD disponibles, pero ¿dónde podemos encontrarlos?
Puede descargar cualquiera de los LiveCD (y si quiere, también un CD
de Paquetes) desde uno de nuestros servidores réplica. Los LiveCD se localizan en
el directorio releases/x86/2004.2/livecd; los CD de
Paquetes se encuentran en el directorio
releases/x86/2004.2/packagecd.
Dentro del directorio encontrará los llamados archivos ISO. Estos son
imágenes de CD completas que puede grabar en un CD-R.
En caso que quiera saber si el archivo que descargó está corrupto,
puede verificar la suma de control MD5 de su archivo y compararla con
la que nosotros proporcionamos (una como
install-x86-minimal-2004.2.iso.md5). Puede revisar las
sumas de control con md5sum de Linux o con md5sum en Windows.
Otra manera de verificar la validez de la descarga es usar GnuPG para
revisar la firma criptográfica que proporcionamos (el nombre del
archivo termina con .asc). Descargue el archivo de firma y
obtenga la clave pública:
Listado de Código 3.1: Obtener la clave pública |
$ gpg --keyserver pgp.mit.edu --recv-keys 17072058
|
Ahora verificamos la firma:
Listado de Código 3.2: Verificar la firma criptográfica |
$ gpg --verify <archivo de firma> <archivo iso>
|
Para grabar el o los ISOs descargados, debe seleccionar grabar/quemar
sin formato. Cómo hacerlo depende del programa. Aquí hablaremos de
cdrecord y K3B; puede encontrar mayor información en las
Preguntas de Uso Frecuentes
sobre Gentoo.
-
Con cdrecord, simplemente escriba cdrecord dev=/dev/hdc
(reemplace /dev/hdc con la ruta de su unidad CD-RW) y
después la ruta al archivo ISO :)
-
Con K3B, seleccione Herramientas > CD >
Grabar Imagen ISO. Luego busque el archivo ISO dentro del
área 'Imagen a Grabar'. Por último presione el botón comenzar.
Arrancar el/los LiveCDs
Importante:
Lea completamente esta subsección antes de continuar, probablemente no
tendrá la oportunidad de leerla mientras esté haciendo cosas luego.
|
Una vez que ha grabado sus CDs de instalación, es hora de
arrancarlos. Retire todos los CD de sus unidades, reinicie el sistema
y entre en el BIOS. Esto se logra por lo general oprimiendo la tecla
Supr, F1 o Esc, dependiendo del BIOS. Dentro del BIOS, cambie el orden
de arranque para que intente arrancar primero desde el
CD-ROM. Regularmente se encuentra dentro de "CMOS Setup". Si no lo
hace, su sistema arrancará desde el disco duro e ignorará el
CD-ROM.
Coloque el CD de instalación en la unidad CD-ROM y
reinicio. Deberá ver una bonita pantalla de inicio con el logo de
Gentoo Linux. En esta pantalla puede oprimir la tecla Enter para
empezar el proceso de arranque con las opciones predefinidas, o
arrancar el LiveCD con opciones personales especificando un kernel
seguido por las opciones de arranque y luego oprimir la tecla Enter.
¿Especificamos un kernel? Si, ya que proporcionamos varios en nuestros
LiveCD. El predeterminado es gentoo. Otros núcleos o kernels
son smp, que soporta sistemas
multi-procesador y las variantes nofb que tienen desactivado el
framebuffer.
Es recomendable seleccionar el kernel gentoo o el
gentoo-nofb si quiere instalar Gentoo Linux con un kernel 2.4 o
bien el kernel smp o smp-nofb si quiere instalar Gentoo
Linux con un kernel 2.6. De otro modo podría tener problemas de
compatibilidad.
Más adelante encontrará una breve descripción de los kernels
disponibles:
| Kernel |
Descripción |
| gentoo |
El Kernel 2.4 predeterminado con soporte para framebuffer |
| smp |
Kernel 2.6 con soporte para múltiples procesadores |
| gentoo-nofb |
Igual que gentoo pero sin soporte para framebuffer |
| smp-nofb |
Igual que smp pero sin soporte para framebuffer |
| memtest86 |
Para verificar su memoria RAM para errores |
También puede pasarle opciones al kernel. Estas representan
configuraciones opcionales que puede activar o desactivar. La
siguiente lista es la misma que se muestra al presionar F2 en la
pantalla de arranque.
Listado de Código 3.3: Opciones que puede pasarle al kernel de su elección |
- agpgart carga agpart (úsela si tiene problemas con los gráficos)
- doscsi busca dispositivos scsi (bloquea algunas tarjetas ethernet)
- nodetect provoca que no se ejecuten hwsetup/kudzu y hotplug
- dofirewire carga módulos firewire en initrd (para lectores CD firewire, etc)
- nousb desactiva el módulo usb cargado por initrd,
desactiva hotplug
- nodhcp no inicia automáticamente dhcp cuando se detecta una nic
- doataraid Carga módulos ide raid en initrd
- dopcmcia inicia el servicio pmcia
- noapm Desactiva la carga del módulo apm
- noraid desactiva la carga de los módulos evms
- nohotplug Desactiva la carga del servicio hotplug
- ide=nodma Obliga a desactivar dma en dispositivos ide que
funcionen mal
- docache Hace un cache completo de la parte de ejecución del cd en
ram, lo que le permite desmontar /mnt/cdrom para
montar otro cdrom.
- dokeymap activa selección de teclados que no sean us
- noapic deshabilita apic (úsela si tiene problemas de hardware,
nics, scsi, etc)
- hdx=stroke (sólo para los núcleos smp/smp-nofb) permite
particionar todo el disco duro incluso si su BIOS no
puede manejar discos grandes
|
Ahora arranque su CD, seleccione un kernel (si no está contento con el
kernel predeterminado gentoo) y las opciones de arranque. Por
ejemplo, aquí le mostramos como arrancar el kernel gentoo, con
el parámetro dopmcia:
Listado de Código 3.4: Arrancando un LiveCD |
boot: gentoo dopcmcia
|
Después verá otra pantalla de arranque y una barra de progreso. Cuando
se complete el proceso de arranque, automáticamente se registrará en
el Gentoo Linux "Live" como "root", el super
usuario. Tendrá el indicador del root ("#") en la consola
actual y también podrá cambiarse a otras consolas presionando Alt-F2,
Alt-F3 y Alt-F4. Para regresar a la consola en la que empezó presione
Alt-F1.
Si está instalando Gentoo en un sistema con un teclado diferente al
de us, asegúrese de arrancar el LiveCD con la opción dokeymap.
Continúe ahora Configurando Hardware
Adicional.
Configurando Hardware Adicional
Cuando arranca el LiveCD, trata de detectar todos los dispositivos de
hardware y cargar los módulos apropiados en el kernel para soportar
este hardware. En la gran mayoría de casos, hace muy buen
trabajo. Sin embargo, en algunos casos (los LiveCD para SPARC ni
siquiera hacen autodetección), puede que no cargue automáticamente
los módulos del kernel necesarios. Si falla la auto-detección PCI con
algún hardware de su sistema, trate de cargar el módulo apropiado
manualmente.
En el siguiente ejemplo trataremos de cargar el módulo 8139too
(que da soporte a ciertos tipos de interfaces de red):
Listado de Código 3.5: Cargar módulos del kernel |
# modprobe 8139too
|
Opcional: Afinando el Desempeño del Disco Duro
Si usted es un usuario avanzado, tal vez quiera afinar el desempeño
del disco duro IDE usando hdparm. Con la opción -tT
puede probar el desempeño de su disco (ejecútelo varias veces para
tener una impresión más precisa):
Listado de Código 3.6: Verificar el desempeño del disco duro |
# hdparm -tT /dev/hda
|
Para afinarlo siga uno de los siguientes ejemplos (o haga sus propios
experimentos) los cuales usan /dev/hda como disco
(sustitúyalo por el disco en cuestión):
Listado de Código 3.7: Afinar el desempeño del disco duro |
# hdparm -d 1 /dev/hda
# hdparm -d 1 -A 1 -m 16 -u 1 -a 64 /dev/hda
|
Opcional: Cuentas de Usuarios
Si planea darle a otras personas acceso a su entorno de instalación o
si quiere platicar con alguien usando irssi sin privilegios de
root (por razones de seguridad), hará falta crear las cuentas de
usuario necesarias y cambiar la contraseña de root.
Para cambiar la contraseña de root, use passwd:
Listado de Código 3.8: Cambiar la contraseña de root |
# passwd
New password:
Re-enter password:
|
Para crea una cuenta de usuario, primero escribimos sus credenciales, y
luego su contraseña. Se usan useradd y passwd para estas
tareas. En el siguiente ejemplo, crearemos un usuario llamado
"juan".
Listado de Código 3.9: Crear una cuenta de usuario |
# useradd -m -G users juan
# passwd juan
New password:
Re-enter password:
|
Puede cambiar su identificador de usuario desde root para usar la del
nuevo usuario usando su:
Listado de Código 3.10: Cambiar de usuario |
# su - juan
|
Opcional: Ver la Documentación mientras Instala
Si quiere ver el Manual Gentoo (ya sea desde el CD o en línea)
durante la instalación, asegúrese de haber creado una cuenta de
usuario (consulte Opcional: Cuentas de
Usuarios). Luego presione Alt-F2 para ir a una nueva
consola e ingrese al sistema.
Si quiere ver la documentación en el CD puede ejecutar inmediatamente
links2 para leerla:
Listado de Código 3.11: Ver la Documentación en CD |
# links2 /mnt/cdrom/docs/html/index.html
|
Sin embargo, es preferible que use el Manual Gentoo en línea ya que
es más reciente que el Manual en el CD. También puede verlo usando
links2, pero solo después de haber completado el
capítulo Configurar su Red (de otro modo no podrá usar Internet
para ver el documento):
Listado de Código 3.12: Ver la Documentación en Línea |
# links2 http://www.gentoo.org/doc/es/handbook/handbook-x86.xml
|
Puede regresar a la consola original presionando Alt-F1.
Opcional: Iniciar el Demonio SSH
Si quiere permitirle a otros usuarios el acceso a su máquina durante
la instalación de Gentoo (quizá porque esos usuarios le vayan a ayudar,
o incluso lo hagan por usted), necesitará crear una cuenta de usuario
para ellos e incluso darles la contraseña de root (sólo si
confía totalmente en ese usuario).
Para arrancar el demonio SSH, ejecute el siguiente comando:
Listado de Código 3.13: Iniciar el demonio SSH |
# /etc/init.d/sshd start
|
Para poder usar sshd, primero necesita configurar su red. Continúe en el capítulo Configurar su Red.
3. Configuración de su Red
3.a. Puedes hacerlo sin red, pero...
¿Quién puede?
Dependiendo del medio que hayas elegido para instalar Gentoo, es posible o no
continuar sin red (e Internet). No, no estamos jugando contigo =).
Normalmente, necesitarás configurar la red (e Internet).
No obstante, Gentoo también te brinda la posibilidad de instalarse sin una
conexión de red. Esta excepción es sólo posible con los LiveCds Universales
de Gentoo.
¿Porqué necesito conexión de red?
Una instalación desde Internet desemboca en una Instalación de Gentoo
totalmente actualizada. Dispondrás de una instalación basada en el árbol
del portage (que es una colección de de paquetes que te ofrecemos junto a
las herramientas para mantener tu software) más actual. Esta es también la
razón por la cual se prefiere la instalación por red. No obstante, alguien
puede no disponer de ella o querer instalar Gentoo en un sistema sin conexión a
Internet.
Si se encuentra en esta situación necesitará utilizar el LiveCD Universal de
Gentoo. Este LiveCD incluye código fuente, una imagen instantánea del árbol
del portage y las herramientas para instalar un sistema base Gentoo y mucho
más. Este método tiene un precio: usted nunca dispondrá del software más
actual, aunque las diferencias serán mínimas.
Si desea continuar con la instalación sin conexión a la red tendrá que utilizar
el LiveCD Universal, sáltese el resto de este capítulo y continué con Preparando los Discos.
De lo contrario, continúe con las secciones de configuración de red más
abajo.
Opcional: Configure el Proxy
Si accede a Internet a través de un proxy, podría necesitar configurar la
información del proxy durante la instalación. Es muy sencillo definir un
proxy: tan solo necesita definir la variable que contiene la información
del mismo.
En la mayoría de los casos, usted puede definir las variables usando
simplemente el host del servidor. Por ejemplo, asumimos que el proxy se llama
proxy.gentoo.org y el puerto es el 8080.
Listado de Código 1.1: Definiendo los servidores proxy |
# export http_proxy="http://proxy.gentoo.org:8080"
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
# export rsync_proxy="rsync://proxy.gentoo.org:8080"
|
Si su proxy requiere un nombre de usuario y una contraseña, debería usar
la siguiente sintaxis para la variable:
Listado de Código 1.2: Añadiendo usuario/contraseña a la variable del proxy |
http://usuario:contraseña@servidor
|
Por ejemplo, para un proxy HTTP con nuestro servidor de antes y el usuario
"juan" con la contraseña "f00b_r" se debería usar:
Listado de Código 1.3: Proxy autenticado |
# export http_proxy="http://juan:f00b_r@proxy.gentoo.org:8080"
|
3.b. Auto Detección de Red
¿Es posible que simplemente funcione?
Si su sistema está conectado a una red Ethernet con un servidor DHCP, es muy
probable que la configuración de red se haya detectado automáticamente. En
ese caso, debería ser capaz de trabajar con los con los comandos que hacen uso
de la red y que están en el LiveCD como ssh, scp,
ping, irssi, wget y links, entre otros.
Si la red ya ha sido configurada el comando /sbin/ifconfig
debería listar algunas interfaces de red además de lo, como eth0:
Listado de Código 2.1: /sbin/ifconfig para una tarjeta de red funcionando |
# /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:BA:8F:61:7A
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
collisions:1984 txqueuelen:100
RX bytes:485691215 (463.1 Mb) TX bytes:123951388 (118.2 Mb)
Interrupt:11 Base address:0xe800
|
Probando la red
Usted podría intentar hacer ping hacia el servidor DNS de su ISP, (que se
encuentra en /etc/resolv.conf) y un sitio web a su elección,
con la intención de asegurarse que sus paquetes llegan a la red, la
resolución de nombres DNS esta funcionando correctamente, etc ...
Listado de Código 2.2: Más testeo de red |
# ping -c 3 www.yahoo.com
|
¿Está su conexión funcionando? En ese caso, puede saltarse el resto de
esta sección y continuar con Preparando los
discos. De lo contrario, mala suerte, tendrá que perseverar un poco
más :)
3.c. Configuración Automática de Red
Si la red no funciona inmediatamente, algunos medios de instalación le
permitirán usar net-setup (para redes estándar), adsl-setup
(para usuarios de ADSL) o pptp (para usuarios de PPTP solamenteme
disponible para x86).
Si su medio de instalación no contiene ninguna de estas herramientas,
continúe con Configuración Manual de la Red.
Por defecto: Usando net-setup
El sistema más simple de configurar una red, si no se consiguió hacerlo
automáticamente, es ejecutar el script net-setup:
Listado de Código 3.1: Ejecutando el script net-setup |
# net-setup eth0
|
net-setup le hará algunas preguntas sobre su entorno de red
Cuando lo haya completado, debería disponer de una conexión de red
funcionando. Pruebe su conexión de red como se especificó anteriormente
Si los resultados son positivos, ¡felicidades! Ahora está listo para instalar
Gentoo. Sáltese el resto de esta sección y continúe con Preparando los discos.
Si su conexión de red sigue sin funcionar, continúe con Configuración Manual de la Red.
Alternativa: Usando RP-PPPoE
Asumiendo que requiere PPPoE para conectar a Internet, el LiveCD (cualquier
versión) ha sido pensado para facilitarle el trabajo incluyendo
rp-pppoe. Use el script adsl-setup proporcionado para
configurar su conexión. Se le pedirá el dispositivo de red que esta
conectado a su módem adsl, su nombre de usuario y su contraseña, las IPs
de sus servidores DNS y si requiere un firewall básico o no.
Listado de Código 3.2: Usando rp-pppoe |
# adsl-setup
# adsl-start
|
Si algo va mal, asegúrese que ha tecleado correctamente su nombre de usuario
y su contraseña mirando /etc/ppp/pap-secrets o
/etc/ppp/chap-secrets y asegúrese que esta haciendo uso del
dispositivo de red correcto. Si su dispositivo de red no existe, deberá cargar
los módulos de red apropiados. En ese caso, debería continuar con Configuración manual de la Red dónde explicaremos
como cargar los módulos de red apropiados.
Si todo funcionó, continúe con Preparando los
Discos.
Alternativa: Usando PPTP
Si requiere soporte PPTP, puede usar pptpclient que se incluye en
nuestros LiveCDs. Pero primero debe asegurarse que su configuración es correcta
Edite /etc/ppp/pap-secrets o /etc/ppp/chap-secrets ya
que contiene la combinación correcta de usuario/contraseña:
Listado de Código 3.3: Editando /etc/ppp/chap-secrets |
# nano -w /etc/ppp/chap-secrets
|
Ajuste ahora /etc/ppp/options.pptp si es necesario:
Listado de Código 3.4: Editando /etc/ppp/options.pptp |
# nano -w /etc/ppp/options.pptp
|
Cuando todo esté listo, tan sólo ejecute pptp (junto con las opciones
que podría haber configurado en options.pptp) para conectar al
servidor:
Listado de Código 3.5: Conectando a un servidor por línea telefónica |
# pptp <server ip>
|
Ahora continúe con Preparando los discos.
3.d. Configuración Manual de la Red
Cargando los módulos de red apropiados
Cuando el Live CD arranca, intenta detectar todos sus dispositivos hardware y
carga los módulos del kernel (controladores) apropiados para darles soporte.
En la gran mayoría de los casos, hace un muy buen trabajo. No obstante, en
algunos casos, puede no cargar automáticamente los módulos del kernel que
necesita.
Si net-setup o adsl-setup fallaron, entonces puede asumir sin
ningún riesgo que su tarjeta de red no se encontró en el acto. Esto significa
que tendrá que cargar los módulos del kernel apropiados manualmente.
Para descubrir que módulos del kernel le proporcionamos para la red, use
ls:
Listado de Código 4.1: Buscando los módulos apropiados |
# ls /lib/modules/`uname -r`/kernel/drivers/net
|
Si encuentra un driver para su tarjeta de red, use modprobe para cargar
el módulo del kernel:
Listado de Código 4.2: Usando modprobe para cargar el módulo kernel |
# modprobe pcnet32
|
Para confirmar si su tarjeta de red se detecta ahora, use ifconfig. Una
red detectada debería desembocar en algo como esto:
Listado de Código 4.3: Comprobando la disponibilidad de su tarjeta de red, éxito |
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr FE:FD:00:00:00:00
BROADCAST NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
|
Si de todas formas recibe el siguiente error, la tarjeta de red no está
detectada:
Listado de Código 4.4: Comprobando si la disponibilidad de su tarjeta de red fracasó |
# ifconfig eth0
eth0: error fetching interface information: Device not found
|
Si tiene múltiples tarjetas de red en su sistema éstas recibirán el nombre
eth0, eth1, etc. Asegúrese que la tarjeta de red que quiere
utilizar funciona correctamente y recuerde emplear el nombre correcto a lo
largo de este documento. Asumiremos que la tarjeta de red eth0 va
a ser la utilizada.
Asumiendo que usted dispone ahora de una tarjeta de red red detectada, puede
reintentar net-setup o adsl-setup otra vez (que deberían
funcionar ahora), pero para los duros de entre ustedes, les explicaremos como
configurar su red manualmente.
Seleccione una de las siguientes secciones basándose en su configuración
de red.
Usando DHCP
DHCP (Protocolo de Configuración Dinámica de Host) hace posible recibir
automáticamente su información de red (Dirección IP, máscara de red, dirección
de broadcast, pasarela, servidores de nombres etc.). Esto sólo funciona si usted
dispone de un servidor DHCP en su red (o si su proveedor le ofrece servicio
DHCP). Para conseguir que su interfaz de red reciba esta información
automáticamente use dhcpcd:
Listado de Código 4.5: Usando dhcpcd |
# dhcpcd eth0
# dhcpcd -HD eth0
|
Si esto funciona (pruebe hacer ping a algún servidor en Internet, como Google), entonces lo tiene todo configurado
y listo para continuar. Sáltese el resto de esta sección y continúe con Preparando los Discos.
Preparando el Acceso Inalámbrico (Wireless)
Nota:
No todos los LiveCDs tiene el comando iwconfig. Si el suyo no lo tiene,
todavía puede conseguir que sus extensiones funcionen siguiendo las
instrucciones del proyecto
linux-wlan-ng.
|
Si está empleando una tarjeta inalámbrica (802.11), quizá necesite configurar
sus opciones antes de ir más allá. Para revisar la configuración inalámbrica
actual de su tarjeta, puede utilizar iwconfig. Ejecutando
iwconfig debería mostrar algo como esto:
Listado de Código 4.6: Mostrando la configuración inalámbrica actual |
# iwconfig eth0
eth0 IEEE 802.11-DS ESSID:"GentooNode"
Mode:Managed Frequency:2.442GHz Access Point: 00:09:5B:11:CC:F2
Bit Rate:11Mb/s Tx-Power=20 dBm Sensitivity=0/65535
Retry limit:16 RTS thr:off Fragment thr:off
Power Management:off
Link Quality:25/10 Signal level:-51 dBm Noise level:-102 dBm
Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx
excessive retries:237 Invalid misc:350282 Missed beacon:84
|
Nota:
El nombre de dispositivo de algunas tarjetas de red inalámbricas es
wlan0 en lugar de eth0.
|
La mayoría de usuarios, solamente tendrá que modificar dos configuraciones,
el ESSID (Nombre de red inalámbrica) o la clave WEP. Si el ESSID y la
dirección del Punto de Acceso mostradas son correctas y el Punto de Acceso
y usted mismo no están utilizando WEP, su red inalámbrica está funcionando.
Si necesita cambiar su ESSID, o añadir una clave WEP, puede utilizar los
siguientes comandos:
Listado de Código 4.7: Cambiando ESSID y/o añadiendo una clave WEP |
# iwconfig eth0 essid GentooNode
# iwconfig eth0 key 1234123412341234abcd
# iwconfig eth0 key s:some-password
|
Puede volver a comprobar la configuración inalámbrica utilizando
iwconfig. Una vez que tenga la conexión funcionando, puede
continuar configurando las opciones de red de nivel IP como se describe
en la siguiente sección (Entendiendo la terminología de red) o
utilizar la herramienta net-setup como hemos descrito anteriormente.
Entendiendo la terminología de red
Nota:
Si conoce su dirección IP, dirección de broadcast, máscara de red y los
servidores de nombres, entonces puede saltarse esta subsección y continuar
con Usando ifconfig y route.
|
Si todo lo anterior falla, tendrá que configurar su red manualmente. No tenga
miedo, está lejos de ser difícil. Pero vamos a explicarle ciertos conceptos
de red que necesitará para ser capaz de configurar su red satisfactoriamente.
Cuando haya leído esto, conocerá que es una pasarela, para que sirve
una máscara de red, como se forma una dirección de broadcast
y porqué necesita servidores de nombres.
En una red los hosts están están identificados por su dirección IP
(dirección del Protocolo de Internet). Tal dirección es una combinación de
cuatro números entre 0 y 255. Bien, como mínimo así es como las percibimos. En
realidad, tal dirección IP consiste de 32 bits (unos y ceros). Vamos a ver un
ejemplo:
Listado de Código 4.8: Ejemplo de una dirección IP |
IP Address (numbers): 192.168.0.2
IP Address (bits): 11000000 10101000 00000000 00000010
-------- -------- -------- --------
192 168 0 2
|
Cada dirección IP es única para ese host, tan lejos como redes accesibles
estén a su disposición (por ejemplo, todos los hosts que usted es capaz de
conectar, deben tener direcciones IP únicas). Para ser capaz de hacer la
distinción entre hosts dentro de una red, y hosts fuera de una red, la
dirección IP está dividida en dos partes: la parte de red y la parte de
host.
La separación esta anotada en la máscara de red, una conjunto de unos
seguidos de un conjunto de ceros. La parte de la IP que quedan enmascarados
sobre los unos es la parte de red, la otra es la parte de host. Como es normal,
la máscara de red, puede ser anotada como una dirección IP.
Listado de Código 4.9: Ejemplo de una separación red/host |
IP-address: 192 168 0 2
11000000 10101000 00000000 00000010
Netmask: 11111111 11111111 11111111 00000000
255 255 255 0
+--------------------------+--------+
Network Host
|
En otras palabras, 192.168.0.14 es parte de nuestra red de ejemplo, pero
192.168.1.2 no lo es.
La dirección de broadcast es una dirección IP con la misma parte de red
que su red, pero con solo unos como parte de host. Cada host en su red escucha
esta dirección IP. Esto verdaderamente sirve para la transmisión de paquetes.
Listado de Código 4.10: Dirección de Broadcast |
IP-address: 192 168 0 2
11000000 10101000 00000000 00000010
Broadcast: 11000000 10101000 00000000 11111111
192 168 0 255
+--------------------------+--------+
Network Host
|
Para ser capaz de navegar por Internet, debería conocer qué host comparte la
conexión a Internet. Este host se llama la pasarela. Puesto que es un
host estándar, tiene direcciones IP estándar (por ejemplo 192.168.0.1).
Anteriormente afirmamos que cada host tiene su propia dirección IP. Para ser
capaz de alcanzar este host por un nombre (en vez de la dirección IP)
necesitara un servicio que traduzca un nombre (como dev.gentoo.org) a
una dirección IP (como 64.5.62.82). Tal servicio se le conoce como
servicio de nombres. Para usar tal servicio, debe definir los
servidores de nombres necesarios en /etc/resolv.conf.
En algunos casos, su pasarela también sirve como servidor de nombres. De otro
modo, tendrá que introducir los servidores de nombres facilitados por su ISP.
Para resumir, necesitará la siguiente información antes de continuar:
| Elemento de Red |
Ejemplo |
| Su dirección IP |
192.168.0.2 |
| Máscara de Red |
255.255.255.0 |
| Broadcast |
192.168.0.255 |
| Pasarela |
192.168.0.1 |
| Servidor(es) de nombres |
195.130.130.5, 195.130.130.133 |
Usando ifconfig y route
Configurar su red consiste en tres pasos. Primero, nos asignamos una dirección
IP usando ifconfig. Entonces configuraremos el ruteo hacia la pasarela
usando route. Por último, acabaremos situando las IPs de los servidores de
nombres en /etc/resolv.conf.
Para asignar una dirección IP, necesitara su dirección IP, la dirección de
broadcast y la mascara de red. Entonces ejecute el siguiente comando,
substituyendo ${IP_ADDR} con su dirección IP, ${BROADCAST} con
su dirección de broadcast y ${NETMASK} con su máscara de red:
Listado de Código 4.11: Usando ifconfig |
# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up
|
Ahora configure la ruta usando route. Substituya ${GATEWAY} con
la dirección IP de su pasarela:
Listado de Código 4.12: Usando route |
# route add default gw ${GATEWAY}
|
Ahora abra /etc/resolv.conf con su editor favorito (en nuestro
ejemplo, usaremos nano):
Listado de Código 4.13: Creando /etc/resolv.conf |
# nano -w /etc/resolv.conf
|
Ahora complete con su(s) servidor(es) de nombres usando la siguiente plantilla.
Asegúrese que substituye ${NAMESERVER1} y ${NAMESERVER2} con las
direcciones apropiadas de servidor de nombres:
Listado de Código 4.14: Plantilla /etc/resolv.conf |
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}
|
Eso es. Ahora compruebe su red haciendo ping a algún servidor de Internet (como
Google). Si funciona, felicitaciones
entonces. Ahora está listo para instalar Gentoo. Continúe con Preparando los Discos.
4. Preparando los Discos
4.a. Introducción a Dispositivos de Bloque
Dispositivos de Bloque
Examinaremos de forma detallada los aspectos de Gentoo Linux así como
Linux en general que tengan que ver con discos, sistemas de ficheros
de Linux, particiones y dispositivos de bloque. Una vez esté
familiarizado con las entrañas de los discos y sistemas de ficheros,
le guiaremos a través del proceso de creación de particiones y
sistemas de ficheros de tu instalación Gentoo Linux.
Para empezar, explicaremos el término dispositivos de
bloque. Quizás el dispositivo de bloque más conocido es el que
representa la primera unidad IDE llamada /dev/hda en un
sistema Linux. Si tu máquina utiliza discos SCSI entonces el primer
disco duro se denominará /dev/sda.
Los dispositivos de bloque mencionados anteriormente representan una
interfaz abstracta de disco. Las aplicaciones pueden hacer uso de
estas interfaces para interactuar con el disco duro de la máquina sin
importar el tipo de unidad que tienes: IDE, SCSI, o cualquier otra. La
aplicación puede simplemente dirigirse al almacenamiento en el disco
como a una serie de bloques de acceso aleatorio de 512-bytes situados
de forma contigua.
Particiones
Aunque teóricamente es posible utilizar el disco duro completo para
albergar la instalación Linux, esto casi nunca se hace. En su lugar,
los dispositivos de bloque enteros se dividen en partes más manejables
y pequeñas. En los sistemas x86 éstas se llaman particiones.
Particiones se dividen en tres tipos:
primarias, extendidas y lógicas.
La partición primaria es aquella que almacena su información en
el MBR (registro principal de arranque). Ya que el MBR puede almacenar
hasta 512 bytes, sólo pueden definirse cuatro particiones primarias
(por ejemplo, desde /dev/hda1 hasta
/dev/hda4).
Una partición extendida es una partición primaria
especial (entendemos que la partición extendida debe ser una
de las cuatro posibles particiones primarias) la cual contiene más
particiones. Al principio no existía este tipo de partición, pero como cuatro
primarias eran muy pocas, se diseñó para extender el esquema de
particionamiento sin perder la compatibilidad inversa.
Una partición lógica es aquella que está dentro de la partición
extendida. En otras palabras, estas particiones no se definen dentro
del MBR, sino que se declaran dentro de la partición extendida.
Almacenamiento Avanzado
Los LiveCds de x86 proporcionan soporte para EVMS (en inglés, Enterprise Volume
Management System) manejo empresarial de volúmenes o LVM2 (en inglés, Logical
Volume Management) manejo lógico de volúmenes, incrementando la flexibilidad
ofrecida por el esquema de particionamiento. Durante la instalación las
instrucciones principalmente se enfocan sobre particiones "habituales", pero
es bueno saber que EVMS y LVM2 también están soportadas.
4.b. Diseñando un Esquema de Particionamiento
Esquema de Particionamiento por Defecto
Si no está interesado en diseñar un esquema de particionamiento
particular para tu sistema, puede hacer uso del esquema que utilizaremos
en este manual:
| Partición |
Sistema de Ficheros |
Tamaño |
Descripción |
| /dev/hda1 |
ext2 |
32M |
Partición de arranque |
| /dev/hda2 |
(swap) |
512M |
Partición de intercambio |
| /dev/hda3 |
ext3 |
El resto del disco |
Partición de raíz |
Si está interesado en conocer el tamaño que debería tener una partición, o
incluso cuantas particiones necesita, continué leyendo. En caso contrario,
siga con el particionamiento del disco leyendo
Utilizando fdisk para particionar su disco.
¿Cuántas? y ¿de qué tamaño?
El número de particiones que necesita depende mucho de su entorno
particular. Por ejemplo, si la máquina tiene muchos usuarios, lo más
probable es que desee tener /home en una partición
separada para facilitar las tareas de copia de respaldo y aumentar la
seguridad. Si está instalando Gentoo para funcionar como servidor de
correo, debe tener /var sobre una partición separada ya
que es allí dónde se almacena todo el correo. Asimismo, una buena
elección de sistema de ficheros optimizará el rendimiento del
equipo. Las estaciones de juegos deben disponer de una partición
/opt ya que la mayoría de juegos se instalan en ese
directorio. Las razones para todas estas recomendaciones son similares
a aquellas que hemos mencionado para el caso de /home:
seguridad y salvaguarda de datos.
Como puede ver, todo depende de lo que quiera conseguir. Tener
particiones o volúmenes separados tiene las siguientes ventajas:
-
Puede elegir el mejor sistema de ficheros para cada partición o volumen
-
El equipo en su totalidad no puede quedar sin espacio si una
herramienta o aplicación está escribiendo datos de forma continua al
volumen o partición
-
Si es el caso, el tiempo dedicado a las comprobaciones de integridad
de sistemas de fichero se reduce ya que las comprobaciones pueden
ser llevadas acabo en paralelo (sin embargo esta ventaja es mayor
con múltiples discos que con múltiples particiones)
-
La seguridad puede ser aumentada montando algunas de las particiones
en modo sólo lectura, nosuid (los setuid bits se ignoran), noexec
(los bits de ejecución se ignoran), etc.
Pero, tener múltiples particiones tiene una gran desventaja: si la
configuración no es la adecuada, puede acabar teniendo mucho espacio
libre en una de las particiones y quedarse sin espacio en otras. Además,
existe un límite de 15 particiones para SCSI y SATA.
Como ejemplo de un esquema de particionamiento utilizaremos un disco
duro de 20 Gb de un portátil para fines de demostración (incluye
servidor web, servidor de correo, gnome, etc.):
Listado de Código 2.1: Ejemplo de particionamiento |
Filesystem Type Size Used Avail Use% Mounted on
/dev/hda5 ext3 509M 132M 351M 28% /
/dev/hda2 ext3 5.0G 3.0G 1.8G 63% /home
/dev/hda7 ext3 7.9G 6.2G 1.3G 83% /usr
/dev/hda8 ext3 1011M 483M 477M 51% /opt
/dev/hda9 ext3 2.0G 607M 1.3G 32% /var
/dev/hda1 ext2 51M 17M 31M 36% /boot
/dev/hda6 swap 516M 12M 504M 2% <not mounted>
|
/usr parece estar bastante llena (83%), pero una vez que
todo el software esté instalado no tiende a llenarse más. La gente
puede pensar que el espacio que asignamos a /var es
excesivo, sin embargo hay que saber que Gentoo compila todas las
aplicaciones en /var/tmp/portage, por lo tanto se debe
tener al menos 1 Gb de espacio libre en /var si no se
planea compilar aplicaciones grandes, en caso contrario se recomienda
tener 3 Gb libres, si compilar KDE u OpenOffice.org no es demasiado para
usted.
4.c. Utilizando fdisk para particionar su disco
Las siguientes instrucciones explican como particionar el disco duro
según el esquema descrito anteriormente:
| Partición |
Descripción |
| /dev/hda1 |
Partición de arranque (boot) |
| /dev/hda2 |
Partición de intercambio (swap) |
| /dev/hda3 |
Partición de raíz (root) |
Cambie el esquema de particionamiento según su propio criterio.
Examinando el Esquema de Particionamiento Actual
fdisk es una herramienta potente y bastante popular que permite
dividir el disco en particiones. Arranca fdisk sobre tu unidad
de disco (en nuestro ejemplo usamos el dispositivo de disco
/dev/hda)::
Listado de Código 3.1: Iniciando fdisk |
# fdisk /dev/hda
|
Una vez que fdisk esté en ejecución, el programa ofrecerá el
siguiente símbolo de comandos:
Listado de Código 3.2: Símbolo de espera de órdenes de fdisk |
Command (m for help):
|
Teclee p para mostrar el esquema de particionamiento actual:
Listado de Código 3.3: Un ejemplo sobre configuración de particiones |
Command (m for help): p
Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 14 105808+ 83 Linux
/dev/hda2 15 49 264600 82 Linux swap
/dev/hda3 50 70 158760 83 Linux
/dev/hda4 71 2184 15981840 5 Extended
/dev/hda5 71 209 1050808+ 83 Linux
/dev/hda6 210 348 1050808+ 83 Linux
/dev/hda7 349 626 2101648+ 83 Linux
/dev/hda8 627 904 2101648+ 83 Linux
/dev/hda9 905 2184 9676768+ 83 Linux
Command (m for help):
|
Este disco en particular está configurado para albergar siete sistemas
de ficheros Linux, cada uno con su correspondiente partición con la
etiqueta "Linux", así como una partición de intercambio (swap) que
aparece con la etiqueta "Linux swap".
Eliminación de todas las Particiones
Primero eliminaremos todas las particiones existentes en el
disco. Teclee d para eliminar una partición, seguido por
intro. Por ejemplo, para borrar una partición existente en
/dev/hda1:
Listado de Código 3.4: Eliminando una partición |
>
Command (m for help): d
Partition number (1-4): 1
|
La partición ha sido marcada para su borrado. Ya no aparecerá si
teclea p, pero no será eliminada hasta que guarde los cambios
realizados. Si comete una equivocación y desea abortar los cambios
realizados, teclee q inmediatamente y pulse intro; las
particiones no serán eliminadas.
Ahora, asumiendo que intenta eliminar todas las particiones existentes
del disco duro, debe teclear p en forma repetida para ver el
listado de particiones y pulsar d junto con el número de la
partición para borrarlas. Finalmente, acabará teniendo una tabla de
particiones vacía:
Listado de Código 3.5: Una tabla de particiones vacía |
Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
Command (m for help):
|
Ahora que la tabla de particiones en memoria del sistema está vacía,
estamos preparados para crear nuevas particiones. Utilizaremos el
esquema por defecto, tal como hemos acordado anteriormente. ¡Claro
está, que no debe seguir estas instrucciones al píe de la letra si no
desea tener una tabla de particiones exactamente igual que la nuestra!
Creación de una Partición de Arranque
En primer lugar debemos crear una pequeña partición de
arranque. Teclee n para crear esta nueva partición, y luego
p para seleccionar una partición primaria, siguiendo por
1 para elegirla como primera partición primaria. Cuando el
sistema solicite introducir el primer cilindro, pulse intro y cuando
pida definir el valor del último cilindro, teclee +32M para
crear una partición de tamaño 32 Mb.::
Listado de Código 3.6: Creando una partición de arranque |
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M
|
Si ahora teclea p, debe ver la siguiente partición en la tabla:
Listado de Código 3.7: Una partición creada |
Command (m for help): p
Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 14 105808+ 83 Linux
|
Necesitamos hacer que esta partición sea arrancable. Teclee a
para marcar esta partición como arrancable. Si introduce p de
nuevo, verá que el * ha aparecido en la columna "Boot".
Creación de una Partición de Intercambio
Vamos a crear ahora la partición de intercambio. Para hacerlo, teclee
n para crear una nueva partición, y luego p para
comunicar a fdisk que debe ser una partición primaria. Entonces teclee
2 para crear la segunda partición primaria,
/dev/hda2 en nuestro caso. Cuando el sistema solicite
introducir el valor del primer cilindro, pulse intro y cuando solicite
introducir el valor del último, teclee +512M para crear una
partición de 512 Mb. Cuando lo haya hecho, teclee t para
establecer el tipo de partición, 2 para seleccionar la
partición que acaba de crear y entonces 82 para fijar el tipo
"Linux Swap". Una vez completados estos pasos la introducción de
p visualizará la tabla de particiones que debe ser similar a
ésta.
Listado de Código 3.8: Listado de particiones después de la creación de la partición de intercambio |
Command (m for help): p
Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap
|
Creación de la Partición de Raíz
En el último lugar, creamos la partición de raíz. Introduzca n
para crear la nueva partición, p para marcarla como partición
primaria. A continuación teclee 3 para crear la tercera
partición primaria, /dev/hda3, según nuestro ejemplo. Al
solicitar la introducción del valor del primer cilindro de la
partición pulsamos intro, mientras que cuando el sistema solicite que
introduzcamos el valor del último cilindro, también le damos a intro
para crear una partición que ocupe todo el espacio restante en el
disco. Tras completar todos estos pasos, introducimos p para
ver la tabla de particiones que debe parecer mucho a la siguiente:
Listado de Código 3.9: Listado de particiones después de crear la partición de raíz |
Command (m for help): p
Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap
/dev/hda3 82 3876 28690200 83 Linux
|
Almacenamiento de la Tabla de Particiones
Para guardar el esquema de particionamiento y salir del fdisk
tecleamos w.
Listado de Código 3.10: Guardado y salida del fdisk |
Command (m for help): w
|
Ahora que las particiones están creadas, puede proseguir con la Creación de Sistemas de Ficheros.
4.d. Creación de Sistemas de Ficheros
Introducción
Ahora que ya tiene creadas las particiones, debe formatearlas para
poder tener un sistema de ficheros. Si no le importa el tipo de
sistema de ficheros que desee utilizar y está conforme con nuestra
elección por defecto, continúe con la sección Creación de Sistema de Ficheros en una
Partición. En caso contrario, siga leyendo para ver qué sistemas
de ficheros puede utilizar ...
¿Sistemas de Ficheros??
El kernel de Linux soporta varios sistemas de ficheros. Explicaremos
ext2, ext3, ResiserFS, XFS y JFS por ser los más utilizados en sistemas
Linux.
ext2 es un sistema de ficheros Linux probado, pero no dispone
de soporte para transacciones, lo que significa que las comprobaciones
rutinarias al arrancar pueden tardar bastante tiempo. Ahora, hay
muchas opciones alternativas, sistemas de ficheros de nueva generación
con soporte para transacciones cuya integridad puede ser verificada
con mayor rapidez, por lo que gozan de mayor popularidad. Los sistemas
de ficheros transaccionales previenen retrasos durante el reinicio del
equipo, incluso cuando el sistema de ficheros está en un estado
inconsistente.
ext3 es la versión transaccional de ext2, que proporciona
soporte para una rápida recuperación además de otros modos mejorados
de funcionamiento como registro completo y ordenado de datos. Ext3 es
un buen sistema de ficheros además de fiable. Posee una opción adicional
para indización basada en árboles B que proporciona un alto rendimiento
en casi todas las situaciones. En resumen, ext3 es un excelente sistema
de ficheros.
ReiserFS es un sistema de ficheros B*-tree (basado en árboles
balanceados) que tiene un gran rendimiento y que sobrepasa con creces
a ext2 y ext3 cuando se trate de trabajar con ficheros pequeños
(archivos menores de 4kb.), a veces diez o quince veces
mejor. ReiserFS es extremadamente escalable y soporta
transaccionalidad. Desde la versión 2.4.18+, ReiserFS es sólido y
estable para su uso en casos genéricos así como en casos extremos
cuando es necesario trabajar por ejemplo con sistemas de ficheros
grandes, utilizar múltiples ficheros pequeños o manejar archivos
grandes y directorios con miles y miles de ficheros.
XFS es un sistema de ficheros transaccional el cual viene con un
juego de características robustas y está optimizado para ser
escalable. Recomendamos el uso de este sistema de ficheros para
aquellas plataformas Linux que dispongan de dispositivos de
almacenamiento SCSI de alto rendimiento y/o almacenamientos de canal
de fibra (en inglés, fiber channel) con sistema de alimentación
ininterrumpida. XFS realiza un almacenamiento temporal agresivo de
datos en tránsito en RAM, pues aquellas aplicaciones con defectos de
diseño (de las cuales hay muchas) que no toman precauciones necesarias
durante la escritura de datos al disco pueden perderlos en caso de que
el sistema se apague de forma inesperada.
JFS de IBM es un sistema de ficheros de alto rendimiento con
soporte transaccional. Sólo recientemente ha entrado en fase de
producción por lo tanto en este momento todavía no hay datos
suficientes para opinar de forma favorable o negativa sobre su
estabilidad.
Creación de Sistema de Ficheros en una Partición
Para crear un sistema de ficheros en una partición o volumen existen
herramientas específicas para cada sistema de ficheros:
| Sistema de Ficheros |
Comando de Creación |
| ext2 |
mke2fs |
| ext3 |
mke2fs -j |
| reiserfs |
mkreiserfs |
| xfs |
mkfs.xfs |
| jfs |
mkfs.jfs |
Por ejemplo, para formatear la partición de arranque
(/dev/hda1 según el ejemplo) en formato ext2 y la
partición de raíz (/dev/hda3 según el ejemplo) en formato
ext3, utilizaría los siguientes comandos:
Listado de Código 4.1: Creación de un sistema de ficheros en una partición |
# mke2fs /dev/hda1
# mke2fs -j /dev/hda3
|
Y ahora, puede crear sistemas de fichero sobre sus particiones o
volúmenes lógicos recién creados.
Activando la Partición de Intercambio
mkswap es el comando usado para inicializar particiones swap:
Listado de Código 4.2: Inicialización de una partición de intercambio |
# mkswap /dev/hda2
|
Para activar la partición, usa el comando swapon:
Listado de Código 4.3: Activación de una partición de intercambio |
# swapon /dev/hda2
|
Crea y activa tu partición de intercambio ahora.
4.e. Montaje
Ahora que las particiones están inicializadas y albergan sistemas de
ficheros, es la hora de montarlas. Utiliza el comando mount. No
olvides de crear puntos de montaje necesarios para cada partición que
has creado. Como ejemplo montamos la partición de raíz y de arranque:
Listado de Código 5.1: Montaje de particiones |
# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot
|
Nota:
Si quiere que su /tmp resida sobre una partición
diferente, asegúrese de cambiar los permisos después de montarla:
chmod 1777 /mnt/gentoo/tmp. Lo mismo debe ser aplicado a
/var/tmp.
|
También necesitamos montar el sistema de ficheros proc (la interfaz
virtual del kernel) en /proc. Pero primero necesitamos
situar nuestros ficheros en las particiones.
Continué con Instalación de Ficheros
de Instalación de Gentoo.
5. Instalando los Archivos de Instalación Gentoo
5.a. Escogiendo el Stage correcto
Colocando la Fecha/Hora correcta
Antes de continuar debes revisar la fecha y la hora y
actualizarlos. ¡Un reloj mal configurado puede traer
resultados extraños a futuro!
Para verificar la fecha/hora actual, ejecute el comando date:
Listado de Código 1.1: Verificando la fecha/hora |
# date
Thu Apr 1 16:21:18 CEST 2004
|
Si la fecha/hora está equivocada, actualícela con el comando date
MMDDhhmmCCYY, con la siguiente sintaxis (Mes, Día,
hora, minuto, C sigloentury y Y año). Por
ejemplo, para colocar la fecha y hora a las 16:21 horas del 1o de
abril del 2004:
Listado de Código 1.2: Ajustando la fecha/hora |
# date 040116212004
|
Haciendo su escogencia
El próximo paso para llevar a cabo es instalar el tarball del archivo
stage escogido en su sistema. Tiene la opción de descargarlo
del Internet o, si ha arrancado con un LiveCD Universal Gentoo,
cópielo del mismo CD.
5.b. Por defecto: Por defecto: Descargar los Stages de Internet
Descargando el Stage comprimido
Vete al punto de montaje de Gentoo en el que has montado los sistemas
de archivo (probablemente /mnt/gentoo):
Listado de Código 2.1: Ir al punto de montaje de Gentoo |
# cd /mnt/gentoo
|
Dependiendo del medio de instalación, tendremos un par de herramientas
disponibles para descargar el stage. Si usamos lynx,
podremos navegar por la lista de
servidores espejo de Gentoo y escoger el más cercano a
nosotros. Luego entrar en el directorio releases/ seguido
de tu arquitectura (por ejemplo x86/ y la versión de
Gentoo (1.4/) para finalizar con el directorio de los
stages stages/. Allí deberías ver todos los archivos de
las stages disponibles para tu arquitectura. Selecciona uno y presiona
D para descargarlo. Cuando se haya descargado, presiona
Q para cerrar el navegador.
Listado de Código 2.2: Navegando por la lista de servidores espejo con lynx |
# lynx http://www.gentoo.org/main/en/mirrors.xml
|
Si no disponemos de lynx, deberíamos tenerlinks2 a
nuestra disposición. links2 es más potente que lynx,
pero tiene algunas desventajas. Una de ellas es que no escucha las
variables del proxy que hayamos declarado con anterioridad. Si
necesitamos configurar un proxy, usa links2 -http-proxy
proxy.server.com:8080. Tras esto, seguiremos los mismos pasos que
con lynx ya que su manejo es igual.
Listado de Código 2.3: Navegando por la lista de servidores espejo con links2 |
# links2 http://www.gentoo.org/main/es/mirrors.xml
# links2 -http-proxy proxy.server.com:8080
http://www.gentoo.org/main/es/mirrors.xml
|
Extraer el Stage comprimido
Ahora desempaquetamos el stage descargado en sistema. Usaremos el
tar de GNU para dicha labor y este es el método más fác
Listado de Código 2.4: Desempaquetando el Stage |
# tar -xvjpf stage?-*.tar.bz2
|
Asegúrate de usar las mismas opciones -xvjpf). El x se usa para
Desempaquetar, el v para Verbose (Ok, si, es opcional),
el j para Decomprimir con bzip2, el p para Preservar
los permisos y el f para decir que extraemos un archivo, no
la entrada estándard.
¿Hecho?, OK, ahora estás preparado para proceder con la siguiente sección en Configurando las opciones de compilación.
5.c. Alternativa: Usar un Stage de un LiveCD
Extraer el Stage comprimido
Los Stages en el CD están situados en el directorio /mnt/cdrom/stages. Para ver una lista de los Stages disponibles, usa ls:
Listado de Código 3.1: Listar todos los stages disponibles |
# ls /mnt/cdrom/stages
|
Si el sistema responde con un error, tal vez necesites montar el CD-ROM primero:
Listado de Código 3.2: Montando el CD-ROM |
# ls /mnt/cdrom/stages
ls: /mnt/cdrom/stages: No such file or directory
# mount /dev/cdroms/cdrom0 /mnt/cdrom
# ls /mnt/cdrom/stages
|
Ahora en tu punto de montaje de Gentoo (Normalmente /mnt/gentoo):
Listado de Código 3.3: Cambiando el directorio a /mnt/gentoo |
# cd /mnt/gentoo
|
Ahora extraeremos el Stage comprimido que hayas elegido. Usaremos el
tar de GNU para dicha labor. ¡Asegúrate de usar las mismas
opciones -xvjpf)! En el siguiente ejemplo, extraeremos el Stage
comprimido stage3-20031011.tar.bz2. Asegúrate de
sustituir el nombre por el de tu Stage.
Listado de Código 3.4: Desempaquetando el Stage |
# tar -xvjpf /mnt/cdrom/stages/stage3-20031011.tar.bz2
|
Instalando la imagen de Portaga y las Fuentes
Hay una imagen de Portage disponible en algunos LiveCDs. Desde que
estás leyendo esto, nosotros asumimos seguramente que tu estás usando
un LiveCD. Para instalar esta imagen, echa un vistazo dentro de
/mnt/cdrom/snapshots/ para ver que imagen está
disponible:
Listado de Código 3.5: Comprobando el contenido de /mnt/cdrom/snapshots |
# ls /mnt/cdrom/snapshots
|
Ahora extraeremos la imagen siguiendo el siguiente método. De nuevo asegúrate de usar las opciones correctas para tar. También, la -C que es mayúscula C, no c. En el siguiente ejemplo usaremos portage-20031011.tar.bz2 como el nombre de la imagen. Asegúrate de sustuirlo por el nombre de tu imagen.
Listado de Código 3.6: Extrayendo la imagen de Portage |
# tar -xvjf /mnt/cdrom/snapshots/portage-20031011.tar.bz2 -C
/mnt/gentoo/usr |
También necesitarás copiar todas las fuentes desde el CD.
Listado de Código 3.7: Copia de las fuentes |
# cp -R /mnt/cdrom/distfiles /mnt/gentoo/usr/portage/distfiles
|
Si quieres usar PRG (Plataforma de Referencia Gentoo, paquetes
precompilados), sigue leyendo. De otra forma continúa con el Configurando las opciones de compilación.
Opcional: Preparando la PRG
Si quieres instalar Gentoo usando la PRG (Plataforma de Referencia
Gentoo, paquetes precompilados), necesitarás copiar todos los paquetes
en tu sistema de archivos para que Portage los pueda usar.
Listado de Código 3.8: Copia de los paquetes precompilados |
# cp -a /mnt/cdrom/packages /mnt/gentoo/usr/portage/packages
|
Ahora contiua con Configurando las opciones de compilación.
5.d. Configurando las opciones de compilación
Introducción
Para optimizar Gentoo, tendrás que ajustar un par de variables que
afectarán el comportamiento de Portage. Todas estas variables se
pueden fijar como variables de entorno (usando export) pero eso
no es permanente. Para mantener tu configuración, Portage dispone de
/etc/make.conf, un fichero de configuración para
Portage. Este es el fichero que editaremos ahora.
Usa tu editor favorito (en esta guía nosotros usaremos nano. Así que empezamos con la modificación de las variables.
Listado de Código 4.1: Abriendo /etc/make.conf |
# nano -w /mnt/gentoo/etc/make.conf
|
Como probablemente te darás cuenta, el fichero make.conf
está estructurado de una manera genérica: Las líneas comentadas
empiezan con "#", otras líneas definen variables usando la sintaxis
VARIABLE="contenido". Discutiremos muchas de esas variables más
adelante.
CHOST
Aviso: Aunque puede ser interesante para los usuarios que no iniciaron
la instalación con el Stage 1, no deberían cambiar el parámetro
CHOST en el make.conf ya que pueden volver el
sistema inusable. De nuevo: Solo cambies esta variable si usas una
instalación desde el stage1.
|
La variable CHOST define la arquitectura para la cual
gcc ha de compilar los programas. Las posibilidades son:
| Arquitectura |
Subarquitectura |
Valor del CHOST |
| x86 |
i386 |
i386-pc-linux-gnu |
| x86 |
i486 |
i486-pc-linux-gnu |
| x86 |
i586 |
i586-pc-linux-gnu |
| x86 |
i686 y superior (incl. athlon) |
i686-pc-linux-gnu |
| alpha |
|
alpha-unknown-linux-gnu |
| ppc |
|
powerpc-unknown-linux-gnu |
| sparc |
|
sparc-unknown-linux-gnu |
| hppa |
(genérico) |
hppa-unknown-linux-gnu |
| hppa |
pa7000 |
hppa1.1-unknown-linux-gnu |
| hppa |
pa8000 y superior |
hppa2.0-unknown-linux-gnu |
CFLAGS y CXXFLAGS
Las variables CFLAGS y CXXFLAGS, definen los parámetros
de optimización para el compilador de C y C++ de gcc
respectivamente. Aunque generalmente se definen aquí, tendrás el
máximo rendimiento si optimizas estos parámetros para cada programa
por separado. La razón es que cada programa es diferente.
En el fichero make.conf deberás definir los parámetros de
optimización que pienses que vayan a hacer tu sistema el mejor en
todas las situaciones. No coloques parámetros experimentales en
esta variable; un nivel demasiado alto de optimización puede hacer que los programas se comporten mal (cuelgues, o incluso peor, funcionamientos erróneos).
No explicaremos todas las opciones posibles para la optimización. Pero
si quieres conocerlas todas, léete El manual en línea
de GNU o la página info de gcc (info gcc -- Solo
en un sistema Linux funcional). El fichero make.conf
también contiene una gran cantidad de ejemplos e información; no
olvides leerlo también.
La primera variable es el parámetro -march=, que especifica el nombre de la arquitectura seleccionada. Las posibles opciones están descritas en el fichero make.conf (como comentarios). Por ejemplo, para la arquitectura x86 Athlon XP:
Listado de Código 4.2: El parámetro march de GCC |
-march=athlon-xp
|
Seguida de esta, está el parámetro -O, que especifica la clase
optimización de gcc. Las clases posibles son s (para
tamaño optimizado), 0 (para no optimizar), 1, 2
or 3 para la optimización de velocidad (cada clase tiene los
mismos parámetros que la primera, más algunos extras). Por ejemplo
para una optimización de clase 2:
Listado de Código 4.3: El parámetro O de GCC |
-O2
|
Otros parámetros de optimización bastante populares son los
-pipe (usando tuberías en lugar de ficheros temporales para la
comunicación entre las diferentes etapas de compilación).
Cuidado con utilizar -fomit-frame-pointer (el cual no mantiene
el puntero de macro en un registro para las funciones que no lo necesiten)
pues podría tener graves repercusiones en la depuración de errores en
aplicaciones.
Cuando definimos las variables CFLAGS y CXXFLAGS,
deberías combinar algunos parámetros de optimización, como en el
ejemplo siguiente:
Listado de Código 4.4: Definiendo las variables CFLAGS y CXXFLAGS |
CFLAGS="-march=athlon-xp -pipe -O2"
CXXFLAGS="${CFLAGS}" |
USE
Los parámetros USE son unas de las más potentes variables que
Gentoo da a sus usuarios. Muchos programas pueden ser compilados con o
sin soporte opcional para ciertas opciones. Por ejemplo, algunos
programas pueden ser compilados con soporte para GTK, o con soporte
para QT. Otros pueden ser compilados con o sin soporte SLL. Algunos
porgramas pueden ser compilados con soprote para framebuffer (svgalib)
en lugar de soporte para X11 (Servidor X).
La mayor parte de las distribuiciones compilan sus paquetes con
soporte para lo que pueden, aumentando el tamaño de los programas y el
tiempo de arranque de los mismos, por no decir del enorme aumento de
las dependencias. Con Gentoo puedes definir con que opciones quieres
que se compile un paquete. Aquí es donde entran en juego los
parámetros USE.
En los parámetros USE definimos las claves que son mapeadas
como opciones de compilación. Por ejemplo, ssl compilará con
soporte SSL los programas que lo soporten. -X eliminará el
soporte para el servidor X (nota: el signo menos va delante). gnome
gtk -kde -qt compilará tus programas con soporte para Gnome y GTK,
y no con soporte para KDE (y QT), haciendo nuestro que nuestro sistema
está personalizado para Gnome.
Los parámetros USE por defecto están colocados en
/etc/make.profile/make.defaults. Y los que pongas en
/etc/make.conf se calculan contra los parámetros por
defecto. Si fijamos alguno a los parámetros USE, es añadido
automáticamente a la lista por defecto. Si quitamos algún parámetro
USE fijado (colocando un signo menos delante de él) es
eliminado de la lista por defecto. Nunca cambies nada dentro
del directorio /etc/make.profile; ¡Este directorio se
sobreescribe cada vez que se actualiza Portage!
Una completa descripción de los parámetros USE la podemos encontrar en El USE-Como. Como ejemplo tenemos
una configuración de los parámetros USE para un sistema basado
en KDE con DVD, ALSA y CD:
Listado de Código 4.5: Configuración de los parámetros USE |
USE="-gtk -gnome qt kde dvd alsa cdr"
|
ACCEPT_KEYWORDS
Los ebuilds (el formato de paquetes que usa Gentoo) están distribuidos
en tres árboles. El primero se llama ARCH, que significa que el
ebuild y sus dependencias están pensadas para la estabilidad y listas
para el uso general. La mayor parte de la gente querrá esta opción. Si
queremos que nuestro sistema use los paquete de ARCH, la
variable ACCEPT_KEYWORDS deberá contener nuestra arquitectura
(bien sea x86, alpha, ppc, sparc o
hppa):
Listado de Código 4.6: Fijando la variable ACCEPT_KEYWORDS para la arquitectura x86 en ARCH |
ACCEPT_KEYWORDS="x86"
|
Cuando un ebuild entra en Portage, primeramente va a ~ARCH, que
quiere decir que el ebuild funciona para el mantenedor del mismo, pero
que el paquete necesita más pruebas antes de ser movido a
ARCH. Si quieres que tu sistema use paquetes de ~ARCH,
entonces la variable ACCEPT_KEYWORDS deberá contener tu
arquitectura, precedida por una tilde (~). No pienses
que esto es el equivalente de "en prueba" o "inestable" en otras
distribuiciones. ¡Los paquetes dentro de ~ARCH a veces
pueden fallar! sobre todo en algunas arquitecturas, incluso no
realizarán el bootstrap si usamos el ~ARCH (sobre todo SPARC).
Listado de Código 4.7: Fijando la variable ACCEPT_KEYWORDS para la arquitectura x86 en ~ARCH |
ACCEPT_KEYWORDS="~x86"
|
Si quieres usar paquetes, que se sabe que dañarán tu sistema, si
realmente quieres bajar a los infiernos y descomenta los paquetes en
/usr/portage/profiles/package.mask. Aunque, esto es un
gran y gordo aviso:
Aviso:
Jugar con el fichero package.mask no es recomendable para
tu sistema, la salud y tu humor. No lo toques a menos de que
conduzcas un tanque, lleves un chaleco antibalas de teflón 24h los 7
días de la semana y te encante sentarte y esperar mirando como Gentoo
es reinstalado de nuevo ... y de nuevo ... y de nuevo ...
|
MAKEOPTS
Con la variable MAKEOPTS definimos cuantas compilaciones
paralelas pueden hacerse al mismo tiempo cuando instalamos un
paquete. El número sugerido es la cantidad de CPUs de tu sistema, más uno
Listado de Código 4.8: MAKEOPTS para un sistema normal de 1-CPU |
MAKEOPTS="-j2"
|
¡Preparados, listos, ya!
Actualiza tu /mnt/gentoo/etc/make.conf con tus propios
parámetros y guarda los cambios. Ahora estamos listos para continuar
con Instalando el sistema base de Gentoo.
6. Instalando el Sistema Base de Gentoo
6.a. Chrooting
Opcional: Seleccionando servidores espejo
Si has iniciado desde el LiveCD de Gentoo, puedes usar mirrorselect
para actualizar /etc/make.conf. Con esto conseguiremos
servidores espejo rápidos para descargar Portage y el código fuente (por
supuesto en caso de que tenga una conexión a la red):
Aviso:
Un error en la selección de espejos podría generar basura después de la
línea GENTOO_MIRRORS. Por favor, abra /mnt/gentoo/etc/make.conf
y borre la basura al final de la línea GENTOO_MIRRORS (si puede).
|
Listado de Código 1.1: Seleccionando servidores espejo rápidos |
# mirrorselect -a -s4 -o | grep 'GENTOO_MIRRORS=' >> /mnt/gentoo/etc/make.conf
|
Si por alguna razón mirrorselect falla, no te preocupes. Este paso es
completamente opcional. Si mirrorselect falla, los valores por defecto te
servirán.
Copiar la información DNS
Aún queda una cosa que hacer antes de entrar en el nuevo entorno,
copiar la información sobre los DNS en /etc/resolv.conf.
Necesita hacer esto para asegurarse de que la red continúe funcionando
después de entrar en el nuevo entorno. /etc/resolv.conf
contiene los servidores de nombres para su red.
Listado de Código 1.2: Copiando los DNS |
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
|
Montando el sistema de archivos proc
Monte el sistema de ficheros /proc en
/mnt/gentoo/proc para permitir a la instalación
utilizar la información proporcionada por el kernel incluso dentro
del entorno chroot.
Listado de Código 1.3: Montando /proc |
# mount -t proc none /mnt/gentoo/proc
|
Entrando al nuevo entorno
Ahora que todas las particiones están inicializadas y el sistema base
instalado, es hora de entrar en nuestro nuevo entorno de instalación
chrooting. Esto significa pasar desde el actual
entorno de instalación (LiveCD o otro medio de instalación) hacia tu
entorno de instalación (o sea, las particiones inicializadas).
El cambio de raíz se hace en tres pasos. Primero cambiamos la raíz
desde / (en el medio de instalación) a /mnt/gentoo
(en tus particiones) usando chroot. Después crearemos un nuevo entorno
usando env-update, el cual, en esencia crea las variables de entorno.
Finalmente, cargamos esas variables en memoria tecleando source.
Listado de Código 1.4: Entrando al nuevo entorno |
# chroot /mnt/gentoo /bin/bash
# env-update
* Caching service dependencies...
# source /etc/profile
|
¡Enhorabuena! Estás dentro de tu nuevo entorno Gentoo Linux.
Por supuesto aún no hemos terminado, todavía quedan unas cuantas
secciones ;)
Opcional: Actualizando el árbol Portage
Si no ha instalado una imagen de Portage en el capítulo anterior, debería
descargar un árbol de Portage actualizado desde Internet. emerge --sync
lo hará por usted. El resto de usuarios deberán saltarse esto y continuar con
Configurando la variable USE.
Listado de Código 1.5: Actualizando el árbol Portage |
# emerge --sync
|
Portage utiliza el protocolo RSYNC para actualizar el árbol de Portage. Si
el comando de arriba falla por culpa de su firewall, utilice
emerge-webrsync el cual descarga e instala una imagen de Portage
utilizando el protocolo HTTP.
Listado de Código 1.6: Actualizando el árbol Portage con emerge-webrsync |
# emerge-webrsync
|
Si ha advertido que está disponible una nueva versión de Portage y debe
actualizarlo, puede ignorar esta advertencia sin miedo. El Portage
será actualizado durante la instalación.
Configurando la variable USE
USE es una de las variables más importantes que Gentoo proporciona a
sus usuarios. Muchos programas pueden ser compilados con o sin soporte
opcional para ciertas cosas. Por ejemplo, algunos programas pueden ser
compilados con soporte gtk,o con soporte qt. Otros programas pueden ser
compilados con o sin soporte SSL. Algunos programas pueden ser compilados
con soporte framebuffer en lugar de soporte X11 (servidor X).
Muchas distribuciones compilan sus paquetes con el mayor soporte posible,
aumentando el tamaño de los programas y su tiempo de carga, sin mencionar
una cantidad enorme de dependencias. Con Gentoo puedes definir con que
opciones debe ser compilado un paquete. Ahí es donde actúa la variable
USE.
En la variable USE definimos palabras clave que son mapeadas a
opciones de compilación. Por ejemplo ssl compilará los programas
que lo requieran con soporte ssl.-X quitara el soporte para el servidor
X (nótese el signo menos delante). gnome gtk -kde -qt compilará tus
programas con soporte para gnome y gtk, pero sin soporte para kde (y qt),
haciendo tu sistema completamente compatible con GNOME.
Los valores por defecto de la variable USE se encuentran
en /etc/make.profile/make.defaults. Lo que ponga en
/etc/make.conf es calculado contra estos valores. Si pone
algún valor en su USE, es añadido a la lista por defecto. Si elimina
algo en su variable USE, poniéndole un signo menos delante, es
eliminado de la lista por defecto (si estaba en ella claro). Nunca
cambie nada en /etc/make.profile ya que se sobreescribe
cuando actualizas el Portage!
Puede encontrar una descripción más amplia sobre la variable USE
en la segunda parte del Manual de Gentoo Capítulo 1: Variables USE. Encontrará
una descripción más extensa sobre las opciones de la variable USE en su sistema,
en /usr/portage/profiles/use.desc.
Listado de Código 1.7: Viendo las opciones disponibles |
# less /usr/portage/profiles/use.desc
|
Como ejemplo, te mostramos unas opciones USE para un sistema basado
en KDE con DVD, ALSA y soporte para grabar CD's.
Listado de Código 1.8: Abriendo /etc/make.conf |
# nano -w /etc/make.conf
|
Listado de Código 1.9: Configurando la variable USE |
USE="-gtk -gnome qt kde dvd alsa cdr"
|
Probablemente querrá utilizar solamente una o dos configuraciones locales
en su sistema. Después de compilar glibc se crea un amplio conjunto
de variables locales. En este punto puede activar la variable USE
userlocales y especificar solamente las variables locales que necesite
en /etc/locales.build.
Listado de Código 1.10: Activando la variable USE 'userlocales' para glibc |
mkdir /etc/portage
echo "sys-libs/glibc userlocales" >> /etc/portage/package.use
|
Ahora puede especificar las variable locales que quiere utilizar:
Listado de Código 1.11: nano -w /etc/locales.build |
en_US/ISO-8859-1
en_US.UTF-8/UTF-8
es_ES/ISO-8859-15
es_ES@euro/ISO-8859-15
|
Opcional: Utilizando compilaciones distribuidas
Si estás interesado en usar varios ordenadores para compilar tu sistema,
deberías revisar Guía de DistCC .
Usando distcc puedes usar varios ordenadores para ayudarte a compilar
el sistema.
6.b. Diferencias entre stage1, stage2 y stage3
Ahora toma asiento y reflexiona sobre los pasos previos. Te hemos pedido que
seleccionaras el stage1, stage2 o stage3 y advertido
que tu elección es importante para los futuros pasos de la instalación. Bien, esta
es la primera vez que tu elección define los siguientes pasos.
6.c. Pasando del stage1 a stage2
Introducción a la instalación de la base del sistema (bootstrap)
¿Así que quiere compilar todo desde cero? Muy bien, vamos a ello :)
En este paso, instalaremos la base del sistema (en inglés conocido con el
verbo bootstrap).
Tardará bastante tiempo, pero el resultado es un sistema que está optimizado
específicamente para su máquina y sus necesidades desde la base.
Instalar la base del sistema implica : compilar la librería GNU C, la
colección de compiladores GNU y otros programas del sistema.
Antes de empezar a instalar la base del sistema, le indicamos una lista
de opciones que puede querer o no activar. Si no quiere leerlas, continúe
con Instalando la base del sistema (bootstrap).
Opcional: Descargar primero el código fuente
Si no ha copiado todo el código fuente anteriormente, el script
bootstrap descargará todos los archivos necesarios. Creo que no
hace falta decir que sólo funcionará si tiene conexión a Internet :-)
Si quiere descargar primero el código fuente y después instalar la base
del sistema (por si no quiere tener la conexión a
Internet abierta durante la compilación) use la opción -f del script
bootstrap, la cual descargará todo el código fuente (la letra 'f' viene del
verbo ingles fetch = "ir a buscar").
Listado de Código 3.1: Descargando el código fuente necesario |
# cd /usr/portage
# scripts/bootstrap.sh -f
|
Instalando la base del sistema (bootstrap)
Bien, coja el teclado y teclee los siguientes comandos para empezar
la instalación. Mientras, distráigase con alguna cosa porque este paso
tardará un ratito largo.
Listado de Código 3.2: Instalando la base del sistema |
# cd /usr/portage
# scripts/bootstrap.sh
|
Siga con Pasando de stage2 a stage3.
6.d. Pasando desde stage2 a stage3
Introducción
Si está leyendo esta sección, significa que tiene un sistema con la
instalación de la base realizada (ya sea porque lo hizo anteriormente o porque
esté usando el stage2). Es el momento de compilar todos los
paquetes del sistema.
¿Todos los paquetes del sistema? Realmente no. En este paso compilará
los paquetes del sistema para los cuales no hay otra alternativa a usar.
Algunos paquetes del sistema tienen varias alternativas (como los
gestores de registro del sistema) y Gentoo da la oportunidad de
elegir, no queremos forzarle a usar uno.
Opcional: Viendo que va a suceder
Si quiere saber que paquetes serán instalados, ejecute emerge
--pretend system. Esto le mostrará un listado con todos los
paquetes que serán compilados. Como esta lista es algo extensa, puede
usar un paginador como less o more para moverse por ella.
Listado de Código 4.1: Ver que hará 'emerge system' |
# emerge --pretend system | less
|
Opcional: Descargando el código fuente
Si lo desea, emerge puede descargar todo el código fuente
antes de continuar (por si no quiere tener le conexión activa mientras
compilas el sistema). Puede usar la opción --fetchonly de emerge
la cual descargará todo el código fuente por usted.
Listado de Código 4.2: Descargando el código fuente |
# emerge --fetchonly system
|
Compilando el sistema
Para empezar a compilar el sistema, ejecuta emerge system.
Ahora puede hacer cualquier cosa para mantener su mente ocupada
(como leer), porque este paso tardará un buen rato en terminar.
Listado de Código 4.3: Compilando el Sistema |
# emerge system
|
Puede, por ahora, ignorar tranquilamente cualquier aviso sobre la
actualización de los archivos de configuración (y la ejecución de
etc-update). Cuando su sistema Gentoo esté completamente
instalado y funcionando, por favor lea nuestra documentación sobre
Protección de archivos
de configuración.
Cuando la compilación haya concluido, continúe con Configurando el Kernel.
7. Configurando el Kernel
7.a. Zona Horaria
Primero necesita seleccionar su zona horaria para que su sistema sepa
dónde está localizado. Busque su zona horaria en
/usr/share/zoneinfo, luego haga un vínculo simbólico a
/etc/localtime usando ln:
Listado de Código 1.1: Configurar la Zona Horaria |
# ls /usr/share/zoneinfo
# ln -sf /usr/share/zoneinfo/GMT /etc/localtime
|
7.b. Instalar las Fuentes
Elegir un Kernel
El punto alrededor del cual se construyen todas las distribuciones es
el Kernel de Linux. Es la capa entre los programas de usuario y el
hardware del sistema. Gentoo proporciona a sus usuarios varias fuentes
de kernel. Una lista completa está disponible en la Guía Gentoo del Kernel.
Para los sistemas basados en x86 tenemos, entre otros kernel, las
vanilla-sources (las fuentes predeterminadas del kernel 2.4,
desarrolladas por los desarrolladores del kernel de linux), las
gentoo-sources (kernel 2.4 con parches de caracterísiticas que
mejoran su desempeño), las gentoo-dv-sources (fuentes del
kernel v2.6 con parches que mejoran el desempeño), las
development-sources (fuentes vanilla del kernel 2.6), ...
Si está realizando una instalación sin red, las opciones del kernel
estarán limitadas a las proporcionadas en el CD. Para la versión
2004.s estas son:
- gentoo-sources
- vanilla-sources
- gentoo-dev-sources
- development-sources
Elija sus fuentes de kernel e instálela usando emerge.
Listado de Código 2.1: Instalar unas fuentes del kernel |
# emerge gentoo-sources
|
Cuando vea en /usr/src verá un enlace simbólico llamado
linux apuntando a las fuentes de su kernel. Se asume que
las fuentes instaladas son las gentoo-sources-2.4.26-r6:
Listado de Código 2.2: Ver el enlace a las fuentes del kernel |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux -> linux-2.4.26-gentoo-r6
|
Si no es su caso (por ej. los enlaces apuntan a unas fuentes de kernel
diferentes) cambie el enlace simbólico antes de continuar:
Listado de Código 2.3: Cambiar el en enlace a las fuentes del kernel |
# rm /usr/src/linux
# cd /usr/src
# ln -s linux-2.4.26-gentoo-r6 linux
|
Ahora vamos a configurar y compilar las fuentes del kernel. Puede usar
para esto genkernel, que construirá un kernel genérico como el
usado por el LiveCD. Aquí explicaremos la configuración "manual", ya
que es la mejor manera de optimizar su entorno.
Si quiere configurar manualmente su kernel, continue con Predeterminado: Configuración Manual. En cambio,
si quiere usar genkernel debe leer Alternativa: Usar genkernel.
7.c. Predeterminado: Configuración Manual
Introducción
Configurar manualmente un kernel frecuentemente se ve como el
procedimiento más difícil que tiene que realizar un usuario de
Linux. Nada mas lejos de la verdad -- después de configurar un par de
kernels no recordará si fue difícil ;)
Sin embargo, una cosa es cierta: debe conocer su sistema cuando
empiece a configurar su kernel manualmente. Mucha información se puede
recolectar viendo el contenido de /proc/pci (o usando
lspci si está disponible). Tambien puede correr lsmod
para ver que módulos del kernel usa el LiveCD (puede proporcionarle
buenos consejos sobre qué habilitar).
Ahora vaya al directorio de sus fuentes y ejecute make
menuconfig. Esto lanzará un menú de configuración basado en
ncurses.
Listado de Código 3.1: Invocar a menuconfig |
# cd /usr/src/linux
# make menuconfig
|
Le darán la bienvenida varias secciones de configuración. Listaremos
primero algunas opciones que debe activar (de otro modo Gentoo no
funcionará, o no funcionará adecuadamente sin configuración
adicional).
Activar Opciones Necesarias
Primero que nada, active el uso de código y dispositivos en desarrollo
y experimentales. Esto es necesario, porque algunos dispositivos o
código importante no se verá:
Listado de Código 3.2: Seleccionar código/dispositivo expremiental |
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
|
Asegúrese de compilar su kernel para la familia correcta de procesadores:
Listado de Código 3.3: Seleccionar la familia de procesador correcta |
Processor type and features --->
(Athlon/Duron/K7) Processor family
|
Vaya ahora a File Systems y seleccione los soportes para los
sistemas de achivos que use. No los compile como módulos, de
otro modo su sistema Gentoo no será capaz de montar sus
particiones. También seleccione Virtual memory, /dev file
system + Automatically mount at boot:
Listado de Código 3.4: Seleccionar los sistemas de archivos necesarios |
File systems --->
[*] Virtual memory file system support (former shm fs)
[*] /proc file system support
[*] /dev file system support (EXPERIMENTAL)
[*] Automatically mount at boot
[ ] /dev/pts file system for Unix98 PTYs
File systems --->
Pseudo Filesystems --->
[*] /proc file system support
[*] /dev file system support (OBSOLETE)
[*] Automatically mount at boot
[*] Virtual memory file system support (former shm fs)
<*> Reiserfs support
<*> Ext3 journalling file system support
<*> JFS filesystem support
<*> Second extended fs support
<*> XFS filesystem support
|
Si su BIOS no puede manejar discos duros grandes y reporta un tamaño limitado, debe habilitar la siguiente
opción para tener acceso al disco duro completo:
Listado de Código 3.5: Seleccionar soporte para redimensionamiento automático por geometría |
ATA/IDE/MFM/RLL support --->
IDE, ATA and ATAPI Block devices --->
<*> Include IDE/ATA-2 DISK support
[ ] Use multi-mode by default
[*] Auto-Geometry Resizing support
|
Si está usando PPPoE para conectarse a Internet o está usando un modem
dial-up, necesitará las siguientes opciones en el kernel:
Listado de Código 3.6: Seleccionar los controladores PPPoE necesarios |
Network device support --->
<*> PPP (point-to-point protocol) support
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
Device Drivers --->
Networking support --->
<*> PPP (point-to-point protocol) support
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
|
Las dos opciones de compresión no lo afectan pero no son necesarias,
ni para la opciónPPP over Ethernet, tal vez solo sea usada por
rp-pppoe cuando configure un kernel en modo PPPoE.
Si lo requiere, no olvide incluir el soporte en el kernel para su
tarjeta ethernet:
Si tiene un CPU Intel que soporte HyperThreading (tm), o tiene un
sistema multi-CPU, debe activar "Symmetric multi-processing support":
Listado de Código 3.7: Activar el soporte SMP |
Processor type and features --->
[*] Symmetric multi-processing support
|
Si usa dispositivos de entrada USB (como un ratón o teclado) no olvide
activarlos también:
Listado de Código 3.8: Activar Soporte para Dispositivos de Entrada USB |
USB Support --->
<*> USB Human Interface Device (full HID) support
|
Los usuarios de laptops que quieran soporte PCMCIA no deben usar
los controladores PCMCIA si eligen usar un kernel 2.4. Controladores
más recientes están disponibles a través del paquete pcmcia-cs
que será instalado después. Los usuarios de kernel 2.6 sin embargo, si
deben usar los controladores PCMCIA desde el kernel.
Cuando haya terminado de configurar el kernel, continue con Compilar e Instalar.
Compilar e Instalar
Ahora que ya está configurado su kernel, es hora de compilarlo e
instalarlo. Salga de la configuración y ejecute make dep &&
make bzImage modules modules_install:
Listado de Código 3.9: Compilar el kernel |
# make dep && make bzImage modules modules_install
# make && make modules_install
|
Cuando el kernel ha terminado de compilar, copie la imagen a
/boot. De aquí en adelante asumimos que el kernel que
está instalando es la versión 2.4.26 de las gentoo-sources. Use
el nombre que le parezca apropiado y recuerde que lo necesitará
después cuando configure el gestor de arranque.
Listado de Código 3.10: Instalar el kernel |
# cp arch/i386/boot/bzImage /boot/kernel-2.4.26-gentoo-r6
# cp System.map /boot/System.map-2.4.26-gentoo-r6
|
También sería bueno que copiara el archivo de configuración del
kernel a /boot, por si acaso :)
Listado de Código 3.11: Respaldar la configuración del kernel |
# cp .config /boot/config-2.4.26-gentoo-r6
|
Ahora continue con Instalar Módulos del
Kernel Separadamente.
7.d. Alternativa: Usar genkernel
Si está leyendo esta sección, eligió usar nuestro guión
genkernel para configurar el kernel.
Ahora que el árbol de las fuentes del kernel está instalado, es hora
de compilarlo usando nuestro guión genkernel que automáticamente
construirá un kernel. genkernel trabaja
configurando un kernel prácticamente idéntico al kernel de nuestro LiveCD. Esto significa que cuando use
genkernel para construir su kernel, su sistema generalmente
detectará todo su hardware en el arranque, tal como lo hace el
LiveCD. Debido a que genkernel no requiere ningúna configuración manual
del kernel, es una solución ideal para esos usuarios que no se sienten
cómodos compilando sus propios kernels.
Ahora, veamos como usar genkernel. Primero, haga emerge al ebuild de
genkernel:
Listado de Código 4.1: Instalando genkernel |
# emerge genkernel
|
Ahora, compile las fuentes de su kernel ejecutando genkernel
all. Recuerde que como genkernel compila un kernel que
soporta casi todo el hardware, esta compilación ¡tardará un rato en
terminar!
Observe que si su partición de arranque no usa ext2 o ext3 como
sistema de archivos, necesitará configurar manualmente su kernel
usando genkernel --menuconfig all y agregar soporte para su
sistema de archivos en el kernel (no como módulo).
Listado de Código 4.2: Ejecutar genkernel |
# genkernel all
|
Una vez que genkernel haya terminado, un kernel, un conjunto
completo de módulos y un disco raíz de inicio (initrd) serán
creados. Usaremos el kernel e initrd para configurar un gestor de
arranque mas tarde en este documento. Escriba los nombres del kernel y
de initrd ya que los necesitará para el archivo de configuración del
gestor de arranque. El initrd iniciará inmediatamente después del
arranque para realizar la autodetección de hardware (tal como en el LiveCD) antes que inicie su sistema "real".
Listado de Código 4.3: Verificar los nombres del kernel e initrd creados |
# ls /boot/kernel* /boot/initrd*
|
Ahora vamos a realizar un paso más para que nuestro sistema sea mas
parecido al LiveCD -- vamos a instalar hotplug. Mientras initrd
autodetecta el hardware necesario para arrancar su sistema,
hotplug autodetecta todo lo demás. Para instalar y habilitar
hotplug, escriba lo siguiente:
Listado de Código 4.4: Instalar y habilitar hotplug |
# emerge hotplug
# rc-update add hotplug default
|
7.e. Instalar Módulos del Kernel Separadamente
Instalar Módulos Adicionales
Sí es apropiado, debe instalar ebuilds para el hardware
adicional en su sistema. A continuación se muestra una
lista de ebuilds relacionados con el kernel que podría instalar:
| Ebuild |
Propósito |
Comando |
| nvidia-kernel |
Aceleración de gráficos NVIDIA para xorg-x11 |
emerge nvidia-kernel |
| nforce-audio |
Placas madre con audio NVIDIA NForce(2) |
emerge nforce-audio |
| e100 |
Adaptadores Intel e100 Fast Ethernet |
emerge e100 |
| e1000 |
Adptadores Intel e1000 Gigabit Ethernet |
emerge e1000 |
| emu10k1 |
Soporte para Creative Sound Blaster Live!/Audigy support (solo kernels 2.4) |
emerge emu10k1 |
| ati-drivers |
Aceleración de gráficos ATI Radeon 8500+/FireGL para xorg-x11 |
emerge ati-drivers |
| ati-drivers-extra |
Herramientas gráficas ATI |
emerge ati-drivers-extra |
Tenga cuidado, algunos de esos ebuild pueden tener grandes
dependencias. Para verificar que paquetes serán instalador al instalar
un ebuild, use emerge --pretend. Por ejemplo, para el paquete
emu10k1:
Listado de Código 5.1: Ver el listado completo de paquetes a instalar |
# emerge --pretend emu10k1
|
Si no le gustan los paquetes que se instalarán, use emerge
--pretend --verbose para ver que parámetros USE están activados
cuando decide las dependencias:
Listado de Código 5.2: Ver el uso de parámetros USE |
# emerge --pretend --verbose emu10k1
[ebuild N ] media-sound/aumix-2.8 +gpm +nls +gtk +gnome +alsa -gtk2
|
En el ejemplo anterior puede ver que una de las dependencias de
emu10k1 (aumix) tiene los parámetros USE gtk y
gnome, lo que hace que gtk (que depende de xorg-x11) también se
compile.
Si no quiere que todo esto se compile, desmarque las parámetros USE, por
ejemplo:
Listado de Código 5.3: Instalar emu10k1 con todas los parámetros USE desmarcados |
# USE="-gpm -nls -gtk -gnome -alsa" emerge --pretend emu10k1
|
Cuando esté contento con los resultados, remueva el --pretend
para empezar a instalar emu10k1.
Configurar los Módulos
Debe listar los módulos que quiera cargar automáticamente en
/etc/modules.autoload.d/kernel-2.4 (o en
kernel-2.6). Puede agregar opciones estra a los módulos
si lo desea.
Para ver todos los módulos disponibles, ejecute el comando
find. No olvide sustituir "<versión del kernel>" con la
versión del kernel que acaba de compilar:
Listado de Código 5.4: Ver todos los módulos disponibles |
# find /lib/modules/<versión del kernel>/ -type f -iname '*.o' -or -iname '*.ko'
|
Por ejemplo, para cargar automáticamente el módulo 3c59x.o,
edite el archivo kernel-2.4 o kernel-2.6 y
escriba el nombre del módulo ahí.
Listado de Código 5.5: Editar /etc/modules.autoload.d/kernel-2.4 |
# nano -w /etc/modules.autoload.d/kernel-2.4
|
Listado de Código 5.6: /etc/modules.autoload.d/kernel-2.4 ó kernel-2.6 |
3c59x
|
Ahora ejecute modules-update para enviar los cambios al archivo
/etc/modules.conf:
Listado de Código 5.7: Ejecutar modules-update |
# modules-update
|
Continúe la instalación con Configurar
su Sistema.
8. Configurando su Sistema
8.a. Información del Sistema de Ficheros
¿Qué es el fstab?
En linux, todas las particiones usadas por el sistema deben estar reflejadas en
/etc/fstab. Este fichero contiene los puntos de montaje de esas
particiones (donde se encuentran en la estructura del sistema de ficheros),
cómo deben ser montadas y con que opciones especiales (automáticamente o no,
si los usuarios pueden montarlas o no, etc.).
Creando el /etc/fstab
/etc/fstab usa una sintaxis especial. Cada línea está formada por
seis campos, separados por espacios en blanco (espacio(s), tabuladores o una
combinación). Cada campo tiene su propio significado:
-
El primer campo muestra la partición descrita (la ruta al fichero de
dispositivo)
-
El segundo campo muestra el punto de montaje donde la partición debe
montarse
-
El tercer campo muestra el sistema de ficheros usado por la partición
-
El cuarto campo muestra las opciones de montaje usadas por
mount cuando trata de montar la partición. Como cada sistema de
ficheros tiene sus propias opciones de montaje, le animamos a leer la página
man de mount (man mount) para un listado completo. Cuando existen
múltiples opciones se separan por comas.
-
El quinto campo es usado por dump para determinar si la partición
requiere ser volcada o no. En general puede dejar esto como 0 (cero).
-
El sexto campo es usado por fsck para determinar el orden en que los
sistemas de ficheros deben ser comprobados si el sistema no se apagó
correctamente. La partición raíz debe tener un 1 mientras que el resto
puede tener 2 (o 0 en el caso en que la comprobación del
sistema de ficheros no sea necesaria).
El archivo /etc/fstab que proporciona Gentoo de manera predeterminada no es un archivo fstab válido, así que ejecute nano (o su editor favorito) para crear su propio /etc/fstab:
Listado de Código 1.1: Abriendo /etc/fstab |
# nano -w /etc/fstab
|
Vamos a ver como anotaremos las opciones para la partición /boot
. Esto es solo un ejemplo, así que si su arquitectura no requiere una partición
/boot (como por ejemplo PPC), no lo copie al pie de la letra.
En nuestro ejemplo de particionamiento estándar para x86, /boot
es la partición /dev/hda1, con un sistema de ficheros ext2.
Esta necesita ser comprobada durante el arranque. Entonces escribiríamos:
Listado de Código 1.2: Un ejemplo de línea /boot para /etc/fstab |
/dev/hda1 /boot ext2 defaults 1 2
|
Algunos usuarios no quieren que su partición /boot sea montada
automáticamente para mejorar la seguridad de su sistema. Estos usuarios
deberían sustituir defaults por noauto. Esto implica la
necesidad de montar manualmente la partición cada vez que se quiera usarla.
Para aumentar el rendimiento, la mayoría de usuarios podrían querer agregar la
opción noatime como opción de montaje, que desemboca en un sistema más
rápido, puesto que los tiempos de acceso no son registrados (de todas formas,
no necesitará esto en general):
Listado de Código 1.3: Una línea /boot mejorada para /etc/fstab |
/dev/hda1 /boot ext2 defaults,noatime 1 2
|
Si seguimos estos pasos, acabaríamos con las siguientes tres líneas (para
/boot, / y la partición de swap):
Listado de Código 1.4: Tres líneas del /etc/fstab |
/dev/hda1 /boot ext2 defaults,noatime 1 2
/dev/hda2 none swap sw 0 0
/dev/hda3 / ext3 noatime 0 1
|
Para finalizar, debería agregar una línea para /proc, tmpfs
(requerido) y sus dispositivos CD-ROM (y por supuesto, si tiene otras
particiones o dispositivos, para ellos también):
Listado de Código 1.5: Un ejemplo de /etc/fstab completo |
/dev/hda1 /boot ext2 noauto,noatime 1 2
/dev/hda2 none swap sw 0 0
/dev/hda3 / ext3 noatime 0 1
none /proc proc defaults 0 0
none /dev/shm tmpfs nodev,nosuid,noexec 0 0
/dev/cdroms/cdrom0 /mnt/cdrom auto noauto,user 0 0
|
auto provoca que mount intente adivinar el sistema de archivos
(se recomienda para los dispositivos extraíbles ya que pueden ser creados con
distintos sistemas de ficheros) y user hace posible a los usuarios que
no pertenezcan a root monten el CD.
Ahora haga uso del ejemplo anterior, para crear su /etc/fstab.
Si es un usuario de SPARC, además debería añadir la siguiente línea a su
/etc/fstab:
Listado de Código 1.6: Añadiendo el sistema de ficheros openprom al /etc/fstab |
none /proc/openprom openpromfs defaults 0 0
|
Si necesita usbfs, Añada la siguiente línea al /etc/fstab:
Listado de Código 1.7: Añadiendo el sistema de ficheros usbfs al /etc/fstab |
none /proc/bus/usb usbfs defaults 0 0
|
Repase su /etc/fstab, guarde los cambios y salga para continuar.
8.b. Información de red
Nombre de Host, Nombre de Dominio, etc.
Una de las elecciones que un usuario ha de hacer es el nombre de su PC. Esto
parece muy fácil, pero muchos usuarios tienen dificultades eligiendo el
nombre apropiado para su PC-Linux. Para acelerar las cosas, sepa que el nombre
que elija puede cambiarlo mas tarde. Para el caso que nos preocupa, usted puede
llamar su sistema simplemente tux y su dominio redcasera.
Usaremos esos nombres en los siguientes ejemplos. Primero ajustaremos el nombre
de host:
Listado de Código 2.1: Ajustando el nombre de Host |
# echo tux > /etc/hostname
|
En segundo lugar ajustaremos el nombre del dominio:
Listado de Código 2.2: Ajustando el nombre de Host |
# echo homenetwork > /etc/dnsdomainname
|
Si dispone de un dominio NIS (si no sabe lo que es, entonces no lo tiene),
necesita definirlo también:
Listado de Código 2.3: Ajustando el nombre del dominio NIS |
# echo nis.homenetwork > /etc/nisdomainname
|
Ahora añada el script domainname al nivel de arranque por defecto:
Listado de Código 2.4: Agregando domainname al nivel de arranque por defecto |
# rc-update add domainname default
|
Configurando su Red
Antes de llegar a experimentar esa sensación "Hey, ya lo tengo todo", debes
recordar que la red que configuraste en el inicio de la instalación de Gentoo
fue tan solo para la instalación. A partir de ahora vamos a configurar la red
permanentemente para su sistema Gentoo.
Toda la información de red esta reunida en /etc/conf.d/net. Este
fichero usa una directa, aunque no intuitiva sintaxis si no se sabe como
configurar una red manualmente. Pero no se asuste, se lo explicaremos todo :)
Primero abra /etc/conf.d/net con su editor favorito (Se usará
nano en este ejemplo):
Listado de Código 2.5: Abriendo /etc/conf.d/net para su edición |
# nano -w /etc/conf.d/net
|
La primera variable que encontrará es iface_eth0. Utilice la siguiente
sintaxis:
Listado de Código 2.6: Sintaxis de la variable iface_eth0 |
iface_eth0="<su dirección ip> broadcast <su dirección broadcast> netmask <su máscara de red>"
|
Si usa DHCP (obtención automática de IP), debe asignar la variable
iface_eth0 a dhcp. No obstante, si necesita configurar su red
manualmente y no está familiarizado con los términos usados, por favor lea la
sección Entendiendo la
terminología de red si no lo ha hecho ya.
Déjenos darle tres ejemplos; el primero usa DHCP, el segundo IP estática
(192.168.0.2) con la máscara de red 255.255.255.0, broadcast 192.168.0.255 y
la pasarela 192.168.0.1, mientras el tercero únicamente activa la interfaz
para utilizar rp-pppoe:
Listado de Código 2.7: Ejemplos de /etc/conf.d/net |
iface_eth0="dhcp"
dhcpcd_eth0="-HD"
dhcpcd_eth0="-N"
iface_eth0="192.168.0.2 broadcast 192.168.0.255 netmask 255.255.255.0"
gateway="eth0/192.168.0.1"
iface_eth0="up"
|
Si posee distintas interfaces de red, cree variables iface_eth adicionales,
como iface_eth1, iface_eth2 etc. La variable gateway
no debe ser redefinida ya que solo puede asignar una pasarela por computadora.
Ahora guarde la configuración y salga para continuar.
Inicio automático de red en el arranque
Para disponer de su interfaz de red activada en el arranque, necesita agregarla
al nivel de ejecución por defecto (default). Si dispone de interfaces PCMCIA
debe saltarse este paso puesto que las interfaces PCMCIA son iniciadas por el
script de inicialización PCMCIA
Listado de Código 2.8: Agregando net.eth0 al nivel de ejecución default |
# rc-update add net.eth0 default
|
Si tiene distintas interfaces de red, necesitara crear los apropiados
net.eth1, net.eth2 etc. scripts de inicio. Puede
usar ln para hacer esto:
Listado de Código 2.9: Creando scripts de inicio adicionales |
# cd /etc/init.d
# ln -s net.eth0 net.eth1
# rc-update add net.eth1 default
|
Anotando la Información de la Red
Necesita informar a Linux sobre su red. Esto se define en
/etc/hosts y ayuda a transformar los nombres de host a
direcciones IP para aquellas máquinas que no se resuelven a través de su
servidor de nombres (DNS). Por ejemplo, si su red interna consiste en tres
PCs llamados jenny (192.168.0.5), benny (192.168.0.6) y
tux (192.168.0.7 - este sistema) abra /etc/hosts y
complete los valores:
Listado de Código 2.10: Abriendo /etc/hosts |
# nano -w /etc/hosts
|
Listado de Código 2.11: Completando la información de red |
127.0.0.1 localhost
192.168.0.5 jenny.redlocal jenny
192.168.0.6 benny.redlocal benny
192.168.0.7 tux.redlocal tux
|
Si su sistema es el único presente (o los servidores de nombres se encargan
de todas las resoluciones) una única línea es suficiente. Por ejemplo, si quiere
llamar a su sistema tux.homenetwork:
Listado de Código 2.12: /etc/hosts para un solo PC o varios plenamente integrados |
127.0.0.1 tux.homenetwork tux localhost
|
Guarde y salga del editor para continuar.
Si no tiene PCMCIA, puede continuar con Información del Sistema. Los usuarios de PCMCIA
deberían leer el siguiente apartado sobre PCMCIA.
Opcional: Hacer funcionar el PCMCIA
Nota:
pcmcia-cs está solamente disponible para plataformas x86, amd64 y ppc.
|
Los usuarios de PCMCIA deben instalar primero el paquete pcmcia-cs.
Esto también incluye a los usuarios que estén trabajando con un kernel 2.6
(incluso aunque no quieran utilizar los controladores PCMCIA de este paquete).
El empleo de USE="-X" es necesario para evitar la instalación de
xorg-x11 en este momento.
Listado de Código 2.13: Instalando pcmcia-cs |
# USE="-X" emerge pcmcia-cs
|
Cuando pcmcia-cs esté instalado, agregue pcmcia al nivel de
arranque default:
Listado de Código 2.14: Agregando pcmcia al nivel de arranque por defecto |
# rc-update add pcmcia default
|
8.c. Información del sistema
Contraseña de administrador (Root)
Primero fijamos la contraseña de administrador escribiendo:
Listado de Código 3.1: Configurando la contraseña de administrador |
# passwd
|
Si desea que el administrador sea capaz de entrar en el sistema a través de
un consola de serie (tts), añada tts/0 al fichero /etc/securetty:
Listado de Código 3.2: Añadiendo tts/0 a /etc/securetty |
# echo "tts/0" >> /etc/securetty
|
Información del sistema
Gentoo usa el fichero /etc/rc.conf para una configuración general
del sistema. Abra el /etc/rc.conf y disfrute de todos los
comentarios que hay en él :)
Listado de Código 3.3: Abriendo el fichero /etc/rc.conf |
# nano -w /etc/rc.conf
|
Como puede ver, este fichero está bien comentado para ayudarle a ajustar las
variables de configuración necesarias. Tenga especial cuidad con KEYMAP:
si selecciona un KEYMAP incorrecto, conseguirá extraños resultados
escribiendo en su teclado.
Nota:
Los usuarios de sistemas SPARC basados en USB y los clones de SPARC podrían
necesitar seleccionar un mapeo del teclado i386 (como "su") en vez de utilizar
"sunkeymap".
|
PPC utiliza mapeos de teclado x86 en la mayoría de sus sistemas. Los usuarios
que quieren disponer de mapeos ADB en el arranque, necesitan activar "ADB keycode
sendings" en su kernel y tener configurado un mapeo de teclado mac/ppc en
rc.conf.
Cuando haya acabado de configurar el /etc/rc.conf, guarde y salga,
entonces puede continuar con Instalando las
herramientas de sistema necesarias .
9. Instalando Herramientas Necesarias para el Sistema
9.a. Bitácora del Sistema
Cuando mencionamos que era la stage3, dijimos que contenía todas las
herramientas del sistema necesarias para las cuales no podíamos proporcionar
una opción para nuestro usuarios. También dijimos que instalaríamos otras
herramientas mas tarde. Bueno, aquí están :)
La primera herramienta por la que tiene que decidirse es la que proporciona el
registro y las bitácoras para su sistema. Unix y Linux tienen una excelente
historia en sus capacidades de registros -- si lo quisiera podría registrar todo
lo que pasa en su sistema en bitácoras. Esto sucede con el registro del
sistema.
Gentoo ofrece varios sistemas de registro para elegir. Están sysklogd,
que es el conjunto tradicional de demonios de bitácoras, sysklogd, un
sistema de bitácora avanzado, y metalog que es una bitácora de sistemas
altamente configurable. También puede haber otros en el Portage - el número de
paquetes disponbles crece día a día.
Si no puede decidirse, use metalog que además de ser muy poderos, viene
con una gran configuración predeterminada.
Para instalar la bitácora del sistema de su elección, use emerge y agrégelo
al nivel de arrenque predeterminado usando rc-update. El siguiente ejemplo
instala metalog. Desde luego, sustitúyalo por el sistema de bitácora de
su elección:
Aviso:
Los tarballs stage3 de la versión 2004.2 contienen erróneamente la bitacora
sysklogd. Necesitará des-emerger este sistema de bitácoras antes de emerger uno
nuevo.
|
Listado de Código 1.1: Instalar un sistema de bitácoras |
# emerge unmerge sysklogd
# rm /etc/init.d/sysklogd
# emerge metalog
# rc-update add metalog default
|
9.b. Opcional: Demonio Cron
El siguiente es el demonio cron. Aunque es opcional y no lo requiere su sistema
es recomendable instalar uno. ¿Pero que es un demonio cron? Un demonio cron
ejecuta comandos en horarios planificados. Es muy cómodo si necesita ejecutar
comandos regularmente (por ejemplo diario, cada semana o mensualmente).
Gentoo ofrece tres posibles demonios cron: dcron, fcron y
vixie-cron. Instalar cualquiera es similar a instalar un sistema de
bitácoras. Sin embargo dcron y fcron requieren un comando extra
de configuración, que es crontab /etc/crontab. Si no sabe cuál escoger,
use vixie-cron.
Solo poroporcionamos vixie-cron para instalaciones sin red. Si quiere
otro demonio cron puede esperar e instalarlo más tarde.
Listado de Código 2.1: Instalar un demonio cron |
# emerge vixie-cron
# rc-update add vixie-cron default
# crontab /etc/crontab
|
9.c. Opcional: Indexar Archivos
Si quiere crear un índice de su sistema de archivos para habilitar su rápida
localización usando la herramienta locate, necesita instalar
sys-apps/slocate.
Nota:
Si usted no está instalando Gentoo usando perfiles en cascada slocate será
parte de su sistema. Los perfiles en cascada no se usan de manera
predeterminada todavía así que si no entiende de que se trata podemos asumir
que no los está usando.
|
Listado de Código 3.1: Instalar slocate |
# emerge slocate
|
9.d. Herramientas del Sistema de Archivos
Dependiendo en que sistema de archivos este usando, necesita instalar las
utilerías necesarias (para verificar la integridad del sistema de archivos,
crear adicionales, etc.).
La siguiente table enlista las herramientas que necesita instalar según un
sistema de archivos determinado:
| Sistema de Archivos |
Herramienta |
Comando para Instalar |
| XFS |
xfsprogs |
emerge xfsprogs |
| ReiserFS |
reiserfsprogs |
emerge reiserfsprogs |
| JFS |
jfsutils |
emerge jfsutils |
Si no necesita ninguna herramienta adicional relacionada con la red (como
rp-pppoe o un cliente dhcp) continue con
Configuración del Cargador de Arranque.
9.e. Herramientas de Red
Opcional: Instalar un Cliente DHCP
Si necesita que Gentoo obtenga automáticamente una dirección IP para sus
interfaces de red, necesita instalar en su sistema dhcpcd (o cualquier
otro cliente DHCP) . Si no lo hace, ¡tal vez no sea capz de conectarse a
Internet después de la instalación!
Nota:
Si no está instalando Gentoo usando perfiles en cascada dhcpcd ya será parte de
su sistema. Los perfiles en cascada no se usan de manera
predeterminada todavía así que si no entiende de que se trata podemos asumir
que no los está usando.
|
Listado de Código 5.1: Instalar dhcpcd |
# emerge dhcpcd
|
Opcional: Instalar un Cliente PPPoE
Si necesita rp-pppoe para conectarse a la red, necesita instalarlo.
Listado de Código 5.2: Instalar rp-pppoe |
# USE="-X" emerge rp-pppoe
|
El USE="-X" le prohibe a xorg-x11 instalarse como una dependencia
(rp-pppoe tiene herramientas gráficas; si quiere habilitarlas, puede
recompilar rp-pppoe más tarde o cuando xorg-x11 ya esté instalado --
porque toma mucho tiempo en compilarse).
Ahora continúe con Configurar el Cargado de
Arranque.
10. Configurando el Gestor de Arranque
10.a. Realizando su elección
Introducción
Ahora que su kernel está configurado y compilado y los archivos de
configuración necesarios han sido llenados correctamente, ha llegado
la hora de instalar el programa que iniciará el kernel cuando arranque
el sistema. Este programa es conocido como gestor de arranque.
Para x86, Gentoo dispone de GRUB y LILO.
Pero antes de instalar uno de los dos gestores de arranque, le informaremos
sobre como configurar la memoria de imagen (framebuffer) , siempre que
usted quiera, claro. Con la memoria de imagen puede ejecutar la línea de
comandos de Linux con algunas características gráficas (limitadas) como,
por ejemplo, el empleo de un bonita imagen de Gentoo durante el inicio
(bootsplash)
Opcional: Memoria de imagen (Framebuffer)
Si ha configurado su kernel con soporte framebuffer (o ha utilizado
la configuración predeterminada de genkernel) debe
agregar un enunciado vga (si usa un kernel de la serie 2.4) o
video (si tiene un kernel de la serie 2.6) al archivo de configuración
del gestor de inicio. La siguiente tabla lista los valores vga
disponibles. En el archivo de configuración usado como ejemplo
queremos 800x600 @ 16bpp, por ende este valor será 788.
Para el enunciado vga:
|
640x480 |
800x600 |
1024x768 |
1280x1024 |
| 8 bpp |
769 |
771 |
773 |
775 |
| 16 bpp |
785 |
788 |
791 |
794 |
| 32 bpp |
786 |
789 |
792 |
795 |
Para el enunciado video, utilizamos una sintaxis simplificada. En la
mayoría de los casos es suficiente emplear video=vesafb.
Puede encontrar más información en
/usr/src/linux/Documentation/fb/vesafb.txt.
Recuerde (o anote) este valor, lo necesitará dentro de poco.
Ahora continué con la instalación de GRUB o LILO.
10.b. Por defecto: Usando GRUB
Comprendiendo la terminología de GRUB
La parte más crítica para la comprensión de GRUB, es el habituarse
a la manera en que GRUB se refiere a los discos duros y las
particiones. Su partición Linux /dev/hda1 es denominada
(hd0,0) por GRUB. Note los paréntesis alrededor de
hd0,0, que son obligatorios.
La numeración de los discos duros comienza con un cero, en lugar de utilizar
una "a" y las particiones empiezan con cero en lugar de con un uno.
Advertimos también que entre los dispositivos hd, sólo se cuentan los discos
duros y no los dispositivos atapi-ide como cdroms y grabadoras. Además, la
especificación es igual para dispositivos scsi. (Usualmente son
asignados números mayores, excepto cuando el bios está configurado para
arrancar desde los dispositivos scsi).
Asumiendo que tiene un disco duro en /dev/hda, un lector
de cdrom en /dev/hdb, una grabadora en
/dev/hdc, un segundo disco duro en /dev/hdd
y ningún disco duro scsi, la partición /dev/hdd7 que
descrita como (hd1,6). A lo mejor puede sonar raro y bien
podría serlo, pero como veremos, GRUB ofrece un mecanismo de
terminación por tabulador que es de gran ayuda para los que tienen una
gran cantidad de discos duros y que andan algo perdidos con este
esquema de numeración.
Habiéndole tomado la medida, es hora de instalar GRUB.
Instalando GRUB
Para instalar GRUB, primero lo instalamos con emerge:
Listado de Código 2.1: Instalando GRUB |
# emerge grub
|
Aunque GRUB esté instalado, todavía necesitamos crear un archivo de
configuración para él e instalar GRUB en nuestro MBR para que pueda
arrancar automáticamente nuestro kernel recién creado. Cree el archivo
/boot/grub/grub.conf con nano, o cualquier otro
editor:
Listado de Código 2.2: Creando el archivo /boot/grub/grub.conf |
# nano -w /boot/grub/grub.conf
|
Ahora vamos a escribir el grub.conf. A continuación
encontrará dos posibles archivos grub.conf para el
ejemplo de particiones que manejamos en esta guía, con una imagen
de kernel kernel-2.4.26-gentoo-r6. Sólo hemos comentado
exhaustivamente el primer grub.conf. Asegúrese de utilizar
el nombre de su archivo de imagen del kernel y, si
es necesario, el nombre de su imagen initrd.
-
El primer grub.conf es para quienes no hayan usado
genkernel para construir su kernel
-
El segundo grub.conf es para quienes hayan utilizado
genkernel para construir su kernel.
Listado de Código 2.3: grub.conf para quienes no hayan usado genkernel |
default 0
timeout 30
splashimage=(hd0,0)/grub/splash.xpm.gz
title=Gentoo Linux 2.4.26-r6
root (hd0,0)
kernel /kernel-2.4.26-gentoo-r6 root=/dev/hda3
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1
|
Listado de Código 2.4: grub.conf para usuarios del genkernel |
default 0
timeout 30
splashimage=(hd0,0)/grub/splash.xpm.gz
title=Gentoo Linux 2.4.26-r6
root (hd0,0)
kernel /kernel-2.4.26-gentoo-r6 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3
initrd /initrd-2.4.26-gentoo-r6
title=Windows XP
root (hd0,5)
makeactive
chainloader +1
|
Nota:
Si usa un esquema de particiones y/o imagen de kernel distinta, haga
los ajustes respectivos. Sin embargo, asegúrese que cualquier cosa que
siga un dispositivo GRUB (tal como (hd0,0)) sea relativa
al punto de montaje y no de la raíz. En otras palabras,
(hd0,0)/grub/splash.xpm.gz es en realidad
/boot/grub/splash.xpm.gz ya que (hd0,0) es
/boot.
|
Si necesita pasar algún parámetro adicional al kernel, sencillamente
agréguelo al final de la línea de comando del kernel. Ya estamos
pasando una opción (root=/dev/hda3 o
real_root=/dev/hda3), pero se pueden pasar otras también. Como
ejemplo usamos el enunciado vga para el framebuffer discutido
previamente:
Listado de Código 2.5: Agregando el enunciado vga como parámetro del kernel |
title=Gentoo Linux 2.4.26-r6
root (hd0,0)
kernel /kernel-2.4.26-gentoo-r6 root=/dev/hda3 vga=788
|
Si está utilizando un kernel 2.6.7 o superior y ha puenteado su disco duro
porque la BIOS no puede manejar discos duros grandes, necesitará
añadir hdx=stroke.
Los usuarios de genkernel deben saber que sus kernels usan las
mismas opciones de arranque que el LiveCD. Por ejemplo, si tiene
dispositivos scsi, debería agregar el parámetro doscsi al kernel.
Ahora grabe el archivo grub.conf y salga. Aún necesita instalar
GRUB en el MBR (Master Boot Record) para que GRUB se ejecute automáticamente
cuando arranque su sistema.
Los desarrolladores de GRUB recomiendan utilizar grub-install. Sin embargo,
si por alguna razón grub-install no funciona correctamente todavía tiene
la opción de instalar GRUB manualmente.
Continué con Por defecto: Configurando
GRUB utilizando grub-install o Alternativa: Configurando
GRUB a mano, utilizando instrucciones.
Por defecto: Configurando GRUB utilizando grub-install
Para instalar GRUB necesita ejecutar el comando grub-install. Sin
embargo grub-install no funcionará tal cual se instala, ya que estamos
dentro de un entorno chroot. Antes de seguir, necesitará actualizar
/etc/mtab (el archivo que contiene la información relativa a
todos los sistemas de archivos montados): afortunadamente hay una manera
sencilla de realizar esto, simplemente copie /proc/mounts a
/etc/mtab:
Listado de Código 2.6: Actualizando /etc/mtab |
# cp /proc/mounts /etc/mtab
|
Ahora podemos instalar GRUB utilizando grub-install:
Listado de Código 2.7: Ejecutando grub-install |
# grub-install --root-directory=/boot /dev/hda
|
Si tiene alguna pregunta más acerca de GRUB, por favor consulte el FAQ de GRUB o el Manual de GRUB.
Continué con Reiniciando el sistema.
Alternativa: Configurando GRUB a mano, utilizando instrucciones
Para comenzar a configurar GRUB, debe ejecutar los comandos dentro de grub.
Conocerá al interprete de comandos propio de grub. Ahora necesita ejecutar los
comandos necesarios para instalar el registro de arranque de GRUB en su disco duro.
Listado de Código 2.8: Iniciando el intérprete de comandos de GRUB |
# grub
|
Nota:
Si su sistema no tiene ningún dispositivo de disquetes, añada la opción
--no-floppy al comando anterior para evitar que grub pruebe
los dispositivos (no existentes) de disquetes.
|
En el ejemplo de configuración queremos instalar GRUB para que lea
la información de la partición de arranque /dev/hda1, e
instala el registro de arranque de GRUB en el MBR (Master boot Record)
de su disco duro para que lo primero que veamos aparecer al encender
el ordenador sea GRUB. Por supuesto, si no ha seguido el ejemplo de
configuración durante la instalación, cambie los comandos de acuerdo
a su modelo:
El mecanismo de completar comandos por tabulación de GRUB puede utilizarse
dentro de GRUB. Por ejemplo, si escribe "root (" seguido de una
tabulación, notará que se le presenta una lista de dispositivos (como pueda ser
hd0). Si tecleamos "root (hd0," seguido de una tabulación
recibiremos una lista de particiones disponibles para elegir (como pueda ser
hd0,0).
Utilizando este mecanismo de completar por tabulación, configurar GRUB no
debería resultar tan duro. Ahora vamos a por ello, configuremos GRUB!.
Listado de Código 2.9: Instalando GRUB en el MBR |
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
|
Nota:
Si quiere instalar GRUB en una partición concreta en lugar del MBR,
debe modificar el comando setup para que apunte a la
partición correcta. Por ejemplo, si quiere que GRUB se instale en
/dev/hda3, el comando adecuado sería setup (hd0,2).
Sin embargo, pocos usuarios querrán hacer esto.
|
Si tiene alguna pregunta más acerca de GRUB, por favor consulte el FAQ de GRUB o el Manual de GRUB.
Continué con Reiniciando el sistema.
10.c. Alternativa: Utilizando LILO
Instalando LILO
LILO, representa LInuxLOader, y es el caballito de batalla probado y comprobado
de los gestores de inicio de Linux. Sin embargo, carece de algunas
características de GRUB (razón por la cual GRUB actualmente está
ganando popularidad). La razón por la cual LILO sigue en uso es que en
algunos sistemas, GRUB no funciona mientras que LILO sí. Por supuesto
también se usa porque hay muchos que lo conocen y prefieren seguir con
este gestor. De cualquier manera, Gentoo soporta ambos gestores y
por lo visto, ha elegido usar LILO.
Instalar LILO es fácil, sencillamente use emerge.
Listado de Código 3.1: Instalando LILO |
# emerge --usepkg lilo
|
Configurando LILO
Para configurar LILO, debe crear el archivo
/etc/lilo.conf. Use su editor de textos preferido (en el
manual usamos nano para ser consistentes) y creemos este archivo.
Listado de Código 3.2: Creando /etc/lilo.conf |
# nano -w /etc/lilo.conf
|
Algunas secciones atrás, le pedimos que se acordara del nombre de
la imagen del kernel creado. En el siguiente ejemplo de
lilo.conf asumiremos que el nombre de esta imagen es
kernel-2.4.26-gentoo-r6. También haremos uso del esquema
ejemplo de particionamiento. Hay dos partes separadas:
-
Para los que no hayan usado genkernel para construir su kernel
-
Para los que hayan usado un genkernel para construir su kernel
Asegúrese de utilizar el nombre de su archivo de imagen del kernel y, si
es necesario, el nombre de su imagen initrd.
Listado de Código 3.3: Ejemplo de /etc/lilo.conf |
boot=/dev/hda
prompt
timeout=50
default=gentoo
vga=788
image=/boot/kernel-2.4.26-gentoo-r6
label=gentoo
read-only
root=/dev/hda3
image=/boot/kernel-2.4.26-gentoo-r6
label=gentoo
read-only
root=/dev/ram0
append="init=/linuxrc ramdisk=8192 real_root=/dev/hda3"
initrd=/boot/initrd-2.4.26-gentoo-r6
other=/dev/hda6
label=windows
|
Nota:
Si usa un esquema de particionamiento o imagen de kernel distinta,
haga los ajustes correspondientes.
|
Si hace falta pasar alguna opción adicional al kernel, incluya un
enunciado append a la sección. A modo de ejemplo, agregamos un
enunciado vga=788 para activar framebuffer:
Listado de Código 3.4: Usando append para agregar opciones al kernel |
image=/boot/kernel-2.4.26-gentoo-r6
label=gentoo
read-only
root=/dev/hda3
append="vga=788"
|
Si está utilizando un kernel 2.6.7 o superior y ha puenteado su disco duro
porque la BIOS no puede manejar discos duros grandes, necesitará
añadir hdx=stroke.
Usuarios de genkernel deben saber que sus kernel usan las
mismas opciones de arranque que el LiveCD. Por ejemplo, si tiene
dispositivos SCSI, debe agregar doscsi como opción del kernel.
Ahora, salve el archivo y salga del editor. Para terminar, debe
ejecutar el comando /sbin/lilo para poder aplicar
/etc/lilo.conf a su sistema (que se instale en el disco).
Acuérdese de que debe volver a ejecutar /sbin/lilo cada vez que
instale un nuevo kernel o haga cambios en el menú.
Listado de Código 3.5: Terminando la instalación de LILO |
# /sbin/lilo
|
Ahora puede continuar con Reiniciando el Sistema.
10.d. Reiniciando el Sistema
Salga del entorno chroot y desmonte todas las particiones que continúen
montadas. Después podemos ejecutar el mágico comando que hemos
estado esperando: reboot.
Listado de Código 4.1: Desmontando todas las particiones y reiniciando |
# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot
|
Por supuesto, no olvide quitar el CD arrancable, o el CD será arrancado de
nuevo en lugar de su nuevo sistema Gentoo.
Una vez que haya reiniciado su instalación de Gentoo, termínela con
Finalizando su instalación de Gentoo.
11. Finalizando su Instalación Gentoo
11.a. Administración del Usuario
Añadir un Usuario para uso cotidiano
Trabajar como root en un sistema Unix/Linux es peligroso y su uso
debería evitarse tanto como sea posible. Es por ello que se recomienda
encarecidamente añadir un usuario para el uso cotidiano del sistema.
Los grupos a los que pertenece el usuario definen que actividades puede
realizar. La siguiente tabla muestra una lista de los grupos más importantes
que podría querer utilizar.
| Grupo |
Descripción |
| audio |
para ser capaz de acceder a los dispositivos de audio |
| cdrom |
para poder acceder al cdrom |
| floppy |
para poder acceder a los dispositivos de disquete |
| games |
para poder utilizar los juegos |
| usb |
para poder acceder a los dispositivos USB |
| video |
para acceder al hardware capturador de video y a la aceleración
por hardware
|
| wheel |
para poder utilizar su
|
Por ejemplo, para crear un usuario llamado juan que pertenezca a los
grupos wheel, users y audio, entre en el sistema como
root (sólo root puede crear usuarios) y ejecute useradd:
Listado de Código 1.1: Añadiendo un usuario de uso cotidiano |
Login: root
Password:
# useradd juan -m -G users,wheel,audio,tty -s /bin/bash
# passwd juan
Password:
Re-enter password:
|
Si alguna vez este usuario necesita realizar alguna tarea como root, puede
utilizar su - para obtener temporalmente privilegios de root. Otra
forma es utilizar el paquete sudo el cual, correctamente configurado,
es muy seguro.
11.b. Opcional: Instalar Paquetes PRG
Importante:
Esta parte es solo para los usuarios de PRG. El resto deberían saltarse esta
parte y continuar con ¿A dónde ir
desde aquí?.
|
Ahora que su sistema está iniciado, entre con el usuario que creó
anteriormente (por ejemplo, juan) y utilice su - para
obtener privilegios de root:
Listado de Código 2.1: Obteniendo privilegios de root |
$ su -
Password:
|
Ahora necesitamos cambiar la configuración de Portage para buscar
los binarios pre-compilados del segundo CD (CD de Paquetes de Gentoo).
Primero monte éste CD:
Listado de Código 2.2: Monte el CD de Paquetes |
# mount /mnt/cdrom
|
Ahora configure Portage para usar /mnt/cdrom para sus paquetes
pre-compilados:
Listado de Código 2.3: Configurando Portage para usar /mnt/cdrom |
# ls /mnt/cdrom
# export PKGDIR="/mnt/cdrom/packages"
# export PKGDIR="/mnt/cdrom"
|
Ahora instale los paquetes que quiera. El CD de Paquetes contiene varios
binarios pre-compilados, como por ejemplo KDE:
Listado de Código 2.4: Instalando KDE |
# emerge --usepkg kde
|
Asegúrese de instalar los binarios ahora. Cuando haga un emerge --sync
para actualizar Portage (como aprenderá más adelante), los binarios
pre-compilados quizá no correspondan con los ebuilds de su Portage actualizado.
Puede tratar de solventar este problema utilizando emerge --usepkgonly
en lugar de emerge --usepkg.
Enhorabuena, ¡Su sistema está ahora completamente equipado! Continué con ¿A dónde ir desde aquí? para aprender algo
más sobre Gentoo.
12. ¿Y ahora qué?
12.a. Documentación
¡Enhorabuena! Ya tiene funcionando un sistema Gentoo. Pero ¿A donde ir desde
aquí? ¿Cuáles son ahora sus opciones? ¿Qué explorar primero? Gentoo ofrece a sus
usuarios muchas posibilidades y, por lo tanto, muchas características documentadas
(y menos documentadas).
Definitivamente usted debería ojear la siguiente parte del Manual de Gentoo
titulada Trabajando con Gentoo la cual
explica cómo mantener su software al día, cómo instalar más software, qué
parámetros USE hay, cómo funciona el sistema de inicialización de Gentoo
(Gentoo Init system), etc.
Si está interesado en la optimización de su sistema para uso de escritorio, o quiere
aprender cómo configurarlo para que sea un completo sistema de escritorio,
consulte nuestra extensa Guía de
Configuración del Escritorio.
Para obtener un completo listado de toda nuestra documentación disponible,
revise nuestra página de Recursos de
Documentación.
12.b. Gentoo en línea
Por supuesto, usted es siempre bienvenido a nuestros Foros de Gentoo o a alguno de nuestros
canales de IRC.
También tenemos varias listas de correo
abiertas para todos nuestros usuarios. La información de cómo entrar en las
mismas está disponible en esa página.
Ahora nos callaremos y le dejaremos que disfrute de su instalación :)
B. Trabajando con Gentoo
1. Introducción al Sistema Portage
1.a. Obtaining Package Information
The Lord of All Tools: emerge
The main Portage tool that most users will use is emerge. We have already
used it during the Gentoo installation and in the previous chapter, but we just
briefly explained how to use it. This chapter will elaborate on emerge
and teach you how to use emerge to fix all your software-related needs.
emerge is the command used to install, remove, query and maintain
software packages. It is a front-end for ebuild; people interested in
becoming Gentoo professionals will learn how to use ebuild later on. For
now, we will focus on emerge as it has functionality that ebuild
lacks (such as resolving dependencies, searching the Portage tree, etc.).
Since emerge is the most important tool for Gentoo users, it has an
extensive manpage you can read by issuing man emerge. You can also view
the in-command help by running emerge --help.
Listado de Código 1.1: Retrieving help for emerge |
# man emerge
# emerge --help
|
The Portage Tree
Before we continue describing emerge, let us first take a look at the
Portage Tree. Go to /usr/portage and do a listing of the available
directories. We use ls --classify to list the contents of a
directory as it will show directories with a trailing "/".
Listado de Código 1.2: Viewing the Portage Tree |
# cd /usr/portage; ls --classify
app-admin/ dev-ml/ gnome-libs/ net-print/
app-arch/ dev-perl/ gnome-office/ net-wireless/
app-benchmarks/ dev-php/ header.txt net-www/
app-cdr/ dev-python/ incoming/ net-zope/
app-crypt/ dev-ruby/ jython/ packages/
app-dicts/ dev-tcltk/ kde-apps/ profiles/
app-doc/ dev-tex/ kde-base/ releases/
app-editors/ dev-util/ kde-i18n/ scripts/
app-emacs/ distfiles/ kde-libs/ sec-policy/
app-emulation/ eclass/ licenses/ skel.ChangeLog
app-games/ experimental/ media-fonts/ skel.ebuild
app-gnustep/ files/ media-gfx/ skel.metadata.xml
app-i18n/ fresco-base/ media-libs/ snapshots/
app-misc/ games-action/ media-plugins/ sys-apps/
app-office/ games-arcade/ media-radio/ sys-build/
app-pda/ games-board/ media-sound/ sys-cluster/
app-portage/ games-emulation/ media-tv/ sys-devel/
app-sci/ games-engines/ media-video/ sys-fs/
app-shells/ games-fps/ metadata/ sys-kernel/
app-text/ games-kids/ net-analyzer/ sys-kmods/
app-vim/ games-misc/ net-apache/ sys-libs/
app-xemacs/ games-mud/ net-dialup/ unix2tcp/
berlin-base/ games-puzzle/ net-dns/ x11-base/
dev-ada/ games-roguelike/ net-firewall/ x11-libs/
dev-cpp/ games-rpg/ net-fs/ x11-misc/
dev-db/ games-server/ net-ftp/ x11-plugins/
dev-dotnet/ games-simulation/ net-im/ x11-terms/
dev-embedded/ games-sports/ net-irc/ x11-themes/
dev-games/ games-strategy/ net-libs/ x11-wm/
dev-haskell/ games-util/ net-mail/ xfce-base/
dev-java/ glep/ net-misc/ xfce-extra/
dev-lang/ gnome-apps/ net-nds/
dev-libs/ gnome-base/ net-news/
dev-lisp/ gnome-extra/ net-p2p/
|
As you can see, the Portage tree has several subdirectories. Most of them are
the categories in which the Gentoo packages, called ebuilds,
reside. Take a look at, for instance, app-office:
Listado de Código 1.3: Viewing a category |
# cd app-office; ls --classify
abiword/ gnotime/ kmymoney2/ ooodi/ plan/ timestamp.x
dia/ gnucash/ koffice/ oooqs/ qhacc/
dia2code/ gnumeric/ lxbank/ openoffice/ sc/
facturalux/ ical/ lyx/ openoffice-bin/ scribus/
gaby/ kbudget/ mdbtools/ openoffice-ximian/ siag/
gnofin/ khacc/ mrproject/ phprojekt/ texmacs/
|
Inside a category you will find the packages belonging to that category, with a
separate directory for each package. Let us take a look at the openoffice
package:
Listado de Código 1.4: Viewing a package |
# cd openoffice; ls --classify
ChangeLog files/ openoffice-1.0.3-r1.ebuild openoffice-1.1.0-r2.ebuild
Manifest metadata.xml openoffice-1.1.0-r1.ebuild openoffice-1.1.0.ebuild
|
Remember that we told you that a Gentoo package is called an ebuild? Well, in
the example directory four of such ebuilds are stored. Their naming is
almost identical: they only differ in the version name.
You are free to view the contents of such a package: they are plain scripts. We
will not discuss it right now as it isn't important to know if you plan on just
using Gentoo.
The other files are the ChangeLog (which contains a listing of all
the changes done to the ebuilds), Manifest (which contains the
checksums and filesizes of all the files in the directory) and
metadata.xml (which contains more information about the package,
such as the responsible development group -- called herd -- and a more
extensive description).
Inside the files directory you will find extra files, needed by
Portage: digests (checksums and permissions of the files needed by a single
version of the package), patches, example configuration files, etc.
Listado de Código 1.5: Viewing the extra files |
# cd files; ls --classify
1.0.3/ digest-openoffice-1.0.3-r1 digest-openoffice-1.1.0-r1
1.1.0/ digest-openoffice-1.1.0 digest-openoffice-1.1.0-r2
# cd 1.1.0; ls --classify
fixed-gcc.patch ooffice-wrapper-1.3
newstlportfix.patch openoffice-1.1.0-linux-2.6-fix.patch
no-mozab.patch openoffice-1.1.0-sparc64-fix.patch
nptl.patch
|
If you go back to the root of the Portage tree (/usr/portage) you
will notice that there are other, non-category directories too. We will discuss
those later in this chapter.
Search for a Package
If you are new to Linux or Gentoo, you might not know what tool you need for
what job. To facilitate searching, emerge provides you with a way to
search through the available packages on your system. There are two ways you can
search through packages: by name, or by name and
description.
To search through the Portage tree by name, use emerge search. For
instance, to find out more about mozilla:
Listado de Código 1.6: Showing information about mozilla |
# emerge search mozilla
Searching...
[ Results for search key : mozilla ]
[ Applications found : 5 ]
* net-www/mozilla
Latest version available: 1.5-r1
Latest version installed: 1.4-r3
Size of downloaded files: 29,153 kB
Homepage: http://www.mozilla.org
Description: The Mozilla Web Browser
* net-www/mozilla-firebird
Latest version available: 0.7
Latest version installed: [ Not Installed ]
Size of downloaded files: 37,850 kB
Homepage: http://www.mozilla.org/projects/firebird/
Description: The Mozilla Firebird Web Browser
|
If you want to include a search through the descriptions too, use the
--searchdesc argument:
Listado de Código 1.7: Search through the descriptions too |
# emerge --searchdesc mozilla
Searching...
[ Results for search key : mozilla ]
[ Applications found : 10 ]
* dev-libs/nss-3.8
Latest version available: 3.8
Latest version installed: 3.8
Size of downloaded files: 2,782 kB
Homepage: http://www.mozilla.org/projects/security/pki/nss/
Description: Mozilla's Netscape Security Services Library that implements PKI support
|
As you can see, the output of emerge informs you about the category and
name of the package, the available version, the currently installed version,
the size of the downloaded files, the homepage and the small description.
You see something new? Yes, downloaded files. When you tell Portage to
install a package, it of course needs to have the necessary sources (or
precompiled packages) available. It therefore checks the contents of
/usr/portage/distfiles (for source code) or
/usr/portage/packages/All (for precompiled packages) to see if the
necessary files are already available. If not, it downloads the necessary files
and places them in those directories.
Viewing the ChangeLog
While browsing through the Portage Tree, you saw that there was a ChangeLog for
each package. You can view the ChangeLog entries between the available version
and the installed version with emerge too. Use the
--pretend --changelog (-pl in short) options. As an example we
will view the ChangeLog entries for gnumeric:
Listado de Código 1.8: Viewing the ChangeLog entries for gnumeric |
# emerge --pretend --changelog gnumeric
*gnumeric-1.2.2
27 Nov 2003; foser <foser@gentoo.org> gnumeric-1.2.2.ebuild :
New release, requested in #34492
updated deps
12 Nov 2003; Jason Wever <weeve@gentoo.org> gnumeric-1.2.0.ebuild:
Marked stable on sparc, fixes bug #32405.
14 Oct 2003; Jason Wever <weeve@gentoo.org> gnumeric-1.0.8.ebuild:
Added ~sparc keyword. Fixes bug #31150.
|
1.b. Updating Portage
Introduction
Searching through Portage is nice, but if you don't update your Portage Tree
regularly, you will be stuck with the packages and versions available on your
system. This means that your system will get outdated pretty soon and that
you will be missing bugfixes and remedies for possible security problems.
There are several ways to update your Portage Tree. The most popular method is
by using one of our rsync mirrors.
Another one is by using a Portage snapshot (in case a firewall or unavailability
of a network prohibits the use of the rsync server).
Selecting a Mirror for rsync
It is adviseable to first select a fast mirror close to you. You can do this manually
(by setting the SYNC variable in /etc/make.conf) or use
mirrorselect to do this for you automatically. As the SYNC
variable will be discussed later on, we will focus on using mirrorselect.
First install mirrorselect by emerging it:
Listado de Código 2.1: Installing mirrorselect |
# emerge --usepkg mirrorselect
|
Now run mirrorselect to automatically select mirrors for you (it will
also setup Portage to use a mirror for the source code):
Listado de Código 2.2: Running mirrorselect |
# mirrorselect -a -s3
|
Updating Portage
To update Portage using rsync, simply run emerge sync:
Listado de Código 2.3: Updating Portage using emerge sync |
# emerge sync
|
If this fails (due to network problems, or a firewall), you can try using
emerge-webrsync which will download a Portage Tree snapshot using
wget. This also means that you can use proxies if you want. We discussed
how to setup your system to use proxies during the Gentoo installation.
Listado de Código 2.4: Updating Portage using emerge-webrsync |
# emerge-webrsync
|
1.c. Maintaining Software
Building or Prebuilt?
Gentoo provides ebuilds, the Gentoo packages if you like. But when you want to
install such an ebuild, you can choose between building the package and
using a prebuilt package. But what are the advantages/disadvantages of
both approaches, and can they be used next to each other?
As you probably have guessed, building packages takes a lot of time (especially
if you have little resources or want to build big packages, such as KDE, OpenOffice.org, etc.). By building the
package, you can use the USE setting to tweak the package to your system.
Of course, you can also define high optimization options (in the CFLAGS
and CXXFLAGS variables) to compile the package with.
Using prebuilt packages improves the installation time (as no more compilation
is needed), but you will lose the advantages of the USE setting and the
CFLAGS & CXXFLAGS variables.
As previously stated, prebuilt packages are stored in the
/usr/portage/packages/All directory, while the source code of the
packages is placed in /usr/portage/distfiles. If you have finished
installing a package you can remove the package or source code from the
respective directory. However, you might want to keep the package/source code of
the latest version, just in case you want to reinstall the package (so you don't
have to redownload it).
Installing Software from Sources
Okay, enough talking, let's cut to the chase. To install a package, you will use
the emerge command. If you don't want to use any prebuilt packages, you
can just use emerge <package-name> or emerge
<category>/<package-name>. As an example we'll install
gnumeric:
Listado de Código 3.1: Building gnumeric |
# emerge gnumeric
|
This will download the source code for you and unpacks, compiles and installs
the package on your system. It will also do the same for all the dependencies.
If you want to see what dependencies will be installed with it, use the
--pretend option (-p in short):
Listado de Código 3.2: Pretending to build gnumeric |
# emerge --pretend gnumeric
|
If you want to download the source code of the package and its dependencies,
but don't want to build the package, use the --fetchonly option
(-f in short):
Listado de Código 3.3: Fetching sources for gnumeric |
# emerge --fetchonly gnumeric
|
If you want to see where emerge downloads the sources from, combine the
--fetchonly and --pretend options:
Listado de Código 3.4: Showing URLs of the sources for gnumeric |
# emerge --fetchonly --pretend gnumeric
|
You can also opt to install a specific version of a package.
For instance, if you want to install a gnumeric version older than 1.2 -- for
any reason whatsoever :) you would type:
Listado de Código 3.5: Installing a specific gnumeric version |
# emerge "<gnumeric-1.2"
|
Other possibilities are of course ">" (later version) and "=" (the exact
version).
Installing Prebuilt Packages
When you want to install a prebuilt package, you should use the --usepkg
option (-k in short). This will use the binary package available in
/usr/portage/packages/All if the package and the version of
the application you want to install match.
Listado de Código 3.6: Installing a prebuilt package for gnumeric |
# emerge --usepkg gnumeric
|
If you want to use the binary package, even if the versions don't match, use
--usepkgonly (-K in short).
Listado de Código 3.7: Installing the prebuilt package for gnumeric |
# emerge --usepkgonly gnumeric
|
If you don't have the prebuilt package on your system yet, you can have
emerge download it from a mirror, defined in the PORTAGE_BINHOST
variable declared in /etc/make.conf.
To download the binary package in case this package doesn't exist on
your system already, use --getbinpkg (-g in short):
Listado de Código 3.8: Downloading and installing a prebuilt package for gnumeric |
# emerge --getbinpkg gnumeric
|
This will download the package and the package-related information for you and
install it on your system, together with the dependencies. If you want to see
what dependencies will be installed with it, use the --pretend option
(-p in short):
Listado de Código 3.9: Pretending to download the prebuilt packages for gnumeric |
# emerge --getbinpkg --pretend gnumeric
|
You can also opt to download the prebuilt package (and the package-related
information) without checking the information on your local system and
without using the prebuilt package already on your system (if
applicable), use the --getbinpkgonly option (-G in short):
Listado de Código 3.10: Installing a prebuilt package without using local information |
# emerge --getbinpkgonly gnumeric
|
You can also opt to install a specific version of a package.
For instance, if you want to install a gnumeric version older than 1.2 -- for
any reason whatsoever :) you would type:
Listado de Código 3.11: Installing a specific gnumeric version |
# emerge --usepkg "<gnumeric-1.2"
|
Other possibilities are of course ">" (later version) and "=" (the exact
version).
Working with Dependencies
Portage has an extensive support for dependency handling. Although you usually
don't need to even think about this (as dependencies are automatically handled
by Portage) some users might want to know how you can work with emerge
and dependencies.
For instance, if you want Portage to pretend that none of the dependencies of a
package are installed, you can use --emptytree (-e in short). This
is useful with --pretend to display a complete tree of dependencies for
any particular package. Without --pretend, emerge will (re)compile
all listed packages. However, glibc will not be listed as
dependency for safety reasons.
Listado de Código 3.12: Show all dependencies of gnumeric |
# emerge --emptytree --pretend gnumeric
|
Another argument is --nodeps, which will ask Portage to try install the
given package without taking care of the dependencies. It is trivial that this
can lead to failures.
Listado de Código 3.13: Installing gnumeric without taking care of the dependencies |
# emerge --nodeps gnumeric
|
The opposite of --nodeps is --onlydeps, which will have Portage
install all dependencies of a given package, but not the package itself:
Listado de Código 3.14: Installing the dependencies of gnumeric |
# emerge --onlydeps gnumeric
|
Updating your System
Portage knows two special tags to denote a set of software packages:
system and world. You have already seen the former while
installing Gentoo if you didn't use a stage3 installation. To refresh
things: system is the collection of core packages, necessary to
have a working Gentoo system.
The world tag consists of all software you have installed yourself on
your system plus the system information. In other words, every time you
emerge a package using emerge <package-name>, the
<package-name> is registered in the world file
(/var/cache/edb/world). Dependencies are not part of the
world file, but we will get to that later.
If you want to update the system packages, use the --update option
(-u in short):
Listado de Código 3.15: Updating the system packages |
# emerge --update system
|
An identical approach can be used for the world packages:
Listado de Código 3.16: Updating your entire system |
# emerge --update world
|
Again, if you want to see what emerge wants to update, use the
--pretend option together with the --update option:
Listado de Código 3.17: Pretending to update your entire system |
# emerge --pretend --update world
[ebuild U ] net-misc/wget-1.9-r1 [1.9]
[ebuild UD] media-video/dvdauthor-0.5.0 [0.5.3]
[ebuild U ] net-analyzer/ethereal-0.9.16 [0.9.14]
|
Right next to the word "ebuild" you will notice a letter (or combination of
letters) which gives you more information about the package:
-
B (blocks) The package listed to the left is blocking the emerge of
the package listed to the right
-
N (new) The package is new to your system and will be emerged for the
first time
-
R (reemerge) The package isn't new, but needs to be reemerged
-
F (fetch) The package requires that you download the source code
manually (for instance due to licencing issues)
-
U (update) The package already exists on your system but will be
upgraded
-
UD (downgrade) The package already exists on your system but will be
downgraded
-
U- (slot warning) The package you have installed on your system
is listed as a package that can not coexist with a different version, but
your update does. The update will be installed and the older version will be
removed.
In certain cases, an update may mean a downgrade (i.e. install an older version
instead of a newer version). If you don't want this to happen, use the
--upgradeonly option (-U in short):
Listado de Código 3.18: Upgrading your entire system |
# emerge --update --upgradeonly world
|
Of course, we are talking here about system and world, but you can
perform the same actions for individual software packages.
Removing Software
If you want to remove software from your system, you can use the unmerge
option (-C - capital C - in short):
Listado de Código 3.19: Uninstalling software |
# emerge unmerge gnumeric
|
If you want to test a removal (but not perform it), you can use --pretend
again:
Listado de Código 3.20: Pretending to uninstall software |
# emerge --pretend unmerge gnumeric
|
Aviso:
Portage doesn't verify if a package is a dependency for another
installed package. It also doesn't warn you if the package is part of
system, i.e. a core application necessary for the correct functioning of
your system!
|
Once the unmerge begins you will see a long list of filenames belonging to the
package. Some of these filenames will have a flag displayed to the
left of the filename. The flags !mtime, !empty, and cfgpro
specify reasons why certain files are not being removed while the package is.
Files listed without any of these three flags are removed from the
filesystem successfully. The three flags specify the following reasons:
-
!mtime : The listed file has been changed since it was installed,
probably by you or some tool
-
!empty : The listed directory is not empty
-
cfgpro : This file is located inside a protected directory and will
not be touched for safety
1.d. Software Availability
ARCH or not?
Gentoo places its packages in two possible stadia called ARCH and
~ARCH. Don't take this literally: the stadia depend on the architecture
you are using. In other words, for x86-based systems you have x86 and
~x86, for ppc-based systems you have ppc and ~ppc etc.
The ~ARCH stadium means that the package works for the developer in
charge of the package, but that the package hasn't been tested thoroughly enough
by the community to be placed in ARCH. ~ARCH packages usually go
to ARCH after being bugfree for a sufficient amount of time.
Your system will use ARCH packages per default. If you want to live on
the edge, don't mind having a broken package once in a while, know how to deal
with a broken system and you like submitting bugreports to bugs.gentoo.org, then you can opt to use
~ARCH packages. To "move" your system to a ~ARCH-using system,
edit the ACCEPT_KEYWORDS variable in /etc/make.conf so that
it reads ~ARCH (again: for x86-based systems: ~x86, etc.).
Note though that it is far from trivial (if even impossible) to go back to
ARCH from ~ARCH.
If you want to update your system now, you will notice that a lot of
packages will be updated!
Masked Packages
When you want to install a package, you might come across the following message:
Listado de Código 4.1: Message about masked packages |
Calculating dependencies
!!! <your package>
|
A package can be masked due to two reasons:
- The package is in ~ARCH while you use ARCH
- The package is hard-masked explicitly
If the package is masked because of the first reason, and you really want
to install it (knowing that there is a reason why it isn't available in
ARCH), you can temporarily accept ~ARCH packages:
Listado de Código 4.2: Temporarily accepting ~ARCH packages |
# ACCEPT_KEYWORDS="~x86" emerge gnumeric
|
A package is hardmasked if it is listed in
/usr/portage/profiles/package.mask. If you read this file, you
will also read the reason why the package is hardmasked (it is usually added as
a comment). If you want to install the package nevertheless (despite all the
possible warnings we could ever throw at your head about "breaking your system",
"breaks other packages", or "badly needs testing"), create the
/etc/portage/package.unmask file and list the package in it (use
the same format as is used in /usr/portage/profiles/package.mask).
Do not alter the /usr/portage/profiles/package.mask file as
all changes are undone the next time you update your Portage tree. If you want
to hardmask a package create /etc/portage/package.mask and list the
package in it (use the same format as mentioned above).
Blocked Packages
You have a situation when you receive the following error on your screen:
Listado de Código 4.3: Blocking package |
[blocks B ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0)
|
In the above example, the package bonobo-activation is blocking the
emerge of libbonobo. To resolve this issue, remove the
bonobo-activation package and continue:
Listado de Código 4.4: Resolving a blocking situation |
# emerge unmerge bonobo-activation
|
2. Los Parámetros USE
2.a. ¿Qué son los parámetros USE?
Las ideas que hay detrás de los parámetros USE
Mientras esté instalando Gentoo (o cualquier otra distribución, incluso
otro sistema operativo), tomará varias decisiones dependiendo del entorno en el
que esté trabajando. Una instalación para un servidor es distinta a
una para una estación de trabajo. También una estación de trabajo dedicada a
juegos es diferente a una estación de trabajo que se use para renderizados
en 3D.
Estas diferencias no solo dependen de los paquetes instalados, si no también
de las características para las que ciertos paquetes tienen soporte. Si no
necesita OpenGL, ¿para qué molestarse en instalar OpenGL y construir la
mayoría de sus aplicaciones con soporte OpenGL? Si no quiere usar KDE, ¿para
qué molestarte en compilar paquetes con soporte para KDE si podrían funcionar
perfectamente sin él?
Para ayudar a los usuarios a decidir qué instalar/activar o no, necesitamos
que el usuario especifique su entorno de una manera sencilla. Esto obliga al
usuario a decidir que es lo que realmente quiere; además de facilitar a Portage,
nuestro sistema de gestión de paquetes, la tarea de tomar decisiones útiles.
Definición de un parámetro USE
Comencemos por definir qué son los parámetros USE. Un parámetro USE es una
palabra clave que incorpora información de soporte y dependencias para
un concepto en concreto. Si define un determinado parámetro USE, Portage
sabrá que el usuario desea soporte para la palabra clave escogida. Por supuesto,
también altera las dependencias de un paquete.
Veamos un ejemplo específico: la palabra clave kde. Si no la tiene
en su variable USE, todos los paquetes que tengan soporte opcional
para KDE se construirán sin él. Los que tengan una dependencia opcional
con KDE se instalarán sin instalar las librerías de KDE (como dependencia).
Si ha definido la palabra clave kde, entonces dichos paquetes sí se
construirán con soporte para KDE, y las librería de KDE serán instaladas
Definiendo correctamente las palabras clave, conseguirá un sistema
confeccionado específicamente para sus necesidades.
¿Qué parámetros USE existen?
Hay dos tipos de parámetros USE: globales y locales.
-
Un parámetro USE global lo usan varios paquetes, en todo
el sistema. Es lo que la mayoría de la gente entiende como parámetros USE.
-
Un parámetro USE local lo utiliza un sólo paquete para tomar
decisiones específicas para dicho paquete.
Puede encontrar una lista de los parámetros USE globales en línea o localmente en
/usr/portage/profiles/use.desc. Un pequeño (realmente pequeño)
extracto:
Listado de Código 1.1: Un pequeño extracto de los parámetros USE disposibles |
gtk - Adds support for x11-libs/gtk+ (The GIMP Toolkit)
gtk2 - Use gtk+-2.0.0 over gtk+-1.2 in cases where a program supports both.
gtkhtml - Adds support for gnome-extra/gtkhtml
guile - Adds support for dev-util/guile (interpreter for Scheme)
icc - Use the Intel C++ Compiler if the package supports it
icc-pgo - Enable PGO data generation or use when use icc.
imap - Adds support for IMAP
|
Se puede encontrar una lista de los parámetros USE locales
en /usr/portage/profiles/use.local.desc.
2.b. Usando los parámetros USE
Declarar parámetros USE permanentes
Esperamos que se haya convencido de la importancia de los parámetros USE.
Ahora pasaremos a explicar como se declaran estos parámetros.
Como ya se ha dicho anteriormente, todos los parámetros del USE
se declaran dentro de la variable USE. Para simplificar al usuario
la tarea de buscar y escoger parámetros USE, ya proporcionamos
una configuración predeterminada. Esta configuración es un compendio
de parámetros que creemos se utilizan frecuentemente por los usuarios de Gentoo.
Dicha configuración predeterminada está declarada en el fichero
/etc/make.profile/make.defaults. Echémosle un ojo:
Listado de Código 2.1: La variable USE de /etc/make.profile/make.defaults |
USE="x86 oss apm arts avi berkdb crypt cups encode foomaticdb gdbm gif gpm
gtk gtk2 imlib jpeg kde gnome libg++ libwww mad mikmod motif mpeg ncurses
nls oggvorbis opengl pam pdflib png python qt quicktime readline sdl
slang spell ssl svga tcpd truetype X xml2 xmms xv zlib"
|
Como puede ver, esta variable contiene bastantes palabras clave. No
modifique el fichero /etc/make.profile/make.defaults
para ajustar la variable USE a sus necesidades: ¡los cambios se perderán
al actualizar el árbol del Portage!
Para modificar esta configuración predeterminada, necesita añadir o eliminar
palabras clave a la variable USE. Para llevarlo a cabo, se define
la variable USE en /etc/make.conf. En esta variable añada
los parámetros USE que necesite o elimine los que no quiera. Para eliminarlos
coloque el símbolo menos ("-") delante.
Por ejemplo, para eliminar el soporte para KDE y QT además de añadir
soporte para ldap, puede definirse el siguiente parámetro USE en
/etc/make.conf:
Listado de Código 2.2: Un ejemplo de confirmación USE en /etc/make.conf |
USE="-kde -qt ldap"
|
Declarar parámetros USE para paquetes específicos
A veces le interesará establecer un cierto parámetro USE tan sólo para una o
dos aplicaciones, pero no para todo el sistema. Para solventar esto, necesitará
crear el directorio /etc/portage (si no existiera) y editar
/etc/portage/package.use.
Por ejemplo, si no le interesa soporte global para berkdb pero lo quiere
para mysql, necesita añadir:
Listado de Código 2.3: Ejemplo de /etc/portage/package.use |
dev-db/mysql berkdb
|
Por supuesto también puede desactivar el empleo específico de
un parámetro USE para una aplicación en concreto.
Por ejemplo si no quiere soporte para java en PHP:
Listado de Código 2.4: Segundo ejemplo de /etc/portage/package.use |
dev-php/php -java
|
Declarar parámetros USE temporales
A veces necesitará utilizar una cierta configuración de USE tan sólo una vez.
En lugar de editar /etc/make.conf dos veces (una para hacer y
otra para deshacer los cambios) puede declarar la variable USE como una
variable de entorno. Recuerde que, si utiliza este método, cuando vuelva a
emerger o actualice este aplicación (tanto si es particular como si forma
parte de una actualización del sistema) perderá los cambios.
Como ejemplo, vamos a eliminar temporalmente el parámetro java USE
durante la instalación de mozilla.
Listado de Código 2.5: Utilizando USE como una variable de entorno |
# USE="-java" emerge mozilla
|
Heredando parámetros USE
Algunos paquetes no sólo tienen en cuenta los parámetros USE, si no que
además las proporcionan. Cuando instale alguno de esos paquetes, los
parámetros USE proporcionados se añadirán a su configuración. Para ver una lista
de los paquetes que proporcionan parámetros USE, revise
/etc/make.profile/use.defaults:
Listado de Código 2.6: Un extracto de /etc/make.profile/use.defaults |
gnome gnome-base/gnome
gtk x11-libs/gtk+
qt x11-libs/qt
kde kde-base/kdebase
motif x11-libs/openmotif
|
Precedencia
Por supuesto, hay una determinada precedencia respecto a qué configuración
tiene prioridad sobre la configuración del USE. No es necesario declarar
USE="-java" sólo para ver si java está declarado.
La precedencia para la configuración del USE es (el primero tiene la
mínima prioridad):
-
Configuración predeterminada del USE declarada en /etc/make.profile/make.defaults
-
Configuración del USE heredada si un paquete de
/etc/make.profile/use.defaults está instalado
-
Configuración definida por el usuario en /etc/make.conf
-
Configuración definida por el usuario en /etc/portage/package.use
-
Configuración definida por el usuario como variable de entorno
Para observar el valor final del USE tal y como lo verá Portage, ejecute
emerge info. Se listarán una serie de variables importantes (incluyendo
la variable USE) con sus valores correspondientes.
Listado de Código 2.7: Ejecutando emerge info |
# emerge info
|
Adaptando su Sistema Completamente a los Nuevos Parámetros USE
Si ha cambiado sus parámetros USE y desea actualizar todo su sistema para
que utilice el nuevo parámetro, utilice la opción de emerge llamada
--newuse:
Listado de Código 2.8: Recompilando todo su sistema |
# emerge --update --deep --newuse world
|
A continuación, ejecute una limpieza completa de Portage para eliminar las
dependencias que habían sido instaladas en su "antiguo" sistema pero que
han quedado obsoletas por los nuevos parámetros de USE.
Aviso:
Ejecutar emerge depclean es una operación peligrosa y debería tratarse
con cuidado. Revise en profundidad la lista de paquetes "obsoletos" y asegúrese
de que no elimina ningún paquete que necesite. En el siguiente ejemplo hemos
añadido -p para mostrar la lista de paquetes que serían eliminados
pero sin eliminarlos físicamente.
|
Listado de Código 2.9: Desinstalando los paquetes obsoletos |
# emerge -p depclean
|
Cuando haya finalizado la limpieza, ejecute revdep-rebuild para
recompilar las aplicaciones que están enlazadas dinámicamente con los
objetos que proporcionaban los paquetes eliminados. revdep-rebuild
forma parte del paquete gentoolkit; no olvide emergerlo primero.
Listado de Código 2.10: Ejecutando revdep-rebuild |
# revdep-rebuild
|
Cuando todo esto haya terminado, su sistema estará utilizando la nueva
configuración de los parámetros USE.
2.c. Parámetros USE específicos de un paquete
Viendo los parámetros USE disponibles
Veamos el ejemplo de mozilla: ¿Qué parámetros USE influyen sobre él?
Para averiguarlo, usamos emerge con las opciones --pretend
(simula llevar a cabo la acción) y --verbose (obtener una salida más
detallada):
Listado de Código 3.1: Viendo los parámetros USE usados |
# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild N ] net-www/mozilla-1.5-r1 +java +crypt -ipv6 -gtk2 +ssl +ldap
+gnome -debug +mozcalendar -mozaccess -mozxmlterm -moznoirc -moznomail
-moznocompose -moznoxft
|
emerge no es la única herramienta disponible para esta labor.
De hecho, tenemos una herramienta llamada etcat
dedicada a obtener información sobre los paquetes; la cual se encuentra
en el paquete gentoolkit. En primer lugar, instale gentoolkit:
Listado de Código 3.2: Instalando gentoolkit |
# emerge gentoolkit
|
Ahora ejecute etcat con el argumento uses para ver los parámetros del
USE de un paquete en concreto. Por ejemplo, en el caso del paquete gnumeric:
Listado de Código 3.3: Usando etcat para ver los parámetros USE usados |
# etcat uses gnumeric
[ Colour Code : set ]
[ Legend : (U) Col 1 - Current USE flags ]
[ : (I) Col 2 - Installed With USE flags ]
U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ]
- - : Adds GNU Data Access (CORBA wrapper) support for gnumeric
- - : unknown
+ + python : Adds support/bindings for the Python language
+ + bonobo : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)
|
3. Características del Portage
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
|
4. Guiones de inicio
4.a. Niveles de ejecución
Iniciando su sistema
Al iniciar, notará que pasará al frente suyo una gran cantidad de
texto. Si pone atención, notará que estos textos son iguales cada vez
que reinicie su sistema. La secuencia de todas estas acciones se llama
la secuencia de inicio y es (más o menos) definido
estáticamente.
Primero, su gestor de arranque cargará a la memoria la imagen del
kernel que definido en la configuración del gestor de arranque, después
de lo cual se indica al CPU que debe ejecutar el kernel. Al ser
cargado y luego ejecutado inicializa todas las estructuras y tareas
específicas del kernel e inicia el proceso init.
Este proceso asegura que todos los sistemas de archivo (definidos en
/etc/fstab) estén montados y listos para usar. Luego
ejecuta varios guiones en /etc/init.d, correspondientes a
los servicios requeridos para tener un sistema correctamente iniciado.
Finalmente, al concluir la ejecución de los guiones, init
activa los terminales (generalmente solo las consolas virtuales
accesibles con Alt-F1, Alt-F2, etc.) fijandoles un proceso
especial denominado agetty. Este proceso hará posible que pueda
ingresar al sistema a través de uno de estos terminales ejecutando
login.
Guiones de inicio (init scripts)
Ahora bien, init no solamente ejecuta los guiones en
/etc/init.d de manera aleatoria. Aún más, no ejecuta
todos los guiones del /etc/init.d, solamente los que han
sido seleccionados para ejecutar. Los guiones seleccionados para
ejecutar se encuentran dentro del directorio
/etc/runlevels.
Primero, init ejecuta todos los guiones de
/etc/init.d cuyos vínculos simbólicos se encuentran
dentro de /etc/runlevels/boot. Usualmente los iniciará en
órden alfabético, pero algunos guiones tienen información relativa a
dependencias, para lo cual otros guiones deben ser iniciados anteriormente.
Cuando todos los guiones referenciados en
/etc/runlevels/boot sean ejecutados, init continua
su trabajo con los guiones en /etc/runlevels/default. Una
vez más, usará el órden alfabético, salvo cuando hay dependencias, en
cuyo caso es alterado el órden de inicio para realizar una secuencia
válida de arranque.
¿Cómo funciona Init?
Por supuesto que init no decide todo eso por su
cuenta. Requiere un archivo de configuración que especifica las
acciones a tomar. Este archivo es /etc/inittab.
Si recuerda al secuencia de inicio recién explicada, recordará que la
primera acción de init es montar todos los sistemas de
archivo. Esto está definido en la siguiente línea de /etc/inittab:
Listado de Código 1.1: Línea de inicialización del sistema de /etc/inittab |
si::sysinit:/sbin/rc sysinit
|
Esta línea dice a init que debe correr /sbin/rc sysinit
para inicializar el sistema. El guión /sbin/rc toma
cuenta de la inicialización, así que podemos decir que init no
hace gran cosa -- delegando la tarea de inicialización a otro proceso.
En segundo lugar, init ejecutó los guiones con vínculos
simbólicos en /etc/runlevels/boot. Esto se define en la
siguiente línea:
Listado de Código 1.2: Inicialización del sistema, continuada |
rc::bootwait:/sbin/rc boot
|
Una vez más, el guión rc lleva a cabo las tareas
necesarias. Note que la opción de rc (boot) corresponde
al subdirectorio usado bajo /etc/runlevels.
Ahora init revisa su archivo de configuración para ver cuál
nivel de ejecución debe correr. Para decidirlo, lee la
siguiente línea de /etc/inittab:
Listado de Código 1.3: La línea por defecto (default) |
id:3:initdefault:
|
En este caso (para la mayoría de usuarios Gentoo), el identificador
del nivel de ejecución será el 3. Con esta información
init revisa qué debe ejecutar para iniciar el nivel de
ejecución 3:
Listado de Código 1.4: Definiciones de niveles de ejecución |
l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot
|
La línea que define el nivel 3, de nuevo usa el guión rc para
iniciar los servicios (ahora con el parámetro por defecto
default). Note una vez más que el parámetro pasado al guión
rc corresponde al subdirectorio de /etc/runlevels.
Al terminar rc, init decide cuáles consolas virtuales
debe activar y qué comandos deben ser ejecutados para cada una:
Listado de Código 1.5: Definición de las consolas virtuales |
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
|
¿Qué es un nivel de ejecución?
Ha visto que init utiliza un esquema de numeración para decidir
cual nivel de ejecución debe activar. Un nivel de
ejecución es un estado en el cual su sistema está corriendo y
contiene guiones (del nivel de ejecución o initscripts)
que serán ejecutados al ingresar o salir del nivel de ejecución.
En Gentoo, hay siete niveles de ejecución definidos: tres internos y
cuatro definidos por el usuario. Los internos se llaman
sysinit, shutdown y reboot y hacen exactamente lo
que implican sus nombres, inicialización, apagado y reinicio del
sistema.
Los niveles de ejecución definidos por el usuario están acompañados de
un subdirectorio bajo /etc/runlevels: boot,
default, nonetwork y single. El
nivel de ejecución boot inicia los servicios necesarios
que requieren los demás niveles de ejecución. Los tres niveles de
ejecución restantes difieren respecto a los servicios que inician:
default es para uso diario, nonetwork en
caso de no requerirse la red y single es utilizado en
caso de necesitar arreglar el sistema.
Trabajando con los guiones de inicio
Los guiones iniciados por el proceso rc son llamados guiones de
inicio o init scripts. Cada guión en
/etc/init.d puede ser ejecutado con los parámetros
start, stop, restart, pause, zap,
status, ineed, iuse, needsme,
usesme o broken.
Para iniciar, parar o reiniciar un servicio (y sus respectivas
dependencias), deben usarse start, stop and
restart:
Listado de Código 1.6: Iniciando postfix |
# /etc/init.d/postfix start
|
Nota:
Solo los servicios que necesiten (need) del servicio nombrado
serán parados o reiniciados. Los demás servicios, aquellos que usen
(use) el servicio nombrado, pero que no lo necesiten
(need) continuarán sin ser tocados.
|
Si desea parar un servicio, pero no los que dependan de el, puede usar
el parámetro para pausarlo pause:
Listado de Código 1.7: Parando postfix, manteniendo ejecución de los demás servicios |
# /etc/init.d/postfix pause
|
Si desea ver el estado de un servicio (iniciado, parado, pausado, ...)
puede usar el parámetro status:
Listado de Código 1.8: Estado del servicio postfix |
# /etc/init.d/postfix status
|
Si la respuesta a status indica que el servicio está corriendo, pero
realmente no es así, puede reajustarlo manualmente con el
parámetro zap:
Listado de Código 1.9: Reajustando la información del estado del servicio postfix |
# /etc/init.d/postfix zap
|
Para interrogar cuáles dependencias tiene un servicio, puede usar
iuse o ineed. Con ineed puede ver cuales
servicios son realmente necesarios para el correcto funcionamiento del
servicio nombrado. Por otra parte, el parámetro iuse muestra
los servicios que pueden ser usados por el servicio nombrado, pero que
no son requeridos para su correcto funcionamiento.
Listado de Código 1.10: Solicitando una lista de servicios de los cuales depende postfix |
# /etc/init.d/postfix ineed
|
De igual manera, puede indagar cuáles servicios requieren el servicio
nombrado (needsme) o cuáles pueden usarlo (usesme):
Listado de Código 1.11: Solicitando una lista de todos los servicios que requieren postfix |
# /etc/init.d/postfix needsme
|
Finalmente, puede indagar cuales dependencias son requeridas y estan faltando:
Listado de Código 1.12: Solicitando una lista de dependencias faltantes para postfix |
# /etc/init.d/postfix broken
|
4.b. Trabajando con rc-update
¿Qué es rc-update?
El sistema de arranque de Gentoo usa un árbol de dependencias para
decidir qué servicios deben iniciarse primero. Como ésta es una tarea
tediosa, que no deseamos que nuestros usuarios tengan que hacer
manualmente, hemos creado unas herramientas para facilitar la
administración de los niveles de ejecución y los guiones de inicio.
Con rc-update puede añadir o remover guiones de inicio a un
nivel de ejecución. La herramienta rc-update automáticamente
usará el guión depscan.sh para reconstruir el árbol de dependencias.
Añadiendo y removiendo servicios
Ya hemos agregado guiones de inicio al nivel de ejecución por
defecto durante la instalación de Gentoo. En ese instante tal vez no
haya tenido una idea clara acerca del uso de un nivel de ejecución
"por defecto", aunque ahora sí. El guión rc-update requiere un
segundo parámetro que define la acción a llevar a cabo: add,
del o show para agregar, borrar o mostrar.
Para añadir o remover un guión de inicio, use rc-update con el
parámetro add o del, seguido por el nomnre del guión de
inicio y el nivel de ejecución, por ejemplo:
Listado de Código 2.1: Remover postfix del nivel de ejecución por defecto |
# rc-update del postfix default
|
El comando rc-update show mostrará todos los guiones de inicio
con los niveles de ejecución donde ejecutarán:
Listado de Código 2.2: Recibiendo información de los guiones de inicio |
# rc-update show
|
4.c. Configuración de servicios
¿Porqué requerimos configuración adicional?
Los guiones de inico pueden ser bastante complejos, por lo cual no
es interesante que los usuarios modifiquen directamente el guión de
inicio, ya que esto puede ser propenso a errores. Sin embargo es
importante poder configurar estos servicios, en caso que se
quieren dar más opciones al servicio.
Una segunda razón para mantener esta información afuera del guión de
inicio es para poder actualizar estos guiones sin que los cambios de
configuración sean perdidos.
El directorio /etc/conf.d
Gentoo provee una manera fácil de configurar estos servicios: cada
guión de inicio configurable tiene un archivo dispuesto en
/etc/conf.d. Por ejemplo, el guión de inicio apache2
(llamado /etc/init.d/apache2) tiene un archivo de
configuración de nombre /etc/conf.d/apache2, el cual
contiene las opciones a pasar al servidor web Apache 2 en el momento
de inicio:
Listado de Código 3.1: Variables definidas en /etc/conf.d/apache2 |
APACHE2_OPTS="-D PHP4"
|
Este tipo de archivo de configuración contiene solamente variables
(como /etc/make.conf), lo que facilita la configuración
de servicios. También nos permite suministrar información adicional
acerca de las variables (en forma de comentarios).
4.d. Escribiendo guiones de inicio
¿Realmente tengo que hacerlo?
Realmente, no. Escribir un guión de inicio usualmente no hace falta,
ya que Gentoo provee guiones listos para usar para todos los
servicios suministrados. Sin embargo, puede haber instalado un
servicio sin usar Portage, en cuyo caso probablemente tenga que crear
un guión de inicio.
No use el guión de inicio suministrado por el servicio si no está
explícitamente escrito para Gentoo: los guiones de inicio de Gentoo ¡no
son compatibles con los de las demás distribuciones!
Disposición
La disposición básica de un guión de inicio se muestra a continuación.
Listado de Código 4.1: Disposición básica de un guión de inicio |
#!/sbin/runscript
depend() {
}
start() {
}
stop() {
}
restart() {
}
|
Cualquier guión de inicio requiere la definición de la función
start(). Todas las demás son opcionales.
Dependencias
Hay dos dependencias que puede definir: use y need. Tal
como hemos mencionado anteriormente, la dependencia need es más
estricta que la dependencia use. Siguiendo este esquema, se
declaran los servicios que dependen de éste o la dependencia virtual.
Una dependencia virtual es una suministrada por un servicio,
pero no solo por ese servicio. Su guión de inicio puede depender de un
gestor de registro de sistema, habiendo disponibilidad de varios (metalogd, syslog-ng,
sysklogd, ...). Como no se necesitan todos (ningún
sistema normal tiene todos estos gestores de registro instalados y
corriendo) nos aseguramos que todos estos servicios provean una
dependencia virtual.
Examinemos la información de dependencia del servicio postfix.
Listado de Código 4.2: Información de dependencias de postfix |
depend() {
need net
use logger dns
provide mta
}
|
Como podemos ver, el servicio postfix:
-
requiere la dependencia (virtual) net (suministrada por, en
este caso, /etc/init.d/net.eth0)
-
usa la dependencia (virtual) logger (suministrada por, en
este caso, /etc/init.d/syslog-ng)
-
usa la dependencia virtual (virtual) dns (suministrada por,
en este caso, /etc/init.d/named)
-
provee la dependencia (virtual) mta (común a todos los
servidores de correo electrónico)
Controlando el órden
En algunos casos, tal vez no requiera un servicio determinado, pero
desea que inicie antes (o después) de otro servicio
si está disponible en el sistema (note la condicionalidad,
esto ya no es una dependencia) y en el mismo nivel de ejecución
(note la condicionalidad, solo involucra servicios del mismo nivel de
ejecución). Puede suministrar esta información usando los parámetros
before o after.
Como ejemplo, podemos ver la disposición del servicio portmap:
Listado de Código 4.3: La función depend() en el servicio portmap |
depend() {
need net
before inetd
before xinetd
}
|
También puede usar el carácter englobador para todos los servicios,
aunque no es aconsejable.
Listado de Código 4.4: Ejecutando un guión de inicio como el primer guión del nivel de ejecución |
depend() {
before *
}
|
Funciones standard
Junto con la función depend(), hará falta definir la función
start(), que contiene los comandos necesarios para inicializar
su servicio. Es aconsejable usar las funciones ebegin y
eend para informarle al usuario acerca de lo que está
ocurriendo:
Listado de Código 4.5: Ejemplo de función start() |
start() {
ebegin "Starting my_service"
start-stop-daemon --start --quiet --exec /path/to/my_service
eend $?
}
|
Si requiere más ejemplos de funciones start(), favor leer
directamente las fuentes de los guiones de inciio en su directorio
/etc/init.d. En lo que respecta el
start-stop-daemon, hay un excelente página man disponible en
caso de requerir mayor información:
Listado de Código 4.6: Buscando página man para el start-stop-daemon |
# man start-stop-daemon
|
Otras funciones que puede definir son: stop() y
restart(). ¡No es obligatorio definirlas! Nuestro sistema de
inicio es suficientemente inteligente para llevar a cabo esta
funciones solo, si usa el start-stop-daemon.
Adding Custom Options
Si desea que su guión de inicio soporte un mayor número de opciones de
las que hemos encontrado hasta ahora, debe agregar la opción a la
variable opts y crear una función con el mismo nombre de la
opción. Por ejemplo, para soportar una opción de nombre restartdelay:
Listado de Código 4.7: Soporte para la opción restartdelay |
opts="${opts} restartdelay"
restartdelay() {
stop()
sleep 3
start()
}
|
Variables para la configuración de servicios
No hay que hacer nada para soportar un archivo de configuración en
/etc/conf.d: si su guión de inicio se ejecuta, los
siguientes archivos serán automáticamente leídos (sourced) y las
variables estarán disponibles para usar.
- /etc/conf.d/<your init script>
- /etc/conf.d/basic
- /etc/rc.conf
También, si su guión de inicio provee una dependencia virtual (como
net), el archivo asociado a esa dependencia (el
/etc/conf.d/net) será leído también.
5. Variables de Entorno
5.a. ¿Variables de Entorno?
¿Qué son?
Una variable de entorno es un objeto designado para contener información usada por una
o más aplicaciones. Algunos usuarios (especialmente aquellos nuevos en Linux) encuentran esto un
poco extraño o inmanejable. Sin embargo esto no es cierto: usando variables de entorno
hace que cualquiera pueda cambiar una opción de configuración para una o más aplicaciones fácilmente.
Ejemplos Importantes
La siguiente tabla muestra un listado de variables de entorno usado por un sistema Linux y
describe su uso. Los valores de ejemplo se encuentran después de la tabla.
| Variable |
Descripción |
| PATH |
Esta variable contiene una lista de directorios separados por ":" en la cual el
sistema buscará los archivos ejecutables. Al introducir el nombre de un ejecutable
(como ls, rc-update o emerge) que no se
encuentre en un de los directorios listados, el sistema no lo encontrará, (a menos que
se introduzca la ruta completa, por ejemplo: /bin/ls).
|
| ROOTPATH |
Esta variable tiene la misma función que PATH, pero únicamente contiene
los directorios que el sistema debe revisar cuando el usuario root introduce un comando.
|
| LDPATH |
Esta variable contiene una lista de directorios separados por ":" en la cual
el enlazador dinámico busca para encontrar una librería.
|
| MANPATH |
Esta variable contiene una lista de directorios separados por ":" en la cual
el comando man busca las páginas de manual.
|
| INFODIR |
Esta variable contiene una lista de directorios separados por ":" en la cual
el comando info busca las páginas info.
|
| PAGER |
Esta variable contiene la ruta hacia el programa utilizado para mostrar el
contenido de los ficheros (como less o more).
|
| EDITOR |
Esta variable contiene la ruta hacia el programa utilizado para modificar el
contenido de los archivos (como nano o vi).
|
| KDEDIRS |
Esta variable contiene una lista de directorios separados por ":"
los cuales contienen material específico de KDE.
|
| CLASSPATH |
Esta variable contiene una lista de directorios separados por ":" los cuales
contienen las clases de Java.
|
| CONFIG_PROTECT |
Esta variable una lista de directorios separados por espacio los cuales
deben ser protegidos por Portage durante las actualizaciones.
|
| CONFIG_PROTECT_MASK |
Esta variable una lista de directorios separados por espacio los cuales
no deben ser protegidos por Portage durante las actualizaciones.
|
A continuación puedes encontrar ejemplos de definiciones para todas estas variables:
Listado de Código 1.1: Definiciones de ejemplo |
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf
|
5.b. Definiendo variables globalmente
El directorio /etc/env.d
Para centralizar la definición de estas variables, Gentoo introduce el directorio
/etc/env.d. Dentro de este directorio se encuentran varios
ficheros como por ejemplo 00basic, 05gcc, etc. los cuales contienen
las variables necesarias para la aplicación de la cual llevan el nombre.
Por ejemplo, al instalar gcc, un fichero llamado 05gcc
que contiene la definición de las siguientes variables, fue creado por
el ebuild:
Listado de Código 2.1: /etc/conf.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
|
Otras distribuciones le piden modificar o añadir definiciones de variables de
entorno semejantes en /etc/profile o en otros sitios. Por otro lado,
Gentoo nos hace (y a Portage) más fácil mantener y manejar las variables de entorno
sin tener que prestar atención a los numerosos ficheros que pueden contenerlas.
Por ejemplo, cuando gcc es actualizado, también es actualizado
el fichero /etc/env.d/05gcc sin ser necesaria ninguna interacción
por parte del usuario.
Esto no solo beneficia a Portage, sino también al usuario. En ocasiones se podrá
pedir establecer cierta variable de entorno para todo el sistema. Como ejemplo,
tomamos la variable http_proxy. En lugar de perder el tiempo con
/etc/profile, puedes crear el fichero (/etc/env.d/99local)
y introducir la(s) definición(es) en él:
Listado de Código 2.2: /etc/env.d/99local |
http_proxy="proxy.server.com:8080"
|
Usando el mismo fichero para todas las variables, se obtiene una visión rápida de las
variables que definidas por uno mismo.
El guión env-update
Varios archivos de /etc/env.d definen la variable PATH. esto
no es un error: cuando ejecute env-update, este concatenará las múltiples
definiciones antes de actualizar las variables de entorno, haciendo más fácil a
los paquetes (o usuarios) añadir sus propias opciones en las variables de entorno
sin interferir con los valores ya existentes.
El guión env-update concatenará los valores alfabéticamente ordenados por
el nombre de los ficheros de /etc/env.d. Esto es así porque muchos de
los ficheros de /etc/env.d empiezan por un número.
Listado de Código 2.3: Orden de actualización usado por env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
Cuando ejecute env-update, el guión creará todas las variables de entorno
y las colocará en /etc/profile.env (el cual es usado por
/etc/profile). Además, también extraerá la información de la
variable LDPATH y la usará para crear /etc/ld.so.conf.
Después de esto, ejecutará ldconfig para recrear el archivo usado por el
enlazador dinámico: /etc/ld.so.cache.
Si quiere observar el efecto de env-update inmediatamente después de ejecutarlo,
ejecute el siguiente comando para actualizar su entorno. Posiblemente, los usuarios que
instalaron Gentoo ellos mismos, recordarán estas instrucciones de la instalación:
Listado de Código 2.4: Actualizando el entorno |
# env-update && source /etc/profile
|
5.c. Definiendo variables locales
Específicas de usuario
No siempre queremos definir variables de entorno globales. Por ejemplo,
podríamos querer añadir /home/my_user/bin a la variable PATH,
pero no queremos que todos los usuarios de nuestro sistema lo tengan en su PATH.
Si queremos definir una variable localmente, debemos usar ~/.bashrc o
~/.bash_profile:
Listado de Código 3.1: Extendiendo el PATH para uso local en: ~/.bashrc |
PATH="${PATH}:/home/my_user/bin"
|
Cuando vuelva a iniciar la sesión, su variable PATH será actualizada.
Específicas de sesión
En ocasiones, se requieren definiciones aún más estrictas. Puede querer usar binarios
de un directorio temporal que ha creado sin tener que usar la trayectoria completa
a los binarios o sin editar ~/.bashrc. Para estos
momentos necesitará esto.
En este caso, puede definir la variable PATH en su sesión activa
usando el comando export. Mientra no cierre la sesión, la variable
PATH usará los valores temporales.
Listado de Código 3.2: Definiendo una variable específica a la sesión |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
C. Trabajando con Portage
1. Archivos y Directorios
1.a. Portage Files
Configuration Directives
Portage comes with a default configuration stored in
/etc/make.globals. When you take a look at it, you'll notice that
all Portage configuration is handled through variables. What variables Portage
listens to and what they mean are described later.
Since many configuration directives differ between architectures, Portage also
has a default configuration file inside your profile:
/etc/make.profile/make.defaults. We'll explain more about profiles
and the /etc/make.profile directory later on.
If you're planning on changing a configuration variable, don't alter
/etc/make.globals or /etc/make.profile/make.defaults.
Instead use /etc/make.conf which has precedence over
the previous files. You'll also find a /etc/make.conf.example. As
the name implies, this is merely an example file - Portage does not read in
this file.
You can also define a Portage configuration variable as an environment variable,
but we don't recommend this.
Profile-Specific Information
We've already encountered the /etc/make.profile directory. Well,
this isn't exactly a directory but a symbolic link to a profile, by default one
inside /usr/portage/profiles although you can create your own
profiles elsewhere and point to them. The profile this symlink points to is the
profile to which your system adheres.
A profile contains architecture-specific information for Portage, such as a
list of packages that belong to the system corresponding with that profile,
a list of packages that don't work (or are masked-out) for that profile, etc.
User-Specific Configuration
When you need to override Portage's behaviour regarding the installation of
software, you will end up editing files within /etc/portage. You
are highly recommended to use files within /etc/portage and
highly discouraged to override the behaviour through environment
variables!
Within /etc/portage you can create the following files:
-
package.mask which lists the packages you never want Portage to
install
-
package.unmask which lists the packages you want to be able to
install even though the Gentoo developers highly discourage you from
emerging them
-
package.keywords which lists the packages you want to be able
to install even though the package hasn't been found suitable for your
system or architecture (yet)
-
package.use which lists the USE flags you want to use for
certain packages without having the entire system use those USE flags
More information about the /etc/portage directory and a full list
of possible files you can create can be found in the Portage man page:
Listado de Código 1.1: Reading the Portage man page |
$ man portage
|
Changing Portage File & Directory Locations
The previously mentioned configuration files cannot be stored elsewhere -
Portage will always look for those configuration files at those exact locations.
However, Portage uses many other locations for various purposes: build
directory, source code storage, Portage tree location, ...
All these purposes have well-known default locations but can be altered to your
own taste through /etc/make.conf. The rest of this chapter explains
what special-purpose locations Portage uses and how to alter their placement on
your filesystem.
This document isn't meant to be used as a reference though. If you need 100%
coverage, please consult the Portage and make.conf man pages:
Listado de Código 1.2: Reading the Portage and make.conf man pages |
$ man portage
$ man make.conf
|
1.b. Storing Files
The Portage Tree
The Portage tree default location is /usr/portage. This is defined
by the PORTDIR variable. When you store the Portage tree elsewhere (by altering
this variable), don't forget to change the /etc/make.profile
symbolic link accordingly.
If you alter the PORTDIR variable, you might want to alter the following
variables as well since they will not notice the PORTDIR change. This is due to
how Portage handles variables: PKGDIR, DISTDIR, RPMDIR.
Prebuilt Binaries
Even though Portage doesn't use prebuilt binaries by default, it has extensive
support for them. When you ask Portage to work with prebuilt packages, it will
look for them in /usr/portage/packages. This location is defined by
the PKGDIR variable.
Source Code
Application source code is stored in /usr/portage/distfiles by
default. This location is defined by the DISTDIR variable.
RPM Files
Even though Portage cannot use RPM files, it is able to generate them using the
ebuild command (see The Ebuild
Application). The default location where Portage stores RPM files is
/usr/portage/rpm and is defined by the RPMDIR variable.
1.c. Building Software
Temporary Portage Files
Portage's temporary files are stored in /var/tmp by default. This
is defined by the PORTAGE_TMPDIR variable.
If you alter the PORTAGE_TMPDIR variable, you might want to alter the following
variables as well since they will not notice the PORTAGE_TMPDIR change. This
is due to how Portage handles variables: BUILD_PREFIX.
Building Directory
Portage creates specific build directories for each package it emerges inside
/var/tmp/portage. This location is defined by the BUILD_PREFIX
variable.
Live Filesystem Location
By default Portage installs all files on the current filesystem
(/), but you can change this by setting the ROOT environment
variable. This is useful when you want to create new build images.
1.d. Logging Features
Ebuild Logging
Portage can create per-ebuild logfiles, but only when the PORT_LOGDIR variable
is set to a location that is writable by Portage (the portage user). By default
this variable is unset.
2. Configuración por medio de Variables
2.a. Portage Configuration
As noted previously, Portage is configurable through many variables which
you should define in /etc/make.conf. Please refer to the
make.conf man page for more and complete information:
Listado de Código 1.1: Reading the make.conf man page |
$ man make.conf
|
2.b. Build-specific Options
Configure and Compiler Options
When Portage builds applications, it passes the contents of the following
variables to the compiler and configure script:
-
CFLAGS & CXXFLAGS define the desired compiler flags for C and C++
compiling.
-
CHOST defines the build host information for the application's configure
script
-
MAKEOPTS is passed to the make command and is usually set to define
the amount of parallelism used during the compilation. More information
about the make options can be found in the make man page.
The USE variable is also used during configure and compilations but has been
explained in great detail in previous chapters.
Merge Options
When Portage has merged a newer version of a certain software title, it will
remove the obsoleted files of the older version from your system. Portage gives
the user a 5 second delay before unmerging the older version. These 5 seconds
are defined by the CLEAN_DELAY variable.
2.c. Configuration File Protection
Portage's Protected Locations
Portage overwrites files provided by newer versions of a software title if the
files aren't stored in a protected location. These protected locations
are defined by the CONFIG_PROTECT variable and are generally configuration file
locations. The directory listing is space-delimited.
A file that would be written in such a protected location is renamed and the
user is warned about the presence of a newer version of the (presumable)
configuration file.
You can find out about the current CONFIG_PROTECT setting from the emerge
info output:
Listado de Código 3.1: Getting the CONFIG_PROTECT setting |
$ emerge info | grep 'CONFIG_PROTECT='
|
More information about Portage's Configuration File Protection is available
through emerge:
Listado de Código 3.2: More information about Configuration File Protection |
$ emerge --help config
|
Excluding Directories
To 'unprotect' certain subdirectories of protected locations you can use the
CONFIG_PROTECT_MASK variable.
2.d. Download Options
Server Locations
When the requested information or data is not available on your system, Portage
will retrieve it from the Internet. The server locations for the various
information and data channels are defined by the following variables:
-
GENTOO_MIRRORS defines a list of server locations which
contain source code (distfiles)
-
PORTAGE_BINHOST defines a particular server location containing prebuilt
packages for your system
A third setting involves the location of the rsync server which you use when you
update your Portage tree:
-
SYNC defines a particular server which Portage uses to fetch the
Portage tree from
The GENTOO_MIRRORS and SYNC variables can be set automatically through the
mirrorselect application. You need to emerge mirrorselect first
before you can use it. For more information, see mirrorselect's online
help:
Listado de Código 4.1: More information about mirrorselect |
# mirrorselect --help
|
If your environment requires you to use a proxy server, you can use the
HTTP_PROXY, FTP_PROXY and RSYNC_PROXY variables to declare a proxy server.
Fetch Commands
When Portage needs to fetch source code, it uses wget by default. You
can change this through the FETCHCOMMAND variable.
Portage is able to resume partially downloaded source code. It uses wget
by default, but this can be altered through the RESUMECOMMAND variable.
Make sure that your FETCHCOMMAND and RESUMECOMMAND stores the source code in the
correct location. Inside the variables you should use \${URI} and \${DISTDIR} to
point to the source code location and distfiles location respectively.
You can also define protocol-specific handlers with FETCHCOMMAND_HTTP,
FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP, and so on.
Rsync Settings
You cannot alter the rsync command used by Portage to update the Portage tree,
but you can set some variables related to the rsync command:
-
RSYNC_EXCLUDEFROM points to a file listing the packages and/or categories
rsync should ignore during the update process
-
RSYNC_RETRIES defines how many times rsync should try connecting to the
mirror pointed to by the SYNC variable before bailing out. This variable
defaults to 3.
-
RSYNC_TIMEOUT defines the amount of seconds an rsync connection can idle
before rsync sees the connection as timed-out. This variable defaults to 180
but dialup users probably want to set this to 300 or higher.
2.e. Gentoo Configuration
Branch Selection
You can change your default branch with the ACCEPT_KEYWORDS variable. It
defaults to your architecture's stable branch. More information on Gentoo's
branches can be found in the next chapter.
Portage Features
You can activate certain Portage features through the FEATURES variable. The
Portage Features have been discussed in previous chapters, such as Portage Features.
2.f. Portage Behaviour
Resource Management
With the PORTAGE_NICENESS variable you can augment or reduce the nice value
Portage runs with. The PORTAGE_NICENESS value is added to the current
nice value.
For more information about nice values, see the nice man page:
Listado de Código 6.1: More information about nice |
$ man nice
|
Output Behaviour
The NOCOLOR, which defaults to "false", defines if Portage should disable the
use of coloured output.
3. Mezcla de Ramales de Software
3.a. Using One Branch
The Stable Branch
The ACCEPT_KEYWORDS variable defines what software branch you use on your
system. It defaults to the stable software branch for your architecture, for
instance x86.
We recommend that you only use the stable branch. However, if you don't care
about stability this much and you want to help out Gentoo by submitting
bugreports to http://bugs.gentoo.org, read on.
The Testing Branch
If you want to use more recent software you can consider using the testing
branch instead. To have Portage use the testing branch, add a ~ in front of your
architecture.
For instance, to select the testing branch for the x86 architecture, edit
/etc/make.conf and set:
Listado de Código 1.1: Setting the ACCEPT_KEYWORDS variable |
ACCEPT_KEYWORDS="~x86"
|
If you update your system now, you will find out that lots of packages
will be updated. Mind you though: when you have updated your system to use the
testing branch there is usually no easy way back to the stable, official branch
(except for using backups of course).
3.b. Mixing Stable with Testing
The package.keywords file
You can ask Portage to allow the testing branch for particular packages but use
the stable branch for the rest of the system. To achieve this, add the package
category and name you want to use the testing branch of in
/etc/portage/package.keywords. For instance, to use the testing
branch for gnumeric:
Listado de Código 2.1: /etc/portage/package.keywords setting for gnumeric |
app-office/gnumeric
|
The same can be achieved when you add the correct keyword at the end of the
line, for instance for the x86 architecture:
Listado de Código 2.2: /etc/portage/package.keywords setting for gnumeric, full line |
app-office/gnumeric ~x86
|
Test Particular Versions
If you want to use a specific software version from the testing branch but you
don't want Portage to use the testing branch for subsequent versions, you can
add in the version in the package.keywords file. In this case you
must use the = operator. You can also enter a version range
using the <=, <, > or >= operators.
In any case, if you add version information, you must use an operator. If
you leave out version information, you cannot use an operator.
In the following example we ask Portage to accept gnumeric-1.2.13:
Listado de Código 2.3: Using a particular gnumeric version |
=app-office/gnumeric-1.2.13
|
3.c. Using Masked Packages
The package.unmask file
When a package has been masked by the Gentoo developers and you still want to
use it despite the reason mentioned in the package.mask file
(situated in /usr/portage/profiles by default), add the
exact same line in /etc/portage/package.unmask.
For instance, if =net-mail/hotwayd-0.8 is masked, you can unmask it by
adding the exact same line in the package.unmask file:
Listado de Código 3.1: /etc/portage/package.unmask |
=net-mail/hotwayd-0.8
|
The package.mask file
When you don't want Portage to take a certain package or a specific version of a
package into account you can mask it yourself by adding an appropriate line to
/etc/portage/package.mask.
For instance, if you don't want Portage to install newer kernel sources than
development-sources-2.6.8.1, you add the following line to
package.mask:
Listado de Código 3.2: /etc/portage/package.mask example |
>sys-kernel/development-sources-2.6.8.1
|
4. Herramientas Adicionales de Portage
4.a. etc-update
etc-update is a tool that aids in merging the
._cfg0000_<name> files. It provides an interactive merging
setup and can also auto-merge trivial changes.
._cfg0000_<name> files are generated by Portage when it wants
to store a file in a directory protected by the CONFIG_PROTECT variable.
Running etc-update is pretty straight-forward:
Listado de Código 1.1: Running etc-update |
# etc-update
|
After merging the straightforward changes, you will be prompted with a list of
protected files that have an update waiting. At the bottom you are greeted by
the possible options:
Listado de Código 1.2: etc-update options |
Please select a file to edit by entering the corresponding number.
(-1 to exit) (-3 to auto merge all remaining files)
(-5 to auto-merge AND not use 'mv -i'):
|
If you enter -1, etc-update will exit without performing any
changes. If you enter -3 or -5, all listed configuration
files will be overwritten with the newer versions. It is therefore very
important to first select the configuration files that should not be
automatically updated. This is simply a matter of entering the number listed to
the left of that configuration file.
As an example, we select the configuration file /etc/pear.conf:
Listado de Código 1.3: Updating a specific configuration file |
Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again
|
You can now see the differences between the two files. If you believe that the
updated configuration file can be used without problems, enter 1. If you
believe that the updated configuration file isn't necessary, or doesn't provide
any new or useful information, enter 2. If you want to interactively
update your current configuration file, enter 3.
There is no point in further elaborating the interactive merging here. For
completeness sake, we will list the possible commands you can use while you are
interactively merging the two files. You are greeted with two lines (the
original one, and the proposed new one) and a prompt at which you can enter one
of the following commands:
Listado de Código 1.4: Commands available for the interactive merging |
ed: Edit then use both versions, each decorated with a header.
eb: Edit then use both versions.
el: Edit then use the left version.
er: Edit then use the right version.
e: Edit a new version.
l: Use the left version.
r: Use the right version.
s: Silently include common lines.
v: Verbosely include common lines.
q: Quit.
|
When you have finished updating the important configuration files, you can now
automatically update all the other configuration files. etc-update will
exit if it doesn't find any more updateable configuration files.
4.b. dispatch-conf
Using dispatch-conf you are able to merge updates to your configuration
files while keeping track of all changes. dispatch-conf stores the
differences between the configuration files as patches or by using the RCS
revision system.
Like etc-update, you can ask to keep the configuration file as-is, use
the new configuration file, edit the current one or merge the changes
interactively. However, dispatch-conf also has some nice additional
features:
-
Automatically merge configuration file updates that only contain updates to
comments
-
Automatically merge configuration files which only differ in the amount of
whitespace
Make certain you edit /etc/dispatch-conf.conf first and create the
directory referenced by the archive-dir variable.
For more information, check out the dispatch-conf man page:
Listado de Código 2.1: Reading the dispatch-conf man page |
$ man dispatch-conf
|
4.c. quickpkg
With quickpkg you can create archives of the packages that are already
merged on your system. These archives can be used as prebuilt packages. Running
quickpkg is straightforward: just add the names of the packages you want
to archive.
For instance, to archive curl, arts and procps:
Listado de Código 3.1: Example quickpkg usage |
# quickpkg curl arts procps
|
The prebuilt packages will be stored in /usr/portage/packages/All.
Symbolic links pointing to these packages are placed in
/usr/portage/packages/<category>.
5. Divergiendo del Arbol Oficial
5.a. Using a Portage Tree Subset
Excluding Packages/Categories
You can selectively update certain categories/packages and ignore the other
categories/packages. We achieve this by having rsync exclude
categories/packages during the emerge --sync step.
By default, rsync will check the contents of
/etc/portage/rsync_excludes (if it exists) which contains the
categories or packages that you don't want rsync to update.
Note however that this may lead to dependency issues since new, allowed packages
might depend on new but excluded packages.
5.b. Adding Unofficial Ebuilds
Defining a Portage Overlay Directory
You can ask Portage to use ebuilds that are not officially available through the
Portage tree. Create a new directory (for instance
/usr/local/portage) in which you store the 3rd-party ebuilds. Use
the same directory structure as the official Portage tree!
Then define PORTDIR_OVERLAY in /etc/make.conf and have it point to
the previously defined directory. When you use Portage now, it will take those
ebuilds into account as well without removing/overwriting those ebuilds the next
time you run emerge --sync.
5.c. Non-Portage Maintained Software
Using Portage with Self-Maintained Software
In some cases you want to configure, install and maintain software yourself
without having Portage automate the process for you, even though Portage
can provide the software titles. Known cases are kernel sources and nvidia
drivers. You can configure Portage so it knows that a certain package is
manually installed on your system. This process is called injecting and
supported by Portage through the
/etc/portage/profile/package.provided file.
For instance, if you want to inform Portage about
development-sources-2.6.8.1 which you've installed manually, add the
following line to /etc/portage/profile/package.provided:
Listado de Código 3.1: Example line for package.provided |
sys-kernel/development-sources-2.6.8.1
|
6. La Aplicación de Ebuilds
6.a. Emerge and Ebuild
The ebuild application is a lower level interface to the Portage system.
Using this application you can execute specific actions against a given ebuild.
For instance, you can perform the individual merging steps by yourself.
Using ebuild is more for development purposes; more information about
ebuild can therefore be found in the Developers Handbook. However,
we will explain what ebuild instances are invoked by Portage during the merge
process of a certain software title, and how to invoke the post-configuration
steps some ebuilds allow you to perform.
6.b. Manually Installing Software
Fetching the Sources & Checksumming
Whenever you invoke ebuild against a given ebuild file, it will verify if
the checksums of all involved files are equal to those given in the
accompanying Manifest or
files/digest-<name>-<version> file. This
happens after the sources have been fetched.
To fetch the sources using ebuild, run:
Listado de Código 2.1: Fetching the sources |
# ebuild path/to/ebuild fetch
|
If the ebuild's md5sum does not match the one listed in the
Manifest file, or one of the downloaded sources don't match those
listed in the files/digest-<package> file, you will receive
an error similar to this:
Listado de Código 2.2: Ebuild checksum failure |
!!! File is corrupt or incomplete. (Digests do not match)
>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee
>>> your file's digest: f10392b7c0b2bbc463ad09642606a7d6
|
The subsequent line will mention the erroneous file.
If you are certain that the sources you've fetched and the ebuild itself are
valid, you can regenerate the Manifest and
digest-<package> file using ebuild's digest
functionality:
Listado de Código 2.3: Regenerate Manifest and digest |
# ebuild path/to/ebuild digest
|
Unpacking the Sources
To unpack the sources in /var/tmp/portage (or any other directory
location you have specified in /etc/make.conf), run ebuild's
unpack functionality:
Listado de Código 2.4: Unpacking the sources |
# ebuild path/to/ebuild unpack
|
This will execute the ebuild's src_unpack() function (which defaults to plain
extraction if no src_unpack() function is defined). It is also in this step that
all necessary patches are applied.
Compiling the Sources
The next step in the merge process is to compile the sources. The
ebuild's compile functionality takes care of this step by executing the
src_compile() function in the ebuild. This also includes the configure steps if
appropriate.
Listado de Código 2.5: Compiling the sources |
# ebuild path/to/ebuild compile
|
You are advised to edit the ebuild's src_compile() function if you want to
change the compilation instructions. However, you can also trick Portage into
believing that the ebuild application has finished the compile steps. Run
all necessary commands yourself and create an empty file called
.compiled in the working directory:
Listado de Código 2.6: Informing Portage about the finished compilation jobs |
# touch .compiled
|
Installing the Files in a Temporary Location
In the next step Portage will install all necessary files in a temporary
location. This directory will then contain all files that are to be merged on
the live filesystem. You can accomplish this by running ebuild's install
functionality, which executes the ebuild's src_install() function:
Listado de Código 2.7: Installing the files |
# ebuild path/to/ebuild install
|
Merging the Files onto the Live Filesystem
The final step is to merge all files onto the live filesystem and register those
in the Portage backend. ebuild calls this step "qmerge" and involves the
following steps:
- Execute the pkg_preinst() function if specified
- Copy over all files to the live filesystem
- Register the files in the Portage backend
- Execute the pkg_postinst() function if specified
Run ebuild's qmerge functionality to accomplish these steps:
Listado de Código 2.8: Merging the files on the live filesystem |
# ebuild path/to/ebuild qmerge
|
Cleaning the Temporary Directory
Finally you can clean the temporary directory using ebuild's clean
functionality:
Listado de Código 2.9: Cleaning the temporary directory |
# ebuild path/to/ebuild clean
|
6.c. Additional Ebuild Features
Running all Merge-related Commands
Using ebuild's merge functionality you can run the fetch, unpack,
compile, install and qmerge commands in one go:
Listado de Código 3.1: Installing software |
# ebuild path/to/ebuild merge
|
Performing Configuration Actions
Some applications include instructions that configure the package further on
your system. These instructions can be interactive and are therefore not
automatically executed. To run these configuration steps, which are enlisted in
the ebuild's (optional) config() function, use ebuild's config
functionality:
Listado de Código 3.2: Configuring a package |
# ebuild path/to/ebuild config
|
Building an (RPM) Package
You can instruct Portage to create a binary package of an ebuild or even an RPM
file. Use ebuild's package or rpm functionality to create these archives.
There are a few differences between those functionalities though:
-
The package functionality is a lot like the merge functionality, executing
all necessary steps (fetch, unpack, compile, install) before creating the
package
-
The rpm functionality builds an RPM package from the files created
after having run ebuild's install functionality
Listado de Código 3.3: Creating packages |
# ebuild path/to/ebuild package
# ebuild path/to/ebuild rpm
|
The created RPM file however does not contain the ebuild's dependency
information.
6.d. More Information
Please consult the following man pages for more information about Portage, the
ebuild application and the ebuild files:
Listado de Código 4.1: Man pages |
$ man portage
$ man emerge
$ man ebuild
$ man 5 ebuild
|
You will also find more development-related information in the Developers Handbook.
El contenido de este documento está registrado bajo los términos de
la licencia
Creative Commons - Reconocimiento / Compartir Igual
|