[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Esta Debian Reference
(version 1)
intenta proporcionar un repaso amplio del sistema Debian
al igual que una guía de usuario post-instalación Abarca
diversos aspectos de la administración del sistema mediante ejemplos que
utilizan comandos de la shell. Se brindan tutoriales, trucos e información
sobre diversos temas: conceptos básicos del sistema Debian, consejos para la
instalación del sistema, administración de paquetes Debian, el kernel de
Linux en Debian, puesta a punto del sistema, creación de una puerta de enlace
(gateway), editores de texto, CVS, programación y GnuPG para usuarios que
no son desarrolladores.
Copyright © 2001–2008 by Osamu Aoki <osamu#at#debian.org>
Copyright (Chapter 2) © 1996–2001 by Software in the Public Interest.
Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.
incoming/
/etc
dpkg
/var
dpkg
se encuentra dañado
sources.list
optimizado
recode
nice
cron
, at
)screen
mbox
chroot
lilo
xhost
ssh
xterm
vim
puede editar múltiples archivos en un entorno de múltiples ventanas. Escriba ":help usr_08.txt" para más detalles.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Esta Debian Reference
(version 1)
intenta proporcionar un amplio repaso del sistema Debian
al igual que una guía de usuario post-instalación. El lector a quien va
dirigida es todo aquel dispuesto a leer scripts de shell. Supongo que además
adquirió ciertas habilidades básicas en sistemas tipo UNIX.
He tomado la decisión de no explicar todo en detalle como si
se tratara de una página del manual, una página info o un documento HOWTO.
En vez de explicaciones detalladas, intento proporcionar información práctica
dando la secuencia exacta de comandos en el texto principal o en los scripts de
ejemplo situados en http://www.debian.org/doc/manuals/debian-reference/examples/
.
Debe comprender el contenido de los ejemplos antes de usar cualquier comando.
Su sistema puede requerir de una secuencia de comandos ligeramente diferente.
Gran parte de la información incluida consiste en enlaces hacia referencias oficiales listadas en Referencias, Sección 15.1..
Inicialmente, este documento era una "referencia rápida" pero creció. No obstante, mi principio rector sigue siendo resúmalo y simplifíquelo.
Para obtener ayuda para un sistema en emergencia vaya directamente a Comandos de supervivencia de Debian, Sección 6.3.
La última versión oficial de este documento se encuentra en los archivos
Debian en el paquete debian-reference-en
. También se encuentra
disponible en http://www.debian.org/doc/manuals/debian-reference/
.
La última versión en desarrollo se encuentra en http://packages.qa.debian.org/d/debian-reference.html
.
El proyecto se hospeda en http://www.debian.org/doc/user-manuals#quick-reference
donde este documento se encuentra disponible para descargar en los formatos de
texto, HTML, PDF, SGML y PostScript.
La "Debian Reference (version 1)" proporciona información mediante
comandos del shell bash
. Veamos las convenciones utilizadas:
# comando en la cuenta de superusuario $ comando en la cuenta de usuario normal ... descripción de la acción
Estos ejemplos utilizan PS2=" ". Véase Bash – el intérprete de comandos interactivo estándar de
GNU, Sección 13.2.1 para más información sobre
bash
.
Una referencia:
una página del manual se muestra así bash(1)
.
una página TEXINFO GNU se muestra así info libc.
un libro se muestra así El Lenguaje de Programación C.
una URL se muestra así http://www.debian.org/doc/manuals/debian-reference/
.
un archivo del sistema se muestra así
file:///usr/share/doc/debian-reference-common/html/
.
Se utilizaron las siguientes abreviaturas:
LDP: Proyecto de Documentación de Linux (http://www.tldp.org/
)
DDP: Proyecto de Documentación de Debian (http://www.debian.org/doc/
)
Otras abreviaturas han sido definidas en el texto antes de ser utilizadas.
Si bien únicamente se proporcionan las URLs de los documentos del LDP,
también se pueden obtener en paquetes e instalarse en
file:///usr/share/doc/HOWTO/
. Véase Referencias, Sección 15.1.
Los scripts de
ejemplo
que acompañan este documento en el paquete
debian-reference-en
se encuentran disponibles en
file:///usr/share/doc/debian-reference-common/html/
. El
"." inicial en el nombre de los archivos ocultos ha sido reemplazados
por un guión de subrayado "_". Se ha añadido un sufijo extra
cuando existen diversos scripts de ejemplo para un mismo tema.
Si el sistema ha sido instalado con la cantidad mínima de paquetes y desea hacer un mejor uso de esta guía, es aconsejable que ejecute el siguiente comando para instalar otros paquetes que contienen documentación útil:
# aptitude install mc less ssh vim kernel-package \ manpages-dev doc-debian doc-linux-text \ debian-policy developers-reference maint-guide \ apt-howto harden-doc debian-reference \ libpam-doc glibc-doc samba-doc exim4-doc-html
Debian se encarga de tres distribuciones simultáneamente. Estas son:
estable — La más útil para un servidor ya que sólo se actualiza con parches de seguridad. Véase La distribución estable, Sección 2.1.3.
de prueba — La distribución preferidad para una estación de trabajo ya que contiene las últimas versiones de programas de escritorio que han sido relativamente probados. Véase La distribución de prueba, Sección 2.1.4.
inestable — Lo último de lo último. La elección de los desarrolladores de Debian Véase La distribución inestable, Sección 2.1.5.
Cuando los paquetes de la rama inestable no poseen fallos críticos (RC) dados a conocer durante la primera semana de pruebas, automáticamente se transfieren a la rama de prueba.
Debian distributions also have code names as described in Los nombres de versión de la distribución Debian, Sección 2.1.7. Antes del lanzamiento de Woody en agosto del 2002, las tres distribuciones eran, respectivamente, Potato, Woody y Sid. Cuando salga Sarge las distribuciones estable e inestable serán Sarge y Sid. Se creará entonces una nueva distribución de prueba que será inicialmente una copia de la distribución estable y se le asignará un nuevo nombre.
Suscríbase a la lista de poco tráfico debian-devel-announce@lists.debian.org para estar al tanto sobre las novedades de Debian. Véase Los archivos Debian, Sección 2.1.
Si desea utilizar versiones de paquetes que son más actuales que las que acompañan a la distribución que está usando, puede o actualizar a una distribución posterior como se explica en Actualizando una distribución, Capítulo 5 o bien actualizar únicamente los paquetes seleccionados. Si el paquete no puede actualizarse fácilmente puede acondicionarlo tal como se explica en Portar un paquete a la rama stable, Sección 6.4.10. |
Permanecer en la versión de prueba de Debian tiene como efecto colateral la lenta solución de los fallos de seguridad. Los paquetes que solucionan estos fallos se ubican en inestable y migran a de prueba sólo mucho después.
Si mezcla versiones de Debian, por ejemplo, de prueba con
estable o inestable con estable, es muy
probable que descargue paquetes fundamentales tales como libc6
de
la rama de prueba o inestable no habiendo garantía
que no contengan errores. Queda debidamente advertido.
Utilizar la versión de prueba o inestable de Debian
conlleva el riesgo creciente de encontrarse con fallos graves. Esto puede
evitarse, creando un esquema multi-arranque con versiones más estables de
Debian, o utilizando un truco interesante con chroot
con la
versión más estable como se explica en chroot
, Sección 8.6.35. Esta última
opción nos permitirá ejecutar diferentes versiones de Debian simultáneamente
en diferentes consolas.
Luego de explicar algunos fundamentos de la distribución Debian en Fundamentos de Debian, Capítulo 2, presentaré cierta información básica para ayudarle a vivir tranquilamente con los programas más actuales, aprovechando las ventajas de las distribuciones Debian de prueba e inestable. Los impacientes deberían ir directamente a Comandos de supervivencia de Debian, Sección 6.3. ¡Feliz actualización!
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Este capítulo proporciona información fundamental sobre el sistema Debian para aquellos que no son desarrolladores. Para información autorizada, consulte:i
Manual de Normativa de Debian
Referencia para los Desarrolladores de Debian
Guía para Nuevos Encargados de Paquetes de Debian
listada en la sección Referencias, Sección 15.1.
Si está buscando explicaciones menos detalladas, vaya directamente a la Administración de paquetes Debian, Capítulo 6 o a los capítulos adecuados.
Este capítulo se basa en información obtenida de las "FAQ de Debian" reorganizada totalmente a fin de permitir dar sus primeros pasos a los administradores de sistemas Debian.
El software que ha sido empaquetado para Debian está disponible en alguno de
los diversos árboles de directorios situados en cada sitio réplica Debian
a través
de FTP o HTTP.
En cada sitio réplica de Debian, bajo el directorio debian
se
pueden encontrar los siguientes directorios:
dists/
:
Este directorio contiene las "distribuciones" y se utilizan para
acceder a los paquetes actualmente disponibles en las versiones y pre-versiones
de Debian. Aún se pueden encontrar aquí algunos paquetes antiguos, archivos
Contents-*.gz
, y archivos Packages.gz
.
pool/
:La nueva ubicación de todos los paquetes de todas las versiones y versiones previas de Debian.
tools/
:Utilidades del DOS para crear discos de arranque, particionar su unidad de disco, comprimir/descomprimir archivos y arrancar Linux.
doc/
:La documentación básica de Debian: FAQ, instrucciones para dar a conocer un fallo, etc.
indices/
:El archivo Maintainers y los archivos override.
project/
:principalmente recursos para el desarrollador, tales como:
project/experimental/
:Este directorio contiene paquetes y herramientas que aún están en desarrollo y en la etapa alfa de prueba. Los usuarios no deberían usar estos paquetes ya que pueden resultar peligrosos y perjudicial incluso para los más experimentados.
project/orphaned/
:Paquetes que han sido abandonados por las personas los tenían a cargo y que han sido retirados de la distribución.
Normalmente existen tres distribuciones Debian en el directorio
dists
: la distribución estable (stable) , la
distribución de prueba (testing) y la distribución
inestable (unstable). A veces existe una distribución
congelada (véase La distribución
congelada, Sección 2.1.6). Cada distribución viene definida
por un enlace simbólico al directorio real, utilizando un nombre de código en
el directorio dists
Los paquetes de la versión estable, Debian Lenny (5.0), se
encuentran en el directorio stable
(enlace simbólico a
lenny
):
stable/main/
: Este directorio contiene los paquetes que pertenecen
a la versión oficial más reciente del sistema Debian.
Todos estos paquetes son libres, es decir, están de acuerdo con Las directivas del
Software Libre de Debian
(DFSG) (también disponible como
file:///usr/share/doc/debian/social-contract.txt
que se instala
mediante debian-doc
).
stable/non-free/
: este directorio contiene paquetes que no se
pueden considerar como libres de acuerdo con la DFSG.
Por ejemplo, algunos paquetes tienen licencias que prohiben su distribución comercial. Otros pueden ser redistribuidos pero, de hecho, son shareware.
stable/contrib/
: este directorio contiene paquetes que son libres
de acuerdo con la DFSG pero que dependen de algún modo de otro paquete que
no es libre.
Actualmente, además de las ubicaciones anteriores, los paquetes nuevos se
encuentran físicamente en el directorio pool
(El directorio pool, Sección 2.1.10).
El estado actual de los fallos de la distribución estable se
puede consultar en la página web Stable
Problems
.
Los paquetes de la versión de prueba, Debian Squeeze, se
encuentran en el directorio testing
(enlace simbólico a
squeeze) tras haber sido probados durante cierto tiempo en la rama
inestable. Actualmente, además de las ubicaciones anteriores,
los paquetes nuevos se localizan en el directorio pool
(El directorio pool, Sección 2.1.10).
Asimismo, también están los subdirectorios main
,
contrib
y non-free
que cumplen las mismas funciones
que en la rama estable
.
Estos paquetes deben estar en sintonía con todas las arquitecturas para las
cuales fueron construidos y deben poder instalarse; además, deben tener menos
fallos críticos que las versiones que se encuentran en la rama
inestable. De esta manera, es de esperar que la rama de
prueba sea la posible candidata de la próxima versión. Más detalles
sobre este mecanismo en: http://www.debian.org/devel/testing
.
El estado final de la distribución de prueba se puede consultar en los siguientes sitios:
Los paquetes de la versión inestable, denominada siempre
"Sid", se encuentran en el directorio unstable
(enlace
simbólico a sid
) tras haber sido transferidos al archivo Debian y
permanecer allí hasta su translado a la rama de prueba
Actualmente, además de las ubicaciones anteriores, los paquetes nuevos se
ubican en el directorio pool
(El directorio
pool, Sección 2.1.10). Asimismo, también están los
subdirectorios main
, contrib
y non-free
que cumplen las mismas funciones que en la rama estable
.
La distribución inestable contiene la imagen más reciente del sistema en desarrollo. Se alienta a los usuarios a usar y probar estos paquetes pero se les advierte sobre su estado. La ventaja de usar la distribución inestable es que uno siempre está actualizado con lo último del proyecto Debian— pero si deja de funcionar deberá conservar ambas partes :-)
El estado actual de los fallos de la distribución inestable se
puede consultar en la página web Problemas de la
rama inestable
.
Cuando la distribución de prueba está suficientemente madura se
"congela", es decir, ya no se aceptan programas nuevos y -de ser
necesario- sólo se eliminan fallos. Asimismo, en el directorio
dists
se crea un nuevo árbol "de prueba" al que se le
asigna un nuevo nombre. La distribución congelada está durante algunos meses
de prueba con actualizaciones continuas y congelaciones totales denominadas
`ciclos de prueba.
En la distribución congelada se mantiene un registro de fallos que pueden retrasar la liberación de un paquete o de la distribución completa. Una vez que los fallos están por debajo de los valores máximos aceptables, la distribución congelada se transforma en la distribución estable, es liberada y la versión estable anterior se vuelve obsoleta (y se archiva).
Los nombres de los directorios situados en el directorio dists
,
tales como lenny
y squeeze
, son simplemente los
"nombres de versión". Cuando una distribución Debian se encuentra
en la etapa de desarrollo, no tiene número de versión sino un "nombre de
versión". El propósito de estos nombres es facilitar la replicación de
la distribuciones Debian (si un directorio como unstable
cambia de
repente su nombre a stable
, sin ser necesario, se tendrían que
descargar un montón de cosas nuevamente).
Actualmente, stable/
es un enlace simbólico a lenny
y testing/
es un enlace simbólico a squeeze. Esto
significa que Lenny es la distribución estable y
Squeeze la distribución de prueba actuales.
unstable
es un enlace simbólico permanente a sid/
,
ya que Sid siempre es la distribución inestable.
Nombres de versión que ya han sido usados: "Buzz" para la versión 1.1, "Rex" para la versión 1.2, "Bo" para la versión 1.3.x, "Hamm" para la versión 2.0, "Slink" para la versión 2.1, "Potato" para la versión 2.2, "Woody" para la versión 3.0 y "Sarge" para la versión 3.1.
Hasta aquí han sido tomados de la película Toy Story de Pixar.
Buzz (Buzz Lightyear) era el cosmonauta,
Rex era el tiranosaurio,
Bo (Bo Peep) era la niña que cuidaba la oveja,
Hamm era el cerdito alcancía,
Slink (Slinky Dog) era el perro de juguete,
Potato era, por supuesto, el Sr. Potato,
Woody era el vaquero.
Sarge era el líder del ejército de plástico verde,
Etch (Etch-a-Sketch) era el pizarón,
Sid era el vecinito que destruyó los juguetes.
Históricamente, los paquetes se guardaban en el subdirectorio
dists
correspondiente a una determinada distribución. Esto
ocasionaba diversos problemas, como -por ejemplo- un gran consumo del ancho de
banda de los sitios réplicas cuando se realizaban grandes cambios.
Actualmente, los paquetes se guardan en un gran `depósito', estructurado según el nombre del paquete fuente. Para facilitar su uso, el depósito está subdividido en secciones (main, contrib y non-free) y por la primer letra del nombre del paquete fuente. Estos directorios contienen diversos archivos: los paquetes binarios para cada arquitectura y los paquetes fuentes a partir de los cuales se han generado los mismos.
Puede averiguar el lugar donde se encuentra un paquete ejecutando el comando
apt-cache showsrc nombre_paquete y leyendo la línea
que dice `Directory:'. Por ejemplo, los paquetes de apache
se
encuentran en pool/main/a/apache/
. Puesto que existen tantos
paquetes lib* estos son tratado de una manera especial: por
ejemplo, los paquetes libpaper
se encuentran en
pool/main/libp/libpaper/
.
Los directorios dists
aún se siguen utilizando para los archivos
índice usados por programas como apt
. De todas maneras, al
momento de escribir este doucmento, las distribuciones antiguas no han sido
modificadas para usar estos 'depósitos' por lo que verá rutas que contienen
nombres de distribuciones tales como potato o woody
en el campo de cabecera "Directory".
Normalmente, no se debe preocupar por nada de esto ya que la reciente
apt
y probablemente la antigua dpkg-ftp
se harán
cargo en forma totalmente transparente. Si desea más información, consulte
las RFC:
implementación de las herramientas de paquetes
.
Cuando la actual Sid no existía, la organización del archivo Debian adolecía
de un grave inconveniente: se suponía que cuando una arquitectura era creada
en la rama inestable
, iba a ser liberada cuando la distribución
se transformara en la nueva versión estable. Para muchas
arquitecturas éste no era el caso con lo cual los correspondientes directorios
debían desplazarse ante un nuevo lanzamiento. Esto no resultaba práctico ya
que esta acción consumía ingentes cantidades de ancho de banda.
Los administradores del archivo evitaron el problema durante muchos años
ubicando los binarios de las arquitecturas no liberadas en un directorio
especial llamado sid
. Cerca del lanzamiento de estas
arquitecturas se creaba un enlace entre la versión estable
y
sid
y a partir de allí eran creadas dentro de la rama
inestable
de manera normal. Esta disposición era un tanto
confusa para los usuarios.
Con la llegada de los repositorios de paquetes (véase El directorio pool, Sección 2.1.10) durante el desarrollo de la distribución Woody, los paquetes binarios comenzaron a guardarse en un lugar estándar del depósito, independientemente de la distribución, de modo que al liberar una distribución no se produciera un gran consumo de ancho de banda en los sitios réplica (existe, no obstante, un consumo gradual del ancho de banda durante el proceso de desarrollo).
incoming/
Los paquetes transferidos primero se ubican en http://incoming.debian.org/
luego
de haber sido analizados para asegurar que realmente provienen de un
desarrollador de Debian (y son ubicados en el subdirectorio
DELAYED
en el caso de una transferencia de una persona que no es
encargada: Non-Maintainer Upload (NMU)). Una vez por día, se transladan de
incoming/
a unstable/
.
En una emergencia, si desea instalar paquetes desde incoming/
antes de ir a unstable/
.
Mientra que las distribuciones de Debian más recientes se encuentran en el
directorio debian
de cada sitio réplica
, los archivos de
las antiguas distribuciones de Debian tales como Slink se guardan en http://archive.debian.org/
o en el
directorio debian-archive
de cada sitio réplica de Debian.
Los paquetes antiguos de la rama de prueba e
inestable se pueden localizar en http://snapshot.debian.net/
.
Dentro de cada uno de los árboles de directorios principales
(dists/stable/main
, dists/stable/contrib
,
dists/stable/non-free
, dists/unstable/main
, etc.) las
entradas de los paquetes binarios residen en subdirectorios cuyos nombres
indican la arquitectura para la cual fueron compilados.
binary-all/
para paquetes no dependen de la arquitectura. Aquí
se incluyen, por ejemplo, scripts escritos en Perl o documentación.
binary-platform/
para paquetes que se ejecutan en una
plataforma determinada.
Por favor, observe que los paquetes binarios para la versión de
prueba y la versión inestable ya no residen en estos
directorios sino en el directorio de nivel superior pool
. No
obstante, por cuestiones de compatibilidad hacia atrás se siguen conservando
los archivos índice (Packages
y Packages.gz
).
Para las arquitectura binarias actualmente soportadas, consulte las Release
Notes de cada distribución. Se pueden ubicar en los sitios de Notas de
versión para stable
y
testing
.
En el sistema Debian se incluye el código fuente para todo. Por otra parte, los términos de la licencia de la mayoría de los programas del sistema exigen que se distribuyan junto con su código fuente o que proporcionen una manera de obtenerlo.
Normalmente el código fuente se distribuye a través de los directorios
source
, que son paralelos a todos los directorios que contienen
los binarios correspondiente a una arquitectura específica o, más
recientemente, en el directorio pool
(véase El
directorio pool, Sección 2.1.10). Para obtener el código
fuente sin estar familiarizado con la estructura del archivo Debian, pruebe
hacer apt-get source nombre_paquete.
Algunos paquetes, en especial pine
, se distribuyen únicamente
como código fuente debido a las limitaciones impuestas por su licencia (hace
poco se ha incluido el paquete pine-tracker
para facilitar la
instalación de Pine). El procedimiento descrito en Portar
un paquete a la rama stable, Sección 6.4.10 y Creación de paquetes Debian, Sección 13.10 describe
la manera de contruir un paquete en forma manual.
Para los paquetes de los directorios "contrib" y "non-free", que formalmente no forman parte del sistema Debian, el código fuente puede o no estar disponible.
Los paquetes contienen generalmente todos los archivos necesarios para implementar un conjunto de comandos relacionados o características. Existen dos tipos de paquetes Debian:
Paquetes binarios, que contienen ejecutables, archivos de
configuración, páginas man/info, información sobre derechos de autor y otra
documentación. Estos paquetes se distribuyen en un formato de archivo
específico de Debian (véase Formato de los paquetes
Debian, Sección 2.2.2); que se distinguen por tener a .deb
como extensión de archivo. Los paquetes binarios se pueden desempaquetar
usando la utilidad de Debian dpkg
; se brindan más detalles en la
página del manual.
Paquetes fuentes, que consisten en un archivo .dsc que
describe el paquete (incluyendo el nombre de los archivos que siguen), un
archivo .orig.tar.gz que contiene el código fuente original sin
modificar en formato tar comprimido con gzip y, generalmente, un archivo
.diff.gz que contiene los cambios del código fuente original
específicos de Debian. La utilidad dpkg-source
empaqueta y
desempaqueta los archivos fuentes de Debian; se brindan más detalles en la
página del manual.
La instalación de software mediante el sistema de paquetes utiliza
"dependencias" que fueron señaladas por las personas a cargo de los
paquetes. Estas dependencias están documentadas en el archivo
control
asociado a cada paquete. Por ejemplo, el paquete que
contiene el compilador C GNU (gcc
) depende del paquete
binutils
que incluye el enlazador y ensamblador. Si un usario
intenta instalar gcc
sin haber previamente instalado
binutils
, el sistema de administración de paquetes (dpkg)
mostrará un mensaje de error diciendo que necesita también a
binutils
y abortará la instalación de gcc
(no
obstante, el usuario insistente puede hacer caso omiso, véase
dpkg(8)
) Para más detalles, véase Dependencias entre paquetes, Sección 2.2.8 más abajo.
Las herramientas de los paquetes de Debian se pueden usar para:
manipular y administrar paquetes o partes de paquetes,
ayudar al usuario a dividir paquetes que deben distribuirse a través de medios de tamaño limitado como, por ejemplo, disketes
asistir a los desarrolladores en la construcción de paquetes y
ayudar a los usuarios a instalar paquetes que se encuentran en sitios Debian remotos.
Un "paquete" Debian o un archivo Debian contiene los archivos ejecutables, bibliotecas y la documentación asociada con un programa particular o con un conjunto de programas relacionados. Normalmente, un archivo Debian tiene ua extensión de archivo que termina en .deb.
La estructura interna del formato de paquetes binarios de Debian se describen
en la página del manual deb(5)
. Puesto que el formato interno
está sujeto a cambios (entre los lanzamientos principales de Debian), siempre
utilice dpkg-deb(1)
para manipular archivos .deb.
[1]
Los detalles internos de este formato de paquete binario de Debian se describen
en la página del manual deb(5)
. Puesto que este formato está
sujeto a cambios (entre los lanzamientos principales de Debian), siempre
utilice dpkg-deb(1)
para manipular archivos .deb.
Por lo menos en la distribución Sarge, todos los archivos del repositorio de
Debian son manipulables por los comandos estándar Unix ar
y
tar
, incluso cuando los comandos de dpkg
no se
encuentran disponibles.
Los nombres de los paquetes Debian siguen la siguiente convención:
loquesea_ver-rev_arq.deb
donde generalmente loquesea es el nombre del paquete, ver es el nombre de versión, rev es el número de revisión y arq es la arquitectura. Por supuesto, los archivos se pueden fácilmente cambiar de nombre. Uno puede averiguar qué paquete esta realmente contenido en un nombre de archivo loquesea ejecutando el siguiente comando:
dpkg --info loquesea
El número de revisión es asignado por el desarrollador Debian o por quien creó el paquete. Un cambio en el número de revisión generalmente indica que a cambiado algún aspecto del empaquetado.
Los archivos que pueden ser modificados por el administrador local se
encuentran en /etc/
. La política de Debian establece que durante
la actualización de paquetes se deben conservar todos los cambios de archivos
de configuración local.
Si con el propio paquete viene una versión predeterminada de un archivo configurable localmente éste se denomina "conffile". El sistema de administración de paquetes no actualiza los archivos de configuración que han sido modificados por el administrador. Por otra parte, si el archivo de configuración no ha sido modificado por el administrador, entonces será actualizado junto con el resto del paquete.
Para dstar los archivos de configuración de un paquete ejecute el siguiente comando:
dpkg --status paquete
y consulte la línea "Conffiles:".
Para más información sobre los archivos de configuración puede consultar la sección "Archivos de configuración" del Manual de Normativa de Debian (véase Referencias, Sección 15.1).
Los scripts de mantenimiento de Debian son scripts ejecutables que se ejecutan
automáticamente antes o después de la instalación de un paquete. Todos
estos archivos, junto con otro llamado control
, son parte de la
sección "control" de un archivo Debian.
Los archivos individuales son:
Este script se ejecuta antes que su paquete sea desempaquetado de su archivo Debian (.deb). Muchos scripts "preinst" detienen los servicios de los paquetes que están siendo actualizados hasta que la actualización o instalación de los mismos haya finalizado (luego de la ejecución exitosa del script "postinst").
Generalmente este script completa la configuración requerida por un paquete una vez desempaquetado de su archivo Debian (.deb). A menudo, los scripts 'postinst' le piden al usuario ciertos datos y/o le advierte que si acepta los valores predeterminados deberá volver a reconfigurar el paquete cuando la situación lo requiera. Muchos scripts "postinst" a continuación ejecutan los comandos necesarios para reiniciar el servicio una vez que el paquete nuevo correspondiente haya sido instalado o actualizado.
Generalmente, este script detiene los demonios asociados a un paquete. Es ejecutado antes de la eliminación de los archivos relacionados con el mismo.
Generalmente, este script modifica los enlaces u otros archivos asociados a un paquete y/o elimina los archivos creados por él (véase, también Paquetes virtuales, Sección 2.2.7.)
Actualmente, todos los archivos de control se pueden encontrar en el directorio
/var/lib/dpkg/info
. Los archivos asociados al paquete
loquesea comienzan con la palabra "loquesea" y llevan
las extensiones "preinst", "postinst", etc., según
corresponda. El archivo loquesea.list
de este directorio lista
todos los archivos que fueron instalados con el paquete loquesea
(obsérvese, que la ubicación de estos archivos es interno a dpkg
y puede estar sujeto a cambios)
Los encargados de la distribución, asignan a cada paquete Debian una prioridad para ayudar al sistema de administración de paquetes. Las prioridades son:
Los paquetes requeridos son necesarios para el correcto funcionamiento del sistema.
Esto incluye todas las herramientas necesarias para reparar inconvenientes en
el sistema. Nunca debería eliminar estos paquetes ya que podría inutilizar
su sistema e incluso podría ser incapaz de poder usar dpkg
para
recuperarlo. Los sistemas con únicamente con paquetes requeridos
probablemente no sean utilizables, pero tienen la funcionalidad suficiente como
para permitir al administrador del sistema arrancar e instalar más programas.
Los paquetes Importantes son los que habitualmente se encuentran en cualquier sistema tipo Unix.
Son otros paquetes sin los que el sistema no funcionará correctamente o no será totalmente utilizable. No incluye a Emacs, a X11, a Tex o cualquier otra aplicación grande. Estos paquetes sólo constituyen la infraestructura básica.
Los paquetes Estándar son aquellos que están en todo sistema Linux e incluyen un sistema en modo texto razonablemente pequeño pero no por eso demasiado limitado.
Esto es lo que se intalará por defecto si el usuario no selecciona otra cosa más. No incluye aplicaciones demasiado grandes, pero incluye Emacs (que es más una parte de la infraestructura que una aplicación) y un subconjunto razonable de TeX y LaTeX (si resulta ser posible sin X).
Los paquetes Opcionales incluye a todos los paquetes que probablemente desearía instalar incluso si no está familiarizados con ellos y no tiene requerimientos específicos.
Esto incluye a X11, a la distribución completa de TeX y a un montón de aplicaciones.
Los paquetes Extra son aquellos que entran en conflicto con otros de mayor importancia, y que carecen de utilidad para los usuarios que no están familiarizados con ellos, o que necesitan de requerimientos específicos como para incluirlos como "Opcionales".
En la descripción del paquete nótese las diferencias entre "Prioridad:
requerida", "Sección: base" y "Esencial: sí".
"Sección: base" significa que el paquete se instalará antes que
cualquier otro en un sistema nuevo. La mayoría de los paquetes de la
"Sección: base" posee una "Prioridad requerida" o por lo
menos una "Prioridad: importante" y muchos de ellos están marcados
con la etiqueta "Esencial: sí". "Esencial: sí" significa
que para que el sistema de administración de paquetes tal como
dpkg
pueda eliminarlo del mismo necesita de una opción extra para
forzar su desinstalación. Por ejemplo, libc6
, mawk
y makedev
tienen una "Prioridad: requerida" y una
"Sección: base" pero no llevan la etiqueta "Esencial:
sí".
Un paquete virtual es un nombre genérico que se le asigna a cualquier paquete
de un grupo de paquetes que básicamente proporcionan la misma funcionalidad.
Por ejemplo, tanto tin
como trn
son lectores de
noticias y, por lo tanto, deberán satisfacer cualquier dependencia exigida por
un programa que requiera de un lector de noticias a fin de que éste resulte
útil. Se dice que ambos proporcionan el "paquete virtual" llamado
news-reader
.
De manera similar, muchos paquetes tales como exim
,
exim4
, sendmail
y postfix
proporcionan
la funcionalidad de un agente de transporte de correo. Por lo tanto, se dice
que proporcionan el mismo paquete virtual mail transport agent
.
Si se instala alguno de los dos, cualquier programa que dependa de la
instalación de un agente de transporte de correo se ejecutará sin problemas
debido a la existencia de este paquete virtual.
Debian posee un mecanismo de modo que, si se instala en un sistema más de un
paquete que proporciona el mismo paquete virtual, el administrador puede
configurar uno de los dos como paquete preferido. El comando utilizado se
llama update-alternatives
y se describe mas adelante en Comandos alternativos, Sección 6.5.3.
El sistema de paquetes Debian maneja declaraciones de dependencia que se utilizan para expresar que un paquete necesita de la instalación de otro para funcionar.
El Paquete A Depende del Paquete B si B debe instalarse sí o sí para poder ejecutar A. En algunos casos A Depende no sólo de B, sino de una versión específica de B. En este caso, la dependencia de versión constituye un límite inferior, es decir, A dependerá de cualquier versión de B más reciente que la versión especificada.
El Paquete A Recomienda al Paquete B si el encargado del mismo considera que la mayoría de los usuarios no querrán a A sin tener también la funcionalidad proporcionada por B.
El Paquete A Sugiere al Paquete B si B contiene archivos que están relacionados y mejoran la funcionalidad de A. La misma relación se expresa diciendo que el paquete B Mejora el paquete A.
El Paquete A Está en conflicto con el Paquete B cuando A no funciona si se instala B en el sistema. A menudo los "Conflictos" están relacionados con "Reemplazos".
El Paquete A Reemplaza el Paquete B cuando los archivos instalados por B se eliminan o se sobreescriben por los archivos de A.
El Paquete A Proporciona el Paquete B cuando todos los archivos y funcionalidad de B están incorporados en A.
Información más detallada sobre el uso de cada uno de estos términos se puede encontrar en el Manual para la creación de paquetes y el Manual de Normativa.
Obsérvese que dselect
tiene un mayor control sobre los paquetes
considerados como Recomendados y Sugeridos
que apt-get
, el cual simplemente obtiene todos los paquetes
considerados como Dependientes y deja todos los paquetes
considerados como Recomendados y Sugeridos.
En sus versiones modernas ambos programas usan APT como interfaz.
dpkg
configura siempre primero el paquete del cual otro Depende.
Sin embargo, dpkg
generalmente desempaquete los archivos de los
paquetes de modo arbitrario independientemente de las dependencias
(desempaquetar consiste en extraer los archivos de un paquete y ubicarlos en el
lugar correcto) No obstante, si un paquete Pre-Depende de otro
éste último se desempaquetará y configurará primero. [2] El uso de esta dependencia se mantiene al mínimo.
El estado de un paquete puede ser "unknown" (desconocido),
"install" (para instalar), "remove" (para eliminar),
"purge" (para purgar), o "hold" (en espera). Estas
banderas indican lo que el usuario quiere hacer con un paquete (como viene
indicado por las acciones del usuario en la sección "Select" de
dselect
o por la invocación directa de dpkg
por
parte del mismo).
Significados:
unknown (desconocido) - el usuario nunca indicó si deseaba el paquete.
install (para instalar) - el usuario desea instalar o actualizar el paquete.
remove (para eliminar) - el usuario desea eliminar el paquete pero no sus archivos de configuración ya existentes.
purge (para purgar) - el usuario desea eliminar completamente el paquete incluyendo sus archivos de configuración.
hold (para conservar) - el usuario no desea que el paquete sea procesado, es decir, quiere conservar la versión actual con su estado independientemente de cual sea.
Existen dos mecanismos para evitar la actualización de un paquete, mediante
dpkg
o, comenzando con Woody, mediante APT.
Con dpkg
, exporte primero la lista de las selecciones de paquetes:
dpkg --get-selections > selections.txt
A continuación, edite el archivo resultante
selecciones.txt
, cambiando la línea que contiene el
paquete que se desea conservar, por ejemplo libc6
, de:
libc6 install
a:
libc6 hold
Guárdelo y actualice la base de datos de dpkg
haciendo:
dpkg --set-selections selectiones.txt
O, si conoce el nombre del paquete que desea conservar, simplemente escriba:
echo libc6 hold | dpkg --set-selections
Este proceso conserva los paquetes durante el proceso de instalación de cada paquete.
El mismo efecto se puede obtener mediante dselect
. Simplemente
entre a la pantalla [S]elect, busque el paquete cuyo estado desea conservar y
presione la tecla `=' (o la tecla `H'). Los cambios se producirán
inmediatamente al salir de la pantalla.
En la distribución Woody el sistema a APT pose un mecanismo nuevo alternativo
para conservar paquetes durante el proceso de obtención de archivos .deb
usando Pin-Priority. Véase la página del manual
apt_preferences(5)
junto con http://www.debian.org/doc/manuals/apt-howto/
o el paquete apt-howto
.
Los paquetes fuente se distribuyen en un directorio denominado
source
y se pueden descargar manualmente o usar
apt-get source loquesea
para conseguirlos (consulte la página del manual apt-get(8)
para
saber cómo configurar APT para que haga esto).
Para un paquete loquesea, necesitará los archivos
loquesea_*.dsc
, loquesea_*.tar.gz
y
loquesea_*.diff.gz
para compilar los fuentes (observación: para
un paquete Debian nativo el paquete .diff.gz no existe).
Una vez que los tiene a todos, y si tiene instalado el paquete
dpkg-dev
, el comando
dpkg-source -x loquesea_version-revision.dsc
extraerá el paquete en un directorio llamado loquesea-version.
Ejecutar el siguiente comando para construir el paquete binario:
$ cd loquesea-version $ su -c "apt-get update ; apt-get install fakeroot" $ dpkg-buildpackage -rfakeroot -us -uc
Finalmente haga,
# su -c "dpkg -i ../loquesea_version-revision_arch.deb"
para instalar el paquete recientemente construido. Véase Portar un paquete a la rama stable, Sección 6.4.10.
Para una información más detallada, consulte la Guía para Nuevos Encargados
de Paquetes de Debian disponible en el paquete maint-guide
o en
http://www.debian.org/doc/manuals/maint-guide/
.
Uno de los objetivos de Debian es proporcionar una manera de actualizar sin problemas, segura y fiable. El sistema de paquetes alerta al administrador sobre cambios importantes o, a veces, le solicita que tome decisiones.
También debería leer las Release Notes, el documento que describe los
detalles sobre actualizaciones específicas, que acompañan a todos los CDs de
Debian y disponibles en la WWW en http://www.debian.org/releases/stable/releasenotes
o http://www.debian.org/releases/testing/releasenotes
.
En Administración de paquetes Debian, Capítulo 6 se proporciona una guía práctica sobre actualizaciones. Esta sección describe solamente los detalles básicos comenzando con las herramientas de empaquetar.
dpkg
Este es el programa principal para manipular los archivos de un paquete ;
consulte dpkg(8)
para una descripción completa.
dpkg
viene acompañado con diversos programas suplementarios
primitivos.
dpkg-deb
: Manipula los archivos .deb.
dpkg-deb(1)
dpkg-ftp
: un antiguo comando para la obtención de paquetes.
dpkg-ftp(1)
dpkg-mountable
: un antiguo comando para la obtención de paquetes.
dpkg-mountable(1)
dpkg-split
: divide un paquete grande en archivos más pequeños.
dpkg-split(1)
dpkg-ftp
y dpkg-mountable
han quedado obsoletos luego
de la introducción del sistema APT.
APT (Advanced Packaging Tool) es una interfaz avanzada del sistema de paquetes
de Debian que consiste en diversos programas cuyos nombres generalmente
comienzan con "apt-". apt-get
, apt-cache
y
apt-cdrom
son herramientas de la línea de comandos para el manejo
de paquetes. Estos también funcionan como frontales de usuario para otras
herramientas tales como dselect
y aptitude
.
Para más información, instale el paquete apt
y lea
apt-get(8)
, apt-cache(8)
, apt-cdrom(8)
,
apt.conf(5)
, sources.list(5)
,
apt_preferences(5)
(Woody) y
/usr/share/doc/apt/guide.html/index.html
.
Una fuente alternativa de información es el APT HOWTO
.
Éste se puede instalar mediante apt-howto
en
/usr/share/doc/apt-howto/en/apt-howto-en.html/index.html
.
apt-get upgrade y apt-get dist-upgrade tienden a
obtener todos los paquetes situados bajo "Dependen:" y descarta todos
los paquetes listados en "Recomendados:" y "Sugeridos:".
Para evitar esto, use dselect
.
dselect
Este programa es una interfaz de usuario con menús para el sistema de
administración de paquetes Debian. Particularmente resulta útil para las
primeras instalaciones y actualizaciones a gran escala. Véase dselect
, Sección 6.2.3.
Para más información, instale el paquete install-doc
y lea
/usr/share/doc/install-doc/dselect-beginner.en.html
o Documentación
dselect para principiantes
.
El kernel (el sistema de archivos) en los sistemas Debian admite el reemplazo de archivos incluso cuando están siendo usados. Cuando los paquetes son actualizados cualquier servicio proporcionado por estos paquetes son reiniciados si han sido configurados para ejecutarse en el nivel de ejecución presente. El sistema Debian no exige usar el modo monousuario para actualizar un sistema en funcionamiento.
Si ha descargado manualmente los paquetes a su disco (lo cual no es en absoluto
necesario, véase arriba para la descripción de dpkg-ftp
o APT),
entonces después de haber instalados puede eliminarlos de su sistema.
Si utiliza APT, los archivos se guardan en el caché situado en el directorio
/var/cache/apt/archives
. Tras la instalación puede eliminarlos
(apt-get clean) o copiarlos al directorio
/var/cache/apt/archives
de otra máquina para economizar el tiempo
de descarga para instalaciones posteriores.
dpkg
mantiene un registro de los paquetes que han sido
desempaquetados, configurados, eliminados y/o purgados pero (hasta el momento)
no mantiene un registro de la actividad del terminal que tiene lugar cuando el
paquete está siendo manipulado.
La manera más sencilla de superar este inconveniente consiste en ejecutar las
sesiones de dpkg
, dselect
, apt-get
,
etc., con el programa script(1)
.
init
Al igual que todos los sistemas Unix, Debian arranca ejecutando el programa
init
. El archivo de configuración de init
(que es
el /etc/inittab
) indica que el primer script que se debe ejecutar
es el /etc/init.d/rcS
.
Lo que ocurre a continuación depende de si se encuentra instalado el paquete
sysv-rc
o el file-rc
. A continuación, supondremos
que se encuentra instalado el paquete sysv-rc
(file-rc
contiene su propio script /etc/init.d/rcS
y
utiliza un archivo en vez de enlaces simbólicos en los directorios rc para
controlar qué servicios se inician en los diferentes niveles de ejecución)
El archivo /etc/init.d/rcS
del paquete sysv-rc
ejecuta todos los scripts situados en /etc/rcS.d/
para realizar
inicializaciones tales como la comprobación y montaje de los sistemas de
archivos, la carga de módulos, la inicialización de los servicios de red, la
configuración del reloj, etc. Luego, y por compatibilidad, también ejecuta
todos los archivos (excepto aquellos con un `.' en su nombre) situados en
/etc/rc.boot/
. Este último directorio está reservado para el
administrador del sistema y su utilización ha caído en desuso. Véase Trucos para la inicialización del sistema, Sección
9.1 y el Sistema de
niveles de ejecución y scripts init.d
en el Manual de Normativa de
Debian para más información.
Debian no utiliza el directorio rc.local del tipo BSD.
Luego de completar el proceso de arranque, init
inicia todos los
servicios que han sido configurados para ejecutarse en el nivel de ejecución
predeterminado. Este último viene indicado por una entrada id en
el /etc/inittab
. Debian viene con id=2.
Debian utiliza los siguientes niveles de ejecución:
1 (modo monousuario),
2 al 5 (modos multiusuario) y
0 (apagar el sistema),
6 (reiniciar el sistema).
Tambien puede utilizarse los niveles de ejecución 7, 8 y 9 pero sus directorios rc no se van llenando a medida que son instalados los paquetes.
Cambie los niveles de ejecución utilizando el comando telinit
.
Al entrar a un nivel de ejecución se ejecutan todos los scripts ubicadosi en
/etc/rcnivel_de_ejecución.d/
. La primera letra del
nombre del script determina la manera en que se ejecuta el
script: Los scripts cuyos nombres comienzan con K se ejecutan con
el argumento stop. Los scripts que comienzan con S
se ejecutan con el argumento start. Los scripts se ejecutan de
acuerdo al orden alfabético de sus nombres; de esta manera los scripts
"stop" se ejecutan antes que los scripts "start" y los dos
díguitos a continuación de K o S determinan el
orden en que se ejecutan los scripts.
Los scripts situados en /etc/rcnivel_de_ejecución
son
de hecho sólo enlaces simbólicos que apuntan a los scripts situados en
/etc/init.d/
Cada script también acepta como argumento
"restart" y "force-reload"; estos métodos se pueden
utilizar para reiniciar los servicios una vez que haya sido arrancado el
sistema o forzarlos para que vuelvan a cargar sus archivos de configuración.
Por ejemplo:
# /etc/init.d/exim4 force-reload
La personalización de los niveles de ejecución es una tarea avanzada del administrador del sistema. Los siguientes consejos son válidos para la mayoría de los servicios.
Para habilitar el servicio servicio en el nivel de ejecución
R cree el enlace simbólico
/etc/rcR.d/Sxyservicio
con
objetivo ../init.d/servicio
. El número de secuencia
xy debe ser igual al asignado al servicio cuando fue instalado el
paquete.
Para deshabilitar un servicio, cambie de nombre el enlace simbólico de modo que su nombre comience con K y no con S y su número de secuencia sea 100 menos xy.
Para estos fines, es conveniente usar un editor de niveles de ejecución tales
como sysv-rc-conf
o ksysv
.
En vez de cambiarle el nombre, es posible eliminar el enlace simbólico
S de un servicio de un directorio de niveles de ejecución
determinado. Esto no deshabilita el servicio sino que lo deja en un estado
"potencial" al menos en lo que respecta al sistema init
sysv-rc
: al cambiar de nivel de ejecución el servicio no se lo
activará ni se lo detendrá sino que se lo dejará como estaba,
independientemente si esta ejecutándose o no. Obsérvese, no obstante, que un
servicio que está en este estado potencial se activará si se actualiza su
paquete independientemente si estaba o no ejecutándose antes de la
actualización. Este es un atajo conocido del sistema Debian actual. Nótese
además que debería conservar los enlaces simbólicos K de un
servicio en los niveles de ejecución 0 y 6. Si borra todos los enlaces
simbolicos de un servicio, entonces al actualizar el paquete del mismo
restaurará todos los enlaces simbólicos a su estado predeterminado de
fábrica.
No es aconsejable realizar modificaciones a los enlaces
simbólicos situados en /etc/rcS.d/
.
Debian ofrece diversas alternativas para satisfacer los deseos del administrador del sistema sin dañar al sistema.
dpkg-divert
, véase El comando
dpkg-divert
, Sección 6.5.1.
equivs
, véase El paquete equivs
,
Sección 6.5.2.
update-alternative
, véase Comandos
alternativos, Sección 6.5.3.
make-kpkg
puede alojar distintos cargadores de arranque. Véase
make-kpkg(1)
.
Cualquier archivo situado en /usr/local/
pertenece al
administrador del sistema y Debian no los va a tocar. La mayoría los archivos
situados en /etc/
son conffiles (archivos de
configuración) y Debian no los sobreescribirá durante una actualización
salvo que el administrador del sistema los solicite en forma explícita.
El sistema Debian se encuentra internacionalizado y provee soporte para la visualización y entrada de caracteres en diversos idiomas, tanto en la consola como en X. Diversos, documentos, páginas del manual y mensajes del sistema han sido traducidos en un número creciente de idiomas. Durante la instalación, Debian le pide al usuario elegir el idioma de instalación ( y a veces una variante local del idioma)
Si el sistema que ha instalado no soporta todas las características que necesita de su idioma, si necesita cambiar de idioma o instalar un teclado diferente que soporte su idioma, consulte Localización y soporte de idiomas, Sección 9.7.
Véase El kernel de Linux en Debian, Capítulo 7.
Uno tiene que comprender la política de Debian en relación a las cabeceras.
Las bibliotecacs C de Debian se construyen con las versiones más reciente de las cabeceras del kernel de la rama estable.
Por ejemplo, la versión Debian-1.2 usaba la versión 5.4.13 de las cabeceras.
Esta práctica contrasta con los paquetes fuentes del kernel de Linux
distribuidos por todos los sitios de archivos FTP de Linux que usan incluso
versiones más recientes de las cabeceras. Los archivos de cabecera del kernel
distribuidos con los fuentes del mismo están ubicados en
/usr/include/linux/include/
.
Si necesita compilar un programa con las cabeceras del kernel que son más
nuevas que las proporcionadas por libc6-dev
debe incluir al
compilar -I/usr/src/linux/include/ en la línea de comando. Esto
me ocurrió una vez con el empaquetado del demonio automounter
(amd
). Cuando los nuevos núcleos cambiaron algunos detalles
internos relacionados con el NFS, amd
necesitaba saber de ellos.
Esto me obligó a incluir las cabeceras de los últimos núcleos.
A los usuarios que desean (o deben) crear un núcleo personalizado se les
recomienda descargar el paquete kernel-package
. Este paquete
contiene el script para crear el paquete del kernel y proporciona la
posibilidad de crear un paquete Debian kernel-image ejecutando el comando
# make-kpkg kernel_image
en el directorio principal de los fuentes del kernel. La ayuda disponible se obtiene ejecutando el comando
# make-kpkg --help
o mediante la página del manual make-kpkg(1)
. y El kernel de Linux en Debian, Capítulo 7.
Los usuarios deben descargar por cuenta propia el código fuente más reciente
del núcleo (o del núcleo de su preferencia) de su sitio Linux favorito a
menos que se encuentre disponible un paquete kernel-source-version
(donde version hace referencia a la versión del kernel). El script
de arranque initrd
de Debian requiere de un parche especial para
el kernel llamado initrd
; véase http://bugs.debian.org/149236
.
En el archivo /usr/doc/kernel-package/README
se dan instrucciones
detalladas para el uso del paquete kernel-package
.
El paquete modconf
de Debian proporciona un script de shell
(/usr/sbin/modconf
) que se puede usar para personalizar la
configuración de los módulos. Este script presenta una interfaz basada en
menús en donde el usuario puede elegir los distintos controladores de
dispositivos que se pueden cargar en el sistema. Las respuestas se utilizan
para personalizar el archivo /etc/modules.conf
(que contiene los
alias y demás argumentos que se deben usar para los diferentes módulos)
gracias a los archivos /etc/modutils/
y /etc/modules
(que contiene los módulos que se deben cargar durante el arranque).
Al igual que los archivos (nuevos) Configure.help
que ahora están
disponibles para admitir la construcción de núcleos personalizados, el
paquete modconf
package viene con una serie de archivos de ayuda
(en /usr/share/modconf/
) que proporcionan información detallada
sobre los argumentos apropiados para cada uno de los módulos. Véase El kernel modular 2.4, Sección 7.2 para algunos
ejemplos.
El script kernel-image-NNN.prerm
comprueba si el kernel
que está actualmente ejecutando es el mismo que el que está intentando
desinstalar. Por lo tanto, puede eliminar de manera segura los núcleos que no
desea seguir usando con el siguiente comando:
# dpkg --purge --force-remove-essential kernel-image-NNN
(obviamente, hay que reemplazar NNN por el número de versión y revisión de su kernel)
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
La documentación oficial para instalar Debian se encuentra en http://www.debian.org/releases/stable/
y http://www.debian.org/releases/stable/installmanual
.
Las versiones de desarrollo se encuentran en http://www.debian.org/releases/testing/
y http://www.debian.org/releases/testing/installmanual
(en preparación, a veces puede no existir).
Aunque este capítulo fue escrito durante la época del instalador Potato, la
mayoría de su contenido ha sido actualizado para el instalador Woody. Ambos
instaladores son muy similares. Puesto que Sarge utilizará un instalador
totalmente diferente, por favor considere lo siguiente como punto referencia
para el instalador Sarge. Asimismo algunos paquetes claves han cambiado su
nombre y prioridades. Por ejemplo, el MTA predeterminado de Sarge es
exim4
en vez de exim
y ha sido incluido
coreutils
para reemplazar diversos paquetes. Puede que necesite
realizar algunas modificaciones.
No se olvide visitar http://www.debian.org/CD/netinst/
si está buscado la imagen del instalador Debian en CD.
Utilizar la versión de prueba o inestable de Debian
conlleva el riesgo creciente de encontrarse con fallos graves. Esto puede
evitarse, creando un esquema multi-arranque con versiones más estables de
Debian, o utilizando un truco interesante proporcionado por chroot
en la versión más estable como se explica en chroot
, Sección 8.6.35. Esta última
opción nos permitirá ejecutar diferentes versiones de Debian simultáneamente
en diferentes consolas.
Linux es compatible con la mayoría del hardware de PC y se puede instalar en prácticamente cualquier sistema. Para mí, fue tan fácil como instalar Windows 95/98/Me. La lista de compatibilidad de hardware parece que no deja de crecer.
Si posee una PC portátil, consulte Linux on Laptops
para consejos
sobre instalación según marca y modelo.
Mi recomendación para el hardware de una PC de escritorio es: "simplemente sea conservador":
SCSI en vez de IDE para trabajar, disco duro IDE/ATAPI para uso personal.
CD-ROM IDE/ATAPI CD-ROM (o CD-RW).
PCI en vez de ISA, en especial para las tarjetas de red (NIC).
Use un NIC económico. Tulip para PCI, NE2000 para ISA es suficiente.
Evite PCMCIA (portátiles) en su primera instalación de Linux.
No utilice teclados o ratones USB ... a menos que le gusten los desafíos.
Si posee una máquina lenta, extraer el disco duro y conectarlo a otra máquina más rápida para la instalación es muy buena idea.
Durante la instalación, se le pedirá que identifique el hardware o chipset del PC. A menudo, esta información no resulta fácil de encontrar. Veamos un método
Abra el gabinete de su PC y mire su interior.
Anote los números de los chips más grandes de la tarjeta de video, la tarjeta de red, los chips situados cerca de los puertos seriales y puertos IDE.
Anote los nombres impresos en la parte posterior de las tarjetas PCI e ISA.
En un sistema Linux, los siguientes comandos deberían brindarle cierta idea sobre su hardware actual y su configuración.
$ pager /proc/pci $ pager /proc/interrupts $ pager /proc/ioports $ pager /proc/bus/usb/devices
Estos comandos se pueden ejecutar durante el proceso de instalación desde la pantalla de la consola presionando Alt-F2.
Finalizada la primer etapa de instalación e instalando los paquetes opcionales
pciutils
, usbutils
y lshw
, puede obtener
información más detallada del sistema:
$ lspci -v |pager $ lsusb -v |pager # lshw |pager
Usos típico de las interrupciones:
IRQ0: salida del temporizador (reloj del sistema)(8254)
IRQ1: controlador del teclado
IRQ2: cascada para IRQ8–IRQ15 en una PC-AT
IRQ3: puerto serie secundario (io-port=0x2F8) (/dev/ttyS1
)
IRQ4: puerto serie primario (io-port=0x3F8) (/dev/ttyS0
)
IRQ5: libre [tarjeta de sonido (SB16: io-port=0x220, DMA-low=1, DMA-high=5)]
IRQ6: controlador de la disquetera (io-port=0x3F0) (/dev/fd0
,
/dev/fd1
)
IRQ7: puerto paralelo (io-port=0x378) (/dev/lp0
)
IRQ8: rtc
IRQ9: interrupción por software (int 0x0A), se redirige a IRQ2
IRQ10: libre [interfaz de la tarjeta de red (NE2000: io-port=0x300)]
IRQ11: libre [(SB16-SCSI: io-port=0x340, SB16-IDE: io-port=0x1E8,0x3EE)]
IRQ12: ratón PS/2
IRQ13: libre (era el coprocesador matématico 80287)
IRQ14: controlador IDE primario (/dev/hda
, /dev/hdb
)
IRQ15: controlador IDE secundario (/dev/hdc
,
/dev/hdd
)
Para antiguas tarjeta ISA que no son del tipo PnP puede que desee configurar IRQ5, IRQ10 y IRQ11 como no-PnP desde la BIOS.
Para los dispositivos USB, las clases de dispositivos se encuentran en
/proc/bus/usb/devices
como Cls=nn:
Cls=00 : Sin usar
Cls=01 : Audio (parlante, etc.)
Cls=02 : Comunicación (MODEM, NIC, ...)
Cls=03 : HID (Human Interface Device: teclado, ratón, palanca de juegos)
Cls=07 : Impresora
Cls=08 : Almacenamiento (disquetera, lectora CD/DVD, disco duro, Flash, ...)
Cls=09 : Hub (hub USB)
Cls=255 : Específico del vendedor
Si la clase del dispositivo es diferente a 255, Linux lo soporta.
La información de hardware se puede también obtener mediante mediante otros SOs:
Instale otra distribución Linux comercial. La detección de hardware suele
ser mejor que en Debian por el momento (esta situación debería cambiar una
vez debian-installer
forme parte de Sarge).
Instale Windows. La configuración del hardware se puede obtener pulsando con el botón derecho del ratón sobre "Mi PC" yendo a Propiedades / Administración de Dispositivos. Anote toda la información disponible, tales como IRQ, direcciones de los puertos de E/S y DMA. Algunas tarjetas ISA antiguas puede necesitar ser configuradas en DOS y usadas en consecuencia.
"Lilo está limitado a los 1024 cilindros." ¡ INCORRECTO !
El nuevo lilo
que se usa a partir de Debian Potato tiene soporte
lba32. Si la BIOS de su placa madre es lo suficientemente reciente para
admitir lba32, lilo
debería ser capaz de cargarse más allá de
la antigua limitación de los 1024 cilindros.
Sólo asegúrese de añadir una línea que diga "lba32" en algún
lugar cerca del comienzo de su archivo lilo.conf
si conserva una
versión antigua de él. Véase
file:///usr/share/doc/lilo/Manual.txt.gz
El nuevo cargador grub
del projecto Hurd GNU se puede instalar en
un sistema Woody Debian:
# apt-get update # apt-get install grub-doc # mc file:///usr/share/doc/grub-doc/html/ ... lea los contenidos # apt-get install grub # pager file:///usr/share/doc/grub/README.Debian.gz ... léalo :)
Para modificar el menú de GRUB, edite /boot/grub/menu.lst
.
Véase Configurando los parámetros de arranque (GRUB),
Sección 8.1.6 para ver cómo configurar los parámetros de arranque
durante el proceso de arranque ya que es ligeramente diferente al de la
configuración de lilo
.
Para Potato, preferí el conjunto de discos IDEPCI para una instalación normal
en una PC de escritorio. Para Woody, prefiero el conjunto de discos bf2.4.
Ambos utilizan una versión boot-floppies
para crear los discos de
arranque.
Si posee una tarjeta de red PCMCIA, necesita usar el conjunto de discos del arranque estándar (el conjunto más grande de disketes pero con todos los módulos de controladores disponibles) y configurar el NIC en el diálogo PCMCIA; no intente configurarla en el diálogo de configuración de la red estándar.
Para sistemas especiales, puede que necesite crear un disco de arranque
personalizado. Esto puede realizarse reemplazando la imagen del kernel
denominado "linux" en el disco de rescate de Debian por otra imagen
del kernel comprimida, compilada en otro lugar de la máquina. Los detalles se
encuentran documentados en el archivo readme.txt
del disco de
rescate. El disco de rescate utiliza el sistema de archivos MS-DOS, de modo
que puede usar cualquier sistema para leerlo y editarlo. Esto debería
facilitar las cosas a las personas con una tarjeta de red particular, etc.
Para Sarge, se espera que debian-installer
y/o pgi
se
usen para crear los disketes de arranque.
Siga las instrucciones oficiales que se encuentran en http://www.debian.org/releases/stable/installmanual
o http://www.debian.org/releases/testing/installmanual
(en preparación, a veces puede no existir).
Si está instalando un sistema usando los discos de arranque
de la
distribución de prueba, puede que necesite abrir un terminal en
la consola durante el proceso de instalación presionando Alt-F2 y
editar manualmente /etc/apt/sources.list
para reemplazar las
entradas "stable" por "testing" para ajustar las fuentes de
APT.
Tengo la costumbre de instalar lilo
en lugares como
/dev/hda3
, teniendo el mbr
en /dev/hda
.
Esto minimiza el riesgo de la sobreescritura de la información de arranque.
Veamos lo que elegí durante el proceso de instalación.
MD5 passwords "yes"
shadow passwords "yes"
Instalación "advanced" (dselect **) y en la selección
Excluir emacs (si está seleccionado), nvi, tex, telnet, talk(d);
Incluir mc, vim y nano-tiny o elvis-tiny.
Véase dselect
, Sección 6.2.3. Aún si
es un fanático de Emacs, evítelo por el momento y confórmese con nano
durante la instalación. Asimismo evite instalar paquetes grandes como TeX en
esta etapa (Potato lo hacía). Véase Editores de
rescate, Sección 11.2 para conocer la razón de instalar nano-tiny o
elvis-tiny.
A todas las preguntas de configuración = "y" (reemplazar el actual) durante cada diálogo de instalación de cada paquete.
exim
: seleccioné 2 por máquina ya que envío correo mediante el
servidor SMTP de mi ISP.
Para más información sobre dselect, véase dselect
, Sección 6.2.3.
Ejemplo de configuración de una LAN (subred Ct: 192.168.1.0/24):
Internet | +--- ISP externo brinda servicio POP (que se accede mediante fetchmail) | Punto de acceso al ISP que brinda servicio DHCP y retransmición SMTP | : Cable módem (Conexión telefónica) | : Puerto externo de la puerta de enlace de la LAN: eth0 (IP dado por el DHCP del ISP) utilice una PC portátil antigua (IBM Thinkpad, 486 DX2 50 MHz, 20 MB RAM) ejecute el kernel 2.4 de Linux con sistema de archivos ext3. ejecute el paquete "ipmasq" (con protección, NAT y firewall) ejecute el paquete "dhcp-client" configurado para eth0 (no tiene en cuenta la configuración DNS) ejecute el paquete "dhcp" configurado para eth1 ejecute "exim" como smarthost (modo 2) ejecute "fetchmail" con un intervalo largo (fallback) ejecute "bind" como servidor de nombres en caché para Internet desde la LAN como servidor de nombres oficial para el dominio de la red local ejecute "ssh" en el pueto 22 y 8080 (conexiones de cualquier lugar) ejecutar "squid" como servidor caché para el archivo Debian (para APT) Puerto interno de la puerta de enlace de la LAN: eth1 (IP = 192.168.1.1, fija) | +--Conector para LAN (100 base T)---+ | | Algunos clientes de la LAN con IP fija Algunos clientes DHCP de la LAN (IP = 192.168.1.2-127, fija) (IP = 192.168.1.128-200, dinámica)
Véase Configuración de la red, Capítulo 10 para detalles de cómo configurar una puerta de enlace de una LAN. Véase Configurando una puerta de enlace, Sección 10.12 para detalles de cómo configurar el servidor encaminador de una LAN.
A fin de lograr una organización coherente entre todas las máquinas, en mi sistema las primeras cuentas son siempre las mismas.
Siempre creo una primer cuenta de usario con un nombre como "admin"
(uid=1000). Reenvío todos los mensajes del superusuario a ella. Esta cuenta
pertenece al grupo adm (véase "Por qué
el su
GNU no soporta el grupo wheel", Sección
9.2.2), al que puede darse una buena cantidad de privilegios de
superusuario mediante el comando su
usando PAM o con
sudo
. Véase Añadir una cuenta de usuario,
Sección 4.1.3 para más detalles.
Prefiero usar diferentes particiones para distintos árboles de directorios para limitar el daño luego de un cuelgue del sistema. Por ejemplo,
/ == (/ + /boot + /bin + /sbin) == 50MB+ /tmp == 100MB+ /var == 100MB+ /home == 100MB+ /usr == 700MB+ con X /usr/local == 100MB
El tamaño del directorio /usr
depende sustancialmente de las
aplicaciones X Window y de la documentación. /usr/
puede ser de
unos 300MB si se ejecuta un sólo terminal en la consola, mientras que
2GB–3GB no es un tamaño inusual si se tienen instaladas diversas
aplicaciones Gnome. Cuando /usr/
crece demasiado, mover el
directorio /usr/share/
a otra partición es la cura más efectiva.
Con los núcleos 2.4 de Linux preempaquetados, /
puede requerir de
más de 200MB.
Por ejemplo, el estado actual de mi puerta de enlace Internet es el siguiente (salida del comando df -h):
Filesystem Size Used Avail Use% Montado en /dev/hda3 300M 106M 179M 38% / /dev/hda7 100M 12M 82M 13% /home /dev/hda8 596M 53M 513M 10% /var /dev/hda6 100M 834k 94M 1% /var/lib/cvs /dev/hda9 596M 222M 343M 40% /usr /dev/hda10 596M 130M 436M 23% /var/cache/apt/archives /dev/hda11 1.5G 204M 1.2G 14% /var/spool/squid
(El gran espacio destinado a /var/spool/squid
es para el caché de
un proxy para la descarga de paquetes)
A continuación se muestra la salida de fdisk -l que proporciona una idea de la estructura de la partición:
# fdisk -l /dev/hda # comentario /dev/hda1 1 41 309928+ 6 FAT16 # DOS /dev/hda2 42 84 325080 83 Linux # (sin usar) /dev/hda3 * 85 126 317520 83 Linux # Principal /dev/hda4 127 629 3802680 5 Extended /dev/hda5 127 143 128488+ 82 Linux swap /dev/hda6 144 157 105808+ 83 Linux /dev/hda7 158 171 105808+ 83 Linux /dev/hda8 172 253 619888+ 83 Linux /dev/hda9 254 335 619888+ 83 Linux /dev/hda10 336 417 619888+ 83 Linux /dev/hda11 418 629 1602688+ 83 Linux
Existen algunas pocas particiones sin uso. Éstas están para instalar una segunda distribución de Linux o como espacio para los árboles de directorios en expansión.
El montaje correcto de los sistemas de archivos anteriores se lleva a cabo
mediante /etc/fstab
:
# /etc/fstab: static file system information. # # sistema de punto de tipo opciones dump pass # archivos montaje /dev/hda3 / ext2 defaults,errors=remount-ro 0 1 /dev/hda5 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 # # mantener particiones separadas /dev/hda7 /home ext2 rw 0 2 /dev/hda8 /var ext2 rw 0 2 /dev/hda6 /var/lib/cvs ext2 rw 0 2 /dev/hda9 /usr ext2 rw 0 2 /dev/hda10 /var/cache/apt/archives ext2 rw 0 2 # una partición bien grande para el caché del proxy /dev/hda11 /var/spool/squid ext2 rw 0 2 # respaldo DOS arrancable /dev/hda1 /mnt/dos vfat rw,noauto 0 0 # respaldo Linux arrancable (sin hacer) /dev/hda2 /mnt/linux ext2 rw,noauto 0 0 # # montajes nfs mickey:/ /mnt/mickey nfs ro,noauto,intr 0 0 goofy:/ /mnt/goofy nfs ro,noauto,intr 0 0 # minnie:/ /mnt/minnie smbfs ro,soft,intr,credentials={filename} 0 2
Para NFS, utilizo noauto,intr combinado con la opción predeterminada hard. De esta manera, es posible detener un proceso bloqueado por una desconexión usando Ctrl-C.
Para una máquina Windows conectada con Samba (smbfs), rw,auto,soft,intr puede ser una buena idea. Véase Configuración de Samba, Sección 3.5.
Para una disquetera, usar noauto,rw,sync,user,exec para preevenir la corrupción de datos tras eyectar el diskette en forma accidental antes de desmontarlo. Esto ralentiza el proceso de escritura.
Puntos claves para el montaje automático:
Cargue el módulo vfat para permitir que
/etc/auto.misc
contenga -fstype=auto:
# modprobe vfat # antes de intentar acceder al diskete ... o para automatizar esta configuración, # echo "vfat" >> /etc/modules ... y reinicie el sistema.
Escriba en el archivo /etc/auto.misc
lo siguiente:
floppy -fstype=auto,sync,nodev,nosuid,gid=100,umask=000 :/dev/fd0 ... donde gid=100 es "users".
Cree los enlaces cdrom
y floppy
en
/home/user
que apunten a
/var/autofs/misc/cdrom
y /var/autofs/misc/floppy
respectivamente.
Añada user al grupo "users".
El servidor Linux NFS externo (goofy) se encuentra detrás de un firewall
(puerta de enlace). Tengo una política de seguridad bastante laxa en mi LAN
ya que soy el único usuario. Para activar el acceso NFS, del lado del
servidor es necesario añadir lo siguiente al /etc/exports
:
# /etc/exports: la lista de control de acceso para los sistemas de # archivos que se puede exportar a los clientes NFS. Véase(5). / (rw,no_root_squash)
Esto se necesita para activar el servidor NFS además de instalar y activar los paquetes cliente y servidor NFS.
Por sencillez, generalmente creo una única partición de 2GB para una
instalación experimental o secundaria de Linux. Opcialmente comparto las
particiones de intercambio y /tmp
para estas instalaciones. El
esquema de particiones múltiples es demasiado complicado para estos usos. Si
se necesita un sistema sencillo de consola, 500MB puede ser más que
suficiente.
A continuación se da a grandes rasgos indicaciones para la DRAM.
4 MB: Mínimo suficiente para hacer funcionar el kernel de Linux. 16 MB: Mínimo para un uso razonable de un sistema en modo consola. 32 MB: Mínimo para un sistema X sencillo. 64 MB: Mínimo para un sistema X con GNOME/KDE. 128 MB: Comfortable para un sistema X system con GNOME/KDE. 256 MB (o más): ¿Por qué no disponer de ella? La memoria DRAM es económica.
Usando la opción de arranque mem=4m (o en lilo append="mem=4m") le mostrará como se comportaría el sistema con 4Mb de memoria instalada. Para un sistema con más de 64Mb de memoria con una BIOS antigua es necesario un parámetro de arranque para lilo.
Uso las siguientes directrices para el espacio de intercambio:
Cada partición de intercambio es < 128 MB (para un núcleo 2.0 antiguo), < 2 GB (para núcleos recientes)
Total = o bien 1 a 2 veces la RAM instalada o 128 MB para 2 GB
Asígnelas en diferentes unidades y móntelas a todas con las opciones
sw,pri=1 en el /etc/fstab
. Esto asegura que el
kernel haga RAID por bandas en las particiones de intercambio y posibilita el
máximo rendimiento de las mismas.
En lo posible utilice una porción central del disco duro.
Incluso si nunca lo necesita, es conveniente contar con cierto espacio de intercambio (128MB) ya que el sistema se ralentizará antes que se cuelge debido a un programa que le falte memoria.
Modifiqué los scripts de inicio del intérprete de comandos en todo el sistema de acuerdo con mis preferencias:
/etc/bash.bashrc Reemplazar con una personalizada /etc/profile Conservar la que acompaña a lai distibución ( \w -> \W) /etc/skel/.bashrc Reemplazar con una copia privada /etc/skel/.profile Reemplazar con una copia privada /etc/skel/.bash_profile Reemplazar con una copia privada ~/.bashrc Reemplazar con una copia privada para todas las cuentas ~/.profile Reemplazar con una copia privada para todas las cuentas ~/.bash_profile Reemplazar con una copia privada para todas las cuentas
See details
in my example scripts
. Me gusta un sistema transparente, por lo
tanto fijé umask
en 002 o 022.
PATH
viene determinado por los siguientes archivos de
configuración en este orden:
/etc/login.defs - antes que el intérprete de comandos fije PATH /etc/profile (puede llamar a /etc/bash.bashrc) ~/.bash_profile (puede llamar a ~/.bashrc)
En el caso de un ratón con conector PS/2 en una placa madre ATX, el flujo de señales sería:
mouse -> /dev/psaux -> gpm -> /dev/gpmdata = /dev/mouse -> X
En este caso, se crea un enlace simbólico /dev/mouse
que apunta a
/dev/gpmdata
para dejar conforme a algunas utilidades de
configuración y permitir su fácil reconfiguración. (si después de todo no
decide usar el demonio gpm
, simplemente apunte el enlace
simbólico /dev/mouse
a /dev/psaux
luego de haver
eliminado el demonio gpm
.)
Este flujo de señales permite al teclado y al ratón ser desconectados y
reinicializados lanzando gpm
tras la reconexión. ¡X
permanecerá activa!
El protocolo del flujo de señales entre la salida de gpm
y la
entrada de X se puede implementar de alguna de estas dos maneras, como
"ms3" (protocolo de los ratones seriales de Microsoft de 3 botones) o
como "raw" ( protocolo del ratón conectado) y esta elección impone
la elección del protocolo usado en la configuración de X.
Veamos a continuación algunos ejemplos de configuración para un ratón PS/2 Logitech de tres botones (ratón tipo UNIX tradicional).
Si es uno de los desafortunados cuya tarjeta gráfica no está soportada por la nueva X4 y necesita usar la antigua X3 (algunas tarjetas de 64 bits ATI), instale los paquetes X3 y configure /etc/X11/XF86Config en vez de /etc/X11/XF86Config-4 en los siguientes ejemplos.
/etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=ms3 | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IntelliMouse" | EndSection
Si se utiliza este enfoque, el ajuste del tipo de ratón se realiza simplemente
editando el archivo gpm.conf
y la configuración X se deja sin
modificar. Véase mis scripts
de ejemplo
.
/etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "MouseManPlusPS/2" | EndSection
Si se utiliza este enfoque, el ajuste del tipo de ratón se realiza editando el
archivo gpm.conf
y ajustando la configuración de X.
Se supone que el tipo de dispositivo autops2 de gpm
autodetecterá la mayoría de los ratones PS/2 del mercado. Lamentablemente no
siempre funciona y no se encuentra disponible en versiones anteriores a Woody.
En estos casos intentar usar ps2 o imps2 en el
archivo gpm.conf
en vez de autops2. Para ver los
tipos de ratones que reconoce gpm
escriba: gpm -t
help. Véase gpm(8)
.
Si se utiliza un ratón PS/2 de dos botones, configure el protocolo X para
activar Emulate3Buttons. La diferencia de protocolo entre un
ratón de 2 botones y otro de 3 botones, es detectado y ajustado
automáticamente por gpm
luego de pulsar una sola vez el botón
central.
Para el protocolo X con Usando el protocolo raw, Sección
3.3.1.2 o sin gpm
, use:
IntelliMouse: puerto serial (repetidor gpm
con
"ms3")
PS/2: puerto PS/2 (siempre pruebe este primero)
IMPS/2: cualquier puerto PS/2 (2, 3, or scroll mice, better)
MouseManPlusPS/2: puerto PS/2 Logitech
...
Véase más en Mouse
Support in XFree86
.
En el caso de los ratones de rueda estándar de Microsoft, se ha informado que funcionan mejor con:
/etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection
Para algunas PC portátiles Toshiba, el activar gpm
antes de
PCMCIA en el script de inicio System-V puede ayudar a prevenir cuelgues del
sistema. Extraño pero cierto.
Make sure you have all required kernel functions activated through kernel compile time configuration or modules:
Under "Input core support":
"Input core support" (CONFIG_INPUT, input.o
),
"Mouse support" (CONFIG_INPUT_MOUSEDEV, mousedev.o
),
Under "USB support":
"Support for USB" (CONFIG_USB, usbcore.o
),
"Preliminary USB device filesystem" (CONFIG_USB_DEVICEFS),
"UHCI" or "OHCI" (CONFIG_USB_UHCI || CONFIG_USB_UHCI_ALT ||
CONFIG_USB_OHCI, usb-uhci.o
|| uhci.o
||
usb-ohci.o
),
"USB Human Interface Device (full HID) support" (CONFIG_USB_HID,
hid.o
), and
"HID input layer support" (CONFIG_USB_HIDINPUT)
Here, lower case names are module names.
Si no está usando devfs, cree un nodo de dispositivo con
/dev/input/mice
major 13 y minor 63 de la siguiente manera:
# cd /dev # mkdir input # mknod input/mice c 13 63
Para un ratón USB típico de tres botones, la configuración podría ser:
/etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/input/mice | Section "InputDevice" responsiveness= | Identifier "Generic Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "SendCoreEvents" "true" append="" | Option "Device" "/dev/input/mice" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection
Véase Linux USB Project
para más información
Aunque el comportamiento predeterminado del touch pad en una computadora
portátil emula un ratón PS/2 de dos botones, el paquete tpconfig
permite el control absoluto del dispositivo. Por ejemplo, incluyendo
OPTIONS="--tapmode=0" en
/etc/default/tpconfig
desactivará el comportamiento molesto de
"pulsar mediante un golpecito". Configure el
/etc/gpm.conf
de la siguiente manera para usar tanto el touch pad
como el control USB externo en la consola:
device=/dev/psaux responsiveness= repeat_type=ms3 type=autops2 append="-M -m /dev/input/mice -t autops2" sample_rate=
Configurar NFS en /etc/exports
.
# apt-get install nfs-kernel-server # echo "/ *.domainname-for-lan-hosts(rw,no_root_squash,nohide)" \ >> /etc/exports
Véase mi
script de ejemplo para más detalles
.
Referencias:
paquete samba-doc
Configurando Samba en modo "share" resulta más fácil ya que crea unidades compartidas de tipo WfW. Pero es conveniente configurarlo en modo "user".
Samba se puede configurar mediante debconf
o vi
:
# dpkg-reconfigure --priority=low samba # en Woody # vi /etc/samba/smb.conf
Véase mi
script de ejemplo para más detalles
.
Añadir un nuevo usuario al archivo smbpasswd puede hacerse mediante
smbpasswd
:
$su -c "smbpasswd -a nombre_usuario"
Para una compatibilidad óptima, asegúrese de usar contraseñas encriptadas.
Elija el nivel del SO según el siguiente sistema de equivalencias (cuanto más grande es el número, mayor es la prioridad del servidor):
0: Samba con poca potencia (nunca se convertirá en un navegador principal) 1: Wfw 3.1, Win95, Win98, Win/me? 16: Win NT WS 3.51 17: Win NT WS 4.0 32: Win NT SVR 3.51 33: Win NT SVR 4.0 255: Samba con mucha potencia
Asegúrese que los usuarios sean miembros del grupo propietario del directorio que brinda acceso compartido y que el bit de ejecución del directorio esté activado.
El método tradicional es mediante lpr
/lpd
. Existe
un nuevo sistema CUPS™ (Common UNIX Printing System). PDQ constituye
otro enfoque. Consulte el Linux Printing
HOWTO
para más información.
lpr
/lpd
Para los spoolers lpr
/lpd
(lpr
,
lprng
y gnulpr
), configure el archivo
/etc/printcap
de la siguiente manera si están conectados a una
impresora PostScript o de texto:
lp|alias:\ :sd=/var/spool/lpd/lp:\ :mx#0:\ :sh:\ :lp=/dev/lp0:
Significado de las líneas anteriores:
Cabecera: lp — nombre de la cola, alias = alias
mx#0 — tamaño máximo del archivo ilimitado
sh — supresión de la impresión de la primera página de cabecera
lp=/dev/lp0 — dispositivo de impresión local o port@host para impresión remota
Esto es una buena configuración si está conectado a una impresora PostScript. Asimismo, cuando imprima desde una máquina Windows mediante Samba, resulta ser una buena configuración para cualquier impresora compatible Windows (comunicación bidireccional no soportada). Debe seleccionar la correspondiente configuración de la impresora bajo Windows.
Si no posee una impresora PostScript, necesitará configurar un sistema de
filtros usando gs
. Existe diversas herramientas de configuración
automáticas para configurar el archivo /etc/printcap
. Cualquiera
de estas combinaciones resulta ser una opción:
gnulpr
, (lpr-ppd
) y printtool
— El
que utilizo.
lpr
y apsfilter
lpr
y magicfilter
lprng
y lprngtool
lprng
y apsfilter
lprng
y magicfilter
Para ejecutar herramientas de configuración gráficas, tales como
printtool
, véase Adquirir privilegios de
superusuario en X, Sección 9.4.11 para adquirir derechos de superusuario.
Las impresoras creadas con printtool
usan gs
y se
comportan como impresoras PostScript. Por lo tando al acceder a ellas,
utilizan los controladores de impresora PostScript. En lo referente a Windows,
la "Apple LaserWriter" es el estándar.
El Common UNIX Printing System (o CUPS™) se instala con
aptitude
"Tareas" -> "Servidores" ->
"Servidor de impresión". (Sarge) Para un mejor resultado, configure
aptitude
haciendo "F10" -> "Opciones" ->
"Manejo de dependencias" -> "[X] Instalar los paquetes
recomendados automáticamente".
Los entornos de escritorio KDE y Gnome permiten una configuración secilla de
las impresoras. De forma alternativa, si tiene instalado swat
puede configurar el sistema usando cualquier navegador:
$ mi_navegador http://localhost:631
Por ejemplo, para añadir una impresora en algún puerto usando la lista de impresoras accesibles:
Pulse "Printers" (Impresoras) en la página principal y, a continuación "Add Printer" (Añadir impresora),
escriba "root" como usuario e ingrese su contraseña,
proceda a añadir la impresora siguiendo los indicaciones,
vuelva a la página "Printers" y pulse "Configure Printer" (Configurar impresora) y
proceda a configurar el tamaño del papel, la resolución y otros parámetros.
Véase más información en http://localhost:631/documentation.html
y http://www.cups.org/cups-help.html
.
Una vez llegado hasta este punto, posee un sistema Debian pequeño pero funcional. Es tiempo de instalar paquetes más grandes.
Ejecute tasksel
. Veáse Instalación de
tareas con tasksel
, Sección 6.2.1.
Si los necesita, puede elegir los siguientes paquetes:
Usuario final — sistema X window
Desarrollo — C y C++
Desarrollo — Python
Desarrollo — Tcl/Tk
Otros — entorno TeX/LaTeX
Para el resto — prefiero usar tasksel
como guía mirando en
<Task Info> e instalarlos selectivamente mediante dselect
.
Ejecute dselect
.
Aquí, lo primero que puede querer hacer es elegir su editor favorito y todos
los programas que necesita. Puede instalar diversas variantes de Emacs al
mismo tiempo. Véase dselect
, Sección
6.2.3 y Editores populares, Sección 11.1.
También puede reemplazar algunos paquetes predeterminados por otros con más opciones.
...
...
Generalmente edito /etc/inittab
para apagar con facilidad mi
máquina.
... # Qué hacer al presionar CTRL-ALT-DEL ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now ...
Los módulos para los controladores de dispositivos se configuran durante la
instalación inicial. modconf
proporciona una interfaz con menús
para la configuración posterior de los módulos. Este programa resulta
bastante útil cuando se olvida incluir algunos módulos durante la
instalación inicial o se instala un nuevo kernel después de realizar la
misma.
Todos los módulos a cargar se encuentran en el archivo
/etc/modules
. También utilizo lsmod
y
depmod
para controlarlos manualmente.
Asimismo, asegúrese añadir algunas líneas en el /etc/modules
para administrar el enmascaramiento ip (ftp, etc.) para núcleos 2.4. Véase
El kernel modular 2.4, Sección 7.2 y, en
especial, Funciones de Red, Sección 7.2.3.
Para una unidad CD-RW IDE y un núcleo 2.4, edite los siguientes archivos:
/etc/lilo.conf (agregue append="hdc=ide-scsi ignore=hdc", y ejecute lilo para la activación) /dev/cdrom (enlace simbólico # cd /dev; ln -sf scd0 cdrom) /etc/modules (añada "ide-scsi" y "sg". Después de esto "sr" si se necesita.)
Véase Grabadora de CDs, Sección 9.3 para más detalles.
Edite el /etc/lilo.conf
de la siguiente manera para grandes
cantidades de memoria (para núcleos 2.2) y apagado automático (para apm):
append="mem=128M apm=on apm=power-off noapic"
Ejecutar lilo
para reconocer la nueva configuración.
apm=power-off es necesario para un núcleo SMP y
noapic es necesario para minimizar los efectos de mi hardware
defectuoso. Lo mismo se puede hacer directamente escribiendo las opciones en
el indicador de arranque. Véase Otros trucos con el
indicador de arranque, Sección 8.1.5.
Si apm fue compilado como módulo, como ocurre con los núcleos predeterminados
2.4 de Debian, ejecute # insmod apm power_off=1 después del
arranque o configure /etc/modules
haciendo:
# echo "apm power_off=1" >>/etc/modules
En forma alternativa, el compilar el soporte ACPI permite alcanzar el mismo objetivo con los núcleos nuevos y para ser más compatible con SMP (esto requiere de una placa madre nueva). El núcleo 2.4 en placas madre deberían detectar grandes cantidades de memoria correctamente.
CONFIG_PM=y CONFIG_ACPI=y ... CONFIG_ACPI_BUSMGR=m CONFIG_ACPI_SYS=m
y añada las siguientes líneas en /etc/modules
respetando el
orden:
ospm_busmgr ospm_system
O recompile el núcleo con todas las opciones anteriores en "y". En cualquier caso, con ACPI no se necesita ninguno de los parámetros del indicador de arranque.
Por defecto, los núcleos recientes de Linux activan ECN, que puede ocasionar problemas de acceso en algunos sitios web situados detrás de un enrutador mal configurado. Para verificar el estado del ECN:
# cat /proc/sys/net/ipv4/tcp_ecn ... o # sysctl net.ipv4.tcp_ecn
Para desactivarlo, haga:
# echo "0" > /proc/sys/net/ipv4/tcp_ecn ... o # sysctl -w net.ipv4.tcp_ecn=0
Para desactivar TCP ECN en cada arranque, edite /etc/sysctl.conf
y
añada:
net.ipv4.tcp_ecn = 0
Instale el paquete pppconfig
para configurar un acceso telefónico
mediante PPP.
# apt-get install pppconfig # pppconfig ... siga las indicaciones para configurar PPP # adduser usuario dip ... permite al usuario acceder a Internet mediante PPP
El acceso PPP puede ser iniciado por el usuario (usuario):
$ pon nombre_ISP # inicia el acceso PPP a su ISP ... disfrute Internet $ poff nombre_ISP # detiene el acceso PPP, el nombre_ISP es opcional
Véase Configurando una interfaz PPP, Sección 10.2.4 para más detalles.
/etc
Puede que quiera añadir un archivo /etc/cron.deny
que falta en la
instalación estándar de Debian (puede copiar /etc/at.deny
).
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Esta sección proporciona una orientación al mundo Debian para aquellos que son realmente principiantes. Si ya hace cierto tiempo que utiliza un sistema tipo Unix, es probable que conozca todo lo que se explica aquí. En este caso, considérelo un repaso.
Tras la instalación de Debian en su PC, necesitará aprender algunos conceptos para que le resulte útil. Le proporcionaremos un rápido entrenamiento.
Luego de reiniciar el sistema, y dependiendo de los paquetes seleccionados, accederá a una pantalla de acceso gráfico o bien a otra basada en caracteres. Por simplicidad, si se le presenta una pantalla de acceso gráfico presione Ctrl-Alt-F1 [3] para acceder a la pantalla de acceso basada en caracteres.
Supongamos que el nombre de su máquina es loquesea, entonces el símbolo del sistema será similar a:
loquesea login:
Escriba root , pulse la tecla Intro e ingrese la contraseña que eligió durante el proceso de instalación. Siguiendo la tradición Unix, un sistema Debian diferencia mayúsculas de minúsculas. A continuación, el sistema se iniciará con un mensaje de bienvenida y le mostrará el símbolo del sistema del superusuario a la espera de datos. [4]
loquesea login: root Password: Last login: Sun Oct 26 19:04:09 2003 on tty3 Linux foo 2.4.22-1-686 #6 Sat Oct 4 14:09:08 EST 2003 i686 GNU/Linux Most of the programs included with the Debian GNU/Linux system are freely redistributable; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@loquesea:root#
Ahora está listo para realizar la administración del sistema desde la cuenta de root llamado también superusuario o usuario privilegiado. Desde esta cuenta, puede hacer todo:
leer, escribir y eliminar cualquier archivo del sistema independientemente de sus permisos
asignar un propietario y los permisos a cualquier archivo del sistema
asignar la contraseña a cualquier usuario no privilegiado del sistema
acceder a todas las cuentas sin necesitar sus contraseñas
Resulta una pésima idea compartir la cuenta de root utilizando la misma
contraseña. La manera correcta de compartir los privilegios del administrador
consiste en usar un programa como sudo(8)
.
Obsérvese que en Unix se considera un buen hábito entrar al sistema
inicialmente como usuario no privilegiado incluso si planea realizar tareas
administrativas. Utilice los comandos sudo, super o
su -c para obtener privilegios restringidos de superusuario cuando
sea necesario. Véase sudo
– un entorno
de trabajo más seguro, Sección 9.2.4. [5]
Considero que aprender un sistema informático es como aprender un idioma
extranjero. Aunque los libros resultan útiles, se debe practicarlo con
herramientas de ayuda. En este contexto, creo que es una buena idea instalar
algunos paquetes adicionales tales como mc
, vim
,
lynx
, doc-linux-text
y debian-policy
.
[6]
# apt-get update ... # apt-get install mc vim lynx doc-linux-text debian-policy ...
Si ya tiene estos paquetes instalados, no se instalará nada.
Durante la instalación, generalmente se crea una cuenta de usuario sin privilegios que recibe los mensajes de correo que son enviados a la cuenta del superusuario. [7] Puesto que tampoco querrá usar esta cuenta especial para subsiguientes las tareas de entrenamiento, deberá crear otra cuenta de usuario nueva.
Supongamos que desea que este nombre de usuario nuevo sea penguin, entonces si escribe:
root@loquesea:root# adduser penguin ... responda todas las preguntas
creará dicha cuenta. [8] Antes de proseguir, aprendamos primero algunas cosas más.
En un sistema Debian predeterminado, existen seis seudo terminales disponibles, es decir, puede utilizar la consola de caracteres VGA del PC como seis terminales VT-100 intercambiables. Para pasar de una a otra, pulse simultáneamente la tecla Alt izquierda y una de las teclas F1–F6. Cada seudo terminal permite el acceso a cuentas independientes. El entorno multiusuario es una característica maravillosa en Unix y muy adictiva.
Si por equivocación pulsa Alt-F7 en un sistema que está ejecutando el sistema X Windows accederá al sistema de ventanas. Podrá recuperar el acceso a las consolas de caracteres presionando Ctrl-Alt-F1. Intente ir a una consola distinta y volver a la original para acostumbrarse a esta característica.
Al igual que cualquier otro sistema operativo moderno en donde la operación sobre archivos implica obtener datos de la memoria, un sistema Debian necesita apagarse correctamente antes de poder cortar sin problemas el suministro eléctrico y mantener la integridad de sus archivos. Utilice el siguiente comando desde el indicador de superusario para apagar el sistema :
# shutdown -h now
Esto sirve normalmente para un sistema multiusuario. Si se encuentra en el modo monousuario ejecute desde el indicador de root, lo siguiente:
# poweroff -i -f
Opcionalmente, puede pulsar Ctrl-Alt-Supr [9]
Espere hasta que el sistema muestre el mensaje "System halted" para apagar la máquina. Si la función APM o ACPI han sido debidamente activadas en la BIOS y en Linux, el sistema se apagará por sí solo. Véase Gran cantidad de memoria y apagado automático, Sección 3.7.4 para más detalles.
Ahora ya está listo para jugar con Debian sin riesgos siempre y cuando utilice la cuenta sin privilegios penguin. [10]
Entremos al sistema como penguin. Si se encuentra en el indicador del intérprete de comandos del superusrio pulse Ctrl-D [11] para finalizar la sesión del root y volver al indicador de acceso. Ingrese su nombre de usuario recientemente creado penguin y su correspondiente contraseña. [12] Se le mostrará el siguiente indicador de comandos.
penguin@loquesea:penguin$
De ahora en adelante y por simplicidad, en los ejemplos dados se utilizará un indicador de comandos simplificado:
# : indicador del intérprete de comandos del superusuario
$ : indicador del usuario no privilegiado
Primero, comenzaremos a aprender Debian de la manera fácil Midnight Commander (MC), Sección 4.2 y luego de la manera adecuada Entorno de trabajo tipo Unix, Sección 4.3.
Midnight Commander (MC) es la "navaja suiza" GNU para la consola de Linux y otros entornos de terminales. Ofrece al principiante un menú desplegable en la consola que es mucho más fácil de aprender que los comandos Unix estándar.
Use este comando para explorar su sistema Debian. Esta es la mejor manera de aprender. Explore la ubicación de algunas teclas usando las teclas de desplazamiento y la tecla Intro:
/etc
y sus subdirectorios.
/var/log
y sus subdirectorios.
/usr/share/doc
y sus subdirectorios.
/sbin
y /bin
Para que MC al salir se posicione en el directorio de trabajo, se necesita
modificar el archivo ~/.bashrc
(o el
/etc/bash.bashrc
, que es llamado desde .bashrc
), como
se explica en su página de manual mc(1)
bajo la opción
-P. [13]
$ mc
MC se encarga de todas las operaciones con archivos mediante menús requiriendo de un mínimo esfuerzo por parte del usuario. Puede jugar con MC simplemente pulsando las teclas de desplazamiento y las de función. [14]
Por defecto, se tienen dos paneles con el listado de archivos de un directorio.
Otro modo útil consiste en configurar la ventana derecha para que muestre toda
la información referente a los archivos: permisos, tamaño, etc. Los
siguientes son algunas teclas esenciales. Con el demonio gpm
ejecutándose es posible también usar el ratón. Asegúrese de presionar la
tecla Mayús para cortar y pegar en el MC.
F1: Menú de ayuda
F3: Visor de archivos interno
F4: Editor interno
F9: Activar menú desplegable
F10: Salir del Midnight Commander
Tab: Moverse entre las dos ventanas
Insert: Marcar archivo para operaciones con múltiples archivos
Supr: Borrar archivo (sea cuidadoso—configure MC para el modo de borrado seguro)
Teclas de desplazamiento: No necesita explicación alguna
Cualquier comando cd
cambiará el directorio mostrado en los
paneles.
Ctrl-Enter o Alt-Intro copiará el nombre de un archivo en la línea del
comandos. Utilice este atajo con los comandos cp
o
mv
.
Alt-Tab cumple el mismo rol que la tecla TAB en el shell.
Se puede especificar el directorio inicial para ambas ventanas ingresándolos como argumentos del MC; por ejemplo, mc /etc /root.
Esc + número == Fn (es decir, Esc + `1' = F1, etc.; Esc + `0' = F10)
Tecla Esc == tecla Alt(= Meta, M- ); es decir, escriba Esc + `c' para Alt-c
El editor interno sigue un esquema de cortar-y-pegar muy interesante. Con F3 se marca el comienzo de una selección, un segundo F3 marca el fin de la misma y resalta el área elegida. A continuación se puede mover el cursor. Si pulsa F6 el área seleccionada se ubicará donde está el cursor. Presionando F5 el área se copiará e insertará en dicha posición. F2 grabará el archivo. Con F10 se sale del editor. La mayoría de las teclas de desplazamiento funcionan en forma intuitiva.
Este editor se puede iniciar directamente junto con un archivo:
$ mc -e nombre_archivo_a_editar $ mcedit nombre_archivo_a_editar
Si bien no se trata de un editor multiventana se pueden usar múltiples consolas Linux para lograr el mismo efecto. Para copiar entre ventanas, utilice las teclas Alt-Fn para alternar entre las consolas virtuales y use "Archivo->Insertar archivo" o "Archivo->Copiar a archivo" para mover una porción de un archivo en otro archivo.
El editor interno se puede reemplazar por cualquier editor externo de su preferencia.
Asimismo, muchos programas usan las variables de entorno EDITOR o
VISUAL para decidir qué editor usar. Si no se siente cómodo con
vim, iguale estas variables a mcedit añadiendo las siguientes
líneas al ~/.bashrc
:
... export EDITOR=mcedit export VISUAL=mcedit ...
En lo posible, es recomendable dejarlas en vim. Acostumbrarse con los comandos de vi(m) es proceder de forma correcta pués es un editor de uso habitual en el mundo Linux/Unix. [15]
Es un visor muy sofisticado. Es una excelente herramienta para buscar palabras
en un documento. Siempre lo uso para los archivos del directorio
/usr/share/doc
. Esta es la manera más rápida de navegar por la
inmensa cantidad de información de Linux. Este visor se puede arrancar
directamente de la siguiente manera:
$ mc -v nombre_archivo
(Obsérvese que algunos paquetes no respetan esta convención y almacenan sus
documentos en /usr/doc
)
Pulse Enter sobre un archivo y el programa apropiado manejará el contenido del archivo. Esta es una característica muy útil del MC.
ejecutable: Ejecuta el programa man, archivo html: Deriva el contenido a un visor tar, gz, archivo rpm: Permite ver su contenido incluyendo subdirectorios
Para que esto funcione, los archivos no deben ser ejecutables. Cambie su estado usando el comando chmod mediante el menú 'Archivo' del MC si fuese necesario.
Se puede usar el MC para acceder a archivos que se encuentran en Internet via FTP. Vaya al menú presionando F9 luego pulse `p' para activar el sistema de archivos virtual FTP. Ingrese la URL de la siguiente manera nombre_usuario:contraseña@nombre_servidor.nombre_dominio y se verá al directorio remoto como si fuera local.
Pruebe con http.us.debian.org/debian como URL y navegue por el sistema de archivos de Debian. Consulte Los archivos Debian, Sección 2.1 para ver cómo se encuentran organizados.
Aunque MC le permite hacer prácticamente todo, es muy importante que aprenda a usar las herramientas de la línea de comandos invocadas desde el intérprete de comandos y familiarse con el entorno de trabajo del tipo Unix. [16]
En entornos Unix, existen algunas combinaciones de teclas que tienen un significado especial. [17]
Ctrl-U: Borra la línea donde se encuentra el cursor.
Ctrl-H: Borra el carácter situado antes del cursor.
Ctrl-D: Finaliza la entrada de datos (sale del shell si está usándolo)
Ctrl-C: Finaliza un programa en ejecución.
Ctrl-Z: Detiene momentáneamente un programa (lo ejecuta como tarea en segundo plano, véase comando &, Sección 4.3.10.1)
Ctrl-S: Detiene la salida por pantalla. [18]
Ctrl-Q: Activa nuevamente la salida por pantalla.
El intérprete de comandos predeterminado, bash
, permite la
edición del histórico de comandos y el completado con tabulador para un uso
interactivo.
flecha arriba: Comienza la búsqueda en el histórico de comandos.
Ctrl-R: Comienza la búsqueda incremental en el histórico de comandos.
TAB: Completa el nombre de archivo en la línea de comandos.
Ctrl-V TAB: TAB sin expansión en la línea de comandos.
Otras combinaciones de teclas importantes para recordar:
Ctrl-Alt-Supr: Reinicia/detiene el sistema, véase Instalación adicional de paquetes, Sección 3.7.1.
Pulsar botón izquierdo del ratón y arrastrar: Selecciona y copia al portapapeles.
Pulsar botón medio del ratón: Pega el contenido del portapapeles en donde se encuentra el cursor.
Tecla Meta (terminología de Emacs) generalmente se refiere a la tecla Alt izquierda. En algunos sistemas se puede configurar la tecla Windows como tecla Meta.
Para usar el ratón en la consola de caracteres Linux necesita que
gpm
se ejecute como demonio. [19]
Véase Configuración del ratón, Sección 3.3.
Aprendamos algunos comandos Unix básicos. [20] Pruebe los siguientes comandos desde la cuenta de usuario no privilegiado penguin :
pwd
Muestra el nombre del directorio actual/de trabajo.
whoami
Muestra el nombre del usuario actual.
file loquesea
Muestra el tipo de archivo de un archivo loquesea.
type -p nombre_comando
Muestra la ubicación del comando nombre_comando.
which nombre_comando hace lo mismo. [21]
type nombre_comando
Muestra información sobre el comando nombre_comando.
apropos palabra_clave
Busca comandos relacionados con la palabra_clave.
man -k palabra_clave hace lo mismo.
whatis nombre_comando
Explica en una línea el comando nombre_comando.
man -a nombre_comando
Explica el comando nombre_comando. (estilo Unix)
info nombre_comando
Muestra información detallada del comando nombre_comando. (GNU style)
ls
Lista el contenido de un directorio (archivos comunes y directorios) [22]
ls -a
Lista el contenido de un directorio (todos los archivos y directorios)
ls -A
Lista el contenido de un directorio (casi todos los archivos y directorios, es
decir, omite los "..
" y ".
")
ls -la
Lista todo el contenido de un directorio con información detallada. Véase El concepto de sistema de archivos en Debian, Sección 4.5.2.
ls -d
Lista todos los directorios del directorio actual.
lsof loquesea
Muestra información sobre el archivo loquesea abierto por procesos.
mkdir loquesea
Crea un directorio nuevo loquesea en el directorio actual.
rmdir loquesea
Borra el directorio loquesea del directorio actual.
cd loquesea
Cambia al directorio loquesea
del directorio actual o
del directorio que figura en la variable CDPATH. Véase el
comando cd
de builtins(7)
.
cd /
Cambia al directorio raíz.
cd
Cambia al directorio personal del usuario actual.
cd /loquesea
Cambia al directorio /loquesea
.
cd ..
Cambia al directorio padre.
cd ~loquesea
Cambia al directorio loquesea del directorio personal del usuario.
cd -
Cambia al directorio anterior.
</etc/motd pager
Muestra el contenido de /etc/motd
usando el paginador
predeterminado. Véase comando <
loquesea, Sección 4.3.10.9. [23]
touch loquesea
Crea un archivo vacío loquesea
.
cp loquesea loquefuera
Copia el archivo loquesea
en un nuevo archivo
loquefuera
.
rm loquesea
Borra el archivo loquesea
.
mv loquesea loquefuera
Cambia el nombre un archivo existente loquesea
en
loquefuera
.
mv loquesea loquefuera/cualquiera
Mueve el archivo loquesea
a una nueva ubicación con el
nombre loquefuera/cualquiera
. El directorio
loquefuera
debe existir.
chmod 600 loquesea
Hace que el archivo loquesea
no pueda ser leído ni
escrito por otros ni ejecutado por nadie.
chmod 644 loquesea
Hace que el archivo loquesea
pueda ser leído pero no
escrito por otros ni ejecutado por nadie.
chmod 755 loquesea
Hace que el archivo loquesea
pueda ser leído pero no
escrito por otros pero ejecutado por todos.
top
Muestra información de los procesos a pantalla completa. Pulse "q" para salir.
ps aux | pager
Muestra información de todos los procesos que se están ejecutando usando el estilo BSD. Véase comando1 | comando2, Sección 4.3.10.2.
ps -ef | pager
Muestra la información de todos los procesos que se están ejecutando usando el estilo Unix del system-V.
ps aux | grep -e "[e]xim4*"
Muestra todos los procesos que ejecutan exim
o exim4
.
Aprenda sobre expresiones regulares de la página del manual
grep(1)
escribiendo man grep. [24]
ps axf | pager
Muestra la información de todos los procesos ejecutándose usando una salida ASCII.
kill 1234
Mata un proceso identificado por el ID: 1234. Véase Mate el procesoi, Sección 8.5.1.
grep -e "patrón" *.html
Busca un "patrón" en todos los archivos que terminan en .html situados en el directorio actual y los muestra a todos.
gzip loquesea
Comprime loquesea
para crear
loquesea.gz
usando el algoritmo Lempel-Ziv (LZ77).
gunzip loquesea.gz
Descomprime loquesea.gz
para crear
loquesea
.
bzip2 loquesea
Comprime loquesea
para crear
loquesea.bz2
usando el algoritmo de compresión
Burrows-Wheeler y Huffman (mejor compresión que gzip
)
bunzip2 loquesea.bz2
Descomprime loquesea.bz2
para crear
loquesea
.
tar -xvvf loquesea.tar
Extrae los archivos de loquesea.tar
.
tar -xvvzf loquesea.tar.gz
Extrae los archivos loquesea.tar.gz
.
tar -xvvf --bzip2 loquesea.tar.bz2
Extrae los archivos de loquesea.tar.bz2
. [25]
tar -cvvf loquesea.tar loquesea/
Empaqueta el contenido de la carpeta loquesea/
en
loquesea.tar
.
tar -cvvzf loquesea.tar.gz loquefuera/
Empaqueta el contenido de la carpeta loquesea/
en el
archivo comprimido loquefuera.tar.gz
.
tar -cvvf --bzip2 loquesea.tar.bz2 loquefuera/
Empaqueta el contenido de la carpeta loquefuera/
en el
archivo comprimido loquesea.tar.bz2
. [26]
zcat README.gz | pager
Muestra el contenido del archivo comprimido README.gz
usando el
paginador predeterminado.
zcat README.gz > loquesea
Crea el archivo loquesea
con el contenido descomprimido de
README.gz
.
zcat README.gz >> loquesea
Agrega el contenido descomprimido de README.gz
al final del
archivo loquesea
(si no existe, primero lo crea)
find . -name patrón
busca los nombres de archivo coincidentes con el patrón. (lento)
locate -d . patrón
busca los nombre de archivo coincidentes con el patrón. (más rápido si se usa la base de datos generada frecuentemente)
Navegue por los distintos directorios e investige el sistema utilizando los comandos anteriores a modo de entrenamiento. Si tiene dudas sobre algún comando en particular, lea la página del manual. Por ejemplo, los siguientes comandos son un buen comienzo:
$ man man $ man bash $ man ls
Sería también oportuno empezar con vim
y pulsar la tecla F1.
Debería leer por lo menos las primeras 35 líneas. Luego realice el
entrenamiento en línea desplazando el cursor hasta |tutor| y
presionando Ctrl-]. Véase Editores, Capítulo 11 para
aprender más sobre editores.
Obsérvese que muchos comandos Unix incluyendo los de GNU y BSD muestran una breve información de ayuda si se los invoca de alguna de las siguientes maneras (o, en algunos casos, sin ningún argumento):
$ nombre_comando --help $ nombre_comando -h
Pruebe también los ejemplos de Trucos para Debian, Capítulo 8 como autoaprendizaje.
Ahora que sabe cómo usar un sistema Debian analicemos con más profundidad el mecanismo de ejecución de comandos. [27]
Un comando sencillo es una sucesión de
asignación de variables (opcional)
nombre del comando
argumentos (opcional)
redirección (opcional: > , >> , < , << , etc.)
operadores de control (opcional: && , || ; <nuevalinea> , ; , & , ( , ) )
Para comandos más complejos con comillas y susbstituciones, véase Tratamiento de la línea de comandos, Sección 13.2.6.
La ejecución de un comando típico es del tipo: [28]
$ date Sun Oct 26 08:17:20 CET 2003 $ LC_ALL=fr_FR date dim oct 26 08:17:39 CET 2003
En este caso, el programa date
se ejecuta como tarea en segundo
plano. La variable de entorno LC_ALL esta:
sin inicializar en el primer comando (predeterminada del sistema, como C)
inicializada en fr_FR en el segundo comando (locale francés)
La ejecución de la mayoría de los comandos generalmente no necesitan una definición previa de una variable de entorno. Para el ejemplo anterior, se puede ejecutar alternativamente:
$ LC_ALL=fr_FR $ date dim oct 26 08:17:39 CET 2003
Como puede comprobar en este caso, la salida del comando se ve afectada por la variable de entorno provocando la salida en francés. Si desea que la variable de entorno sea heredada por un subproceso (por ejemplo, cuando se llama a un script del intérprete de comandos) necesitará, en cambio, "exportarla" de la siguiente manera:
$ export LC_ALL
Cuando escribe un comando en el intérprete de comandos, éste lo busca en la lista de directorios que se encuentran en la variable de entorno PATH. El valor de la variable de entorno PATH se denomina ruta de búsqueda del intérprete de comandos.
En una instalación predeterminada de Debian la variable de entorno
PATH generalmente no incluye a /sbin/
en las cuentas
de los usuarios. Por lo tanto si desea ejecutar comandos tales como
ifconfig
de /sbin/
, deberá modificar la variable de
entorno PATH para incluirlo. Generalmente, la variable de entorno
PATH se inicializa en el archivo ~/.bash_profile
,
véase Configuración del bash, Sección 3.2.
Algunos comandos usan argumentos. Los argumentos que comienzan con - o -- se denominan opciones y controlan el comportamiento del comando.
$ date Mon Oct 27 23:02:09 CET 2003 $ date -R Mon, 27 Oct 2003 23:02:40 +0100
En este caso el argumento -R modifica el comportamiento del
comando date
para que la salida sea RFC-2822 compatible.
A menudo se desea que un comando funcione sobre un grupo de archivos sin tener que escribir a todos ellos. La expansión de los nombres de archivo que utiliza los comodines del intérprete de comandos facilita esta tarea.
*
Coincide con cualquier grupo de 0 o más caracteres.
No coincide con un nombre de archivo que comience con ".".
?
Coincide exactamente con un único carácter.
[...]
Coincide exactamente con un único carácter de los encerrados entre corchetes
[a-z]
Coincide exactamente con un único carácter comprendido entre a y z.
[^...]
Coincide exactamente con un único carácter diferente a los encerrados entre corchetes (excluyendo "^").
Por ejemplo, pruebe y analice los siguientes ejemplos:
$ mkdir cosa; cd cosa; touch 1.txt 2.txt 3.c 4.h .5.txt $ echo *.txt 1.txt 2.txt $ echo * 1.txt 2.txt 3.c 4.h $ echo *.[hc] 3.c 4.h $ echo .* . .. .5.txt $ echo .[^.]* .5.txt $ echo [^1-3]* 4.h $ cd ..; rm -rf cosa
Cada comando devuelve, como valor de retorno, el estado de su salida.
valor devuelto = 0 si el comando se ejecuta con éxito.
valor devuelto = no nulo si el comando se interrumpe con error.
El valor devuelto se puede conocer mediante la variable $? del intérprete de comandos justo después de la ejecución.
$ [ 1 = 1 ] ; echo $? 0 $ [ 1 = 2 ] ; echo $? 1
Obsérvese que el valor devuelto es utilizado por el intérprete de comandos en su contexto lógico, a éxito se trata como el valor lógico TRUE. No es muy intuitivo pues éxito corresponde al valor cero.
Véase Operadores condicionales del shell, Sección 13.2.5.
Intententemos recordar las siguientes secuencias de comandos del intérprete de comandos. Véase Parámetros del intérprete de comandos, Sección 13.2.3, Redireccionamiento del shell, Sección 13.2.4, Operadores condicionales del shell, Sección 13.2.5 y Tratamiento de la línea de comandos, Sección 13.2.6 tras su lectura.
Se ejecuta el comando
en segundo plano. Las
tareas en segundo plano permiten a los usuarios ejecutar múltiples programas
en un único intérprete de comandos.
La administración de los procesos en segundo plano implica el uso de los
comandos incorporados del shell jobs
, fg
,
bg
y kill
. Lea las secciones de la página del
manual de bash(1)
bajo los títulos "SIGNALS", "JOB
CONTROL" y "SHELL BUILTIN COMMANDS". [29]
La salida estándar del comando1
es dirigida a la entrada del
comando2
. Ambos comandos pueden estar ejecutándose en forma
concurrente. Esto se llama tubería.
El comando1
y comando2
se ejecutan en forma
secuencial.
Se ejecuta el comando1
. Si lo hace correctamente, también se
ejecuta el comando2
en forma secuencial.
Devuelve un valor verdadero si ambos comandos comando1
y comando2
se ejecutan correctamente.
Se ejecuta el comando1
. Si no se ejecuta correctamente, se
ejecuta el comando2
en forma secuencial.
Devuelve un valor verdadero si el comando1
o el
comando2
se ejecuta correctamente.
Redirige la salida estándar del comando
al archivo
loquesea (se sobreescribe su contenido)
Redirige la salida estándar del comando
al archivo
loquesea (se añade a su contenido)
Redirige tanto la salida como el error estándar del comando
al
archivo loquesea.
Redirije la salida estándar del comando
al archivo
loquesea. Pruebe:
$ </etc/motd pager ... (el mensaje de bienvenida) $ pager </etc/motd ... (el mensaje de bienvenida) $ pager /etc/motd ... (the greetings) $ cat /etc/motd | pager ... (el mensaje de bienvenida)
Aunque las 4 sintaxis muestran lo mismo, el último ejemplo ejecuta un comando
cat
extra y consume recursos sin sentido.
Puede asignar un alias a un comando que utiliza a menudo. Por ejemplo:
$ alias la='ls -la'
A partir de ahora, la
funciona como abreviatura de ls
-la que lista todos los archivos utilizando el formato detallado.
Puede averigüar la ruta exacta o identidad de un comando haciendo
type
comando. Por ejemplo:
$ type ls ls is hashed (/bin/ls) $ type la la is aliased to `ls -la' $ type echo echo is a shell builtin $ type archivo archivo is /usr/bin/file
En este caso ls
ha sido recientemente buscado mientras que
file
no, de esta manera ls
ha sido
"indexado", es decir, el shell tiene un registro interno para acceder
rápidamente a la ubicación del comando ls
.
Existen algunas herramientas de procesamiento estándar de uso habitual en sistemas tipo Unix.
No utilizan expresiones regulares:
head
muestra la primera parte de un archivo.
tail
muestra la última parte de un archivo.
sort
ordena las líneas de un archivo de texto.
uniq
elimina líneas duplicadas de un archivo ordenado.
tr
traduce o borra caracteres.
diff
compara archivos línea por línea.
Utilizan expresiones regulares sencillas (BRE):
grep
busca texto según un patrón.
ed
editor primitivo.
sed
editor de flujo.
vi
editor.
emacs
editor.
Utilizan expresiones regulares extendidas (ERE):
egrep
busca texto según un patrón.
awk
realiza procesamientos de texto sencillos. Véase Awk, Sección 13.3.
perl
realiza todo procesamiento de texto imaginable. Véase Perl, Sección 13.4.
Véase Sustitución de expresiones regulares, Sección 8.6.13, Pequeños scripts que incluyen tuberías, Sección 8.6.18 y La locura de los script cortos en Perl, Sección 8.6.20 para algunos scripts de ejemplo.
Las expresiones regulares se utilizan en diversas herramientas de procesamiento de textos. Son análogas a los comodines del intérprete de comandos (véase Comodines del intérprete de comandos, Sección 4.3.8), aunque más complicadas y poderosas.
Una expresión regular describe un patrón de coincidencia y está formada por caracteres y metacaracteres. Un metacarácter es simplemente un carácter con un significado especial. Existen dos estilos principales BRE y ERE, dependiendo de las herramientas de texto como se describe en Procesamiento de texto al estilo Unix, Sección 4.4.
Para las EREs, los metacaracteres incluyen "\ . [ ] ^ $ * + ? ( ) { } |". Significado de algunas expresiones regulares:
c
Coincide con "c".
\c
Coincide con el carácter literal "c".
.
Coincide con cualquier carácter incluyendo nueva línea.
^
Coincide con el comienzo de una cadena.
$
Coincide con el final de una cadena.
\<
Coincide con el comienzo de una palabra.
\>
Coincide con el final de una palabra.
[abc...]
Coincide con cualquiera de los caracteres "abc...".
[^abc...]
Niega la lista de caracteres. Coincide con cualquier carácter salvo "abc...".
r*
Coincide con ninguna o cualquier número de expresiones regulares representadas por "r".
r+
Coincide con una o más expresiones regulares representadas por "r".
r?
Coincide con ninguna o una expresión regular representada por "r".
r1|r2
Coincide con una de las expresiones regulares representadas por "r1" o "r2".
(r1|r2)
Coincide con una de las expresiones regulares representadas por "r1" o "r2" y la considera como una expresión regular entre paréntesis.
En las BREs los metacaracteres "+ ? ( ) { }
|" pierden su significado especial si se los antecede con barras
invertidas "\+ \? \( \) \{ \} \|". Por lo tanto, en
las BREs el agrupamiento (r1|r2) necesita escribirse
\(r1|r2\). Aunque básicamente BRE, emacs
trata a
"+ ?" como metacaracteres no es
necesario escaparlos. Véase Expresiones de reemplazo,
Sección 4.4.2 para ver cómo se usan las agrupaciones.
Por ejemplo, se puede utilizar grep
para realizar la búsqueda de
un texto usando la expresión regular:
$ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE Yoyodyne, Inc., hereby disclaims all copyright interest in the program
En una expresión de reemplazo, los siguientes caracteres tienen un significado especial:
&
Representa lo que coincidió con la expresión regular. (utilice
\& en emacs
)
\n
Representa lo que coincidió con la enésima expresión regular entre paréntesis.
En Perl, se utiliza $n en vez de \n y & no tiene un significado especial.
Por ejemplo:
$ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/' zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/' zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=&=/' zzz=&=
En este caso preste atención al estilo de las expresiones regulares entre paréntesis y cómo se utilizan las cadenas coincidentes en el proceso de reemplazo de texto en las diferentes herramientas.
Estas expresiones regulares también se pueden utilizar para reemplazo de texto y movimientos del cursor en los editores.
Lea todas las páginas del manual para aprender estos comandos.
En GNU/Linux y sistemas tipo Unix, los archivos se organizan
en directorios. [30] Todos los
archivos y directorios se distribuyen en un
gran árbol formando la jerarquía de archivos que cuelga de /
.
Los archivos y directorios pueden encontrarse en distintos dispositivos. El
comando mount(8)
permite anexar el sistema de archivos situado en
un determinado dispositivo al árbol de archivos principal. Por otra parte, el
comando umount(8)
permite desmontarlo.
Veamos:
Los nombres de archivo diferencian mayúsculas de minúsculas. Es decir,
MIARCHIVO
y MiArchivo
son archivos
diferentes.
El directorio raíz se refencia simplemente mediante /
. Véase Ingresar al sistema como superusuario, Sección 4.1.1.
Cada directorio tiene un nombre que puede incluir cualquier letra o símbolo
salvo la diagonal /
. [31] El directorio raíz constituye una excepción; su nombre es
/
("diagonal" o "directorio raíz") y no puede
modificarse su nombre.
Cada archivo o directorio se designa por su nombre de archivo
completo, nombre de archivo absoluto o
ruta, dando la secuencia de directorios que deben recorrerse
para localizarlo. Los tres términos son sinónimos. Todos los nombres de
archivo absolutos comienzan con el directorio /
y hay una
/
entre cada directorio o archivo en el nombre de archivo. La
primera /
es el nombre del directorio pero las restantes son
simplemente separadores para distinguir las partes del nombre de archivo.
Estos términos pueden ser confusos. Considere el siguiente ejemplo:
/usr/share/keytables/us.map.gz
Este es un nombre de archivo completo; algunas personas lo llaman
ruta. No obstante, la mayoría consideran como nombre de
archivo sólo a us.map.gz
. [32]
El directorio raíz tiene un cierto número de ramas, tales como
/etc/
y /usr/
. Estos subdirectorios a su vez se
ramifican en más subdirectorios tales como /etc/init.d/
y
/usr/local/
. Todo el conjunto se denomina árbol de
directorios.
Puede pensar en el nombre de archivo absoluto como una ruta desde la raíz del
árbol (/
) al final de alguna rama (un archivo). También
escuchará a la gente hablar del árbol de directorios como si fuese un árbol
genealógico familiar : de esta manera los subdirectorios
tienen padres y la ruta muestra la genealogía completa de un
archivo.
También existen rutas relativas que comienzan en un lugar diferente al del
directorio raíz. Recuerde que el directorio ../
hace referencia
al directorio padre.
No existe un directorio que se corresponda a un dispositivo físico, como por ejemplo el disco duro. Esto difiere de CP/M, DOS y Windows donde todas las rutas comienzan con un nombre de dispositivo tal como C:\. Véase El concepto de sistema de archivos en Debian, Sección 4.5.2.
Las mejores prácticas detalladas sobre la jerarquía de archivos se describen
en el Filesystem Hierarchy
Standard
. Tenga presente lo siguiente:
/
Una simple /
representa el directorio raíz.
/etc/
Este es el lugar de los archivos de configuración para todo el sistema.
/var/log/
Este el el lugar de los archivos de registro del sistema.
/home/
Este es el directorio que contiene todos los directorios principales de los usuarios no privilegiados.
Siguiendo la tradición Unix, el sistema Debian proporciona un sistema de archivos donde los datos físicos de los discos duros y otros sistemas de almacenamiento , y la interacción con los dispositivos de hardware tales como consolas locales y remotas se representan de una manera unificada.
En un sistema Debian cada archivo, directorio, tubería con nombre o
dispositivo físico tiene una estructura de datos denominada
ínodo que describe sus atributos asociados, tales como el
usuario propietario del mismo, el grupo al cual pertenece, hora y fecha del
último acceso, etc. Véase /usr/include/linux/fs.h
para una
definición exacta de struct inode en un sistema Debian GNU/Linux.
Esta representación unificada de las entidades físicas es muy poderosa puesto que nos permite usar el mismo comando para la misma clase de operación en dispositivos totalmente diferentes.
Todos los archivos pueden estar en un mismo disco o en veinte algunos de los cuales pueden estar conectados en diferentes máquinas de una red. No es posible deducirlo mirando simplemente al árbol de directorios y prácticamente todos los comandos funcionan de la misma manera independientemente del/de los dispositivo(s) físicos en los que realmente se encuentran los mismos.
Los permisos de acceso de los archivos y directorios se definen en forma separada para las siguientes tres categorías de usuario:
el usuario propietario del archivo (u),
los usuarios del grupo al que pertenece archivo (g) y
todos los otros usuarios (o).
Para un archivo, cada permiso permite:
leer (r): examinar el contenido del archivo,
escribir (w): modificar el archivo y
ejecutar (x): ejecutar el archivo como comando.
Para un directorio, cada permiso permite:
leer (r): listar el contenido del directorio,
escribir (w): añadir o eliminar archivos del directorio y
ejecutar (x): acceder a los archivos del directorio.
El permiso de ejecución de un directorio permite no sólo la lectura de sus archivos sino la posibilidad de ver los atributos de los mismos tales como tamaño y fecha y hora de modificación.
Para mostrar la información referente a los permisos de archivos y directorios
se utiliza el comando ls
. Véase ls(1)
. Cuando se
invoca ls
con la opción -l, se muestra la siguiente
información :
el tipo de archivo (primer carácter)
-: archivo normal
d: directorio
l: enlace simbólico
c: nodo de dispositivo de carácter
b: nodo de dispositivo de bloque
p: tubería con nombre
s: socket
los permisos de acceso del archivo (los nueve caracteres, tres para cada usuario, grupo y otros en ese orden)
el número de enlaces duros del archivo
el nombre del usuario propietario del archivo
el nombre del grupo al que pertenece el archivo
el tamaño del archivo en caracteres (en bytes)
la fecha y hora del archivo (mtime)
el nombre del archivo.
Para cambiar el propietario de un archivo se utiliza chown
desde
la cuenta de superusuario. Para cambiar el grupo al que pertenece un archivo
se utiliza chgrp
desde la cuenta del propietario del archivo o
desde la cuenta de superusuario. Para cambiar los permisos de acceso de un
archivo o de un directorio se utiliza chmod
desde la cuenta del
propietario del mismo o desde la cuenta de root. Veamos la sintaxis básica
para manipular el archivo loquesea
:
# chown nuevo_usuario loquesea # chgrp nuevo_grupo loquesea # chmod [ugoa][+-=][rwx][,...] loquesea
Véase chown(1)
, chgrp(1)
y chmod(1)
para más detalles.
Por ejemplo, para que el usuario quiensea sea propietario de un determinado directorio que sea compartido por el grupo loquesea, ejecute los siguientes comandos desde la cuenta de superusuario:
# cd /determinada/ubicación/ # chown -R quiensea:loquesea . # chmod -R ug+rwX,o=rX .
Existen tres bits más para permisos especiales:
ID usuario (s o S en vez de la x del usuario),
ID grupo (s o S en vez de la x del grupo) y
bit adherente (t o T en vez de la x de otros).
Activando el ID usuario de un archivo ejecutable se permite a un usuario ejecutarlo con el ID del propietario del archivo (por ejemplo, el root). Análogamente, activando el ID grupo de un archivo ejecutable se permite a un usuario ejecutarlo con el ID del grupo del archivo (por ejemplo, el root). Puesto que estas activaciones pueden implicar riesgos en la seguridad del sistema se requiere proceder con cautela.
Activando el ID grupo de un directorio se habilita el esquema de creación de archivos del tipo BSD donde todos los archivos que se crean en el directorio pertenecen al grupo del directorio.
Activando el bit adherente en un directorio, se evita que un
usuario que no es propietario de un archivo lo pueda eliminar del mismo. Para
asegurar el contenido de un archivo en directorios donde todo el mundo puede
escribir como en /tmp
no sólo se debe desactivar el permiso de
escritura del archivo sino también activar el bit
adherente del directorio. Caso contrario, el archivo puede ser
borrado por un usuario que tenga permiso de escritura en el directorio, al
crear un nuevo archivo con el mismo nombre.
Veamos algunos ejemplos interesantes sobre permisos de archivos:
$ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/pppd crw-rw---- 1 root dip 108, 0 Jan 18 13:32 /dev/ppp -rw-r--r-- 1 root root 1051 Jan 26 08:29 /etc/passwd -rw-r----- 1 root shadow 746 Jan 26 08:29 /etc/shadow -rwsr-xr-- 1 root dip 234504 Nov 24 03:58 /usr/sbin/pppd $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src drwxrwxrwt 4 root root 4096 Feb 9 16:35 /tmp drwxrwsr-x 10 root staff 4096 Jan 18 13:31 /usr/local drwxrwsr-x 3 root src 4096 Jan 19 08:36 /usr/src drwxrwsr-x 2 root mail 4096 Feb 2 22:19 /var/mail drwxrwxrwt 3 root root 4096 Jan 25 02:48 /var/tmp
Usando el comando chmod(1)
existe un modo alternativo de asignar
permisos a los archivos Este método utiliza entre 3 y 4 números escritos en
octal (base 8). Cada dígito corresponde a:
primer dígito opcional: suma de ID usuario (=4), ID grupo (=2) y bit adherente (=1)
segundo dígito: suma de los permisos de lectura (=4), escritura (=2) y ejecución (=1) del usuario
tercer dígito: ídem para grupo
cuarto dígito: ídem para otros
Suena complicado pero en realidad es bastante sencillo. Si observa las primeras columnas (2-10) de la salida del comando ls -l y lee sus permisos en representación binaria (base 2) (con "-" igual a "0" y "rwx" igual a "1") le resultará familiar los permisos de archivo en representación octal (base 8). [33] Por ejemplo pruebe:
$ touch loquesea loquefuera $ chmod u=rw,go=r loquesea $ chmod 644 loquefuera $ ls -l loquesea loquefuera -rw-r--r-- 1 penguin penguin 0 Nov 3 23:30 loquesea -rw-r--r-- 1 penguin penguin 0 Nov 3 23:30 loquefuera
Se puede definir la máscara de permisos predeterminada usando el comando
umask
que viene con el shell. Véase builtins(7)
.
En un archivo GNU/Linux existen tres tipos de marcas de tiempo:
mtime: fecha y hora de modificación (ls -l),
ctime: fecha y hora de cambio de estado (ls -lc) y
atime: fecha y hora del último acceso (ls -lu).
Obsérvese que ctime no indica la fecha y hora de creación del archivo.
Al sobreescribir un archivo se modifican el mtime, ctime y atime del mismo.
Al cambiar los permisos o propietario de un archivo se modifican el ctime y atime del mismo.
Al leer un archivo se modifica el atime del mismo.
Obsérvese que en un sistema Debian la simple lectura de un archivo provocará
una operación de escritura para actualizar la información referente a
atime en el ínodo. Montando un sistema de
archivos con la opción noatime hará que el sistema omita esta
operación lo que resultará en un acceso de lectura más rápido. Véase
mount(8)
.
Utilice el comando touch(1)
para modificar las marcas de tiempo de
los archivos existentes.
Existen dos métodos de asociar un archivo loquesea con un nombre de archivo diferente loquefuera.
un enlace duro es un nombre duplicado de un archivo existente (ln loquesea loquefuera),
un enlace simbólico es un archivo especial que apunta al nombre de otro archivo (ln -s loquesea loquefuera).
Veamos en el siguiente ejemplo los cambios en el conteo de enlaces y las
sutiles diferencias en el resultado del comando rm
.
$ echo "Contenido original" > loquesea $ ls -l loquesea -rw-r--r-- 1 osamu osamu 4 Feb 9 22:26 loquesea $ ln loquesea loquefuera # enlace duro $ ln -s loquesea loquesea3 # enlace simbólico $ ls -l loquesea loquefuera loquesea3 -rw-r--r-- 2 osamu osamu 4 Feb 9 22:26 loquefuera lrwxrwxrwx 1 osamu osamu 3 Feb 9 22:28 loquesea3 -> loquesea -rw-r--r-- 2 osamu osamu 4 Feb 9 22:26 loquesea $ rm loquesea $ echo "Nuevo contenido" > loquesea $ cat loquefuera Contenido original $ cat loquesea3 Nuevo contenido
Como se muestra en el ejemplo de arriba, un enlace simbólico tiene un permiso de acceso nominal "rwxrwxrwx" y un permiso de acceso efectivo dictado por los permisos del archivo al que apunta.
El directorio .
apunta al propio directorio, por lo tanto el
conteo de enlaces en un directorio nuevo comienza en 2. El directorio
..
apunta al directorio padre, por lo tanto el conteo de enlaces
del directorio aumenta al añadir nuevos subdirectorios.
Una tubería con nombre es un archivo que actúa como una tubería. Uno añade algo al archivo y sale por el otro extremo. Es por eso que se denomina FIFO o First-In-First-Out: lo primero que dirige a la tubería es lo primero que sale por el otro extremo.
Si se escribe a una tubería con nombre, el proceso que escribe a la tubería no finaliza hasta que la información escrita es leída de la tubería. Si se lee desde una tubería con nombre, el proceso de lectura espera hasta que exista algo para leer antes de finalizar. El tamaño de la tubería es siempre cero --- no almacena datos, sólo vincula dos procesos al igual que el | del shell. No obstante, puesto que la tubería tiene nombre, los dos procesos no tienen que estar en la misma línea de comandos ni tampoco ser ejecutados por el mismo usuario.
Puede comprobarlo haciendo lo siguiente:
$ cd; mkfifo mitubería $ echo "hola" >mitubería & # poner en segundo plano [1] 5952 $ ls -l mitubería prw-r--r-- 1 penguin penguin 0 2003-11-06 23:18 mitubería $ cat mitubería hola [1]+ Done echo hola >mitubería $ ls mitubería prw-r--r-- 1 penguin penguin 0 2003-11-06 23:20 mitubería $ rm mitubería
Un socket permite a los procesos intercambiar información y es similar a una tubería con nombre (FIFO). En el caso de los sockets estos procesos no necesitan estar ejecutándose simultáneamente ni ser hijos de un mismo proceso padre. Es el extremo final de la comunicación entre procesos. El intercambio de información puede ocurrir en la red entre diferentes máquinas.
Los archivos de dispositivo se refieren a dispositivos virtuales o físicos del sistema, tales como discos duros, tarjetas de video, pantalla o teclado. Un ejemplo de dispositivo virtual es la consola, representado por /dev/console.
Existen dos tipos de dispositivos:
dispositivos de carácter
Pueden accederse de un carácter por vez, es decir, la unidad de datos más pequeña que se puede escribir o leer desde el dispositivo es un carácter (un byte).
dispositivos de bloque
Pueden accederse en unidades más grandes denominadas bloques que contienen cierto número de caracteres. El disco duro es un dispositivo de bloque.
Es posible leer archivos de dispositivos, aunque puede que contengan datos
binarios que resulten incomprensibles a los humanos. A veces resulta útil
escribir datos directamente en estos archivos para resolver problemas
relacionadas con el hardware. Por ejemplo, se puede volcar un archivo de texto
al dispositivo de impresión /dev/lp0
o enviar comandos al módem
desde el puerto serie /dev/ttyS0
. Pero, salvo que se realice
esta tarea con cuidado, puede que se produzca un desastre mayor. Por lo tanto,
sea prudente.
/dev/null
etc.
/dev/null
es un archivo de dispositivo especial que descarta todo
lo que se escribe en él. Si no desea algo, arrójelo a
/dev/null
. Básicamente se trata de un agujero negro. Al leer
/dev/null
se obtiene inmediatamente un carácter de finalización
de archivo (EOF).
/dev/zero
es similar, salvo que al leerlo se obtiene el carácter
\0 (no es igual al número ASCII cerp). Véase Archivos fantasma, Sección 8.6.34.
El número de nodo de dispositivo se muestra al ejecutar ls
:
$ ls -l /dev/hda /dev/ttyS0 /dev/zero brw-rw---- 1 root disk 3, 0 Mar 14 2002 /dev/hda crw-rw---- 1 root dialout 4, 64 Nov 15 09:51 /dev/ttyS0 crw-rw-rw- 1 root root 1, 5 Aug 31 03:03 /dev/zero
Here,
el número de dispositivo principal de /dev/hda
es 3 y el
secundario 0. Es accesible en modo lectura/escritura por el usuario
perteneciente al grupo disk,
el número de dispositivo principal de /dev/ttyS0
es 4 y el
secundario 64. Es accesible en modo lectura/escritura por el usuario
perteneciente al grupo dialout y
el número de dispositivo principal de /dev/zero
es 1 y el
secundario 5. Es accesible en modo lectura/escritura por cualquier usuario.
Anteriormente, el proceso de instalación creaba los nodos de dispositivos
mediante el comando /sbin/MAKEDEV
. Véase
MAKEDEV(8)
.
Actualmente, el sistema de archivos situado en /dev
se llena
automáticamente por el sistema de archivos de dispositivos similar al sistema
de archivos /proc
.
/proc
El sistema de archivos /proc
es un seudo sistema de archivos que
contiene información sobre el sistema y sus procesos en ejecución.
A menudo hay quienes entran en pánico cuando detectan la presencia de un
archivo - el /proc/kcore
- que, generalmente, es enorme. Este
archivo es, básicamente, una copia del contenido de la memoria de su máquina.
Se utiliza para depurar el kernel. En realidad, no existe de modo que no hay
que preocuparse por su tamaño.
Véase Poniendo a punto al kernel mediante el sistema de
archivos proc, Sección 7.3 y proc(5)
.
Véase El programa X, Sección 9.4.
El sistema X Window se puede iniciar en forma automática con el demonio de
acceso gráfico xdm
o desde la consola escribiendo lo siguiente
$ exec startx
Puesto que el entorno X puede utilizar distintos administradores de ventana su interfaz de usuario puede variar considerablemente. . Recuerde que al hacer clic derecho en la ventana principal aparecerá un menú que siempre está disponible.
Para acceder al indicador del intérprete de comandos, inicie Xterm desde el menú:
"XShells" --> "XTerm".
Para la navegación gráfica de páginas web, inicie Mozilla desde el menú:
"Aplicaciones" --> "Red" --> "Navegador Mozilla".
Para la visualización de archivos PDF, ejecute Xpdf desde el menú:
"Aplicaciones" --> "Visores" --> "Xpdf".
Si no encuentra las entradas en el menú, instale los paquetes correspondientes. Véase Fundamentos de la administración de paquetes Debian Debian, Sección 6.2.
Las siguientes son combinaciones de teclas importantes a tener en cuenta cuando se ejecuta el sistema X Window.
Ctrl-Alt-F1 a F6: Cambia a otra seudo terminal (desde X Window, DOSEMU, etc.)
Alt-F7: Vuelve al sistema X Window
Ctrl-Alt-menos: Cambia la resolución de la pantalla en el sistema X Window (menos hace referencia a la tecla del teclado numérico)
Ctrl-Alt-más: Cambia la resolución de la pantalla en el sistema X Window en sentido opuesto (más hace referencia a la tecla del teclado númerico)
Ctrl-Alt-Retroceso: Finaliza el programa servidor de X
Alt-X, Alt-C, Alt-V: Las combinaciones de teclas usuales usadas en Windows/Mac para Cortar, Copiar, Pegar que utilizan la tecla Ctrl son reemplazadas, en algunos programas como Netscape Composer, por la tecla Alt.
Por el momento, recomiendo leer los libros fundamentales de The Linux Documentation Project:
Guides
:
"The Linux System Administrators' Guide",
Abarca todos los aspectos para mantener y configurar el sistema, administrar las cuentas de usuarios y realizar copias de seguridad.
paquete: sysadmin-guide
archivo: file:///usr/share/doc/sysadmin-guide/html/index.html
página web: http://www.tldp.org/LDP/sag/index.html
"The Linux Network Administrator's Guide, Second Edition",
Es una única guía de referencia para la administración de redes en entornos Linux.
Paquete: (not available)
Archivo: (not applicable)
Página web: http://www.tldp.org/LDP/nag2/index.html
"Linux: Rute User's Tutorial and Exposition"
Un buen libro electrónico y en papel que abarca la admistración de un sistema GNU/Linux.
De Paul Sheer
Publicado por Prentice Hall
Paquete: rutebook
(desde non-free)
Archivo: file:///usr/share/doc/rutebook/
Véase Suporte para Debian, Capítulo 15 para más recursos de aprendizaje.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Las notas de versión oficiales para actualizar están en http://www.debian.org/releases/stable/releasenotes
y http://www.debian.org/releases/testing/releasenotes
(en preparación).
La actualización de un sistema a la versión estable, de prueba o inestable puede requerir de muchos pasos que se pueden seguir en el siguiente orden:
Actualizar a Woody (si el sistema es anterior a Woody)
Actualizar a la versión estable
Actualizar a la versión de prueba
Actualizar a la versión inestable
Debian no brinda soporte a las actualizaciones que omiten las versiones intermedias.
El presente procedimiento se describe por separado porque el APT de Potato no
tiene todas las características descriptas en l página actual del manual
apt_preferences(5)
.
Luego de incluir sólo las fuentes para Woody en
/etc/apt/sources.list
, actualice APT y los paquetes principales
requeridos a sus versiones Woody haciendo lo siguiente:
# apt-get update # apt-get install libc6 perl libdb2 debconf # apt-get install apt apt-utils dselect dpkg
Luego actualice el resto del sistema
# apt-get upgrade # apt-get dist-upgrade
Puede actualizar de una distribución a otra obteniendo los paquetes de la red. Esto se puede realizar de la siguiente manera:
Obtenga una lista de repositorios para estable
# cd /etc/apt # cp -f sources.list sources.anterior # :>sources.list # apt-setup noprobe
Si desea actualizar a la distribución de prueba ñada la sección testing a la lista nueva. Si también desea actualizar a la distribución inestable añada la sección unstable.
# cd /etc/apt # grep -e "^deb " sources.list >srcs # :>sources.list # cp -f srcs sources.list # sed -e "s/stable/testing/" srcs >>sources.list # sed -e "s/stable/unstable/" srcs >>sources.list # apt-get update # apt-get install apt apt-utils
Véase Fundamentos de la administración de paquetes
Debian Debian, Sección 6.2 para ver cómo poner a punto
/etc/apt/sources.list
y /etc/apt/preferences
.
Luego de configurar en forma adecuada los archivos
/etc/apt/sources.list
y /etc/apt/preferences
como se
indicó más arriba, puede comenzar con la actualización.
Nótese que la utilización de la versión de prueba de Debian tiene como efecto colateral la lenta solución de los fallos de seguridad, ya que estos paquetes se envían a la versión inestable y sólo posteriormente a la de prueba.
Véase Administración de paquetes Debian, Capítulo 6 para los fundamentos y consultre Resolución de problemas al actualizar con APT, Sección 6.3.2 si tropieza con problemas.
dselect
Si un sistema tiene muchos paquetes que incluye paquetes -dev,
etc., se recomienda el siguiente método usando dselect
para un
control minucioso de paquetes.
# dselect update # siempre hacer esto antes de actualizar # dselect select # seleccione los paquetes adicionales
Todos los paquetes actuales serán seleccionados al arrancar
dselect
. dselect
puede proponerle otros paquetes:
Dependientes, Sugeridos y Recomendados.
Si no desea añadir ningún paquete, sólo pulse Q para abandonar
dselect
.
# dselect install
Deberá responder algunas preguntas para la configuración para esta parte del
proceso, por lo tanto tome nota y dedique parte de su tiempo a esta parte.
Véase dselect
, Sección 6.2.3.
Use dselect
. Siempre funciona :)
apt-get
# apt-get update # apt-get -t stable upgrade # apt-get -t stable dist-upgrade # apt-get -t testing upgrade # apt-get -t testing dist-upgrade # apt-get -t unstable upgrade # apt-get -t unstable dist-upgrade
Una vez que haya actualizado a Sarge es recomendable usar aptitude
en vez de apt-get
. (aptitude
acepta muchas de las
opciones de apt-get
incluídas las de arriba)
Para actualizar y conservar las configuraciones actuales de
dselect
:
# apt-get dselect-upgrade
Véase Dependencias entre paquetes, Sección 2.2.8.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Este capítulo se basa en una más vieja versión del texto original inglés. Comprobar por favor la versión inglesa también.
Para reducir el tráfico en los repositorios Debian, asegúrese de configurar
un proxy HTTP local usando squid
para los paquetes descargados
mediante APT y, de ser necesario, configurar la variable de entorno
hhtp_proxy o fijar el valor http en
/etc/apt/apt.conf
. Esto mejora notablemente el rendimiento de las
actualizaciones en una red, en especial en una LAN con una gran cantidad de
sistemas Debian.
Aunque el método de marcado (pinning) de apt_preferences(5)
es
poderoso, no resuelve la totalidad de temas sobre dependencias puesto que las
definiciones de dependencias tienden a buscar las versiones más nuevas de
otros programas fundamentales.
El uso del método descripto en chroot
,
Sección 8.6.35 es útil para asegurar, simultáneamente, tanto la
estabilidad del sistema como el acceso a las últimas versiones de los
programas.
Este capítulo se basa en sistemas Woody pero la mayoría de la información se
aplica también a sistemas Potato (con exepción de
apt_preferences(5)
y lo concerniente al archivo
/etc/apt/preferences
).
Si el leer toda la documentación del desarrollador es demasiado para Ud., lea primero este capítulo y empiece a disfrutar toda la potencia de Debian con testing/unstable :-)
dselect – herramienta de administración de paquetes basada en menús (alto nivel) dpkg – instala paquetes (package-file centric) apt-get – instala paquetes (package-archive centric, CLI APT) tasksel – instala tareas (conjunto de paquetes) aptitude – instala paquetes (paquetes y tareas, interfaz de APT basada en ncurses) deity – otra interfaz para APT basada en ncurses synaptic, gsynaptic – otras interfaces gráficas para APT
Estas herramientas no están en un mismo nivel. dselect
se
ejecuta encima de APT (apt-get
) y dpkg
.
APT utiliza /var/lib/apt/lists/*
para el seguimiento de paquetes
disponibles, mientras que dpkg
usa
/var/lib/dpkg/available
. Si instaló paquetes directamente usando
apt-get
o programas similares como, por ejemplo,
aptitude
, asegúrese de actualizar el archivo
/var/lib/dpkg/available
mediante la opción [U]pdate
del menú de dselect
o desde la línea de comandos
"dselect update" antes de ejecutar dselect
select, tasksel o dpkg -l.
En cuanto a la dependencia entre paquetes, apt-get
obtiene
automáticamente los paquetes que dependen entre sí (depends)
pero ignora los paquetes recomendados (recommends) y sugeridos
(suggests). dselect
, en cambio, ofrece un
control más avanzado de los paquetes basado en menús que ofrece la
posibilidad de elegir paquetes basándose en depends,
recommends y suggests. aptitude
tiene la opción de descargar todos los paquetes automáticamente basándose en
depends, recommends y
suggests. See Dependencias entre
paquetes, Sección 2.2.8.
apt-cache - búsqueda de paquetes en el caché local dpkg-reconfigure - vuelve a configurar un paquete ya instalado (si utiliza debconf) dpkg-source - se encarga de los archivos fuentes dpkg-buildpackage - automatiza la creación de un paquete ...
Puede instalar un conjunto de paquetes denominado tarea o instalar paquetes individuales o actualizar el sistema usando las herramientas de administración de paquetes como se describe a continuación. Also refer to Consejos para la instalación de un sistema Debian, Capítulo 3, Actualizando una distribución, Capítulo 5 y Editores de rescate, Sección 11.2.
tasksel
tasksel
es el Instalador de Tareas de Debian que
se ofrece durante la instalación como método de instalación
"sencillo".
Cuando uno necesita instalar una determinada función que requiere de múltiples paquetes, esta es la mejor manera de hacerlo. Asegúrese de ejecutar los comandos en el siguiente orden:
# dselect update # tasksel
aptitude
también ofrece acceso a las tareas. No sólo
permite seleccionar tareas sino que permite eliminar paquetes de una
tarea en forma selectiva mediante un menú.
Para realizar actualizaciones selectivas desde la distribución de
prueba el sistema APT (>Woody) debe configurarse como en Actualizando de Potato a Woody, Sección 5.1
para usar aprovechar las características de apt_preferences(5)
.
Primero añada las fuentes para la versión estable (stable), de
prueba (testing) e inestable (unstable) a su
/etc/apt/sources.list
. A continuación, edite
/etc/apt/preferences
para configurar correctamente el
Pin-Priority:
Package: * Pin: release a=stable Pin-Priority: 500 Package: * Pin: release a=testing Pin-Priority: 600 Package: * Pin: release a=unstable Pin-Priority: 50
dselect
Al arrancar, dselect
selecciona automáticamente todos los
paquetes "Requeridos" ("Required"), "Importantes"
("Important") y "Estándar" ("Standard"). En el
sistema Potato, algunos programas muy grandes tales como teTeX y Emacs solían
estar aquí y resultaba mejor omitirlos en una instalación inicial
deseleccionándolos manualmente (mediante `_'). En Woody, han sido puestos en
la categoría de paquetes "Opcionales" ("Optional").
dselect
tiene una interfaz de usuario algo extraña. Existen
cuatro comandos un tanto ambiguos (Mayúsculas, significa ¡MAYÚSCULAS!):
Tecla Acción Q Salir. Confirma la selección actual y sale de todas maneras. (no tiene en cuenta las dependencias) R ¡Reestablecer! No quise decir esto. D ¡Maldición! No me importa lo que piensa dselect. ¡Házlo! U Volver todo en el estado sUgerido
Con D y Q, puede elegir paquetes en conflicto bajo su
entera responsabilidad. Utilice estos comandos con cuidado. Actualmente,
dselect
es una herramienta basada en menús madura que ofrece un
control muy preciso sobre los paquetes sugeridos (suggests) y
recomendados (recommends).
Añada una línea que contenga la opción "expert" en
/etc/dpkg/dselect.cfg
para reducir la cantidad de información
mostrada. Para una máquina más lenta, puede ejecutar dselect
en
otra máquina más rápida para encontrar los paquetes y usar apt-get
install para instalarlos.
dselect
no ofrece acceso a los paquetes que no han sido
favorecidos por la Pin-Priority.
aptitude
aptitude
es un instalador de paquetes nuevo basado en menús
similar a dselect
. También se puede como alternativa de
apt-get
en la línea de comandos. Véase
aptitude(1)
.
aptitude
acepta comandos de una tecla, que generalmente están en
minúsculas.
Tecla Acción F10 Menú ? Ayuda u Actualizar la información del archivo de paquetes g Descargar e instalar los paquetes seleccionados q Salir de la pantalla actual y guardar los cambios x Salir de la pantalla actual y descartar los cambios Enter Ver información sobre un paquete
aptitude
ofrece la opción de descargar automáticamente todos los
paquetes basándose en depends, recommends y
suggests. Puede alterar este comportamiento eligiendo
F10 -> Optciones -> Manejo de dependencias de su menú.
aptitude
permite el acceso a todas las versiones de un paquete.
apt-cache
y apt-get
Con el ejemplo de arriba para trabajar en la versión de prueba, podemos controlar el sistema usando los siguientes comandos:
apt-get -u upgrade
Permanece en la distribución de prueba y actualiza todos los paquetes del sistema instalando las dependencias desde ella misma.
apt-get -u dist-upgrade
Permanece en la distribución de prueba y actualiza todos los paquetes del sistema resolviendo las dependencias desde ella misma.
apt-get -u dselect-upgrade
Permanece en la distribución de prueba y actualiza todos los
paquetes del sistema teniendo en cuenta la selección de dselect
.
apt-get -u install paquete
Instala el paquete y sus dependencias desde la distribución de prueba.
apt-get -u install package/unstable
Instala el paquete desde la distribución inestable y sus dependencias desde la distribución de prueba.
apt-get -u install -t unstable paquete
Instala el paquete y sus dependencias desde la distribución inestable asignando una Pin-Prioriy igual a 990 a unstable.
apt-cache policy loquesea1 loquesea2 ...
Comprueba el estado de los paquetes eloquesea1 loquesea2 ....
apt-cache show loquesea1 loquesea2 | less
Comprueba la información referente a los paquetes loquesea1 loquesea2 ....
apt-get install loquesea=2.2.4-1
Instala una versión particular (2.2.4-1) del paquete loquesea.
apt-get -u install loquesea1 loquesea2-
Instala el paquete loquesea1 y desinstala el paquete loquesea2
apt-get remove loquesea1
Desinstala el paquete loquesea1 pero conserva intactos los archivos de configuración personalizados.
apt-get remove --purge loquesea1
Desinstala el paquete loquesea1 junto con todos sus archivos de configuración personalizados.
En los ejemplos anteriores, el uso de la opción -u asegura que
apt-get
muestre la lista de todos los paquetes que van a ser
actualizados y pregunte al usuario antes de proceder. Lo siguiente elige la
opción -u como acción predeterminada:
$ cat >> /etc/apt/apt.conf << . // Mostrar siempre los paquetes que van a ser actualizados (-u) APT::Get::Show-Upgraded "true"; .
Utilice la opción -s para simular la actualización sin llevarla realmente a cabo.
Dependiendo de su preferencia por permanecer en una determinada versión de
Debian , puede modificar el archivo de ejemplo
/etc/apt/preferences
en Configurar el
sistema APT, Sección 6.2.2 para que se ajuste a sus necesidades:
permanecer en stable: poner la Pin-Priority de testing en 50 permanecer en testing: mantener la configuración dada anteriormente permanecer en testing (unstable): poner la Pin-Priority de unstable en 500 permanecer en unstable(testing): poner la Pin-Priority de unstable en 800
Una idea para la elección del Pin-Priority consiste en moverse desde arriba hacia abajo en la tabla anterior conforme transcurre el tiempo entre la fecha inmediatamente posterior a la salida de una distribución y la fecha de congelación de la siguiente versión.
Advertencia: el permanecer en la versión de prueba de Debian tiene como efecto colateral la lenta solución de los fallos de seguridad.
Si mezcla las versiones de Debian, de prueba con estable o inestable con estable, es muy probable que descarge diversos paquetes importantes de la rama de prueba o inestable que pueden tener errores. Queda debidamente advertido.
Ejemplos de /etc/apt/preferences
que bloquean algunos paquetes
fundamentales en su versión más madura mientras actualizan a una versión
menos madura paquetes que no son esenciales, están disponibles en el examples
subdirectory
como preferences.testing
y
preferences.unstable
. Por otra parte,
preferences.stable
fuerza a todos los paquetes a volver a su
versión estable.
Para volver todos los paquetes a la versión estable, edite el
/etc/apt/preferences
de la siguiente manera:
Package: * Pin: release a=stable Pin-Priority: 1001
y ejecute "apt-get upgrade" que forzará el retorno a la rama estable debido a que Pin-priority > 1000. Tenga cuidado, puede haber algunos inconvenientes con las dependencias.
/etc/apt/preferences
En el /etc/apt/preferences
de ejemplo presentado en Configurar el sistema APT, Sección 6.2.2, la primera
línea Package: * significa que esa sección se aplica a todos los
paquetes. Puede usar el nombre de un paquete en vez de * para especificar la
Pin-Priority del mismo.
En el segundo renglón, "Pin: release a=stable" significa que
apt-get
descargará el archivo Packages.gz
del
repositorio que contiene al archivo Release
con la línea
"Archive: stable".
En el último renglón "Pin-Priority: 500" indica que la Pin-Priority es 500.
Si existen varios paquetes con el mismo nombre, generalmente el que tiene el valor de Pin-Priority más alto es el que se instala..
Los significados de los Pin-Priority son:
1001 en adelante: prioridades para volver a la versión anterior.
Se permite volver a la versión anterior del paquete.
100 a 1000: prioridades estándar.
No se permite volver a la versión anterior del paquete. Algunos valores de Pin-Priority claves:
990: la prioridad dado por la opción --target-release or
-t of apt-get(8)
option.
500: la prioridad predeterminada de todos los paquetes.
100: la prioridad de los paquetes recientemente instalados.
0 a 99: prioridades que no son automáticas (se utilizan únicamente si el paquete no está instalado y no existe otra versión disponible).
menor que 0: la versión nunca es seleccionada.
Se puede obtener el mismo efecto que --target-release configurando
/etc/apt/apt.conf
de la siguiente manera:
# echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf
La opción --target-release de la línea de comandos y la
configuración de /etc/apt/apt.conf
tienen prioridad sobre la
configuración de /etc/apt/preferences
. Tenga cuidado con estas
interferencias cuando juegue con /etc/apt/preferences
.
Con estos conocimientos, se puede vivir eternamente de "actualizaciones" :-)
Si tiene problemas con un paquete determinado, asegúrese de consultar los
siguientes sitios antes de pedir ayuda o enviar un informe de fallos.
(lynx
, links
y w3m
funcionan igualmente
bien):
$ lynx http://bugs.debian.org/ $ lynx http://bugs.debian.org/nombre-paquete # si conoce el nombre del paquete $ lynx http://bugs.debian.org/número-fallo # si conoce el número de fallo
Busque en Google (www.google.com) incluyendo "site:debian.org" como palabra clave.
En caso de duda, recurra a la documentación. Inicialice CDPATH de la siguiente manera:
export CDPATH=.:/usr/local:/usr/share/doc
y escriba
$ cd nombre_paquete $ mc
Más recursos de soporte se encuentran listados en Suporte para Debian, Capítulo 15.
Al actualizar desde unstable/testing pueden surgir problemas entre dependencias como se explicó en Actualizando, Sección 5.3. La mayoría de las veces, es debido a que el paquete que se desea actualizar posee una nueva dependencia que no es satisfecha. Estos problemas se solucionan haciendo
# apt-get dist-upgrade
Si esto no funciona, entonces repita las siguientes operaciones hasta que el problema se resuelva por sí solo:
# apt-get upgrade -f # continue con upgrade a pesar de los errores ... o # apt-get dist-upgrade -f # continue con dist-upgrade a pesar de los errores
Algunos scripts de actualización conflictivos pueden provocar inconvenientes
en forma recurrente. Generalmente resulta conveniente resolver este tipo de
situación inspeccionando los scripts
/var/lib/dpkg/info/packagename.{post,pre}{inst,rm}
del
paquete problemático y ejecutando:
# dpkg --configure -a # configura todos los paquetes parcialmente # instalados
Si algún script se queja sobre un archivo de configuración faltante, busque
en /etc
el archivo de configuración correspondiente. Si existe
alguno con extensión .new (o algo similar), recurra a
mv
para eliminar el sufijo.
Pueden aparecer problemas de dependencias al instalar paquetes de la rama inestable/de prueba. Existen distintas maneras de burlar las dependencias.
# apt-get install -f paquete # no tener en cuenta dependencias no # resueltas
Un método alternativo para resolver estas situaciones consiste en usar el
paquete equivs
. Véase
file:///usr/share/doc/equivs/README.Debian
y El paquete equivs
, Sección 6.5.2.
dpkg
La recuperación de un dselect
(APT) que no funciona más en un
sistema inutilizado se puede realizar usando dpkg
sin APT:
# cd /var/cache/apt/archives # dpkg -i libc6* libdb2* perl* # dpkg -i apt* dpkg* debconf* # dpkg -i * # hasta que no haya más errores
Si falta un paquete, obténgalo de mirror sites
mediante:
# mc # utilice "FTP link" apuntando a un servidor FTP Debian
Los paquetes en el servidor HTTP/FTP pueden no estar localizados en el
directorio habitual /dist
sino en el nuevo directorio
/pool
. (Véase El directorio
pool, Sección 2.1.10.)
Luego instálelo haciendo:
# dpkg -i /var/cache/apt/archives/nombre_paquete.deb
Para una dependencia no resuelta, resuelvala o utilice:
# dpkg --ignore-depends=paquete1,... -i nombre_paquete.deb # dpkg --force-depends -i nombre_paquete.deb # dpkg --force-depends --purge paquete # dpkg --force-confmiss -i nombre_paquete.deb # Instale archivo de # configuración # faltante
Si por alguna razón se inutiliza /var/lib/dpkg/status
, el
sistema Debian perderá los datos de la selección de paquetes y resultará
enormemente afectado.. Busque el archivo /var/lib/dpkg/status
anterior en /var/lib/dpkg/status-old
o
/var/backups/dpkg.status.*
.
Puede resultar una muy buena idea mantener /var/backups/
en una
partición aparte ya que este directorio contiene una inmensa cantidad de datos
importantes del sistema.
Si el archivo /var/lib/dpkg/status
anterior no se encuentra
disponible, aún puede recuperar información de los directorios situados
/usr/share/doc/
.
# ls /usr/share/doc | \ grep -v [A-Z] | \ grep -v '^texmf$' | \ grep -v '^debian$' | \ awk '{print $1 " install"}' | \ dpkg --set-selections # dselect --expert # reinstale el sistema, use dselect si es necesario
/var
Puesto que el directorio /var
contiene datos que se actualizan
continuamente, como por ejemplo el correo, es suceptible de corromperse.
Ubicándolo en una partición independiente disminuye los riesgos. Si ocurre
un desastre, puede que deba reconstruir el directorio /var
para
recuperar el sistema Debian.
Obtenga la estructura del directorio /var
de un sistema Debian
funcional basada en una versión Debian igual o anterior, por ejemplo
, y
ubíquela en el directorio raíz del sistema dañado. A continuación,
var.tar.gz
# cd / # mv var var-old # si quedan contenidos útiles # tar xvzf var.tar.gz # utilice la estructura Woody # aptitude # o dselect
Esto proporcionará un sistema funcional. Puede recuperar la selección de paquetes, usando el método descripto en Recuperar los datos de la selección de paquetes, Sección 6.3.4. ([FIXME]: Este procedimiento necesita de más pruebas.)
Arranque Linux usando un diskete/CD de rescate o una partición alternativa en
un sistema multi-arranque. See Arrancando el sistema,
Sección 8.1. Monte el sitema que no arranca en /target
y
utilice el modo de instalación chroot de dpkg
.
# dpkg --root /target -i nombre_paquete.deb
Luego configure y solucione los problemas.
A propósito, si es un lilo
dañado el que le impide arrancar el
sistema, puede usar un disco de rescate estándar de Debian. En el indicador
de arranque, suponiendo que la partición raíz de su intalación Linux está
en /dev/hda12
y que desea entrar al nivel de ejecución 3,
escriba:
boot: rescue root=/dev/hda12 3
De esta manera arrancará un sistema prácticamente funcional cuyo kernel se encuentra en el diskete (pueden aparecer pequeños problemas debido a la falta de algunas de las características o módulos del kernel)
dpkg
se encuentra dañado
Un dpkg
dañado puede tornar imposible la instalación de
cualquier archivo .deb. Un procedimiento similar al siguiente le
ayudará a superar esta situación (en la primera línea, puede reemplazar
"links" con su navegador de consola favorito)
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/ ... descargue una versión de dpkg_version_arquit.deb $ ar x dpkg_version_arquit.deb $ su password: ***** # mv data.tar.gz /data.tar.gz # cd / # tar xzfv data.tar.gz
Para una máquina i386, puede utilizar también la URL http://packages.debian.org/dpkg.
Bajo la luz de estos comandos una persona se salvará de la lucha kármica eterna contra el infierno de la actualización y le permitirá alcanzar el nirvana Debian. :-)
Para averiguar a qué paquete pertenece un archivo determinado:
$ dpkg {-S|--search} patrón # busca 'patrón' en los paquetes instalados $ wget http://ftp.us.debian.org/debian/dists/sarge/Contents-i386.gz $ zgrep -e pattern Contents-i386.gz # busca 'patrón' en los archivos descargados de Debian
O utilice comandos de paquetes especializados:
# apt-get install dlocate $ dlocate nombre_archivo # alternativa rápida de dpkg -L y dpkg -S ... # apt-get install auto-apt # herramienta de instalación automática de paquetes # bajo demanda # auto-apt update # crea el archivo db para auto-apt $ auto-apt search patrón # busca de 'patrón' en todos los paquetes, instalados o no
Buscar y mostrar la información sobre un paquete. Asegúrese de apuntar a
un/unos archivo(s) APT adecuado(s) editando /etc/apt/sources.list
.
Si desea ver las diferencias entre un paquete de la rama de
prueba/inestable y uno instalado, utilice apt-cache
policy.
# apt-get check # actualiza el caché y verifica las dependencias $ apt-cache search patrón # busca un paquete a partir del 'patrón' $ apt-cache policy paquete # información sobre la prioridad de un # paquete $ apt-cache show -a paquete # muestra la descripción del paquete en # todas las distribuciones $ apt-cache showsrc paquete # muestra la descripción de un paquete # fuente $ apt-cache showpkg paquete # información de depuración de un paquete # dpkg --audit|-C # busca paquetes parcialmente instalados $ dpkg {-s|--status} paquete# descripción de un paquete instalado $ dpkg -l paquete # estado de un paquete instalado (una # línea) $ dpkg -L paquete # lista los archivos instalados por el # paquete
apt-cache showsrc no está documentado en el lanzamiento de Woody pero funciona :)
Asimismo puede encontrar información de paquetes en (utilizo mc para navegar):
/var/lib/apt/lists/* /var/lib/dpkg/available
La comparación de los siguientes archivos proporciona inoformación sobre lo que ocurrió exactamente durante las últimas instalaciones.
/var/lib/dpkg/status /var/backups/dpkg.status*
Para una instalación automática, añada la siguiente línea al
/etc/apt/apt.conf
:
Dpkg::Options {"--force-confold";}
Esto equivale a ejecutar apt-get -q -y nombre_paquete.
Puesto que de esta manera se responden con "Sí" todas las preguntas
fomuladas, puede causar problemas. Por lo tanto use este truco con cuidado.
Véase apt.conf(5)
y dpkg(1)
.
Posteriormente puede configurar cualquier paquete siguiendo Reconfigurar paquetes instalados, Sección 6.4.4.
Utilice los siguientes comandos para reconfigurar un paquete ya instalado.
# dpkg-reconfigure --priority=medium paquete [...] # dpkg-reconfigure --all # reconfigura todos los paquetes # dpkg-reconfigure locales # genera los nuevos locales # dpkg-reconfigure --p=low xserver-xfree86 # reconfigura el # servidor X
Hago lo mismo con debconf
si necesita cambiar en forma permanente
el modo de diálogo de debconf
.
Algunos programas vienen con scripts de configuración especiales.
apt-setup - crea el /etc/apt/sources.list install-mbr - instala un administrador del sector de arranque maestro tzconfig - configura el huso horario local gpmconfig - configura el administrador del ratón gpm eximconfig - configura Exim (MTA) texconfig - configura teTeX apacheconfig - configura Apache (httpd) cvsconfig - configura CVS sndconfig - configura el sistema de sonido ... update-alternatives - configuración del comando predeterminado, por ej. vim por vi update-rc.d - administación de los scripts de arranque System-Vt update-menus - sistema de menús de Debian ...
Desinstalar un paquete manteniendo su configuración:
# apt-get remove paquete ... # dpkg --remove paquete ...
Desinstalar un paquete incluyendo su configuración:
# apt-get remove --purge paquete ... # dpkg --purge paquete ...
Por ejemplo, para conservar libc6
y libc6-dev
para
dselect
y apt-get -u upgrade paquete se
puede hacer:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
apt-get -u install paquete no se verá afectado por
esto. Para conservar un paquete forzando una actualización automática a una
versión anterior mediante apt-get -u upgrade paquete o
apt-get -u dist-upgrade, añada lo siguiente al
/etc/apt/preferences
:
Package: libc6 Pin: release a=stable Pin-Priority: 2000
En "Package:" no se pueden usar entradas del tipo
"libc6*". Si necesita conservar todos los paquetes
binarios relacionados con el paquete fuente glibc
en forma
conjunta, debe listarlos en forma explícita.
El siguiente comando lista todos los paquetes que se desean conservar:
dpkg --get-selections "*"|grep -e "hold$"
apt-show-versions
puede mostrar las versiones de los paquetes
disponibles en cada distribución.
$ apt-show-versions | fgrep /testing | wc ... cantidad de paquetes de la rama de prueba (testing) $ apt-show-versions -u ... lista de paquetes que se pueden actualizar $ apt-get install `apt-show-versions -u -b | fgrep /unstable` ... actualiza todos los paquetes de la rama inestable (unstable) a su versión más reciente
La instalación de paquetes con APT guarda los paquetes en
/var/cache/apt/archives
.
# apt-get autoclean # elimina únicamente los paquetes inútiles # apt-get clean # elimina la totalidad de los paquetes del caché
Para hacer una copia local del estado de la selección de los paquetes:
# debconf-get-selections > debconfsel.txt # dpkg --get-selections "*" >mis_selecciones # o usar \*
"*" incluye también los nombres de los paquetes a purgar en mis_selecciones.
Puede transferir este archivo a otra computadora e instalarlo haciendo:
# dselect update # debconf-set-selections < debconfsel.txt # dpkg --set-selections <mis_selecciones # apt-get -u dselect-upgrade # o dselect install
Para una actualización parcial del sistema estable, es
conveniente reconstruir el paquete para el entorno dado a partir de su código
fuente. Esto evita actualizaciones masivas de paquetes debido a las
dependencias. Primero, añada las siguientes entradas al
/etc/apt/sources.list
:
deb-src http://http.us.debian.org/debian testing \ main contrib non-free deb-src http://http.us.debian.org/debian unstable \ main contrib non-free
Cada entrada para deb-src está dividida en dos por cuestiones de
impresión aunque en realidad las entradas en el sources.list
deben escribirse en una única línea.
A continuación, obtenga el código fuente y cree una copia local del paquete:
$ apt-get update # actualiza la lista de paquetes del repositorio $ apt-get source paquete $ dpkg-source -x paquete.dsc $ cd versión_paquete ... busque los paquetes requeridos (Build-depends en el archivo .dsc) e instálelos. Necesitará también el paquete "fakeroot". $ dpkg-buildpackage -rfakeroot ...o (sin firma) $ dpkg-buildpackage -rfakeroot -us -uc # utilice luego "debsign" si es necesario ...luego para instalarlo $ su -c "dpkg -i nombre_paquete.deb"
En general, se necesita instalar algunos paquetes con la opción
"-dev" para satisfacer la dependencia entre paquetes.
debsign
pertenece al paquete devscripts
.
auto-apt
puede fácilmente satisfacer estas dependencias. La
utilización de fakeroot
evita el uso innecesario de la cuenta de
superusuario.
En Woody, estos temas sobre dependencias pueden simplificarse. Por ejemplo,
para compilar el paquete fuente pine
:
# apt-get build-dep pine # apt-get source -b pine
A fin de crear un archivo local de paquetes que sea compatible con los sistemas
APT y dselect
, es necesario crear el archivo Packages
y archivar los paquetes en un árbol de directorios determinado.
Se puede crear un repositorio local deb similar al oficial de Debian haciendo:
# apt-get install dpkg-dev # cd /usr/local # install -d pool # los paquetes se ubicarán físicamente aquí # install -d dists/unstable/main/binary-i386 # ls -1 pool | sed 's/_.*$/ extra BOGUS/' | uniq > override # editor override # ajuste BOGUS # dpkg-scanpackages pool override /usr/local/ \ > dists/unstable/main/binary-i386/Packages # cat > dists/unstable/main/Release << EOF Archive: unstable Version: 3.0 Component: main Origin: Local Label: Local Architecture: i386 EOF # echo "deb file:/usr/local unstable main" \ >> /etc/apt/sources.list
O bien, rápidamente haciendo:
# apt-get install dpkg-dev # mkdir /usr/local/debian # mv /some/where/package.deb /usr/local/debian # dpkg-scanpackages /usr/local/debian /dev/null | \ gzip - > /usr/local/debian/Packages.gz # echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list
Se puede acceder en forma remota a estos archivos habilitando el acceso a estos
directorios mediante HTTP o FTP y modificando convenientemente las entradas del
archivo /etc/apt/sources.list
.
alien
permite la conversión de paquetes rpm de
Redhat , slp de Stampede , tgz de Slackware y
pkg de Solaris al formato de paquetes deb de Debian.
Si desea utilizar un paquete de una distribución Linux diferente a la que
tiene instalada en su sistema, puede usar alien
para convertirlo
en su formato de paquetes preferido e instalarlo. alien
soporta
también paquetes LSB.
debsums
permite verificar la integridad de los paquetes instalados
usando las sumas de control (checksums) MD5. Algunos paquetes no poseen sumas
de control MD5. Veamos una solución provisoria para los administradores de
sistema:
# cat >>/etc/apt/apt.conf.d/90debsums DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";}; ^D
por Joerg Wendland joergland@debian.org
(sin
verificar).
sources.list
optimizado
En pocas palabras, mis esfuerzos por optimizar sources.list
no
produjeron mejoras significativas para mí en los los Estados Unidos. Elegí
manualmente un repositorio cercano usando apt-setup
.
apt-spy
crea automáticamente un sources.list
basándose en el ancho de bando y el tiempo de latencia.
netselect-apt
crea un sources.list
mucho más
completo, pero usa un método menos efectivo para elegir la mejor réplica
(comparación del tiempo de pings).
# apt-get install apt-spy # cd /etc/apt ; mv sources.list sources.list.org # apt-spy -d testing -l sources.apt
dpkg-divert
dpkg-divert fuerza a dpkg
a no instalar un
archivo en su lugar habitual sino en otro diferente. Estos
desvíos se pueden usar en los scripts de los paquetes Debian
para quitar un archivo que provoca un conflicto. Los administradores de
sistemas también pueden usarlo para no tener en cuenta algunos archivos de
configuración o algunos archivos (que no han sido marcados como tales)
necesitan preservarse de dpkg
al instalar una versión nueva de un
paquete que los incluya (see Preservando la
configuración local, Sección 2.2.4).
# dpkg-divert [--add] nombre_archivo # añade "diversion" # dpkg-divert --remove nombre_archivo # elimina "diversion"
En general, resulta una buena idea no usar dpkg-divert
salvo que
sea absolutamente necesario hacerlo.
equivs
Si compila un programa a partir de su código fuente, resulta conveniente crear un paquete Debian (*.deb). Utilice equivs como último recurso.
Package: equivs Priority: extra Section: admin Description: burlar las dependencias entre paquetes Este es un paquete ficticio que se puede usar para crear paquetes Debian que contienen únicamente información sobre dependencias.
Para utilizar el comando vim
en lugar de vi
, utilice
update-alternatives
:
# update-alternatives --display vi ... # update-alternatives --config vi Selection Command ----------------------------------------------- 1 /usr/bin/elvis-tiny 2 /usr/bin/vim *+ 3 /usr/bin/nvi Enter to keep the default[*], or type selection number: 2
Los miembros del sistema de alternativos de Debian se encuentran en
/etc/alternatives
como enlaces simbólicos.
Para tener su entorno de ventanas X favorito, aplique
update-alternatives
a /usr/bin/x-session-manager
y
/usr/bin/x-window-manager
. Para más detalles, véase Personalizando la sesión en X, Sección 9.4.5.1.
/bin/sh
es un enlace simbólico a /bin/bash
o
/bin/dash
. Resulta más seguro utilizar /bin/bash
para preservar la compatibilidad con scripts antiguos contaminados con comandos
del bash aunque resulta más disciplinado usar /bin/dash
para
asegurar compatibilidad POSIX. La actualización al kernel 2.4 Linux kernel
tends to set this to /bin/dash
.
init
del System-V y niveles de ejecución
El nivel de ejecución predeterminado se puede configurar en el
/etc/inittab
.
A diferencia de otras distribuciones, Debian deja la administración de los
niveles de ejecución bajo la completa responsabilidad del administrador de
sistemas. La administración de init
en un sistema System-V es
llevada a cabo mediante los scripts update-rc.d
.
Arrancar /etc/init.d/nombre
en los niveles de
ejecución 1,2,3 y detenerlo en 4,5 con una prioridad igual a 20 (normal) se
puede realizar haciendo:
# update-rc.d nombre start 20 1 2 3 . stop 20 4 5 .
Si el script existe en init.d
, el enlace simbólico se puede
eliminar haciendo:
# update-rc.d -f nombre remove
Para editar los niveles de ejecución, hago trampa. Edito manualmente las
entradas usando el comando mv
en el indicador del mc
y copio los enlaces con Alt-Enter. Por ejemplo:
# mv S99xdm K99xdm # desactivo xdm (X display manager)
Incluso, como atajo rápido, desactivo un demonio escribiendo exit
0 al comienzo de un script del init.d
. Después de todo
son archivos de configuración.
La distribución Debian toma muy en serio la seguridad del sistema y espera que el administrador del sistema sea competente. Por lo tanto, la facilidad de uso a menudo se relega al segundo plano y determinados servicios brindados por los demonios vienen con el nivel de seguridad más alto y pocos servicios (o ninguno) estan disponibles en su estado de instalación predeterminado.
Ejecute ps aux o consulte el contenido de
/etc/init.d/*
y /etc/inetd.conf
, si posee alguna duda
(sobre Exim, DHCP, ...). También consulte el /etc/hosts.deny
al
igual que la sección Control de acceso mediante PAM y
login, Sección 9.2.1. Asimismo resulta útil el comando
pidof
(véase pidof(8)
).
En versiones recientes de Debian X11 no permite, por defecto, conexiones TCP/IP
(remotas). VéaseConexión TCP/IP en X, Sección 9.4.6.
El redireccionamiento de X también se encuentra deshabilitado en SSH. Véase
Conexión X remota: ssh
, Sección 9.4.8.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Debian tiene su propio método de recompilar el kernel y sus módulos asociados. Véase también Debian y el kernel, Sección 2.7.
La utilización de gcc
, binutils
y
modutils
de la rama unstable de Debian puede resultar
de ayuda al compilar el kernel de linux más reciente. Véase
file:///usr/share/doc/kernel-package/README.gz
de la información
oficial (en especial la parte inferior de ésta)
Puesto que es un tema dinámico, la compilación del kernel es un asunto difícil que puede confundir incluso a los desarrolladores más admirados:
--initrd requiere de un parche cramfs de Debian.
No, no es así. Para usar un sistema de archivos diferente al CRAMFS hay que
configurar MKIMAGE en el /etc/mkinitrd/mkinitrd.conf
.
Sea cuidadoso y consulte siempre el
file:///usr/share/doc/kernel-package/README.gz
de Manoj y Kent.
Asegúrese de obtener la última versión inestable del paquete
kernel-package
si va a compilar la versión más reciente del
kernel.
initrd no es necesario para un kernel compilado para una única
máquina. Lo uso porque deseo que mi kernel sea casi el mismo que el
proporcionado por los paquetes kernel-image. Si utiliza initrd,
asegúrese de leer mkinitrd(8)
y mkinitrd.conf(5)
.
Véase también http://bugs.debian.org/149236
.
Preste atención a los informes de fallos de los paquetes
kernel-package
, gcc
, binutils
y
modutils
. Si es necesario utilice las versiones más recientes.
Compilar en un sistema Debian un kernel personalizado a partir de los fuentes
exige de un cuidado especial. Utilice la nueva opción
--append_to_version de make-kpkg
para crear
múltiples imágenes del kernel.
# apt-get install debhelper modutils kernel-package libncurses5-dev # apt-get install kernel-source-2.4.18 # utilice la versión más reciente # vi /etc/kernel-pkg.conf # escriba su nombre y dirección # electrónica $ cd /usr/src # cree el directorio $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2 $ cd kernel-source-2.4.18 # si este es el código fuente de su # kernel $ rm -rf */pcmcia # [OPCIONAL] si uno desea usar los módulos de pcmcia-cs $ cp /boot/config-2.4.18-386 .config # tomar configuración actual como predeterminada $ make menuconfig # personalizar a gusto $ make-kpkg clean # indispensable (consultar: man make-kpkg) $ fakeroot make-kpkg --append_to_version -486 --initrd \ --revision=rev.01 kernel_image \ modules_image # modules_image para pcmcia-cs* etc. $ cd .. # dpkg -i kernel-image*.deb pcmcia-cs*.deb # instalar
En realidad, make-kpkg kernel_image ejecuta make oldconfig y make dep. No utilice --initrd si no va a usar initrd.
Se puede evitar hacer rm -fr */pcmcia seleccionado "General setup —>" en "PCMCIA/CardBus support —>" en make menuconfig y tomar como configuración "< > PCMCIA/CardBus support" (es decir, destildando la casilla de verificación).
En una máquina SMP, configure CONCURRENCY_LEVEL de acuerdo con el
kernel-pkg.conf(5)
.
Obtenga los fuentes nuevos de:
Linux: http://www.kernel.org/
pcmcia-cs: http://pcmcia-cs.sourceforge.net/
o utilice los fuentes de Debian equivalentes y haga lo siguiente:
# cd /usr/src # tar xfvz linux-loquesea.tar.gz # rm -rf linux # ln -s linux-loquesea linux # tar xfvz pcmcia-cs-loquesea.tar.gz # ln -s pcmcia-cs-loquesea pcmcia # cd linux # rm -rf */pcmcia # [OPCIONAL] si desea usar los módulos de pcmcia-cs # make menuconfig ... lo relativo a la configuración ... # make dep # make bzImage ... edite lilo / grub ... ... mueva /usr/src/linux/arch/i386/boot/bzImage al directorio boot ... ... /sbin/lilo o lo que corresponda si usa grub # make modules; make modules_install # cd ../pcmcia # make config # make all # make install ... añada los nombres de los módulos que se necesitan al /etc/modules # shutdown -r now ... arranque con el nuevo kernel ...
La mayoría de los programas "normales" no necesitan las cabeceras
del núcleo y de hecho pueden corromperse si se las usa directamente; en
cambio, deben compilarse usando las cabeceras con las que fueron creadas las
glibc
que en un sistema Debian se encuentran en
los directorios /usr/include/linux
y
/usr/include/asm
.
Por lo tanto no cree enlaces simbólicos al directorio
/usr/src/linux
desde /usr/include/linux
y
/usr/include/asm
, como lo sugieren algunos documentos
desactualizados.
Si necesita las cabeceras del un kernel en particular para
algunas aplicaciones específicas que así lo requieran, altere el/los
makefile(s) de modo de incluir las rutas correspondientes
dir-de-las-cabeceras-de-un-kernel-en-particular/include/linux
y
dir-de-las-cabeceras-de-un-kernel-en-particular/include/asm
.
Los nuevos núcleos 2.4 de Debian proporcionados por el paquete
kernel-image-2.4.NN
están muy modularizados. Debe
asegurarse que los módulos estén activados para hacer que el kernel funcione
como se pretende.
Si bien hay numerosos ejemplos de /etc/modules
en la siguiente
sección, me han dicho que la manera adecuada de corregir los problemas
relacionados con los módulos consiste en crear un alias para el dispositivo en
un archivo situado en /etc/modutils/
ya que en los núcleos
actuales hay suficientes alias disponibles. Algunos módulos se pueden activar
automáticamente por los programas de detección automática de hardware tal
como discover
. Véase también Paquetes de
detección de hardware para el servidor X, Sección 9.4.2.
Véase Cuidados especiales para tratar con módulos,
Sección 2.7.3 y Documentation/*.txt
en los fuentes de Linux
para una información detallada.
/etc/modules
necesita incluir lo siguiente para que funcione
algunas PCMCIA antiguas:
# controlador PnP ISA isa-pnp # Nuevo controlador PCMCIA de bajo nivel # yenta_socket # en mi caso no parece ser necesario
Del resto se encarga los scripts PCMCIA (del paquete pcmcia-cs
),
depmod
y kmod
. Creo que necesité de
isa-pnp
ya que mi portátil es una antigua ISA-PCMCIA. Las
portátiles actuales con CardBus/PCMCIA no necesitan de él.
Según las palabras del genio Miquel van Smoorenburg miquels@cistron.nl
:
"Simplemente eliminé todo lo referente a pcmcia de la PC portátil de mi
trabajo, incluyendo cardmgr, e instalé el kernel 2.4 con soporte cardbus y el
nuevo paquetee hotplug
de woody.
Mientras posea únicamente tarjetas de 32 bits, no necesitará el paquete pcmia; 2.4 incluye servicios incorporados para tarjetas. El controlador estándar tulip debería funcionar correctamente con su tarjeta dlink.
—Mike."
Véase Linux PCMCIA
HOWTO
y Configuración de la red y
PCMCIA, Sección 10.9.5.
[SIN PROBAR] /etc/modules
necesita incluir lo siguiente para que
funcione SCSI:
# núcleo SCSI scsi_mod # controlador SCSI genérico sg # disco SCSI sd_mod # Todos los módulos necesario para el hardware ...
depmod
puede encargarse de algunos de los módulos anteriores.
/etc/modules
debe incluir lo siguiente para funciones de red
adicionales:
# net/ipv-4 ip_gre ipip # net/ipv-4/netfilter # iptable (en orden) ip_tables ip_conntrack ip_conntrack_ftp iptable_nat iptable_filter iptable_mangle # ip_nat_ftp ip_queue # ipt_LOG ipt_MARK ipt_MASQUERADE ipt_MIRROR ipt_REDIRECT ipt_REJECT ipt_TCPMSS ipt_TOS ipt_limit ipt_mac ipt_mark ipt_multiport ipt_owner ipt_state ipt_tcpmss ipt_tos ipt_unclean # #ipchains #ipfwadm
Lo anterior puede no estar optimizado. depmod
puede encargarse de
algunos de los módulos anteriores.
Para activar el sistema de archivos transaccional EXT3 usando el paquete precompilado kernel-image ( > 2.4.17) de Debian hay que seguir los siguientes pasos:
# cd /etc; mv fstab fstab.antiguo # sed 's/ext2/ext3,ext2/g' <fstab.antiguo >fstab # vi /etc/fstab ... fijar el sistema de archivos raíz en "auto" en vez de "ext3,ext2" # cd /etc/mkinitrd # echo jbd >>modules # echo ext3 >>modules # echo ext2 >>modules # cd / # apt-get update; apt-get install kernel-image-2.4.17-686-smp ... instale el último kernel y configure el arranque (en este caso se ejecuta lilo) # tune2fs -j -i 0 /dev/hda1 # tune2fs -j -i 0 /dev/hda2 ... Para todos los sistemas de archivos EXT2 convertidos en EXT3 # shutdown -r now
El sistema transaccional EXT3 se encuentra ahora habilitado. Una entrada
"type" ext3,ext2 en el fstab
permite una
migración segura a EXT2 si el núcleo no soporta EXT3 para particiones
diferentes a la partición raíz.
Si ya tiene instalado un kernel 2.4 y no desea reinstalarlo, realice los pasos
anteriores a los comandos apt-get
, y a continuación:
# mkinitrd -o /boot/initrd.img-2.4.17-686-smp /lib/modules/2.4.17-686-smp # lilo # tune2fs -j -i 0 /dev/hda1 # tune2fs -j -i 0 /dev/hda2 ... para todos los sistemas de archivos EXT2 convertidos a EXT3 # shutdown -r now
El sistema transaccional EXT3 se encuentra ahora habilitado.
Si /etc/mkinitrd/modules
no ha sido configurado cuando
mkinitrd
fue ejecutado y le gustaría añadir algunos módulos en
tiempo de arranque:
... en el indicador de initrd pulse ENTER (5 seg.) para acceder al intérprete de comandos # insmod jbd # insmod ext3 # modprobe ext3 puede hacerse cargo de todo # insmod ext2 # ^D ... continua el arranque
En los mensajes del arranque del sistema (dmesg
), puede aparecer
la frase "cramfs: wrong magic" que no acarrea ninguna consecuencia.
Este problema se ha resuelto en Sarge (2002/10). Véase http://bugs.debian.org/135537
y
el EXT3
File System mini-HOWTO
o
file:///usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz
para más información.
Se ha informado sobre graves cuelgues del kernel al activar EXT3 pero no he tenido ningún problema (con el 2.4.17).
Por alguna razón, el módulo que soporta RTL-8139 ya no se llama rtl8139 sino
8139too. Simplemente edite su /etc/modules
para reflejar este
cambio al pasar del kernel 2.2 al 2.4.
En el kernel-image-2.4.*
, el soporte del puerto paralelo es
proporcionado mediante un módulo. Actívelo haciendo:
# modprobe lp # echo lp >> /etc/modules
Véase Documentation/parport.txt
del código fuente de Linux.
El comportamiento del kernel de Linux se puede modificar al vuelo usando el sistema de archivos proc.
Para información básica para modificar los parámetros del kernel a través
del sistema de archivos /proc
, consulte
Documentation/sysctl/*
de los fuentes del kernel.
Véase algunos ejemplos de manipulación de los parámetros del kernel en
/etc/init.d/networking
y Problemas extraños
al acceder a ciertos sitios de Internet, Sección 3.7.5.
Véase sysctl.conf(5)
para saber cómo configurar el tiempo de
arranque en la configuración del kernel mediante el sistema de archivos
/proc
con el script /etc/init.d/procps.sh
que
generalmente se ejecuta desde /etc/rcS.d/S30procps.sh
.
El kernel de Linux puede quejarse diciendo "Too many open files" ("Demasiado archivos abiertos"). Esto es debido al pequeño valor predeterminado (8096) de file-max. Para solucionar este problema, ejecute el siguiente comando como superusuario:
# echo "65536" > /proc/sys/fs/file-max # para los núcleos 2.2 y 2.4 # echo "131072" > /proc/sys/fs/inode-max # únicamente para el núcleo 2.2
o escriba lo siguiente en el /etc/sysctl.conf
para que el cambio
sea permanente:
file-max=65536 # para los núcleos 2.2 y 2.4 inode-max=131072 # únicamente para el núcleo 2.2
Puede modificar los intervalos de vaciado de disco mediante el sistema de archivos proc. Lo siguiente disminuirá el intervalo predeterminado de cinco segundos a un segundo.
# echo "40 0 0 0 100 30000 60 0 0" > /proc/sys/vm/bdflush
Esto puede influir negativamente en el rendimiento de la E/S del archivo. Pero asegura los contenidos del mismo salvo durante el último segundo que es inferior a los 5 segundos predeterminados. Esto es así incluso para el sistema de archivos transaccional.
Para algunos sistemas antiguos con memoria extremadamente lenta, puede resultar útil activar la siguiente opción usando el sistema de archivos proc:
# echo 1 > /proc/sys/vm/overcommit_memory
udev es un reemplazo dinámico para /dev/
. Los nombres de los
dispositivos se pueden elegir bien cortos. El devfs utilizado por el núcleo
2.4 actualmente se encuentra obsoleto.
Si se instala el kernel 2.6 de Debian
kernel-image-2.6.NN
con el paquete udev
,
este último quedará activado.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Véase el BootPrompt-HOWTO
para información detallada sobre el indicador de arranque.
Es posible arrancar el sistema y acceder a la cuenta de superusuario sin
conocer la contraseña siempre y cuando se tenga acceso al teclado de la
consola (esto supone que ni la BIOS ni un cargador de arranque como
lilo
solicitan una contraseña para evitar el arranque del
sistema)
Este es un procedimiento que no requiere de discos de arranque externos ni cambios en los parámetros de arranque de la BIOS. Aquí, "Linux" hace referencia al kernel de Linux de la instalación predeterminada de Debian.
En el pantalla de arranque de lilo
, cuando aparece
boot: (en algunos sistemas debe presionar la tecla Mayús para
evitar el arranque automático y cuando lilo
utiliza el
framebuffer tiene que pulsar TAB para ver las opciones), escriba:
boot: Linux init=/bin/sh
Esto hará que el sistema arranque el kernel y ejecute el /bin/sh
en vez del estándar init
. Ahora tenemos privilegios de
superusuario y acceso al intérprete de comandos. Puesto que /
generalmente está montado en modo sólo lectura y aún no han sido montadas
las distintas particiones, debe hacer lo siguiente para tener un sistema que
funcione razonablemente.
init-2.03# mount -n -t remount,rw / init-2.03# mount -avt nonfs,noproc,nosmbfs init-2.03# cd /etc init-2.03# vi passwd init-2.03# vi shadow
(si el segundo campo de datos en el /etc/passwd
es una
"x" para cada nombre de usuario, su sistema utiliza contraseñas
ocultas y debe editar el archivo /etc/shadow
) Para desactivar la
contraseña de root, edite el segundo campo de datos en el archivo de
contraseñas de modo que quede vacío. Ahora se puede reiniciar el sistema y
entrar como root sin contraseña. A diferencia de algunas distribuciones Linux
antiguas, la Debian actual (Potato) requiere de contraseña sólo cuando
arranca en el nivel de ejecución 1.
Resulta una buena idea tener un editor mínimo en /bin
en el caso
que /usr
no sea accesible (véase Editores
de rescate, Sección 11.2).
También considere instalar el paquete sash
. Cuando no pueda
arrancar el sistema, haga:
boot: Linux init=/bin/sash
sash
sirve como un sustituto interactivo de sh
incluso cuando /bin/sh
no se puede usar. Está enlazado
estáticamente e incluye diversas utilidades estándar incorporadas (teclee
"help" en el indicador de comandos para una lista de referencia).
Arranque desde un disco de emergencia. Si /dev/hda3
es la
partición raíz original, lo siguiente le permitirá editar el archivo de
contraseñas tan fácilmente como antes.
# mkdir fixit # mount /dev/hda3 fixit # cd fixit/etc # vi shadow # vi passwd
La ventaja de este enfoque sobre el anterior es que no se necesita conocer la
contraseña de lilo
(si existe). Pero para usarlo uno debe ser
capaz de poder acceder a la configuración de la BIOS para permitir arrancar el
sistema desde un disquete o CD si es que ya no está configurada como tal.
Si se tomó la molestia de crear un disco de arranque durante la instalación,
no habrá ningún problema. Si lilo
se encuentra dañado, grabe
el disco de arranque desde el disco de instalación de debian y arranque el
sistema con él. En el indicador de arranque, suponiendo que la partición
raíz de su instalación Linux es /dev/hda12
y que
desea entrar al nivel de ejecución 3, escriba:
boot: rescue root=/dev/hda12 3
De esta manera arrancará con un sistema prácticamente funcional usando el kernel del disquete (pueden existir pequeños inconvenientes debido a la falta de algunas características o módulos del kernel).
Véase también Instalar un paquete en un sistema que no arranca, Sección 6.3.6 si su sistema está dañado.
Si necesita un disquete de arranque personalizado, consulte el
readme.txt
del disco de rescate.
Chasing unstable/sid is fun, but buggy xdm
,
gdm
, kdm
, and wdm
started during the
boot process can bite you bad.
Primero acceda al shell del superusuario escribiendo lo siguiente en el indicador de arranque:
boot: Linux vga=normal s
En este caso, Linux es la etiqueta de la imagen del kernel que está
arrancando. "vga=normal" nos asegurará que lilo
se
ejecute en una pantalla VGA normal y "s" (o "S") es el
parámetro que se pasa a init
para invocar el modo monousuario.
Escriba la contraseña del superusuario en el símbolo de espera.
Existen distintas maneras de desactivar todos los demonios que arrancan con X:
ejecute update-rc.d ?dm stop 99 1 2 3 4 5 6 .
escriba "exit 0" al comienzo de todos los archivos
/etc/init.d/?dm
.
renombre todos los archivos
/etc/rc2.d/S99?dm
como
/etc/rc2.d/K99?dm
.
elimine todos los archivos
/etc/rc2.d/S99?dm
.
ejecute :>/etc/X11/default-display-manager
Aquí, el número en rc2.d
se debe corresponder al
nivel de ejecución especificado en el /etc/inittab
. Asimismo
?dm
significa que necesita ejecutar el comando
múltiples veces sustituyéndolo con xdm
, gdm
,
kdm
o wdm
.
La primera de la lista es "la única manera verdadera" en Debian. La
última es fácil pero sólo funciona en Debian y exige que que se configure el
administrador de pantalla nuevamente usando dpkg-reconfigure
. Los
otros son métodos genéricos para deshabilitar demonios.
Aún puede continuar arrancando X mediante el comando startx
desde
cualquier consola de shell.
El sistema se puede arrancar en un nivel de ejecución particular y con una
configuración determinada usando el indicador de arranque de
lilo
. Para más detalles consulte el BootPrompt-HOWTO
(LDP).
Si desea arrancar el sistema en el nivel de ejecución cuatro, use la siguiente
entrada para el indicador de arranque de lilo
.
boot: Linux 4
Si desea arrancar el sistema en modo monousuario y conoce la contraseña de
superusuario, algunos de los siguientes ejemplos funcionará usando el
indicador de arranque de lilo
.
boot: Linux S boot: Linux 1 boot: Linux -s
Si desea arrancar el sistema con menos memoria de la que realmente posee el
sistema (por ejemplo, 48MB en un sistema con 64MB), use la siguiente entrada
para el indicador de arranque de lilo
:
boot: Linux mem=48M
Asegúrese de no especificar un valor mayor al tamaño de memoria real ya que
si es así el kernel se colgará. Los núcleos antiguos y/o las placas madres
con una BIOS antigua no usan la memoria por encima de los 64 MB, salvo que uno
escriba mem=128M en el indicador de arranque o incluya una línea
similar en el /etc/lilo.conf
.
GRUB es un nuevo administrador de arranque del projecto Hurd y es mucho más flexible que lilo pero con un manejo ligeramente diferente de los parámetros de arranque.
grub> find /vmlinuz grub> root (hd0,0) grub> kernel /vmlinuz root=/dev/hda1 grub> initrd /initrd grub> boot
Aquí, debe tener presente los nombres de dispositivos que utiliza Hurd:
Hurd/GRUB Linux MSDOS/Windows (fd0) /dev/fd0 A: (hd0,0) /dev/hda1 C: (generalmente) (hd0,3) /dev/hda4 F: (generalmente) (hd1,3) /dev/hdb4 ?
Véase file:///usr/share/doc/grub/README.Debian.gz
y
file:///usr/share/doc/grub-doc/html/
para más detalles.
La administración del sistema implica tareas mucho más elaboradas en un entorno Unix que un entorno común de una computadora personal. Asegúrese de saber lo básico sobre configuración por si acaso necesita recuperar el sistema de algún problema. Las herramientas gráficas de configuración basadas en X11 son agradables y convenientes pero a menudo inapropiadas en situaciones de emergencia.
En este contexto, el registro de las actividades del intérprete de comandos resulta ser una buena práctica especialmente como superusuario.
Emacs: utilice M-x shell para empezar a grabar en el búfer y C-x C-w para escribir el contenido del mismo en un archivo.
Intérprete de comandos: utilice el comando screen
con "^A
H" como se detalla en Intercambiando consolas con
screen
, Sección 8.6.28 o el comando script
.
$ script Script started, file is typescript ... hacer cualquier cosa ... Ctrl-D $ col -bx <typescript >savefile $ vi savefile
Se puede utilizar lo siguiente en vez del comando script
:
$ bash -i 2>&1 | tee typescript
Si necesita registrar la imagen de una aplicación X, incluyendo una terminal
xterm
, utilice gimp
(GUI). Puede capturar cada
ventana o la totalidad de la pantalla. Otras alternativas son xwd
(xbase-clients
), import
(imagemagick
) y
scrot
(scrot
).
Si necesita reordenar la estructura de archivos, mueva el contenido incluyendo los enlaces a archivos mediante:
Método estándar: # cp -a /directorio/fuente /directorio/destino # debe ser GNU # (cd /directorio/fuente && tar cf - . ) | \ (cd /directorio/destino && tar xvfp - ) Si existen enlaces duros, se necesita un método más elaborado: # cd /ruta/al/directorio/original # find . -depth -print0 | afio -p -xv -0a # /punto/de/montaje/del/nuevo/directorio En el caso de una conexión remota: # (cd /directorio/fuente && tar cf - . ) | \ ssh usuario@host.dom (cd /directorio/destino && tar xvfp - ) Si no hay archivos enlazados: # scp -pr usuario1@host1.dom:/directorio fuente \ usuario2@host2.dom:/directorio/destino
En este caso, scp
<==> rcp
y ssh
<==> rsh
.
El método para copiar un subdirectorio entero está basado en la información
proporcionada por Manoj Srivastava srivasta@debian.org
de la lista
debian-user@lists.debian.org.
cp
Inicialmente, cp
no resultaba ser el candidato correcto ya que no
desreferenciaba enlaces simbólicos ni tampoco preservaba enlaces duros. Otra
cosa a considerar eran los archivos de tamaño muy pequeño.
GNU cp
ha superado estas limitaciones. No obstante en sistemas
que no son GNU cp puede aún tener problemas. Asimismo, no se pueden generar
archivos portables pequeños usando cp
.
% cp -a . directorio_nuevo
tar
Tar soluciona algunos de los problemas que tenía cp con los enlaces simbólicos. Sin embargo, `cpio' maneja archivos especiales que el `tar' tradicional no puede manejar.
tar
maneja múltiples enlaces duros colocando una única copia de
un enlace en la cinta. El nombre asignado a dicha copia es el único
que se puede usar para recuperar el archivo. En cambio, cpio
coloca una copia de cada enlace de manera que para recuperar el archivo se
puede utilizar el nombre de cualquiera de ellas.
El comando tar
ha cambiado sus opciones para los archivos
.bz2
al pasar de Potato a Woody, por lo tanto, use
--bzip2 en los scripts en vez de su forma reducida -I
(Potato) o -j (Woody).
pax
Es la nueva utilidad para archivar, portable y compatible POSIX (IEEE Std
1003.2-1992, páginas 380-388 (sección 4.48) y páginas 936-940 (sección
E.4.48)). pax
lee, escribe y lista los componentes de un
directorio y copia la jerarquía de los mismos. La operación pax es
independiente del formato específico del archivo y admite una amplia variedad
de formatos.
Las implementaciones de pax
son aún nuevas y están en pleno
desarrollo.
# apt-get install pax $ pax -rw -p e . directorio_nuevo o $ find . -depth | pax -rw -p e directorio_nuevo
cpio
cpio
almacena o extrae archivos en o de un archivo
tar
o cpio
. El archivo puede ser otro archivo del
disco, una cinta magnética o una tubería.
$ find . -depth -print0 | cpio --null --sparse -pvd new-dir
afio
afio
es una mejor forma de tratar con archivos con formato cpio.
Generalmente es más rápido que cpio
, proporciona más opciones
para utilizar con cintas magnéticas y maneja mejor la corrupción de los datos
de entrada. Admite archivos multi-volumen durante su operación interactiva.
Afio puede crear archivos empaquetados que son mucho más seguros que los
empaquetados con tar
o cpio
. En un script, para
realizar una copia de seguridad, afio tiene un comportamiento óptimo como
'motor para archivar'.
$ find . -depth -print0 | afio -px -0a directorio_nuevo
Para crear todas mis copias de respaldo en una cinta uso afio
.
Los respaldos diferenciales y la sincronización de datos se pueden implementar mediante diversos métodos:
rcs
: copia de respaldo e historial, sólo texto
rdiff-backup
: copia de respaldo e historial. Se respetan enlaces
simbólicos.
pdumpfs
: copia de respaldo e historial en un sistema de archivos.
Se respetan los enlaces simbólicos.
rsync
: sincronización en un sólo sentido
unison
: sincronización en ambos sentidos
cvs
: sincronización en múltiples sentidos con un servidor e
historial, sólo texto, maduro. Véase Sistema de versiones
concurrentes (CVS), Sección 12.1.
arch
: sincronización en múltiples sentidos con un servidor,
copias de respaldo e historial, sin "directorio de trabajo".
subversion
: sincronización en múltiples sentidos con un
servidor, copias de respaldo e historial, Apache.
La combinación con uno de los métodos descriptos en Copiar y archivar un subdirectorio entero, Sección 8.3
y la automatización de tareas descripta en Planificar una
actividad (cron
, at
), Sección 8.6.27 permitirán
crear un buen sistema de respaldo.
Explicaré tres herramientas fáciles de usar.
rdiff-backup
ofrece respaldos buenos y sencillos con historial
diferencial para cualquier tipo de archivos incluyendo enlaces simbólicos.
Para hacer una copia de respaldo de la mayor parte de ~/
en
/mnt/respaldo
:
$ rdiff-backup --include ~/tmp/conservar --exclude ~/tmp ~/ /mnt/respaldo
Para restaurar los datos de hace tres días de este archivo en
~/antiguo
:
$ rdiff-backup -r 3D /mnt/respaldo ~/antiguo
Véase rdiff-backup(1)
.
pdumpfs
pdumpfs
es un sencillo sistema para realizar copias de respaldo
diarias similar al dumpfs
de Plan9 que preserva cada réplica
diaria del sistema. Es posible acceder en cualquier momento a réplicas
antiguas para obtener un archivo de un día determinado. ¡ Hagamos una copia
de respaldo de nuestro directorio personal con pdumpfs
y
cron
!
pdumpfs
crea la réplica AAAA/MM/DD en el directorio
de destino. Todos los archivos originales se copian al directorio réplica
cuando pdumpfs
se ejecuta por primera vez. A partir de la segunda
vez y en adelante, pdumpfs
copia sólamente archivos nuevos o
actualizados y almacena los archivos sin modificar como enlaces duros a los
archivos de la réplica del día previo para ahorrar espacio en disco.
$ pdumpfs dir-orig dir-dest [dest-basename]
Véase pdumpfs(8)
.
Changetrack
registrará en forma regular los cambios de los
archivos de configuración en archivos RCS. Véase
changetrack(1)
.
# apt-get install changetrack # vi changetrack.conf
Ejecute top
para ver cuál es el proceso que está actuando de
manera extraña. Pulse `P' para ordenar por tiempo de CPU, `M' para ordenar
por uso de memoria y "k" para matar un proceso. En forma aternativa,
se puede usar el estilo BSD ps aux | less o el System V ps
-efH | less. La sintaxis del estilo System V muestra los ID de los
procesos padres (PPID) que se pueden utilizar para matar un
proceso hijo zombie (malfuncionamiento).
Utilice kill
junto el ID del proceso para matar (o enviar una
señal a) un proceso, killall
para hacer lo mismo pero usando el
nombre del comando. Señales de uso habitual:
1: HUP, reiniciar demonio 15: TERM, terminar un proceso en forma normal 9: KILL, matar un proceso sin contemplaciones
La opción de compilación del kernel "Magic SysRq key" proporciona una protección contra el mal funcionamiento del sistema. Pulsando Alt-SysRq en una i386 y a continuación una de las teclas r 0 k e i s u b se obtiene el pase mágico.
Unraw restaura el teclado tras el cuelgue de X. Modifique el
nivel de registro de la consola con 0 para reducir los mensajes de
error. sak (tecla de atención del sistema) mata a todos los
procesos en la consola virtual actual. tErminate mata a todos los
procesos de la terminal actual salvo init
. kill mata
a todos los procesos incluyendo a init
.
sync (sincronizar), umount (desmontar), y reboot (reiniciar) a menudo se utilizan en el caso de situaciones realmente complicadas.
Se puede encontrar información detallada en:
/usr/share/doc/kernel-doc-version/Documentation/sysrq.txt.gz
.
less
es el paginador predeterminado (navegador del contenido de un
archivo). Pulse `h' para obtener ayuda. Puede hacer muchas más cosas que
more
. less
puede cargarse ejecutanto eval
$(lesspipe) or eval $(lessfile) en el script de arranque
del intérprete de comandos. Véase más en
file:///usr/share/doc/less/LESSOPEN
. La opción -R
permite la salida de caractéres raw y activa las secuencias de escape en color
ANSI. Véase less(1)
.
w3m
puede ser un paginador alternativo útil para algunos sistemas
de código (EUC).
free
y top
brindan una buena información sobre los
recursos de memoria disponibles. No se preocupe por el tamaño que figura bajo
"used" de la línea "Mem:" sino por el valor que se
encuentra justo debajo de él (38792 en el siguiente ejemplo).
$ free -k # para una máquina con 256MB total used free shared buffers cached Mem: 257136 230456 26680 45736 116136 75528 -/+ buffers/cache: 38792 218344 Swap: 264996 0 264996
La cantidad de memoria física exacta se puede confirmar haciendo grep '^Memory' /var/log/dmesg. En este caso arroja el siguiente resultado: "Memory: 256984k/262144k available (1652k kernel code, 412k reserved, 2944k data, 152k init)".
Total = 262144k = 256M (1k=1024, 1M=1024k) Free to dmesg = 256984k = Total - kernel - reserved - data - init Free to shell = 257136k = Total - kernel - reserved - data
El sistema no puede usar cerca de 5MB ya que lo utiliza el propio kernel.
# date MMDDhhmmCCYY # hwclock --utc --systohc # hwclock --show
Esto fijará la fecha y hora del sistema y del hardware en MM/DD hh:mm, CCYY. La hora se muestra según el huso horario local pero el hardware utiliza el UTC.
Si el tiempo por hardware (BIOS) se encuentra en GMT, incluya
UTC=yes en /etc/default/rcS
.
Referencia: Managing
Accurate Date and Time HOWTO
.
Configure el reloj del sistema para corregir la fecha y hora en forma automática mediante un servidor remoto:
# ntpdate server
Si su sistema posee una conexión a Internet permanente, resulta interesante
incluirlo en /etc/cron.daily/
.
Use el paquete chrony
.
Para descativar el protector de pantalla, utilice los siguientes comandos:
En la consola de Linux:
# setterm -powersave off
Ejecute la consola kon2 (kanji) con:
# kon -SaveTime 0
Cuando esté ejecutando X:
# xset s off o # xset -dpms o # xscreensaver-command -prefs
Consulte las correspondientes páginas del manual para controlar otras
características de la consola. Véase también stty(1)
for
changing and printing
Glibc ofrece getent(1)
para buscar entradas en la base de datos
administrativa (passwd, group, hosts, services, protocols o networks).
getent database [clave ...]
Uno siempre puede desenchufar el parlante del PC ;-). Para el intérprete de comandos:
echo "set bell-style none">> ~/.inputrc:
Para hacer desaparecer los mensajes de error por pantalla, el primer lugar a
verificar es /etc/init.d/klogd
. Fije KLOGD="-c
3" en este script y ejecute /etc/init.d/klogd
restart. Un método alternativo consiste en ejecutar dmesg
-n3.
Veamos el significado de los niveles de error:
0: KERN_EMERG, sistema inutilizado
1: KERN_ALERT, deben tomarse acciones de inmediato
2: KERN_CRIT, condiciones críticas
3: KERN_ERR, condiciones de error
4: KERN_WARNING, condiciones de precaución
5: KERN_NOTICE, condiciones normales pero significativas
6: KERN_INFO, mensajes informativos
7: KERN_DEBUG, mensajes a nivel depuración
Si un mensaje de error inútil lo molesta continuamente, considere crear un
parche para el kernel sencillo tal como shutup-abit-bp6
(disponible en el subdirectorio
de ejemplos
).
Otro lugar que hay que ver es el /etc/syslog.conf
; verifique si
los mensajes de error se envían a la consola.
En sistemas tipo UNIX se accede a las pantallas de la consola mediantes rutinas
de la biblioteca (n)curses. Éstas brindadn al usuario un método
independiente del terminal de actualizar las pantallas de caracteres con una
optimización razonable. Véase ncurses(3X)
y
terminfo(5)
.
En un sistema Debian, existe una infinidad de entradas predefinidas:
$ toe | less # todas las entradas $ toe /etc/terminfo/ | less # entradas reconfigurables por el usuario
Exporte su elección mediante la variable de entorno TERM.
Si la entrada terminfo para xterm
no funciona con una
xterm
no-Debian, cuando acceda a un sistema Debian en forma remota
cambie el tipo de su terminal de "xterm" a una de las versiones con
menos características como, por ejemplo, "xterm-r6". Véase
file:///usr/share/doc/libncurses5/FAQ
para más información.
Si la pantalla se enloquece después de hacer cat some-binary-file (quizás no pueda ver el comando que ingresa mientras escribe) haga:
$ reset
Convertir un archivo de texto en formato DOS (fin-de-línea=^M^J) en un archivo Unix (^J).
# apt-get install sysutils $ dos2unix dosfile
recode
Lo siguiente convertirá archivos de texto entre DOS, Mac y Unix:
$ recode /cl../cr <dos.txt >mac.txt $ recode /cr.. <mac.txt >unix.txt $ recode ../cl <unix.txt >dos.txt
recode
convierte archivos entre diversos conjuntos de caracteres y
caracteres de control:
$ recode conjcaract1/caracontrol1..conjcaract2/caracontrol2 \ <entrada.txt >salida.txt
[34] :
us — ASCII (7 bits)
l1 — ISO Latin-1 (ISO-8859-1, Europa Occidental, 8 bits)
EUCJP — EUC-JP para Japonés (Unix)
SJIS — Shift-JIS para Japonés (Microsoft)
ISO2022JP — Codificación del correo para Japonés (7 bits)
u2 — UCS-2 (Conjunto de caracteres universal, 2 bytes)
u8 — UTF-8 (Formato de transformación universal, 8 bits)
Los caracteres de control más utilizados son [35] :
/cr — Retorno de carro como fin de línea (texto Mac)
/cl — Retorno de carro y avance de línea como fin de línea (texto DOS)
/ — Avance de línea como fin de línea (texto Unix)
/d1 — Volcado decimal
/x1 — Volcado hexadecimal
/64 — Texto codificado en Base64
/QP — Texto entrecomillado
Para más información, consulte la descripción correspondiente haciendo info recode.
Existe también herramientas de conversión más especializadas:
conversión de conjunto de caracteres:
iconv
— conversiones de codificaciones locale
konwert
— conversiones de codificaciones elaboradas
conversión de archivos binarios:
uuencode
y uudecode
— para Unix.
mimencode
— para el correo.
Para reemplazar todas las instancias FROM_REGEX por TO_TEXT en todos los archivos FILES ...:
$ perl -i -p -e 's/FROM_REGEX/TO_TEXT/g;' FILES ....
-i es para "editar en el lugar", -p significa "bucle implícito sobre los archivos FILES ...". Si la sustitución es compleja, la recuperación ante posibles errores resulta más fácil usando el parámetro -i.bak en vez de -i. De esta manera se conservará una copia de los archivos originales a los que se les agregará la extensión .bak.
El siguiente script eliminará las líneas de la 5 a la 10 y desde la 16 a la 20.
#!/bin/bash ed $1 <<EOF 16,20d 5,10d w q EOF
Aquí, los comandos ed
son los mismos que los del modo comando de
vi
. La edición de archivos de esta manera facilita la creación
de scripts.
Siguiendo uno de los siguientes procedimientos se extraerán las diferencias entre dos archivos fuente y se crearán los archivos unificados diff archivo.parche0 o archivo.parche1 según la ubicación del archivo:
$ diff -u archivo.original archivo.nuevo1 > archivo.parche0 $ diff -u archivo/original archivo/nuevo1 > archivo.parche1
El archivo diff (llamado también parche) se utiliza para enviar actualizaciones de programas. La parte recibida aplicará esta actualización a otro archivo mediante:
$ patch -p0 archivo < archivo.parche0 $ patch -p1 archivo < archivo.parche1
Si tiene tres versiones del código fuente, puede combinarlos efectivamente
usando diff3
:
$ diff3 -m archivo.mío archivo.original archivo.tuyo > archivo
$ split -b 650m archivo # dividir el archivo en partes de 650 MB $ cat x* >archivo_grande # unir los archivos en un archivo grande
Consideremos un archivo de texto llamado DPL
en donde todos los
nombres de los líderes del proyecto Debian y el día de su asunción están
listados separados entre sí mediante espacios.
Ian Murdock Agosto 1993 Bruce Perens Abril 1996 Ian Jackson Enero 1998 Wichert Akkerman Enero 1999 Ben Collins Abril 2001 Bdale Garbee Abril 2002 Martin Michlmayr Marzo 2003
A menudo, se utiliza Awk para extraer datos de este tipo de archivos.
$ awk '{ print $3 }' <DPL # mes de asunción August April January January April April March $ awk '($1=="Ian") { print }' <DPL # DPL llamado Ian Ian Murdock Agosto 1993 Ian Jackson Enero 1998 $ awk '($2=="Perens") { print $3,$4 }' <DPL # Cuando Perens asumió Abril 1996
Los intérpretes de comandos como el Bash pueden también utilizarse para analizar este tipo de archivo:
$ while read primero último mes año; do echo $mes done <DPL ... la misma salida que en el primer ejemplo Awk
En este caso, el comando incorporado read
utililiza las caracteres
de $IFS (separadores de campo internos, con sus siglas en inglés) para dividir
líneas en palabras.
Si cambian IFS a ":", puede analizar perfectamente el
/etc/passwd
con el shell:
$ originalIFS="$IFS" # guarda el valor original $ IFS=":" $ while read user password uid gid resto_de_la_línea; do if [ "$user" = "osamu" ]; then echo "el ID de $user es $uid" fi done < /etc/passwd El ID de osamu es 1001 $ IFS="$originalIFS" # devuelve valor anterior
(Si utiliza Awk para hacer lo mismo, utilice FS=":" para configurar el separador de campo)
IFS también es utilizado por el intérprete de comandos para dividir la espansión de parámetros, la sustitución de comandos y la expansión aritmética. Esto no sucede con palabras entre comillas simples o dobles. El valor predeterminado de IFS es <espacio>, <tab> y <nueva_línea> combinados.
Sea cuidadoso al usar estos trucos con el IFS del intérprete de comandos. Pueden ocurrir cosas extrañas cuando el shell interpreta parte de un script como si se fuese su entrada.
$ IFS=":," # utiliza ":" y "," como IFS $ echo IFS=$IFS, IFS="$IFS" # echo es un comando del Bash IFS= , IFS=:, $ date -R # simplemente la salida de un comando Sat, 23 Aug 2003 08:30:15 +0200 $ echo $(date -R) # subshell --> entrada al shell principal Sat 23 Aug 2003 08 30 36 +0200 $ unset IFS # volver al IFS predeterminado $ echo $(date -R) Sat, 23 Aug 2003 08:30:50 +0200
Los siguientes scripts realizan tareas útiles utilizando tuberías.
find /usr | egrep -v "/usr/var|/usr/tmp|/usr/local" # encontrar todos los archivos en /usr # excluyendo algunos archivos xargs -n 1 command # ejecutar comando para todos los ítems de la stdin xargs -n 1 echo| # escribir ítems separados por espacios en blanco # en renglones grep -e patrón| # extraer líneas con un determinado patrón cut -d: -f3 -| # extraer el tercer campo separado por : # (archivo passwd, etc.) awk '{ print $3 }' | # extraer el tercer campo separado por espacios en blanco awk -F'\t' '{ print $3 }' | # extaer el tercer campo separado por tabulaciones col -bx | # eliminar retrocesos y convertir tabulaciones en # espacios expand -| # transformar las tabulaciones sort -u| # ordenar y eliminar duplicados tr '\n' ' '| # concatenar líneas en una sola línea tr '\r' ''| # eliminar CR (retornos de carro) tr 'A-Z' 'a-z'| # convertir mayúsculas en minúsculas sed 's/^/# /'| # transformar cada línea en un comentario sed 's/\.ext//g'| # eliminar .ext sed -n -e 2p| # mostrar la segunda línea head -n 2 -| # mostrar las primeras 2 líneas tail -n 2 -| # mostrar las últimas 2 líneas
Las siguientes maneras de recorrer distintos archivos que coincidan con *.ext asegura un correcto manejo de nombres de archivos extraños -como los que incluyen espacios- y realizan la misma tarea:
Bucle del shell (esta es una entrada de múltiples líneas con PS2="> ") [36]:
for x in *.ext; do if test -f "$x"; then comando "$x" fi done
Combinación de find
y xargs
:
find . -type f -maxdepth 1 -name '*.ext' -print0 | \ xargs -0 -n 1 comando
find
con la opción -exec y un comando:
find . -type f -maxdepth 1 -name '*.ext' \ -exec comando '{}' \;
find
con la opción -exec y un script de shell breve:
find . -type f -maxdepth 1 -name '*.ext' \ -exec sh -c "comando '{}' && echo 'exitoso'" \;
Aunque todos los scripts en Awk se pueden reescribir automáticamente en Perl
usando a2p(1)
, los scripts Awk de una sola línea en Awk se
convierten mejor en scripts en perl de una línea en forma manual. Por ejemplo
awk '($2=="1957") { print $3 }' |
es equivalente a cualquiera de las siguientes líneas:
perl -ne '@f=split; if ($f[1] eq "1957") { print "$f[2]\n"}' | perl -ne 'if ((@f=split)[1] eq "1957") { print "$f[2]\n"}' | perl -ne '@f=split; print $f[2] if ( $f[1]==1957 )' | perl -lane 'print $F[2] if $F[1] eq "1957"' |
Se pueden eliminar todos los espacios en los argumentos de perl
de
la línea anterior y tomar ventaja de la conversión automática entre números
y cadena de caracteres que existe en Perl:
perl -lane 'print$F[2]if$F[1]eq+1957' |
Véase perlrun(1)
para las opciones de la línea de comandos.
Para más scripts delirantes en Perl, puede resultar interesante http://perlgolf.sourceforge.net
.
Lo siguiente leerá una página web como un archivo de texto. Resulta muy útil cuando se desea copiar configuraciones que se obtienen de la red.
$ lynx -dump http://www.remote-site.com/help-info.html >archivo_de_texto
Aquí también se pueden usar links
y w3m
, con
ligeras diferencias en el renderizado.
Si se trata de un archivo de una lista de correo, use munpack para obtener los contenidos mime del texto.
Lo siguiente imprimirá una página web en una impresora/archivo PostScript.
$ apt-get install html2ps $ html2ps URL | lpr
Véase lpr
/lpd
, Sección
3.6.1. También tenga en cuenta los paquetes a2ps
y
mpage
para crear archivos PostScript.
Lo siguiente imprimirá una página manual en una impresora/archivo PostScript.
$ man -Tps alguna-página-del-manual | lpr $ man -Tps alguna-página-del-manual | mpage -2 | lpr
Es posible combinar dos archivos PostScript o PDF.
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite \ -sOutputFile=bla.ps -f \ loquesea1.ps loquesea2.ps $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \ -sOutputFile=bla.pdf -f loquesea1.pdf\ loquesea2.pdf
Mostrar el tiempo empleado por un proceso.
# time algún-comando >/dev/null real 0m0.035s # tiempo de reloj (tiempo real transcurrido) user 0m0.000s # tiempo en modo usuario sys 0m0.020s # tiempo en modo kernel
nice
Use nice
(del paquete GNU shellutils
) para fijar el
valor "nice" de un comando al ejecutarlo. renice
(bsdutils
) y top
puede modificar el valor
"nice" de un proceso. El proceso más lento tiene el valor 19
(prioridad más baja); los valores negativos son "not-nice". El
valor -20 lo tiene el proceso más veloz (prioridad alta). Sólo el
superusuario puede fijar valores "nice" negativos.
# nice -19 top # muy lento # nice --20 cdrecord -v -eject speed=2 dev=0,0 disk.img # muy rápido
A veces un valor extremo de nice hace más daño que bien al sistema. Utilice este comando con cuidado.
cron
, at
)
Use cron
y at
para planificar tareas en Linux.
Véase at(1)
, crontab(5)
, crontab(8)
.
Ejecute el comando crontab -e para crear o editar el archivo crontab para configurar eventos planificados. Ejemplo de un archivo crontab:
# utilice /bin/sh para ejecutar los comandos sin importar lo que dice el # /etc/passwd SHELL=/bin/sh # envíe un mensaje a `pablo' sin importar a quien pertenece el crontab MAILTO=pablo # Minuto Hora Día_del_mes Mes Día_de_la_semana comando # ejecutar todos los días a las 00:05 5 0 * * * $HOME/bin/tarea.diaria >> $HOME/tmp/salida 2>&1 # ejecutar a las 14:15 el primer día de cada mes -- enviar salida a Pablo 15 14 1 * * $HOME/bin/mensual # ejecutar a las 22:00 todos los días hábiles (1-5), molestar a José. # % para nueva línea, el último % para cc: 0 22 * * 1-5 mail -s "Son las 10 de la noche" josé%José:%%¿Dónde están los chicos?%.%% 23 */2 1 2 * echo "ejecutar el 1 de febrero a los 23 minutos después de 0am, 2am, 4am ..." 5 4 * * sun echo "ejecutar todos los domingos a las 04:05" # ejecutar a las 03:40 el primer lunes de cada mes 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && comando -args
Ejecutar el comando at
para planificar una tarea una sola vez:
$ echo 'command -args'| at 3:40 monday
screen
El programa screen
permite ejecutar múltiples
terminales virtuales, cada una con su intérprete de comandos interactivo, en
una única terminal física o ventana que emule un terminal. Incluso si
utiliza consolas virtuales Linux o múltiples ventanas xterm
,
merece la pena experimentar con screen
por sus amplias
funcionalidades que incluye:
navegación por el histórico de comandos,
copiar y pegar,
registro de accesos al sistema,
entrada de caracteres especiales y
la capacidad de separar una sesión entera de
screen
del terminal para recuperarla posteriormente.
Si frecuentemente se conecta a una máquina Linux desde un terminal remoto o
usando el terminal VT100, screen
le facilitará muchísimo las
cosas.
Supongamos que estamos conectado a la red mediante una conexión telefónica
ejecutando una sesión compleja de screen
con editores y otros
programas abiertos en diversas ventanas.
De repente necesita abandonar su terminal, pero no deseamos perder nuestro trabajo al colgar la línea.
Simplemente teclee ^A d para separar las sesión
y desconéctese (o aún más rápido, teclee ^A DD para que
screen
se separe y se desconecte por sí misma)
Cuando se conecte nuevamente, escriba el comando screen -r y
screen
mágicamente automáticamente recuperará
todas las ventanas que había abierto.
screen
típicos
Una vez que arranca screen
toda la entrada de datos que se hace a
través del teclado se envía a la ventana actual excepto la combinación de
teclas de comando, por defecto ^A. Todos los comandos de
screen
se ingresan escribiendo ^A seguido de una sola
tecla [y eventualmente algunos parámetros]. Algunos comandos útiles:
^A ? mostrar ventana de ayuda (muestra las asociaciones de teclas) ^A c crear una nueva ventana y cambiar a ella ^A n ir a la siguiente ventana ^A p ir a la ventana anterior ^A 0 ir a la ventana número 0 ^A w mostrar la lista de ventanas ^A a enviar un Ctrl-A a la ventana actual como entrada del teclado ^A h grabar una copia de la ventana actual a un archivo ^A H comenzar/finalizar la grabación de ventana actual en un archivo ^A ^X bloquear la terminal (protegida con contraseña) ^A d separar una sesión del terminal ^A DD separar una sesión y salir
Éste es sólo una pequeña muestra de los comandos y características de
screen
. Si hay algo que desea que screen
haga,
¡existe una gran posibilidad que pueda hacerlo!. screen(1)
para
más detalles.
screen
Si comprueba que la tecla de retroceso y/o Ctrl-H no funciona correctamente
cuando ejecuta screen
, edite el archivo
/etc/screenrc,
localice la línea
bindkey -k kb stuff "\177"
y coméntela (es decir, agréguele el carácter "#" al principio).
Instale netkit-ping
, traceroute
,
dnsutils
, ipchains
(para el kernel 2.2),
iptables
(para el kernel 2.4 ) y el paquete
net-tools
:
$ ping yahoo.com # verificar la conexión a Internet $ traceroute yahoo.com # rastrear paquetes IP $ ifconfig # verificar la configuración del # anfitrión (host) $ route -n # verificar la configuración de la ruta $ dig [@dns-server.com] host.dom [{a|mx|any}] |less # verificar registros host.dom DNS [@ dns-server.com] para # un registro {a|mx|any} $ ichains -L -n |less # verificar filtrado de paquetes (kernel 2.2) $ iptables -L -n |less # verificar filtrado de paquetes (kernel 2.4) $ netstat -a # mostrar todos los puertos abiertos $ netstat -l --inet # mostrar los puertos en escucha $ netstat -ln --tcp # mostrar puertos tcp en escucha (numérico)
Para eliminar los mensajes de la cola local:
# exim -q # eliminar mensajes en espera # exim -qf # eliminar todos los mensajes # exim -qff # eliminar incluso mensajes bloqueados
"-qff" puede resultar mejor para el script /etc/ppp/ip-up.d/exim.
Para Sarge, reemplace exim
con exim4
.
Para eliminar mensajes de correo bloqueados de la cola local reenviando el mensaje de error:
# exim -Mg `mailq | grep frozen | awk '{ print $3 }'`
Para Sarge, reemplace exim
por exim4
mbox
Si se llenó su directorio personal y procmail
falló necesitará
distribuir en forma manual sus mensajes de
/var/mail/usuario
a los buzones de correo situados en
su directorio personal. Luego de hacer espacio en el mismo, haga:
# /etc/init.d/exim stop # formail -s procmail </var/mail/usuario # /etc/init.d/exim start
Para Sarge, reemplace exim
por exim4
.
Para borrar el contenido de un archivo (un archivo log, por ej.) no utilice rm para eliminarlo y mkdir para crealo nuevamente, ya que el archivo puede estar siendo consultado en el intervalo comprendido entre la ejecución de ambos comandos. Lo siguiente es la manera más segura de borrar el contenido de un archivo.
$ :>archivo-a-eliminar
Los siguientes comandos creará archivos fantasmas (archivos vacíos):
$ dd if=/dev/zero of=nombre_archivo bs=1k count=5 # 5KB de # contenido # cero $ dd if=/dev/urandom of=nombre_archivo bs=1M count=7 # 7MB de # contenido # al azar $ touch nombre_archivo # crear un archivo de 0B (si el archivo # existe actualizar mtime)
Por ejemplo, los siguientes comandos ejecutados desde el shell de un disco de
arranque Debian borrará íntegramente el contenido del disco duro
/dev/hda
.
# dd if=/dev/urandom of=/dev/hda ; dd if=/dev/zero of=/dev/hda
chroot
El programa chroot
, chroot(8)
, nos permite ejecutar
diferentes instancias de un entorno GNU/Linux en un único sistema,
simultáneamente y sin reiniciar.
Asimismo, uno puede ejecutar un programa que insuma gran cantidad de recursos
(por ejemplo, apt-get
o dselect
) bajo el chroot de
una máquina anfitrión veloz, montando en ella una máquina auxiliar lenta
(máquina satélite) mediante NFS en modo lectura/escritura, siendo el punto de
montaje el directorio chroot.
chroot
Un entorno chroot Debian se puede crear en Woody fácilmente mediante el
comando debootstrap
. Por ejemplo, para crear un chroot Sid en
/sid-root con una conexión de Internet rápida:
main # cd / ; mkdir /sid-root main # debootstrap sid /sid-root http://ftp.debian.org/debian/ ... observe descargar todo el sistema main # echo "proc-sid /sid-root/proc proc none 0 0" >> /etc/fstab main # mount proc-sid /sid-root/proc -t proc main # cp /etc/hosts /sid-root/etc/hosts main # chroot /sid-root /bin/bash chroot # cd /dev; /sbin/MAKEDEV generic ; cd - chroot # apt-setup # configurar /etc/apt/sources.list chroot # vi /etc/apt/sources.list # apuntar a la rama inestable chroot # dselect # puede usar aptitude, instalar mc y vim :-)
A esta altura, debería tener un sistema Debian totalmente funcional, donde podrá jugar sin temor de afectar su instalación Debian principal.
Este truco con debootstrap
se puede utilizar para instalar Debian
en un sistema sin usar Debian install disk but using one for another GNU/Linux
distribution. Véase http://www.debian.org/releases/stable/i386/apcs04
.
chroot
Escribir chroot /sid-root /bin/bash es fácil, pero conserva toda clase de variables de entorno que quizás no desee y acarrea otros problemas. Un mejor enfoque consiste en ejecutar otro proceso login en una terminal virtual aparte donde pueda entrar al sistema chroot directamente.
Puesto que, en los sistemas Debian predeterminados, las consolas Linux se
ejecutan desde tty1 hasta tty6 y el sistema X Window
se ejecuta en tty7, configuremos, como ejemplo, una consola chroot
en tty8. Luego de crear un sistema chroot como se explicó en Ejecutar distintas versiones de Debian mediante
chroot
, Sección 8.6.35.1, escriba desde el shell del
superusuario en el sistema principal:
main # echo "8:23:respawn:/usr/sbin/chroot /sid-root "\ "/sbin/getty 38400 tty8" >> /etc/inittab main # init q # vuelve a cargar init
chroot
¿Desea ejecutar la última versión de X y Gnome en forma segura en su chroot? ¡Es perfectamente posible! El siguiente ejemplo hará que GDM se ejecute en un terminal virtual vt9.
Primero instale el sistema chroot usando el método descripto en Ejecutar distintas versiones de Debian mediante
chroot
, Sección 8.6.35.1. Siendo superusuario en el sistema
principal, copie los archivos de configuración claves en el sistema chroot.
main # cp /etc/X11/XF86Config-4 /sid-root/etc/X11/XF86Config-4 main # chroot /sid-root # o utilice la consola chroot chroot # cd /dev; /sbin/MAKEDEV generic ; cd - chroot # apt-get install gdm gnome x-window-system chroot # vi /etc/gdm/gdm.conf # haga s/vt7/vt9/ en la sección [servers] chroot # /etc/init.d/gdm start
En este caso, se editó /etc/gdm/gdm.conf
para que la consola
virtual inicial sea vt9 en vez de vt7.
A partir de ahora, puede fácilmente alternar entre el entorno X del chroot y su sistema principal simplemente cambiando de terminal virtual; por ejemplo, usando Ctrl-Alt-F7 y Ctrl-Alt-F9. ¡Que se diviertan!
[FIXME] Añadir un comentario y enlace al script init del gdm
del
chroot.
chroot
Se puede crear fácilmente un entorno chroot para otra distribución Linux.
Instale un sistema en una partición aparte usando el instalador de otra
distribución. Si su partición raíz se encuentra en
/dev/hda9
:
main # cd / ; mkdir /otra-dist main # mount -t ext3 /dev/hda9 /otra-dist main # chroot /otra-dist /bin/bash
Luego proceda como en Ejecutar distintas versiones
de Debian mediante chroot
, Sección 8.6.35.1, Configurar el acceso para chroot
,
Sección 8.6.35.2 y Configurando X para
chroot
, Sección 8.6.35.3.
chroot
Existe un paquete chroot más sofisticado, pbuilder
, que crea un
sistema chroot y compila un paquete dentro de él. Es un sistema ideal para
verificar que las dependencias de compilación de un paquete sean correctas y
para estar seguros que no existan dependencias innecesarias o erróneas en el
paquete resultante.
Puede ver si dos archivos son uno solo con dos enlaces duros, haciendo:
$ ls -li archivo1 archivo2
Si archivo.img
contiene una imagen de los contenidos de
un disco duro y el disco original tenía una configuración xxxx =
(bytes/sector) * (sectores/cilindro), entonces lo siguiente la montará en
/mnt
:
# mount -o loop,offset=xxxx archivo.img /mnt
Obsérvese que la mayoría de los discos duros tienen 512 bytes/sector.
Lo básico para obtener archivos desde Windows:
# mount -t smbfs -o username=mi_nombre,uid=mi_uid,gid=mi_gid \ //server/share /mnt/smb # monta un directorio Windows en Linux # smbmount //server/share /mnt/smb \ -o "username=mi_nombre,uid=mi_uid,gid=mi_gid" # smbclient -L 192.168.1.2 # lista los archivos compartidos de una # máquina
Los vecinos de Samba se pueden localizar desde Linux haciendo:
# smbclient -N -L dirección_ip_de_su_PC | less # nmblookup -T "*"
El kernel de Linux soporta diversos sistemas de archivos. Por lo tanto, se puede acceder a ellos montando los dispositivos que los contienen. Para determinados sistemas de archivos, existen algunas herramientas especializadas para acceder a ellos sin tener que montar los correspondientes dispositivos. Estas operaciones se realizan por programas del espacio del usuario, con lo cual no se necesita el soporte de sistemas de archivos del kernel.
mtools
: para sistemas de archivos MSDOS (MS-DOS, Windows)
cpmtools
: para sistemas de archivos CP/M
hfsutils
: para sistemas de archivos HFS (Macintosh nativo)
hfsplus
: para sistema de archivos HFS+ (Macintosh moderno)
dosfstools
resulta útil para crear y verificar sistemas de
archivos FAT MS-DOS..
Veamos algunos ejemplos de acciones peligrosas. El impacto negativo será mayor si utiliza la cuenta con privilegios de superusuario.
En "rm -rf .*", el ".*" se expande para incluir "." y "..", y si por casualidad tiene privilegios para escribir en el directorio padre, terminará por eliminar todos los directorios next to your current directory as well.
"rm -rf ." : borra todo lo que se encuentra en el directorio actual incluyendo el propio directorio.
"rm -rf *" : borra todos los archivos y directorios del directorio actual (excluyendo los que comienzan con un punto)
"rm -rf .[^.]*" : borra todos los archivos punto y los directorios normales del directorio actual.
"rm -rf .*" : borra todo del directorio padre y al propio directorio.
Es difícil la pérdida de algunos archivos importantes como
/etc/passwd
por descuido. El sistema Debian realiza copias de
seguridad regulares de ellos en /var/backups/
. Al restaurar estos
archivos, tiene que configurar manualmente los permisos adecuados.
# cp /var/backups/passwd /etc/passwd # chmod 644 /etc/passwd
Véase también Recuperar los datos de la selección de paquetes, Sección 6.3.4.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Este capítulo se basa en una más vieja versión del texto original inglés. Comprobar por favor la versión inglesa también.
Este capítulo describe solamente lo básico de la configuración del sistema mediante interfaces basada en textos. Como prerrequisito de este capítulo léase Consejos para la instalación de un sistema Debian, Capítulo 3.
Para aquellos interesados en la seguridad, es altamente recomendables leer
Securing Debian
Manual
que se también se puede encontrar en el paquete
harden-doc
.
Véase El programa init
, Sección 2.4.1 para
los fundamentos del script init de Debian.
Debian utiliza el sistema de scripts sys-V. Aunque todos los scripts init en
/etc/init.d/*
están marcados como archivos de configuración y el
administrador del sistema tiene la libertad de modificarlos, es preferible
personalizarlos editando los archivos /etc/default/*
.
Por ejemplo, /etc/init.d/rcS
se puede usar para personalizar los
valores predeterminados de arranque de motd
, sulogin
,
etc.
El modo de registro del sistema se puede configurar usando
/etc/syslog.conf
. Utilice el paquete colorize
para
dar distintos colores a los archivos de registro del sistema. Véase también
syslogd(8)
y syslog.conf(5)
.
Existen algunas pocas configuraciones de optimización del hardware que Debian deja a cargo del administrador del sistema.
hdparm
Optimización del acceso al disco. Muy efectivo.
Peligroso. Primero debe leer hdparm(8)
.
hdparm -tT /dev/hda to test disk access speed.
hdparm -c1 -d1 -u1 -m16 -A /dev/hda para acelerar un sistema IDE moderno (puede resultar peligroso).
setcd
Optimización del acceso a la unidad de CDs.
setcd -x 2 para disminuir la velocidad a 2x.
Véase setcd(1)
.
setserial
Conjunto de herramienta para la administración del puerto serie.
scsitools
Conjunto de herramientas para la administración de hardware SCSI.
memtest86
Conjunto de herramientas para la administración de la memoria.
hwtools
Conjunto de herramientas para la administración de hardware de bajo nivel.
irqtune: modifica la prioridad del IRQ de los dispositivos para que aquellos que requieran de una prioridad alta y un servicio rápido lo puedan conseguir (por ejemplo, puertos serie, módems) Es posible incrementar el rendimiento de un módem/puerto serie en un factor 3X.
scanport: analiza el espacio I/O de 0x100 a 0x3ff buscando dispositivos ISA instalados.
inb: un pequeño programa que lee un puerto I/O y vuelca el valor en hexadecimal o binario.
schedutils
Utilidades de planificación de Linux.
se incluyen taskset
, irqset
, lsrt
, y
rt
.
Junto con nice
y renice
(no incluídos), permiten el
control absoluto de los parámetros de la planificación de procesos.
También resulta muy efectivo montar un sistema de archivos con la opción
noatime para incrementar el acceso de lectura a los archivos. Véase
fstab(5)
y mount(8)
.
Algunos dispositivos se pueden poner a punto directamente mediante el kernel de Linux por medio del sistema de archivos proc. Véase Poniendo a punto al kernel mediante el sistema de archivos proc, Sección 7.3.
Existen diversas utilidades para la configuración de hardware específico en Debian. La mayoría de ellas tienen en cuenta los requerimientos específicos de las PC portátiles. Veamos algunos paquetes interesantes en Derbian:
tpconfig
- Programa para configurar el touch pad
apmd
- Utilidades para la Administración Avanzada de Energía
(APM)
acpi
- Muestra información sobre dispositivos ACPI
acpid
- Utilidades para usar ACPI
lphdisk
- Prepara una partición para hibernación para Phoenix
NoteBIOS
sleepd
- Hace "dormir" una portátil durante su
inactividad.
noflushd
- Permite disminuir la velocidad de rotación de los
discos duros ociosos
big-cursor
- Cursores del ratón más grandes para X
acme
- Activa las "teclas multimedias" de los
ordenadores portátiles
tpctl
- Herramientas de configuración de hardware para la IBM
ThinkPad
mwavem
- Soporte del módem Mwave/ACP
toshset
- Acceso a la mayoría de la interfaz de hardware de la pc
portátil Toshiba
toshutils
- Utilidades para la pc portátil Toshiba
sjog
- Un programa para usar el "Jog Dial" de las pc
portátiles Sony Vaio
spicctrl
- Programa para configurar el brillo de fondo de la
pantalla LCD de la Sony Vaio
ACPI es un estándar para la administración de la energía del sistema más nuevo que APM.
Algunos de estos paquetes necesitan módulos especiales del kernel. En muchos casos ya han sido incluido en las últimas funentes del mismo. En caso de problemas, puede aplicar el último parche para el kernel por su propia cuenta.
PAM (Módulos de Autenticación Conectables, con sus siglas en inglés) proporciona el control del acceso.
/etc/pam.d/* # archivos de control de PAM /etc/pam.d/login # archivo de control PAM para el acceso /etc/security/* # parámetros del módulo de PAM /etc/securetty # controla el acceso del superusuario en consola (login) /etc/login.defs # controla el comportamiento de login
Si desea acceder a consolas sin necesidad de contraseña modifique, bajo su
entera responsabilidad, el contenido del archivo /etc/pam.d/login
de la siguiente manera
#auth required pam_unix.so nullok auth required pam_permit.so
Un truco similar se puede aplicar para xdm
, gdm
, ...
, para conseguir una consola X sin contraseña.
Por otra parte, si desea reforzar su política de contraseñas, instale
cracklib2
y añada lo siguiente a su
/etc/pam.d/passwd
.
password required pam_cracklib.so retry=3 minlen=6 difok=3
Para la activación de una cuenta puede ayudar una contraseña temporaria.
Para ello, use el comando passwd con la opción -e
passwd(1)
.
En bash se puede configurar el número máximo de procesos con ulimit -u
1000 o desde PAM con la configuración de
/etc/security/limits.conf
. De igual manera se pueden configurar
otros parámetros como, por ejemplo, core. El valor inicial de
PATH
se puede fijar mediante el archivo
/etc/login.defs
antes de script de arranque del shell.
La documentación de PAM se encuentra en el paquete libpam-doc
.
La Guía del Administrador de un Sistema Linux-PAM explica la configuración de
PAM, los módulos que hay disponibles, etc. La documentación también incluye
la Guía para Desarrolladores de Aplicaciones Linux-PAM y la Guía de
Desarrolladores de Módulos Linux-PAM.
su
GNU no soporta el grupo wheel"
Esta es la famosa frase de Richard M. Stallman al final de la antigua página
info de su. No se preocupe: el su
actual en Debian
utiliza PAM, de modo que uno puede restringir la posibilidad de usar
su
a cualquier grupo usando pam_wheel.so
en
/etc/pam.d/su
. Lo siguiente configurará al grupo
adm en un sistema Debian en forma equivalente al grupo BSD
wheel y permitirá a sus miembros hacer su
sin
contraseña.
# configuración anti-RMS en /etc/pam.d/su auth required pam_wheel.so group=adm # permitir a los miembros de wheel hacer su sin contraseña auth sufficient pam_wheel.so trust group=adm
Algunos grupos interesantes:
el grupo root es el grupo wheel predeterminado para
su
si se usa pam_wheel.so
sin el argumento
group=.
el grupo adm puede leer los archivos de registro.
el grupo cdrom se puede usar en forma local para dar a un conjunto de usuarios acceso a la unidad de CD.
el grupo floppy se puede usar en forma local para dar a un conjunto de usuarios acceso a la unidad de disquete.
el grupo audio se puede usar en forma local para dar a un conjunto de usuarios acceso al dispositivo de audio.
el grupo src administra el código fuente, incluyendo los archivos
de /usr/src
. Se puede usar localmente para dar a un usuario la
posibilidad de administrar el código fuente del sistema.
el grupo staff es útil para administradores de sistemas junior,
dándoles la posibilidad de hacer cosas en /usr/local
y crear
directorios en /home
.
Para una lista completa, véase la sección "FAQ" en el Securing Debian
Manual
, que también se puede encontrar en el paquete
harden-doc
.
sudo
– un entorno de trabajo más seguro
Utilizo sudo
principalmente como protección contra mi propia
estupidez. Considero que usar sudo
es una mejor alternativa que
usar el sistema siendo superusuario. YMMV.
Instale sudo
y actívelo configurando /etc/sudoers
.
También consulte las posibilidades de sudo para los grupos en
file:///usr/share/doc/sudo/OPTIONS
.
La configuración de ejemplo brinda a los miembros del grupo "staff"
el acceso a todos los comandos ejecutados como superusuario bajo
sudo
y también proporciona a los miembros del grupo
"src" a determinados comandos ejecutados como superusuario bajo
sudo
.
La ventaja de sudo
radica en que sólo requiere de la contraseña
de un usuario normal y que su actividad es monitoreada. Esta es una buena
manera de dar cierta autoridad a un administrador principiante. Por ejemplo:
$ sudo chown -R yo_mismo:mi_grupo .
Por supuesto, si conoce la contraseña de superusuario (como la mayoría de los usuarios domésticos), cualquier comando se puede ejecutar como superusuario desde una cuenta de usuario normal:
$ su -c "shutdown -h now" Password:
(Soy conciente que debería limitar los privilegios de la cuenta del
administrador con sudo
. Pero puesto que se trata de mi servidor
personal, aún no me he molestado en hacerlo)
Otro programa que permite a los usuarios normales ejecutar comandos con
privilegios de superusuario, véase el paquete super
.
El superservidor de Internet, inetd
, es ejecutado durante
el arranque por /etc/rc2.d/S20inetd
(para el nivel de ejecución
2), que es un enlace simbólico a /etc/init.d/inetd
.
Básicamente, inetd
permite ejecutar un único demonio para
invocar otros, reduciendo la carga del sistema.
Cada vez que llega la petición a un servicio, se identifica el protocolo y el
servicio mirando las bases de datos situadas en /etc/protocols
y
/etc/services
. Para un servicio de internet normal,
inetd
l consulta la base de datos /etc/inetd.conf
o la
si el servicio se basa en Sun-RPC.
Para seguridad del sistema, asegúrese desactivar los servicios sin utilizar
del archivo /etc/inetd.conf
. Los servicios Sun-RPC necesitan
estar activos para NFS y otros programas basados en RPC.
A veces, inetd
no arranca el servidor solicitado directamente sino
el programa envoltorio del demonio TCP/IP tcpd
con el nombre del
servidor pedido como argumento en el /etc/inetd.conf
. En este
caso, tcpd
ejecuta el programa servidor adecuado luego de haber
registrado la solicitud y haber realizado algunas comprobaciones adicionales
usando /etc/hosts.deny
y /etc/hosts.allow
.
Si tiene problemas con el acceso remoto sobre un sistema Debian reciente,
comente la línea "ALL: PARANOID" si es que existe en el archivo
/etc/hosts.deny
.
Para más detalles, consulte inetd(8)
, inetd.conf(5)
,
protocols(5)
, services(5)
, tcpd(8)
,
hosts_access(5)
y hosts_options(5)
.
Para más información sobre Sun-RPC, véase rpcinfo(8)
,
portmap(8)
y
file:///usr/share/doc/portmap/portmapper.txt.gz
.
Referencias:
OpenLDAP Admin Guide del paquete openldap-guide
LDP: LDAP Linux
HOWTO
Las grabadoras de CDs con interfaz IDE/ATAPI se han convertido en periféricos
muy populares. Es un medio conveniente para un usuario doméstico que necesite
< 640 MB de capacidad para hacer copias de respaldos o archivar documentos.
Para información más autorizada, consulte el CD-Writing-HOWTO
del LDP.
Antes que todo, cualquier interrupción de los datos enviados a la grabadora provocará un daño irreparable al CD. Consiga una grabadora con un búfer tan grande como le sea posible. Si el dinero no es importante, no se moleste con una grabadora IDE/ATAPI y adquiera una SCSI. Si tiene la posibilidad de elegir la interfaz IDE a la cual va a conectar la grabadora, prefiera el bus PCI antes que el ISA (tarjeta SB16, etc.).
Cuando una grabadora de CDs se conecta al canal IDE, debe utilizarse el controlador IDE-SCSI en vez del IDE común. Asimismo, es necesario activar el controlador genérico SCSI. Suponiendo la utilización de un kernel usado por las distribuciones modernas (posteriores a marzo del 2001), existen dos formas posibles de hacerlo.
lilo
Añada la siguiente línea al /etc/lilo.conf
si utiliza el núcleo
que distribuye Debian. Si utiliza múltiples opciones, lístelas separadas
mediante espacios:
append="hdx=ide-scsi ignore=hdx"
Aquí la ubicación de la grabadora, a la que se accede mediante el controlador ide-scsi, se indica mediante hdx con el siguiente significado:
hda maestro en el primer puerto IDE hdb esclavo en el primer puerto IDE hdc maestro en el segundo puerto IDE hdd esclavo en el segundo puerto IDE hde ... hdh para una unidad en un puerto IDE externo o puerto IDE ATA66/100
Siendo superusuario, escriba los siguientes comandos para activar las opciones luego de haber terminado con la configuración:
# lilo # shutdown -h now
Para crear el kernel, Debian utiliza make-kpkg
. Use la nueva
opción --append_to_version de make-kpkg para crear múltiples
imágenes del kernel. Veáse El kernel de Linux en
Debian, Capítulo 7.
Utilice la siguiente configuración con make menuconfig:
bzImage
Excluir el controlador CD IDE (no es fundamental, pero simplifica las cosas)
Compilar ide-scsi y sg, o compílelos como módulos.
El soporte para la grabadora se puede activar durante el arranque mediante lo siguiente:
# echo ide-scsi >>/etc/modules # echo sg >>/etc/modules # cd /dev; ln -sf scd0 cdrom
La activación manual se puede realizar haciendo:
# modprobe ide-scsi # modprobe sg
Tras el arranque, puede comprobar la instalación haciendo:
$ dmesg|less # apt-get install cdrecord # cdrecord -scanbus
[Por Warren Dodge] A veces, pueden existir conflictos entre
ide-scsi y ide-cd si el sistema cuenta con una
lectora de CD y una grabadora. Pruebe añadir la siguiente línea a su
/etc/modutils/aliases
, ejecute update-modules
y
vuelva a arrancar el sistema.
pre-install ide-scsi modprobe ide-cd
Esto hará que el controlador IDE se cargue antes que el ide-scsi. El controlador IDE ide-cd tomará el control de la lectora de CD — de todo lo que no se le pidió ignorar. Esto deja únicamente a los dispositivos no tenidos en cuenta bajo el control del ide-scsi.
Para grabar un CD-ROM con los archivos contenidos en el
directorio-objetivo/
como imagen-cd.raw
(arrancable,
con formato Joliet TRANS.TBL activado; para un CD no arrancable, no incluir las
opciones -b y -c), inserte un disquete de arranque en
la primera unidad de disquetes y haga:
# dd if=/dev/fd0 directorio-objetivo/boot.img # mkisofs -r -V volume_id -b boot.img -c \ bootcatalog -J -T -o imagen-cd.raw\ directorio-objetivo/
Como aplicación interesante se puede crear un CD-ROM DOS de arranque. Si
boot.img
contiene la imagen de un disquete de arranque
DOS, el CD-ROM arrancará como si hubiese un disquete DOS en la unidad (A:).
Hacer esto con freeDOS puede ser aún más interesante.
El archivo imagen se puede inspeccionar montándolo en un dispositivo loop.
# mount -t iso9660 -o ro,loop imagen-cd.raw /cdrom # cd /cdrom # mc # umount /cdrom
Primero pruebe con (suponiendo una velocidad 2x)
# nice --10 cdrecord -dummy speed=2 dev=0,0 imagen
Si no hay problemas, grabe el CD-R haciendo
# nice --10 cdrecord -v -eject speed=2 dev=0,0 imagen
O grabe un CD-RW mediante
# nice --10 cdrecord -v -eject blank=fast speed=2 dev=0,0 imagen
Algunas grabadoras de CD funcionan mejor con
# nice --10 cdrecord -v blank=all speed=2 dev=0,0
seguido de
# nice --10 cdrecord -v -eject speed=2 dev=0,0 imagen
Se necesitan dos etapas para evitar que los tiempos de espera durante la etapa
de formateo no interfieran con la etadpa de grabación. El valor del argumento
de nice
puede requerir de algunos ajustes.
Algunos CD-Rs y CDs comerciales tienen sectores parásitos al final que torna
imposible su copia mediante dd
(el CD de Windows 98 es uno de
ellos). El paquete cdrecord
viene con el comando
readcd
. Utilícelo para copiar el contenido de cualquier CD en un
archivo imagen. Si se trata de un disco de datos, móntelo y use
du
para ver su tamaño verdadero. Divida por dos el número que
se muestra (en bloques, = 1024 bytes) para obtener el número de sectores del
CD (2048 bytes). Ejecute readcd
con las opciones correspondientes
y utilice la imagen para grabar el CD-R/RW.
# readcd target lun scsibusno # elija la función 11
En la mayoría de los casos, elija aquí los 3 parámetros de la línea de
comandos iguales a cero. A veces, el números de sectores proporcionado por
readcd
es demasiado grande. Utilice el valor dado por mount para
obtener mejores resultados.
It should be noted that the use of dd
has few problems if used on
CD-ROM. The first run of dd
command may cause error message and
may yield a shorter disk image with the lost tail-end. The second run of
dd
command may yield a larger disk image with garbage data
attached at the end on some systems if the data size is not specified. Only
the second run of dd
command with the correct data size specified
without ejecting CD after error message seems to avoid these problems. If the
image size displayed by df
is 46301184 blocks , use
the following command twice to get right image (this is my empirical
information):
# dd if=/dev/cdrom of=cd.img bs=2048 count=$((46301184/2))
Para obtener la información más actual sobre los CDs de Debian, visite el
sitio de CDs Debian
.
Si posee una conexión de Internet veloz, considere realizar la instalación a través de la red usando:
algunas imágenes en
disquetes
.
una imagen de CD
mínima
.
Si no posee una conexión de Internet veloz, considere adquirir los CDs de los
distribuidores de
CDs
.
Por favor no desperdicie ancho de banda descargando las imágenes de los CDs estándar a menos que sea un tester de imágenes de CDs (incluso con el nuevo método jigdo).
Una imagen de CD que vale la pena mencionar es KNOPPIX - Sistema de
archivos Linux en CD
. Este CD arrancará un sistema Debian
funcional sin instalarlo en el disco duro.
Para copiar los archivos de configuración y datos importantes a un CD-R, use
el script de ejemplo backup
.
También véase Respaldos diferenciales y
sincronización de datos, Sección 8.4.
No he comprobado lo siguiente personalmente:
# apt-get install cdrecord cdparanoia # cdparanoia -s -B # cdrecord dev=0,0,0 speed=2 -v -dao -eject defpregap=1 -audio *.wav
o
# apt-get install cdrdao #sin multisesión # cdrdao read-cd --device /dev/cdrom --paranoia-mode 3 mi_cd # leer el CD # cdrdao write --device /dev/cdrom --speed 8 mi_cd # grabar un CD nuevo
cdrdao
realiza una copia verdadera (sin interrupciones, etc...)
El entorno X es proporcionado por Xfree86
. Existen 2 versiones del
servidor X disponibles en un sistema Debian: V3.x y V4.x. Xfree86 Version 3.3
(XF3) and XFree86 Version 4.x series (XF4) both based on X11R6 specifications
by X.ORG
.
Para los fundamentos de a X(7)
, al XWindow-User-HOWTO
del LDP y el Remote X Apps
mini-HOWTO
. Para una guía específica para el usuario Debian, lea
la file:///usr/share/doc/xfree86-common/FAQ.gz
proporcionada por
el paquete xfree86-common
. Ésta contiene un análisis autorizado
e interesante de Branden Robinson de temas relacionados con combinaciones de
teclas.
un programa en la máquina local que muestra una ventana X y/o un escritorio en el monitor del usuario (CRT, LCD) y acepta la entrada del teclado y del ratón.
un programa en una máquina (local o remota) que ejecuta una aplicación compatible con X-Window.
Esto invierte el significado de los términos "servidor" y "cliente" usado en otros contextos.
Existen distintas maneras de lograr que el "servidor X" acepte conexiones remotas de un "cliente X":
xhost
el mecanismo de la lista de hosts (muy inseguro).
protocolo sin cifrado (propenso a ataques de intervención de línea telefónica).
En lo posible, no la utilice.
Véase Conexión X remota: xhost
, Sección
9.4.7 y xhost(1x)
.
xauth
el mecanismo de la cookie mágica del MIT (inseguro pero mejor que
xhost
).
protocolo sin cifrado (propenso a ataques de intervención de línea telefónica).
utilícelo únicamente en una conexión local ya que requiere menos CPU que
ssh -X
.
Véase Adquirir privilegios de superusuario en X, Sección
9.4.11 y xauth(1x)
.
xdm
, wdm
, gdm
, kdm
,
...métodos:
el mecanismo de la cookie mágica del MIT (inseguro al igual que
xauth
).
Véase xdm(1x)
y Xsecurity(7)
para los fundamentos de
la pantalla de acceso a X.
Véase wdm(1x)
, gdm(8)
, y kdm.options(5)
para más información, si se encuentran instalados.
Véase init
del System-V y niveles de
ejecución, Sección 6.5.4 para saber cómo desactivar xdm
para tener acceso a la consola de Linux sin tener que eliminar el paquete
xdm
.
ssh -X
el mecanismo de reenvío de puertos a través de un shell seguro (seguro).
protocolo con cifrado (una pérdida de recursos si se usa en forma local).
úselo para conexiones remotas.
Todos los métodos para conexiones remotas, excepto ssh
, requieren
que esté activada la conexión TCP/IP en el servidor X. Véase Conexión TCP/IP en X, Sección 9.4.6.
En Woody existen algunos (meta)paquetes que facilitan la instalación de X.
x-window-system-core
Este metapaquete provee los componentes esenciales para ejecutar el sistema
X-Window en una estación de trabajo. Proporciona las bibliotecas X, un
servidor X xserver-xfree86
, un conjunto de fuentes, clientes y
utilidades X básicas.
x-window-system
Este metapaquete proporciona todos los componentes del sistema X-window
desarrollado por el Proyecto XFree86, así como un conjunto de programas
accesorios muy populares (en particular, depende de
x-window-system-core
, twm
y xdm
, es
decir, si lo instala no necesitará el paquete
x-window-system-core
)
xserver-common-v3
Archivos y utilidades comunes a todos los servidores X de XFree86 3.x (X3)
xserver-*
Paquetes de servidores X3 adicionales para soportar hardware que por algún
motivo no es portado por el nuevo servidor X4. Algunas tarjetas ATI mach64
antiguas no son soportadas por X4, algunas tarjetas de video se cuelgan en
forma abrupta en la versión Woody de X4, etc. (para ver los paquetes
disponibles, haga apt-cache search xserver-|less. Todos estos
servidores de X3 dependen del paquete xserver-common-v3
.)
En la mayoría de los casos, x-window-system
es el paquete que se
deberá instalar (si desea la consola de acceso, asegúrese de desactivar
xdm
como se explica en "¡Permítanme
desactivar X al arrancar!", Sección 8.1.4.)
Para activar la detección de hardware durante la etapa de configuración de X, instale los siguientes paquetes antes de instalar el sistema X:
discover
— sistema de identificación de hardware.
mdetect
— herramienta de autodetección de ratones.
read-edid
— herramienta para obtener información de los
monitores PnP VESA.
Véase XFree86(1x)
para información sobre el servidor X.
Invoque el servidor X desde una consola local:
$ startx -- :<display> vtXX e.g.: $ startx -- :1 vt8 -bpp 16 ... ejecución en una terminal vt8 conectada a localhost:1 with 16 bpp mode
Los argumentos a continuación de -- son para el servidor X.
Observación: al usar el script ~/.xserverrc
para personalizar el
proceso de arranque del servidor X asegúrese de usar exec con el
servidor real. Caso contrario el servidor será lento al arrancar o al salir.
Por ejemplo:
#!/bin/sh exec /usr/bin/X11/X -dpi 100 -nolisten tcp
Para volver a configurar el servidor X4,
# dpkg-reconfigure --priority=low xserver-common # dpkg-reconfigure --priority=low xserver-xfree86
generará el archivo /etc/X11/XF86Config-4
y configurará X usando
el script dexconf
.
Para volver a configurar el servidor X3,
# dpkg-reconfigure --priority=low xserver-common-v3 # dpkg-reconfigure --priority=low xserver-mach64
generará el archivo /etc/X11/XF86Config
y configurará X usando
el script xf86config-v3
.
Para añadir personalizaciones, no edite el archivo de configuración en medio del texto (válido para X4):
### BEGIN DEBCONF SECTION [snip] ### END DEBCONF SECTION
En cambio, añada las personalizaciones antes del mismo. Por ejemplo, para usar un dispositivo de video personalizado, añada algo similar a lo siguiente al principio del archivo:
Section "Device" Identifier "Custom Device" Driver "ati" Option "NoAccel" EndSection Section "Screen" Identifier "Custom Screen" Device "Custom Device" Monitor "Generic Monitor" DefaultDepth 24 Subsection "Display" Depth 8 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection Subsection "Display" Depth 16 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection Subsection "Display" Depth 24 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection EndSection Section "ServerLayout" Identifier "Custom" Screen "Custom Screen" InputDevice "Generic Keyboard" "CoreKeyboard" InputDevice "Configured Mouse" "CorePointer" EndSection
La mayoría de los clientes X se pueden arrancar con un comando similar a éste:
client $ xterm -geometry 80x24+30+200 -fn 6x10 -display hostname:0 &
los argumentos opcionales de la línea de comando tienen el siguiente significado:
-geometry ANCHOxALTO+POSICIÓN_X+POSICIÓN_Y: ubicación y tamaño de la ventana inicial.
-fn FUENTE: fuente utilizada para mostrar el texto. FUENTE puede ser:
a14: fuente de tamaño normal
a24: fuente de tamaño grande
... (vea las fuentes disponibles mediante xlsfont.)
-display displayname: el nombre del servidor X a usar. displayname puede ser:
hostname:D.S significa pantalla S en terminal D de la máquina hostname; el servidor X para este terminal está escuchando en el puerto TCP 6000+D.
host/unix:D.S significa pantalla
S en el terminal D de la máquina
host; el servidor X para este terminal está escuchando
en el socket UNIX /tmp/.X11-unix/XD
(por lo tanto, solamente
accesible desde host).
:D.S es equivalente a host/unix:D.S, donde host es el nombre de la máquina local.
El displayname predeterminado para el programa X cliente puede configurarase mediante la variable de entorno DISPLAY. Por ejemplo, antes de ejecutar un programa X cliente, se puede ejecutar uno de los siguientes comandos para alcanzar este objetivo:
$ export DISPLAY=:0 # el predeterminado, máquina local usando la primer pantalla X $ export DISPLAY=hostname.fulldomain.name:0.2 $ export DISPLAY=localhost:0
El arranque puede ser personalizado con ~/.xinitrc
. Por ejemplo:
xrdb -load $HOME/.Xresources xsetroot -solid gray & xclock -g 50x50-0+0 -bw 0 & xload -g 50x50-50+0 -bw 0 & xterm -g 80x24+0+0 & xterm -g 80x24+0-0 & twm
Como se explicó en Personalizando la sesión en X,
Sección 9.4.5.1, esto ethis overrides todo lo que una ejecución normal de
Xsession hace cuando se arranca desde startx
. Utilice este
enfoque sólo como último recurso.
Una sesión X (servidor X + cliente X) puede arrancarse mediante:
startx
: script para initx
que arranca el cliente y el
servidor X desde la consola de Linux. Si ~/.xinitrc
no existe,
/etc/X11/Xsession
se ejecuta a través de
/etc/X11/xinit/xinitrc
.
xdm
, gdm
, kdm
o wdm
:
administradores de pantalla X que arrancan el cliente y el servidor X y que
controlan el acceso desde un interfaz gráfica (GUI).
/etc/X11/Xsession
se ejecuta directamente.
Se puede disponer de la consola leyendo "¡Permítanme desactivar X al arrancar!", Sección 8.1.4.
El script de arranque /etc/X11/Xsession
es en realidad una
combinación de
/etc/X11/Xsession.d/50xfree86-common_determine-startup
y
/etc/X11/Xsession.d/99xfree86-common_start
.
La ejecución de /etc/X11/Xsession
se ve afectada por
/etc/X11/Xsession.options
que consiste esencialmente en la
ejecución de un programa mediante el comando exec
teniendo en
cuenta el siguiente orden:
~/.xsession
o ~/.Xsession
, si está definida
/usr/bin/x-session-manager
,si está definida
/usr/bin/x-window-manager
, si está definida
/usr/bin/x-terminal-emulator
, si está definida
El significado exacto de estos comandos viene determinado por el sistema de alternativos explicado en Comandos alternativos, Sección 6.5.3. Por ejemplo:
# update-alternatives --config x-session-manager ... o # update-alternatives --config x-window-manager
A fin de que cualquier administrador de ventanas sea el predeterminado, dejando
instalados los administradores de sesiones GNOME y KDE reemplace
/etc/X11/Xsession.d/50xfree86-common_determine-startup
con el
adjuntado al segundo informe de fallos dado a conocer en http://bugs.debian.org/168347
(espero que sea incluido pronto) y edite de la siguiente manera el
/etc/X11/Xsession.options
para desactivar el administrador de
sesiones X:
# /etc/X11/Xsession.options # # opciones de configuración para /etc/X11/Xsession # Véase Xsession.options(5) para una explicación de las opciones disponibles. # predeterminados activados allow-failsafe allow-user-resources allow-user-xsession use-ssh-agent # predeterminados desactivados (actívelos descomentándolos) do-not-use-x-session-manager #do-not-use-x-window-manager
Sin la modificación anterior, gnome-session
y
kdebase
son los paquetes que contienen los administradores de
sesión X. Al eliminarlos el administrador de ventanas X pasa a ser el
predeterminado. (Hmm, ¿alguna mejor idea?)
En un sistema donde /etc/X11/Xsession.options
incluye una línea
allow-user-xsession sin ningún caracter precediéndola, cualquier
usuario podrá personalizar el comportamiento del
/etc/X11/Xsession
. mediante ~/.xsession
o
~/.Xsession
El último comando del archivo ~/.xsession
debe ser de la forma
exec some-window/session-manager para arrancar su
administrador de sesiones/ventanas X favorito.
Un buen ejemplo de script ~/.xsession
se encuentra en
file:///usr/share/doc/xfree86-common/examples/xsession.gz
.
Lo utilizo para definir el administrador de ventanas y el idioma para cada cuenta de usuario. Véase Arrancar un administrador de sesiones/ventanas determinado, Sección 9.4.5.2, Adquirir privilegios de superusuario en X, Sección 9.4.11 y Ejemplo para un sistema bilingüe (EUC japonés e ISO-8859-1), Sección 9.7.8.
Los recursos X específicos para cada usuario se pueden almacenar en
~/.Xresources
, mientras que los recursos X para todo el sistema en
/etc/X11/Xresources/*
. Véase xrdb(1x)
.
En X, los teclados personalizados y las asociaciones de los botones del ratón
se pueden especificar en ~/.xmodmaprc
. Véase
xmodmap(1x)
.
Siguiendo los pasos explicados en Personalizando la
sesión en X, Sección 9.4.5.1, se puede activar un administrador de
ventanas/sesiones X específico para cada usuario instalando el paquete
indicado y configurando el archivo ~/.xsession
de la siguiente
manera (me gusta blackbox por su estilo simple y por ser veloz):
administración de sesión X predeterminada.
exec /usr/bin/x-session-manager
administrador de ventanas X predeterminado.
exec /usr/bin/x-window-manager
Administrador de sesión de GNOME (consume muchos recursos)
Instale el paquete: gnome-session
exec /usr/bin/gnome-session
Administrador de sesión de KDE (consume muchos recursos)
Instale el paquete: kdebase
(o kdebase3
para KDE3)
exec /usr/bin/kde2
Administrador de ventanas Blackbox (consume pocos recursos).
Instale el paquete: blackbox
exec /usr/bin/blackbox
Administrador de ventanas Fluxbox (consume pocos recursos, el nuevo blackbox)
Install package: fluxbox
exec /usr/bin/fluxbox
Adminitstrador de ventanas Xfce (Mac OS-X, aspecto similar al CDE de SUN).
Install package: xfce
exec /usr/bin/xfwm
Administrador de ventanas IceWM (consume pocos recursos, alternativa de GNOME)
Install package: icewm
exec /usr/bin/X11/icewm
Administrador de ventanas virtual FVWM2 (consume pocos recursos, aspecto similar a Win95).
Instalar el paquete: fvwm
exec /usr/bin/fvwm2
Administrador de ventanas Windowmaker (aspecto similar a NexT)
Instale el paquete: wmaker
exec /usr/bin/wmaker
Administrador de ventanas Enlightenment (consume muchos recursos).
Install package: enlightenment
exec /usr/bin/enlightenment
Véase Administradores de ventanas para
X
.
Para configurar plenamente el entorno KDE/GNOME, resultan de utilidad los siguiente metapaquetes:
KDE: instale el paquete kde
GNOME: instale el paquete gnome
Instalar estos paquetes con herramientas que tengan en cuenta los
recomendados, como dselect
y aptitude
,
le permitirá una elección más variada de programas que hacerlo con
apt-get
.
Si desea ingresar al sistema por consola, asegúrese de deshabilitar el
administrador de pantallas X, como kdm
, gdm
y
wdm
, que pueden ser instalados por el sistema de dependencias,
como se explica en "¡Permítanme desactivar X al
arrancar!", Sección 8.1.4.
Si desea tener a GNOME como sistema predeterminado en vez de KDE, asegúrese de
configurar x-session-manager
como se detalla en Comandos alternativos, Sección 6.5.3.
Puesto que las conexiones TCP/IP remotas sin cifrado son propensas a ataques de
intervención de línea telefónica, la configuración predeterminada de X en
versiones recientes de Debian viene con los sockets TCP/IP desactivados. Para
una conexión X remota piense en usar ssh
(véase Conexión X remota: ssh
, Sección 9.4.8).
No se recomienda el método recién explicado a menos que uno esté en un entorno muy seguro, detrás de un buen firewall y con usuarios confiables. Use el siguiente comando para verificar la configuración actual de su socket TCP/IP de su servidor X:
# find /etc/X11 -type f -print0 | xargs -0 grep nolisten /etc/X11/xinit/xserverrc:exec /usr/bin/X11/X -dpi 100 -nolisten tcp
Eliminar -nolisten para restaurar la escucha TCP/IP en el servidor X.
xhost
xhost
permite el acceso basándose en los nombres de host. Esto
resulta ser muy inseguro. Los comandos siguientes desactivarán la
verificación del host y permitirán conexiones desde cualquier lugar si las
conexiones TCP/IP están autorizadas (véase Conexión TCP/IP
en X, Sección 9.4.6):
$ xhost +
Se puede volver a habilitar la verificación del host haciendo:
$ xhost -
xhost
no distingue entre diferentes usuarios en la máquina
remota. Además, los nombres de las máquinas (en realidad, sus direcciones)
pueden ser falseadas.
Si se encuentra en una red que no es confiable (por ejemplo, con un acceso a
Internet mediante una línea telefónica a través de PPP) debe evitar este
método incluso si se consideran criterios más restrictivos sobre los hosts.
Véase xhost(1x)
.
ssh
El uso de ssh
permite una conexión segura desde un servidor X
local a una aplicación servidora remota.
en el archivo /etc/ssh/sshd_config
de la máquina remota. Asigne
a las entradas X11Forwarding y AllowTcpForwarding el
valor yes
Arranque el servidor X en la máquina local.
Abra una xterm
en la máquina local.
Ejecute ssh
para establecer una conexión con la máquina
distante.
nombre_local @ máquina_local $ ssh -q -X -l nombre_usuario máquina_remota.dominio Password: .....
Ejecute una aplicación X en el sitio remoto.
nombre_usuario @ máquina_remota $ gimp &
Este método permite la visualización de la salida del cliente X remoto como si estuviera conectado a un socket UNIX local.
xterm
Aprenda todo sobre xterm
en la dirección http://dickey.his.com/xterm/xterm.faq.html
.
Algunos programas X antiguos, como xterm, usan la base de datos de recursos de
X para configurar su apariencia. El archivo ~/.Xresources
se
utiliza para almacenar las especificaciones de los recursos del usuario. Al
autenticarse, este archivo automáticamente se anexa a los recursos
predeterminados de X.
Veamos algunos parámetros interesantes para añadir a su archivo
~/.Xresources
:
! Usar una fuente más legible 9x15 XTerm*font: 9x15 ! Mostrar barra de desplazamiento XTerm*scrollBar: true ! Fijar el tamño del búfer en 1000 líneas XTerm*saveLines: 1000
Para que estas configuraciones tengan efecto inmediatamente, añádalas a la base de datos mediante el comando:
xrdb -merge ~/.Xresources
Si una aplicación gráfica mecesita ejecutarse con privilegios de superusuario, use el siguiente procedimiento para visualizar la salida del programa en el servidor X del usuario. Con objeto de evitar posibles riesgos de seguridad nunca intente iniciar un servidor X directamente desde la cuenta de superusuario.
Inicie el servidor X como usuario normal y abra una consola xterm
.
Then:
$ XAUTHORITY=$HOME/.Xauthority $ export XAUTHORITY $ su root Password:***** # printtool &
Cuando utilice este truco para hacer su
a un usuario normal,
asegúrese que el archivo ~/.Xauthority
tenga permiso de lectura
para el grupo al que pertenece dicho usuario.
Para automatizar esta secuencia de comandos, cree un archivo
~/.xsession
desde la cuenta del usuario, que contenga las
siguientes líneas:
# Esto permite arrancar X cuando hago su para ser superusuario. if [ -z "$XAUTHORITY" ]; then XAUTHORITY=$HOME/.Xauthority export XAUTHORITY fi unset XSTARTUP # Si desea un administrador de sesiones/ventanas particular descomente # lo siguiente y edítelo según sus necesidades. # XSTARTUP=/usr/bin/blackbox # Esto inicia el administrador de sesiones/ventanas de X if [ -z "$XSTARTUP" ]; then if [ -x /usr/bin/x-session-manager ]; then XSTARTUP=x-session-manager elif [ -x /usr/bin/x-window-manager ]; then XSTARTUP=x-window-manager elif [ -x /usr/bin/x-terminal-emulator ]; then XSTARTUP=x-terminal-emulator fi fi # ejecuta el administrador de sesiones/ventanas seleccionado exec $XSTARTUP
A continuación ejecute su
(no su -) en una ventana
xterm
de usuario. A partir de ahora, es posible ejecutar
aplicaciones gráficas con privilegios de superusuario en una pantalla X de
superusuario. Este truco funciona siempre y cuando se ejecute la
/etc/X11/Xsession
predeterminada. Si un usuario personaliza
~/.xinit
o ~/.xsession
, la variable
XAUTHORITY mencionada anteriormente necesita ser inicializada de
manera similar en estos scripts.
Otro método, consiste en usar sudo
para automatizar la secuencia
de comandos:
$ sudo xterm ... o $ sudo -H -s
En este casp /root/.bashrc
debe contener:
if [ $SUDO_USER ]; then sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge - fi
Esto funciona correctamente incluso si el directorio personal del usuario se
encuentra en una partición NFS, ya que el superusuario no lee el archivo
.Xauthority
.
Existen también diversos paquetes específicos para este fin:
kdesu
, gksu
, gksudo
,
gnome-sudo
y xsu
. Se pueden usar otro métodos para
alcanzar resultados similares: crear un enlace simbólico del
/root/.Xauthority
al correspondiente al usuario; utilizar el
script sux
; o incluir
"xauth merge ~USER_RUNNING_X/.Xauthority" en
el script de inicialización del root.
Véase más en la lista
de correos debian-devel
.
El xfs
estándar de XFree86-4 funciona correctamente con fuentes
TrueType. Si está usando XFree86-3 debe instalar algún servidor de terceros
como, por ejemplo, xfs-xtt
.
Sólo necesita asegurarse que las aplicaciones que desee usar con las fuentes TrueType hayan sido enlazadas con libXft o libfreetype (es muy probable que no tenga ni siquiera que preocuparse por ello si usa .debs precompilados).
Recuerde instalar las fuentes y generar los archivos
fonts.{scale,dir}
para que puedan ser indexadas y utilizadas.
Puesto que hay pocas fuentes libres, los usuarios de Debian pueden instalar fuentes TrueType comerciales o shareware. A fin de facilitar este proceso al usuario, han sido creado algunos paquetes muy prácticos:
ttf-commercial
msttcorefonts (>1.1.0)
(el paquete en Woody no funciona desde
el of 8/2002 debido a los cambios que experimentó el sitio web de Microsoft)
De esta manera tendrá una buena colección de fuentes TT a expensas de contaminar su sistema libre con fuentes propietarias.
Existe algunos paquetes de navegadores web disponibles con el lanzamiento de Woody :
mozilla
el navegador Mozilla (nuevo)
galeon
navegador basado en Mozilla con una interfaz Gnome (nuevo)
konqueror
navegador KDE
dillo
navegador GTK
amaya-gtk
navegador de referencia de la W3C
amaya-lesstif
navegador de referencia de la W3C
netscape-...
(muchos, antiguos)
communicator-...
(muchos, antiguos)
...
La versión de mozilla
debe coincidir con la versión
correspondiente de galeon
. Aunque difieren en su interfaz, ambos
programas conparten el mismo motor de renderizado de HTML Gecko.
Los añadidos (plug-ins) para los navegadores tales como mozilla
y
galeon
se pueden activar instalando manualmente los archivos
"*.so" en el directorio de añadidos y reiniciando el
navegador.
Recursos:
Java: instale el binario "J2SE" de http://java.sun.com
.
Flash: instale el binario "Macromedia Flash Player 5" de http://www.macromedia.com/software/flashplayer/
.
freewrl
: navegador VRML y añadido de Netscape
...
SSH (Secure SHell) es la manera segura de comunicarse a través de Internet.
Una versión libre de SSH llamada OpenSSH se encuentra disponible en el paquete
Debian ssh
.
Primero instale el cliente y el servidor OpenSSH.
# apt-get update && apt-get install ssh
/etc/ssh/sshd_not_to_be_run
no debe estar presente si desea
ejecutar el servidor OpenSSH.
SSH tiene dos protocolos de autenticación:
Protocolo SSH versión 1:
la versión que viene con Potato admite únicamente este protocolo.
métodos de autenticación disponibles:
RSAAuthentication: autenticación del usuario basada en una clave RSA
RhostsAuthentication: autenticación basada en .rhosts (insegura, desactivada)
RhostsRSAAuthentication: autenticación basada en .rhosts combinada con una clave RSA (desactivada)
ChallengeResponseAuthentication: autenticación basada en challenge-response RSA
PasswordAuthentication: autenticación basada en contraseña
Protocolo SSH versión 2:
versiones posteriores a Woody usan este protocolo como protocolo principal.
métodos de autenticación disponibles:
PubkeyAuthentication: autenticación del usuario basada en una clave pública
HostbasedAuthentication: autenticación basada en.rhosts
o
/etc/hosts.equiv
combinada con la autenticación de la clave
pública de la máquina cliente (desactivada)
ChallengeResponseAuthentication: autenticación basada en challenge-response
PasswordAuthentication: autenticación basada en contraseña
Tenga cuidado con estas diferencias si está migrando hacia Woody o usando un sitema que no es Debian.
Véase /usr/share/doc/ssh/README.Debian.gz
, ssh(1)
,
sshd(8)
, ssh-agent(1)
y ssh-keygen(1)
para más detalles.
Los siguientes son los archivos de configuración más importantes:
/etc/ssh/ssh_config
: valores predeterminados del cliente SSH .
Véase ssh(1)
. Las entradas más importantes son:
Host: Restricts the following declarations (up to the next Host keyword) to be only for those hosts that match one of the patterns given after the keyword.
Protocol: especifica la versión del protocolo SSH. Valor predeterminado "2,1".
PreferredAuthentications: especifica el método de autenticación para el cliente SSH2. Por defecto: "hostbased,publickey,keyboard-interactive,password".
ForwardX11: desactivado por defecto. Se puede no tener en cuenta mediante la opción "-X" de la línea de comandos.
/etc/ssh/sshd_config
: valores predeterminados del servidor SSH.
Véase sshd(8)
. Las entradas más importantes son:
ListenAddress: especifica las direcciones locales que
sshd
debe escuchar. Se permiten múltiples opciones.
AllowTcpForwarding: desactivado por defecto.
X11Forwarding: desactivado por defecto.
$HOME/.ssh/authorized_keys
: la lista de las claves públicas
predeterminadas que los clientes usan para conectarse con la cuenta en este
host. Véase ssh-keygen(1)
.
$HOME/.ssh/identity
: Véase ssh-add(1)
y
ssh-agent(1)
.
Lo siguiente iniciará una conexión ssh
desde un cliente.
$ ssh nombre_usuario@nombre_máquina.dominio.ext $ ssh -1 nombre_usuario@nombre_máquina.dominio.ext # Fuerza la versión 1 de SSH $ ssh -1 -o RSAAuthentication=no -l username foo.host # force password on SSH1 $ ssh -o PreferredAuthentications=password -l username foo.host # force password on SSH2
Para el usuario, las funciones de ssh
son mejores y más seguras
que las de telnet
(no lo bombardearán con ^]).
Para establecer un túnel para conectarse al puerto 25 del
servidor-remoto desde el puerto 4025 de la máquina local y al
puerto 110 del servidor-remoto desde el puerto 4110 de la máquina
local mediante ssh
, ejecute lo siguiente en la máquina local:
# ssh -q -L 4025:servidor-remoto:25 4110:servidor-remoto:110 \ nombre_usuario@servidor-remoto
Es una manera segura de conectarse a servidores SMTP/POP3 a través de
Internet. En el /etc/ssh/sshd_config
de la máquina remota,
asigne a la entrada AllowTcpForwarding el valor yes.
Uno puede evitar recordar la contraseña para cada sistema remoto usando RSAAuthentication (protocolo SSH1) o PubkeyAuthentication (protocolo SSH2).
En el /etc/ssh/sshd_config
del sistema remoto debe figurar
"RSAAuthentication yes" o "PubkeyAuthentication yes".
A continuación genere las claves de autenticación en forma local e instale la clave pública en el sistema remoto:
$ ssh-keygen # RSAAuthentication: clave RSA1 para SSH1 $ cat .ssh/identity.pub | ssh user1@remote \ "cat - >>.ssh/authorized_keys" ... $ ssh-keygen -t rsa # PubkeyAuthentication: clave RSA para SSH2 $ cat .ssh/id_rsa.pub | ssh user1@remote \ "cat - >>.ssh/authorized_keys" ... $ ssh-keygen -t dsa # PubkeyAuthentication: clave DSA para SSH2 $ cat .ssh/id_dsa.pub | ssh user1@remote \ "cat - >>.ssh/authorized_keys"
Uno puede cambiar la frase de contraseña posteriormente haciendo "ssh-keygen -p". Asegúrese de verificar la configuración probando la conexión. En caso de problemas, haga "ssh -v".
Puede añadir opciones a las entradas en authorized_keys
para
limitar los hosts y ejecutar comandos específicos. Véase
sshd(8)
para más detalles.
Observe que SSH2 realiza una autenticación del tipo
HostbasedAuthentication. Para que esto funcione, debe asignar a
la entrada HostbasedAuthentication el valor yes tanto
en el /etc/ssh/sshd_config
de la máquina servidor como en el
/etc/ssh/ssh_config
o el $HOME/.ssh/config
de la
máquina cliente.
Existen algunos clientes SSH libres disponibles para plataformas que no son UNIX.
puTTY
(GPL)
SSH en cygwin
(GPL)
macSSH
(GPL) [Obsérvese que
Mac OS X incluye OpenSSH; utilice ssh en el terminal]
Recurra también al sitio de documentación de
SourceForge.net
: "6. CVS Instructions".
Resulta más seguro proteger su clave de autenticación SSH con una frase de contraseña. Si no ha sido configurada, use ssh-keygen -p para hacerlo.
Ubique su clave pública (por ejemplo, ~/.ssh/id_rsa.pub
) en el
~/.ssh/authorized_keys
de una máquina remota usando la conexión
basada en contraseñas como se explica en Conectarse con
pocas contraseñas, Sección 9.5.3.
$ ssh-agent bash # o ejecute en cambio el programa zsh/tcsh/pdksh. $ ssh-add ~/.ssh/id_rsa Enter passphrase for /home/osamu/.ssh/id_rsa: Identity added: /home/osamu/.ssh/id_rsa (/home/osamu/.ssh/id_rsa) $ scp foo user@remote.host:foo ... de ahora en adelante no se necesita frase de contraseña :-) $^D ... terminating ssh-agent session
Para el servidor X, los scripts de arranque normales de Debian ejecutan al
ssh-agent
como proceso padre. Por lo tanto, necesitará ejecutar
ssh-add
una sola vez.
Para más información , consulte ssh-agent(1)
y
ssh-add(1)
.
Si tiene problemas, controle los permisos de los archivos de configuración y
ejecute ssh
con la opción "-v".
Utilice la opción "-P" si no es superusuario y tiene problemas con un firewall; esto evita el uso de los puertos 1–1023 del servidor.
Si las conexiones ssh
con un sitio remoto dejan de funcionar
repentinamente, puede ser debido a modificaciones hechas por el administrador
de sistema, muy probablemente debido a un cambio de host_key
durante el mantenimiento del sistema. Tras asegurarse que este es el caso y
que nadie está haciéndose pasar por la máquina remota mediante algún
artilugio ingenioso, es posible recuperar la conexión eliminando la entrada
host_key
del archivo $HOME/.ssh/known_hosts
de la
máquina local.
La configuración del correo comprende tres partes:
un agente de transferencia de correo (MTA): exim
utilidades de correo: procmail
, fetchmail
,
mailx
, ...
agente de usuario de correo (MUA): mutt
,
emacs
+gnus
Para un MTA con un sinnúmero de posibilidades, utilice exim
.
Referencias:
paquetes exim-doc
y exim-doc-html
Si le preocupa el tema de la seguridad, el único MTA alternativo razonable es
postfix
. Tanto sendmail
como qmail
se
encuentran disponibles como paquetes Debian pero no se recomiendan.
Si no necesita de la función de reenvío del MTA como en el caso de un sistema satélite como puede ser una PC portátil, considere usar uno de estos paquetes pequeñosl:
ssmtp
: necesita una conexión SMTP y permite alias, o
nullmailer
: no permite alias.
Por el momento, considero a que exim
es más conveniente incluso
para mi estación de trabajo que es una PC portátil..
Necesitará eliminar exim
para la instalación de estos paquetes
que entran en conflicto:
# dpkg -P --force-depends exim # apt-get install nullmailer # o ssmtp
Para usar exim
como MTA, configure lo siguiente:
/etc/exim/exim.conf "eximconfig" para crearlo o editarlo /etc/inetd.conf descomente smtp para ejecutar exim como demonio /etc/email-addresses edítelo si su nombre de usuario y máquina no es una dirección de correo válida en Internet verifique los filtros usando exim -brw, -bf, -bF, -bV, ... etc.
En la parte DIRECTORS del archivo /etc/exim/exim.conf
(Woody o
posterior), añada una directiva "catchall" al final (a continuación
de localuser: director) que corresponda a todas las direcciones que la
directiva anterior no pudo resolver (por Miquel van Smoorenburg):
catchall: driver = smartuser new_address = webmaster@mi_dominio.com
Si desea una receta más detallada para cada dominio virtual, añada lo
siguiente al final del archivo /etc/exim/exim.conf
(para mí, no
muy probado):
*@su_dominio.com ${lookup{$1}lsearch*{/etc/email-addresses} \ {$value}fail} T
y añada una entrada "*" al /etc/email-addresses
.
En exim
la reescritura selectiva de direcciones del correo
saliente para que los encabezados "From:" se muestren correctamente
se puede realizar modificando el final del archivo
/etc/exim/exim.conf
:
*@host1.algo.dyndns.org \ "${if eq {${lookup{$1}lsearch{/etc/passwd}{1}{0}}} {1} \ {$0}{$1@algo.dyndns.org}}" frFs
Esto reescribe todas las direcciones coincidentes con *@host1.algo.dyndns.org.
busca en /etc/password
para ver si la parte local ($1) es un
usuario local o no.
si se trata de un usuario local, reescribe la dirección con lo mismo que estaba en primer lugar ($0).
si no se trata de un usuario local, reescribe la parte del dominio.
Algunos servicios SMTP tales como yahoo.com requieren de autenticación SMTP.
Configure /etc/exim/exim.conf
de la siguiente manera:
remote_smtp: driver = smtp authenticate_hosts = smtp.mail.yahoo.com ... smarthost: driver = domainlist transport = remote_smtp route_list = "* smtp.mail.yahoo.com bydns_a" ... plain: driver = plaintext public_name = PLAIN client_send = "^cmatheson3^esta_es_mi_contraseña"
No se olvide entrecomillar la última líneas.
fetchmail
se ejecuta en modo demonio para transferir los mensajes
de correo de una cuenta POP3 de un ISP al sistema de correo local. Configure:
/etc/init.d/fetchmail /etc/rc?.d/???fetchmail ejecute update-rc.d fetchmail default priority 30 /etc/fetchmailrc archivo de configuración (chown 600)
La información para arrancar fetchmail como demonio desde un script de
init.d
en Potato es confusa (Woody corrigió esta situación).
Véase los archivos de ejemplo /etc/init.d/fetchmail
y
/etc/fetchmailrc
en los scripts de
ejemplo
.
Si los encabezados de sus mensajes de correo están contaminados con ^M debido
al programa de correo de su ISP, añada "stripcr" a sus opciones en
$HOME/.fetchmailrc
:
options fetchall no keep stripcr
procmail
es un programa de filtrado y distribución de correo
local. Se necesita crear un $HOME/.procmailrc
para cada cuenta
que se utiliza. Ejemplo: _procmailrc
Utilice mutt
como agente de usuario de correo (MUA) en
combinación con vim
. Personalícelo mediante
~/.muttrc
; por ejemplo:
# use el modo visual y "gq" para reformatear citas set editor="vim -c 'set tw=72 et ft=mail'" # # selección de encabezados tomada del manual (Sven's Draconian header weeding) # ignore * unignore from: date subject to cc unignore user-agent x-mailer hdr_order from subject to cc date user-agent x-mailer auto_view application/msword ....
Añada lo siguiente al /etc/mailcap
o $HOME/.mailcap
para visualizar correo en HTML y documentos adjuntos en MS Word:
text/html; lynx -force_html %s; needsterminal; application/msword; /usr/bin/antiword '%s'; copiousoutput; description="Microsoft Word Text"; nametemplate=%s.doc
Debian se encuentra internacionalizado y admite el uso de un número creciente de idiomas y convenciones de uso local. Las siguientes subseccines discuten la localización, es decir, el proceso de personalización de un entorno de trabajo para permitir la entrada y salida de el/los idioma(s) elegido(s), convenciones para las fechas, formatos numéricos y monetarios y otros aspectos de un sistema que difiere de región en región.
Existen algunos aspectos de la personalización para la localización y el soporte de un idioma.
Debian se distribuye con los mapas de caracteres de casi dos docenas de teclados. En Woody, el teclado se reconfigura así:
dpkg-reconfigure --priority=low console-data # consola
dpkg-reconfigure --priority=low xserver-xfree86 # X4
dpkg-reconfigure --priority=low xserver-common-v3 # X3
La gran mayoría de los paquetes Debian soporta el manejo de datos en caracteres no US-ASCII a través de la variable de entorno LC_CTYPE brindada por la tecnología locale de glibc
en 8-bits puro: prácticamente todos los programas
otros conjuntos de caracteres latinos (por ejemplo ISO-8859-1 o ISO-8859-2): la mayoría de los programas
idiomas de múltiples bytes tales como el chino, el japonés o el coreano: muchas aplicaciones recientes
X puede mostrar cualquier codificación -incluyendo UTF-8- y soporta todas las fuentes. La lista incluye no sólo las fuentes de 8 bits sino las de 16 bits que aparecen en el idioma chino, japonés o coreano. El método de entrada de los caracteres de múltiples bytes es soportado por el mecanismo XIM. Véase Ejemplo para un sistema bilingüe (EUC japonés e ISO-8859-1), Sección 9.7.8.
La visualización del código japonés EUC se encuentra también disponible en
la consola gráfica (S)VGA mediante el paquete kon2
. Existe una
terminal alternativa nueva en japonés llamada jfbterm
que usa la
consola FB. En estos entornos de consola, la aplicación debe proporcionar el
método de entrada del japonés. Utilice el paquete egg
para el
paquete Emacs y el paquete jvim
para el entorno Vim.
Existen traducciones para diversos mensajes y documentos que se muestran en un sistema Debian, como mensajes de errores, salida estándar de programas, menús y páginas del manual. Actualmente, hay soporte para las páginas del manual en alemán, español, finlandés, francés, italiano, japonés, coreano y polaco proporcionados por los paquetes manpages-LANG (donde LANG son dos letras ISO del código del país. Utilice apt-cache search manpages-|less para obtener la lista de manuales unix disponibles)
Para acceder a la página de un manual NLS, el usuario debe configurar la
variable de entorno LC_MESSAGES apropiadamente. Por ejemplo, para las páginas
del manual en el idioma italiano, LC_MESSAGES debe ser igual a it.
El programa man
buscará entonces las páginas del manual en
italiano en /usr/share/man/it/
.
Debian soporta la tecnología locale. Locale es un mecanismo que permite a los programas brindar una salida adecuada y una funcionalidad conforme a las convenciones locales tales como el conjunto de caracteres, el formato del tiempo y de la fecha, los símbolos monetarios, etc. Utiliza las variables de entorno para determinar el comportamiento apropiado. Por ejemplo, suponiendo que tiene instalado en su sistema tanto el local para el francés como para el inglés americano, los mensajes de error de varios programas se pueden mostran en uno u otro idioma:
$ LANG="en_US" cat foo cat: foo: No such file or directory $ LANG="fr_FR" cat foo cat: foo: Aucun fichier ou répertoire de ce type
Glibc brinda soporte a esta funcionalidad. Véase locale(7)
.
Debian no viene con todos los locales disponibles
precompilados. Vaya a /usr/lib/locale
para ver qué locales
(además del predeterminado "C") han sido compilados para su sistema.
Si no encuentra el que necesita, tiene dos opciones:
Editar el /etc/locale.gen
para añadir el local que necesita y
luego ejecutar locale-gen
siendo superusuario para compilarlo.
Véase locale-gen(8)
y las páginas del manual listadas en su
"VER TAMBIÉN".
Ejecute dpkg-reconfigure locales para volver a configurar el
paquete locales
. Al hacerlo aparecerá una interfaz debconf para
que pueda elegir los locales y así compilarlos.
Las siguientes variables de entorno se evalúan en el siguiente orden para proporcionar a los programas los valores de un local determinado:
LANGUAGE: esta variable de entorno consiste en una lista de locales separados por dos puntos en orden de prioridad. Es utilizado sólo si el local POSIX tiene un valor diferente de "C" [en Woody; en Potato tiene siempre prioridad sobre el local POSIX]. (extensión GNU)
LC_ALL: si no es nulo, su valor se utiliza para todas las categorías del local. (POSIX.1) Generalmente "" (nulo).
LC_*: si no es nulo, su valor se utiliza para la categoría correspondiente (POSIX.1). Generalmente "C".
Las variables LC_* son las siguientes:
LC_CTYPE: juego de caracteres.
LC_COLLATE: ordenación del alfabeto.
LC_TIME: formatos del tiempo y fechas.
LC_NUMERIC: formatos numéricos no monetarios.
LC_MONETARY: formatos monetarios.
LC_MESSAGES: formatos de los mensajes informativos, de diagnóstico y respuestas interactivas.
LC_PAPER: tamaño del papel.
LC_NAME: formatos de los nombres
LC_ADDRESS: formatos de las direcciones e información sobre lugares.
LC_TELEPHONE: formatos de los números telefónicos.
LC_MEASUREMENT: unidades de medida (sistema métrico u otro).
LC_IDENTIFICATION: metadatos referente a información del local.
LANG: si es no nulo y LC_ALL está indefinido, el valor se utiliza para todas las categorías LC_* si valores definidos. (POSIX.1) Generalmente "C".
Obsérvese que algunas aplicaciones (por ejemplo, Netscape 4) ignora los valores de LC_*.
El programa locale
pude mostrar la configuración local activa y
los locales disponibles; véase locale(1)
. (OBSERVACIÓN:
locale -a lista todos los locales que su sistema reconoce; eso
no significa que la totalidad de ellos hayan sido compilados. Véase
Activar el soporte de locales, Sección
9.7.3.)
El soporte de local para el estándar internacional de la fecha
yyyy-mm-dd (formato de fecha ISO 8601) es proporcionado por el
local denominado en_DK, — Inglés en
Dinamarca lo cual es una broma :-) Parece ser que sólo funciona en la
consola para ls
.
Añada las siguientes líneas a su ~/.bash_profile
:
LC_CTYPE=en_US.ISO-8859-1 export LC_CTYPE
Añada las siguientes líneas a su ~/.bash_profile
:
LANG=fr_FR@euro export LANG LC_CTYPE=fr_FR@euro export LC_CTYPE
Configure el teclado francés "AZERTY" como se explica en Teclado, Sección 9.7.1.1. y añada las páginas del
manual en francés instalando manpages-fr
. Alt-derecho en el
teclado estadounidense se llama al Alt-Gr en Europa. Pulsándola
simultáneamente junto con otras teclas se obtienen numerosos caracteres
acentuados, etc. Por ejemplo, Alt-Gr+E da el signo euro.
La mayoría de las lenguas europeas occidentales se pueden configurar de una manera similar.
Véase Debian Euro
HOWTO
para añadir soporte para el nuevo signo monetario y Utilizar y
configurar Debian para el idioma francés
para más detalles en
francés.
Configuremos un sistema bilingüe: ja_JP.eucJP (EUC japonés, entorno tradicional japonés para UNIX) en X con mensajes en inglés y fecha tipo ISO y en_US.ISO-8859-1 (ASCII con soporte de la mayoría de los caracteres con acento) en la consola Linux.
añada el soporte del local para el japonés ja_JP.eucJP usando el método descripto en Localización y soporte de idiomas, Sección 9.7.
instale el sistema de conversión y el diccionario Kana-a-Kanji:
canna
— servidor local (licencia gratuita) o
freewnn-jserver
— servidor extensible de red (Dominio
Público)
instale el sistema de entrada para el japonés:
kinput2-canna
— para X o
kinput2-canna-wnn
— para X y
egg
— que funciona directamente con Emacsen incluso en
consola (opcional)
terminal compatible con el japonés:
kterm
— X (clásico),
mlterm
— X (muy bueno, con tamaño de fuente variable) y
agregue todos los paquetes de fuentes japonesas.
Configure como se explica en Personalizando la sesión en
X, Sección 9.4.5.1. Esto permite al usuario utilizar un entorno X
específico independiente de los métodos de arranque de X
(startx
, xdm
, ...)
cree ~/.xsession
que configura el entorno X del usuario
específico:
#!/bin/sh # This makes X work when I su to root. if [ -z "$XAUTHORITY" ]; then XAUTHORITY=$HOME/.Xauthority export XAUTHORITY fi # local japonés predeterminado, local C en caso de problemas # export LANG=ja_JP.eucJP # asegúrese de sobreescribir en_US.ISO-8859-1 usado en consola # export LC_CTYPE=ja_JP.eucJP # quiero los mensajes en inglés ASCII :-) export LC_MESSAGES=C # activar método de entrada kinput2 & XMODIFIERS=@im=kinput2 export XMODIFIERS # administrador de ventanas blackbox (consume pocos recursos) exec /usr/bin/blackbox
agregar las siguientes líneas al ~/.bashrc
:
# Change language environment depending on the console program # X-shells only execute .bashrc (They are not login shell) # General environment for X is set by .xsession if [ $TERM = kterm ] || [ $TERM = mlterm ]; then unset LC_ALL export LANG=C #export LANG=ja_JP.eucJP # para mostrar fecha ISO en formato yyyy-mm-dd date display más natural para # los japoneses :-) export LC_TIME=en_DK.ISO-8859-1 export LC_MESSAGES=C export LANGUAGE=ja_JP.eucJP:en_US.ISO-8859-1:C export LC_CTYPE=ja_JP.eucJP else unset LC_ALL export LANG=C export LC_TIME=en_DK.ISO-8859-1 export LANGUAGE=en_US.ISO-8859-1:C export LC_CTYPE=en_US.ISO-8859-1 fi
añada las siguientes líneas a su ~/.muttrc
:
# El soporte UTF-8 no es popular en el entrono EMACS japonés # La codificación de 7 bits de la iso-2022-jp resulta ser más fácil para todo # el mundo # orden predeterminado codificación = us-ascii --> iso-8859-1 --> utf-8 #set send_charset="us-ascii:iso-8859-1:utf-8" #set allow_8bit=yes set send_charset="us-ascii:iso-8859-1:iso-2022-jp" set allow_8bit=no
activar XIM kinput2
para las aplicaciones X
añada *inputMethod: kinput2 a su archivo de recursos X
.~/Xresources
(a primera vista Debian lo tiene en cuenta
automáticamente).
Algunas aplicaciones (como mlterm
) también permiten configurar el
*inputMethod: y otra información en forma dinámica en tiempo de
ejecución (presione Ctrl-tercer-botón-ratón en
mlterm
).
arranque X escribiendo startx o desde un administrador de pantalla (xdm, gdm, kdm, wdm, ...)
arranque una aplicación compatible con el japonés: VIM6, (x)emacs21, mc-4.5, mutt-1.4, ... (Parece ser que Emacs es la plataforma más popular, aunque personalmente no la utilizo)
presione "Mayús+Espacio" para activar/desactivar la entrada de caracteres japoneses.
Véase también las páginas de SuSE para
CJK
.
Lo necesitará todo el mundo en un futuro. Véase The Unicode
HOWTO
.
El soporte UTF-8 para la consola FB es proporcionada por bterm
utilizado en debian-installer
.
Cuando vaya a configurar por primera vez un entorno de idioma,
por favor considere usar tasksel
o aptitude
para
averiguar qué paquetes han sido seleccionados al elegir la tarea
correspondiente a dicho entorno. La elección del idioma es útil incluso para
la configuración de un entorno multilingüe. Si encuentra problemas de
dependencia durante la instalación en su sistema configurado, evite instalar
los programas que causan conflicto. Puede recurrir a
update-alternative
para recuperar el estado original de algunos
comandos ya que los nuevos instalados pueden tener una prioridad mayor sobre
los ya existentes.
La gran mayoría de los programas usan glibc 2.2 y en gran parte están
internacionalizados. Por lo tanto versiones localizadas tales como
jvim
para VIM puede que no sean necesarias y su funcionalidad es
ofrecida por la versión 6.0 para X de vim
. En realidad, aún es
difícil de usar. Puesto que jvim
posee una versión compilada
con soporte nativo de caracteres japoneses (canna
) incluso en
consola y soluciona diversos problemas específicos del japonés puede que aún
la quiera usar :-)
Puede que se necesite configurar los programas más allá de la configuración
del local para lograr un entorno de trabajo agradable. El paquete
language-env
y su comando set-language-env
facilita
notablemente este proceso.
Asimismo consulte el documento sobre internalización Introducción a la
i18n
. Está dirigido a los desarrolladores pero también resulta
útil para los administradores de sistemas.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Este capítulo se centra en la administración de redes en Debian. Para una
introducción general sobre redes en GNU/Linux lea el Net-HOWTO
.
Para que un equipo Debian sea capaz de acceder a Internet sus interfaces de red necesitan ser soportadas por el kernel y configuradas apropiadamente.
El primer requisito es el soporte del kernel para los dispositivos de interfaz de red tales como las tarjetas Ethernet, tarjetas Wi-Fi y módems. Para obtener este soporte es posible que necesite recompilar el kernel o añadirle módulos como se describe en El kernel de Linux en Debian, Capítulo 7.
La configuración de los dispositivos de red se explica a continuación. La información en este capítulo ha sido actualizada para Sarge. Mucho de todo esto no se aplica a versiones anteriores.
Un equipo Debian puede tener diversas interfaces con una diferente dirección IP. Las interfaces pueden ser de diversos tipos diferentes, incluyendo:
Loopback: lo
Ethernet: eth0, eth1, ...
Wi-Fi: wlan0, wlan1, ... [37]
Token Ring: tr0, tr1, ...
PPP: ppp0, ppp1, ...
Existe un amplio rango de otros dispositivos de red disponibles, incluyendo SLIP, PLIP (línea IP serie y paralelo), dispositivos "shaper" para controlar el tráfico de ciertas interfaces, conmutación de tramas, AX.25, X.25, ARCnet y LocalTalk.
Cada interfaz de red conectada directamente a Internet (o a cualquier red basada en IP) es identificada por una única dirección IP de 32 bits. [38] La dirección IP se puede dividir en la parte relativa a la red y la parte relativa a la máquina. Si se considera una dirección IP, se ponen 1 en los bits que son parte de la dirección de red y ceros en la parte de la dirección de la máquina se obtiene la máscara de red.
Tradicionalmente, las redes IP fueron agrupadas en clases cuyas direcciones de red componentes eran de 8, 16 o 24 bits de tamaño. [39]
direcciones IP máscara de red longitud Clase A 1.0.0.0 - 126.255.255.255 255.0.0.0 = /8 Clase B 128.0.0.0 - 191.255.255.255 255.255.0.0 = /16 Clase C 192.0.0.0 - 223.255.255.255 255.255.255.0 = /24
Las direcciones IP que no se encuentran en estos rangos se utilizan para propósitos especiales.
En cada clase existen rangos de direcciones reservados para su uso en redes de área local (LANs). Se garantiza que estas direcciones no entren en conflicto con las direcciones propias de Internet (en consecuencia, si una de estas direcciones se asigna a un equipo éste no podrá acceder a Internet directamente sino a través de una puerta de enlace que actúe como proxy para los servicios individuales o hacer la traducción de direcciones de red – NAT) Estos rangos de direcciones se dan en la siguiente tabla junto con el número de rangos en cada clase.
direcciones de red longitud cantidad Clase A 10.x.x.x /8 1 Clase B 172.16.x.x - 172.31.x.x /16 16 Clase C 192.168.0.x - 192.168.255.x /24 256
La primera dirección en una red IP es la dirección de la propia red. La última dirección es la dirección de difusión de la red. [40] Todas las otras direcciones se pueden asignar a máquinas de la red. De éstas, la primera o la última dirección generalmente se asigna a la puerta de enlace para Internet.
La tabla de rutas contiene información sobre cómo enviar paquetes IP a sus destinos. Veamos una impresión de ejemplo de la tabla de rutas para una máquina Debian de una red de área local (LAN) con dirección IP 192.168.50.x/24. La máquina 192.168.50.1 (también en la LAN) es un router para la red corporativa 172.20.x.x/16 y la máquina 192.168.50.254 (también en la LAN) es un router para Internet.
# route Kernel IP routing table Destination Gateway Gateway Genmask Flags Metric Ref Use Iface 127.0.0.0 * 255.0.0.0 U 0 0 2 lo 192.168.50.0 * 255.255.255.0 U 0 0 137 eth0 172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0 default 192.168.50.254 0.0.0.0 UG 1 0 36 eth0
La primera línea después del encabezado dice que el tráfico destinado a la red 127.x.x.x será encaminado hacia la interfaz de retorno (loopback) lo.
La segunda línea dice que el tráfico destinado para las máquinas de la LAN será encaminado a través de eth0.
La tercer línea dice que el tráfico destinado a la red corporativa será encaminado a la puerta de enlace 192.168.50.1 y también a través de eth0.
La cuarta línea dice que el tráfico destinado a Internet será encaminado a la puerta de enlace 192.168.50.254 también a través de eth0.
Las direcciones IP en la tabla también pueden aparecer como nombres que se
obtienen observando las direcciones en /etc/networks
o usando la
biblioteca C resolver.
Ademas de encaminar, el kernel puede realizar la traducción de las direcciones de red, la modulación del tráfico y su filtrado.
Véase el Net-HOWTO
y
other
networking HOWTOs
para más información.
Las herramientas tradicionales de configuración de red a bajo nivel en
sistemas GNU/Linux son los programas ifconfig
y route
que vienen en el paquete net-tools
. Estas herramientas han sido
oficialmente reemplazadas por ip
que viene en el paquete
iproute
. El programa ip
funciona con Linux 2.2 y
superior y es más poderoso que las herramientas anteriores. Sin embargo, las
herramientas anteriores aún funcionan y resultan más familiares para muchos
usuarios.
ifconfig
y route
Veamos una ilustración de cómo cambiar la dirección IP de la interfaz
eth0 de 192.168.0.3 a 192.168.0.111 y
convertir a eth0 en la ruta a la red 10.0.0.0 vía
192.168.0.1. Empiece ejecutando ifconfig
y
route
sin argumentos para mostrar el estado actual de todas las
interfaces de red y encaminamiento.
# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:23363 errors:0 dropped:0 overruns:0 frame:0 TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB) Interrupt:9 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:230172 errors:0 dropped:0 overruns:0 frame:0 TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB) # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0 default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0
Primero deshabilitamos la interfaz.
# ifconfig eth0 inet down # ifconfig lo Link encap:Local Loopback ... (no más entradas eth0) # route ... (no más entradas en la tabla de rutas)
Luego la habilitamos con la nueva IP y la nueva ruta.
# ifconfig eth0 inet up 192.168.0.111 \ netmask 255.255.0.0 broadcast 192.168.255.255 # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
El resultado:
# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.111 Bcast:192.168.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ... lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ... # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0 10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0
Para más información véase ifconfig(8)
y route(8)
.
ip
Los comandos ip
equivalentes a los comandos ifconfig
y route
anteriores son:
ip link show
ip route list
ip link set eth0 down
ip addr del dev eth0 local 192.168.0.3
ip addr add dev eth0 local 192.168.0.111/16 broadcast 192.168.255.255
ip link set eth0 up
ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via 192.168.0.1
El programa ip
muestra la sintaxis de sus comandos cuando se
ejecuta con el argumento help. Por ejemplo, ip link
help imprime por pantalla :
Usage: ip link set DEVICE { up | down | arp { on | off } | dynamic { on | off } | multicast { on | off } | txqueuelen PACKETS | name NEWNAME | address LLADDR | broadcast LLADDR | mtu MTU } ip link show [ DEVICE ]
Véase también ip(8)
.
Para interfaces Wi-Fi se utiliza el programa iwconfig
, que viene
con el paquete wireless-tools
, además de ifconfig
o
ip
.
Véase iwconfig(8)
.
Si accede a Internet mediante un módem conectado a la línea telefónica doméstica la conexión se negocia usando el Protocolo Point-to-Point (PPP). Dichas conexiones se acceden como interfaces de red ppp0, ppp1, etc.
Una interfaz PPP es administrada por el demonio PPP pppd
que viene
con el paquete ppp
. De esta manera, para el usuario, configurar
una interfaz PPP equivale a configurar pppd
.
pppd
en forma manual
Para establecer un vínculo con una red, se necesita abrir un puerto de
comunicación (generalmente un puerto serie), los comandos deben enviarse a un
dispositivo de comunicación (generalmente un módem) se debe marcar un número
telefónico, se debe autenticar la identidad con un demonio PPP externo, se
debe crear una interfaz PPP y deben modificarse las tablas de ruta de modo que
el tráfico se pueda enviar por el enlace. pppd
puede hacer todo
esto y, en consecuencia, posee una lista muy extensa de opciones operativas.
Estas opciones se describen en pppd(8)
.
En un sistema Debian, las opciones globales se configuran en
/etc/ppp/options
. Las opciones específicas al usuario se
configuran en ~/.ppprc
. Las opciones que dependen del puerto de
comunicación utilizado son almacenadas en
/etc/ppp/options.nombre_puerto
. Por ejemplo,
supongamos que tiene dos módems— un módem interno Lucent LT accesible a
través de /dev/LT-modem y un módem externo accesible a través de /dev/ttyS0.
Cree los dos archivos de opciones siguientes.
# cat > /etc/ppp/options.LT-modem <<EOF 115200 init "/usr/sbin/chat -f /etc/chatscripts/setup-LT-modem" EOF # cat > /etc/ppp/options.ttyS0 <<EOF 115200 init "/usr/sbin/chat -f /etc/chatscripts/setup-ttyS0" EOF
Estos se refieren a los siguientes scripts chat. Primero,
/etc/chatscripts/setup-LT-modem
.
ABORT ERROR '' ATZ OK 'ATW2X2 S7=70 S11=55' OK AT
Segundo, /etc/chatscripts/setup-ttyS0
.
ABORT ERROR '' ATZ OK 'ATL1M1Q0V1W2X4&C1&D2 S6=4 S7=70 S11=55 S95=63 S109=1 +FCLASS=0' OK AT
Obviamente, los contenidos de estos archivos dependen de su hardware.
Las opciones también se pueden pasar como argumentos a pppd
.
En Debian pppd
generalmente se inicia usando el comando
pon
. Cuando se utiliza pon
, su primer argumento
define un archivo de opciones en /etc/ppp/peers/
que también es
leído por pppd
. [41] Es allí
donde se configuran las opciones que son específicas a un máquina distante
particular, por ejemplo, a un determinado Proveedor de Servicios de Internet
(ISP).
Supongamos, por ejemplo, que alterna entre Amsterdam y Den Haag. En cada ciudad tiene acceso a dos ISP —Planet y KPN. Primero cree un archivo de opciones básico para cada ISP.
# cat > /etc/ppp/peers/KPN <<EOF remotename KPN noauth user kpn noipdefault ipparam KPN EOF # cat > /etc/ppp/peers/Planet <<EOF remotename Planet auth user usuario3579@planet.nl noipdefault mru 1000 mtu 1000 ipparam Planet EOF
Estos archivos fijan opciones que difieren entre los dos ISPs. Las opciones
comunes a ambos ISPs se pueden ubicar en /etc/ppp/options
o,
según corresponda, en uno de los archivos de opciones específico a la
interfaz.
A continuación, cree los archivos de opciones para el ISP de cada ciudad. En nuestro ejemplo, la única diferencia entre conectarse a un ISP en un lugar y en otro es el script chat que se necesita (el script chat es diferente porque el número telefónico de acceso local es diferente)
# cat > /etc/ppp/peers/KPN-Amsterdam <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-Amsterdam" file /etc/ppp/peers/KPN EOF # cat > /etc/ppp/peers/KPN-DenHaag <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-DenHaag" file /etc/ppp/peers/KPN EOF # cat > /etc/ppp/peers/Planet-Amsterdam <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-Amsterdam" file /etc/ppp/peers/Planet EOF # cat > /etc/ppp/peers/Planet-DenHaag <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-DenHaag" file /etc/ppp/peers/Planet EOF
Cada una de las directivas file incluye uno de los archivos de
opciones que se mostraron anteriormente. La directiva connect
especifica el comando que pppd
utiliza para establecer la
conexión. Normalmente se utiliza para esto el programa chat
,
adaptando el script chat al ISP. Veamos los scripts chat para Den Haag. Los
pertenecientes a Amsterdam podrían ser similares (salvo el número
telefónico) o diferentes si el ISP ofrece allí su servicio a través de otra
compañia.
# cat > /etc/chatscripts/KPN-DenHaag <<EOF ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT ERROR OK-AT-OK ATDT 0676012321 CONNECT \d\c EOF # cat > /etc/chatscripts/Planet-DenHaag <<EOF ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT ERROR OK-AT-OK ATDT 0676002505 CONNECT \d\c EOF
Para poderse conectar a estos ISPs se necesitan los nombres de cliente y
contraseñas que pppd
puede suministrar bajo demanda. Esta
información se almacena en /etc/ppp/pap-secrets
(si se utiliza el
protocolo PAP) o en /etc/ppp/chap-secrets
(si se utiliza el
protocolo CHAP). Aunque CHAP es más seguro, PAP aún sigue siendo ampliamente
utilizado. Puesto que estos archivos contienen información confidencial, ni
el grupo ni el resto de usuarios deberían tener permiso de lectura o escritura
sobre ellos. El formato de estos archivos se explica en pppd(8)
.
Un "secreto" (tercer campo) se localiza en el archivo buscando el
nombre del cliente (primer campo) y/o el nombre del servidor (segundo campo).
Al conectarse a un ISP uno, generalmente, no conoce el nombre del servidor y,
en cambio, suministra el nombre del cliente (usuario); esto fue hecho en las
líneas user de peers/KPN
y peers/Planet
de arriba.
# nombre del cliente nombre del servidor secreto kpn * kpn usuario3579@planet.nl * mi_mascota_preferida
pppd
usando pppconfig
Una manera rápida de configurar pppd
consiste en usar el programa
pppconfig
que viene con el paquete del mismo nombre.
pppconfig
configura los archivos como los anteriores luego de
formular preguntas al usuario a través de una interfaz de menús.
Si elije usar resolvconf
entonces asegúrese de elegir
"None" en la pantalla "Configure Nameservers".
wvdial
Un enfoque diferente para usar pppd
consiste en ejecutarlo desde
wvdial
que viene con el paquete wvdial
. En vez de
hacer que pppd
ejecute chat
para marcar y negociar la
conexión, wvdial
realiza el marcado, la negociación inicial y
luego inicia pppd
para que haga el resto. En la mayoría de los
casos dando sólamente el número telefónico, el nombre de usuario y la
contraseña, wvdial
logra establecer la conexión.
Un sistema Debian a veces necesita identificarse por su nombre. Para este propósito el kernel guarda el hostname (nombre de la máquina).
El script de inicio /etc/init.d/hostname.sh
establece el nombre de
la máquina durante el arranque (con el comando hostname
) usando
el nombre almacenado en /etc/hostname
. Este archivo
únicamente debería contener el nombre de la máquina y no un
nombre de dominio completo.
Para mostrar el nombre actual de la máquina ejecute hostname
sin
argumentos.
El mailname (nombre para el correo) de un máquina es el
nombre que los programas relacionados con el correo utilizan para identificar
la máquina. El archivo /etc/mailname
contiene este nombre
seguido de una nueva línea. Generalmente el nombre para el correo es uno de
los nombres de dominio completo de la máquina. Véase
mailname(5)
.
Lo que ve el destinatorio de los mensajes de correo en la cabecera From: del mensaje enviado por su máquina Debian depende de cómo se encuentran configurados el Agente de Usuario de Correo (MUA) y el Agente de Transferencia de Correo (MTA). Supongamos que un usuario local quiensea envía un mensaje de una máquina con nombre para el correo mimáquina.dom. La cabecera From: del mensaje saliente será:
"From: quiensea@mimáquina.dom" si el MUA no tiene configurada la cabecera From:;
"From: bar@mimáquina.dom" si el MUA tiene configurado "From: bar";
"From: bar@falso.dom" si el MUA tiene configurado "From: bar@falso.dom".
Incluso cuando el MUA tiene una cabecera From: configurada el MTA puede añadir una cabecera "Sender:quiensea@herman.dom" para indicar su verdadero origen.
Por supuesto, cuando cualquier MTA realiza la reescritura de direcciones como se discutió en Direcciones de correo electrónico inexistentes (Exim), Sección 9.6.1.2 y Reescritura selectiva de direcciones del correo saliente (Exim), Sección 9.6.1.3, la dirección electrónica visualizada por el destinatario se puede modificar arbitrariamente.
Las máquinas son referenciadas por el nombre de dominio y por su dirección
IP. DNS es un sistema cliente-servidor en donde los sistemas de resolución de
nombres (llamados también traductores de direcciones) consultan a los
servidores de nombres con objeto de asociar los nombres de dominio con las
direcciones IP y otras propiedades de las máquinas. La biblioteca C GNU
resolver(3)
también puede buscar direcciones IP en archivos o
consultar a los Servicios de Información de Red (NIS).
Para ver la dirección IP asociada a una máquina local utilice el comando hostname --fqdn. Esto muestra el primer nombre de dominio completo que el sistema de resolución encuentra para el nombre de máquina local. [42]
La tarea de averiguar las direcciones IP asociadas con un nombre de dominio
particular es la función de un sistema de resolución (resolver). El más
utilizado es el conjunto de funciones de la biblioteca C GNU que llevan este
nombre (resolver(3)
). Otro es sistema de resolución FireDNS que
viene con el paquete libfiredns
.
La forma que el sistema de resolución de la biblioteca C resuelve los nombres
viene dada por la línea hosts del archivo de configuración
/etc/nsswitch.conf
. Esta línea lista los servicios que deberían
usarse para resolver un nombre: por ejemplo, dns,
files, nis, nisplus. [43] Véase nsswitch.conf(5)
. Si se utiliza el
servicio files, el comportamiento del sistema de resolución
también viene regido por el archivo de configuración /etc/hosts
.
Véase hosts(5)
.
Todos los archivos anteriores son estáticos y se pueden editar con su editor favorito.
Si se utiliza el servicio dns, el comportamiento del sistema de
resolución también viene dado por el archivo de configuración
/etc/resolv.conf
. Véase resolv.conf(5)
. Una de las
funciones importantes del archivo resolv.conf
consiste en listar
las direcciones IP de los servidores de nombres que se contactarán para
resolver el nombre. Esta lista a menudo depende del entorno de red que puede
cambiar de tanto en tanto mientras la máquina está funcionando. Programas
tales como pppd
y dhclient
son capaces de manipular
resolv.conf
para añadir y eliminar líneas, pero estas
características no siempre funcionan adecuadamente y entran en conflicto entre
sí. El paquete resolvconf
soluciona mejor el problema
proporcionando un marco estándar para la actualización de este archivo.
Véase Administrando la información del servidor
de nombres – resolvconf
, Sección 10.4.2.
resolvconf
El paquete resolvconf
proporciona un marco para la administración
dinámica de la información relativa a los servidores de nombres disponibles.
Soluciona el antiguo problema de mantener las listas dinámicas de los nombres
de los servidores para ser usadas por el sistema de resolución y los cachés
DNS. Resolvconf se posiciona como intermediario entre los programas que
controlan las interfaces de red y suministran información de los servidores de
nombre, y las aplicaciones que necesitan de dicha información.
resolvconf
está diseñado para funcionar sin que sea necesaria
ninguna configuración manual. No obstante, el paquete es bastante nuevo y
puede requerir alguna intervención para lograr que funcione adecuadamente.
Esto será realmente así si alguna vez personalizó paquetes para que
actualicen al /etc/resolv.conf
: necesitará deshabilitar estas
personalizaciones.
Véase file:///usr/share/doc/resolvconf/README.gz
para más detalles.
dnsmasq
Salvo que su servidor de nombres sea el servidor oficial de un dominio resulta
mejor utilizar un servidor de nombres con caché local como
dnsmasq
que funciona bien con resolvconf
.
bind
Si necesita proveer un servicio de nombres oficial para un dominio entonces
necesita de un servidor de nombres completo como named
que viene
con el paquete bind9
o con bind
. Para nuevas
instalaciones se recomienda bind9
.
Para instalar bind9
, instale estos paquetes básicos:
bind9
; dnsutils
. Puede que también quiera instalar
estos paquetes de utilidades: bind9-host
; dns-browse
;
dnscvsutil
; nslint
. Este paquete de documentación:
bind9-doc
. y estos paquetes de desarrollo:
libbind-dev
; libnet-dns-perl
.
Instale bind9
o vuelva a configurarlo usando
dpkg-reconfigure
para realizar la configuración básica. La
configuración consiste en editar named.conf
. En Debian este
archivo se encuentra en /etc/bind/
y se utiliza principalmente
para definir las zonas DNS básicas; incluye otros dos archivos:
named.conf.local
, utilizado para definir las zonas locales y
named.conf.options
, utilizado para configurar opciones (este
último es procesado por resolvconf
para producir
/var/run/bind/named.options
que es el mismo que el original
excepto que la especificación forwarders es una lista de los
servidores de nombre no locales actualmente disponibles. Para hacer uso de
ello, cambie la línea include del named.conf
de modo
que incluya /var/run/bind/named.options
. Véase Administrando la información del servidor de nombres
– resolvconf
, Sección 10.4.2.)
Los archivos de base de datos sin una ruta completa mencionados en
named.conf*
se almacenarán en /var/cache/bind/
.
Este es el lugar correcto para almacenar archivos generados por
named
: por ejemplo, los archivos de bases de datos para las zonas
cuyo demonio es secundario. Los archivos de base de datos estáticos de
/etc/bind/
están y deben referenciarse en named.conf
mediante sus rutas completas. Véase file:///usr/share/doc/bind9/README.Debian.gz
para más detalles.
La configuración de las interfaces de red de bajo nivel se puede automatizar mediante el Protocolo de Configuración Dinámica de Hosts (DHCP). De esta manera, su cortafuegos, router o su ISP de banda ancha puede suministrar direcciones IP y otros parámetros.
Para que esto funcione debe instalar uno de los siguientes paquetes:
dhcp3-client
(versión 3, Internet Software Consortium)
dhcpcd
(Yoichi Hariguchi y Sergei Viznyuk)
pump
(Red Hat)
pump
es sencillo y ampliamente utilizado.
dhcp3-client
es complejo pero más configurable. [44]
A fin de facilitar la configuración de la red, Debian proporciona una
herramienta estándar de configuración de red de alto nivel que consiste en
los programas ifup
, ifdown
y el archivo
/etc/network/interfaces
. [45] Si
elige utilizar ifupdown
para realizar la configuración de su red,
entonces no debería usar los comandos de bajo nivel. [46] Ifupdown
se programó bajo la
suposición que sólo iba a ser utilizado para configurar y desconfigurar las
interfaces de red.
Para actualizar la configuración de la interfaz haga lo siguiente:
# ifdown eth0 # editor /etc/network/interfaces # modifique a su antojo # ifup eth0
Para más información véase interfaces(5)
, file:///usr/share/doc/ifupdown/examples/network-interfaces.gz
y ifup(8)
.
Supongamos que desea configurar una interfaz Ethernet que tiene una dirección
IP fija 192.168.0.123. Esta dirección comienza con
192.168.0 por lo tanto debe estar en una LAN. Supongamos además
que 192.168.0.1 es la dirección de la puerta de enlace de la LAN
a Internet. Edite /etc/network/interfaces
de modo que incluya un
fragmento como el siguiente:
iface eth0 inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1
Si tiene instalado el paquete resolvconf
puede añadir líneas
para especificar la información relativa al DNS. Por ejemplo:
iface eth0 inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1 dns-search nicedomain.org dns-nameservers 195.238.2.21 195.238.2.22
Luego que se activa la interfaz, los argumentos de las opciones
dns-search y dns-nameservers quedan disponibles para
resolvconf
para su inclusión en resolv.conf
. El
argumento lindodominio.org de la opción dns-search
corresponde al argumento de la opción search en
resolv.conf(5)
. Los argumentos 195.238.2.21 y
195.238.2.22 de la opción dns-nameservers
corresponde a los argumentos de las opciones nameserver en
resolv.conf(5)
. Otras opciones reconocidas son
dns-domain y dns-sortlist. Véase Administrando la información del servidor de nombres
– resolvconf
, Sección 10.4.2.
Para configurar una interfaz usando DHCP edite el
/etc/network/interfaces
de manera que incluya un fragmento como el
siguiente :
iface eth0 inet dhcp
Para que esto funcione debe tener instalado uno de los clientes DHCP mencionados en Configurando las interfaces de red usando DHCP, Sección 10.5.
El paquete wireless-tools
incluye el script
/etc/network/if-pre-up.d/wireless-tools
que permite configurar
hardware Wi-Fi (802.11a/b/g) antes que se active la interfaz. La
configuración se realiza usando el programa iwconfig
; véase
iwconfig(8)
. Para cada parámetro posible del comando
iwconfig
puede incluir una opción en
/etc/network/interfaces
con un nombre como el del parámeto con el
prefijo "wireless-". Por ejemplo, para fijar el ESSID de
eth0 en miessid y la clave de cifrado en
123456789e antes de activar eth0 usando DHCP, edite
el /etc/network/interfaces
de modo que incluya un fragmento como
el siguiente :
iface eth0 inet dhcp wireless-essid miessid wireless-key 123456789e
Obsérvese que no debería utilizar este método para configurar el ESSID y la
clave si está ejecutando waproamd
para esta interfaz. En el
momento que se ejecuta ifup
, waproamd
ya tiene
configurados ESSID y la clave. Véase Activando
la configuración de la red – waproamd
, Sección 10.9.4.
Los programas ifup
e ifdown
utilizan pon
y poff
para añadir y eliminar interfaces PPP, por lo tanto,
primero lea Configurando una interfaz PPP, Sección
10.2.4.
Supongamos que ha configurado PPP para que funcione con mi_isp.
Edite /etc/network/interfaces
de modo que incluya una sección
como la siguiente :
iface ppp0 inet ppp provider mi_isp
con este fragmento, ifup ppp0
hace
pon mi_isp
Desafortunadamente no es posible hoy por hoy proporcionar otras opciones a
pppd
en un sección ppp de
/etc/network/interfaces
. [47]
Actualmente no es posible usar ifupdown
para realizar una
configuración auxiliar de las interfaces PPP. Como pon
desaparece antes que pppd
haya terminado de establecer la
conexión, ifup
ejecuta los scripts up antes que la
interfaz PPP esté lista para usar. Hasta que se solucione este fallo [48] sigue siendo necesario realizar una
configuración posterior en /etc/ppp/ip-up
o
/etc/ppp/ip-up.d/
.
Muchos Proveedores de Servicios de Internet (ISPs) de banda ancha utilizan PPP
para negociar las conexiones incluso cuando las máquinas de los clientes
están conectados mediante Ethernet y/o redes ATM. Esto se logra mediante PPP
sobre Ethernet (PPPoE) que es una técnica para el encapsulamiento del flujo
PPP dentro de las tramas Ethernet. Supongamos que su ISP se llama
mi_isp. Primero configure PPP y PPPoE para
mi_isp. La manera más fácil de hacerlo consiste en
instalar el paquete pppoeconf
y ejecutar pppoeconf
desde la consola. A continuación, edite /etc/network/interfaces
de modo que incluya un fragmento como el siguiente:
iface eth0 inet ppp provider mi_isp
A veces surgen problemas con PPPoE relativos a la Unidad de Transmisión
Máxima (Maximum Transmit Unit o MTU) en líneas DSL (Digital Subscriber Line).
Véase DSL-HOWTO
para más
detalles.
Obsérvese que si su módem posee un router entonces el módem/router maneja por sí mismo la conexión PPPoE y aparece del lado de la LAN como una simple puerta de enlace Ethernet a Internet.
Supongamos que eth0
está conectada a Internet con un dirección
IP configurada con DHCP y eth1
está conectada a la LAN con una
dirección IP estática 192.168.1.1. Edite
/etc/network/interfaces
de modo que incluya un fragmento similar
al siguiente:
iface eth0 inet dhcp iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0
Si activa NAT en esta máquina como se describe en Configurando una puerta de enlace, Sección 10.12 puede compartir la conexión de Internet con todas las máquinas de la LAN.
Usando interfaces virtuales puede configurar una única tarjeta Ethernet para
que sea la interfaz de distintas subredes IP. Por ejemplo, supongamos que su
máquina se encuentra en una red LAN 192.168.0.x/24. Desea conectar la
máquina a Internet usando una dirección IP pública proporcionada con DHCP
usando su tarjeta Ethernet existente. Edite
/etc/network/interfaces
de modo que incluya un fragmento similar
al siguiente:
iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 iface eth0:0 inet dhcp
La interfaz eth0:0 es una interfaz virtual. Al activarse también lo hará su padre eth0.
En lo que sigue sería importante que el lector comprenda la diferencia entre una interfaz física y una interfaz lógica. [49] Una interfaz física es lo que hemos estado llamando "interfaz", lo que hemos designado con eth0, ppp1, etc. Una interfaz lógica es un conjunto de valores que pueden asignarse a los parámetros variables de una interfaz física. Si al leer le resulta confuso, reemplace la expresión "configurada como interfaz lógica X" por la expresión "configurada con el perfil de la interfaz X".
Las definiciones iface en /etc/network/interfaces
son, en realidad, definiciones de interfaces lógicas no de interfaces
físicas. [50] Si nunca más desea volver a
configurar sus interfaces entonces puede ignorar este hecho ya que la interfaz
física X será configurada, por defecto, como interfaz lógica
X.
No obstante, supongamos que su máquina es un equipo portátil que transporta de su casa a su trabajo. Cuando conecta la máquina a una red corporativa o a su LAN hogareña, necesita configurar eth0 adecuadamente.
Primero defina dos interfaces lógicas hogar y trabajo (en vez de eth0 como hicimos antes) que describen cómo debería configurarse la interfaz para la red hogareña y la del trabajo respectivamente.
iface hogar inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1 iface trabajo inet static address 81.201.3.123 netmask 255.255.0.0 gateway 81.201.1.1
De esta manera, la interfaz física eth0 se puede activar para la red hogareña con la configuración apropiada especificándola en la línea de comandos:
# ifup eth0=hogar
Para reconfigurar eth0 para la red del trabajo, ejecute los comandos:
# ifdown eth0 # ifup eth0=trabajo
Obsérvese que con el archivo interfaces
escrito así ya no
resultará posible activar eth0 haciendo solamente ifup
eth0. La razón es que ifup
utiliza el nombre de la
interfaz física como el nombre de la interfaz lógica eth0
predeterminada y, en realidad, en nuestro ejemplo no hay una interfaz lógica
definida.
Cuando se ejecuta ifup
, los nombres de las interfaces lógicas se
pueden transformar en los nombres de otras interfaces lógicas. La manera en
que se transforman los nombres depende de las circunstancias. Por ejemplo, se
puede configurar ifup
para activar una determinada interfaz
física con la interfaz lógica adecuada entre un conjunto de alternativas
predefinidas.
La transformación del nombre de la interfaz lógica ocurre en los siguientes casos :
Si en la línea de comandos de ifup
no se da el nombre de la
interfaz lógica entonces como nombre de interfaz lógica inicial se utiliza el
nombre de la interfaz física.
Si el nombre de la interfaz lógica coincide con el patrón de una sección mapping entonces se aplica esta transformación para generar un nuevo nombre de interfaz lógica. Esto se realiza recursivamente hasta que no haya más coincidencias con el patrón.
Si el nombre de la última interfaz lógica corresponde a la definición de una
interfaz lógica de /etc/network/interfaces
entonces la interfaz
física es activada como esta interfaz lógica. Caso contrario
ifup
muesta el mensaje "Ignoring unknown interface" y se
detiene.
La sintaxis de una sección mapping es la siguiente:
mapping patrón script nombre_script [map script]
El script llamado en la sección mapping es ejecutado con el nombre de la interfaz física como argumento y con el contenido de todas las líneas "map" de la sección. Antes de finalizar, el script muestra el resulta de la transformación por la salida estándar.
Por ejemplo, la siguiente sección mapping hará que
ifup
active la interfaz eth0 como interfaz lógica
hogar.
mapping eth0 script /usr/local/sbin/echo-hogar
donde /usr/local/sbin/echo-hogar
es :
#!/bin/sh echo hogar
Como la transformación se realiza mediante un script, resulta posible
seleccionar la interfaz lógica basándose en algun tipo de prueba. Veamos un
ejemplo. Supongamos que posee dos tarjetas de red diferentes: una para el
hogar y otra para el trabajo. El directorio
/usr/share/doc/ifupdown/examples/
contiene un script de
transformación que se puede usar para seleccionar una interfaz lógica
basándose en la dirección MAC (Media Access Controller). Primero instale el
script en un directorio apropiado.
# install -m770 /usr/share/doc/ifupdown/examples/get-mac-address.sh \ /usr/local/sbin/
A continuación añada una sección como la siguiente al
/etc/network/interfaces
:
mapping eth0 script /usr/local/sbin/get-mac-address.sh map 02:23:45:3C:45:3C hogar map 00:A3:03:63:26:93 trabajo
Programas de transformación más sofisticados se describen en guessnet, Sección 10.8.1 y laptop-net, Sección 10.8.2.
Instale guessnet
y luego añada una sección como la siguiente al
/etc/network/interfaces
:
mapping eth0 script guessnet-ifupdown map hogar map trabajo
Ahora al hacer ifup eth0
, guessnet
verificará si
eth0 tiene que activarse como hogar o
trabajo. Para ello utiliza la información almacenada en las
definiciones de las interfaces lógicas.
El paquete laptop-net
toma un enfoque diferente para la
reconfiguración automática de la red. Laptop-net no utiliza las interfaces
lógicas de ifupdown
sino sus propios "esquemas" de
configuración y "perfiles" de sistemas. No obstante, laptop-net
sigue usando ifupdown
para configurar las interfaces físicas.
Para más información consulte la excelente documentación de
laptop-net-doc
.
Hemos visto como se reconfiguran las interfaces. La reconfiguración necesita realizarse en el momento apropiado.
Tradicionalmente la red era configurada durante la secuencia de arranque
mediante el script init /etc/rcS.d/S40networking
y raramente se
volvía a configurar. Los servicios que dependían de la red eran lanzados
luego durante la secuencia de arranque. Al apagar o reiniciar, los scripts
init eran ejecutados en el orden inverso.
Sin embargo, actualmente existe una tendencia en GNU y Linux al soporte de
hardware y entornos que cambian dinámicamente. El primer soporte se añadió
para la inserción en caliente de tarjetas PCMCIA ; más recientemente ha sido
incorporado el mecanismo hotplug para que muchos más periféricos
se puedan enchufar y desenchufar mientras la máquina se encuentra funcionando.
Esto incluye el hardware de red. Observe que los servicios que dependen del
hardware que se conecta en caliente sólo deben iniciarse luego que el hardware
haya sido insertado y deben detenerse cuando se hayan eliminado. Esto
significa que dichos servicios deben liberarse del control del sistema init
System V y ponerlos, en cambio, bajo el control de ifupdown
.
Por ejemplo, supongamos que el servicio loquesea controlado por el
script init /etc/init.d/loquesea
depende dinámicamente de la
interfaz de red reconfigurada eth0.
Primero elimine loquesea del control del sistema init. Si está
ultilizando el sistema init sysv-rc
entonces haga lo siguiente.
[51]
# rm /etc/rc?.d/S??loquesea
Luego ponga loquesea bajo el control de ifupdown
añadiendo las opciones up y down en la sección
eth0 de /etc/network/interfaces
que contiene las
llamadas al script init loquesea:
iface eth0 inet dhcp up /etc/init.d/loquesea start down /etc/init.d/loquesea stop
Al arrancar, el script de init /etc/rcS.d/S40networking
ejecuta el
comando ifup -a
. Esto activa todas las interfaces físicas que
aparecen en las secciones auto de
/etc/network/interfaces
.
Actualmente, a menudo resulta mejor manejar la configuración de la red usando
métodos dinámicos. Una vez configurados los mecanismos para el soporte de
hardware que cambia en forma dinámica, resulta más sencillo tratar el
hardware estático como si fuera dinámico. El arranque se puede considerar
como un simple evento hotplug. (Véase Activando
la configuración de la red – hotplug
, Sección 10.9.2.)
No obstante, en casi todos los casos uno desea por lo menos que la interfaz de
retorno (loopback) lo se active en el arranque. Por lo tanto,
asegúrese que /etc/network/interfaces
incluya las siguientes
líneas:
auto lo iface lo inet loopback
Puede listar los nombres de interfaces físicas adicionales en las secciones
auto si desea que también se activen durante el arranque.
Nunca incluya las interfaces PCMCIA en las secciones
auto. cardmgr
se inicia durante el arranque luego de
/etc/rcS.d/S40networking
.
hotplug
Para el soporte del arranque en caliente instale el paquete
hotplug
.
El hardware de red se puede enchufar en caliente ya sea durante el arranque,
tras haber insertado la tarjeta en la máquina (una tarjeta PCMCIA, por
ejemplo), o luego que una utilidad como discover
se haya ejecutado
y cargado los módulos necesarios. [52]
Cuando el kernel detecta nuevo hardware inicializa el controlador para el
hardware y luego ejecuta el programa hotplug
para configurarlo.
Si más tarde se elimina el hardware, ejecuta nuevamente hotplug
con parámetros diferentes. En Debian, cuando se llama a hotplug
éste ejecuta los scripts de /etc/hotplug/
y
/etc/hotplug.d/
. Véase hotplug(8)
para más
detalles.
El hardware de red recientemente conectado es configurado por el
/etc/hotplug/net.agent
. [53]
Supongamos que su tarjeta de red PCMCIA ha sido conectada lo que implica que la
interfaz eth0 esta lista para usar.
/etc/hotplug/net.agent
hace lo siguiente:
ifup eth0=hotplug
A menos que haya añadido una interfaz lógica llamada hotplug en
/etc/network/interfaces
, este comando no hará nada. Para que
este comando configure eth0, añada las siguientes líneas al
/etc/network/interfaces
:
mapping hotplug script echo
Como se explicó en Reconfiguración de la red, Sección 10.7 esto transformará el comando mostrado arriba de modo que sea equivalente al siguiente:
ifup eth0=eth0
(No incluya una sección de este tipo si también posee una
sección ifplugd para la misma interfaz como se describió en Activando la configuración de la red –
ifplugd
, Sección 10.9.3.)
Si sólo desea que eth0 se active en caliente y no otras
interfaces utilice grep
en vez de echo
como se
muestra a continuación :
mapping hotplug script grep map eth0
Véase Reconfiguración mágica de la red,
Sección 10.8 y file:///usr/share/doc/hotplug/README.Debian
para más trucos.
ifplugd
ifplugd
activa o desactiva una interfaz según si el hardware
subyacente está o no conectado a la red. El programa puede detectar un cable
conectado a una interfaz Ethernet o un punto de acceso asociado a una interfaz
Wi-Fi. Cuando ifplugd
ve que el estado del enlace ha cambiado
ejecuta un script que por defecto ejecuta ifup
o
ifdown
para la interfaz.
ifplugd
funciona correctamente en combinación con
hotplug
. Al insertar una tarjeta, lo que significa que la
interfaz está lista para usar, /etc/hotplug.d/net/ifplugd.hotplug
inicia una instancia de ifplugd
para dicha interfaz. Cuando
ifplugd
detecta que la tarjeta es conectada a una red, ejecuta
ifup
para esta interfaz.
Véase el archivo README del paquete waproamd
para más
información.
waproamd
Para asociar una tarjeta Wi-Fi con un punto de acceso puede que necesite
programarla con una clave de cifrado WEP adecuada. Si está utilizando
ifplugd
para controlar ifup
como se explicó en Activando la configuración de la red –
ifplugd
, Sección 10.9.3 entonces evidentemente no podrá
configurar la clave de cifrado usando ifup
ya que éste sólo es
llamado luego que la tarjeta ha sido asociada. Una solución posible consiste
en programar todas las claves necesarias en la memoria no volátil de la
tarjeta Wi-Fi. Pero si deambula por diversas redes su tarjeta Wi-Fi puede no
ser capaz de almacenar suficientes claves.
Otra solución consiste en usar waproamd
que configura la clave de
cifrado WEP según los puntos de acceso disponibles que se descubren mediante
escaneo.
waproamd
funciona perfectamente con hotplug
. Al
insertar una tarjeta, lo que implica una interfaz lista para usar,
/etc/hotplug.d/net/waproamd.hotplug
inicia una instancia de
waproamd
para dicha interfaz.
Para más información, véase el archivo README del paquete
waproamd
.
Si utiliza tarjetas de red PCMCIA de 16 bits entonces debe añadir
CARDMGR_OPTS="-f" al /etc/default/pcmcia
.
Esto enlentece un poco el proceso de inicialización pero evita una situación
de concurrencia (condición de carrera) ejecutando cardmgr
en
segundo plano hasta que hayan sido configuradas todas las tarjetas PCMCIA de 16
bits.
Aunque por defecto /etc/init.d/pcmcia
se ejecuta desde
/etc/rc2.d/S20pcmcia
puede ubicarlo antes, por ejemplo, en
/etc/rc2.d/S12pcmcia
para aseugrarse que el subsistema PCMCIA se
inicialice antes de arrancar los servicios de red en S20.
Existen diversas maneras para configurar las interfaces de red PCMCIA.
Para tarjetas de red PCMCIA PCI de 32 bits (CardBus):
hotplug
/ ifupdown
Para tarjetas de red PCMCIA ISA de 16 bits:
hotplug
/ ifupdown
con
/etc/pcmcia/network
desactivado (recomendado), o
pcmcia-cs
/ ifupdown
con
/etc/pcmcia/network
por defecto (obsoleto), o
pcmcia-cs
personalizado para habilitar características de
/etc/pcmcia/network
(obsoleto)
La manera recomendada para tarjetas de 16 bits aprovecha el hecho que el
subsistema hotplug de Linux 2.4 ahora soporta PCMCIA. Simplemente
siga las instrucciones de Activando la
configuración de la red – hotplug
, Sección 10.9.2.
[54] Sin embargo, nótese que afin de evitar que
el script /etc/pcmcia/network
de cardmgr
no
interfiera con hotplug
debe añadir la línea:
exit 0
al comienzo de /etc/pcmcia/network
para desactivar su
comportamiento predeterminado.
Obsérvese que no hay nada de malo ejecutar cardmgr
. Simplemente,
no deseamos que llame a los programas de configuración de red.
Para que cardmgr
funcione correctamente puede que necesite editar
/etc/pcmcia/config.opts
a fin de configurar los recursos asignados
a las tarjetas PCMCIA de 16 bits. Véase PCMCIA,
Sección 7.2.1 y el Linux PCMCIA
HOWTO
para más información.
La configuración típica de los servicios de red en un entorno de escritorio o servidor hogareño incluye:
El superservidor de Internet y envoltorio de demonios TCP/IP, véase Control de accesos a los demonios, Sección 9.2.5.
/etc/inetd.conf
ssh
: shell segura OpenSSH, véase SSH, Sección
9.5.
/etc/ssh/ssh_config
/etc/ssh/sshd_config
exim
: agente de transporte de correo, véase Nombre para el correo, Sección 10.3.2 y Agente de transporte de correo (MTAs), Sección 9.6.1.
/etc/exim/exim.conf
/etc/mailname
/etc/aliases
/etc/email-addresses
fetchmail
: demonio para descargar el correo de una cuenta POP3,
véase Utilidad de correo (Fetchmail), Sección
9.6.2.
/etc/fetchmailrc
procmail
: programa para filtrar y distribuir el correo local,
véase Utilidad de correo (Procmail), Sección 9.6.3.
~/.procmailrc
Nombre de la máquina y DNS (proxy, caché, ...), véase Nombre de la máquina, Sección 10.3.1 y Servicio de Nombres de Dominio (DNS), Sección 10.4.
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/resolv.conf
/etc/bind/named.conf
(editar)
/etc/bind/db.lan
(añadir para los equipos de una LAN)
/etc/bind/db.192.168.0
(añadir para el DNS inverso de
una LAN)
DHCP, véase Configurando las interfaces de red usando DHCP, Sección 10.5.
/etc/dhcp3/dhclient.conf
(DHCP del lado del cliente)
/etc/default/dhcp3-server
(DHCP del lado del servidor)
/etc/dhcp3/dhcpd.conf
(DHCP del lado del servidor)
cvs
: sistema de versiones concurrentes, véase Sistema de versiones concurrentes (CVS), Sección 12.1.
/etc/cvs-cron.conf
/etc/cvs-pserver.conf
nfs-kernel-server
: sistema de archivos de red, véase Configuración NFS, Sección 3.4. (para sistemas tipo UNIX)
/etc/exports
samba
: archivos de red y compartición de impresoras en redes
Windows, véase Configuración de Samba, Sección 3.5 y
Samba, Sección 8.6.38.
/etc/samba/smb.conf
Demonio para el sistema de impresión, véase Configuración de la impresora, Sección 3.6.
/etc/printcap
(para lpr)
apache
y apache2
: servidor web.
/etc/apache/*
/etc/apache2/*
squid
: servidor proxy-caché.
/etc/squid/*
Si tropieza con problemas verifique la salida de los siguientes comandos para obtener una primera idea :
# ifconfig # cat /proc/pci # cat /proc/interrupts # dmesg | more
También véase las siguientes secciones Probando la red, Sección 8.6.29.
Si tiene problemas con ciertos sitios web, véase Problemas extraños al acceder a ciertos sitios de Internet, Sección 3.7.5.
Una máquina Debian puede ser una puerta de enlace multipropósito que haga la Traducción de las Direcciones de Red (NAT, también conocida como enmascaramiento), la transferencia de correo, DHCP, caché DNS, caché HTTP, servidor CVS, servidor NFS y servidor Samba. Véase Máquinas IP para usar en una LAN, Sección 3.1.9 para un ejemplo de esta configuración.
El proyecto netfilter/iptables es un sistema de firewall para Linux 2.4 y
posteriores. Véase Netfilter
donde se explican
diversos temas sobre la configuración de redes.
Netfilter procesa los paquetes mediante 5 cadenas incorporadas: PREROUTING, INPUT, FORWARD, OUTPUT, y POSTROUTING.
decisión de interfaz enrutado interfaz IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT ROUTING \ filter / ROUTING DNAT | tracking ^ SNAT REDIRECT | seguimiento | MASQUERADE v | INPUT OUTPUT | filtro ^ filtro,DNAT v | \--> Proceso Local --/ programas del espacio de usuario
Los paquetes son procesados por cada cadena según la siguiente tabla.
filter (filtro de paquetes, predeterminado)
INPUT (para los paquetes que llegan a la máquina)
FORWARD (para los paquetes encaminados por la máquina)
OUTPUT (para los paquetes generados localmente).
nat (Network Address Translation o Traducción de Direcciones de Red)
PREROUTING (para modificar los paquetes tan pronto lleguen)
OUTPUT (para modificar los paquetes generados localmente antes de encaminarlos)
POSTROUTING (para modificar los paquetes a punto de salir)
manipulación (manipulación de direcciones de red, efectiva a partir de la versión 2.4.18)
las 5 cadenas incluidas.
Las reglas de firewall poseen diversos objetivos:
los 4 objetivos básicos:
ACCEPT significa dejar pasar el paquete.
DROP significa descartar el paquete.
QUEUE significa pasar al paquete al espacio de usuario (si es soportado por el kernel).
RETURN significa detener el paso en la cadena y continuar con la regla siguiente de la cadena anterior.
otros objetivos:
LOG activa los registros del kernel.
REJECT reenvía un paquete con error y descarta el paquete.
SNAT modifica la dirección de origen del paquete y se usa únicamente en la cadena POSTROUTING (tabla nat únicamente)
--to-source ipaddr[-ipaddr][:port-port]
MASQUERADE es lo mismo que SNAT pero para direcciones IP asignadas en forma dinámica (conexión telefónica). (tabla nat únicamente)
--to-ports port[-port]
DNAT modifica la dirección de destino del paquete y se usa en las cadenas PREROUTING, OUTPUT y las cadenas definidas por el usuario que se llaman únicamente desde dichas cadenas (tabla nat únicamente)
--to-destination ipaddr[-ipaddr][:port-port]
REDIRECT modifica la dirección IP de destino para enviar el paquete a la propia máquina.
--to-ports port[-port]
Los comandos básicos de iptables
son:
iptables -N cadena # crear una cadena iptables -A cadena \ # añadir regla a la cadena -t tabla \ # usar tabla (filtro, nat, mangle) -p protocolo \ # tcp, udp, icmp, or all, -s dirección-fuente[/mask] \ --sport puerto[:port] \ # puerto de origen si -p es tcp o udp -d dirección-destino[/mask] \ --dport puerto[:port] \ # puerto de destino si -p es tcp o udp -j objetivo \ # qué hacer si coincide -i nombre-interfaz-entrada \# para INPUT, FORWARD, PREROUTING -o nombre-interfaz-salida # para FORWARD, OUTPUT, POSTROUTING
Las máquinas de una LAN pueden acceder a los recursos de Internet a través de una puerta de enlace que utiliza enmascaramiento IP (NAT) compartiendo una única dirección IP accesible desde el exterior
# apt-get install ipmasq
Aplique las reglas de ejemplo para mejorar la protección ipmasq
.
Consulte /usr/share/doc/ipmasq/examples/stronger/README
. Para el
paquete kernel-image-2.4 de Debian asegúrese de cargar los módulos adecuados.
Véase Funciones de Red, Sección 7.2.3 para
efectuar la correspondiente configuración.
Para el paquete kernel-image-2.2 de Debian, edite de la siguiente manera
Z92timeouts.rul
en /etc/masq/rules
para asegurar una
conexión más duradera con sitios distantes (conveniente para mensajes de
correo grandes, etc.):
# tcp, tcp-fin, udp # 2hr, 10 seg, 160 seg - predeterminado # 1 día, 10 min, 10 min - modificación $IPCHAINS -M -S 86400 600 600
Asimismo, si se accede a la red mediante una tarjeta de red PCMCIA,
ipmasq
necesita iniciarce desde
/etc/pcmcia/network.opts
. (consulte: file:///usr/share/doc/ipmasq/ipmasq.txt.gz
)
o desde /etc/network/interfaces
(consulte: Configuración de la red y PCMCIA, Sección 10.9.5
y Activando la reconfiguración de la red, Sección
10.9).
Supongamos que tiene una PC portátil configurada para otro entorno de red y que desea usar su programa de correo sin tener que reconfigurarla.
Añadiendo las siguientes reglas mediante el comando iptables
en
la puerta de enlace, la conexión SMTP será redirigida hacia ella.
# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \ -p tcp --dport smtp --to-port 25 # smtp=25, INPUT se encuentra abierta
Para el redireccionamiento de un conjunto de reglas más complejo considere
instalar el paquete ipmasq
y agregue
en el directorio M30redirect.def
/etc/ipmasq/rules/
.
[FIXME] Política de encaminamiento (por Phil Brutsche pbrutsch@tux.creighton.edu
):
Ver el iproute manual
para más
detalles. El control de tráfico (tc) puede ser también interesante.
Entorno:
eth0: 192.168.1.2/24; puerta de enlace 192.168.1.1 eth1: 10.0.0.2/24; puerta de enlace 10.0.0.1 Sin enmascaramiento en esta máquina.
Algo de magia:
ip rule add from 192.168.1.2 lookup 1
ip rule add from 10.0.0.2 lookup 2
ip route add to default via 10.0.0.1 metric 0
ip route add to default via 192.168.1.1 metric 1
ip route add table 1 to 192.168.1.0/24 via eth0
ip route add table 1 to 10.0.0.2/24 via eth1
ip route add table 1 to default via 192.168.1.1
ip route add table 2 to 192.168.1.0/24 via eth0
ip route add table 2 to 10.0.0.2/24 via eth1
ip route add table 2 to default via 10.0.0.2
[FIXME] Nunca hice esto. ¿Cómo configurar una conexión telefónica como respaldo de una conexión rápida y automática? Por favor, envíenme un parche :)
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Linux ofrece muchas alternativas en cuanto a editores de texto. Citemos algunos:
gim
: poderoso y pequeño editor patrimonio del BSD. Del inglés,
VI iMproved.
emacs
: el editor definitivo patrimonio del GNU. Original de RMS
(Richard M. Stallman).
xemacs
: Emacs: La Próxima Generación, originaria de Lucid.
mcedit
: editor GNU para principiantes. Idéntico al editor
interno del mc. Véase Editor, Sección 4.2.5
ae
: pequeño editor que trae por defecto Potato. Evítelo.
nano
: pequeño editor GNU que trae por defecto Woody. Emula a
pico
.
joe
: para los nostálgicos usuarios del WordStar o TurboPascal.
jed
: editor rápido, con múltiples funciones, basado en menúes y
con las combinaciones de teclas de emacs.
jove
: editor muy pequeño con las combinaciones de teclas de
emacs.
nvi
: el nuevo vi. Totalmente compatible con el vi original.
Utilice el comando update-alternatives --config editor para cambiar el editor por defecto. Asimismo, muchos programas utilizan las variables de entorno EDITOR o VISUAL para decidir qué editor utilizar. Véase Editor, Sección 4.2.5.
Vale la pena mencionar también algunos editores de texto basados en X:
gvim
: Vim con GUI (paquetes vim
y
vim-gtk
)
emacs
: el Único y Verdadero Emacs (autodetecta X).
xemacs
: Emacs de la próxima generación (autodetecta X).
Estos comandos aceptan las opciones estándar tales como -fn a24, que facilitan la vida a gente grande como yo :) Véase El cliente X, Sección 9.4.4.
Existen unos pocos editores situados en /bin/
. Debería
instalarse uno de ellos para facilitar la edición de archivos cuando
/usr/
no se encuentre accesible.
elvis-tiny
: editor vi mínimo (vi
para comenzar)
nano-tiny
: editor mínimo (nano-tiny
para comenzar)
nano
: editor mínimo (nano
para comenzar) (Sarge)
ed
: editor mínimo (siempre allí pero difícil de usar)
Lea el "archivo de ayuda principal de VIM" presionando <F1> mientras ejecuta el programa.
<F1> Ayuda <esc> Retorno al modo normal V Modo visual i Modo edición : Modo línea de comandos :set tw=72 Establecer el ancho de texto en 72 <F11> Modo edición (pegar) :r! date -R Inserta la fecha según la RFC-822 qa Grabar lo que se escribe en el registro a q Detiene la grabación @a Ejecutar lo que se escribió en el registro a :edit loquesea.txt Edite otro archivo cargando loquesea.txt :wnext Grabar el archivo actual y editar el siguiente archivo
q y @ pueden utilizarse para grabar y reproducir macros sencillas. Por ejemplo, para crear una macro que inserte etiquetas HTML para cursiva alrededor de una palabra escriba qii<i>^[ea</i>^[q (donde ^[ es la tecla ESC). Entonces, al escribir @i al inicio de una palabra se le añadirán la etiquetas <i> y </i>.
Véase también Usando GnuPG con Vim, Sección 14.4.2.
<F1> Ayuda <F10> Menú C-u M-! date -R Inserta la fecha RFC-822
Iniciar el editor: emacs nom_archivo vim nom_archivo Iniciar el modo compatible con vi: vim -C Iniciar el modo no compatible con vi: vim -N Iniciar con el compilador por defecto: emacs -q vim -N -u NONE
Salir: C-x C-c :qa /:wq /:xa /:q! Volver al modo comando: C-g <esc> Retroceder (flecha izquierda): C-b h Avanzar (flecha derecha): C-f l Siguiente (flecha hacia abajo): C-n j Anterior (flecha hacia arriba): C-p k Comienzo de línea (^): C-a 0 Final de línea ($): C-e $ Comandos múltiples: C-u nnn cmd :nnn cmd Comandos múltiples: M-número cmd Guardar archivo: C-x C-s :w archivo Comienzo del búfer: M-< 1G Final del búfer: M-> G Avanzar 1 pantalla: C-v ^F Avanzar 1/2 pantalla: ^D Avanzar una 1 línea: ^E Retroceder 1 pantalla: M-v ^B Retroceder 1/2 pantalla: ^U Retroceder 1 línea: ^Y Ir a la otra ventana: M-C-v Borrar bajo el cursor: C-d x Borrar desde el cursor al final de la línea: C-k D Búsqueda incremental hacia adelante: C-s Búsqueda incremental hacia atrás: C-r Buscar hacia adelante: C-s enter / Buscar hacia atrás: C-r enter ? Búsqueda incremental exp. reg: M-C-s Búsqueda incremental hacia atrás exp. reg: M-C-r Buscar expresión regular: M-C-s enter / Búsqueda hacia atrás exp. reg: M-C-r enter ? Ayuda: C-h C-h :help Ayuda Apropos: C-h a Ayuda combinaciones de teclas C-h b :help [tecla] Ayuda Info: C-h i Ayuda modo mayor: C-h m Ayuda tutorial: C-h t :help howto Deshacer: C- u Rehacer: C-f ^R Marcar posición del cursor: C-@ m{a-zA-Z} Intercambiar marca y posición: C-x C-x Ir a la marca del archivo actual: '{a-z} Ir a la marca en cualquier archivo: '{A-Z} Copiar región: M-w {visual}y Borrar región: C-w {visual}d Copiar y conservar en el búfer: C-y Pegar desde el siguiente búfer: M-y p Convertir una región en mayúsculas: C-x C-u {visual}U Convertir una región en minúsculas: C-x C-l {visual}u Insertar un carácter especial: C-q numoctal/tecla ^V decimal/tecla Reemplazar: M-x replace-string :%s/aaa/bbb/g Reemplazar expreg: M-x replace-regexp :%s/aaa/bbb/g Buscar y reemplazar: M-% :%s/aaa/bbb/gc Buscar y reemplazar: M-x query-replace Buscar y reemplazar exp. reg: M-x query-replace-regexp Abrir archivo: C-x C-f :r archivo Guardar archivo: C-x C-s :w Guardar todos los búferes: C-x s :wa Guardar como: C-x C-w archivo :w archivo Pedir un búfer: C-x b Listar búferes: C-x C-b :buffers Cambiar a sólo lectura: C-x C-q :set ro Pedir y eliminar búfer: C-x k División vertical: C-x 2 :split División horizontal: C-x 3 :vsplit (ver. 6) Moverse a otra ventana: C-x o ^Wp Eliminar esta ventana: C-x 0 :q Eliminar otra(s) ventana(s): C-x 1 ^Wo Ejecutar shell en bg: M-x compile Matar shell en bg: M-x kill-compilation Ejecutar make: :make Makefile Analizar mensaje de error: C-x` :echo errmsg Ejecutar shell y grabar: M-x shell :!script -a tmp ...clean BS, ... :!col -b <tmp >record ...guardar/recordar grab. del shell: C-x C-w record :r record Ejecutar shell: M-! sh :sh Ejecutar comando: M-! cmd :!cmd Ejecutar comando e insertar: C-u M-! cmd :r!cmd Ejecutar filtro: M-| archivo {visual}:w archivo Ejecutar filtro e insertar: C-u M-| filter {visual}:!filter Mostrar opción :se[t] {option}? Volver opción a valor predeterminado :se[t] {option}& Resetea opción booleana :se[t] no{option} Conmutar una opción booleana :se[t] inv{option} Ajustar el texto en 72 columnas :se tw=72 No ajustar texto :se tw=0 Sangrado automático :se ai Expandir tabulación :se et Especificar comentario (correo) :se comments=n:>,n:\| Ejecutar GDB M-x gdb Describe el modo GDB C-h m Saltar una línea M-s Siguiente línea M-n Saltar una instrucción (stepi) M-i Finalizar el marco de la pila actual C-c C-f Continuar M-c up arg frames M-u down arg frames M-d Copiar número a partir del punto, insertar al final C-x & Colocar un punto de ruptura C-x SPC
Para utilizar todas las características de Vim y el resaltado de sintáxis
incluya las siguientes líneas en el ~/.vimrc
o
/etc/vimrc
:
set nocompatible set nopaste set pastetoggle=<f11> syn on
El modo 'paste' permite evitar que el sangrado automático interfiera con las operaciones pegar/cortar en una terminal o consola. Es mejor que escribir simplemente ":set noai".
Véase Usando GnuPG con Vim, Sección 14.4.2 para integración con GnuPG.
apt-get install exuberant-ctags y ejecute ctags
sobre
los archivos fuente. En vim escriba :tag
nombre_función para ir a la línea donde comienza
nombre_función. Las marcas funcionan para C, C++, Java, Python y
muchos otros lenguajes de programación.
Emacs utiliza las mismas ctags.
so \$VIMRUNTIME/syntax/2html.vim desde el modo comando de Vim convertirá el texto seleccionado en código HTML. Guárdelo como :w archivo.html y luego escriba :q. Útil cuando se programa en C, etc.
vim
puede editar múltiples archivos en un entorno de múltiples ventanas. Escriba ":help usr_08.txt" para más detalles.Para dividir la pantalla para mostrar diferentes archivos, escriba en la línea de comandos de vi:
:split otro-archivo :vsplit otro-archivo
o en la línea de comandos del shell:
$ vi -o archivo1.txt archivo.txt # División horizontal $ vi -O archivo1.txt archivo2.txt # División vertical
en ambos casos se podrá trabajar con múltiples ventanas.
$ vimdiff archivo.txt~ archivo.txt $ gvimdiff archivo.txt~ archivo.txt # en X
proporcionan una vista muy cómoda para comparar un archivo con su copia de respaldo. En SGML analiza las etiquetas y por lo tanto resulta muy útil cuando se trata de comparar traduciones.
Movimientos del cursor especiales con los comandos Ctrl-W:
Ctrl-W + incrementar el tamaño de una ventana Ctrl-W - disminuir el tamaño de una ventana Ctrl-W h ir a la ventana izquierda Ctrl-W j ir a la ventana inferior Ctrl-W k ir a la ventana superior Ctrl-W l ir a la ventana derecha ...
Los siguientes comandos permiten controlar el desplazamiento de la pantalla:
:set scrollbind :set noscrollbind
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Consulte /usr/share/doc/cvs/html-cvsclient
,
/usr/share/doc/cvs/html-info
, /usr/share/doc/cvsbook
con la ayuda de lynx o ejecute info cvs o man cvs
para una información más detallada.
La siguiente configuración permite que sólo un miembro del grupo "src" pueda hacer envíos al repositorio CVS (mediante el comando 'commit') y que la administración del CVS pueda llevarse a cabo únicamente por un miembro del grupo "staff" de modo de reducir las posibilidades de conflicto.
# cd /var/lib; umask 002 ; mkdir cvs # [Woody] FSH # apt-get install cvs cvs-doc cvsbook # export CVSROOT=/var/lib/cvs # cd $CVSROOT # chown root:src . # "staff": restricción importante para un # proyecto nuevo # chmod 3775 . # Si usa "staff", escribir 2775 # cvs -d /var/lib/cvs init # ¡resulta más seguro especificar # explícitamente -d! # cd CVSROOT # chown -R root:staff . # chmod 2775 . # touch val-tags # chmod 664 history val-tags # chown root:src history val-tags
Lo siguiente configurará el intérprete de comandos para acceso al repositorio CVS.
Acceso de sólo lectura:
$ export CVSROOT=:pserver:anonymous@cvs.sf.net:/cvsroot/qref $ cvs login $ cvs -z3 co qref
Acceso local desde el intérprete de comandos en la misma máquina:
$ export CVSROOT=/var/lib/cvs
Acceso remoto sin SSH (uso del protocolo RSH en el cvs
)
$ export CVSROOT=:pserver:cuenta@cvs.loquesea.com:/var/lib/cvs $ cvs login
Propenso a ataques espías.
ssh
Acceso remoto con SSH:
$ export CVSROOT=:ext:cuenta@cvs.loquesea.com:/var/lib/cvs
o para SourceForge:
$ export CVSROOT=:ext:cuenta@cvs.sf.net:/cvsroot/qref
También puede utilizar la autenticación RSA (Conectarse con pocas contraseñas, Sección 9.5.3), que evita la solicitud de la contraseña.
Para,
ITEM VALOR SIGNIFICADO Árbol del proyecto: ~/proyecto-x Todos los archivos fuente Nombre del proyecto: proyecto-x Nombre para este proyecto Nombre del proveedor: Rama-principal Etiqueta para toda la rama Etiqueta de versión: Versión-inicial Etiqueta para una versión específica
Entonces,
$ cd ~/proyecto-x # para entrar en el directorio del proyecto ... crear un árbol ... $ cvs import -m "Comienzo del proyecto-x" proyecto-x Rama-principal Versión-inicial $ cd ..; rm -R ~/proyecto-x
Para recordar y trabajar con los fuentes locales del proyecto-x en un archivo CVS:
$ cd # para ubicarse en la zona de trabajo. $ cvs co proyecto-x # copia los fuentes del repositorio CVS # a la máquina local $ cd proyecto-x ... efectuar los cambios ... $ cvs diff -u # similar a diff -u repository/ local/ $ cvs ci -m "Describir cambio" # guarda los fuentes locales en el CVS $ vi archivo_nuevo $ cvs add archivo_nuevo $ cvs ci -m "Se añadió archivo_nuevo" $ cvs up # actualiza a la última versión del CVS ... cuidado con las líneas que comienzan con "C nombre_archivo" ... el código sin modificar se renombra como `.#nombre_archivo.version'. ... Busque "<<<<<<<" y ">>>>>>>" en nombre_archivo. $ cvs tag Release-1 # añade etiqueta de versión ... hacer otras modificaciones ... $ cvs tag -d Release-1 # elimina etiqueta de versión $ cvs ci -m "otros comentarios" $ cvs tag Release-1 # vuelve a añadir la etiqueta de versión $ cd # para volver al área de trabajo. $ cvs co -r Versión-inicial -d antiguo proyecto-x ... obtiene la versión original y la ubica en el directorio 'antiguo' $ cd antiguo $ cvs tag -b Versión-inicial-modif # crea la etiqueta de la rama (-b) ... ahora puede trabajar sobre la versión original (Etiqueta=sticky) $ cvs update -d -P # no crea directorios vacíos ... el árbol de fuentes tiene ahora la etiqueta sticky "Versión-inicial-modif" ... trabaje en esta rama $ cvs up -d -P # sicroniza los cambios en la rama con el resto $ cvs ci -m "verificación hecha en la rama" $ cvs update -kk -A -d -P ... elimina la etiqueta sticky y descarta el contenido ... actualiza desde el tronco principal sin reemplazar palabras claves $ cvs update -kk -d -P -j Versión-inicial-modif ... Añade rama Versión-inicial-modif en el tronco principal ... sin el reemplazo de palabras claves. Solucionar confictos con el editor. $ cvs ci -m "Creación Versión-inicial-modif" $ cd $ tar -cvzf antiguo-proyecto-x.tar.gz antiguo # crear archivo, -j para bz2 $ cvs release -d antiguo # eliminar fuentes locales (opcional)
-n no ejecuta ningún comando que cambie el disco -t muestra los mensajes de la actividad en el cvs
Para conseguir la última versión del CVS use "tomorrow":
$ cvs ex -D tomorrow nombre_módulo
Añadir un alias al proyecto (servidor local):
$ su - admin # un miembro del equipo $ export CVSROOT=/var/lib/cvs $ cvs co CVSROOT/modules $ cd CVSROOT $ echo "px -a proyecto-x" >>modules $ cvs ci -m "Ahora px es un alias del proyecto-x" $ cvs release -d . $ exit # o control-D para salir de 'su' $ cvs co -d proyecto px ... proyecto-x (alias:px) del CVS al directorio proyecto $ cd proyecto ... realizar cambios ...
CVS no sobreescribe el archivo del repositorio actual sino que lo reemplaza por otro. Por lo tanto el permiso de escritura en el directorio del repositorio resulta crítico. Cada vez que se cree un nuevo repositorio ejecute lo siguiente para evitar cualquier problema.
# cd /var/lib/cvs # chown -R root:src repositorio # chmod -R ug+rwX repositorio # chmod 2775 repositorio # si es necesario para éste y sus # subdirectorios
Cuando se abandona la sesión (check-out) se conserva el bit de ejecución. Ante cualquier problema de permisos de ejecución sobre un archivo puede cambiar sus permisos en el repositorio CVS con el siguiente comando.
# chmod ugo-x nombre_archivo
Veamos los comandos del CVS con sus respectivos atajos.
{add|ad|new} [-k kflag] [-m 'mensaje'] archivos... {admin|adm|rcs} [opciones-rcs] archivos... {annotate|ann} [opciones] [archivos...] {checkout|co|get} [opciones] módulos... {commit|ci|com} [-lnR] [-m 'mensaje_registro' | -f archivo] \ [-r revision] [archivos...] {diff|di|dif} [-kl] [opciones_rcsdiff] [[-r rev1 | -D fecha1] \ [-r rev2 | -D fecha2]] [archivos...] {export|ex|exp} [-flNn] -r rev|-D fecha [-d dir] [-k kflag] módulo... {history|hi|his} [-report] [-flags] [-options args] [archivos...] {import|im|imp} [-options] repositorio nombre_proveedor etiq_versión... {login|logon|lgn} {log|lo|rlog} [-l] opciones-rlog [archivos...] {rdiff|patch|pa} [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] módulos... {release|re|rel} [-d] directorios... {remove|rm|delete} [-lR] [archivos...] {rtag|rt|rfreeze} [-falnR] [-b] [-d] [-r etiqueta | -D fecha] \ sym_bolic_tag módulos... {status|st|stat} [-lR] [-v] [archivos...] {tag|ta|freeze} [-lR] [-F] [-b] [-d] [-r etiqueta | -D fecha] [-f] \ sym_bolic_tag [archivos...] {update|up|upd} [-AdflPpR] [-d] [-r tag|-D fecha] archivos...
Subversion es la siguiente generación del sistema de control de versiones destinado a reemplazar CVS. Actualmente, los desarrolladores consideran que se encuentra en la etapa "alfa" pero es muy probable que sea lo suficientemente estable para la mayoría de los usuarios. A la fecha de escribir este documento, Subversion se encuentra en la rama inestable de Debian.
El metapaquete subversion
depende de los paquetes
libapache2-svn
y subversion-tools
necesarios para
configurar el servidor.
Actualmente, el paquete subversion
no configura el repositorio y,
por lo tanto, hay que hacerlo en forma manual. Una posible ubicación del
repositorio es /var/local/repos
.
Cree el directorio:
# mkdir -p /var/local/repos
Cree la base de datos del repositorio:
# svnadmin create /var/local/repos
Permitir que el servidor WWW escriba en el repositorio:
# chown -R www-data:www-data /var/local/repos
Para permitir el acceso al repositorio mediante la autenticación de usuario,
añada lo siguiente al /etc/apache2/httpd.conf
:
<Location /repos> DAV svn SVNPath /var/local/repos AuthType Basic AuthName "Repositorio Subversion" AuthUserFile /etc/subversion/passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
A continuación, cree el archivo de autenticación de usuario mediante el comando:
htpasswd2 -c /etc/subversion/passwd nombre_usuario
Reinicie Apache2 y podrá acceder al nuevo repositorio de subversion desde la URL http://nombre_máquina/repos.
Las siguientes secciones le enseña cómo usar diferentes comandos en Subversion.
Para crear un nuevo archivo en Subversion, escriba lo siguiente:
$ cd ~/su-proyecto # vaya a su directorio fuente $ svn import http://localhost/repos su-proyecto \ nombre-proyecto -m "importar proyecto inicial"
Esto crea un directorio llamado nombre-proyecto en su repositorio de Subversion que contiene sus archivos del proyecto. Vea en http://localhost/repos/ para ver si está allí.
Trabajando con el proyecto-y usando Subversion:
$ cd # ubicarse en la zona de trabajo $ svn co http://localhost/repos/proyecto-y # Obtener los fuentes $ cd proyecto-y ... realizar algunas tareas ... $ svn diff # similar a diff -u repositorio/ local/ $ svn revert archivo_modificado # deshace los cambios a un archivo $ svn ci -m "Describir los cambios" # efectúa los cambios en el repositorio $ vi nuevo_archivo_añadido $ svn add nuevo_archivo_añadido $ svn add dir_nuevo # añade todos los archivos al dir_nuevo en forma recursiva all files in new_dir $ svn add -N dir_nuevo2 # añade un directorio en forma no recursiva $ svn ci -m "Se añadieron nuevo_archivo_añadido, dir_nuevo, dir2_nuevo" $ svn up # sincronización con la última versión del repositorio $ svn log # mostrar todos los cambios realizados $ svn copy http://localhost/repos/proyecto-y \ http://localhost/repos/rama-proyecto-y \ -m "creando mi rama del proyecto-y" # ramificando proyecto-y $ svn copy http://localhost/repos/proyecto-y \ http://localhost/repos/proy-y_release1.0 \ -m "proyecto-y 1.0 versión" # se añade etiqueta de versión ... obsérvese que el proceso de ramificación y el de añadido de etiquetas son prácticamente iguales. La única diferencia consiste en que las ramas son enviadas (commited) mientras que las etiquetas no. ... realizar cambios a la rama ... $ # fusionar la rama al tronco principal $ svn merge http://localhost/repos/proyecto-y \ http://localhost/repos/rama-proyecto-y $ svn co -r 4 http://localhost/repos/proyecto-y # obtener la versión 4
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
No use la palabra "test" para designar un archivo ejecutable de
prueba. test
es un comando del shell.
Referencias:
Documentos y ejemplos de file:///usr/share/doc/paquetes
Linux Programming Bible (John Goerzen/IDG books)
Una gran cantidad de extensos documentos con información se puede obtener del
proyecto GNU
.
Las siguientes 4 secciones contienen algunos scripts de ejemplo en diferentes
lenguajes de programación para crear un archivo de texto con información de
las cuentas para agregarse al archivo /etc/passwd
usando un
procesador por lotes como lo es el programa newusers
. Cada script
requiere como entrada de un archivo con una serie de líneas de la forma:
nombre apellido contraseña (estos scripts no crearán los
directorios 'home' de los usuarios)
Leer los scripts de shell es la mejor manera de entender cómo
funciona un sistema tipo Unix. Aquí, brindo algunos enlaces y recordatorios
para la programación del shell. Véase Shell
Mistakes
para aprender de los errores.
Referencias para Bash:
bash(1)
info bash
BASH
Programming - Introduction HOWTO
del LDP como documento
introductorio.
mc file:///usr/share/doc/bash/examples/ file:///usr/share/doc/bash/
(Instale el paquete bash-doc
para ver archivos de ejemplo)
Learning the bash Shell, 2nd edition (O'Reilly)
Pequeño programa de ejemplo (sirve como entrada para el comando
newusers
):
#!/bin/bash # (C) Osmu Aoki Sun Aug 26 16:53:55 UTC 2001 Public Domain pid=1000; while read n1 n2 n3 ; do if [ ${n1:0:1} != "#" ]; then let pid=$pid+1 echo ${n1}_${n2}:password:${pid}:${pid}:,,,/home/${n1}_${n2}:/bin/bash fi done
En Debian diversos paquetes proporcionan un intérprete de comandos POSIX:
dash
(Sarge)
Prioridad: opcional
Tamaño de instalación: 176
Lejos, el más pequeño y el más rápido; el mejor para el arranque inicial
ash
(Woody)
Prioridad: opcional
Tamaño de instalación: 180
Pequeño y muy rápido – bueno para el arranque inicial
bash
Esencial: sí
Prioridad: requerido
Tamaño de instalación: 580
El más grande y más completo – posee diversas extensiones implementadas
pdksh
Prioridad: opcional
Tamaño de instalación: 408
Clon del ksh de AT&T
Si desea escribir scripts de shell portables, resulta conveniente escribirlos
como script de shell POSIX . Use /bin/sh
enlazado con
ash
o (dash
) para comprobar su compatibilidad POSIX.
Evite escribir scripts usando la sintaxis propia del bash o del zsh. Por
ejemplo, evite usar:
if [ foo == bar ] ; then ...
diff -u archivo.c{.orig,}
mkdir /foo{bar,baz}
La descripción de los intérpretes de comandos en el presente documento se
aplica únicamente a aquellos del tipo POSIX y no a csh
incluyendo
a tcsh
.
Diversos parámetros especiales para recordar:
$0 = nombre del shell o del script del shell $1 = primer argumento ... $9 = noveno argumento $# = cantidad de parámetros "$*" = "$1 $2 $3 $4 ... $n" "$@" = "$1" "$2" "$3" "$4" ... "$n" $? = estado de salida del comando más reciente $$ = PID del script de shell $! = PID del proceso en segundo plano más reciente
Expansiones de parámetros básicas para recordar:
Forma Si var está Si var inicializada no está inicializada ${var:-cadena} $var cadena ${var:+cadena} cadena null ${var:=cadena} $var cadena (y ejecute var=cadena) ${var:?cadena} $var (repite cadena y luego sale)
Aquí, en realidad, los `:' son opcionales para todos los operadores.
Con los `:' = el operador comprueba la existencia y la no nulidad.
Sin los `:' = el operador comprueba únicamente la existencia.
Sustituciones de parámetros básicas para recordar:
Forma Resultado ${var%sufijo} Elimina el patrón sufijo más pequeño ${var%%sufijo} Elimina el patrón sufijo más grande ${var#prefijo} Elimina el patrón prefijo más pequeño ${var##prefijo} Elimina el patrón prefijo más grande
Redireccionamiento básico para recordar (aquí el [n] es un número opcional para especificar el descriptor de archivo):
[n]> archivo Redirige stdout (o n) al archivo. [n]>> archivo Añade stdout (o n) al archivo. [n]< archivo Redirige stdin (o n) desde el archivo. [n1]>&n2 Redirige stdout (o n1) a n2. 2> archivo >&2 Redirige stdout y stderr al archivo. | comando Desvía stdout al comando. 2>&1 | comando Desvía stderr y stdout comando.
Aquí:
stdin: entrada estándar (descriptor de archivo = 0)
stdout: salida estándar (descriptor de archivo = 1)
stderr: error estándar (descriptor de archivo = 2)
El intérprete de comandos le permite abrir archivos usando el comando propio
exec
con un descriptor de archivo arbitrario.
$ echo Hola >loquesea1 $ exec 3<loquesea1 4>loquesea2 # abrir archivos $ cat <&3 >&4 # redirigir stdin a 3, stdout a 4 $ exec 3<&- 4>&- # cerrar archivos $ cat loquesea2 Hola
Aquí n<&- y n>&- significan cerrar el descriptor de archivo n.
Todos los comandos devuelven un estado de salida que se pueden utilizar para expresiones condicionales:
Éxito: 0 (Verdadero)
Error: 1 - 255 (Falso)
Obsérvese que aquí el valor 0, contrariamente a la convención habitual en
otras áreas de la computación, significa "verdadero". Asimismo,
`[' es equivalente al comando test
, que evalúa sus argumentos
hasta `]' como expresión condicional.
Expresiones condicionales básicas para recordar:
comando && si_éxito_ejecutar_también_este_comando || verdadero comando || si_fracaso_ejecutar_en_cambio_este_comando if [ expresión_condicional ]; then si_éxito_ejecutar_este_comando else si_fracaso_ejecutar_este_comando fi
En este caso || verdadero se necesita para asegurarse que este script de shell no salga accidentalmente en esta línea al invocar el intérprete de comandos con la opción -e.
Los operadores de comparación de archivos en las expresiones regulares son:
-e archivo Verdadero si archivo existe. -d archivo Verdadero si archivo existe y es un directorio. -f archivo Verdadero si archivo existe y es un archivo normal. -w archivo Verdadero si archivo existe y se puede escribir. -x archivo Verdadero si archivo existe y es ejecutable. archivo1 -nt archivo2 Verdadero si archivo1 es más reciente que archivo2 (modificación) archivo1 -ot archivo2 Verdadero si archivo1 es más antiguo que archivo2 (modificación) archivo1 -ef archivo2 Verdadero si son el mismo dispositivo o tienen igual ínodo.
Los operadores de comparación de cadenas en las expresiones condicionales son:
-z str Verdadero si la longitud de str es igual a cero. -n str Verdadero si la longitud de str es distinta de cero. str1 == str2 Verdadero si las str son iguales. str1 = str2 Verdadero si las str son iguales. (debería usarse "=" en vez de "==" para una extricta compatibilidad POSIX) str1 != str2 Verdadero si las str son distintas. str1 < str2 Verdadero si str1 está antes que str2 (depende del local). str1 > str2 Verdadero si str1 está después que str2 (depende del local).
Los operadores de comparación aritmética entera en las expresiones condicionales son -eq, -ne, -lt, -le, -gt o -ge.
El intérprete de comandos procesa un script de la siguiente manera:
separación de símbolos mediante metacaracteres: ESPACIO, TAB, NEWLINE, ;, (, ), <, >, |, &
búsqueda de palabras claves si no están entre "..." o '...' (bucle)
expansión de alias si no están entre "..." o '...' (bucle)
expansión de llaves, A{b|c} -> Ab Ac, si no están entre "..." o '...'
expansión de tildes, ~user -> $HOME/$USER, si no están entre "..." o '...'
expansión de parámetros, $PARAMETER, si no están entre '...'
expansión de sustitución de comandos, $(comando), si no están entre '...'
separación en palabras con $IFS si no están entre "..." o '...'
expansión de nombres de rutas *?[] si no están entre "..." o '...'
búsqueda de comando
función
comando interno
archivo en el $PATH
bucle
Las comillas simples dentro de las dobles no tienen ningún efecto.
Al ejecutar set -x en el intérprete de comandos o al invocar este último con la opción -x hará que se muestren todos los comandos ejecutados. Esto resulta bastante práctico para depurar.
Referencias para Awk:
Effective awk Programming, 3rd edition (O'Reilly)
Sed & awk, 2nd edition (O'Reilly)
mawk(1)
y gawk(1)
info gawk
Pequeño programa de ejemplo (sirve como entrada para el comando
newusers
)
#!/usr/bin/awk -f # Script para crear un archivo que sirva para usar con el comando # newusers a partir de un archivo que contiene las IDs y contraseñas de # los usuarios de la siguiente manera: nombre apellido contraseña # Copyright (c) KMSelf Sat Aug 25 20:47:38 PDT 2001 # Distribuido bajo GNU GPL v 2 o cualquier versión posterior. # Este programa se distribuye SIN NINGUNA GARANTÍA. BEGIN { # Asignar UID, GID iniciales if ( ARGC > 2 ) { startuid = ARGV[1] delete ARGV[1] } else { printf( "Uso: newusers UIDinicial archivo\n" \ "...donde UIDinicial es el ID del primer usuario " \ "a agregar y 'archivo' es \n" \ "un archivo de entrada de la forma: \n"\ "'nombre apellido contraseña'\n" \ ) exit } infile = ARGV[1] printf( "Primer UID: %s\n\n", startuid ) } /^#/ { next } { ++record first = $1 last = $2 passwd = $3 user= substr( tolower( first ), 1, 1 ) tolower( last ) uid = startuid + record - 1 gid = uid printf( "%s:%s:%d:%d:%s %s,,/home/%s:/bin/bash\n", \ user, passwd, uid, gid, first, last, user \ ) }
En Debian dos paquetes proveen awk
POSIX:
mawk
Prioridad: requerido
Tamaño de instalación: 228
Más pequeño y mucho más rápido – útil para una instalación predeterminada
Compile-time limits exist
NF = 32767
sprintf buffer = 1020
gawk
Prioridad: opcional
Tamaño de instalación: 1708
Más grande y completo – posee diversas extensiones implementadas
System V Release 4 version of UNIX
awk de laboratorios Bell
específicas de GNU
Este es él intérprete interpreter on a Unix-like system.
Referencias para Perl:
perl(1)
Programming Perl, 3rd edition (O'Reilly)
Pequeño programa de ejemplo (sirve como entrada para el comando
newusers
)
#!/usr/bin/perl # (C) Osamu Aoki Sun Aug 26 16:53:55 UTC 2001 Public Domain $pid=1000; while (<STDIN>) { if (/^#/) { next;} chop; $pid++; ($n1, $n2, $n3) = split / /; print $n1,"_",$n2,":", $n3, ":",$pid, ":",$pid,",,,/home/",$n1,"_",$n2,":/bin/bash\n" }
Instalar el módulo Perl nombre módulo:
# perl -MCPAN -e 'install nombre_modulo'
Es un intérprete orientado a objetos muy agradable.
Referencias para Python:
python(1)
Learning Python (O'Reilly).
Pequeño programa de ejemplo (sirve como entrada para el comando
newusers
)
#! /usr/bin/env python import sys, string # (C) Osamu Aoki Sun Aug 26 16:53:55 UTC 2001 Public Domain # Adaptado del script awk por KMSelf Sat Aug 25 20:47:38 PDT 2001 # Este programa se distribuye SIN NINGUNA GARANTÍA. def usages(): print \ "Uso: ", sys.argv[0], " UID_inicial [nombre_archivo]\n" \ "\tUID_inicial es el ID del primer usuario a agregar.\n" \ "\tnombre_archivo es el nombre del archivo de entrada.\n" \ "Si no se especifica, se toma la entrada estándar.\n\n" \ "Formato del archivo de entrada:\n"\ "\tnombre apellido contraseña\n" return 1 def parsefile(startuid): # # filtrado principal # uid = startuid while 1: line = infile.readline() if not line: break if line[0] == '#': continue (first, last, passwd) = string.split(string.lower(line)) # lo anterior falla con un # equivocado de parámetros :-) user = first[0] + last gid = uid lineout = "%s:%s:%d:%d:%s %s,,/home/%s:/bin/bash\n" % \ (user, passwd, uid, gid, first, last, user) sys.stdout.write(lineout) +uid if __name__ == '__main__': if len(sys.argv) == 1: usages() else: uid = int(sys.argv[1]) #print "# UID empieza desde: %d\n" % uid if len(sys.argv) > 1: infilename = string.join(sys.argv[2:]) infile = open(infilename, 'r') #print "# Leer archivo desde: %s\n\n" % infilename else: infile = sys.stdin parsefile(uid)
Referencias for Make:
info make
make(1)
Managing Projects with make, 2nd edition (O'Reilly)
Variables automáticas sencillas:
Sintaxis de las reglas:
Objetivo: [Prerequisito ... ] [TAB] comando1 [TAB] -comando2 # ignorar errores [TAB] @comando3 # evitar repetición
Aquí [TAB] es un TAB. Cada línea es interpretada por el shell
antes de la sustitución de variables por parte de make
. Utilice
la \ al final de la línea para continuar el script. Utilice
$$ para escribir el $ para las variables de entorno
para un script de shell.
Las reglas implícitas para el objetivo y los prerequisitos se pueden escribir, por ejemplo, así:
%: %.c header.h
o,
%.o: %.c header.h
En este caso, el objetivo contiene el carácter % (exactamente uno de ellos). El % puede corresponderse con cualquier subcadena no vacía en los nombres de los archivos objetivo actuales. Asimismo, los prerequisitos usan % para mostrar cómo se relaciones sus nombres con el nombre del objetivo actual.
Las reglas de sufijo son una forma obsoleta
de definir reglas implícitas para make
. Por compatibilidad, aún
son admitidas en el make
GNU pero, en lo posible, utilice las
reglas de patrón equivalentes:
antigua regla de sufijo --> nueva regla de patrón .c: --> % : %.c .c.o: --> %.o: %.c
Variables automáticas para las reglas anteriores:
foo.o: nuevo1.c nuevo2.c original1.c nuevo3.c $@ == foo.o (objetivo) $< == nuevo1.c (el primero) $? == nuevo1.c nuevo2.c nuevo3.c (los nuevos) $^ == nuevo1.c nuevo2.c original1.c nuevo3.c (todos) $* == `%' patrón correspondiente al patrón objetivo.
Referencia de las variables:
foo1 := bar # Expansión única foo2 = bar # Expansión recursiva foo3 += bar # Añade SRCS := $(wildcard *.c) OBJS := $(foo:c=o) OBJS := $(foo:%.c=%.o) OBJS := $(patsubst %.c,%.o,$(foo)) DIRS = $(dir directory/filename.ext) # Extrae "directory" $(notdir NAMES...), $(basename NAMES...), $(suffix NAMES...) ...
Ejecute make -p -f/dev/null para ver las reglas automáticas internas.
Preparación:
# apt-get install glibc-doc manpages-dev libc6-dev gcc
Referencias para C:
info libc (referencia de funciones de biblioteca C)
gcc(1)
each_C_library_function_name(3)
Kernighan & Ritchie, The C Programming Language, 2nd edition
(Prentice Hall). http://cm.bell-labs.com/cm/cs/cbook/
ISO C standard. http://www.open-std.org/jtc1/sc22/wg14/
gcc
)
Un simple ejemplo example.c
para compilar con la biblioteca
libm
y obtener el ejecutable run_example
:
$ cat > exemple.c << EOF #include <stdio.h> #include <math.h> #include <string.h> int main(int argc, char **argv, char **envp){ double x; char y[11]; x=sqrt(argc+7.5); strncpy(y, argv[0], 10); /* evita el desbordamiento del búfer */ y[10] = '\0'; /* para asegurar que la cadena termine con un '\0' */ printf("%5i, %5.3f, %10s, %10s\n", argc, x, y, argv[1]); return 0; } EOF $ gcc -Wall -g -o run_example example.c -lm $ ./run_example 1, 2.915, ./run_exam, (null) $ ./run_example, 1234567890qwerty 2, 3.082, ./run_exam, 1234567890qwerty
Aquí, -lm se necesita para enlazar la biblioteca
libm y poder así usar sqrt(). La biblioteca
actual se encuentra en el directorio /lib
con el nombre
libm.so.6
que es un enlace lógico a libm-2.1.3.so
.
Observe el último parámetro del texto de salida. Existen más de 10 caracteres a pesar de haber especificado %10s.
El uso de funciones que efectuan operaciones con punteros sin verificar sus
limítes, tales como sprintf
y strcpy
, es censurado
pues no evita las vulnerabilidades que surgen por desbordamiento de búfer.
Utilice, en cambio, snprintf
y strncpy
.
gdb
Preparación:
# apt-get install gdb
Referencias para gdb
:
info gdb (tutorial)
gdb(1)
Utilice gdb
para depurar un programa compilado con la opción
-g. Muchos de los comandos se pueden abreviar. La expansión del
tabulador funciona de igual manera que en el shell.
$ gdb programa (gdb) b 1 # coloca un punto de ruptura en la línea 1 (gdb) run arg1 arg2 arg3 # ejecuta programa (gdb) next # va a la siguiente línea ... (gdb) step # avanza un paso ... (gdb) p parm # imprime parámetro ... (gdb) p parm=12 # inicializa el valor del parámetro en 12
Para depurar dentro de Emacs, diríjase a Resumen de los comandos del editor (Emacs, Vim), Sección 11.3.4.
En un sistema Debian, la mayoría de los símbolos de depuración han sido
eliminados. Para que gdb
resulte útil para depurar paquetes
Debian, es necesario volver a construir dichos paquetes siguiendo los
siguientes pasos:
Edite debian/control
para volcar el paquete version
.
Verifique los scripts de creación y asegúrese usar CFLAGS=-g -Wall para compilar los binarios.
Exporte DEB_BUILD_OPTIONS=nostrip,noopt para crear el paquete Debian.
Véase Policy
10.1
para mayor información.
Utilice ldd
para averiguar las dependencias de un programa con
respecto a las bibliotecas:
$ ldd /bin/ls librt.so.1 => /lib/librt.so.1 (0x4001e000) libc.so.6 => /lib/libc.so.6 (0x40030000) libpthread.so.0 => /lib/libpthread.so.0 (0x40153000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Para que ls
funcione en un entorno chroot
, deben esta
disponibles las mencionadas bibliotecas.
Pueden también resultar útiles los siguientes comandos.
strace
: rastrea las señales y llamadas al sistema
ltrace
: rastrea las llamadas a las bibliotecas
Existen diversas herramientas de detección de fugas de memoria disponibles en Debian.
njamd
valgrind
dmalloc
electric-fence
memprof
memwatch
(el paquete no existe, obténgalo de memwatch
.)
mpatrol
leaktracer
libgc6
Insure++ de Parasoft
. (propietario, commercial
for fee)
También consulte Herramientas
de depuración para la asignación de almacenamiento dinámico y
administración de memoria
.
flex
es un generador de analizadores sintácticos muy veloz.
Referencias para flex
:
info flex (tutorial)
flex(1)
Necesita proporcionar su propia main()
y yywrap()
, o
su programa.l
se vería así al compilar sin la biblioteca
(yywrap
es una macro; %option main activa en forma
implícita a %option noyywrap):
%option main %% .|\n ECHO ; %%
Alternativamente, puede compilar con la opción -lfl del enlazador
al final de la línea de comando de cc
(como ATT-Lex con
-ll). En este caso no se necesita la %option.
En Debian diversos paquetes proporcionan un generador de analizadores LALR compatible con Yacc:
bison
: generador de analizador LALR GNU
byacc
: el generador de analizador LALR de Berkeley
btyacc
: generador de analizador con backtracking basado en byacc
Referencias para bison
:
info bison (tutorial)
bison(1)
Necesita proporcionar su propia main()
y yyerror()
.
main()
llama a yyparse()
que llama a
yylex()
que ha sido generalmente creada con FleX.
%% %%
autoconf
es una herramienta para crear scripts de shell que
automáticamente configuran los paquetes con código fuente para adaptarlos a
distintos tipos de sistemas tipo UNIX que utilizan el sistema de compilación
GNU.
autoconf
crea el script de configuración configure
.
configure
crea automáticamente un Makefile
y un
Makefile.am
personalizados.
Debian no toca los archivos situados en /usr/local/
(véase En apoyo a la diversidad, Sección 2.5). Por lo tanto,
si compila un programa a partir de sus fuentes, instálelo en
/usr/local/
de modo que no interfiera con Debian.
$ cd src $ ./configure --prefix=/usr/local $ make $ make install # esto ubica los archivos en el sistema
SI cuenta con los fuentes, SI éstos utilizan
autoconf
/automake
y SI puede recordar cómo lo
configuró:
$ ./configure todas-las-opciones-que-eligió # make uninstall
Alternativamente, si está absolutamente sequro que el proceso de instalación
ubicó todos los archivos únicamente en /usr/local/
y que no hay
nada importante allí, puede borrar todo su contenido haciendo:
# find /usr/local -type f -print0 | xargs -0 rm -f
Si no está seguro dónde fueron instalados los archivos, considere el uso de
checkinstall
que permite desinstalaciones limpias.
Se pueden crear páginas web dinámicas interactivas sencillas de la siguiente forma:
Las peticiones son mostradas en el navegador del usuario usando formularios HTML.
Al llenar y pulsar en las entradas del formulario se envia una URL con parámetros codificados [55] desde el navegador al servidor web. Por ejemplo:
http://www.loquesea.dom/cgi-bin/program.pl?VAR1=VAL1&VAR2=VAL2&VAR3=VAL3
http://www.loquesea.dom/cgi-bin/program.py?VAR1=VAL1&VAR2=VAL2&VAR3=VAL3
http://www.loquesea.dom/program.php?VAR1=VAL1&VAR2=VAL2&VAR3=VAL3
El programa CGI (cualquiera de program.*
) en el servidor web
recibirá los parámetros descodificados "VAR1=VAL1 VAR2=VAL2
VAR3=VAL3" como contenido de la variable de entorno
"QUERY_STRING" y se ejecutará.
La stdout del programa CGI se enviará al navegador web y se presentará como una página web dinámica interactiva.
Por cuestiones de seguridad no cree artesalmente nuevos artificios para
analizar parámetros CGI. Existen módulos para ellos en Perl (véase Perl, Sección 13.4) y Python (véase Python, Sección 13.5). PHP
viene con esta funcionalidad. Cuando
se necesita almacenamiento de datos del lado del cliente se utilizan cookies.
Cuando se necesita procesar datos del lado del cliente, frecuentemente se
utiliza javascript.
Para más información, véase The Common Gateway
Interface
, The Apache
Software Foundation
y JavaScript
.
Si se busca "CGI tutorial" en Google escribiendo la URL http://www.google.com/search?hl=en&ie=UTF-8&q=CGI+tutorial directamente en el navegador es una buena manera de ver el script CGI del servidor Google en acción.
Tradicionalmente, roff es el sistema de tratamiento de texto principal de Unix.
Véase roff(7)
, groff(7)
, groff(1)
,
grotty(1)
, troff(1)
, groff_mdoc(7)
,
groff_man(7)
, groff_ms(7)
, groff_me(7)
,
groff_mm(7)
e "info groff".
Existe un buen tutorial sobre macros -me
. Si tiene groff (1.18 o
posterior), busque file:///usr/share/doc/groff/meintro.me.gz
y
haga lo siguiente:
$ zcat file:///usr/share/doc/groff/meintro.me.gz | \ groff -Tascii -me - | less -R
Lo que sigue creará un archivo de texto:
$ zcat file:///usr/share/doc/groff/meintro.me.gz | \ GROFF_NO_SGR=1 groff -Tascii -me - | col -b -x > meintro.txt
Para imprimir use la salida PostScript.
$ groff -Tps meintro.txt | lpr $ groff -Tps meintro.txt | mpage -2 | lpr
Preparación:
# apt-get install debiandoc-sgml debiandoc-sgml-doc
Referencias de debiandoc-sgml
:
file:///usr/share/doc/debiandoc-sgml-doc
debiandoc-sgml(1)
DocBook: The
Definitive Guide
, de Walsh y Muellner, (O'Reilly) (paquete
docbook-defguide
)
SGML permite la creación de múltiples formatos de un mismo documento. Un sistema SGML sencillo es Debiandoc que es el que se usó aquí. Este requiere de pequeñas adaptaciones en los archivos de texto originales para los siguientes caracteres:
"<" --> <
">" --> >
" " --> (espacio sin ruptura)
"&" --> &
"%" --> %
"©" --> ©
"–" --> –
"—" --> —
Para marcar una sección como comentario, escriba:
<!-- El tema empieza aquí ... -->
Para marcar una sección que necesita modificarse, escriba:
<![ %FIXME [ El tema empieza aquí ... ]]>
En SGML, la primer definición de una entidad gana. Por ejemplo:
<!entity % qref "INCLUDE"> <![ %qref [ <!entity param "Datos 1"> ]]> <!entity param "Datos 2"> ¶m;
Esto finaliza como "Datos 1". Si en la primer línea figurara "IGNORE" en vez de "INCLUDE" finalizaría como "Datos 2" (la segunda línea es una sentencia condicional). Asimismo, las frases que se repiten se pueden definir de antemano separadas del contexto.
<!entity esto "mi"> Hola &esto; amigo. Este es &esto; libro.
Esto resulta en lo siguiente:
Hola mi amigo. Este es mi libro.
Vea el pequeño ejemplo en SGML sample.sgml
en los ejemplos
.
Cuando los documentos SGML aumentan de tamaño TeX, que es utilizado como interfaz del procesador de texto, puede provocar,a veces, errores TeX/LaTeX, Sección 13.9.3.
Preparación:
# tasksel # seleccionar Miscelánea --> Entorno TeX/LaTeX
Referencias para LaTeX:
tex(1)
latex(1)
The TeXbook, de Donald E. Knuth, (Addison-Wesley) [56]
LaTeX - A Document Preparation System, de Leslie Lamport, (Addison-Wesley)
The LaTeX Companion, de Goossens, Mittelbach, Samarin, (Addison-Wesley)
Éste es el entorno más poderoso para la composición de documentos. Muchos
procesadores SGML lo utilizan como su procesador de texto. Lyx proporcionado
por lyx
, lyx-xforms
o lyx-qt
y GNU
TeXmacs, proporcionado por el paquete texmacs
, ofrecen un entorno
de edición WYSIWYG agradable para LaTeX mientras que muchos utilizan a Emacs y
Vim como editores de los archivos fuente.
Existen diversos recursos disponibles en Internet:
teTeX - A
Documentation Guide
(paquete tetex-doc
)
Cuando los documentos SGML aumentan de tamaño TeX puede, a veces, provocar
errores. Debe incrementar el tamaño del repositorio en
/etc/texmf/texmf.cnf
(o mejor editar
/etc/texmf/texmf.d/95NonPath
y ejecutar update-texmf
)
para solucionarlo.
En vez de escribir código que contenga documentación, el programador ilustrado escribe documentación que contiene código. Este enfoque asegura una buena documentación del programa.
Para más información sobre programación ilustrada, véase Literate Programming
.
Preparación:
# apt-get install nowebm
Referencias para Noweb:
Esta herramienta de la programación ilustrada del tipo WEB es mucho más
sencilla ya que provee extensibilidad e independencia de lenguaje. [57] Cuando se invoca noweb
, escribe el
código fuente del programa en los archivos mencionados en el archivo noweb y
crea un archivo TeX para la composición de la documentación.
El paquete Debian ifupdown
es un buen ejemplo.
$ apt-get source ifupdown $ cd ifupdown* $ make ifupdown.pdf ifupdown.ps
Preparación:
# apt-get install doxygen doxygen-doc doxygen-gui
Referencias para Doxygen (¡creado por doxygen
!):
Puede generar documentación HTML, RTF, páginas de manual Unix, PostScript y
PDF (usando LaTeX) para C++, C, Java, IDL y, con en cierto grado, para
programas en PHP y C#. Doxygen es compatible con JavaDoc (1.1), Qt-Doc, KDOC y
fue específicamente diseñado para ser usado en proyecto que utilizan el
conjunto de herramientas Qt
de Troll Tech. Al crear
incluye gráficos de dependencia, diagramas de colaboración y gráficos
jerárquicos incluso para programas no documentados. La salida es similar a la
de la documentación Qt.
Preparación:
# apt-get install debian-policy developers-reference \ maint-guide dh-make debhelper # apt-get install packaging-manual # en el caso de Potato
Referencias para la creación de paquetes:
(Sistema de administración de paquetes Debian, Sección 2.2 fundamentos)
Guía para Nuevos Encargados de Debian (tutorial)
dh-make(1)
Referencia para los Desarrolladores de Debian (práctico)
Manual de Normativa de Debian (oficial)
Manual para la creación de paquetes (Potato)
Método rápido para empaquetar un único binario por Joey Hess.
# mkdir -p mi_pqt/usr/bin mi_pqt/DEBIAN # cp binario mi_pqt/usr/bin # cat > mi_pqt/DEBIAN/control Package: mi_paquete Version: 1 Architecture: i386 Maintainer: Joey Hess <joeyh@debian.org> Description: mi pequeño paquete No espere demasiado. ^D # dpkg-deb -b mi_pqt
Utilice dh_make
del paquete dh-make
para crear la
arquitectura del paquete. Luego, proceda de acuerdo a las instrucciones de
dh-make(1)
que utiliza debhelper
en
debian/rules
.
Otro enfoque consiste en usar deb-make
del paquete
debmake
que no utiliza los scripts de debhelper
y
depende únicamente del intérprete de comandos. No utilizar esto más.
Para ejemplos de múltiples paquetes fuente, véase "mc"
(dpkg-source -x mc_4.5.54.dsc) que utiliza
"sys-build.mk" por Adam Heath (doogie@debian.org
) y
"glibc" (dpkg-source -x glibc_2.2.4-1.dsc) que utiliza
un sistema diferente de Joel Klecker (espy@debian.org
).
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Referencias:
gpg(1)
.
file:///usr/share/doc/gnupg/README.gz
GNU privacy handbook en
file:///usr/share/doc/gnupg-doc/GNU_Privacy_Handbook/
(instalar el
paquete gnupg-doc
)
Lea el manual de GNU privacy (en Woody, gnupg-doc
).
# gpg --gen-key # genera una clave nueva # gpg --gen-revoke mi_usuario_ID # genera una clave de revocación para # mi_usuario_ID # host -l pgp.net | grep www|less # busca los servidores de claves pgp
Un buen servidor de claves predeterminado situado en
$HOME/.gnupg/gpg.conf
(o el la ubicación anterior
$HOME/.gnupg/options
) es:
keyserver http://subkeys.pgp.net
Debe tener cuidado de no crear más de dos subclaves. Si lo
hace, los servidores de claves de pgp.net corromperán la clave. Utilize el
paquete gnupg
más reciente (>1.2.1-2) para tratar estas
subclaves corruptas. Véase http://fortytwo.ch/gpg/subkeys
.
Manejo de archivos:
$ gpg [opciones] comando [args] $ gpg {--armor|-a} {--sign|-s} archivo # firma el 'archivo' en # el archivo.asc $ gpg --clearsign archivo # firma el 'archivo' # sin cifrarlo $ gpg --clearsign --not-dash-escaped patchfile # firma patchfile sin # cifrar $ gpg --verify archivo # verifica el 'archivo' # firmado sin cifrar $ gpg -o archivo.firm {-b|--detach-sig} archivo # crea # firma separada $ gpg --verify archivo.firm archivo # verifica el 'archivo' # con ayuda del archivo.firm $ gpg -o archivo_cifrado {--recipient|-r} nombre {--encrypt|-e} archivo # cifrado con clave pública # para el destinario nombre $ gpg -o archivo_cifrado {--symmetric|-c} archivo # cifrado # simétrico $ gpg -o archivo --decrypt archivo_cifrado # descifrado
Administración de claves:
$ gpg --edit-key ID_usuario # "help" para ayuda interactiva $ gpg -o archivo> --exports # exporta todas las claves al # 'archivo' $ gpg --imports archivo # importa todas las claves del # 'archivo' $ gpg --send-keys ID_usuario # envía la clave del ID_usuario al # servidor de claves $ gpg --recv-keys ID_usuario # recibe la clave del ID_usuario del # servidor de claves $ gpg --list-keys ID_usuario # lista las claves del ID_usuario $ gpg --list-sigs ID_usuario # lista las firmas del ID_usuario $ gpg --check-sigs ID_usuario # verifica la firma del ID_usuario $ gpg --fingerprint ID_usuario # verifica la huella dactilar del # ID_usuario $ gpg --list-sigs | grep '^sig' | grep '[User id not found]' \ | awk '{print $2}' | sort -u | xargs gpg --recv-keys # obtiene claves desconocidas # actualiza las claves para todas las firmas desconocidas. $ gpg --refresh-keys # actualiza el archivo de claves local
Códigos de confiabilidad:
- No se asignó/evaluó confiabilidad del poseedor. e Ha fallado la evaluación de confiabilidad. q No existe suficiente información para realizar la evaluación. n No confiar nunca en esta clave. m Relativamente confiable. f Totalmente confiable. u Plenamente confiable.
Lo siguiente transferirá mi clave "A8061F32" al popular servidores de claves hkp://subkeys.pgp.net:
$ gpg --keyserver hkp://subkeys.pgp.net --send-keys A8061F32
Agregar lo siguiente al ~/.muttrc
para evitar que GnuPG -un
programa muy 'pesado'- arranque automáticamente y sólamente se active al
pulsar la tecla 'S' en el menú del índice.
macro index S ":toggle pgp_verify_sig\n" set pgp_verify_sig=no
Añadir el contenido de _vimrc
obtenido de examples
subdirectory
en ~/.vimrc
para ejecutar GnuPG en forma
transparente.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Es posible recurrir a las siguientes fuentes para obtener ayuda, consejo y soporte para Debian. En lo posible se deben usar estos recursos antes de ponerse a gritar en las listas de correo :)
Observése que puede acceder a una gran cantidad de documentación en su sistema proveniente de los distintos paquetes usando un navegador web o mediante los comandos `dwww' o `dhelp'.
Las siguientes referencias están disponibles para Debian y Linux en general. Si sus contenidos entran en conflicto, siempre confíe más en las fuentes de información primarias que en las fuentes de información secundarias tal como este documento.
Manual de Instalación (primaria)
Leer antes de instalar o actualizar.
Web: http://www.debian.org/releases/testing/installmanual
(en preparación, a veces puede que no funcione)
Paquete: install-doc
Archivo: /usr/share/doc/install-doc/index.html
Nota de la versión (primaria)
Se debe leer antes de instalar o actualizar incluso si se piensa que que sabe absolutamente todo.
Web: http://www.debian.org/releases/testing/releasenotes
(en preparación, a veces puede que no exista)
Paquete: install-doc
Archivo: /usr/share/doc/install-doc/upgrade-i386.html [FIXME]
FAQ (secundaria)
Preguntas frecuentes (un tanto desactualizadas)
Paquete: doc-debian
Archivo: /usr/share/doc/debian/FAQ/index.html
Guía de Referencia Debian (secundaria)
El manual de usuario post-instalación más comprensible
Paquete: debian-reference-en
Archivo: file:///usr/share/doc/debian-reference-common/html/
APT COMO (secundaria)
Detallada guía de usuario para la administración de paquetes Debian (Woody)
Paquete: apt-howto
,
Archivo: /usr/share/doc/apt-howto
Securing Debian Manual (secundaria)
Guía de usuario detallada para aumentar la seguridad y robustecer la instalación predeterminada de Debian (Woody).
Web: http://www.debian.org/doc/manuals/securing-debian-howto/
Paquete: harden-doc
Archivo:
file:///usr/share/doc/harden-doc/html/securing-debian-howto/
dselect
Documentación para Principiantes (secundaria)
Tutorial de dselect
Web: http://www.debian.org/releases/woody/i386/dselect-beginner
Paquete: install-doc
,
Archivo: /usr/share/doc/install-doc/ [FIXME]
Manual de Normativa de Debian (primaria)
Texto técnico de referencia de Debian.
Paquete: debian-policy
Archivo: file:///usr/share/doc/debian-policy/
Referencia para Desarrolladores de Debian (primaria)
Conocimientos básicos para desarrolladores.
Para consultar una vez para el resto de nosotros.
Web: http://www.debian.org/doc/manuals/developers-reference/
Paquete: developers-reference
Achivo: file:///usr/share/doc/developers-reference/
Guía para Nuevos Encargados de Paquetes de Debian (primaria)
Guía práctica para desarrolladores.
Tutoriales para empaquetar para el resto de nosotros.
Paquete: maint-guide
Archivo: file:///usr/share/doc/maint-guide/
Manual para la creación de paquetes (Potato)
Paquete packaging-manual
de potato (actualmente en el apéndice de
la Referencia para Desarrolladores)
Páginas del manual al estilo Unix (primaria)
dlocate -man nombre-paquete (muestra si está disponible)
man sección nombre-comando
Páginas info al estilo GNU (primaria)
info (acceso al nivel superior)
info nombre-comando
Documentación específica de paquetes (primaria)
Encuéntrela en /usr/share/doc/package-name
LDP: Proyecto de Documentación de Linux (secundaria)
COMOs y mini-COMOs para Linux
Web: http://www.tldp.org/
Paquete: doc-linux-text
y doc-linux-html
Archivo: file:///usr/share/doc/HOWTO/
Linux Gazette (secundaria) -- aparecen nuevos números mensualmente
The Linux Gazette
Paquete: lg-all
o lg-latest-two
Archivo: file:///usr/share/doc/lg/
DDP: Proyecto de Documentación de Debian (secundaria)
Manuales específicos de Debian
El Rincón de los Desarrolladores de Debian (secundaria)
Información clave para desarrolladores de Debian
Muy instructiva para el usuario final
Código fuente (absolutamente primaria)
Nadie puede negarlo :-)
Descargar el código fuente siguiendo El código fuente, Sección 2.1.15
Internet Assigned Numbers Authority (primaria)
Web: http://www.iana.org/
Paquete: doc-iana
Archivo: file:///usr/share/doc/doc-iana/
Internet requests for comments (estándares IETF) (primaria)
Paquete: doc-rfc
Archivo: file:///usr/share/doc/RFC/
Las siguientes referencias están disponibles para UNIX en general. Por favor, tenga en cuenta que existen pequeñas diferencias entre diferentes tipos de sistemas UNIX. Los nombres de disposivos y los métodos de arranque requieren de una especial atención.
El Entorno de Programación UNIX
El libro que hay que leer para aprender cómo funciona UNIX.
de B. W. Kernighan and R. Pike
Publicado por Princeton Hall Software Series
El Lenguaje de Programación C (segunda edición)
El libro que hay que leer para aprender el ANSI C.
de B. W. Kernighan y D. M. Ritchie
Publicado por Princeton Hall Software Series
UNIX Power Tools
El libro que hay que leer para aprender trucos de UNIX.
de Jerry Peek, Tim O'Reilly y Mike Loukides
Publicado por O'Reilly y Associates
Essential System Administration (segunda edición)
El libro que hay que leer para aprender sobre la administración de sistema UNIX para distintos sabores UNIX.
de Aeleen Frisch
Publicado por O'Reilly y Associates
Linux: Rute User's Tutorial and Exposition
Un excelente libro en línea y de tapa dura que abarca la administración de sistemas GNU/Linux.
De Paul Sheer
Publicado por Prentice Hall
Paquete: rutebook
(from non-free)
Archivo: file:///usr/share/doc/rutebook/
Bell Labs: Computing Sciences Research
Valioso archivo sobre la historia de UNIX
Principal: http://cm.bell-labs.com/cm/cs/
Informes técnicos selectos: http://cm.bell-labs.com/cm/cs/cstr.html
Algunas publicaciones: http://cm.bell-labs.com/cm/cs/papers.html
Recursos en línea sobre Linux en general
Red Hat (vendedor comercial de
Linux)
(RPM, Sys-V init)
SuSE, Inc. (vendedor comercial de
Linux)
(RPM, Sys-V init)
Slackware
(TGZ, BSD-style
init)
Guías generales en línea y recursos sobre UNIX
Páginas principales de projectos de software libre
Muchas palabras usadas en Debian son términos bastantes crípticos. También se utilizan muchos acrónimos. El siguiente comando resolverá la mayoría de nuestras dudas:
$ dict escriba-aquí-una-palabra-extraña
En Debian existen muchísimos paquetes y, a veces, resulta difícil saber cuál
probar primero. Véase Resultados
del concurso de popularidad de Debian
para conocer lo que usan los
demás. Asimismo instale el paquete popularity-contest
para
contribuir.
La distribución Debian tiene un sistema de seguimiento de fallos
(BTS)
que lleva un registro de fallos informados por los usuarios y
desarrolladores. A cada fallo se le asigna un número y se mantiene en el
archivo hasta que es marcado como resuelto.
Antes de enviar el informe de un fallo debe comprobar que nadie lo hizo antes.
Las listas con los fallos más significativos están disponibles en Internet
y en otros lugares
. Véase
también Búsqueda de fallos y ayuda en Debian, Sección
6.3.1.
Pueden existir diversos informes de fallos críticos marcados con FTBFS. Esto significa "Fails To Build From Source". (Falla al compilar el código fuente)
Los pasos a seguir para informar un fallo se explica en http://www.debian.org/Bugs/Reporting
Por lo menos lea debian-devel-announce (en inglés, de sólo lectura y con poco tráfico) para estar al día con Debian.
Las listas de correo de mayor interés para los usuarios de Debian son la debian-user (en inglés, de libre acceso y con mucho tráfico) y las otras listas debian-user-idioma (para otros idiomas).
Para información sobre estas listas y detalles de cómo suscribirse véase
http://lists.debian.org/
.
Por favor, consulte los archivos tratando de encontrar respuestas a sus
preguntas antes de publicarlas y ajústese a la reglas de etiqueta de la lista.
If you do not wish to get CCed for the reply to your mailing list posting,
utilice la cabecera Mail-Followup-To: que es una medida muy
efectiva. Esta es una convención de las listas de correo como se explica en
http://cr.yp.to/proto/replyto.html
.
IRC (Internet Relay Chat) es una forma de conversar con gente de todo el mundo
en tiempo real. Los canales IRC dedicados a Debian se pueden encontrar en la
red IRC freenode
- Para
conectarse, necesita un cliente IRC. Algunos de los clientes más populares
son XChat, BitchX, ircII, irssi, epic4 y KSirc, todos ellos han sido
empaquetados para Debian. Una vez que tenga instalado el cliente, necesita
conectarse al servidor. En la mayoría de los clientes, lo puede hacer
escribiendo:
/server irc.debian.org
Una vez conectado, únase al canal tecleando #debian
/join #debian
Para abandonar el canal #teclee debian
/part #debian
Para salir del cliente irc teclee
/quit
Para enviar un mensaje privado "Hola Sr. Quiensea" a quiensea teclee
/msg quiensea Hola Sr. Quiensea
Observe que cualquier cosa que escriba sin la / precedente es enviada al canal como un mensaje.
Observación: los clientes tales como XChat a menudo tienen una forma diferente de unirse a servidores/canales (distintas interfaces gráficas de usuario).
Existen diversos motores de búsqueda que proporcionan documentación relacionada con Debian:
Google
: incluir
"site:debian.org" como parámetro de búsqueda.
Grupos Google
: un motor de
búsqueda para los foros de discusión. Incluir "linux.debian.user"
como parámetro de búsqueda.
Por ejemplo, buscando la cadena "cgi-perl" se obtiene una explicación más detallada de este paquete que la breve descripción proporcionada por su archivo de control. Véase Búsqueda de fallos y ayuda en Debian, Sección 6.3.1 por ejemplo.
Las siguientes son algunas URLs que recopilé para temas específicos.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
La Debian Reference (version 1) fue iniciada por Osamu Aoki osamu#at#debian.org
a partir del
resumen de su instalación personal que inicialmente denominó "Referencia
Rápida..." ("Quick Reference ..."). Muchos de los contenidos
provienen de los archivos de la lista de correo "debian-user".
También fueron referenciados "Manual de Instalación Debian " y
"Debian Release Notes".
Siguiendo las sugerencias de Josip Rodin, un miembro muy participativo del
Proyecto de Documentación
Debian
(DDP) y el encargado actual de las "FAQ de Debian",
el documento fue renombrado como "Referencia Debian" y se nutrió con
diversos capítulos de las "Debian FAQ". Luego se creo el resumen
"Debian Quick Reference".
Este documento fue editado, traducido y ampliado por los siguientes miembros el equipo QREF:
Inglés original de la "Quick Reference..."
Osamu Aoki osamu#at#debian.org
(coordinador:
de todos los contenidos)
Relectura del original en inglés y contribuciones adicionales
David Sewell dsewell#at#virginia.edu
(coordinador: en estilo)
Thomas Hood jdthood#at#yahoo.co.uk
(temas
relacionados con redes)
Brian Nelson nelson#at#bignachos.com
(en
especial, temas relacionados con X)
Jan Michael C Alonzo jmalonzo#at#spaceants.net
Daniel Webb webb#at#robust.colorado.edu
Intercambio de opiniones con todos los traductores
Traducción al francés
Guillaume Erbs gerbs#at#free.fr
(coordinador: fr)
Rénald Casagraude rcasagraude#at#interfaces.fr
Jean-Pierre Delange adeimantos#at#free.fr
Daniel Desages daniel#at#desages.com
Traducción al italiano
Davide Di Lazzaro mc0315#at#mclink.it
(coordinador:
it)
Traducción al portugués brasileño
Paulo Rogério Ormenese pormenese#at#uol.com.br
(coordinador: pt-br)
Andre Luis Lopes andrelop#at#ig.com.br
Marcio Roberto Teixeira marciotex#at#pop.com.br
Rildo Taveira de Oliveira to_rei#at#yahoo.com
Raphael Bittencourt Simoes Costa raphael-bsc#at#bol.com.br
Gustavo Noronha Silva kov#at#debian.org
(coordinador)
Traducción al español
Walter Echarri wecharri#at#infovia.com.ar
(coordinador: es)
José Carreiro ffx#at#urbanet.ch
Traducción al alemán
Jens Seidel tux-master#at#web.de
(coordinador: de)
Willi Dyck wdyck#at#gmx.net
Stefan Schröder stefan#at#fkp.uni-hannover.de
Agon S. Buchholz asb#at#kefk.net
Traducción al polaco—los siguientes miembros de PDDP
:
Marcin Andruszkiewicz
Mariusz Centka mariusz.centka#at#debian.linux.org.pl
Bartosz Fenski fenio#at#debian.linux.org.pl
(coordinador: pl)
Radoslaw Grzanka radekg#at#debian.linux.org.pl
Bartosz 'Xebord' Janowski
Jacek Lachowicz
Rafal Michaluk
Leonard Milcin, Jr.
Tomasz Z. Napierala zen#at#debian.linux.org.pl
Oskar Ostafin cx#at#debian.linux.org.pl
Tomasz Piekos
Jacek Politowski
Mateusz Prichacz mateusz#at#debian.linux.org.pl
Marcin Rogowski
Pawel Rozanski
Mariusz Strzelecki
Krzysztof Scierski
Przemyslaw Adam Smiejek tristan#at#debian.linux.org.pl
Krzysztof Szynter
Mateusz Tryka uszek#at#debian.linux.org.pl
Cezary Uchto
Krzysztof Witkowski tjup#at#debian.linux.org.pl
Bartosz Zapalowski zapal#at#debian.linux.org.pl
Traducción al chino (simplificado)
Hao "Lyoo" LIU iamlyoo#at#163.net
Ming Hua minghua#at#rice.edu
Xiao Sheng Wen atzlinux#at#163.com
(leader:
zh-cn)
Haifeng Chen optical.dlz#at#gmail.com
Xie Yanbo xieyanbo#at#gmail.com
easthero easthero#at#gmail.com
Traducción al chino (tradicional)
Asho Yeh asho#at#debian.org.tw
(coordinador: zh-tw)
Tang Wei Ching wctang#at#csie.nctu.edu.tw
(ex-coordinador: zh-tw)
Traducción al japonés
Shinichi Tsunoda tsuno#at#ngy.1st.ne.jp
(coordinador: ja)
Osamu Aoki osamu#at#debian.org
QREF es una abreviatura del título del documento original, "Quick Reference..." (Referencia rápida...) y es también el nombre del proyecto en qref.sourceforge.net.
La mayoría de los contenidos de Fundamentos de Debian, Capítulo 2 provienen de las "FAQ de Debian" (Marzo del 2002):
5. Los archivos FTP de Debian ftparchives.sgml
(todo el
capítulo)
6. Fundamentos de la Administración de Paquetes Debian
pkg_basics.sgml
(todo el capítulo)
7. Las Herramientas de Administración de Paquetes Debian
pkgtools.sgml
(todo el capítulo)
8. Manteniendo su sistema Debian actualizado uptodate.sgml
(todo
el capítulo)
9. Debian y el kernel kernel.sgml
(todo el capítulo)
10. Personalizando la instalación de Debian GNU/Linux
customizing.sgml
(parte del capítulo)
Estas secciones de las "FAQ de Debian" han sido incluidas en este documento después de algunas modificaciones para reflejar los cambios recientes del sistema Debian.
Las "FAQ de Debian" originales fueron creadas y estaban a cargo de J.H.M. Dassen (Ray) y Chuck Stickelman. Las personas que reescribieron las "FAQ de Debian" fueron Susan G. Kleinmann y Sven Rudolph. Posteriormente estuvieron a cargo de Santiago Vila. El encargado actual es Josip Rodin.
Parte de la información de las "FAQ de Debian" provienen de:
El anuncio de la versión Debian-1.1, por Bruce Perens
.
Las FAQ de Linux, por Ian Jackson
.
el manual de dpkg para programadores y el manual de normativa de Debian (véase Referencias, Sección 15.1)
una gran cantidad de desarrolladores, voluntarios, beta-testers y
los frágiles recuerdos de sus autores :-)
Algunas partes de la sección "Tutorial" se obtuvieron de
"Debian Tutorial" de Havoc Pennington, Oliver Elphick, Ole Tetlie, James Treacy, Craig Sawyer y Ivan E. Moore II (este documento se creo a partir de la "Linux User's Guide" de Larry Greenfield.)
"Debian GNU/Linux: Guide to Installation and Usage" de John Goerzen y Ossama Othman.
Queremos agradecer a todos aquellos que han ayudado a crear este documento.
Puesto que no soy un experto, no pretendo ser un entendido en Debian o Linux en general. Las consideraciones sobre seguridad quizás sean aplicables únicamente al ámbito doméstico.
El presente documento no reemplaza a ninguna de las guías autorizadas.
No se ofrecen garantías de ningún tipo. Todas las marcas son propiedad de sus respectivos dueños.
Son bienvenidos todos los comentarios y sugerencias. Por favor, envíen un
mensaje a Debian BTS system
para el paquete debian-reference
o los respectivos paquetes
traducidos. El uso de reportbug
facilita el envío de un reporte
de fallos. Incluso pueden enviar un mail para Osamu Aoki
a osamu#at#debian.org
en inglés o a
cada traductor en su respectivo idioma)
Aunque vivía en USA, mi idioma nativo no es el inglés. Cualquier corrección gramatical es bienvenida.
La mejor contribución consiste en aplicar diff a la versión SGML del documento aunque también es bienvenido diff aplicado a la versión texto.
Los archivos originales en SGML usados para crear este documento están
disponible vía CVS en: :pserver:anonymous@cvs.sf.net/cvsroot/qref
o en http://svn.debian.org/wsvn/ddp/manuals/trunk/quick-reference/
.
El presente documento fue escrito usando la DTD SGML de DebianDoc (re-escrito a partir del SGML de LinuxDoc). El sistema SGML de DebianDoc nos permite crear documentos en una amplia variedad de formatos a partir de un único archivo fuente. De esta manera es posible ver este documento en HTML, texto plano, TeX DVI, PostScript, PDF o GNU info.
Las utilidades de conversión del SGML de DebianDoc están disponible en el
paquete Debian debiandoc-sgml
.
El sistema Linux es una poderosa plataforma informática cuando es utilizado en red. No obstante, aprender a usar todas sus capacidades no es una tarea sencilla. La configuración de la impresora es un buen ejemplo.
Existe un mapa completo y detallado denominado "CÓDIGO FUENTE". Es muy preciso pero muy difícil de entender. Existen también referencias llamadas COMO (HOWTO) y mini-COMO (mini-HOWTO). Son más fácil de entender pero tienden a proporcionar demasiados detalles y a perder de vista la idea principal. A veces tengo problemas para encontrar la sección correcta en un extenso HOWTO cuando necesito sólo un par de comandos.
Para transitar por el laberinto de información de la configuración del sistema Linux, comencé escribiendo apuntes sencillos en archivos de texto como referencia rápida. La lista de archivos fue haciéndose más grande y mientras tanto aprendí debiandoc. El resultado es esta Debian Reference (version 1).
Veamos algunas citas interesantes de la lista de correos de Debian.
"Esto es Unix. Le proporciona suficiente cuerda para sostenerse por sí
mismo." — Miquel van Smoorenburg miquels@cistron.nl
"Unix ES amigable... Sólo que es selectivo al elegir sus amigos."
— Tollef Fog Heen tollef@add.no
El proyecto debian-installer
introdujo paquetes con nombres que
terminan en .udeb. En pocas palabras, es un formato
micro-.deb que no necesita seguir estrictamente la política de
Debian, carece de ciertos contenidos como, por ejemplo, documentación y está
destinado a ser usado únicamente por el debian-installer
, el
nuevo instalador de Debian que está siendo desarrollado para el lanzamiento de
Sarge. El formato de archivo de .deb y .udeb son
idénticos. El programa udpkg
utilizado para manipular paquetes
.udeb tiene una capacidad inferior que el estándar
dpkg
y soporta pocas relaciones entre paquetes. La diferencia en
el nombre es debido a que los encargados del archivo de Debian no estaban
contentos con los .debs del archivo que no seguían con la
política de Debian, por lo que fue elegido un nombre diferente para acentuar
esta diferencia y para hacer menos probable que la gente inconcientemente los
instale en sistemas reales. Los .udebs son utilizados en el disco
ram inicial durante la instalación base para crear únicamente un sistema
Debian muy restringido.
Este mecanismo fue proporcionado para realizar actualizaciones del sistema seguras del formato a.out al formato ELF en donde el orden en que se desempaquetaban los paquetes es crítica.
La tecla Ctrl izquierda, la tecla Alt izquierda y la tecla F1 se deben presionar simultáneamente.
Observe que si editó el mensaje de bienvenida situado en
/etc/motd
, éste será diferente.
Debo admitir que acostumbro usar la cuenta de superusuario más a menudo que lo necesario por sencillez y pereza.
Puede resultar conveniente instalar gpm
, emacs21
y
doc-linux-html
. Véase Configuración del
ratón, Sección 3.3 y Editores, Capítulo 11.
Habitualmente denomino a esta cuenta admin pero puede tener un nombre arbitrario.
Es probable que desee añadir este usuario penguin al
grupo adm para permitirle el acceso de lectura a los diversos
archivos de registros situados en /var/log/
. Véase
passwd(5)
, group(5)
, shadow(5)
,
group(5)
, vipw(8)
y vigr(8)
. Para el
significado oficial de usuarios y grupos, véase una versión actual del
documento Usuaris y
grupos
.
La tecla Ctrl izquierda, la Alt izquierda y la tecla Supr deben pulsarse juntas
en la consola. En un sistema predeterminado esto provocará que el sistema se
reinicie. Necesitará modificar el /etc/inittab
para tener el
comando shutdown
con la opción -h como se explica en
Instalación adicional de paquetes, Sección 3.7.1.
Esto es así porque un sistema Debian, incluso apenas recién instalado, se
encuentra configurado con los permisos de archivo adecuados que evitan que un
usuario sin privilegios dañe al sistema. . Por supuesto, aún pueden existir
algunos agujeros de seguridad que se pueden aprovechar, pero aquelos que se
preocupan por este tema no deberían estar leyendo esta sección, sino Securing Debian
Manual
.
Las teclas Ctrl izquierda y la tecla d deben presionarse simultáneamente. . No es necesario presionar la tecla Mayús aunque estos caracteres de control se escriban en mayúsculas como en "control D".
Si aquí escribe root en vez de penguin y la correspondiente contraseña, accederá a la cuenta del superusuario. Este es el procedimiento a seguir para tener acceso a la cuenta de root.
Si no entiende perfectamente de lo que estoy hablando, puede hacerlo después.
Si utiliza una terminal como kon
o Kterm
para el
idioma japonés que emplea determinados caracteres gráficos agregando la
opción -a a la línea de comando del MC puede ayudar a evitar
problemas.
En realidad, vi
o nvi
son los programas que
encontrará por todos lados. Elegí vim
para los recién
iniciados porque ofrece ayuda mediante la tecla F1 además de ser bastante
parecido y mucho más poderoso.
Si no se siente cómodo con vim
, puede seguir usando
mcedit
para la mayoría de las tareas de mantenimiento del
sistema. Puesto que mcedit
trabaja con 8 bits y no sabe nada de
codificaciones, a veces resulta ventajoso para editar archivos de
codificaciones desconocidas. mcedit
no muestra correctamente
archivos UTF-8.
En esta parte del tutorial, el intérprete de comandos significa
bash
. Para más información sobre los diferentes intérpretes de
comandos, véase Shell, Sección 13.2.
En una consola de caracteres de Linux, únicamente las teclas Ctrl y Alt izquierdas funcionan como es de esperar.
Puede desactivar esta característica del terminal usando stty(1)
.
En el entorno X Window, el ratón funciona en el programa Xterm de la misma manera.
Aquí usaré "Unix" en sentido genérico. Cualquier sistema operativo del tipo Unix posee comandos equivalente. El sistema Debian no es la exepción. Por el momento, no se preocupe si algunos comandos no funcionan como es de esperar. No es necesario que respete algún orden al practicar con estos ejemplos.
Si en el intérprete de comando se utiliza alias, sus salidas son diferentes.
Unix oculta los nombres de archivos que comienzan con ".". Generalmente son achivos de configuración o que incluyen preferencias del usuario.
El paginador predeterminado del sistema Debian es more
que no
permite navegar hacia atrás. Instalando el paquete less
mediante
la línea de comandos apt-get install less, éste se convertirá
en el paginador predeterminado y prodrá navegar hacia atrás usando las teclas
de desplazamiento.
El [ y el ] en la expresión regular, permite evitar
que grep
coincida consiguo mismo. El 4* significa 0
o más repeticiones del carácter 4 lo cual permite a grep
capturar tanto a exim
como a exim4
. Aunque
* se utiliza como carácter comodín tanto en el intérprete de
comandos como en las expresiones regulares, su significado es diferente.
aquí se utiliza --bzip2 en vez de ls opción -j para
asegurar que funcione con la versión antigua de tar
que viene con
Potato.
aquí se utiliza nuevamente --bzip2 por cuestiones de compatibilidad.
He simplificado la realidad para el principiante. Véase bash(1)
para una explicación precisa.
Para obtener la siguiente salida, necesita instalar el locale francés, véase Locales, Sección 9.7.2. No es fundamental para el tutorial. Esto se realiza para mostrar sus efectos potenciales.
El sistema Debian es un sistema multitarea.
En algunos sistemas los directorios se denominan carpetas.
Si bien es posible utilizar prácticamente cualquier letra o símbolo en el nombre de un archivo, en la práctica resulta ser una mala idea. Es conveniente evitar cualquier carácter que tiene un significado especial en la línea de comandos, incluyendo espacios, tabulaciones, nueva líneas y otros caracteres especiales: { } ( ) [ ] ' ` " \ / > < | ; ! # & ^ * % @ $ .
Si desea separar palabras dentro de un nombre, el guión, el punto y el guión bajo son buenas opciones. También puede escribir en mayúsculas cada palabra integrante DeEstaManera.
Existe otro uso de la palabra ruta. Véase Búsqueda en la ruta de comandos, Sección 4.3.6. El significado implícito generalmente resulta claro según el contexto.
Por supuesto este método funciona únicamente para el modo numérico de tres dígitos.
recode
permite alias más convenientes que iconv
.
Fin de líneas:
Retorno de carro significa ASCII 13, ASCII 0xD, ^M o \r .
Avance de línea significa ASCII 10, ASCII 0xA, ^J o \n .
Si la escribe en una sóla línea, necesita añadir algunos punto y comas, ";", para marcar el final de los comandos del shell.
Observe que una interfaz Wi-Fi es en realidad un alias para una interfaz
Ethernet que brinda acceso a los parámetros de configuración propios de
Wi-Fi. Estos parámetros se controlan usando el programa
iwconfig
.
Esto es así si se se utiliza la versión 4 de IP. En IPv6 las direcciones son
de 128 bits. Véase http://www.ipv6.org/
.
Este sistema no era flexible y desperdiciaba muchas direcciones IP, por lo tanto actualmente las redes IPv4 permiten direcciones de red componentes de longitud variable.
La dirección de la red se puede obtener haciendo un AND bit a bit entre una dirección de la red y la máscara de red. La dirección de difusión se puede obtener haciendo un OR bit a bit entre la dirección de red y el complemento de uno de la máscara de red.
Este archivo de opciones se incluye usando la opción call.
Técnicamente, es el FQDN devuelto por gethostbyname(2)
para el
nombre de máquina dado por gethostname(2)
.
La forma en que el sistema de resolución resuelve los nombres teóricamente
también viene dada por el archivo de configuración
/etc/host.conf
. La línea order en este archivo
lista los métodos que deberían utilizarse para resolver un nombre:
bind, hosts, nis. Véase
host.conf(5)
. Creo que esta línea ha sido reemplazada por
hosts de nsswitch.conf
pero no estoy seguro.
Desde mediados de octubre 2003 está disponible también un
dhcp-client
. Este contiene la versión 2 del cliente ISC DHCP que
ha sido reemplazada por la versión 3 que viene con dhcp3-client
.
Los encargados planean algún día cambiar el nombre de
dhcp3-client
a dhcp-client
pero parece que no
ocurrirá a tiempo para el lanzamiento de Sarge.
El formato del archivo /etc/network/interfaces
de la versión
actual de ifupdown
es ligeramente incompatible con el formato de
archivo de las primeras versiones de Potato. Si es necesario el script
post-instalación ifupdown
debería actualizar el archivo
automáticamente.
Esto significa también que no debería utilizar otras herramientas de
configuración de alto nivel tales como whereami
que llaman a
herramientas de configuración de bajo nivel.
Véase fallo #196877
.
Véase fallo #127786
.
Esta terminología se utiliza en la documentación de ifupdown
.
Observe que las interfaces que aparecen en las líneas auto son interfaces físicas, no lógicas.
Obsérvese que esto deja de lado a los enlaces "stop"
(/etc/rc?.d/K??loquesea
). Deseará retener los enlaces
"stop", por ejemplo, en los niveles 0 y 6, ya que en su ausencia el
paquete loquesea restaurará todos los enlaces simbólicos rc a su
estado original durante una actualización.
Si su sistema inicia discover
en
/etc/rcS.d/S36discover
, debe moverlo a
/etc/rcS.d/S40discover
. Véase fallo #208155
.
También puede ser configurado por cualquiera de los scripts que han sido
instalados en /etc/hotplug.d/net/
.
En las versiones anteriores de Debian la manera estándar para configurar las
tarjetas de red PCMCIA consistía en usar cardmgr
junto con los
scripts /etc/pcmcia/network
y
/etc/pcmcia/network.opts
. Estos scripts fueron desarrollados en
la época en que Linux todavía no había desarrollado el método más general
hotplug.
Algunas personas aún usan estos scripts en su configuración predeterminada
que simplemente llaman a ifup
luego que se añade la interfaz y a
ifdown
cuando se la elimina. Como se observó arriba, actualmente
se recomienda usar hotplug
.
Otros recurren directamente a comandos de configuración de red de bajo nivel
que se activan cuando ciertas variables de
/etc/pcmcia/network.opts
se inicializan en
"y". Este sistema tiene diversos inconvenientes. Es
afectado por condiciones de carrera; sólo funciona con tarjetas PCMCIA de 16
bits; hace lo mismo que hace ifupdown
. Por lo tanto, es obsoleto.
En este caso %nn se utiliza para el carácter codificado hexadecimal nn.
Los fuentes TeX para este libro se encuentra disponible en ftp://ftp.dante.de/pub/tex/systems/knuth/tex/texbook.tex
.
ftp://ftp.dante.de/pub/tex/systems/knuth/lib/manmac.tex
contiene la mayoría de las macros necesarias. Puede procesar este documento
con tex
luego de comentar las líneas 7 a 10 y añadir
\input manmac \proofmodefalse.
Es altamente recomendable adquirir este libro (y todos los otros libros de Donald E. Knuth) en vez de usar la versión en línea. Pero los fuentes ¡ son un ejemplo magnífico de TeX !
Esta WEB no tiene nada que ver con la World Wide Web. WEB (para PASCAL) y CWEB (para C/C++) son herramientas tradicionales para la programación ilustrada.
[ anterior ] [ Contenidos ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ siguiente ]
Debian Reference (version 1)
This translation is based on old version of Debian Reference (English, version 1.x), well before Sat, 26 Jan 2008.osamu#at#debian.org
wecharri#at#infovia.com.ar