Contenido:
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 mal, 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:
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 a utilizar.
Algunas veces se puede 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.
Puedes instalar Gentoo de diferentes formas. Puedes descargar e instalar uno de nuestros 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 abarca la instalación utilizando un CD de instalación de Gentoo o, en algunos casos, instalación por red. La instalación asume que usted quiere instalar la última versión de cada paquete. Si quisiera llevar a cabo una instalación sin conexión a la red, debería leer los Manuales Gentoo 2008.0 el cual contiene las instrucciones de instalación para un entorno sin conexión a la red.
También tenga en cuenta que, si está planeando utilizar GRP (Gentoo Reference Platform, una colección de paquetes precompilados que pueden ser utilizados justo después de la instalación de Gentoo), debe seguir las instrucciones correspondientes a los Manuales Gentoo 2008.0 sin conexión a la 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 oficiales si su arquitectura tiene este documento disponible.
También existen otras posibilidades: puede compilar el sistema completo desde el principio o utilizar un entorno pre-compilado 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.
Si tienes algún problema con la instalación (o con el documento de instalación), por favor, 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 :-)
Antes de empezar, enumeraremos los requisitos de hardware necesarios para instalar con éxito Gentoo en su máquina.
| Sistema Sparc | Por favor consulte la lista de compatibilidad Gentoo Linux/SPARC64 o el FAQ UltraLinux |
| CPU | Actualmente soportamos solo CPUs sparc64 |
| Memoria | 64 MB |
| Espacio en disco | 1.5 GB (excluyendo el espacio de intercambio (swap)) |
| Espacio de intercambio | Al menos 256 MB |
2.b. Los CDs de instalación de Gentoo
Los CDs de instalación de Gentoo son CDs arrancables con un entorno Gentoo 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 CDs de instalación le permiten arrancar, configurar la red, inicializar las particiones y empezar a instalar Gentoo desde Internet. Actualmente disponemos de dos CDs de instalación los cuales son perfectamente adecuados para instalar Gentoo siempre y cuando esté pensando en llevar a cabo una instalación basada en conexión a Internet utilizando las últimas versiones de los paquetes.
Si quiere instalar Gentoo sin una conexión activa a Internet, por favor utilice las instrucciones de instalación descritas en los Manuales Gentoo 2008.0.
Los dos CDs de instalación que actualmente están disponibles son:
Para ayudarle a decidir que CD de instalación necesita, hemos anotado las ventajas y desventajas más importantes de cada CD.
CD de instalación mínimo de Gentoo
El CD mínimo de instalación se conoce como install-sparc64-minimal-2008.0.iso y sólo ocupa 44 MB de espacio en disco. Puede utilizar este CD para instalar Gentoo, pero siempre con una conexión activa a Internet.
| CD de instalación mínimo | Pros y contras |
| + | La descarga más pequeña |
| - | No contiene ficheros stage3, ni imagen de Portage, ni paquetes precompilados y por lo tanto no es recomendada para instalaciones sin red. |
CD de instalación universal de Gentoo
El CD de instalación universal se denomina install-sparc-universal-2008.0.iso y usa 295 MB. Puede utilizar este CD para instalar Gentoo, incluso sin conexión activa a Internet.
| CD de instalación universal | Pros y contras |
| + | Contienen todo lo que necesita. Puede instalar incluso sin conexión a la red. |
| - | >Es una descarga enorme |
Tal vez pueda encontrar un CD llamado Package CD en alguno de nuestros servidores réplica. Este CD no es de instalación pero contiene una fuente importante de recursos que pueden ser utilizados durante una instalación sin conexión a la red. Contiene paquetes precompilados (conocidos como GRP) que permiten una rápida y fácil instalación de aplicaciones adicionales (como pueden ser (OpenOffice.org, KDE, GNOME, ...) inmediatamente después de una instalación de Gentoo sin red.
Si pretende utilizar el CD de paquetes para instalar aplicaciones de una manera más rápida, conviene asegurarse que se utilizar la misma subarquitectura que el tarball de stage3 que se está empleando.
El fichero comprimido (tarball) Stage3
Un fichero comprimido stage3 contiene un entorno Gentoo mínimo, que permite continuar la instalación de Gentoo con las instrucciones de este manual. Antes el manual de Gentoo describía la instalación utilizando uno de los tres ficheros de fases (stage). Aunque Gentoo sigue ofreciendo los ficheros de stage1 y stage2, el método de instalación oficial utiliza el fichero stage3. Si está interesado en llevar a cabo la instalación de Gentoo utilizando stage1 o stage2, por favor lea las preguntas frecuentes sobre ¿Cómo instalo Gentoo utilizando un fichero stage1 o stage2?
2.c. Descargar, grabar y arrancar un CD de instalación Gentoo
Descargar y grabar los CDs de instalación Gentoo
Ha elegido usar un CD de instalación Gentoo. Empezaremos por descargar y grabar el CD eligido. Ya hablamos anteriormente de los distintos CD de instalación disponibles, pero ¿dónde podemos encontrarlos?
Puede descargar cualquiera de los CDs (y si quiere, también un CD de Paquetes) desde uno de nuestros servidores réplica. Los CD de instalación se encuentran en el directorio releases/sparc/2008.0/sparc64/installcd.
Dentro del directorio encontrará los llamados fichero ISO. Estos son imágenes de CD completas que puede grabar en un CD-R.
En caso que quiera saber si el fichero que descargó está corrupto, puede verificar la suma de control MD5 de su fichero y compararla con la que nosotros proporcionamos (tal como install-sparc64-minimal-2008.0.iso.DIGESTS). Puede revisar las sumas de control con md5sum de Linux/Unix 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 fichero termina con .asc). Descargue el fichero de firma y obtenga la llave pública:
Listado de Código 3.1: Obtener la llave pública |
$ gpg --keyserver subkeys.pgp.net --recv-keys 17072058
|
Ahora verificamos la firma:
Listado de Código 3.2: Verificar la firma criptográfica |
$ gpg --verify <fichero de firma> <fichero iso descargado>
|
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 .
Inserte el CD de instalación Gentoo en la unidad de CD-ROM y arranque su sistema. Durante el inicio, presione Stop-A para entrar al OpenBootPROM (OBP). Una vez ahí, arranque a partir del CD-ROM:
Listado de Código 3.3: Arrancar el CD de instalación |
ok boot cdrom
|
Será saludado por el gestor de arranque SILO (en el CD de instalación). Puede pulsar Enter para obtener más ayuda si lo desea. Teclee gentoo y pulse Enter para continuar arrancando el sistema.
Listado de Código 3.4: Continuar el arranque desde el CD de instalación |
boot: gentoo
|
Una vez que haya arrancado el CD de instalación, automáticamente será ingresado al sistema.
Debería tener un intérprete de comandos en modo superusuario (con el símbolo "#") en la consola actual. También encontrará un intérprete de comandos en modo superusuario en la consola serial (ttyS0).
Continúe con la Configuración adicional de hardware.
Configurando Hardware Adicional
Cuando arranca el CD de instalación, 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 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
|
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.6: Cambiar la contraseña de root |
# passwd New password: (Escriba su nueva contraseña) Re-enter password: (Escríbala de nuevo) |
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 "john".
Listado de Código 3.7: Crear una cuenta de usuario |
# useradd john # passwd john New password: (Escriba la contraseña de john) Re-enter password: (Escriba otra vez la contraseña de john) |
Puede cambiar su identificador de usuario desde root para usar la del nuevo usuario usando su:
Listado de Código 3.8: Cambiar de usuario |
# su - john
|
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 links para leerla:
Listado de Código 3.9: Ver la Documentación en CD |
# links /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 links, 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.10: Ver la Documentación en Línea |
# links http://www.gentoo.org/doc/es/handbook/handbook-sparc.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.11: 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.
¿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 CD de instalación, son: 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 1.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 |
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.2: Definiendo los servidores proxy |
(Si el proxy filtra el tráfico HTTP) # export http_proxy="http://proxy.gentoo.org:8080" (Si el proxy filtra el tráfico FTP) # export ftp_proxy="ftp://proxy.gentoo.org:8080" (Si el proxy filtra el tráfico RSYNC) # 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.3: Añadiendo usuario/contraseña a la variable del proxy |
http://nombreusuario:contraseña@proxy.gentoo.org:8080 |
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 1.4: Más pruebas de la red |
# ping -c 3 www.gentoo.org
|
¿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.b. 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 o sin cables), pppoe-setup (para usuarios de ADSL) o pptp (para usuarios de PPTP disponible para x86, amd64, alpha, ppc y ppc64).
Si su medio de instalación no contiene ninguna de estas herramientas, continúe con Configuración Manual de la Red.
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 2.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.
Asumiendo que requiere PPPoE para conectar a Internet, los CDs de instalación (en cualquiera de sus versiones) ha sido pensado para facilitarle el trabajo incluyendo ppp. Use el script pppoe-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 2.2: Utilizar ppp |
# pppoe-setup # pppoe-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.
Si requiere soporte PPTP, puede usar pptpclient que se incluye en nuestros CDs de instalación. 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 2.3: Editar /etc/ppp/chap-secrets |
# nano -w /etc/ppp/chap-secrets
|
Ajuste ahora /etc/ppp/options.pptp si es necesario:
Listado de Código 2.4: Editar /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 2.5: Conectar a un servidor por línea telefónica |
# pptp <server ip>
|
Ahora continúe con Preparando los discos.
3.c. Configuración Manual de la Red
Cargando los módulos de red apropiados
Cuando el CD de instalación 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 pppoe-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 3.1: Buscar 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 3.2: Usar modprobe para cargar el módulo kernel |
(Como ejemplo, cargaremos el módulo pcnet32) # 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 3.3: Comprobar 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 3.4: Comprobar 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 ya se tiene disponible una tarjeta de red detectada, puede reintentar net-setup o pppoe-setup otra vez (que deberían funcionar ahora), pero para los que tengan problemas, explicaremos como configurar su red manualmente.
Seleccione una de las siguientes secciones basándose en su configuración de red.
DHCP (Protocolo de Configuración Dinámica de Anfitrión) 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 3.5: Usando dhcpcd |
# dhcpcd eth0 Algunos administradores de red requieren que utilice el nombre del equipo y el dominio que proporciona el servidor DHCP. Si es el caso, utilice # 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.
Nota: Existe soporte para iwconfig en CDs de instalación para las arquitecturas x86, amd64 y ppc. 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 3.6: Mostrar 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 puede ser wlan0 o ra0 en lugar de eth0. Ejecute iwconfig sin más parámetros para determinar cual es el nombre de dispositivo correcto. |
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:
Nota: Si la red inalámbrica está configurada para usar claves WPA o WPA2, tendrá que usar wpa_supplicant. Para más información acerca de la configuración de redes inalámbricas en Gentoo Linux, por favor lea el capítulo Redes Inalámbricas del Manual Gentoo. |
Listado de Código 3.7: Cambiar ESSID y/o añadiendo una clave WEP |
(Esto asigna el nombre de "GentooNode" a nuestra red) # iwconfig eth0 essid GentooNode (Esto asigna una clave WEP hexadecimal) # iwconfig eth0 key 1234123412341234abcd (Esto asigna una clave ASCII , añadiendo al principio "s:") # 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 3.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 3.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 3.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 |
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 3.11: Utilizar 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 3.12: Utilizar route |
# route add default gw ${GATEWAY}
|
Ahora abra /etc/resolv.conf con su editor favorito (en nuestro ejemplo, usaremos nano):
Listado de Código 3.13: Crear /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 3.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.a. Introducción a los 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 de disco llamada /dev/sda. Las unidades SCSI y Serial ATA son etiquetadas mediante /dev/sd*; incluso las unidades IDE son conocidas como /dev/sd* con el nuevo framework libata del kernel. Si está utilizando el antigo framework de unidades, entonces la primera unidad IDE será /dev/hda.
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.
Aunque teóricamente es posible utilizar el disco duro completo para albergar el sistema Linux, en la práctica esto casi nunca se hace. En su lugar, los dispositivos de bloque enteros se dividen en partes más pequeñas y manejables. Estas se conocen como particiones o slices.
La primera partición en el primer disco SCSI es /dev/sda1, la segunda /dev/sda2 y así sucesivamente.
La tercera partición en sistemas Sun está reservada y demarca al "disco completo". Esta partición no debe contener un sistema de ficheros.
Los usuarios acostumbrados al esquema de particionamiento de DOS deben notar que las etiquetas de disco ("disklabels") Sun no tienen particiones "primarias" ni "extendidas". En cambio, por cada disco hay disponibles hasta ocho particiones, estando reservada la tercera.
4.b. Diseñando un Esquema de Particionamiento
Esquema de Particionamiento predeterminado
Si no está interesado en diseñar un esquema de particionamiento, la tabla mostrada a continuación sugiere un punto de partida apropiado para la mayoría de los sistemas.
Note que en general el uso de una partición /boot separada no se recomienda en SPARC, pues complica la configuración del gestor de arranque.
| Partición | Sistema de ficheros | Tamaño | Punto de montaje | Descripción |
| /dev/sda1 | ext3 | <2 GByte | / | Partición raíz. Para sistemas sparc64 con versiones antiguas del OBP, esta partición debe ser menor de 2 GBytes y además ser la primera partición en el disco. |
| /dev/sda2 | swap | 512 MBytes | Ninguno | Partición de intercambio. Para el bootstrap y ciertas compilaciones grandes se requiere al menos de 512 MBytes de memoria RAM (incluyendo la memoria de intercambio ("swap")). |
| /dev/sda3 | Ninguno | Disco completo | Ninguno | Partición correspondiente al disco completo. Indispensable en sistemas SPARC. |
| /dev/sda4 | ext3 | Al menos 2 GBytes | /usr | Partición /usr. Aquí se instalan las aplicaciones. Por omisión, esta partición también se usa para datos de Portage (que toman cerca de de 500 MBytes excluyendo el código fuente). |
| /dev/sda5 | ext3 | Al menos 1GByte | /var | Partición /var. Se utiliza para datos generados por los programas. Portage usa de forma predeterminada esta partición para espacio temporal mientras compila. Algunas aplicaciones grandes como Mozilla y OpenOffice.org necesitan más de 1 GByte de espacio temporal al compilar. |
| /dev/sda6 | ext3 | El resto del espacio en disco | /home | Partición /home. Utilizada para los directorios personales de los usuarios. |
4.c. Utilizando fdisk para particionar su disco
Las siguientes instrucciones explican cómo particionar el disco duro según el esquema descrito anteriormente:
| Partición | Descripción |
| /dev/sda1 | / |
| /dev/sda2 | Partición de intercambio (swap) |
| /dev/sda3 | Partición del disco completo |
| /dev/sda4 | /usr |
| /dev/sda5 | /var |
| /dev/sda6 | /home |
Cambie el esquema de particionamiento según su propio criterio. Recuerde mantener la partición raíz totalmente dentro de los primeros 2 GBytes del disco en sistemas antiguos. También existe un límite de 15 particiones para discos SCSI y SATA.
Inicie fdisk pasándole su disco como argumento:
Listado de Código 3.1: Iniciar fdisk |
# fdisk /dev/sda
|
Debería ver el intérprete de comandos de fdisk:
Listado de Código 3.2: El intérprete de comandos de fdisk |
Command (m for help): |
Para ver las particiones disponibles, escriba p:
Listado de Código 3.3: Listar las particiones disponibles |
Command (m for help): p
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 8635 cylinders
Units = cylinders of 2048 * 512 bytes
Device Flag Start End Blocks Id System
/dev/sda1 0 488 499712 83 Linux native
/dev/sda2 488 976 499712 82 Linux swap
/dev/sda3 0 8635 8842240 5 Whole disk
/dev/sda4 976 1953 1000448 83 Linux native
/dev/sda5 1953 2144 195584 83 Linux native
/dev/sda6 2144 8635 6646784 83 Linux native
|
Note la aparición de Sun disk label en la salida. Si esto no sale, entonces el disco está usando particionamiento de DOS y no de Sun. En ese caso, teclee s para asegurarse que el disco tiene una tabla de partición Sun:
Listado de Código 3.4: Creación de una etiqueta de disco Sun (Sun Disklabel) |
Command (m for help): s Building a new sun disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Drive type ? auto configure 0 custom (with hardware detected defaults) a Quantum ProDrive 80S b Quantum ProDrive 105S c CDC Wren IV 94171-344 d IBM DPES-31080 e IBM DORS-32160 f IBM DNES-318350 g SEAGATE ST34371 h SUN0104 i SUN0207 j SUN0327 k SUN0340 l SUN0424 m SUN0535 n SUN0669 o SUN1.0G p SUN1.05 q SUN1.3G r SUN2.1G s IOMEGA Jaz Select type (? for auto, 0 for custom): 0 Heads (1-1024, default 64): Using default value 64 Sectors/track (1-1024, default 32): Using default value 32 Cylinders (1-65535, default 8635): Using default value 8635 Alternate cylinders (0-65535, default 2): Using default value 2 Physical cylinders (0-65535, default 8637): Using default value 8637 Rotation speed (rpm) (1-100000, default 5400): 10000 Interleave factor (1-32, default 1): Using default value 1 Extra sectors per cylinder (0-32, default 0): Using default value 0 |
Busque los valores correctos en la documentación de su disco. La opción 'auto configure' normalmente no funciona.
Eliminación de las particiones existentes
Es hora de eliminar las particiones existentes en el disco. Para ello teclee d y presione intro. Se le preguntará por el número de partición que desearía eliminar. Para borrar la partición /dev/sda1 ya existente teclee:
Listado de Código 3.5: Eliminar una partición |
Command (m for help): d Partition number (1-4): 1 |
No debería eliminar la partición 3 (partición de disco completo). Esta es indispensable. Si esta partición no existe, siga las instrucciones para la "Creación de una etiqueta de disco Sun ("Sun Disklabel")" indicadas más arriba.
Luego de eliminar todas las particiones salvo la de "disco completo", debería tener un esquema de particionamiento similar al siguiente:
Listado de Código 3.6: Ver un esquema de particionamiento vacío |
Command (m for help): p
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 8635 cylinders
Units = cylinders of 2048 * 512 bytes
Device Flag Start End Blocks Id System
/dev/sda3 0 8635 8842240 5 Whole disk
|
Estamos listos para crear la partición raíz. Para hacer esto, teclee n para crear una nueva partición, luego teclee 1 para crear la partición raíz. Cuando se le pregunte por el valor del primer cilindro, presione intro. Asimismo cuando el sistema solicite el valor del último cilindro, teclee +512M para crear una partición de 512MBytes de tamaño. Asegúrese que toda la partición raíz está dento de los primeros 2GBytes del disco. Puede ver la salida de estos pasos a continuación:
Listado de Código 3.7: Crear la partición raíz |
Command (m for help): n Partition number (1-8): 1 First cylinder (0-8635): (presione Intro) Last cylinder or +size or +sizeM or +sizeK (0-8635, default 8635): +512M |
Ahora, cuando teclee p, debería ver impreso el siguiente esquema de particionamiento:
Listado de Código 3.8: Listado del esquema de particionamiento |
Command (m for help): p
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 8635 cylinders
Units = cylinders of 2048 * 512 bytes
Device Flag Start End Blocks Id System
/dev/sda1 0 488 499712 83 Linux native
/dev/sda3 0 8635 8842240 5 Whole disk
|
Creación de una partición de intercambio ("swap")
A continuación, vamos a crear ahora la partición de intercambio. Para ello, teclee n para crear una nueva partición, y luego 2 para para crear la segunda partición, /dev/sda2 en nuestro caso. Cuando el sistema solicite introducir el valor del primer cilindro, pulse intro y cuando solicite el valor del último, teclee +512M para crear una partición de 512 Mb. Cuando lo haya hecho, teclee t para ajustar el tipo de partición y luego teclee 82 para fijar el tipo "Linux Swap". Una vez completados estos pasos, al teclear p visualizará una tabla de particiones que es similar a esta:
Listado de Código 3.9: Listado de las particiones disponibles |
Command (m for help): p
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 8635 cylinders
Units = cylinders of 2048 * 512 bytes
Device Flag Start End Blocks Id System
/dev/sda1 0 488 499712 83 Linux native
/dev/sda2 488 976 499712 82 Linux swap
/dev/sda3 0 8635 8842240 5 Whole disk
|
Creación de las particiones /usr, /var y /home
Finalmente vamos a crear las particiones /usr, /var y /home. Tal como antes, teclee n para crear una partición nueva, luego teclee 4 para crear la tercera partición, /dev/sda4 en nuestro caso. Cuando al pedir el valor del primer cilindro, pulse intro y al pedir el valor del último, ingrese +2048M para crear una partición de 2 GBytes de tamaño. Repita este proceso para sda5 y sda6 usando tamaños de acuerdo a su criterio. Al terminar, debería ver algo como:
Listado de Código 3.10: Listado completo de la tabla de particiones |
Command (m for help): p
Disk /dev/sda (Sun disk label): 64 heads, 32 sectors, 8635 cylinders
Units = cylinders of 2048 * 512 bytes
Device Flag Start End Blocks Id System
/dev/sda1 0 488 499712 83 Linux native
/dev/sda2 488 976 499712 82 Linux swap
/dev/sda3 0 8635 8842240 5 Whole disk
/dev/sda4 976 1953 1000448 83 Linux native
/dev/sda5 1953 2144 195584 83 Linux native
/dev/sda6 2144 8635 6646784 83 Linux native
|
Para guardar el esquema de particionamiento y salir de fdisk, teclee w:
Listado de Código 3.11: Guardar y salir de fdisk |
Command (m for help): w
|
Ahora que sus particiones están creadas, puede proseguir con la Creación de Sistemas de Ficheros.
4.d. Creación de Sistemas de Ficheros
Ahora que sus particiones están creadas, es hora de colocarles un sistema de ficheros. Si no le importa el tipo de sistema de ficheros y está conforme con la opción predeterminada del manual, continúe con Creación de un Sistema de Ficheros en una Partición. En caso contrario, siga leyendo para aprender sobre los sistemas de ficheros disponibles ...
Varios sistemas de ficheros están disponibles, algunos son estables en la arquitectura SPARC. Se sabe que ext2 y ext3, por ejemplo, funcionan correctamente. Sistemas de ficheros alternativos puede que no funcionen correctamente.
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. Si intenta instalar Gentoo en un disco muy pequeño (de menos de 4GB), entonces necesitará indicarle a ext2 que reserve suficientes nodos i cuando cree el sistema de ficheros, ejecutando mke2fs -T small /dev/<device>.
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. Utiliza un árbol HTree como índice que permite un alto rendimiento en casi todas las situaciones. En resumen ext3 es un sistema de ficheros muy bueno y fiable. Ext3 está recomendado en sistemas de ficheros para cualquier propósito y cualquier plataforma. Si intenta instalar Gentoo en un disco muy pequeño (de menos de 4GB), entonces necesitará indicarle a ext2 que reserve suficientes nodos i cuando cree el sistema de ficheros, ejecutando mke2fs -j -T small /dev/<device>.
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 |
Por ejemplo, para formatear la partición raíz (/dev/sda1 en nuestro caso) como ext2 y las particiones /usr, /var y /home (/dev/sda4, 5 y 6, de acuerdo a nuestro ejemplo respectivamente) como 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/sda1 # mke2fs -j /dev/sda4 # mke2fs -j /dev/sda5 # mke2fs -j /dev/sda6 |
Activando la Partición de Intercambio
mkswap es el comando usado para inicializar particiones de intercambio:
Listado de Código 4.2: Inicialización de una partición de intercambio |
# mkswap /dev/sda2
|
Para activar la partición, use swapon:
Listado de Código 4.3: Activar la partición de intercambio |
# swapon /dev/sda2
|
Cree y active la partición de intercambio con los comandos mencionados arriba.
Ahora que sus particiones están inicializadas y albergan sistemas de ficheros, es hora de montarlas con el comando mount. No olvide crear los directorios de puntos de montaje necesarios para cada partición que creada. Por ejemplo:
Listado de Código 5.1: Montaje de las particiones |
# mount /dev/sda1 /mnt/gentoo # mkdir /mnt/gentoo/usr # mount /dev/sda4 /mnt/gentoo/usr # mkdir /mnt/gentoo/var # mount /dev/sda5 /mnt/gentoo/var # mkdir /mnt/gentoo/home # mount /dev/sda6 /mnt/gentoo/home |
Nota: Si quiere que su /tmp esté en una partición separada, asegúrese de cambiar los permisos después de montarla: chmod 1777 /mnt/gentoo/tmp. Esto también es válido para /var/tmp. |
También necesitamos montar el sistema de ficheros proc (un interfaz virtual al núcleo) en /proc. Pero primero debemos situar nuestros ficheros en las particiones.
Continúe con Instalación de Ficheros de Instalación de Gentoo.
5.a. Instalando el Stage comprimido (tarball)
Ajustar 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 comprobar la fecha/hora actual, ejecute el comando date:
Listado de Código 1.1: Verificar la fecha/hora |
# date
Fri Mar 29 16:21:18 UTC 2005
|
Si la fecha/hora está equivocada, actualícela con el comando date MMDDhhmmAAAA, con la siguiente sintaxis (Mes, Día, hora, minuto y Año). En este punto, se debería usar la hora UTC. Podrá utilizar su propia zona horaria más adelante. Por ejemplo, para ajustar la fecha y hora a las 16:21 horas del 29 de marzo del 2005:
Listado de Código 1.2: Ajustar la fecha/hora UTC |
# date 032916212005
|
El próximo paso a llevar a cabo es instalar el tarball del archivo stage3 escogido en su sistema. Tiene la opción de descargarlo del Internet o, si ha arrancado con un CD o un LiveDVD de instalación Universal, cópielo del mismo CD/DVD. Si tiene el CD/DVD Universal y el stage que quiere utilizar está en el CD/DBD, descargarlo desde Internet es un gasto de ancho de banda innecesario, ya que las los archivos son los mismos. En la mayoría de las ocasiones, el comando uname -m puede ayudarle a decidir que archivo stage tiene que descargar.
Los CDs Minimal y LiveCDs no contienen archivos stage. Sin embargo los LiveDVDs sí.
5.b. Por defecto: Utilizar un Stage desde Internet
Descargando el Stage comprimido (tarball)
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 disponemos de links, podremos navegar por la lista de servidores réplica de Gentoo y escoger el más cercano a nosotros.
Si no tiene links, debería disponer de lynx. Si necesita pasar a través de un proxy, exporte las variables http_proxy y ftp_proxy:
Listado de Código 2.2: Configurar la información del proxy para lynx |
# export http_proxy="http://proxy.server.com:port" # export ftp_proxy="http://proxy.server.com:port" |
A partir de ahora asumiremos que tiene links a su disposición.
Luego entre en el directorio releases/sparc/2008.0/sparc64/. Allí deberían aparecer todos los archivos de stage disponibles para su arquitectura (quizá almacenados en subdirectorios con el nombre de cada subarquitectura). Seleccione uno y presione D para descargarlo. Cuando se haya descargado, presione Q para cerrar el navegador.
Listado de Código 2.3: Navegar por la lista de servidores réplica con links |
# links http://www.gentoo.org/main/en/mirrors.xml (Si necesita soporte para proxy con links:) # links -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml |
Conviene asegurarse de que ha descargado un archivo stage3 - las instalaciones utilizando un stage1 o stage2 no reciben soporte.
Si quiere comprobar la integridad del tarball de stage que ha descargado, utilice md5sum y compare la salida con la suma de comprobación MD5 que proporciona el servidor réplica.
Listado de Código 2.4: Comprobación de integridad del tarball de stage |
# md5sum -c stage3-sparc64-2008.0.tar.bz2.DIGESTS
stage3-sparc64-2008.0.tar.bz2: OK
|
Ahora desempaquetamos el stage descargado en sistema. Usaremos tar para dicha labor y este es el método más fácil.
Listado de Código 2.5: Descomprimir el Stage |
# tar xvjpf stage3-*.tar.bz2
|
Asegúrate de usar las mismas opciones xvjpf). La x se usa para Desempaquetar, la v (Verbose)para ver que pasa durante el proceso de extracción (opcional), la j para Descomprimir con bzip2, la p para Preservar los permisos y la f para decir que extraemos un archivo, no la entrada estándar.
Ahora que el stage está instalado sigamos con Instalando Portage.
5.c. Alternativa: Usar el Stage desde el CD de instalación Universal
Extraer el stage comprimido (tarball)
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 necesite montar el CD-ROM primero:
Listado de Código 3.2: Montar 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 el punto de montaje de Gentoo (Normalmente /mnt/gentoo):
Listado de Código 3.3: Cambiar el directorio a /mnt/gentoo |
# cd /mnt/gentoo
|
Ahora extraeremos el stage elegido. Usaremos tar para este trabajo. Asegúrese de usar las mismas opciones xvjpf). El parámetro v es opcional y puede no ser soportado por algunas versiones de tar. En el siguiente ejemplo, extraeremos el comprimido stage3-<subarch>-<release>.tar.bz2. Asegúrese de sustituir el nombre del comprimido por el propio del stage.
Listado de Código 3.4: Descomprimir el stage |
# tar xvjpf /mnt/cdrom/stages/stage3-<subarch>-<release>.tar.bz2
|
Ahora que tenemos el stage instalado, continuaremos con Instalando Portage.
Instalando una imagen de Portage
Ahora tiene que instalar una imagen de Portage, es un conjunto de archivos que informan a Portage sobre los programas que puede instalar, que perfiles están disponibles, etc.
Descargar e instalar una imagen de Portage
Vaya al punto de montaje donde tiene montado su sistema de ficheros (normalmente /mnt/gentoo):
Listado de Código 4.1: Situándose en el punto de montaje de Gentoo |
# cd /mnt/gentoo
|
Ejecute links (o lynx) y vaya a la lista de servidores réplica de Gentoo. Elija un servidor cercano y abra el directorio snapshots/. De allí descargue la última imagen de Portage (portage-latest.tar.bz2), seleccionándola y presionando D.
Listado de Código 4.2: Comprobar la lista de servidores réplica de Gentoo |
# links http://www.gentoo.org/main/en/mirrors.xml
|
Ahora salga del navegador presionando Q. Ahora dispone de una imagen de Portage guardada en /mnt/gentoo.
Si quiere comprobar la integridad de la imagen descargada, utilice md5sum y compare la salida con la suma de comprobación MD5 que proporciona el servidor réplica.
Listado de Código 4.3: Comprobar la integridad de una imagen de Portage |
# md5sum -c portage-latest.tar.bz2.md5sum
portage-latest.tar.bz2: OK
|
En el siguiente paso, vamos a descomprimir la imagen de Portage en su sistema de ficheros. Asegúrese de utilizar los comandos exactos; la última opción es una C mayúscula, no una c.
Listado de Código 4.4: Descomprimir la imagen de Portage |
# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
|
5.e. Configurando las opciones de compilació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.
Nota: Una lista comentada de todas las posibles variables puede encontrarse en /mnt/gentoo/usr/share/portage/make.conf.example. Para una instalación de Gentoo correcta lo único que necesita es configurar las variables que se mencionan en las siguientes líneas. |
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 5.1: Abrir /etc/make.conf |
# nano -w /mnt/gentoo/etc/make.conf
|
Como probablemente te darás cuenta, el fichero make.conf.example está estructurado de una manera genérica: Las líneas comentadas empiezan con "#", otras líneas definen variables usando la sintaxis VARIABLE="contenido". El fichero make.conf utiliza la misma sintaxis. Discutiremos muchas de esas variables más adelante.
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 información 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.
El primer parámetros es -march= o -mcpu=, el cual especifica el nombre de la arquitectura destino. Las posibles opciones están descritas en el fichero make.conf.example (como comentarios).
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 o incluso 3 para la optimización de velocidad (cada clase tiene los mismos parámetros que la primera, más algunos extras). -O2 es la recomendada. Es conocido que -O3 provoca problemas cuando se utiliza globalmente en el sistema, por esto se recomienda mantenerse siempre en -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). No tiene ningún impacto sobre le código generado, pero usa más memoria. En sistemas con poca memoria, el proceso del compilador podria ser terminado. En este caso, no use este parámetro.
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, Los valores por defecto que trae el archivo stage3 deberían ser suficientemente buenos. El siguiente ejemplo es simplemente eso, un ejemplo:
Listado de Código 5.2: Definir las variables CFLAGS y CXXFLAGS |
CFLAGS="-O2 -mcpu=ultrasparc -pipe"
# Utilice la misma configuración para las dos variables.
CXXFLAGS="${CFLAGS}"
|
Nota: Quizá se quiera echar un vistazo ai la Guía de Compilación Optimizada para mayor información sobre las distintas opciones de compilación que afectan al sistema. |
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 5.3: MAKEOPTS para un sistema normal de 1-CPU |
MAKEOPTS="-j2" |
Actualiza tu /mnt/gentoo/etc/make.conf con tus propios parámetros y guarda los cambios (nano users would hit Ctrl-X). . Ahora estamos listos para continuar con Instalando el sistema base de Gentoo.
Opcional: Seleccionando servidores réplica
Para poder descargar el código fuente rápidamente se recomienda seleccionar un servidor réplica rápido. Portage comprobará en su archivo make.conf la variable GENTOO_MIRRORS y utilizará los servidores que se especifican allí. Puede navegar en nuestra lista de réplicas y buscar un servidor (o servidores) que estén cerca de su localización (ya que estos suelen resultar los más rápidos), pero no nosotros le facilitamos una bonita herramienta llamada mirrorselect la cual proporciona una interfaz amigable para seleccionar los servidores réplicas que quiera.
Listado de Código 1.1: Utilizar mirrorselect para la variable GENTOO_MIRRORS |
# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
|
Aviso: No seleccione ningún servidor con IPv6. Nuestros stages no soportan actualmente IPv6. |
Otra importante configuración es la variable SYNC en make.conf. Esta variable contiene el servidor rsync que quiere utilizar para actualizar su árbol Portage (la colección de ebuilds, scripts que contienen toda la información que Portage necesita para descargar e instalar software). Aunque puede introducir manualmente el servidor SYNC, mirrorselect puede encargarse también de esto:
Listado de Código 1.2: Seleccionar un servidor rsync utilizando mirrorselect |
# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf
|
Después de ejecutar mirrorselect es recomendable que compruebe sus configuraciones en /mnt/gentoo/etc/make.conf.
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.3: Copiar la información de DNS |
(La opción "-L" es necesaria para asegurarnos que no copiamos un enlace simbólico) # cp -L /etc/resolv.conf /mnt/gentoo/etc/ |
Montar los sistema de archivos /proc y /dev
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 y, posteriormente, montar (de forma transparente) el sistema de archivos /dev.
Listado de Código 1.4: Montar /proc |
# mount -t proc none /mnt/gentoo/proc # mount -o bind /dev /mnt/gentoo/dev |
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 (CD de instalación u otro medio) hacia tu entorno de instalación (o sea, las particiones inicializadas).
El enjaulamiento 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.5: Entrar al nuevo entorno |
# chroot /mnt/gentoo /bin/bash # env-update >> Regenerating /etc/ld.so.cache... # source /etc/profile # export PS1="(chroot) $PS1" |
¡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
Debería actualizar ahora su árbol Portage a la última versión. emerge --sync hará esto por nosotros.
Listado de Código 2.1: Actualizar el árbol Portage |
# emerge --sync (Si está utilizando un terminal lento como algunos framebuffers o consolas seriales, puede añadir la opción --quiet para aumentar la velocidad del proceso:) # emerge --sync --quiet |
Si está detrás de un cortafuegos que bloquea el tráfico rsync, puede utilizar emerge-webrsync el cual descargará e instalará una imagen de Portage para su sistema.
Si ha advertido que está disponible una nueva versión de Portage y se debe actualizar, debería hacerlo ejecutando emerge --oneshot portage.
Primero, una pequeña definición:
Un perfil es la piedra inicial de cualquier sistema Gentoo. No solamente especifica unos valores predeterminados para USE, CFLAGS, y otras variables importantes, también bloquea del sistema ciertos rangos de versiones de algunos paquetes. Son mantenidos por los desarrolladores de Gentoo.
Tiempo atrás, los perfiles raramente los tocaba el usuario. Sin embargo, puede haber situaciones en las cuales sea necesaria un cambio de perfil.
Se puede ver el perfil actualmente utilizado con el siguiente comando:
Listado de Código 2.2: Comprobar el perfil del sistema |
# eselect profile list
Available profile symlink targets:
[1] default/linux/sparc/sparc/2008.0 *
[2] default/linux/sparc/sparc/2008.0/desktop
[3] default/linux/sparc/sparc/2008.0/server
|
El perfil por defecto proporciona un sistema basado en Linux 2.6. Este es el que recomendamos, pero también existe la posibilidad de elegir otro.
También existen sub-perfiles desktop (escritorio) y server (servidor) para algunas arquitecturas. Ejecutando eselect profile list mostrará los perfiles disponibles.
Después de revisar los perfiles disponibles para su arquitectura, puede utilizar uno diferente si lo desea:
Listado de Código 2.3: Cambiar de pérfil |
# eselect profile set 2
|
Nota: El sub-perfil developer existe específicamente para labores de desarrollo Gentoo Linux. No está supuesto de servir para ayudar a establecer entornos generales de desarrollo. |
La variable USE es una de las 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 (svgalib) 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 transformadas 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 make.defaults, archivos de su perfil. Encontrará los archivos make.defaults en el directorio al cual apunte /etc/make.profile y todos sus directorios padres. El valor predeterminado de configuración de la variable USE es la suma de todas las configuraciones de USE en todos los archivos make.defaults. Lo que modifique en /etc/make.conf se calcula 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 sobreescribirá cuando actualice Portage!
Puede encontrar una descripción completasobre 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 2.4: Ver las opciones disponibles |
# less /usr/portage/profiles/use.desc (Puede desplazarse arriba y abajo utilizando sus teclas de flechas y salir pulsando 'q') |
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 2.5: Abrir /etc/make.conf |
# nano -w /etc/make.conf
|
Listado de Código 2.6: Configurar la variable USE |
USE="-gtk -gnome qt3 qt4 kde dvd alsa cdr" |
Probablemente querrá utilizar solamente una o dos configuraciones locales en su sistema. Se puede especificar las locales que se necesitaran en /etc/locale.gen.
Listado de Código 2.7: Abrir /etc/locale.gen |
# nano -w /etc/locale.gen
|
Las siguientes "locales" son un ejemplo para tener, al mismo tiempo, los idiomas: inglés (Estados Unidos) y español (España) con sus respectivos formatos (por ejemplo, UTF-8).
Listado de Código 2.8: Especificar sus locales |
en_US ISO-8859-1 en_US.UTF-8 UTF-8 es_ES ISO-8859-15 es_ES@euro ISO-8859-15 |
El siguiente paso es ejecutar locale-gen. Generará todas las locales que tenemos especificadas en /etc/locale.gen.
Ahora continúe con Configurando el Kernel.
Primero necesita seleccionar su zona horaria para que su sistema sepa dónde está localizado. Busque su zona horaria en /usr/share/zoneinfo, luego cópiela a /etc/localtime. Por favor, evite las zonas horarias /usr/share/zoneinfo/Etc/GMT* ya que los nombres no indican las zonas esperadas. Por ejemplo, GMT-8 es realmente GMT+8.
Listado de Código 1.1: Configurar la Zona Horaria |
# ls /usr/share/zoneinfo (Suponga que quiere usar GMT) # cp /usr/share/zoneinfo/GMT /etc/localtime |
El punto alrededor del cual estan construidas todas las distribuciones es el núcleo (kernel) Linux. Es la capa entre los programas de usuario y el hardware del sistema. Gentoo proporciona a sus usuarios varias fuentes posible para el núcleo. Una lista completa con descripciones está disponible en la Guía Gentoo del Núcleo.
Para los sistemas basados en sparc tenemos gentoo-sources (fuentes del núcleo 2.6 recomendadas).
En el siguiente ejemplo instalaremos gentoo-sources:
Listado de Código 2.1: Instalar las fuentes del núcleo |
# emerge gentoo-sources
|
Nota: Si está usando un controlador de disco qla2xxx, hara falta hacer emerge =vanilla-sources-2.6.16* (no gentoo-sources), ya que los núcleos >=2.6.17 no trabajarán con este controlador. |
Cuando vea en /usr/src debería ver un enlace simbólico llamado linux apuntando a las fuentes de su núcleo. En este caso, las fuentes del kernel instaladas apuntan a linux-2.6.24-r5. Su versión podría ser distinta, por favor, téngalo presente:
Listado de Código 2.2: Ver el enlace a las fuentes del núcleo |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux -> linux-2.6.24-r5
|
Ahora vamos a configurar y compilar las fuentes del núcleo.
La configurción manual de un núcleo frecuentemente se ve como el procedimiento más difícil que tiene que realizar un usuario de Linux. Nada más lejos de la verdad -- después de configurar un par de núcleos no recordará si fue difícil ;)
Sin embargo, una cosa sí es cierta: debe conocer su sistema cuando empiece a configurar su núcleo manualmente. Se puede recolectar mucha información instalando pciutils (emerge pciutils) que viene con lspci. Ahora podrá usar lspci dentro del entorno enjaulado (chroot). Puede ignorar tranquilamente las advertencias sobre pcilib (como pcilib: cannot open /sys/bus/pci/devices) que lspci le muestre. Alternativamente, puede ejecutar lspci desde un entorno no-enjaulado. Los resultados son los mismos. También puede ejecutar lsmod para ver qué módulos del núcleo usa el CD de instalación (puede servir como consejo sobre qué habilitar).
Ahora vaya al directorio de fuentes del núcleo y ejecute make menuconfig. Esto abrirá un menú de configuración basado en ncurses.
Listado de Código 3.1: Invocar a menuconfig |
# cd /usr/src/linux # make menuconfig |
Le saludarán varias secciones de configuración. Listaremos primero algunas opciones obligatorias (de otro modo Gentoo no funcionará, o no funcionará adecuadamente sin configuración adicional).
Activar las opciones necesarias
Primero vaya a File Systems y seleccione soporte para los sistemas de ficheros 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 y el /proc file system.
Listado de Código 3.2: Seleccionar los sistemas de ficheros necesarios |
File systems --->
Pseudo Filesystems --->
[*] /proc file system support
[*] Virtual memory file system support (former shm fs)
(Seleccione una o más de las siguientes opciones según las necesite su
sistema)
<*> Ext3 journalling file system support
<*> Second extended fs support
|
Si está usando PPPoE para conectarse a Internet o está usando un módem dial-up, necesitará las siguientes opciones en el núcleo:
Listado de Código 3.3: Seleccionar los drivers PPPoE necesarios |
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 hacen daño aunque no son necesarias, así como la opciónPPP over Ethernet, que podría ser usada por ppp cuando esté configurado el modo PPPoE.
Ahora active el soporte de bus adecuado:
Listado de Código 3.4: Activar el SBUS/UPA |
Console drivers --->
Frame-buffer support --->
[*] SBUS and UPA framebuffers
[*] Creator/Creator3D support (Sólo para ranuras UPA usadas en muchas Ultras)
[*] CGsix (GX,TurboGX) support (Sólo para ranuras SBUS usadas en muchas SPARCStations)
|
Desde luego, debe habilitar el soporte para el OBP:
Listado de Código 3.5: Activar el soporte del OBP |
Misc Linux/SPARC drivers ---> [*] /dev/openprom device support |
También necesitará el soporte de dispositivos SCSI específicos:
Listado de Código 3.6: Activar el soporte de dispositivos SCSI específicos |
SCSI support --->
SCSI low-level drivers --->
<*> Sparc ESP Scsi Driver (Sólo para el adaptador SCSI integrado SPARC ESP)
<*> PTI Qlogic, ISP Driver (Sólo para controladoras SCSI SBUS de PTI o QLogic)
<*> SYM53C8XX Version 2 SCSI support (Sólo para adaptador SCSI integrado Ultra 60)
|
Para dar soporte a su tarjeta de red, seleccione una de las siguientes:
Listado de Código 3.7: Activar el soporte de red |
Network device support --->
Ethernet (10 or 100Mbit) --->
<*> Sun LANCE support (Sólo para SPARCStation, sistemas antiguos Ultra y como opción Sbus)
<*> Sun Happy Meal 10/100baseT support (Sólo para Ultra; también soporta "qfe" quad-ethernet en PCI y Sbus)
<*> DECchip Tulip (dc21x4x) PCI support (Para algunas Netras, como la N1)
Ethernet (1000Mbit) --->
<*> Broadcom Tigon3 support (Netras modernas, máquinas Sun Fire)
|
Si tiene una máquina con 4 puertos Ethernet (10/100 ó 10/100/1000), el orden de los puertos es diferente al de Solaris. Puede usar sys-apps/ethtool para comprobar el estado del puerto.
Cuando haya terminado de configurar el núcleo, continúe con Compilar e instalar. Sin embargo, luego de haber compilado el núcleo, revise su tamaño:
Listado de Código 3.8: Chequear el tamaño del núcleo |
# ls -lh vmlinux
-rw-r--r-- 1 root root 2.4M Oct 25 14:38 vmlinux
|
Si el fichero (descomprimido) es mayor que 7,5 MB, reconfigure el núcleo hasta que no exceda estos límites. Una forma de lograrlo es compilando la mayor parte de los controladores del núcleo como módulos. El ignorar esto puede resultar en un núcleo que no arranque.
También, si el núcleo es apenas un poco más grande, intente reducirlo con el comando strip:
Listado de Código 3.9: Reducir el tamaño del núcleo |
# strip -R .comment -R .note vmlinux
|
Ahora que ya está configurado el núcleo, es hora de compilar e instalarlo. Salga de la configuración y comience el proceso de compilación:
Listado de Código 3.10: Compilar el núcleo |
# make CROSS_COMPILE=sparc64-unknown-linux-gnu- && make image modules_install
|
Cuando haya terminado de compilar el núcleo, copie la imagen del núcleo a /boot. Recuerde reemplazar <kernel-version> con el nombre y versión del verdadero núcleo.
Listado de Código 3.11: Instalar el núcleo |
# cp arch/sparc64/boot/image /boot/<kernel-version>
|
Ahora continúe con Instalar módulos separados del núcleo.
Debe listar los módulos que quiera cargar automáticamente en /etc/modules.autoload.d/kernel-2.6. Puede agregar opciones extras a los módulos si lo desea.
Para ver todos los módulos disponibles, ejecute el comando find. No olvide sustituir "<kernel version>" por la versión del kernel que acaba de compilar:
Listado de Código 4.1: Ver todos los módulos disponibles |
# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less
|
Por ejemplo, para cargar automáticamente el módulo 3c59x.ko, edite el archivo kernel-2.6 y escriba el nombre del módulo ahí.
Listado de Código 4.2: Editar /etc/modules.autoload.d/kernel-2.6 |
# nano -w /etc/modules.autoload.d/kernel-2.6
|
Listado de Código 4.3: /etc/modules.autoload.d/kernel-2.6 |
3c59x |
Continúe la instalación con Configurar su Sistema.
8.a. Información del Sistema de Ficheros
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.).
/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:
Importante: El archivo /etc/fstab que proporciona Gentoo de manera predeterminada no es un archivo fstab válido. Debe crear su propio /etc/fstab: |
Listado de Código 1.1: Abrir /etc/fstab |
# nano -w /etc/fstab
|
Añada las reglas que coincidan con su esquema de particionamiento para su dispositivo(s) CD-ROM, y por supuesto, si tiene otras particiones o dispositivos, también para éstos.
Ahora use el ejemplo que tiene a continuación para crear su /etc/fstab:
Listado de Código 1.2: Un ejemplo completo de /etc/fstab |
/dev/sda1 / ext3 noatime 0 1
/dev/sda2 none swap sw 0 0
/dev/sda4 /usr ext3 noatime 0 2
/dev/sda5 /var ext3 noatime 0 2
/dev/sda6 /home ext3 noatime 0 2
# Debe añadir las reglas para openprom
openprom /proc/openprom openpromfs defaults 0 0
/dev/cdrom /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.
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):
Repase su /etc/fstab, guarde los cambios y salga para continuar.
Nombre de anfitrión, 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.
Listado de Código 2.1: Ajustar el nombre de Host |
# nano -w /etc/conf.d/hostname (Configure la variable HOSTNAME con el nombre del host) HOSTNAME="tux" |
A continuación, si se necesita un nombre de dominio, puede configurarse en /etc/conf.d/net. Solamente necesitará un dominio si su ISP o administrador de sistemas se lo indica, o si tiene un servidor DNS pero no DHCP. No necesitará preocuparse por el DNS o nombres de dominios si su red se configura por DHCP.
Listado de Código 2.2: Configurar el nombre de dominio |
# nano -w /etc/conf.d/net (Asigne la variable dns_domain a su nombre de dominio) dns_domain_lo="homenetwork" |
Nota: Si no configura un nombre de dominio, puede librarse del mensaje: "This is hostname.(none)" en las pantalla de inicio editando /etc/issue. Simplemente elimine el texto .\O de ese archivo. |
Si tiene un dominio NIS (si no conoce que es esto, seguramente es que no tenga uno), necesita definirlo:
Listado de Código 2.3: Configurar el dominio NIS |
# nano -w /etc/conf.d/net (Asigne la variable nis_domain a su nombre de dominio NIS) nis_domain_lo="my-nisdomain" |
Nota: Para más información sobre configuración de DNS y NIS, por favor lea los ejemplos que se encuentran en /etc/conf.d/net.example. Además, tal vez quiera hacer emerge openresolv para manejar su configuración DNS/NIS. |
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.
Nota: Información más detallada sobre redes, incluyendo temas más avanzados como bonding, bridging, 802.1Q VLANs o redes inalámbricas está disponible en la sección Configuración de redes en 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. Un ejemplo completamente comentado que cubre los distintos tipo de configuraciones, puede encontrarse en /etc/conf.d/net.example.
DHCP se emplea por defecto. Para que funcione DHCP, necesita instalar un cliente de DHCP. Esto se describe más adelante en Instalar las herramientas necesarias para el sistema. No se olvide de instalar un cliente DHCP.
Si se necesita configurar la conexión de red porque es necesario incluir opciones de DHCP específicas o porque no utiliza DHCP, abra /etc/conf.d/net con su editor favorito (nano se emplea en este ejemplo):
Listado de Código 2.4: Abrir /etc/conf.d/net para su edición |
# nano -w /etc/conf.d/net
|
Verá el siguiente fichero:
Listado de Código 2.5: Archivo /etc/conf.d/net por defecto |
# This blank configuration will automatically use DHCP for any net.* # scripts in /etc/init.d. To create a more complete configuration, # please review /etc/conf.d/net.example and save your configuration # in /etc/conf.d/net (this file :]!). |
Para introducir su propia dirección IP, máscara de red y pasarela, necesita configurar tanto config_eth0 como routes_eth0:
Listado de Código 2.6: Configurar manualmente la información IP para eth0 |
config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" ) routes_eth0=( "default via 192.168.0.1" ) |
Para utilizar DHCP defina, config_eth0:
Listado de Código 2.7: Obtener una dirección IP automáticamente para eth0 |
config_eth0=( "dhcp" ) |
Por favor, consulte /etc/conf.d/net.example para conocer una lista con todas las opciones disponibles. Consulte la página man de su cliente DHCP si necesita configurar opciones específicas.
Si tiene varias interfaces de red, repita los pasos anteriores utilizando config_eth1, config_eth2, etc.
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).
Listado de Código 2.8: Agregar 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: Crear scripts de inicio adicionales |
# cd /etc/init.d # ln -s net.lo 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). Se necesita definir la máquina. Además se definen otras máquinas o redes si no se va a configurar un servidor interno de DNS en la propia máquina:
Listado de Código 2.10: Abrir /etc/hosts |
# nano -w /etc/hosts
|
Listado de Código 2.11: Completar la información de red |
(Esto define la máquina actual) 127.0.0.1 localhost (Definir máquinas adicionales o la propia red, necesitan tener una IP estática para definirlas de esta manera.) 192.168.0.5 jenny.redlocal jenny 192.168.0.6 benny.redlocal benny |
Guarde y salga del editor para continuar.
Contraseña de administrador (Root)
Primero fijamos la contraseña de administrador escribiendo:
Listado de Código 3.1: Configurar la contraseña de administrador |
# passwd
|
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.2: Abrir el fichero /etc/rc.conf |
# nano -w /etc/rc.conf
|
Cuando haya terminado de configurar /etc/rc.conf, guarde los cambios y salga.
Como puede ver, este fichero está bien comentado para ayudarle a ajustar las variables de configuración necesarias. Puede configurar el sistema para que utilice unicode y definir su editor predeterminado y su gestor de inicio (cómo gdm o kdm).
Gentoo utiliza /etc/conf.d/keymaps para gestionar la configuración del teclado. Edítelo y configure su teclado.
Listado de Código 3.3: Abrir /etc/conf.d/keymaps |
# nano -w /etc/conf.d/keymaps
|
Tenga especial cuidad con KEYMAP: si selecciona un KEYMAP incorrecto, conseguirá extraños resultados escribiendo en su teclado.
Cuando termine de configurar /etc/conf.d/keymaps, guárde los cambios y salga.
Gentoo utiliza /etc/conf.d/clock para fijar las opciones del reloj. Edítelo de acuerdo a sus necesidades.
Listado de Código 3.4: Abrir /etc/conf.d/clock |
# nano -w /etc/conf.d/clock
|
Si su reloj hardware no está utilizando UTC, necesita añadir CLOCK="local" al archivo. De lo contrario notará como el reloj no funciona correctamente.
Debería definir la zona horaria que previamente ha copiado a /etc/localtime para que posteriores actualizaciones del paquete sys-libs/timezone-data puedan actualizar /etc/localtime automáticamente. Por ejemplo, si ha utilizado la zona horaria GMT, debería añadir TIMEZONE="GMT"
Cuando haya acabado de configurar /etc/conf.d/clock, guárdelo y salga.
Por favor continue con Instalando las herramientas de sistema necesarias.
Algunas herramientas no están incluidas en el archivo stage3 porque varios paquetes proporcionan la misma funcionalidad. Ahora es el momento en que debemos decidir cual queremos instalar.
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, syslog-ng, 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 disponibles crece día a día.
Si está pensando utilizar sysklogd o syslog-ng quizá quiera instalar posteriormente logrotate ya que esos logeadores no proporcionan ningún mecanismo de rotación para los archivos de log.
Para instalar la bitácora del sistema de su elección, use emerge y agréguelo al nivel de arranque predeterminado usando rc-update. El siguiente ejemplo instala syslog-ng. Por supuesto puede sustituirlo por el sistema de bitácora de su elección:
Listado de Código 1.1: Instalar un sistema de bitácoras |
# emerge syslog-ng # rc-update add syslog-ng default |
El siguiente es el demonio cron. Aunque es opcional y no lo requiere su sistema es recomendable instalar uno. ¿Pero qué es un demonio cron? Un demonio cron ejecuta comandos en horarios planificados. Es muy cómodo si necesita ejecutar comandos regularmente (por ejemplo a 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.
Sólo proporcionamos 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 (Sólo si optó por dcron o fcron) # 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.
Listado de Código 3.1: Instalar slocate |
# emerge slocate
|
9.d. Herramientas del Sistema de Archivos
Dependiendo del sistema de archivos que se esté usando, necesita instalar las herramientas necesarias (para verificar la integridad del sistema de archivos, crear sistemas de archivos adicionales, etc.) Por favor note que las herramientas para manejar sistemas de archivos ext2/ext3 (e2fsprogs) ya se encuentran instaladas como parte del sistema.
La siguiente tabla lista 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 es usuario de EVMS, necesita instalar también evms:
Listado de Código 4.1: Instalar herramientas EVMS |
# USE="-gtk" emerge evms
|
El USE="-gtk" previene la instalación de dependencias. Si se quiere activar las herramientas gráficas de evms, puede recompilar evms más adelante.
Si no necesita herramientas adicionales relacionadas con la red (como ppp o un cliente dhcp) continúe con Configuración del Cargador de Arranque.
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 ahora, ¡tal vez no pueda conectarse a Internet después de la instalación!
Listado de Código 5.1: Instalar dhcpcd |
# emerge dhcpcd
|
Opcional: Instalar un Cliente PPPoE
Si necesita ppp para conectarse a la red, necesita instalarlo.
Listado de Código 5.2: Instalar ppp |
# emerge ppp
|
Ahora continúe con Configurar el Cargado de Arranque.
Ahora que su núcleo está configurado y compilado y que los ficheros necesarios de configuración del sistema están llenados correctamente, es hora de instalar un programa que activará su núcleo cuando inicie el sistema. Tal programa se denomina el gestor de arranque.
10.b. Instalar el gestor de arranque de SPARC: SILO
Es hora de instalar y configurar SILO, siglas en inglés para Sparc Improved boot LOader (Gestor de arranque mejorado de Sparc).
Listado de Código 2.1: Instalar SILO |
# emerge silo
|
Ahora abra su editor favorito (nosotros usamos nano como ejemplo) y cree el fichero /etc/silo.conf.
Listado de Código 2.2: Crear /etc/silo.conf |
# nano -w /etc/silo.conf
|
Abajo encontrará un ejemplo del fichero silo.conf. Este usa el esquema de particionamiento que ocupamos a lo largo de este manual y la imagen del núcleo kernel-2.6.24-r5.
Listado de Código 2.3: Ejemplo de /etc/silo.conf |
partition = 1 # Partición de arranque (= partición raíz) root = /dev/sda1 # Partición raíz timeout = 150 # Esperar 15 segundos antes de iniciar la sección por omisión image = /boot/kernel-2.6.24-r5 label = linux |
Si usa el ejemplo de fichero silo.conf ofrecido por Portage, asegúrese comentar todas las líneas que no necesite.
Si el disco físico en el cual quiere instalar SILO (como gestor de arranque) es distinto del disco físico en el cual reside el fichero /etc/silo.conf entonces debe copiar /etc/silo.conf a una partición en aquel disco. Asumiendo que /boot es una partición separada en aquel disco, copia el fichero de configuración a /boot y ejecute /sbin/silo:
Listado de Código 2.4: Solamente si /boot y la ubicación de SILO no son el mismo disco |
# cp /etc/silo.conf /boot # /sbin/silo -C /boot/silo.conf /boot/silo.conf appears to be valid |
De otro modo tan solo ejecute /sbin/silo:
Listado de Código 2.5: Ejecutar silo |
# /sbin/silo
/etc/silo.conf appears to be valid
|
Nota: Ahora debe ejecutar silo (con parámetros) cada vez que actualice o reinstale el paquetee sys-boot/silo. |
Ahora continúe con Reiniciar el sistema.
Salga del ambiente enjaulado (chrooted) y desmonte todas las particiones. Luego escriba aquel comando mágico que ha estado esperando: reboot.
Listado de Código 3.1: Salir de la jaula, desmontar todas las particiones y reiniciar |
# exit cdimage ~# cd cdimage ~# umount /mnt/gentoo/usr /mnt/gentoo/home /mnt/gentoo/var cdimage ~# umount /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo cdimage ~# reboot |
Por supuesto, no olvide de sacar el CD de Instalación, de otro modo el CD será usado para iniciar otra vez en lugar de su nuevo sistema Gentoo.
Una vez que haya reiniciado en su instalación de Gentoo, termine con la sección Finalizar su Instalación de 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 directamente a dispositivos de lectura óptica |
| floppy | para poder acceder directamente a los dispositivos de disquete |
| games | para poder utilizar los juegos |
| portage | para ser capaz de utilizar emerge --pretend como usuario normal |
| usb | para poder acceder a los dispositivos USB |
| plugdev | para poder montar y utilizar dispositivos móviles como cámaras y memorias 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ñadir un usuario para uso cotidiano |
Login: root Password: (Su contraseña de root) # useradd -m -G users,wheel,audio -s /bin/bash juan # passwd juan Password: (Introduzca la contraseña para juan) Re-enter password: (Vuelva a introducir la contraseña para verificar) |
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.
Ahora que ya se ha instalado Gentoo y reiniciado, si todo fue bien, puede eliminar el tarball de stage3 y la imagen de Portag. que descargó en su disco duro. Recuerdamos que se encuentran en el directorio /.
Listado de Código 2.1: Eliminar el tarball stage3 |
# rm /stage3-*.tar.bz2*
|
Listado de Código 2.2: Eliminar la imagen de Portage |
# rm /portage-latest.tar.bz2*
|
¡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. Además, quizá también quiera utilizar nuestra guía de localización para hacer que el sistema se sienta cómo en casa.
También disponemos de un Manual de seguridad en Gentoo cuya lectura puede ser muy valiosa.
Para obtener un completo listado de toda nuestra documentación disponible, revise nuestra página de Recursos de Documentación.
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 :)
Portage es probablemente la más importante innovación de Gentoo en la gestión de software. Debido a su potente flexibilidad y una gran cantidad de funcionalidades, es frecuentemente apreciado como la mejor herramienta de gestión de software disponible para Linux.
Portage esta completamente escrito en Python y Bash y, por tanto, totalmente a la vista de los usuarios al ser ambos lenguajes de script.
La mayoría de usuarios trabajarán con Portage a través de la herramienta emerge. Este capítulo no pretende duplicar la información disponible en la página de man sobre emerge. Para una completa información sobre las opciones de emerge, por favor, consulte la página del manual:
Listado de Código 1.1: Leer la página del manual sobre emerge |
$ man emerge
|
Cuando hablamos sobre paquetes, nos referimos normalmente a programas software disponibles para los usuarios de Gentoo a través del árbol Portage. El árbol Portage es una colección de ebuilds, archivos que contienen toda la información que Portage necesita para mantener el software (instalar, buscar, ...). Estos ebuilds residen por defecto en /usr/portage.
Cuando se pida a Portage que ejecute alguna acción relacionada con los programas, éste utilizará los ebuilds de su sistema como base. Por tanto, es importante que actualice los ebuilds de su sistema para que Portage conozca el nuevo software, actualizaciones de seguridad, etc.
El árbol Portage se actualiza normalmente con rsync, una utilidad rápida de transferencia de archivos incremental. La actualización es muy sencilla, ya que el comando emerge proporciona una interfaz para rsync:
Listado de Código 2.1: Actualizar el árbol Portage |
# emerge --sync
|
Si no es capaz de realizar rsync debido a restricciones de cortafuegos puede actualizar su árbol Portage a través de nuestras tres imágenes de Portage generadas diariamente. La herramienta emerge-webrsync automáticamente comprueba e instala la última en su sistema.
Listado de Código 2.2: Ejecutar emerge-webrsync |
# emerge-webrsync
|
1.c. Mantenimiento de Software
Para buscar software utilizando el árbol de Portage, puede emplear las funcionalidades de búsquedas propias de emerge. Por defecto, emerge --search devuelve el nombre de los paquetes cuyo nombre coincide (tanto total como parcialmente) con el término de búsqueda introducido.
Por ejemplo, para buscar todos los paquetes que tengan "pdf" en su nombre:
Listado de Código 3.1: Buscar paquetes cuyo nombre tenga pdf |
$ emerge --search pdf
|
Si quiere buscar también en las descripciones puede utilizar el parámetro --searchdesc (o -S).
Listado de Código 3.2: Buscar paquetes relacionados con pdf |
$ emerge --searchdesc pdf
|
Cuando eche un vistazo al resultado, notará que le proporciona mucha información. Los campos son etiquetados claramente con lo cual no entraremos en explicar sus significados.
Listado de Código 3.3: Ejemplo de salida de emerge --search |
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
|
Una vez que haya encontrado el nombre del software que necesite, puede fácilmente instalarlo con emerge: simplemente añada el nombre del paquete. Por ejemplo, para instalar gnumeric:
Listado de Código 3.4: Instalar gnumeric |
# emerge gnumeric
|
Muchas aplicaciones dependen unas de otras, esto implica que cualquier intento de instalar un cierto paquete de software podría derivar en la instalación de varias dependencias. No se preocupe. Portage maneja también las dependencias. Si quiere conocer qué instalará Portage cuando le pida que instale un cierto paquete, añada el parámetro --pretend. Por ejemplo:
Listado de Código 3.5: Simular la instalación de gnumeric |
# emerge --pretend gnumeric
|
Cuando le pida a Portage que instale un paquete, descargará las fuentes necesarias desde Internet (si fuera necesario) y las guardará por defecto en /usr/portage/distfiles. Después, el paquete será descomprimido, compilado e instalado. Si quiere que portage solamente descargue las fuentes sin instalarlas, añada la opción --fetchonly al comando emerge:
Listado de Código 3.6: Descargar el código fuente de gnumeric |
# emerge --fetchonly gnumeric
|
Encontrar la documentación de un paquete instalado
Muchos paquetes vienen con su propia documentación. Algunas veces, el paramétro USE doc determina si la documentación debe instalarse o no. Puede comprobar la existencia del parámetro USE doc con el comando emerge -vp <nombre paquete>.
Listado de Código 3.7: Comprobar la existencia de del parámetro USE doc |
(alsa-lib es tan solo un ejemplo) # emerge -vp alsa-lib [ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB |
La mejor manera de activar el parámetro USE doc es por paquete, por medio de /etc/portage/package.use, de manera que sólo obtendrá la documentación para los paquetes que le interesan. Activando este parámetro de manera global puede causar problemas con dependencias circulares. Para más información, por favor lea el capítulo acerca de los Parámetros USE.
Una vez que el paquete está instalado, su documentación se encuentra normalmente en un subdirectorio llamado igual que el paquete, bajo el directorio /usr/share/doc. También puede obtener un listado de todos los archivos instalados con la herramienta equery la cual es parte del paquete app-portage/gentoolkit.
Listado de Código 3.8: Localizar la documentación de un paquete |
# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1 total 28 -rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz -rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz drwxr-xr-x 2 root root 8560 May 17 21:54 html -rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz (Como alternativa, utilizamos equery para localizar los archivos que nos interesan:) # equery files alsa-lib | less media-libs/alsa-lib-1.0.14_rc1 * Contents of media-libs/alsa-lib-1.0.14_rc1: /usr /usr/bin /usr/bin/alsalisp (salida cortada) |
Cuando quiera desinstalar un paquete software de su sistema, utilice emerge --unmerge. Esto le indicará a Portage que desinstale todos los archivos instalados por el paquete en su sistema excepto los archivos de configuración de esa aplicación si la había modificado después de la instalación. Esto le permite continuar trabajando con los mismos archivos de configuración si alguna vez decide volver a instalar la aplicación.
Sin embargo, hemos de tener algo muy en cuenta: Portage no comprueba si el paquete que está intentando desinstalar es necesario para algún otro. A pesar de esto, le avisará cuando quiera eliminar un paquete importante que pueda romper su sistema si lo desinstala.
Listado de Código 3.9: Desinstalar gnumeric del sistema |
# emerge --unmerge gnumeric
|
Cuando desinstala un paquete de su sistema, las dependencias de ese paquete que se instalaron automáticamente cuando instaló el software, permanecerán. Para hacer que Portage localice todas las dependencias que puede ser eliminadas actualmente, utilice la funcionalidad de emerge --depclean. Hablaremos de esto un poco más adelante.
Para mantener su sistema en perfecto estado (sin mencionar la instalación de los últimas actualizaciones de seguridad) necesita actualizarlo frecuentemente. Partiendo de que Portage solamente comprueba los ebuilds en su árbol Portage, lo primero sería actualizar el propio árbol. Cuando tenga el árbol Portage actualizado, puede actualizar su sistema con emerge --update world. En el siguiente ejemplo, además hemos utilizado el parámetro --ask que le indica a Portage que muestre la lista de paquetes que quiere actualizar y pregunte si se quiere continuar:
Listado de Código 3.10: Actualizar su sistema |
# emerge --update --ask world
|
Portage buscará entonces las nuevas versiones de las aplicaciones que explícitamente haya instalado (las listadas en /var/lib/portage/world) - pero no revisa minuciosamente sus dependencias. Si desea actualizar cada paquete en su sistema, añada la opción --deep:
Listado de Código 3.11: Actualizar completamente su sistema |
# emerge --update --deep world
|
Ya que las actualizaciones de seguridad también afectan a paquetes que no han sido explicítamente instalados en el sistema (pero que son dependencias de otros programas), es recomendable ejecutar este comando de vez en cuando.
Si ha cambiado últimamente alguno de sus parámetros USE quizá quiera añadir también --newuse. Portage comprobará si los cambios requieren la instalación de nuevos paquetes o la recompilación de los existentes:
Listado de Código 3.12: Realizar una actualización completa |
# emerge --update --deep --newuse world
|
Algunos paquetes del árbol Portage no tienen contenido real pero son utilizados para instalar un conjunto de paquetes. Por ejemplo, el paquete kde dejará un completo entorno KDE en su sistema a través de instalar varios paquetes relacionados con KDE y sus dependencias.
Si quiere desinstalar dicho paquete de su sistema, ejecutando emerge --unmerge sobre el paquete no tendrá efecto total ya que las dependencias permanecerán en su sistema.
Portage tiene la funcionalidad de eliminar las dependencias huérfanas, pero la disponibilidad de software necesita que primero actualice completamente su sistema, incluyendo los nuevos cambios que ha aplicado si actualizó los parámetros USE. Después de esto, puede ejecutar emerge --depclean para eliminar las dependencias huérfanas. Cuando haya terminado, necesitará reconstruir las aplicaciones que estuvieran enlazadas dinámicamente a las que acaban de ser eliminadas pero no son necesarias.
Todo esto se lleva a cabo a través de tres comandos:
Listado de Código 3.13: Desinstalar dependencias huérfanas |
# emerge --update --deep --newuse world # emerge --depclean # revdep-rebuild |
revdep-rebuild es parte del paquete gentoolkit; no olvide instalarlo primero:
Listado de Código 3.14: Instalar el paquete gentoolkit |
# emerge gentoolkit
|
1.d. Cuando Portage se queja...
Sobre SLOTs, paquetes virtuales, ramas, arquitecturas y perfiles
Como mencionamos anteriormente, Portage es muy potente y soporta muchas características de las que carecen otras herramientas de gestión de software. Para comprender esto, explicaremos unos cuantos aspectos de Portage sin profundizar demasiado en los detalles.
Con Portage, diferentes versiones de un mismo paquete pueden coexistir en un sistema. Mientras otras distribuciones tienden a renombrar el paquete con sus versiones (por ejemplo freetype and freetype2). Portage usa una tecnología llamada SLOTs (ranuras). Un ebuild declara un cierto SLOT para su versión. Ebuilds con diferentes SLOTs pueden coexistir en el mismo sistema. Por ejemplo, el paquete freetype tiene ebuilds con SLOT="1" y SLOT="2".
También existen paquetes que proporcionan la misma funcionalidad pero están implementados de maneras distintas. Por ejemplo, metalogd, sysklogd y syslog-ng son todos logueadores del sistema. Aplicaciones que necesitan la disponibilidad de un "logueador del sistema" no pueden depender, por ejemplo, de metalogd, ya que el resto de logueadores del sistema son igualmente válidos. Portage permite virtuals: cada logueador del sistema proporciona virtual/syslog de tal manera que las aplicaciones puede depender de virtual/syslog.
Los programas en el árbol Portage puede residir en diferentes ramas. Por defecto, su sistema solamente acepta paquetes que Gentoo considera estables. La mayoría de los paquetes nuevos, cuando son aceptados, ingresan en la rama inestable. Esto implica que necesitan hacerse más pruebas antes de marcarlo como estable. Aunque puede ver los ebuilds de ese software en su árbol de Portage, Portage no los actualizará hasta que sean marcados como estables.
Algunos programas sólo están disponibles para unas pocas arquitecturas. O los programas no funcionan en otras arquitecturas, o necesitan más pruebas, o el desarrollador que añade el programa a Portage no es capaz de verificar si el paquete funciona en diferentes arquitecturas.
Cada instalación de Gentoo adhiere un cierto perfil el cual contiene, entre otra información, la lista de paquetes necesarios para que el sistema funcione normalmente.
Listado de Código 4.1: Aviso de Portage sobre paquetes bloqueados (con --pretend) |
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1) |
Listado de Código 4.2: Aviso de Portage sobre paquetes bloqueados (sin --pretend) |
!!! Error: the mail-mta/postfix package conflicts with another package. !!! both can't be installed on the same system together. !!! Please use 'emerge --pretend' to determine blockers. |
Los Ebuilds contienen campos específicos que informan a Portage sobre sus dependencias. Hay dos posibles dependencias: dependencias de compilación, declaradas en DEPEND y dependencias en tiempo de ejecución, declaradas en RDEPEND. Cuando una de estas dependencias marca explícitamente un paquete o paquete virtual como no compatible, se dispara un bloqueo.
Para solucionar un bloqueo, puede elegir no instalar el paquete o desinstalar primero el paquete conflictivo. En el ejemplo anterior, puedes optar por no instalar postfix o eliminar primero ssmtp.
También puede ocurrir que vea los paquetes en conflicto con operadores lógicos concretos, como por ejemplo <media-video/mplayer-bin-1.0_rc1-r2. En este caso, actualizar a la versión más reciente del paquete bloqueante debería eliminar el bloqueo.
También es posible que dos paquetes que aún no se han instalado se estén bloqueando mutuamente. En este caso (poco frecuente), se debería investigar por que necesitamos instalar ambos. En la mayoría de los casos se puede realizar con uno sólo de los paquetes. Si no, por favor envíe un informe de error al sistema de seguimiento de errores de Gentoo.
Paquetes enmascarados (masked)
Listado de Código 4.3: Aviso de Portage sobre paquetes enmascarados |
!!! all ebuilds that could satisfy "bootsplash" have been masked. |
Listado de Código 4.4: Aviso de Portage sobre paquetes enmascarados - razón |
!!! possible candidates are: - gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword) - lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword) - sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword) - dev-util/cvsd-1.0.2 (masked by: missing keyword) - games-fps/unreal-tournament-451 (masked by: package.mask) - sys-libs/glibc-2.3.2-r11 (masked by: profile) |
Cuando quiera instalar un paquete que no está disponible para su sistema, recibirá un error de enmascaramiento. Debería probar a instalar una aplicación distinta que este disponible para su sistema o esperar hasta que el paquete este disponible. Siempre hay una razón para que un paquete esté enmascarado:
Listado de Código 4.5: Aviso de Portage sobre dependencias perdidas |
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3-4.2-r4". !!! Problem with ebuild sys-devel/gcc-3.4.2-r2 !!! Possibly a DEPEND/*DEPEND problem. |
La aplicación que está tratando instalar depende de otro paquete que no esta disponible para su sistema. Por favor, compruebe bugzilla para ver si el problema se conoce o no, en este caso informe de ello. A menos que este mezclando ramas esto no debería ocurrir y lo consideraremos un error.
Listado de Código 4.6: Aviso de Portage sobre nombre ambiguos en ebuild |
!!! The short ebuild name "aterm" is ambiguous. Please specify
!!! one of the following fully-qualified ebuild names instead:
dev-libs/aterm
x11-terms/aterm
|
La aplicación que quiere instalar tiene un nombre que corresponde con más de un paquete. Necesita aportar también el nombre de la categoría. Portage le informará de los posibles casos entre los que puede elegir.
Listado de Código 4.7: Aviso de Portage sobre dependencias circulares |
!!! Error: circular dependencies: ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1 ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2 |
Dos (o más) paquetes que quiere instalar dependen uno de otro y, por tanto, no pueden instalarse. Esto casi siempre se considera un error en el árbol Portage. Por favor, vuelva a sincronizar después de un tiempo e inténtelo de nuevo. También puede comprobar bugzilla para saber si se tiene conocimiento sobre el tema o si no, en cuyo caso informe sobre ello.
Listado de Código 4.8: Aviso de Portage sobre un fallo en la descarga |
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered. Please see above for details.
|
Portage no es capaz de descargar las fuentes para una aplicación específica y tratará de continuar instalando el resto de aplicaciones (si es posible). Este fallo puede deberse a que un servidor réplica no esta bien sincronizado o a que el ebuild apunta a una localización incorrecta. El servidor donde residen las fuentes podría estar caído por alguna razón.
Pruebe después de una hora y vea si el problema persiste.
Protección del Perfil de Sistema
Listado de Código 4.9: Aviso de Portage sobre un paquete protegido por perfil |
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage' !!! This could be damaging to your system. |
Está intentando eliminar un paquete que es parte del fundamental de su sistema. Éste se haya en su perfil y es necesario, por tanto, no debería ser eliminado del sistema.
Errores en la verificación del digest
A veces, al intentar hacer emerge a un paquete, éste fallará, con el siguiente mensaje:
Listado de Código 4.10: Falla en la suma de control |
>>> checking ebuild checksums |
Esta es una señal que hay algún problema con el árbol Portage -- muchas veces esto es porque un desarrollador ha cometido una equivocación al ingresar un paquete en el árbol.
Cuando falla la verificación del digest, no intente recalcularlo. El ejecutar ebuild foo manifest no va a resolver el problema; seguramente ¡lo empeorará!
En lugar de esto, espere una o dos hora que el árbol estabilice. Es probable que el error haya sido detectado enseguida, pero podrá tomar algún tiempo para que propague la corrección al árbol Portage. Mientras espera, revise Bugzilla a ver si alguien ha reportado el problema, si no, siga adelante y archive un "bug" reportando el paquete roto.
Una vez que compruebe que el error ha sido reparado, tal vez quiera re-sincronizar para recoger la suma de control reparada.
Importante: ¡Esto no implica que vaya re-sincronizar su árbol Portage múltiples veces! Tal como se establece en la política rsync (al ejecutar emerge --sync), los usuarios que sincronicen con demasiada frecuencia ¡serán baneados! De hecho, es mejor esperar a su próxima sincronización programada para no sobrecargar los servidores rsync. |
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.
Hay dos tipos de parámetros USE: globales y locales.
Puede encontrar una lista de los parámetros USE globales en línea o localmente en /usr/portage/profiles/use.desc.
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 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 se declara en los ficheros make.defaults que forman parte de su perfil.
El perfil al que atiende su sistema lo indica el enlace simbólico /etc/make.profile. Cada perfil funciona sobre otro, más extenso, y el resultado final es una suma de todos ellos. El perfil más alto es el perfil base (/usr/portage/profiles/base).
Echemos un vistazo a la configuración predeterminada para el perfil 2004.3:
Listado de Código 2.1: Variable USE acumulada de make.defaults para el perfil 2004.3 |
(Esto es un ejemplo de la suma de configuraciones en: base,
This example is the sum of the settings in base, default-linux,
default-linux/x86 y default-linux/x86/2004.3)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"
|
Como puede ver, esta variable contiene bastantes palabras clave. No modifique el fichero 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 -qt3 -qt4 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. Esta ruta es generalmente un único fichero pero podria ser un directorio; vea man portaga para más información. Los siguientes ejemplos asumirán que package.use es un único fichero.
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 seamonkey.
Listado de Código 2.5: Utilizando USE como una variable de entorno |
# USE="-java" emerge seamonkey
|
Por supuesto, hay una determinada precedencia respecto a qué configuración tiene prioridad sobre la configuración del USE. No querrá declarar USE="-java" y comprobar posteriormente que java continua utilizándose debido a una configuración que tiene mayor prioridad. La precedencia para la configuración del USE es (el primero tiene la mínima prioridad):
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.6: 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.7: 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.8: 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.9: 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 seamonkey: ¿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 seamonkey
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] www-client/seamonkey-1.0.7 USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB
|
emerge no es la única herramienta disponible para esta labor. De hecho, tenemos una herramienta llamada equery 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 equery 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: Utilizando equery para ver los parámetros USE usados |
# equery --nocolor uses =gnumeric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend : Left column (U) - USE flags from make.conf ]
[ : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
U I
- - debug : Enable extra debug codepaths, like asserts and extra output.
If you want to get meaningful backtraces see
http://www.gentoo.org/proj/en/qa/backtraces.xml .
+ + gnome : Adds GNOME support
+ + python : Adds support/bindings for the Python language
- - static : !!do not set this during bootstrap!! Causes binaries to be
statically linked instead of dynamically
|
3.a. Características de Portage
Portage tiene varias características adicionales que hacen de su experiencia con Gentoo algo mucho mejor. Muchas de estas características residen en ciertas herramientas software que mejoran el rendimiento, la estabilidad, la seguridad, ...
Para activar o desactivar ciertas características de Portage necesita editar la variable FEATURES del archivo /etc/make.conf. Esta variable contiene una lista con las palabras clave de cada característica separadas por un espacio en blanco. En algunos casos necesita además instalar la herramienta que implementa la característica.
No todas las características que soporta Portage están aquí reflejadas. Para una consulta completa por favor revise la página de la ayuda referente a make.conf
Listado de Código 1.1: Consultando la página de ayuda sobre make.conf |
$ man make.conf
|
Para conocer qué características están siendo utilizadas por defecto, ejecute emerge --info y busque la variable FEATURES o utilice grep:
Listado de Código 1.2: Conociendo que características están configuradas |
$ emerge --info | grep FEATURES
|
distcc es un programa para distribuir un trabajo de compilación a través de muchas, no necesariamente idénticas, máquinas en una red. Los clientes de distcc envían toda la información necesaria a los servidores DistCC disponibles (corriendo distccd) así pueden compilar trozos de código fuente para el cliente. El resultado final, es un tiempo de compilación más rápido.
Puede encontrar información más detallada sobre distcc (e información de como tenerlo funcionando sobre Gentoo) en nuestra Documentación Gentoo de Distcc.
Distcc se distribuye con un monitor gráfico para monitorizar las tareas que su computador está enviando para compilar. Si usa Gnome entonces ponga 'gnome' en su configuración USE. De todas formas, si no usa Gnome pero sigue deseando disponer de un monitor, entonces debería poner 'gtk' en su configuración USE.
Listado de Código 2.1: Instalando distcc |
# emerge distcc
|
Activando el soporte en Portage
Añada distcc a la variable FEATURES dentro de /etc/make.conf. Hecho esto, edite la variable MAKEOPTS a sus necesidades. Una pauta conocida para configurarla es poner -jX con X representando el número de CPUs que ejecutan distccd (incluyendo el host local) más uno, pero quizá obtenga mejores resultados con otros números.
Ahora ejecute distcc-config y cree una lista de los servidores distcc disponibles. Para un ejemplo simple, supondremos que los servidores DistCC son 192.168.1.102 (el host local), 192.168.1.103 y 192.168.1.104 (los dos hosts "remotos"):
Listado de Código 2.2: 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 ejecutar también el demonio distccd:
Listado de Código 2.3: Arrancando el demonio distcc |
# rc-update add distccd default # /etc/init.d/distccd start |
3.c. Compilación utiliizando caché
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.
Para instalar ccache, ejecute emerge ccache:
Listado de Código 3.1: Instalando ccache |
# emerge ccache
|
Activando el Soporte en Portage
Primero, edite el /etc/make.conf y añada a la variable FEATURES la palabra clave ccache. A continuación, añada una nueva variable llamada CCACHE_SIZE y dele el valor de "2G":
Listado de Código 3.2: Editando CCACHE_SIZE en /etc/make.conf |
CCACHE_SIZE="2G" |
Para comprobar si ccache funciona, pídale a ccache que te muestre las estadísticas. Ya que Portage utiliza un directorio diferente para guardar los datos, se necesita fijar la variable CCACHE_DIR para reflejar esto:
Listado de Código 3.3: Observando las estadísticas de ccache |
# CCACHE_DIR="/var/tmp/ccache" ccache -s
|
La ruta /var/tmp/ccache es el directorio por defecto que emplea Portage para ccache; si quiere cambiar esta variable, configure CCACHE_DIR en /etc/make.conf.
Sin embargo, si ejecuta ccache, empleará como directorio por defecto ${HOME}/.ccache, que es la razón por la cual necesita configurar la variable CCACHE_DIR cuando se le pide a Portage que muestre las estadísticas de ccache.
Utilizando ccache para compilaciones de C sin relación con Portage
Si quiere utilizar ccache para compilaciones que no tengan que ver con Portage, añada /usr/lib/ccache/bin al principio de su variable PATH (antes de /usr/bin). Esto puede llevarse a cabo editando el fichero .bash_profile de su directorio home de usuario. .bash_profile es una de las maneras de definir las variables PATH.
Listado de Código 3.4: Editar .bash_profile |
PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"
|
3.d. Soporte para Paquetes Binarios
Portage soporta la instalación de paquetes precompilados. A pesar de que Gentoo no proporciona paquetes precompilados por sí mismo (excepto para las imágenes GRP) Portage puede funcionar perfectamente con paquetes precompilados.
Para crear un paquete precompilado puede utilizar quickpkg si el paquete está instado en su sistema, o emerge con las opciones --buildpkg o --buildpkgonly.
Si quiere que Portage cree paquetes precompilados de cada paquete individual que instale, añada buildpkg a la variable FEATURES.
Puede encontrar mayor soporte para la creación de conjuntos de paquetes precompilados concatalyst. Para más información sobre catalyst, por favor lea las Preguntas frecuentes sobre Catalyst (en inglés).
Instalando Paquetes Precompilados
A pesar de que Gentoo no proporciona uno, puede crear un repositorio central donde almacene paquetes precompilados. Si quiere utilizar este repositorio, necesita que Portage lo conozca a través de la variable PORTAGE_BINHOST que debe apuntar al repositorio. Por ejemplo, si los paquetes precompilados están en ftp://buildhost/gentoo:
Listado de Código 4.1: Configurando PORTAGE_BINHOST en /etc/make.conf |
PORTAGE_BINHOST="ftp://buildhost/gentoo" |
Cuando quiera instalar un paquete precompilado, añada la opción --getbinpkg al comando emerge junto a la opción --usepkg. La primera le indica a emerge que descargue el paquete precompilado del servidor definido previamente, mientras que el segundo indica a emerge que intente instalar el paquete precompilado antes de buscar el código fuente y compilarlo.
Por ejemplo, para instalar gnumeric a través de paquetes precompilados:
Listado de Código 4.2: Instalando el paquete precompilado gnumeric |
# emerge --usepkg --getbinpkg gnumeric
|
Más información sobre las opciones para utilizar paquetes precompilados con emerge puede consultarse en la página de la ayuda:
Listado de Código 4.3: Leyendo la página de ayuda sobre emerge |
$ man emerge
|
Al hacer emerge a una serie de paquetes, Portage puede obtener las fuentes para el siguiente paquete en el lista aún mientras está compilando otro paquete, acortando los tiempos de instalación. Para hacer uso de esta opción agregue "parallel-fetch" a su variable FEATURES.
Cuando Portage se ejecuta por el usuario root, FEATURES="userfetch" permitirá que Portage ejecute sin los privilegios de superusuario mientras obtiene las fuentes. Este es una pequeña mejora en la seguridad.
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á en memoria la imagen del kernel que definió en la configuración del gestor de arranque, después de lo cual, se indica a la 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.) fijándoles 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 contenidos 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 orden 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 orden alfabético, salvo cuando hay dependencias, en cuyo caso es alterado el orden de inicio para realizar una secuencia válida de arranque.
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: La línea de inicialización del sistema en /etc/inittab |
si::sysinit:/sbin/rc sysinit |
Esa línea dice a init que debe ejecutar /sbin/rc sysinit al iniciar el sistema. Los guiones /sbin/rc se encargan de la inicialización, con lo que podríamos decir que init no hace mucho, delega la tarea de inicialización del sistema 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 que nivel de ejecución debe ejecutar. Para decidirlo, lee la siguiente línea de /etc/inittab:
Listado de Código 1.3: La línea init 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 y restart:
Listado de Código 1.6: Iniciar postfix |
# /etc/init.d/postfix start
|
Nota: Sólo 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) 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: Detener postfix, manteniendo la 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: Reajustar la información de estado del servicio postfix |
# /etc/init.d/postfix zap
|
Para preguntar por las dependencias que 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: Solicitar una lista de servicios de los cuales depende postfix |
# /etc/init.d/postfix ineed
|
De igual manera, puede indagar que servicios requieren el servicio nombrado (needsme) o cuáles pueden usarlo (usesme):
Listado de Código 1.11: Solicitar una lista de todos los servicios que requieren postfix |
# /etc/init.d/postfix needsme
|
Finalmente, puede indagar cuales dependencias son requeridas y están faltando:
Listado de Código 1.12: Solicitar una lista de dependencias faltantes para postfix |
# /etc/init.d/postfix broken
|
El sistema de inicio (init) 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 quitar 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 quitar un guión de inicio, use rc-update con el parámetro add o del, seguido por el nombre del guión de inicio y el nivel de ejecución, por ejemplo:
Listado de Código 2.1: Quitar postfix del nivel de ejecución por defecto |
# rc-update del postfix default
|
El comando rc-update -v show mostrará todos los scripts de inicio con los niveles de ejecución donde ejecutarán:
Listado de Código 2.2: Recibir información de los guiones de inicio |
# rc-update -v show
|
Es posible ejecutar también rc-update show (sin -v) simplemente para ver los scripts de inicio activos y sus respectivos niveles de ejecución.
4.c. Configuración de servicios
¿Porqué requerimos configuración adicional?
Los guiones de inicio 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 fuera del guión de inicio es para poder actualizar estos guiones sin que los cambios de configuración sean perdidos.
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 PHP5" |
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, 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!
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() {
(Información acerca de las dependencias)
}
start() {
(Comandos requeridos para iniciar el servicio)
}
stop() {
(Comandos requeridos para parar el servicio)
}
restart() {
(Comandos requeridos para reiniciar el servicio)
}
|
Cualquier guión de inicio requiere la definición de la función start(). Todas las demás son opcionales.
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:
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 cque engloba "*" 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 *
}
|
Si su servicio debe escribir a discos locales, debe necesitar localmount. Si escribe algo en /var/run como un archivo pid, entonces debería comenzar después de bootmisc:
Listado de Código 4.5: Función ejemplo de depend() |
depend() {
need localmount
after bootmisc
}
|
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.6: Ejemplo de función start() |
start() {
ebegin "Starting my_service"
start-stop-daemon --start --exec /path/to/my_service \
--pidfile /path/to/my_pidfile
eend $?
}
|
Ambos --exec y --pidfile deben usarse en las funciones start y stop. Si el servicio no crea un archivo pid, entonces use --make-pidfile si es posible, aunque debe probar esto para estar seguro. De otra manera, no use archivos pid. Puede también agregar --quiet a las opciones al start-stop-daemon, pero esto no es recomendado a no ser que el el servicio sea extremadamente verboso. Usando --quiet puede interferir con la depuración si el servicio no logra arrancar.
Nota: Asegúrese que --exec de hecho llame un servicio y no solamente un guión que lanza un servicio y termina -- después de todo, eso es lo que el guión de inicio está supuesto de hacer. |
Si requiere más ejemplos de funciones start(), favor leer directamente las fuentes de los guiones de inicio en su directorio /etc/init.d.
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.
Aunque no tiene que crear una función stop(), aquí está un ejemplo:
Listado de Código 4.7: Función stop() de ejemplo |
stop() {
ebegin "Stopping my_service"
start-stop-daemon --stop --exec /path/to/my_service \
--pidfile /path/to/my_pidfile
eend $?
}
|
Si su servicio corre otro guión (por ejemplo, bash, python o perl), y este guión luego cambia algun nombre (por ejemplo, foo.py a foo), entonces hará falta agregar --name al start-stop-daemon. Debe especificar el nombre al cual cambiará el guión. En este ejemplo, un servicio inicia foo.py, el cual cambia de nombre a foo:
Listado de Código 4.8: Un servicio que inicia el guión foo |
start() {
ebegin "Starting my_script"
start-stop-daemon --start --exec /path/to/my_script \
--pidfile /path/to/my_pidfile --name foo
eend $?
}
|
El start-stop-daemon tiene una excelente página man si requiere más información:
Listado de Código 4.9: Obteniendo la página man para el start-stop-daemon |
$ man start-stop-daemon
|
La sintaxis de los guiones de inicio de Gentoo está basada en el intérprete de comando Bourne Again Shell (bash), de manera que es libre de usar construcciones compatibles con bash dentro del guión de inicio.
Añadiendo opciones personalizadas
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.10: Soporte para la opción restartdelay |
opts="${opts} restartdelay"
restartdelay() {
stop
sleep 3 # Espere 3 segundo antes de reiniciar
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.
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.
4.e. Cambiando el comportamiento del nivel de ejecución
¿Quién puede beneficiarse de esto?
Muchos usuarios de equipos portátiles conocen la situación: en casa necesita iniciar net.eth0 mientras que puede no querer iniciar net.eth0 mientras está de viaja (cuando no hay una red disponible). Con Gentoo puede modificar el comportamiento del nivel de ejecución para sus propios propósitos.
Por ejemplo puede crear un segundo nivel de ejecución "default" con el cual puede arrancar y que utiliza otros guiones de inicio que le han sido asignados. Puede seleccionar al arrancar que nivel de ejecución quiere utilizar.
Antes de nada, cree el directorio para su segundo nivel de ejecución "default". Como ejemplo vamos a crear el nivel de ejecución offline:
Listado de Código 5.1: Creando el directorio para el nivel de ejecución |
# mkdir /etc/runlevels/offline
|
Añada los guiones de inicio necesarios para el nuevo nivel de ejecución. Por ejemplo, si quiere una copia exacta de su actual "default" pero sin net.eth0:
Listado de Código 5.2: Añadiendo los guiones de inicio necesarios |
(Copiar todos los servicios desde el nivel de ejecución default al nivel offline) # cd /etc/runlevels/default # for service in *; do rc-update add $service offline; done (Eliminar servicios no deseados en el nivel offline) # rc-update del net.eth0 offline (Mostrar los servicios activos en el nivel offline) # rc-update show offline (Salida incompleta de ejemplo) acpid | offline domainname | offline local | offline net.eth0 | |
Incluso aunque se haya eliminado net.eth0 del nivel offline, udev intentará arrancar cualquier dispositivo que detecte y lanzar los servicios adecuados. Necesitará añadir cualquier servicio de red que no quiera que arranque (al igual que cualquier otro servicio que pueda ser arrancado por udev) a /etc/conf.d/rc como se muestra:
Listado de Código 5.3: Desactivar los servicios iniciados en /etc/conf.d/rc |
RC_COLDPLUG="yes"
(A continuación, especifique los servicios que no quiere que arranque automáticamente)
RC_PLUG_SERVICES="!net.eth0"
|
Nota: Para más información sobre los servicios iniciados en función de dispositivos, consulte los comentarios del archivo /etc/conf.d/rc. |
Ahora edite la configuración de su gestor de arranca y añada una nueva entrada para el nivel de ejecución offline. Por ejemplo, en /boot/grub/grub.conf:
Listado de Código 5.4: Añadiendo una entrada para el nivel de ejecución offline |
title Gentoo Linux Offline Usage
root (hd0,0)
kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline
|
Listo, ha terminado de configurarlo. Si arranca su sistema y selecciona la nueva entrada al inicio, el nivel de ejecución offline será el utilizado en lugar del default.
Utilizar bootlevel es completamente análogo a softlevel. La única diferencia es que se define un segundo nivel de ejecución "boot" en lugar de un segundo "default".
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.
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. |
| 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"
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
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/env.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.
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 script env-update concatenará los valores alfabéticamente ordenados por el nombre de los ficheros de /etc/env.d. Los nombres de fichero deben comenzar con dos digitos decimales.
Listado de Código 2.3: Update order used by env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
La concatenación de variables no siempre funciona, sólo con las siguientes variables: KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH y PRELINK_PATH_MASK. Para el resto de variables (archivos en orden alfabético en /etc/env.d)se utilizará el último valor definido
Cuando ejecute env-update, el script 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: Actualizar el entorno |
# env-update && source /etc/profile
|
Nota: El comando anterior, solamente actualiza las variables en la termanal actual y las nuevas consolas. Conociendo esto, si se esta trabajando en X11, necesitara ejecutar source /etc/profile en cada nueva terminal que abra o reiniciar las X para que todas las nuevas terminales cogan las nuevas variables. Si esta utilizando un gestor de inicio, conviertase en root y ejecute /etc/init.d/xdm restart. Si no, necesitará salir de la sesión y volver a entrar para las X generen hijos con las nuevas variables. |
Importante: No se pueden utilizar las variables del terminal para definir otras variables. Esto implica que cosas como FOO="$BAR" (donde $BAR es otra variable) están prohibidas. |
5.c. Definiendo variables locales
No siempre queremos definir variables de entorno globales. Por ejemplo, podríamos querer añadir /home/my_user/bin y el directorio de trabajo actual (en el cual nos encontramos), 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: Ampliar el PATH para uso local en: ~/.bashrc |
(Dos puntos sin incluir después un directorio son tratados como
el directorio de trabajo actual)
PATH="${PATH}:/home/my_user/bin:"
|
Cuando vuelva a iniciar la sesión, su variable PATH será actualizada.
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: Definir una variable específica a la sesión |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
Portage viene con una configuración predefinida guardada en /etc/make.globals. Cuando le eche un vistazo, comprobará que toda la configuración de Portage se realiza a través de variables. A qué variables atiende Portage y que significan se describe un poco después.
Como muchas directivas de configuración varían de unas arquitecturas a otras, Portage también posee algunos archivos de configuración que son parte de perfil. Su perfil está apuntado por el enlace simbólico /etc/make.profile; las configuraciones de Portage se realizan en los archivos make.defaults de su perfil y de todos los perfiles padres. Explicaremos algo más sobre perfiles y el directorio /etc/make.profile más adelante.
Si está pensando en cambiar una variable de configuración, no modifique /etc/make.globals o make.defaults. En lugar de eso utilice /etc/make.conf el cual tiene preferencia sobre los archivos anteriores. También encontrará usr/share/portage/config/make.conf.example. Como su propio nombre indica, este archivo es meramente un ejemplo y Portage no lo utilizará con ningún propósito.
También puede definir una variable de configuración para Portage como una variable de entorno, pero no es recomendable.
Información específica del perfil
Ya hemos hablado del directorio /etc/make.profile. Bien, exactamente no es un directorio pero es un enlace simbólico a un perfil, por defecto uno perteneciente a /usr/portage/profiles también puede crear un perfil en cualquier otro lado y apuntarlo. El perfil al cual apunta el enlace simbólico será el que tenga en cuenta su sistema.
Un perfil contiene información específica para Portage sobre cada arquitectura, tal como una lista de paquetes que pertenecen al sistema correspondiente con ese perfil, una lista de paquetes que no funcionan (o están enmascarados) para ese perfil, etc.
Configuración específica para usuarios
Cuando necesite sobreescribir una característica de Portage relativa a la instalación de software, necesitará editar los archivos contenidos en /etc/portage.¡ Se recomienda encarecidamente que utilice los archivos pertenecientes a /etc/portage y está desaconsejada la sobreescritura de estas características con variables de entorno.!
Dentro de /etc/portage puede crear los siguientes archivos:
Estos no tienen que ser archivos; también pueden ser directorios que contengan un archivo por paquete. Podemos obtener más información acerca del directorio /etc/portage y una lista de archivos que pueden crearse allí en la página man de Portage.
Listado de Código 1.1: Leyendo la página del manual sobre Portage |
$ man portage
|
Cambiando el fichero de Portage y el lugar del directorio
Los archivos de configuración mencionados anteriormente no pueden ser guardados en ningún otro sitio, Portage siempre los buscará en esos lugares exactos. Sin embargo, Portage utiliza otras muchos lugares para varios propósitos: el directorio de compilación, el lugar donde guardar el código fuente, la localización del árbol de Portage, ...
Todos estos propósitos tienen unas direcciones predeterminadas muy claras pero puede cambiarlas por las que más le gusten indicándolo en /etc/make.conf. El resto de este capítulo explica los lugares destinados a un propósito especial que utiliza Portage y como puede ser modificado su emplazamiento en el sistema de ficheros.
Este documento no pretende ser utilizado como referencia. Si necesita una cobertura 100%, por favor consulte las páginas del man relativas a Portage y make.conf:
Listado de Código 1.2: Leyendo las páginas del manual sobre Portage y make.conf |
$ man portage $ man make.conf |
La ubicación predeterminada del árbol de Portage es /usr/portage. Esta definida por la variable PORTDIR. Cuando guarde el árbol de Portage en cualquier otro lugar (modificando esta variable), no olvide cambiar el enlace simbólico /etc/make.profile de acuerdo con su cambio.
Si modifica la variable PORTDIR, seguramente quiera cambiar las siguientes variables ya que no tienen constancia del cambio de PORTDIR. Esto es debido a cómo Portage maneja las variables: PKGDIR, DISTDIR, RPMDIR.
Aunque Portage no utilice binarios pre-compilados por defecto, tiene un buen soporte para ellos. Cuando a Portage se le indica que trabaje con paquetes pre-compilados, los buscará en /usr/portage/packages. Esta ubicación está definida por la variable PKGDIR.
El código fuente de las aplicaciones se guarda por defecto en /usr/portage/distfiles. Esta ubicación viene definida por la variable DISTDIR.
Portage guarda el estado del sistema (que paquetes están instalados, qué archivos pertenecen a cada paquete, ...) en /var/db/pkg. ¡No se deben modificar estos archivos manualmente! Podría romper el conocimiento que tiene Portage sobre el sistema.
La caché de Portage (con modificaciones temporales, paquetes virtuales, árbol de dependencias, ...) se guarda en /var/cache/edb. Esta ubicación es una verdadera caché: se puede limpiar si no se está ejecutando ninguna aplicación que tenga relación con Portage en este momento.
Ficheros temporales de Portage
Los ficheros temporales de portage se guardan por defecto en /var/tmp. Esta ubicación se define en la variable PORTAGE_TMPDIR.
Si modifica la variable PORTAGE_TMPDIR, necesitará cambiar las siguientes variables ya que no tendrán constancia del cambio. Esto es debido a cómo Portage maneja la variable: BUILD_PREFIX.
Portage crea directorios de compilación específicos para cada paquete que se emerge dentro de /var/tmp/portage. Esta ubicación viene definida por la variable BUILD_PREFIX.
Ubicación del sistema de ficheros
Por defecto, Portage instala todas los archivos en el sistema de ficheros activo (/), pero puede cambiarse esta configuración a través de la variable de entorno ROOT. Esto es útil cuando quiera crear nuevas imágenes compiladas.
1.d. Características de registro de acciones (log)
Registro de acciones de Ebuilds
Portage puede crear un registro por ebuild, pero solamente cuando la variable PORT_LOGDIR esté configurada y apuntando a una dirección con permisos de escritura para Portage (usuario Portage). De manera predeterminada está variable está desactivada. Si no configura PORT_LOGDIR no recibirá los registros con el sistema de registro actual, aunque tal vez reciba algún registro del nuevo elog. Si no tiene definido PORT_LOGDIR y usa elog, recibirá los registros de construcción de paquetes y cualquier otro registro salvado por elog, como se explica a continuación.
Portage ofrece un control de grano fino sobre el registro de sistema mediante el uso de elog:
Importante: Si ha usado enotice con Portage-2.0.*, elimine enotice, ya que es incompatible con elog. |
2.a. Configuración del sistema Portage
Como hemos acotado previamente, Portage es configurable a través de múltiples variables de entorno que se deben definir en /etc/make.conf. Por favor, refiérase a la página man de make.conf para más información.
Listado de Código 1.1: Lectura de la página man de make.conf |
$ man make.conf
|
2.b. Opciones al momento de construcción
Opciones de configuración y del compilador
Cuando Portage construye las aplicaciones, pasa el contenido de las siguientes variables al guión de compilación y configuración:
El parámetro USE también se usa al configurar y compilar, pero éste ha sido explicado ampliamente en capítulos previos.
Cuando Portage integra una versión más nueva de algún paquete de software, también eliminará los archivos obsoletos de la versión anterior del sistema. Portage otorga un tiempo de gracia de 5 segundos al usuario antes de llevar esta tarea a cabo. Este tiempo se define por medio de la variable CLEAN_DELAY.
Puede decirle a emerge que use ciertas opciones cada vez que sea ejecutado configurando la variable EMERGE_DEFAULT_OPTS. algunas opciones útiles podrían ser --ask, --verbose, --tree, etc.
2.c. Protección de los archivos de configuración
Ubicaciones protegidas por Portage
Portage sobreescribe los archivos provistos por versiones más nuevas de un paquete si estos no estan almacenados en un lugar protegido. Estos lugares protegidos se definen con la variable CONFIG_PROTECT y generalmente corresponden a rutas de archivos de configuración. Este listado de directorios es delimitado con espacios en blanco.
Los archivos de configuración nuevos que se escriban en rutas protegidas lo serán con un nombre modificado y el usuario será advertido acerca de su presencia.
Puede averiguar qué lugares están protegidos en la variable CONFIG_PROTECT con la salida del comando emerge --info:
Listado de Código 3.1: Obtener información acerca del contenido de CONFIG_PROTECT |
$ emerge --info | grep 'CONFIG_PROTECT='
|
Más información acerca de la protección de archivos de configuración por Portage está disponible en la sección de archivos de configuración (CONFIGURATION FILES) de la página man de emerge:
Listado de Código 3.2: Más información acerca de la protección de archivos de configuración |
$ man emerge
|
Para 'desproteger' ciertos subdirectorios en directorios protegidos, use la variable CONFIG_PROTECT_MASK.
Cuando la información o datos no están disponibles en su sistema, Portage los descargará de la Internet. Las ubicaciones de los servidores para los canales de información y datos se definen mediante los siguientes variables:
Un tercer parámetro involucra la ubicación del servidor rsync utilizado al actualizar el árbol Portage:
Las variables GENTOO_MIRRORS y SYNC pueden ser configurados automáticamente a través de la aplicación mirrorselect. Debe hacer emerge mirrorselect primero, antes de usarla. Para más información, vea la ayuda de mirrorselect en línea:
Listado de Código 4.1: Más información acerca de mirrorselect |
# mirrorselect --help
|
Si su entorno requiere el uso de un servidor proxy, configure las variables http_proxy, ftp_proxy y RSYNC_PROXY para declararlos.
Cuando Portage requiera descargar fuentes, utiliza por defecto el comando wget. Puede cambiar esto usando la variable FETCHCOMMAND.
Portage puede continuar una descarga hecha en forma parcial. Usa wget por defecto, pero puede cambiarlo usando la variable RESUMECOMMAND.
Asegúrese que sus FETCHCOMMAND y RESUMECOMMAND guarde las fuentes en la ubicación correcta. Al definir las variables debe usar \${URI} y \${DISTDIR} para apuntar a la ubicación de las fuentes y la ubicación del directorio distfiles respectivamente.
Puede definir manejadores específicos por protocolo con FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP, etc.
Aunque no se puede alterar el comando rsync usado para actualizar el árbol Portage, podrá configurar algunas de las variables para modificar su comportamiento:
For more information on these options and others, please read man rsync.
Puede escoger su rama por defecto a través de la variable ACCEPT_KEYWORDS. El valor por defecto es la rama estable de su plataforma. Para más información acerca de las ramas de Gentoo, vea el capítulo siguiente.
Puede activar ciertas características de Portage por medio de la variable FEATURES. Estas han sido discutidas en capítulos previos, por ejemplo Características de Portage.
2.f. Comportamiento de Portage
Con la variable PORTAGE_NICENESS, puede aumentar o reducir el valor "nice" con el que ejecuta Portage. El valor de la variable PORTAGE_NICENESS se suma al valor "nice" actual.
Para más información acerca de valores "nice", vea la página man de nice:
Listado de Código 6.1: Más información acerca de nice |
$ man nice
|
El valor de NOCOLOR, que por defecto es "falso", define si Portage desactiva el uso de los colores en su salida.
La variable ACCEPT_KEYWORDS define que rama de programas va a utilizar en su sistema. Como predeterminada figura la rama estable para su arquitectura, por ejemplo x86.
Recomendamos que solamente utilice la rama estable. Sin embargo si no le importa demasiado la estabilidad y quiere ayudar a Gentoo a través del envío de informes de error a http://bugs.gentoo.org, siga leyendo.
Si quiere utilizar los programas más recientes, puede considerar utilizar la rama de pruebas. Para que Portage utilice la rama de pruebas, añada un ~ delante de su arquitectura.
La rama de pruebas es exactamente para eso - pruebas. Si un paquete se encuentra en pruebas, eso significa que los desarrolladores creen que funciona, pero no ha sido probado concienzudamente. Podría, perfectamente, ser el primero en descubrir un error en el paquete, en cuyo caso puede rellenar un informe para ponerlo en conocimiento de los desarrolladores.
Aunque se debe tener cuidado, se pueden experimentar problemas de estabilidad , gestión del paquete imperfecta (por ejemplo dependencias erróneas), actualizaciones demasiado frecuentes (que dan cómo resultado múltiples compilaciones) o paquetes que no funcionan. Si no se conoce cómo funciona Gentoo y como resolver los problemas, recomendamos que se quede con la rama probada y estable.
Por ejemplo, para seleccionar la rama de pruebas en una arquitectura x86, edite /etc/make.conf y escriba:
Listado de Código 1.1: Configurar la variables ACCEPT_KEYWORDS |
ACCEPT_KEYWORDS="~x86" |
Si actualiza su sistema ahora, encontrará que muchos paquetes serán actualizados. Tenga cuidado ya que: cuando haya actualizado su sistema para emplear la rama inestable, normalmente no hay una manera sencilla de volver a la rama estable (excepto mediante el empleo de copias de seguridad, claro).
3.b. Mezclando estable con pruebas
Puede pedirle a Portage que le permita utilizar la rama de pruebas para algunos paquetes en concreto pero seguir utilizando la rama estable en el resto del sistema. Para realizar esto, añada la categoría del paquete y el nombre si quiere utilizar la rama de pruebas al fichero /etc/portage/package.keywords. Además podría crear un directorio (con este mismo nombre) y situar allí el paquete en un fichero. Por ejemplo, para utilizar la rama de pruebas con gnumeric:
Listado de Código 2.1: Configurar /etc/portage/package.keywords para gnumeric, línea completa |
app-office/gnumeric ~x86 |
Si quiere utilizar una versión específica de algún paquete desde la rama de pruebas pero no quiere que portage utiliza esa rama de pruebas para las siguientes versiones, puede añadir la versión a package.keywords. En este caso se debe utilizar el operador = . También puede introducir un rango de versiones utilizando los operadores <=, <, > or >= .
En cualquier caso, si añade información sobre una versión, debe utilizar un operador. Si lo deja sin información sobre la versión, no puede emplear un operador.
En el siguiente ejemplo indicamos a Portage que acepte gnumeric-1.2.13:
Listado de Código 2.2: Utilizar una versión concreta de gnumeric |
=app-office/gnumeric-1.2.13 ~x86 |
3.c. Empleo de paquetes enmascarados
Los desarrolladores de Gentoo no darán soporte al empleo de estos archivos. Por favor, tenga cuidado cuando haga esto. Las peticiones de soporte relacionadas con package.unmask y/o package.mask no serán respondidas. Aquí queda el aviso.
Cuando un paquete ha sido enmascarado por los desarrolladores de Gentoo y aún así desea utilizarlo a pesar de la razón que se menciona en el fichero package.mask (situado por defecto en /usr/portage/profiles), añada exactamente la misma línea en el archivo /etc/portage/package.unmask (o en un archivo dentro de ese directorio, si es que es un directorio).
Por ejemplo, si =net-mail/hotwayd-0.8 está enmascarado, puede desenmascararlo añadiendo exactamente la misma línea en package.unmask:
Listado de Código 3.1: /etc/portage/package.unmask |
=net-mail/hotwayd-0.8 |
Cuando no quiera que Portage instale un paquete en concreto o una versión específica de un paquete en su sistema, puede enmascararlo simplemente añadiendo la línea apropiada a /etc/portage/package.mask (tanto si es un fichero como si es un directorio y se hace en un fichero dentro de él).
Por ejemplo, si no quiere que Portage instale otras fuentes del kernel que no sean gentoo-sources-2.6.8.1, puede añadir la siguiente línea a package.mask:
Listado de Código 3.2: ejemplo de /etc/portage/package.mask |
>sys-kernel/gentoo-sources-2.6.8.1 |
dispatch-conf es una herramienta diseñada para combinar los archivos ._cfg0000_<name>. Los archivos ._cfg0000_<name> son generados por Portage cuando intenta sobreescribir un archivo en un directorio protegido por la variable CONFIG_PROTECT.
Empleando dispatch-conf, se puede actualizar la configuración mientras se registran todos los cambios realizados. dispatch-conf guarda las diferencias entre las distintas configuraciones como parches utilizando el sistema de control de versiones RCS. Esto implica que, si se comete un error en la actualización de un archivo de configuración, se puede regresar a la versión anterior del archivo en cualquier momento.
Cuando se utiliza dispatch-conf, se le puede indicar que deje el archivo de configuración tal cual, que utilice la nueva configuración, que permita editar la configuración actual o que combine los cambios interactivamente. dispatch-conf además dispone de algunas funcionalidades adicionales:
Hay que asegurarse de primero editar /etc/dispatch-conf.conf y crear el directorio al que hace referencia la variable archive-dir.
Listado de Código 1.1: Ejecutar dispatch-conf |
# dispatch-conf
|
Cuando se ejecuta dispatch-conf, se procesan todos los ficheros de configuración que cambian, uno por uno. Pulse u para actualizar (reemplazar) el fichero actual por el nuevo y continuar con el siguiente. Pulse z para omitir (borrar) el nuevo fichero de configuración y continuar con el siguiente. Una vez que se hayan procesado todos los ficheros , dispatch-conf terminará. También se puede pulsar q en cualquier momento.
Para más información, consulte la página del manual de dispatch-conf. Allí se detalla como combinar interactivamente los de configuración actuales y los nuevos, editar nuevos archivos de configuración, comprobar las diferencias entre archivos y mucho más.
Listado de Código 1.2: Consultar la página del manual de dispatch-conf |
$ man dispatch-conf
|
También se puede utilizar etc-update para instalar los ficheros de configuración. No es tan simple como dispatch-conf, ni dispone de tantas funcionalidades, pero proporciona un método de combinación interactivo y también puede realizar actualizaciones triviales de manera automática.
Sin embargo, al contrario que dispatch-conf, etc-update no conserva las versiones antiguas de los archivos de configuración. Una vez se ha actualizado el fichero, la versión anterior se habrá eliminado de manera permanente. Ha de ser cuidadoso, ya que utilizar etc-update es sensiblemente menos seguro que dispatch-conf.
Listado de Código 2.1: Ejecutar etc-update |
# etc-update
|
Después de combinar los cambios sencillos, se presentará una lista con los ficheros protegidos que tienen una actualización pendiente. Al final se muestran las opciones posibles:
Listado de Código 2.2: etc-update options |
Por favor, seleccione el fichero a editar introduciendo el número correspondiente.
(-1 para salir) (-3 para auto-combinar todos los ficheros restantes)
(-5 para auto-combinar SIN usar 'mv -i'):
|
Si se indica -1, etc-update terminará y no continuará con el resto. Si se introduce -3 o -5, todos los ficheros de configuración listados serán sobreescritos con las nuevas versiones. Por tanto es muy importante seleccionar primero los ficheros de configuración que no deben ser automaticamente actualizados. Esto se consigue simplemente indicando el número que aparece a la izquierda del fichero de configuración.
Como ejemplo, seleccionamos el fichero de configuración /etc/pear.conf:
Listado de Código 2.3: Actualizar un fichero de configuración concreto |
Comienzo de diferencias entre /etc/pear.conf y /etc/._cfg0000_pear.conf
[...]
Fin de diferencias entre /etc/pear.conf y /etc/._cfg0000_pear.conf
1) Reemplazar el original con la actualización
2) Borrar la actualización, manteniendo el original inalterado
3) Combinar interactivamente el original y la actualización
4) Mostrar de nuevo las diferencias
|
Ahora puede ver las diferencias entre los dos ficheros. Si cree que el fichero de configuración actualizado puede ser utilizado sin problemas, indique 1. Si cree que el fichero de configuración actualizado no es necesario, o no proporciona ninguna información nueva o útil, indique 2. Si quiere actualizar su fichero de configuración actual de forma interactiva, introduzca 3.
Por ahora, no tiene sentido profundizar más sobre la actualización interactiva. Para completarlo, listaremos los comandos que están disponibles durante la combinación interactiva de ambos ficheros. Son mostradas dos líneas (la original, y la nueva propuesta) y un punto indicativo en el cual puede introducir uno de los comandos siguientes:
Listado de Código 2.4: Comandos disponibles en la combinación interactiva |
ed: Editar usando ambas versiones, cada una decorada con una cabecera. eb: Editar usando ambas versiones. el: Editar usando la versión de la izquierda. er: Editar usando la versión de la derecha. e: Editar una nueva versión. l: Usar la versión de la izquierda. r: Usar la versión de la derecha. s: Incluir las líneas comunes sin comentarios. v: Incluir las líneas comunes con comentarios. q: Salir. |
Cuando haya acabado de actualizar los ficheros de configuración importantes, puede actualizar automaticamente el resto. etc-update acabará si no encuentra más ficheros de configuración para actualizar.
Con quickpkg se pueden crear archivos de paquetes que ya han sido instalados en el sistema. Estos archivos pueden usarse como paquetes precompilados. Ejecutar quickpkg es sencillo: basta añadir los nombres de los paquetes que se quiere archivar.
Por ejemplo, para archivar curl, arts y procps:
Listado de Código 3.1: Ejemplo de uso de quickpkg |
# quickpkg curl arts procps
|
Los paquetes precompilados se almacenarán en $PKGDIR/All (por defecto /usr/portage/packages/All). Los enlaces simbólicos que apunten a esos paquetes se ubican en $PKGDIR/<category>.
5.a. Utilizando un subconjunto del árbol Portage
Excluyendo categorías/paquetes
Puede realizar una actualización selectiva de ciertas categorías/paquetes e ignorar el resto. Esto se realiza a través indicando a rsync que excluya categorías/paquetes durante el proceso emerge --sync.
Necesita introducir el nombre del archivo que contiene los patrones para la variable --exclude-from de su /etc/make.conf.
Listado de Código 1.1: Introducir el archivo de exclusiones en /etc/make.conf |
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes" |
Listado de Código 1.2: Excluir todos los juegos en /etc/portage/rsync_excludes |
games-*/* |
Recuerde que esto puede provocar ciertos problemas con las dependencias, ya que paquetes nuevos y aceptados en su sistema pueden depender de otros excluidos.
5.b. Añadiendo Ebuilds no oficiales
Definiendo un directorio extensión de Portage (overlay)
Puede indicarle a Portage que utilice ebuilds que no están disponibles oficialmente a través del árbol de Portage. Cree un nuevo directorio (por ejemplo /usr/local/portage) en el cual guardará los ebuilds procedentes de otras fuentes. Utilice la misma estructura de directorios que tenemos en Portage.
Después defina la variable PORTDIR_OVERLAY en /etc/make.conf y haga que apunte al directorio creado previamente. Cuando ahora utilice Portage, éste tendrá en cuenta aquellos ebuilds para no eliminarlos/sobreescribirlos la próxima vez que ejecute emerge --sync.
Trabajando con varias extensiones (overlays)
Para los usuarios que desarrollan en varias extensiones, probar los paquetes antes de que lleguen al árbol de Portage o simplemente que quieren utilizar ebuilds no oficiales procedentes de varias fuentes, el paquete app-portage/gentoolkit-dev incorpora gensync, una herramienta que ayudará a conservar las extensiones actualizadas.
Con gensync se pueden actualizar todos los repositorios de una sola vez, o seleccionar solamente algunos de ellos. Cada repositorio debería tener un archivo .syncsource en el directorio de configuración /etc/gensync/ que contiene la información relativa a localización del repositorio, nombre, ID, etc.
Suponiendo que tiene dos repositorios adicionales llamados java (para el desarrollo de ebuilds en java) y entapps (para el desarrollo de aplicaciones en casa para tu empresa) entonces puedes actualizar los repositorios de la siguiente manera:
Listado de Código 2.1: Utilizar gensync para actualizar varios repositorios |
# gensync java entapps
|
5.c. Software no mantenido por Portage
Utilizando Portage con programas con auto-mantenidos
En algunos casos querrá configurar, instalar y mantener programas por sí mismo sin que Portage automatice el proceso, incluso aunque Portage pueda suministrarle esos programas. Conocidos son los casos de las fuentes del kernel y los controladores de nvdia. Puede configurar Portage para que conozca cuando un determinado paquete ha sido instalado manualmente en el sistema. Este proceso recibe el nombre de inyectar y está soportado por Portage a través del archivo /etc/portage/profile/package.provided.
Por ejemplo, si quiere que Portage le informe sobre gentoo-sources-2.6.11.6 el cual ha sido instalado manualmente, añada la siguiente línea a /etc/portage/profile/package.provided:
Listado de Código 3.1: Línea de ejemplo para package.provided |
sys-kernel/gentoo-sources-2.6.11.6 |
Nota: Este documento asume que se tiene correctamente configurado el kernel, los módulos para su hardware y que conoce el nombre de su interfaz hardware. También asumiremos que se está configurando eth0, pero podría tratarse de eth1, wlan0, etc. |
Nota: Esto documento requiere que este ejecutándose baselayout-1.11.11 o superior. |
Para comenzar a configurar su tarjeta de red, necesitamos que el sistema RC (runlevel scripts o initscripts) de Gentoo la reconozca. Esto se hace creando un enlace simbólico desde net.lo a net.eth0 en /etc/init.d
Listado de Código 1.1: Crear el enlace simbólico net.eth0 apuntando a net.lo |
# cd /etc/init.d # ln -s net.lo net.eth0 |
El sistema RC de Gentoo ahora conoce la interfaz. También necesita saber cómo
configurar la nueva interfaz. Todas las interfaces de red son configuradas en
/etc/conf.d/net.
A continuación se muestra un ejemplo de configuración para DHCP y direcciones
estáticas:
Listado de Código 1.2: Ejemplos de /etc/conf.d/net |
# Para DHCP config_eth0=( "dhcp" ) # Para IP estática usando notación CIDR config_eth0=( "192.168.0.7/24" ) routes_eth0=( "default via 192.168.0.1" ) # Para IP estática usando notación de máscara de red config_eth0=( "192.168.0.7 netmask 255.255.255.0" ) routes_eth0=( "default via 192.168.0.1" ) |
Nota: Si no especifica una configuración para la interfaz entonces se asume DHCP. |
Nota: CIDR (Classless InterDomain Routing) Originariamente, las direcciones IPv4 fueron clasificadas en A, B, o C. Esta clasificación temprana no tuvo en cuenta la gran popularidad que obtendría Internet, y ahora corre el riesgo de no tener suficientes direcciones únicas. CIDR es un esquema de direccionamiento que permite que una dirección IP designe muchas direcciones IP. Una dirección IP CIDR es igual que una dirección IP normal excepto que termina con una barra invertida seguida de un número; por ejemplo: 192.168.0.0/16. CIDR se describe en RFC 1519. |
Ahora que ya hemos configurado nuestra interfaz, podemos iniciarla o detenerla utilizando los siguientes comandos:
Listado de Código 1.3: Comenzar y detener los scripts de red |
# /etc/init.d/net.eth0 start # /etc/init.d/net.eth0 stop |
Importante: Cuando este solucionando problemas con la red, se recomienda configurar RC_VERBOSE="yes" en /etc/conf.d/rc para obtener mayor información sobre lo que está ocurriendo. |
Ahora que ya ha iniciado y detenido la interfaz de red, quizá quiera que comience automáticamente cuando Gentoo arranca. Aquí tiene cómo hacerlo. El último comando "rc" indica a Gentoo que inicie todos los scripts en el nivel de ejecución actual que no hayan sido iniciados ya.
Listado de Código 1.4: Configurando una interfaz de red para que inicie en el arranque |
# rc-update add net.eth0 default # rc |
La variable config_eth0 es el corazón de la configuración de una interfaz. Es una lista de instrucciones de alto nivel para configurar la interfaz (eth0 en este caso). Cada comando en la lista de instrucciones se ejecuta de manera secuencial. La interfaz será evaluada como OK si, al menos, un comando funciona.
Aquí tiene una lista de instrucciones integradas:
| Comando | Descripción |
| null | No hace nada |
| noop | Si la interfaz está funcionando y existe una dirección entonces aborta la configuración con éxito. |
| una dirección IPv4 o IPv6 | Añade la dirección a la interfaz |
| dhcp,adsl o apipa (o un comando propio perteneciente a un módulo de terceras partes) | Ejecuta el módulo que proporciona el comando. Por ejemplo dhcp ejecutará un módulo que proporcione dhcp, que pudiera ser uno cualquiera de los siguientes: dhcpcd, dhclient o pump. |
Si un comando falla, puede especificar un comando de retorno (fallback). El retorno tiene que coincidir exactamente con la estructura de la configuración.
Puede encadenar estos comandos. Aquí se muestran algunos ejemplo reales:
Listado de Código 1.1: Ejemplos de configuración |
# Añadir tres direcciones IPv4 config_eth0=( "192.168.0.2/24" "192.168.0.3/24" "192.168.0.4/24" ) # Añadir una dirección IPv4 y dos IPv6 config_eth0=( "192.168.0.2/24" "4321:0:1:2:3:4:567:89ab" "4321:0:1:2:3:4:567:89ac" ) # Mantener la dirección asignada por el kernel, a menos que la interfaz se caiga, entonces asignar otra vía DHCP. Si DHCP falla entonces añadir una dirección estática determinada mediante APIPA config_eth0=( "noop" "dhcp" ) fallback_eth0=( "null" "apipa" ) |
Nota: Cuando se utiliza el módulo ifconfig y se añade más de una dirección, se crean alias de interfaz para cada dirección extra. De esta manera los dos ejemplos anteriores tendrán interfaces eth0, eth0:1 y eth0:2. No se puede hacer nada especial con estas interfaces ya que el kernel y otros programas simplemente tratan eth0:1 y eth0:2 como eth0. |
Importante: ¡La orden de retorno es importante! Si no especificamos la opción null, el comand apipa solamente sería ejecutado si el comando noop falla. |
Los scripts en /etc/init.d pueden depender de una interfaz de red específica o, simplemente, de net (red). net puede definirse en /etc/conf.d/rc ya que puede significar cosas distintas utilizando la variable RC_NET_STRICT_CHECKING.
| Valor | Descripción |
| none | El servicio net se considera siempre funcionando |
| no | Básicamente significa que al menos uno de los servicios net.* sin contar net.lo debe estar funcionando. Esto podría ser usado por los usuarios de equipos portátiles que tienen una conexión wifi y una estática y solamente quieren tener una activa para que el servicio net aparezca como funcionando. |
| lo | Es la misma que la opción no pero net.lo también cuenta. Esto puede ser útil para la gente que no le importa que alguna interfaz en concreto se active durante el arranque. |
| yes | Con esto TODAS las interfaces de red DEBEN estar activas para que el servicio net se considere funcionando. |
Pero, ¿y qué pasa si net.br0 depende de net.eth0 y net.eth1? net.eth1 podría ser un dispositivo wireless o ppp que necesita configurarse antes de añadirse al puente. Esto no puede hacerse en /etc/init.d/net.br0 ya que es un enlaces simbólico a net.lo.
La respuesta es hacer nuestra propia función depend() en /etc/conf.d/net
Listado de Código 2.1: dependencia de net.br0 en /etc/conf.d/net |
# Puede utilizar cualquier tipo de dependencia (use, after, before)
que puede encontrar en los actuales scripts
depend_br0() {
need net.eth0 net.eth1
}
|
Para una lectura más detallada sobre dependencias, consulte la sección "Guiones de Inicio" en el manual de Gentoo.
2.c. Nombre de variables y valores
Los nombre de variables son dinámicos. Normalmente sigue la estructura variable_${interface|mac|essid|apmac}. Por ejemplo, la variable dhcpcd_eth0 guarda los valores para las opciones de dhcpcd para eth0 y dhcpcd_essid los valores para dhcpcd cuando cualquier interfaz se conecta al ESSID "essid".
Sin embargo, no hay ninguna regla que indique que los nombre de las interfaces sean ethx. De hecho, muchas interfaces wireless tienen nombres como wlanx, rax o ethx. También, algunas interfaces definidas por el usuario como pueden ser puentes puede tener cualquier nombre, como foo. Para hacer la vida un poco más interesante, los puntos de acceso wireless pueden tener nombres con caracteres no alfanuméricos - esto es importante porque puede configurar los parámetros de red por ESSID.
La desventaja de todo esto es que Gentoo usa variables bash para la red - y bash no puede utilizar nada fuera de caracteres alfanuméricos ingleses. Para solucionar esta limitación cambiamos cada carácter que no sea alfanumérico inglés por un carácter _.
Otra desventaja de bash es el contenido de las variables - algunos caracteres necesitan especificarse de manera especial. Esto se hace utilizando \ delante del carácter. A continuación tenemos una lista de caracteres especiales que necesitamos indicar de esta manera. ",' y \.
En este ejemplo utilizamos ESSID wireless ya que puede contener un amplio abanico de caracteres. Deberemos utilizar ESSID My "\ NET:
Listado de Código 3.1: ejemplo de nombre para la variable |
(Esto funciona, pero el dominio no es válido) dns_domain_My____NET="My \"\\ NET" (Lo que hay arriba configura el dominio dns a My "\ NET cuando una tarjeta wireless se conecta a un AP cuyo ESSID es My "\ NET) |
Ahora tenemos soporte para guiones de red, lo cual significa que podemos facilmente añadir soporte para nuevos tipos de interfaces y módulos de configuración mientras mantenemos la compatibilidad con los actuales.
Los módulos se cargan por defecto si el paquete que los requiere está instalado. Si especifica un modulo aquí que no tiene su paquete instalado, entonces obtendrá un error acerca del paquete que necesita instalar. Lo ideal sería que solamente use la configuración con módulos si tiene dos o más paquetes que proporcionen el mismo servicio y necesita marcar su preferencia de uno sobre los otros.
Nota: Todas las configuraciones que aquí se comentan, son almacenadas en /etc/conf.d/net a menos que se especifique lo contrario. |
Listado de Código 1.1: Preferencias en los módulos |
# Preferir iproute2 sobre ifconfig modules=( "iproute2" ) # También se puede especificar otros módulos para una interfaz # En este caso preferimos a udhcpc sobre dhcpcd modules_eth0=( "pump" ) # También podemos especificar modulos que no queremos utilizar - # por ejemplo, puede querer utilizar un suplicante o linux-wlang-ng # para controlar la configuración inalámbrica, pero querer seguir # configurando la red por ESSID asociado. modules=( "!iwconfig" ) |
3.b. Manejadores de interfaces
Proporcionamos dos manejadores de interfaces: ifconfig e iproute2. Hará falta uno de estos para cualquier tipo de configuración de red.
ifconfig es utilizado por defecto en Gentoo y se incluye en el perfil del sistema. iproute2 es un paquete más potente y flexible pero no se incluye por defecto.
Listado de Código 2.1: Para instalar iproute2 |
# emerge sys-apps/iproute2 # Para preferir iproute2 sobre ifconfig si ambos están instalados modules=( "iproute2" ) |
Ya que ifconfig e iproute2 hacen cosas muy parecidas, nos permitimos usar la misma configuración básica para ambos. Los ejemplos a continuación funcionarán sin importar cuál módulo tenga instalado.
Listado de Código 2.2: Ejemplos de ifconfig e iproute2 |
config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )
# También podemos especificar la dirección de difusión
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )
|
El DHCP es un medio para obtener información de red (dirección IP, servidores DNS, puerta de enlace, etc) de un servidor DHCP. Si existe un servidor DHCP en su red, apenas tendrá que decirle a cada cliente que utilice DHCP y el servidor se encargará de configurar el resto. Por supuesto, tendrá que configurar otras cosas la red inalámbrica, el ppp, etc. u otros si hacen falta antes de poder utilizar DHCP.
DHCP puede ser proporcionado por: dhclient, dhcpcd o pump. Cada módulo DHCP tiene sus propios pros y contras - aquí tiene un pequeño resumen:
| Módulo DHCP | Paquete | Pros | Contras |
| dhclient | net-misc/dhcp | Creado por la ISC, la misma gente que hacen el software dns BIND. Muy configurable | Configuración excesivamente complicada, software bastante hinchado, ,no se puede obtener servidores NTP desde DHCP, no envía el nombre de host por defecto. |
| dhcpcd | net-misc/dhcpcd | Durante largo tiempo ha sido la opción por defecto de Gentoo, no depende de herramientas externas, activamente desarrollada por Gentoo. | Puede ser un poco lento a veces, no se convierte en demonio cuando el arrendamiento de la dirección es infinito. |
| pump | net-misc/pump | Ligero, no depende de herramientas externas. | Ya no es mantenido por los desarrolladores, no es fiable especialmente a través de modems, no se puede obtener servidores de NIS desde DHCP. |
Si tiene más de un cliente DHCP instalado, hará falta especificar cuál utilizar - sino, utilizaremos dhcpcd por defecto, si está disponible.
Para enviar opciones específicas al módulo dhcp, utilizamos module_eth0="..."(cambie "module" por el nombre del módulo dhcp que vaya a utilizar - por ejemplo: dhcpcd_eth0).
Tratamos que el servicio DHCP sea relativamente agnóstico, de manera que soportamos los siguientes comandos usando la variable dhcp_eth0. Por defecto no se configuran ninguno de ellos.
Listado de Código 3.1: Ejemplo de configuración DHCP en /etc/conf.d/net |
# Solamente necesita hacerlo si tiene más de un módulo instalado modules=( "dhcpcd" ) config_eth0=( "dhcp" ) dhcpcd_eth0="-t 10" # Espera agotada (timeout) después de 10 segundos dhcp_eth0="release nodns nontp nonis" # Solamente obtenga la dirección IP |
Nota: dhcpcd y dpump envían el nombre de máquina al servidor DHCP por defecto así que no necesita especificarlo más. |
Primero necesitamos instalar el software ADSL.
Listado de Código 4.1: Instalar el paquete rp-pppoe |
# emerge net-dialup/ppp
|
Nota: Si necesita PPPoA, asegurese de utilizar >=baselayout-1.12.x. |
Segundo, cree el script de red PPP y el script de red para la interfaz ethernet que se utilizará con PPP:
Listado de Código 4.2: Crear los scripts de PPP y ethernet |
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0 # ln -s /etc/init.d/net.lo /etc/init.d/net.eth0 |
Asegúrese de configurar RC_NET_STRICT_CHECKING="yes" en /etc/conf.d/rc.
Ahora necesitamos configurar /etc/conf.d/net.
Listado de Código 4.3: Una configuración básica PPPoE |
config_eth0=( null ) (Especifique su intefaz ethernet) adsl_user_eth0="username" config_ppp0=( "ppp" ) link_ppp0="eth0" (Especifique su interfaz ethernet) plugins_ppp0=( "pppoe" ) username_ppp0='user' password_ppp0='password' pppd_ppp0=( "noauth" "defaultroute" "usepeerdns" "holdoff 3" "child-timeout 60" "lcp-echo-interval 15" "lcp-echo-failure 3" noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp ) depend_ppp0() { need net.eth0 } |
También puede configurar su password en /etc/ppp/pap-secrets.
Listado de Código 4.4: Ejemplo /etc/ppp/pap-secrets |
# Ojo: el * es importante
"nombre-usuario" * "contraseña"
|
Si utiliza PPPoE con un modem USB necesitará instalar br2684ctl. Por favor, lea /usr/portage/net-dialup/speedtouch-usb/files/README para conseguir la información de cómo configurarlo adecuadamente.
Importante: Por favor, lea con detenimiento la sección sobre ADSL y PPP en /etc/conf.d/net.example. Contiene explicaciones mucho más detalladas de todas las configuraciones que su instalación PPP podría necesitar. |
3.e. APIPA Direccionamiento Privado Automático (Automatic Private IP Addressing)
APIPA intenta encontrar una dirección libre en el rango 169.254.0.0-169.254.255.255 haciendo arping a direcciones aleatorias en ese rango para el interfaz. Si no se obtiene respuesta, se asigna esa dirección al interfaz.
Esto es útil solamente en redes donde no hay servidor DHCP y no hay conexión directa al Internet y que todos los demás computadores también usen APIPA.
Para soporte APIPA, haga emerge net-misc/iputils o net-analyzer/arping.
Listado de Código 5.1: Configuración de APIPA en /etc/conf.d/net |
# Intentar DHCP primero - y si falla, entonces usar APIPA config_eth0=( "dhcp" ) fallback_eth0=( "apipa" ) # Usar únicamente APIPA config_eth0=( "apipa" ) |
Para unir enlaces con bonding/trunking haga emerge net-misc/ifenslave.
El "bonding" se utiliza para aumentar el ancho de banda hacia la red. Si tiene dos interfaces que van a usar la misma red, puede unirlos (bond, en inglés) para que las aplicaciones vean solo uno, pero que en realidad usa ambos interfaces.
Listado de Código 6.1: Configuración del bonding en /etc/conf.d/net |
Para unir dos interfaces slaves_bond0="eth0 eth1 eth2" # Tal vez no quiera asignarle dirección IP al interfaz conjunto config_bond0=( "null" ) # Depend de eth0, eth1 y eth2, ya que podría requerir configuración adicional depend_bond0() { need net.eth0 net.eth1 net.eth2 } |
3.g. Puentes (soporte para 802.1d)
Para soportar puentes, haga emerge net-misc/bridge-utils.
Los puentes se usan para unir redes. Por ejemplo, puede tener un servidor conectando al internet vía modem ADSL y una tarjeta inalámbrica para que otros computadores se conecten al internet por medio del modem ADSL. Se puede crear un puente para unir ambos interfaces.
Listado de Código 7.1: Configurar un puente en /etc/conf.d/net |
# Configure el puente - para más detalles: "man brctl" brctl_br0=( "setfd 0" "sethello 0" "stp off" ) # Para agregar puertos al puente br0 bridge_br0="eth0 eth1" # Hará falta configurar los puertos a valores nulos para no iniciar dhcp config_eth0=( "null" ) config_eth1=( "null" ) # Finalmente, déle una dirección al puente - para esto puede usar DHCP también config_br0=( "192.168.0.1/24" ) # Depend de eth0 y eth1 ya que pueden requerir configuración adicional depend_br0() { need net.eth0 net.eth1 } |
Importante: Para usar algunas configuraciones de puente, tal vez tenga que consultar la documentación de Configuración por medio de variables. |
No hace falta hacer instalar nada para poder cambiar la dirección MAC de un interfaz por otra específica si se dispone de sys-apps/baselayout-1.11.14. Sin embargo, si necesita cambiarlo a una dirección MAC aleatoria o tiene un baselayout más antiguo que el mencionado anteriormente, entonces necesitará ejecutar emerge net-analyzer/macchanger para hacer uso de esta característica.
Listado de Código 8.1: Ejemplo de cambio de una dirección MAC |
# Establecer una dirección MAC de un interfaz mac_eth0="00:11:22:33:44:55" # Para cambiar aleatoriamente solo los últimos 3 bytes mac_eth0="random-ending" # Para cambiar aleatoriamente entre tipos de conexión # físicamente iguales (por ejemplo: fibra óptica, cobre, inalámbrica), # para todos los proveedores mac_eth0="random-samekind" # Para cambiar aleatoriamente entre cualquier tipo físico de # conexión (por ejemplo fibra óptica, cobre, inalámbrica), # para todos los proveedores mac_eth0="random-anykind" # Generación completamente aleatoria - # ADVERTENCIA: algunas direcciones MAC generadas de esta manera # tal vez NO se comporten de la forma esperada mac_eth0="random-full" |
No se requiere hacer emerge de paquete alguno para túneles, ya que el manejador del interfaz se encarga de esto.
Listado de Código 9.1: Configuración de túneles en /etc/conf.d/net |
# Para túneles GRE iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255" # Para túneles IPIP iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255" # Para configurar el interfaz config_vpn0=( "192.168.0.2 peer 192.168.1.1" ) |
3.j. VLAN (soporte para 802.1q)
Para soporte VLAN, haga emerge net-misc/vconfig.
Las redes virtuales son un grupo de dispositivos de red que se comportan comno si estuviesen conectados a un solo segmento de red - aunque no lo estén. Miembros de una VLAN solo pueden ver miembros de la misma VLAN, aunque no compartan la misma red física.
Listado de Código 10.1: Configuración de VLANs en /etc/conf.d/net |
# Especificar los números de las VLAN para el interfaz así # Por favor asegurar que los ID de las VLANs # NO tengan ceros a la izquierda vlans_eth0="1 2" # También se puede configurar la VLAN # vea la página man de vconfig para más detalles vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" ) vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" ) # Configure el interfaz como siempre config_vlan1=( "172.16.3.1 netmask 255.255.254.0" ) config_vlan2=( "172.16.2.1 netmask 255.255.254.0" ) |
Importante: Para usar algunas configuraciones de VLAN, tal vez haga falta consultar la documentación de Configuración por medio de variables. |
Actualmente soportamos la configuración de redes inalámbricas con wireless-tools o wpa_supplicant. Lo importante para recordar es que una red inalámbrica se configura de manera global y no por interfaz.
La mejor opción es wpa_supplicant, pero no soporta todos los controladores. Para una lista completa de controladores soportados, lea la página de wpa_supplicant. Además, actualmente, wpa_supplicant sólo puede conectarse a SSIDs para los cuales haya sido configurado.
Los wireless-tools soportan casi todas las tarjetas y controladores, pero no puede conectarse a PAs (puntos de acceso) con WPA solamente.
Aviso: Actualmente el controlador linux-wlan-ng no está soportado por baselayout. Esto es debido a que linux-wlan-ng tiene su propia configuración que es completamente diferente a las demás. Se rumorea que los desarrolladores de linux-wlan-ng están pensando en cambiar su configuración a wireless-tools. Cuando esto suceda, podremos utilizar linux-wlan-ng con baselayout. |
El WPA Supplicant es un paquete que permite conectarse a puntos de acceso habilitados con WPA. Su configuración está en estado cambiante, por estar todavía en beta, pero generalmente funciona a la perfección.
Listado de Código 2.1: Instalación de wpa_supplicant |
# emerge net-wireless/wpa_supplicant
|
Importante: Debe activar CONFIG_PACKET en su kernel para que funcione wpa_supplicant. |
Ahora debemos configurar /etc/conf.d/net para elegir wpa_supplicant sobre wireless-tools (si ambos están instalados, wireless-tools será usado por defecto).
Listado de Código 2.2: Configurar /etc/conf.d/net para wpa_supplicant |
# Preferimos wpa_supplicant sobre wireless-tools modules=( "wpa_supplicant" ) # Es importante decirle a wpa_supplicant cuál controlador # debemos usar ya que todavía no adivina bien wpa_supplicant_eth0="-Dmadwifi" |
Nota: Si está usando el controlador host-ap, hará falta colocar el interfaz en modalidad gestión (Managed mode) antes de poder usarlo correctamente con wpa_supplicant. Para esto puede usar iwconfig_eth0="mode managed" en /etc/conf.d/net. |
Eso fue sencillo, ¿verdad? Sin embargo, todavía nos queda configurar wpa_supplicant, que es algo más difícil, dependiendo de cuán seguros son los PAs a los cuales tratamos de conectarnos. A continuación mostramos un ejemplo simplificado del archivo /etc/wpa_supplicant.conf.example, parte del paquete wpa_supplicant.
Listado de Código 2.3: Un ejemplo de /etc/wpa_supplicant.conf |
# No cambie la siguiente línea, a riesgo que no funcione ctrl_interface=/var/run/wpa_supplicant # Asegúrese que sólo root puede leer la configuración de WPA ctrl_interface_group=0 # Permítale a wpa_supplicant encargarse del barrido y selección de los PA ap_scan=1 # Caso sencillo: WPA-PSK, PSK como contraseña-frase ASCII, # permitiendo todas las encriptaciones válidas network={ ssid="sencillo" psk="contraseña-frase muy secreta" # A mayor prioridad, más rápido nos conectaremos priority=5 } # Igual que el ejemplo anterior, pero barriendo por un SSID # específico (para los PAs que rechazan transmitir el SSID) network={ ssid="segundo ssid" scan_ssid=1 psk="contraseña-frase muy secreta" priority=2 } # Solamente estamos usando WPA-PSK. Se aceptada cualquier encriptación válida network={ ssid="ejemplo" proto=WPA key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP WEP104 WEP40 psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb priority=2 } # Conexión sin encriptar (sin WPA, o IEEE 802.1X) network={ ssid="prueba-noencriptada" key_mgmt=NONE } # Conexión con clave WEP compartida (sin WPA, o IEEE 802.1X) network={ ssid="prueba-estatica-wep" key_mgmt=NONE # Claves encomilladas son ASCII wep_key0="abcde" # Claves sin comillas en hexadecimal wep_key1=0102030405 wep_key2="1234567890123" wep_tx_keyidx=0 priority=5 } # Conexión con clave WEP compartida (sin WPA, o IEEE 802.1X) # usando autentificación con clave compartida IEEE 802.11 network={ ssid="prueba-estatica-wep2" key_mgmt=NONE wep_key0="abcde" wep_key1=0102030405 wep_key2="1234567890123" wep_tx_keyidx=0 priority=5 auth_alg=SHARED } # Red IBSS/ad-hoc con WPA-None/TKIP network={ ssid="prueba adhoc" mode=1 proto=WPA key_mgmt=WPA-NONE pairwise=NONE group=TKIP psk="contraseña-frase secreta" } |
Configuración inicial y modo manejado
Los Wireless Tools proveen una manera genérica para configurar los interfaces inalámbricos básicos hasta el nivel de seguridad WEP. Aunque WEP es un sistema de seguridad débil, también es el más prevalente.
La configuración de Wireless Tools es controlado por algunas variables principales. El archivo ejemplo de configuración a continuación deberá describir todo lo requerido. Algo para mantener presente es que ninguna configuración significa "conectarse al punto de acceso sin encriptación que tenga la señal más fuerte" - de manera que siempre tratará de conectarse con lo que sea.
Listado de Código 3.1: Instalar wireless-tools |
# emerge net-wireless/wireless-tools
|
Nota: Aunque pueda almacenar su configuración inalámbrica en /etc/conf.d/wireless, esta guía le recomienda hacerlo en /etc/conf.d/net. |
Importante: Hará falta consultar la documentación acerca de nombres de variables. |
Listado de Código 3.2: Configuración ejemplo con iwconfig en /etc/conf.d/net |
# Prefiera iwconfig sobre wpa_supplicant modules=( "iwconfig" ) # Configure las claves WEP para los PAs ESSID1 y ESSID2 # Pueden configurarse hasta 4 claves WEP, pero solo una puede # estar activa a la vez, así que tenemos un índice por defecto # de [1] para la clave [1] y luego otra vez para cambiar la clave activa a [1] # Hacemos esto en caso que defina otros ESSIDs para usar claves WEP que no sean 1 # # El prefijar la clave con s: significa que es una clave ASCII, # porque sino es una clave HEX # # enc open especifica seguridad abierta (máxima seguridad) # enc restricted especifica seguridad restringida (menos segura) key_ESSID1="[1] s:suclaveaqui key [1] enc open" key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted" # Los ejemplos a continuación solo funcionan una vez que se # haya barrido para los PAs disponibles. # A veces se registra más de un PA, así que hará falta definir # un orden de preferencia para conectarse preferred_aps=( "ESSID1" "ESSID2" ) |
Afinamiento en la selección de puntos de acceso
Puede agregar opciones adicionales para afinar la selección de puntos de acceso, pero normalmente esto no hace falta.
Puede decidirse si conectarse solamente a PAs preferidos o no. Por defecto, si falla todo lo configurado y nos podemos conectar a un PA no encriptado, entonces se hará. Esto puede ser controlado con la variable associate_order (orden asociado). Sigue una tabla de valores y como estos ejercen este control.
| Valor | Descripción |
| any | (cualquiera) Comportamiento por defecto |
| preferredonly | (solo preferidos) Solamente nos conectaremos a PAs visibles en la lista de preferidos |
| forcepreferred | (obligado a preferidos) Nos conectaremos obligatoriamente a los PAs en el orden preferido aunque no se encuentren en un barrido |
| forcepreferredonly | (solamente preferidos obligados) No barrer buscando PAs - solo tratar de conectar a cada uno en orden |
| forceany | (obligar a cualquiera) Igual que forcepreferred y además se conecta a cualquier otro disponible |
Finalmente podemos hacer una lista negra de PAs (blacklist_aps) y seleccionar un único PA (unique_ap). blacklist_aps funciona de manera similar a preferred_aps. unique_ap es un valor si o no (yes o no) que determina si un segundo interfaz inalámbrico se puede conectar al mismo punto de acceso que el primer interfaz.
Listado de Código 3.3: Ejemplo de blacklist_aps y de unique_ap |
# A veces nunca queremos conectarnos a algunos PAs blacklist_aps=( "ESSID3" "ESSID4" ) # Si tiene más de una tarjeta inalámbrica, puede determinar # que cada interfaz se asocie al mismo PA o no # Los valores son "yes" y "no" # El valor por defecto es "yes" unique_ap="yes" |
Si desea establecerse como un nodo Ad-Hoc al no lograr conectarse a algún PA en modo manejado, puede hacerlo también.
Listado de Código 3.4: Usar modo ad-hoc en caso de no conectar en modo manejado |
adhoc_essid_eth0="This Adhoc Node" |
Y ¿qué tal conectarse a redes Ad-Hoc o funcionar en modo Master para convertirse en PA? ¡Aquí tenemos una configuración justo para eso! Tal vez tenga que especificar alguna clave WEP como se muestra arriba.
Listado de Código 3.5: Ejemplo de configuración ad-hoc/master |
# Establezca el modo - que puede ser manejado (por defecto), ad-hoc o master # No todos los manejadores soportan todos los modos mode_eth0="ad-hoc" # Establezca el ESSID del interfaz # En modo manejado, esto obliga el interfaz intentar conectarse al # ESSID especificado solamente essid_eth0="This Adhoc Node" # Usamos el canal 3 si no se establece otro channel_eth0="9" |
Importante: A continuación citamos la documentación wavelan de BSD encontrado en la documentación de NetBSD Existen 14 canales posibles; Se nos informa que los canales 1-11 son legales para Norteamérica , los canales 1-13 para la mayor parte de Europa, los canales 10-13 para Francia y sólo el canal 14 para el Japón. En caso de duda, por favor refiérase a la documentación que acompaña la tarjeta o el PA. Asegúrese que el canal que selecciona es el mismo del PA (o de la otra tarjeta en caso de ser red ad-hoc). Para las tarjetas vendidas en Norteamérica y la mayor parte de Europa, es el canal 3 por defecto; en Francia el 11 y en el Japón es el 14. |
Solucionando problemas con Wireless Tools
Existen más variables que sirven para ayudar a configurar y operar una red inalámbrica por problemas ambientales o del manejador. Aquí presentamos una tabla de otras cosas para intentar.
| Variable | Valor por defecto | Descripción |
| iwconfig_eth0 | Vea la página man de iwconfig para detalles acerca de qué enviar a iwconfig | |
| iwpriv_eth0 | Vea la página man de iwpriv para detalles acerca de qué enviar a iwpriv | |
| sleep_scan_eth0 | 0 | La cantidad en segundos a dormir antes de intentar un barrido. Esto hace falta cuando el manejador/firmware requiere de más tiempo para activarse antes de poder usarlos. |
| sleep_associate_eth0 | 5 | La cantidad en segundos a esperar para que el interfaz se asocie con el PA antes de continuar al siguiente. |
| associate_test_eth0 | MAC | Algunos manejadores no resetean la dirección MAC asociada a una inválida cuando pierden la señal o intentan asociarse. Algunos manejadores no resetean el nivel de calidad cuando pierden la señal o intentan asociarse. La configuraciones válidas son MAC, quality y all. |
| scan_mode_eth0 | Algunos manejadores tienen que hacer el barrido en modo ad-hoc, así que, si falla el barrido, intente configurar aquí como ad-hoc. | |
| iwpriv_scan_pre_eth0 | Envía algunos comandos iwpriv al interfaz antes del barrido. Consulte la página man de iwpriv para más detalles. | |
| iwpriv_scan_post_eth0 | Envía algunos comandos iwpriv al interfaz después del barrido. Vea la página man de iwpriv para más detalles. |
4.d. Definiendo la configuración de la red por ESSID
A veces, se necesita una dirección IP estática cuando se conecta a un ESSID1 y cuando lo hace a ESSID2, se utiliza DHCP. De hecho, casi todas las variables de módulo pueden cambiarse por ESSID. A continuación mostramos cómo se hace.
Nota: Esto funciona sin importar si usa WPA Supplicant o Wireless Tools. |
Importante: Necesitará consultar la documentación variable name. |
Listado de Código 4.1: Reemplazar configuración de red por ESSID |
config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" ) routes_ESSID1=( "default via 192.168.0.1" ) config_ESSID2=( "dhcp" ) fallback_ESSID2=( "192.168.3.4/24" ) fallback_route_ESSID2=( "default via 192.168.3.1" ) # Podemos definir servidores DNS y otras cosas también # NOTA: DHCP reemplazará esta configuración si no se le pide que no lo haga dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" ) dns_domain_ESSID1="algun.dominio" dns_search_domains_ESSID1="busque.eneste.dominio busque.enaquel.dominio" # Reemplace usando la dirección MAC del PA # Esto es muy útil si usa distintas ubicaciones con el mismo ESSID config_001122334455=( "dhcp" ) dhcpcd_001122334455="-t 10" dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" ) |
5.a. Puntos de enlace standard en las funciones
Cuatro funciones puedes ser definidas, llamables antes y después de operación de arranque/parada. Sus nombre se componen usando el nombre de interfaz primero, para que una función puede controlar múltiples interfaces.
Los valores de retorno de las funciones preup y predown deben ser cero (éxito) indicando que la configuración o la des-configuración de los interfaces pueden continuar. Si preup devuelve un no-cero, se detendrá la configuración del interfaz. Si predown devuelve un valor no-cero, no se permite que el interfaz continúe desconfigurándose.
Los valores de retorno de las funciones postup y postdown son ignorados, ya que no hay nada por hacer si indican algún fallo.
${IFACE} es el interfaz que será encendido/apagado, ${IFVAR} es ${IFACE} convertido a un nombre de variable válido según bash.
Listado de Código 1.1: Ejemplo de funciones pre/post up/down |
preup() {
# Comprobación del enlace de la interfaz antes de activarla.
# Esto solamente funciona con algunos interfaces de red y necesita
# que el paquete ethtool este instalado.
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
# Recordamos devolver cero si todo fue correcto
return 0
}
predown() {
# Por defecto en el script de inicio se comprueba si
# el sistema (root) está montado por NFS y en ese caso no permitir
# que las interfaces se desactiven. Tenga en cuenta que, si
# especifica una función predown() sobreescribirá está regla.
# Aquí la tiene en caso de que todavía quiera utilizarla...
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
# Recordamos devolver cero si todo fue correcto
return 0
}
postup() {
# Esta función podría utilizarse, por ejemplo, para
# registrarse en un servicio dinámico de DNS. Otra posibilidad
# sería enviar un correo cada vez que la interfaz se conecta.
return 0
}
postdown() {
# Esta función está en gran parte por completar ...
Aún no hemos pensado en nada interesante que pueda hacer ;-)
return 0
}
|
5.b. Puntos de enlace para las herramientas inalámbricas
Nota: Esto no funcionará con WPA suplicante - pero las variables ${ESSID} y ${ESSIDVAR} están disponibles en la función postup(). |
Se pueden definir dos funciones ejecutables antes y después de la función asociada referida. Estas funciones se nombran antecediéndole el nombre del interfaz, de manera que la misma función puede controlar múltiples interfaces.
El valor retornado por la función preassociate() debe ser 0 (éxito) para indicar que la configuración o desconfiguración del interfaz puede continuar. Si la función preassociate() retorna un valor no-cero, se interrumpirá la configuración del interfaz.
El valor retornado por la función postassociate() se ignora, ya que no hay nada que hacer si llegase a indicarse una falla.
Al ${ESSID} se le asigna el ESSID exacto del PA al cual se está conectando ya que ${ESSIDVAR} es ${ESSID}, convertido a un nombre de una variable permitido por bash.
Listado de Código 2.1: Funciones pre/post asociación |
preassociate() {
# A continuación se agregan 2 variables
# de configuración leap_user_ESSID y leap_pass_ESSID. Cuando
# ambos esten configurados para el ESSID al que se conectan,
# corremos el guión LEAP de CISCO.
local user pass
eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
if [[ -n ${user} && -n ${pass} ]]; then
if [[ ! -x /opt/cisco/bin/leapscript ]]; then
eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
return 1
fi
einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
ewarn "Login Failed for ${user}"
return 1
fi
fi
return 0
}
postassociate() {
# Esta función existe mayormente para completar ...
# aunque no he pensado en algo interesante para hacer acá
# todavía ;-)
return 0
}
|
Nota: Las variables ${ESSID} y ${ESSIDVAR} no están disponibles en las funciones predown() y postdown(). |
Si el ordenador está en continuo movimiento, no siempre tendrá un cable ethernet conectado o un punto de acceso disponible. También, puede querer que la red funcione automáticamente cuando un cable ethernet se conecte o se encuentre un punto de acceso.
Aquí se encuentran algunas herramientas que puede ayudar a gestionar esto.
Nota: Esto documento solamente tiene habla sobre ifplugd, pero hay alternativas como netplub. netplug es una alternativa ligera a ifplugd, pero confía en que tus controladores de red del kernel funcionen correctamente, cosa que muchas veces no es así. |
ifplugd es un demonio que arranca y para las interfaces de red cuando un cable se conecta o se desconecta. También puede gestionar la detección asociándose a un punto de acceso o cuando uno nuevo entra dentro del radio de detección.
Listado de Código 2.1: Instalar ifplugd |
# emerge sys-apps/ifplugd
|
La configuración de ifplugd es bastante clara. El archivo de configuración se encuentra en /etc/conf.d/net. Ejecute man ifplugd para obtener más detalles sobre las variables disponibles. Además, puede consultar más ejemplos en /etc/conf.d/net.example.
Listado de Código 2.2: Ejemplo de configuración de ifplug |
(Sustituya eth0 con la interfaz que quiera monitorizar) ifplugd_eth0="..." (Para monitorizar una interfaz wireless) ifplugd_eth0="--api-mode=wlan" |
Además, para manejar múltiples conexiones de red, quizá quiera instalar una herramienta que facilita el trabajo con múltiples configuraciones y servidores DNS. Es realmente útil cuando se recibe la dirección IP via DHCP. Simplemente instale openresolv.
Listado de Código 2.3: Instalar openresolv |
# emerge openresolv
|
Consulte man resolvconf para aprender más cosas sobre sus características.
El contenido de este documento está registrado bajo los términos de la licencia Creative Commons - Reconocimiento / Compartir Igual