La Guía de Referencia de Debian (version 2.125) (2024-11-15 13:32:55 UTC) pretende aportar una visión amplia del
sistema Debian y servirde guía al usuario después de la instalación. Se tratan diferentes aspectos de la administración
del sistema, usando ejemplos en el intérprete de órdenes, para todo tipo de usuarios.
Este libro es libre. Puede redistribuirlo y/o modificarlo cumpliendo las condiciones de cualquier versión de la Licencia
Pública General GNU compatible con las Directrices de software libre de Debian (DFSG).
Page 23
Guía de referencia de Debianxxii
Prefacio
La Guía de referencia de Debian (versión 2.125) (2024-11-15 13:32:55 UTC) pretende proporcionar una visión general
amplia de la administración del sistema Debian como una guía del usuario posterior a la instalación.
El lector al que va dirigido esta obra es aquel que desea aprender scripts de shell, pero que no esta preparado para
entender el código fuente C que le permita comprender el funcionamiento interno de un sistema GNULinux.
Para instrucciones de instalación, ver:
Guía de Instalación de Debian GNU/Linux de la versión estable (stable),
Guía de Instalación de Debian GNU/Linux de la versión prueba (testing)
Aviso
Esta guía se ofrece sin ninguna garantía. Todas las marcas son propiedad de sus respectivos dueños.
Debian es un sistema vivo. Por lo que es difícil mantener este documento totalmente actualizado y sin errores.
Para escribir este documento se usa la versión testing del sistema Debian. Cuando lo lea puede que parte de su
contenido se encuentre desactualizado.
Por favor, considere este documento como una fuente secundaria de información. No sustituye a ninguna guía acreditada. El autor y los colaboradores no asumen ninguna responsabilidad por las consecuencias de errores, omisiones
o ambigüedades de este documento.
Qué es Debian
El Proyecto Debian es una asociación de individualidades que han hecho causa común para crear un sistema operativo libre. Su distribución se caracteriza por lo siguiente.
Compromiso con la libertad del software: Contrato Social de Debian y Directrices de Software Libre de Debian
(DFSG)
Publicación de trabajo voluntario no remunerado en Internet: https://www.debian.org
Gran cantidad de paquetes de software de alta calidad compilados
Enfocado en la estabilidad y la seguridad con fácil acceso a las actualizaciones de seguridad
Centrado en la actualización fluida a las versiones recientes de los paquetes de los archivos testing
Admite una amplia gama de arquitecturas de hardware
El Software Libre de Debian tiene su origen en GNU, Linux, BSD, X, ISC, Apache, Ghostscript, Sistema de Impresión
Común de Unix (Common Unix Printing System) , Samba, GNOME, KDE, Mozilla, LibreOffice, Vim, TeX, LaTeX,
DocBook, Perl, Python, Tcl, Java, Ruby, PHP, Berkeley DB, MariaDB, PostgreSQL, SQLite, Exim, Postfix, Mutt,
FreeBSD, OpenBSD, Plan 9 y otros m deuchos proyectos libres e independientes. Debian integra esta diversidad de
Software Libre en un único sistema.
Page 24
Guía de referencia de Debianxxiii
Sobre este documento
Directrices
En la elaboración de este documento se han seguido las siguientes normas orientativas.
Proporciona un visión global y omite los casos menos frecuentes (Visión General)
simplicidad y brevedad (KISS)
No se reinventa la rueda (se usan enlaces a fuentes ya existentes)
centrado en la consola y herramientas sin interfaz gráfico de usuario. ( Usaejemplos del intérprete de órdenes)
Es objetivo. (Usa popcon etc.)
sugerencia
Trataré de mostrar las facetas jerárquicas y de bajo nivel del sistema.
Prerrequisitos
aviso
Más allá de este documento, has de ser capaz de conseguir las respuestas por ti mismo. Este documento
solo es un punto de partida.
Debes buscar la solución por ti mismo a partir de las fuentes primarias.
El sitio web de Debian https://www.debian.org para la información general,
Documentación en el directorio «/usr/share/docnombre_del_paquete»,
Las páginas de manual al estilo de Unix: «dpkg -Lnombre_del_paquete|grep '/man/man.*/'»,
Las páginas de información (info page) al estilo GNU: «dpkg -L nombre_de_paquete |grep '/info/'»,
El informe de errores: https://bugs.debian.org/nombre_del_paquete,
La wiki de Debian https://wiki.debian.org/ para profundizar y aprender sobre temas concretos,
La especificación UNIX única de The UNIX System Home Page del Open Group
La enciclopedia libre Wikipedia en https://www.wikipedia.org/
El manual del administrador de Debian,
Los COMOs de El Proyecto de Documentación de Linux (TLDP)
nota
Para obtener documentación detallada de un paquete, necesitará instalar el paquete correspondiente, cuyo nombre
es el nombre del paquete con el sufijo «-doc».
Page 25
Guía de referencia de Debianxxiv
Convenciones
Este documento proporciona información con un estilo de presentación simple con ejemplos del intérprete de órdenesbash(1).
Estos cursores del intérprete de órdenes diferencian el tipo de cuenta que tiene asociada un conjunto de variables de
entorno como: «PS1='\$'» y «PS2=' '». Se han seleccionado estos valores para mejorar la claridad del documento
y no tienen por qué ajustarse a los de un sistema real en funcionamiento.
Todos los ejemplos de comandos se ejecutan en la configuración regional en inglés ”LANG=en_US.UTF8”. No espere
cadenas de marcador de posición como command-in-root-account y command-in-user-account para traducirse en ejemplos de comandos. Esta es una elección intencionada para mantener actualizados todos los ejemplos
traducidos.
nota
Consulte el significado de las variables de entorno «$PS1» y «$PS2» en bash(1).
Cuando sea necesario ejecutar una acción requerida por parte del administrador del sistema se utilizará una oración
imperativa, p. ej. «Pulse la tecla Intro después de escribir cada orden en el intérprete de órdenes.»
La descripción de una columna y similares en una tabla puede contener un sintagma nominal seguido de las reglas
de la descripción corta de los paquetes que eliminan los artículos como «un» y «la». También pueden contener una
oración en infinitivo como un sintagma nominal seguido de la descripción corta de la orden según la reglas de las
páginas de manual. Esto puede parecer que no tiene sentido, pero son reglas elegidas para mantener el estilo tan
simple como es posible. Los sintagmas nominales no se inician en mayúsculas y no finalizan con un punto según
las reglas de descripciones cortas.
nota
Los nombres propios, incluidas las órdenes, mantienen las mayúsculas y las minúsculas independientemente de
su lugar.
La cita de un fragmento de una orden en un párrafo aparecerá con otro tipo de letra entre comillas dobles como
«aptitude safe-upgrade».
El contenido de un archivo de configuración en formato texto citado en un párrafo aparecerá con otro tipo de letra
entre comillas dobles, como «deb-src».
Una orden se cita por su nombre en otro tipo de letra, seguida opcionalmente por el número de la sección de las
páginas manual a la que pertenece entre paréntesis, como bash(1). Se recomienda escribir lo siguiente para obtener
más información sobre dicha orden.
$ man 1 bash
Una página de manual se cita por su nombre en otro tipo de letra seguido del número de la sección de la página
de manual a la que pertenece entre paréntesis, como sources.list(5). Se recomienda escribir lo siguiente para
obtener más información sobre dicha página de manual.
$ man 5 sources.list
Una página de información se cita con su orden en otro tipo de letra entre comillas dobles como, «info make».
Es recomendable ejecutar lo siguiente para obtener más información sobre dicha página de información.
$ info make
Page 26
Guía de referencia de Debianxxv
Un nombre de archivo es referido por la fuente de la máquina de escribir entre comillas dobles, como ”/etc/passwd”.
Para los archivos de configuración, se recomienda obtener información escribiendo lo siguiente.
$ sensible-pager "/etc/passwd"
Un nombre de directorio es referido por la fuente de máquina de escribir entre comillas dobles, como ”/etc/apt/”.
Animamos a explorar su contenido escribiendo lo siguiente.
$ mc "/etc/apt/"
El nombre de un paquete se cita por su nombre con un tipo de letra diferente, como vim. Animo a obtener más
información sobre el paquete escribiendo lo siguiente.
$ dpkg -L vim
$ apt-cache show vim
$ aptitude show vim
Una documentación puede indicar su ubicación mediante el nombre de archivo en la fuente de máquina de escribir
entre comillas dobles, como ”/usr/share/doc/base-passwd/usuarios-y-grupos. txt.gz” y ”/usr/share/doc/base-passwd/users-and-groups.html”;
o por su URL, como https://www.debian.org. Le animamos a leer la documentación escribiendo lo siguiente.
Una variable de entorno se cita con su nombre en otro tipo de letra precedido de «$» y entre comillas dobles como
«$TERM». Descubra el valor de dicha variable escribiendo lo que se muestra.
$ echo "$TERM"
Estadísticas de uso (popcon)
Los datos de popcon se presentan como la medida objetiva de la popularidad de cada paquete. Se descargó el 202403-03 11:51:37 UTC y contiene el envío total de 237734 informes sobre 198687 paquetes binarios y arquitecturas 27
.
nota
Tener en cuenta que el archivo amd64 inestable contiene solo 74165 paquetes actuales. Los datos de popcon
contienen informes de muchas instalaciones de sistemas antiguos.
En las estadísticas de uso, un número precedido de «V» es el número de «votos» que se calcula mediante la fórmula
«1000 * (número de paquetes utilizados recientemente en el equipo)/(total de informes de uso remitidos)».
En las estadística de uso, un número precedido de «I» se refiere al «número de instalaciones» calculado por «1000
* (número de instalaciones del paquete)/(el total de informes de uso)».
nota
Las estadísticas de uso no determina la importancia de los paquetes. Existen muchos factores que puede afectar a las estadísticas. Por ejemplo, algunos sistemas que participan en estas, pueden tener directorios como
«/usr/bin/» con la opción «noatime» para mejorar el desempeño del sistema desactivando su sistema de
«voto».
Page 27
Guía de referencia de Debianxxvi
El tamaño del paquete
El tamaño que tenga un paquete es una medida objetiva. Se obtiene del valor de «Tamaño sin comprimir:» que
devuelve la orden apt-cache show» o «aptitude show» (en la arquitectura amd64 de la distribución «inestable»).
El tamaño informado es en KiB (Kibibyte = equivalente a 1024 bytes).
nota
Un paquete con un tamaño pequeño puede indicar que en la distribución «inestable» es un paquete «ficticio»
que instala otro con contenido real según sus dependencias. Un paquete «ficticio» permite transiciones fluidas o
la división de un paquete en varios.
nota
Cuando al tamaño del paquete le sigue «(*)» significa que no está disponible en la distribución «inestable» y
que el valor que aparece es el tamaño en la distribución «experimental».
Informes de errores en este documento
Puede informar de un error en el paquete debian-reference utilizando reportbug(1). Por favor, incluya la corrección ejecutando «diff -u» con el texto plano o la fuente.
Consejos para usuarios noveles
Aquí hay algunos consejos para usuarios noveles:
haga copias de seguridad de sus datos
• Consulte Sección10.2.
proteja su contraseña y claves de seguridad
KISS (’keep it simple stupid’, mantenlo sencillo estúpido)
• no complique su sistema
lea sus archivos de registro
• el PRIMER error es el que cuenta
RTFM (’read the fine manual’, lea el manual)
busque en Internet antes de preguntar
no use la cuenta del superusuario cuando no es necesario
no modifique el sistema de gestión de paquetes
no escriba nada que no entienda
no cambie los permisos de los archivos (si no conoce su impacto en la seguridad)
no cierre su terminal de superusuario hasta que PRUEBE sus cambios
tener a mano un medio alternativo de arranque (dispositivo de memoria USB, CD…)
Page 28
Guía de referencia de Debianxxvii
Algunos comentarios para usuarios noveles
He aquí algunas citas interesantes de la lista de correo de Debian que pueden servir de ayuda a los nuevos usuarios.
«Así es Unix. Te da bastante cuerda para que te ahorques tu mismo.» --- Miquel van Smoorenburg <miquels at
cistron.nl>
«Unix ES muy amigable ... únicamente que es muy puntilloso eligiendo a sus amigos.» --- Tollef Fog Heen <tollef
at add.no>
El artículo de Wikipedia «la filosofía de Unix» contiene citas muy interesantes.
Page 29
Guía de referencia de Debian1 / 267
Capítulo 1
Tutoriales de GNU/Linux
Aprender a usar un sistema informático es como aprender un idioma nuevo. Aunque los libros de ayuda y la documentación son útiles, uno debe practicarlo. Para ayudarle a comenzar sin tropiezos, he escrito algunos puntos
básicos.
La calidad del diseño de Debian GNU/Linux tiene su origen en el sistema operativo Unix, un sistema operativo
multiusuario y multitarea. Debe aprender a aprovechar el poder de estas características y las similitudes entre Unix
y GNU/Linux.
No utilice únicamente documentos de GNU/Linux y utilice también documentos de Unix , ya que esto le permitirá
acceder a mucha información útil.
nota
Si tiene experiencia con las herramientas de la línea de órdenes de algún sistema tipo Unix probablemente ya
conozca lo que se explica en este documento. Utilice este documento para refrescar sus conocimientos.
1.1.Introducción a la consola
1.1.1.El cursor del intérprete de órdenes
Al iniciar el sistema, aparecerá la pantalla de inicio de sesión basada en caracteres si no instaló ningún entorno GUI
de sistema de escritorio como GNOME o KDE. Supongamos que su nombre de host es foo, el indicador de inicio
de sesión tiene el siguiente aspecto.
A pesar de tener instalado un entorno gráfico de usuario, puede acceder al indicador de inicio de sesión basado en
caracteres mediante Ctrl-Alt-F3, y puede regresar al entorno GUI mediante Ctrl-Alt-F2 (consulte Sección1.1.6 para
más información).
foo login:
En el diálogo de entrada escriba su nombre de usuario, p. ej. pingüino y pulse la tecla Intro, a continuación escriba
su contraseña y pulse Intro otra vez.
nota
Siguiendo la tradición Unix, el nombre de usuario y la contraseña del sistema Debian distinguen entre mayúsculas
y minúsculas. El nombre de usuario se suele elegir sólo entre minúsculas. La primera cuenta de usuario se crea
normalmente durante la instalación. El usuario root puede crear cuentas de usuario adicionales con adduser(8).
Page 30
Guía de referencia de Debian2 / 267
El sistema empieza mostrando el mensaje de bienvenida almacenado en «/etc/motd» (Mensaje del día) y muestra
un cursor para realizar la petición de órdenes.
Debian GNU/Linux 12 foo tty3
foo login: penguin
Password:
Linux foo 6.5.0-0.deb12.4-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.5.10-1~bpo12+1 (2023-11-23) ←-
x86_64
The programs included with the Debian GNU/Linux system are free software;
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.
Last login: Wed Dec 20 09:39:00 JST 2023 on tty3
foo:~$
Ahora nos encontramos en el intérprete de órdenes (shell). El intérprete de órdenes interpreta las órdenes del usuario.
1.1.2.El indicador del intérprete de órdenes en GUI
Si ha instalado un entorno GUI durante la instalación, se mostrará una pantalla gráfica de inicio de sesión al iniciar
el sistema. Escribe el nombre de usuario y la contraseña para iniciar sesión en la cuenta de usuario sin privilegios.
Use la pestaña para navegar entre el nombre de usuario y la contraseña, o use el clic principal del ratón.
Puede obtener un cursor del intérprete de órdenes en un entorno gráfico abriendo un programa x-terminal-emulator
como gnome-terminal(1), rxvt(1) o xterm(1). Si usa el entorno de escritorio Gnome para abrir un intérprete de
órdenes debe hacer clic en «Aplicaciones« → «Accesorios« → «Terminal«.
En algunos entornos de escritorio (como fluxbox), no existe un punto de acceso al menú tal cual. Si se encuentra
en este caso, simplemente pruebe a hacer clic con el (botón derecho del ratón) sobre el fondo de escritorio y surgirá
un menú.
1.1.3.La cuenta de superusuario (root)
La cuenta root también se denomina superusuario o usuario privilegiado. Desde esta cuenta, puede realizar las
siguientes tareas de administración del sistema.
leer, escribir y borrar cualquier archivo del sistema independientemente de los permisos de dicho archivo
Cambiar la propiedad y los permisos de cualquier archivo del sistema
Cambiar la contraseña de cualquier usuario no privilegiado del sistema
entrar en la cuenta de cualquier usuario sin usar su contraseña
El poder ilimitado de la cuenta de superusuario necesita de un uso basado en la consideración y la responsabilidad.
aviso
Nunca comparta la contraseña del superusuario con nadie.
Page 31
Guía de referencia de Debian3 / 267
nota
Los permisos de acceso a un archivo (incluidos los dispositivos como un CD-ROM u otros, que son simplemente
otro archivo para el sistema Debian) pueden hacer que sea inaccesible a los usuarios distintos del superusuario.
Aunque el uso de la cuenta de superusuario es una manera rápida de comprobar este tipo de situaciones, resolverlas es algo que debe hacerse estableciendo adecuadamente los permisos del archivo y la relación de usuarios
que pertenece a cada grupo (véase Sección1.2.3).
1.1.4.El cursor del intérprete de órdenes de superusuario
A continuación podrá ver algunos métodos para acceder al intérprete de órdenes del superusuario utilizando la
contraseña del mismo.
Escriba root en la pantalla de inicio de sesión en modo texto.
Escriba «su -l» desde cualquier intérprete de órdenes.
• Esto no conserva el entorno del usuario actual.
Escriba «su» en cualquier intérprete de órdenes.
• esto conserva parte del entorno del usuario actual.
1.1.5.Herramientas gráficas para la administración del sistema
Si el menú de su escritorio no inicia las herramientas gráficas de administración del sistema con los permisos adecuados automáticamente, puede iniciarlas desde el intérprete de órdenes del superusuario en un emulador de terminal
de X como gnome-terminal(1), rxvt(1), o xterm(1). Ver Sección1.1.4 y Sección7.9.
aviso
Nunca inicies un administrador de pantalla/sesión de GUI como root escribiendo root en el indicador de
un administrador de pantalla (por ejemplo, gdm3(1)).
Nunca ejecute programas gráficos remotos no confiables en el sistema de ventanas X cuando se esté
mostrando información crítica, porque dichos programas pueden realizar una interceptación pasiva de toda
su pantalla X.
1.1.6.Consolas virtuales
En el sistema Debian que se instala por defecto hay seis consolas tipo VT100 intercambiables, disponibles para iniciar
un intérprete de órdenes directamente en el equipo Linux. A menos que se encuentre en un entorno gráfico, podrá
cambiar entre ellas presionando simultáneamente la tecla Alt situado en la izquierda y una de las teclas
F1 — F6. Cada consola en modo texto permite acceder independientemente a la cuenta y acceder a un entorno
multiusuario. Este entorno multiusuario es una gran característica de Unix y es muy adictivo.
Si estás en un entorno GUI, puedes ir a la consola de caracteres 3 con la tecla Ctrl-Alt-F3, es decir, presione
Left Ctrl y Left Alt al mismo tiempo tecla y tecla F3. Puede presionar Alt-F2 para volver al entorno
de GUI, que generalmente se ejecuta en la consola virtual 2.
También puede cambiar a otra consola virtual, p. ej. a la consola 3, desde el intérprete de órdenes.
# chvt 3
Page 32
Guía de referencia de Debian4 / 267
1.1.7.Cómo cerrar el intérprete de órdenes
Pulsando Ctrl-D, es decir, la tecla Ctrl de la izquierda y la tecla d simultáneamente en el intérprete de
órdenes, se cerrará. Si se encuentra en una consola de modo texto, volverá a ver la pantalla de inicio de sesión.
Aunque es normal referirse a estos caracteres de control como «control D» en mayúscula, no es necesario pulsar la
tecla de mayúsculas. La abreviatura ^D también es muy utilizada para Ctrl-D. Otra forma de cerrar el intérprete de
órdenes es escribiendo «exit».
Si está en x-terminal-emulator (1), puede cerrar la ventana x-terminal-emulator con esto.
1.1.8.Cómo apagar el sistema
Al igual que cualquier otro sistema operativo moderno en el que la operación con ficheros implica almacenamiento de
datos en memoria para mejorar el rendimiento, el sistema Debian necesita el procedimiento de apagado adecuado
antes de poder apagarse de forma segura. Esto es para mantener la integridad de los ficheros, forzando que todos los
cambios en memoria se escriban en el disco. Si el software de control de energía está disponible, el procedimiento de
apagado apaga automáticamente el sistema. (De lo contrario, es posible que tenga que pulsar el botón de encendido
durante unos segundos después del procedimiento de apagado)
Puedes apagar el sistema en modo multiusuario normal desde la línea de comandos.
# shutdown -h now
Puede apagar el sistema en el modo monousuario desde el intérprete de órdenes como se muestra.
# poweroff -i -f
Ver Sección6.3.8.
1.1.9.Cómo recuperar la configuración normal de una consola
Cuando la pantalla se vuelve loca tras hacer alguna cosa divertida como «cat un-archivo-binario», escriba
«reset» en el intérprete de órdenes. Puede que no sea posible ver la orden en la pantalla mientras la teclea. Además,
puede escribir «clear» para limpiar la pantalla.
1.1.10.Paquetes complementarios recomendados para usuarios sin experiencia
Una instalación mínima del sistema Debian sin ningún entorno de escritorio proporciona la funcionalidad básica de
Unix, sin embargo es una buena idea instalar algunos paquetes de terminal de caracteres adicionales basados en
curses o en modo texto como mc y vim mediante la orden apt-get(8) para que los nuevos usuarios empiecen a
tener experiencia con lo siguiente.
# apt-get update
...
# apt-get install mc vim sudo aptitude
...
Si los paquetes antes mencionados están instalados con anterioridad, no se instalará ningún paquete nuevo.
Puede ser una buena idea que usted leyera algo de documentación útil.
Puedes instalar algunos de estos paquetes de la siguiente manera.
# apt-get install package_name
Page 33
Guía de referencia de Debian5 / 267
paquetepopularidad tamaño descripción
mcV:50, I:2091542Un gestor de archivos en modo texto a pantalla completa
Un programa para proporcionar algunos privilegios de
sudoV:688, I:8416550
vimV:95, I:3693743
vim-tinyV:58, I:9751722
emacs-noxV:4, I:1639647
w3mV:15, I:1872837Navegadores web en modo texto
gpmV:10, I:12521Copiar y pegar, al estilo Unix, en la consola de texto (demonio)
Cuadro 1.1: Relación de paquetes con programas interesantes en modo texto
paquetepopularidad tamaño descripción
doc-debianI:867187
debian-policyI:144659Manual de la Directrices Debian y documentos asociados
developers-reference
V:0, I:52601Directrices e información para desarrolladores de Debian
superusuario a los usuarios de acuerdo a la configuración
establecida
Editor de texto Unix Vi IMproved (Vi Mejorado), un editor de
texto para programadores (versión estándar)
Editor de texto Unix Vi IMproved (Vi Mejorado), un editor de
texto para programadores (versión compacta)
El proyecto GNU Emacs, un editor de texto ampliable basado
en Lisp
Documentación del Proyecto Debian, Preguntas Frecuentes
(FAQ) y otros documentos
debmake-docI:011701Guía para Mantenedores de Debian
debian-historyI:04692Historia del Proyecto Debian
debian-faqI:865790Preguntas frecuentes (FAQ) sobre Debian
Cuadro 1.2: Relación de paquetes con documentación útil
1.1.11.Una cuenta de usuario adicional
Si no quiere utilizar su cuenta de usuario aprende y práctica, puede crear una cuenta de usuario, p. ej. pescado,
para ello haga lo siguiente.
# adduser fish
Conteste a todas las preguntas.
Con ello se creará una nueva cuenta llamada pescado. Cuando termine de practicar, puede borrar esta cuenta y su
directorio de usuario como se muestra.
# deluser --remove-home fish
En sistemas Debian especializados y no Debian, las actividades anteriores deben utilizar niveles inferiores useradd
(8) y userdel (8) utilidades, en su lugar.
1.1.12.Configuración de sudo
Para una estación de trabajo típica de un único usuario o un escritorio Debian en un portátil, es normal realizar
una configuración sencilla de sudo(8) como se indica a continuación para permitir al usuario no privilegiado, p. ej.
pinguino, obtener los privilegios administrativos simplemente con su contraseña de usuario sin utilizar la contraseña
del superusuario.
# echo "penguinALL=(ALL) ALL" >> /etc/sudoers
También es normal hacerlo de la siguiente manera para permitir al usuario no privilegiado, p. ej. pinguino, ganar
los privilegios administrativos sin usar ninguna contraseña como se muestra.
Este truco solamente se debe usar en una estación de trabajo con un único usuario en la que usted sea el administrador y usuario único.
aviso
No establezca de esta manera privilegios para cuentas de usuarios no privilegiados en una estación de
trabajo multiusuario porque es perjudicial para la seguridad del sistema.
atención
La contraseña de la cuenta pinguino, en los ejemplos de arriba, requiere tanta protección como la contraseña del superusuario.
Los privilegios administrativos pertenecen a alguien autorizado a realizar tareas de administración del sistema en la estación de trabajo. Nunca le de a un administrador del departamento de Sistemas de su compañía
ni a su jefe tales privilegios a menos que estén autorizados y sean capaces.
nota
Para proporcionar privilegios de acceso a determinados dispositivos y determinados archivos debería considerar
usar grupos para proporcionar acceso limitado en lugar de utilizar los privilegios de superusuario vía sudo(8).
Con una configuración mejor pensada y cuidadosa, sudo(8) puede proporcionar privilegios administrativos limitados a otros usuarios en un sistema compartido sin compartir la contraseña de superusuario. Esto puede ayudar en
el mantenimiento de un equipo con múltiples administradores de manera que usted pueda saber quién hizo qué.
Por otra parte, puede preferir que nadie más tenga tales privilegios.
1.1.13.Hora de jugar
Ahora está listo para jugar con el sistema Debian sin riesgos siempre que utilice la cuenta de usuario sin privilegios.
Esto se debe a que el sistema Debian está, incluso en una instalación por defecto, configurado con los permisos de
archivos adecuados que impide que los usuarios no privilegiados dañen el sistema. Por supuesto, puede haber aún
algunos agujeros que se pudieran explotar, pero aquellos a quienes interesen esos detalles, que no trataremos aquí,
pueden obtener la información precisa en Manual de seguridad de Debian.
Aprendemos el sistema Debian como un sistema Unix-like con lo siguiente.
Sección1.2 (conceptos básicos),
Sección1.3 (método de supervivencia),
Sección1.4 (método básico),
Sección1.5 (mecanismos del intérprete de órdenes (shell)),
Sección1.6 (método de procesado de texto)
1.2.Sistema de archivos tipo Unix
En GNU/Linux y otros sistemas operativos tipo Unix, los archivos se organizan en directorios. Todos los archivos y
directorios están ordenados en un gran árbol que tiene como raíz «/». Se le llama árbol porque si se dibuja el sistema
de archivos, parece un árbol pero cabeza abajo.
Page 35
Guía de referencia de Debian7 / 267
Estos archivos y directorios pueden distribuirse entre varios dispositivos. mount(8) se utiliza para añadir el sistema
de archivos que se encuentra en un dispositivo al gran árbol de archivos. Inversamente, umount(8) lo desconecta
del gran árbol de archivos. En los núcleos más recientes de Linux, mount(8), con determinadas opciones, puede
unir parte de un sistema de ficheros en otro sitio del árbol o puede montar un sistema de archivos como compartido, privado, esclavo o no enlazable. Las opciones soportadas para cada sistema de ficheros están disponibles en
«/usr/share/doc/linux-doc-*/Documentation/filesystems/».
Los directorios de los sistemas Unix se llaman carpetas en otros sistemas. Por favor, note que no existe el concepto
de unidad como «A:» en ningún sistema Unix. Solamente hay un sistema de archivos y todo se encuentra en él.
Esto es una gran ventaja en comparación con Windows.
1.2.1.Información básica sobre archivos en Unix
Estos son algunos conceptos básicos de los archivos Unix.
Los nombres de archivos son sensibles a mayúsculas. Es decir, «MIARCHIVO» y «MiArchivo» son archivos
diferentes.
El directorio raíz significa la raíz del sistema de archivos representado simplemente por «/». No lo confunda con
el directorio del superusuario: «/root».
Cada directorio tiene un nombre que puede contener cualquier letra o símbolo excepto «/». El directorio raíz es
una excepción: su nombre es «/» (pronunciado «barra« o «el directorio raíz«) y no se puede renombrar.
Cada archivo o directorio se identifi con un nombre completamente cualificado, nombre absoluto, o ruta),
dando la secuencia de directorios que deben atravesarse para alcanzarlo. Los tres términos son sinónimos.
Todos los nombres completamente cualificados comienzan con el directorio «/», y se coloca una «/» entre cada dos nombres de directorio o archivo en el nombre de fichero completo. La primera «/» es el directorio de más
alto nivel (la raíz) y las demás «/» separan subdirectorios sucesivos hasta que alcanzamos la última entrada, que
es el nombre real del archivo en cuestión. Las palabras pueden ser confusas. Elijamos el siguiente nombre com-pletamente cualificado como un ejemplo: «/usr/share/keytables/es.map.gz». Es de uso generalizado el
referirse a la última entrada «es.map.gz» como un nombre de archivo.
El directorio raíz tiene un cierto número de ramificaciones, como «/etc/» y «/usr/». Estos subdirectorios a su vez
se ramifican en más subdirectorios, como «/etc/systemd/» y «/usr/local/». El todo, visto colectivamente,
se llama árbol de directorios. Puede pensar que un nombre de archivo absoluto es una ruta desde la raíz del
árbol («/») hasta la hoja de una rama (un archivo). También oirá hablar del árbol de directorios como de un árbol
genealógico que descienden de un elemento único llamado raíz («/»: así, los subdirectorios tienen padres y una
ruta muestra la genealogía completa de un archivo. Hay, además, rutas relativas que comienzan de alguna otra
manera que con el directorio raíz. Debe recordar que el directorio «../» hace referencia al directorio padre. Esta
terminología se utiliza también para otras estructuras semejantes a los directorios, como las estructuras jerárquicas
de datos.
No existen directorios, que forman parte de las rutas que describen archivos, que se correspondan con dispositivos
físicos, como discos duros. Esto cambia respecto a RT-11, CP/M, OpenVMS, MS-DOS, AmigaOS y Microsoft
Windows, donde la ruta contiene el nombre del dispositivo, como «C:\». Sin embargo, existen directorios que
referencian dispositivos físicos como parte del sistema de archivos. Ver Sección1.2.2)
nota
Es posible usar casi cualquier letra o símbolo en el nombre de un archivo, pero es una mala idea. Es preferible
evitar el uso de cualquier carácter que tenga un significado especial en la línea de órdenes, incluido espacios, tabulaciones, saltos de línea y otros caracteres especiales: { } ( ) [ ] ' " \ / > < | ; ! # & ^ * %@ $. Si quiere separar palabras en un nombre, son buenas elecciones el punto, el guión y el guión bajo. Además
puede empezar cada palabra con mayúscula, «ComoEsto». Los usuarios con experiencia suelen evitar los espacios en los nombres de archivo.
Page 36
Guía de referencia de Debian8 / 267
nota
La palabra «root» puede referirse a «superusuario» o «directorio raíz». El contexto determinará su significado
correcto.
nota
El término path se utiliza tanto para los nombres de archivos que especifican la ruta completa, como hemos
hecho con anterioridad, como en la ruta para la búsqueda de órdenes. El significado correcto vendrá determinado
por el contexto.
Las mejores prácticas detalladas para la jerarquía de ficheros se describen en el Filesystem Hierarchy Standard
(”/usr/share/doc/debian-policy/fhs/fhs-2.3.txt.gz” y hier(7)). Como comienzo debes recordar los
siguientes hechos.
directoriouso del directorio
/directorio raíz
/etc/archivos principales para la configuración del sistema
/var/log/archivos de registro del sistema
/home/todos los directorios personales de usuario sin privilegios
Cuadro 1.3: Relación de directorios clave y su uso
1.2.2.Sistemas de archivos internos
Siguiendo la tradición de Unix, el sistema Debian GNU/Linux ofrece el sistemas de archivos «/dev/» que representa
de manera unificada el almacenamiento físico en discos duros u otros dispositivos de almacenamiento y la interacción
con los dispositivos hardware como las consolas en modo texto o las consolas en serie remotas.
Cada archivo, directorio, tubería con nombre (sirve para compartir datos entre dos programas) o dispositivo físico tiene
en el sistema Debian GNU/Linux una estructura con metainformación llamada inodo que describe sus propiedades
como quién es su dueño (owner), el grupo al que pertenece, la fecha de último acceso, etc. La idea de incluir todo en
el sistema de archivos fue una innovación de Unix y las versiones modernas de los núcleos de Linux la han llevado
más allá. Hoy en día puede encontrar en el sistema de archivos incluso información de procesos en ejecución.
La representación unificada y abstracta tanto de entidades físicas como de procesos internos es sumamente útil ya
que permite el uso de la misma orden para el mismo tipo de operación en dispositivos totalmente diferentes. Incluso
es posible cambiar la forma de trabajar del núcleo escribiendo datos en archivos especiales que están enlazándolos
a procesos en ejecución.
sugerencia
Si necesita determinar la correspondencia entre un árbol de archivos y un elemento físico, ejecute mount(8) sin
parámetros.
1.2.3.Permisos del sistema de archivos
Permisos del sistema de archivos de Unix-like se definen para tres categorías de usuarios afectados.
El usuario que es dueño del archivo (u)
Los usuarios que pertenecen al mismo grupo al que pertenece el archivo (h)
Todos los usuarios de other (o) también se refieren a ”mundo” y ”todo el mundo”
Page 37
Guía de referencia de Debian9 / 267
Para el fichero, cada permiso correspondiente permite las siguientes acciones.
El permiso de lectura (r) permite al dueño examinar el contenido del archivo.
El permiso de escritura (w) permite al dueño modificar el archivo.
el permiso de ejecución (x) permite al dueño ejecutar el archivo como una orden.
Para el directorio, cada permiso correspondiente permite las siguientes acciones.
El permiso de lectura (r) permite al propietario listar el contenido del directorio.
El permiso de escritura (w) permite al propietario añadir o eliminar archivos en el directorio.
el permiso de ejecución (x) permite al dueño acceder a los archivos del directorio.
El permiso de ejecución de un directorio no solo indican que se puede leer los archivos que contiene, sí no también
permite ver sus atributos, como el tamaño y la fecha de modificación.
ls(1) se utiliza para mostrar información de permisos (y más) para archivos y directorios. Cuando se invoca con la
opción ”-l”, muestra la siguiente información en el orden indicado.
tipo de fichero (primer carácter),
permisos del archivo (nueve caracteres, tres para el usuario, tres para el grupo y los tres últimos para el resto, en
este orden),
número de enlaces duros al archivo,
nombre del usuario que es dueño del archivo,
nombre del grupo al que pertenece,
tamaño del archivo expresado en caracteres (bytes),
fecha y hora del archivo (mtime),
nombre del archivo
caráctersignificado
-archivo normal
ddirectorio
lenlace simbólico
cnodo de dispositivo orientado a caracteres
bnodo de dispositivo orientado a bloques
ptubería con nombre
ssocket
Cuadro 1.4: La interpretación del primer carácter de cada línea de la salida de «ls -l» se interpreta como se muestra
Para cambiar el dueño de un archivo, el superusuario utiliza la orden chown(1). Para alterar el grupo de un archivo,
su dueño utiliza la orden chgrp(1). Para modificar los permisos del acceso al archivo o directorio, su dueño o el
superusuario utilizan la orden chmod(1). La sintaxis para operar sobre un archivo foo es la que se muestra.
Existen tres bits adicionales de permisos especiales.
El bit set user ID (s o S en lugar del permiso del dueño x)
El bit set group ID (s o S en lugar del permiso del grupo x)
El bit sticky (t o T en vez del permiso de todos x)
Aquí, la salida de ” ls -l ” para estos bits está en mayúscula si los bits de ejecución ocultos por estas salidas
están sin configurar
La configuración de set user ID en un archivo ejecutable permite a un usuario ejecutarlo con todos los privilegios
de su dueño (al ejecutarlo con el identificador del dueño, por ejemplo root). Igualmente la configuración set groupID en un archivo ejecutable permite al usuario ejecutarlo con todos los privilegios de su grupo (al ejecutarlo con
el identificador del grupo, por ejemplo root). Esto crea riesgos de seguridad, por lo que su configuración debe ser
extremadamente cuidadosa.
La configuración del bit set group ID en un directorio permite la creación de archivosal estilo BSD, donde todos los
archivos creados en el directorio pertenecen al mismo grupo que el directorio.
Activar el sticky bit en un directorio impide que sus archivos sean eliminados por alguien que no es su dueño. En los
directorios con permisos de escritura para todos, como «/tmp», o para su grupo, con el fin de asegurar la integridad
de los archivos, se debe eliminar los permisos de escritura de los archivos. Además se debe configurar el sticky bit
en el directorio para evitar que cualquier usuario con permiso de escritura en él pueda borrar un archivo y después
crear otro con el mismo nombre.
Aquí están algunos ejemplos interesantes.
$ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/exim4
crw------T 1 root root108, 0 Oct 16 20:57 /dev/ppp
-rw-r--r-- 1 root root2761 Aug 30 10:38 /etc/passwd
-rw-r----- 1 root shadow1695 Aug 30 10:38 /etc/shadow
La orden chmod(1) tiene otra forma de describir los permisos mediante números. Este modo numérico utiliza 3 o 4
dígitos en base octal (base 8).
dígitosignificado
1º dígito (opcional)suma de set user ID (=4), set group ID (=2) y sticky bit (=1)
2º dígitosuma de los permisos de lectura (=4), escritura (=2) y ejecución (=1) para usuario
3º dígitoidem para el grupo
4º dígitoidem para todos
Cuadro 1.5: El modo numérico en chmod(1) es como se muestra
Parece más complicado de lo que realmente es. Si se fija en las primeras columnas (de la 2 a la 10) de la salida de la
orden «ls -l» y lee en binario (base 2) la representación de los permisos del archivo («-» siendo «0» y cualquiera
de «rwx» un «1»), la conversión a octal (base 8) representarían los permisos del archivo.
Por ejemplo, intente lo siguiente
Page 39
Guía de referencia de Debian11 / 267
$ touch foo bar
$ chmod u=rw,go=r foo
$ chmod 644 bar
$ ls -l foo bar
-rw-r--r-- 1 penguin penguin 0 Oct 16 21:39 bar
-rw-r--r-- 1 penguin penguin 0 Oct 16 21:35 foo
sugerencia
Si necesita acceder a información de salida de la orden «ls -l» en un archivo de órdenes, es mejor utilizar las
órdenes como test(1), stat(1) y readlink(1). La funcionalidad interna del intérprete de órdenes como«[» o
«test» también puede ser utilizada.
1.2.4.Gestión de permisos para nuevos archivos: umask
Los permisos que se asignan por defecto a los nuevos archivos y directorios cuando estos se crean están definidos
por la orden interna del intérprete de órdenes umask. Consulte dash(1), bash(1) y builtins(7).
0022-rw-r--r---rwxr-xr-xmodificable solo por el usuario
0002-rw-rw-r---rwxrwxr-xmodificable por el grupo
Cuadro 1.6: Ejemplos de valores de umask
El sistema Debian utiliza por defecto un esquema de grupos privados de usuarios (UPG). Un grupo privado de usuario
se crea cuando sea añade un nuevo usuario al sistema. El UPG tiene el mismo nombre que el usuario para el cual
fue creado y ese usuario es el único miembro de ese grupo. En el esquema UPG es seguro asignar a la máscara
(umask) el valor 0002 ya que cada usuario tiene un grupo privado propio. (En algunas variantes de Unix, es común
que todos los usuarios no privilegiados pertenezcan al mismo grupo users siendo buena idea asignar el valor 0022
a la máscara por motivos de seguridad.)
sugerencia
Active UPG añadiendo «umask 002» en el archivo ~/.bashrc.
1.2.5.Permisos para grupos de usuarios (grupo)
aviso
Por favor, asegúrese de guardar los cambios no guardados antes de realizar reinicios o acciones similares.
Puedes añadir un usuario penguin a un grupo bird en dos pasos:
Cambie la configuración del grupo utilizando una de las siguientes opciones:
• Ejecute ”sudo vigr” para /etc/group y ”sudo vigr -s” para /etc/gshadow para eliminar penguin en
la línea para bird.
Aplique la configuración utilizando una de las siguientes opciones:
• Reinicio e inicio de sesión. (Mejor opción)
• Ejecute ”kill -TERM -1” y realice algunas acciones de reparación como ”systemctl restart NetworkManager.service”.
• El cierre de sesión a través del menú GUI no es una opción para Gnome Desktop.
Cualquier intento de reinicio en caliente es un frágil sustituto del verdadero reinicio en frío en el sistema de escritorio
moderno.
nota
Otra manera dinámica consiste en añadir usuarios a grupos durante el proceso de acreditación añadiendo la línea «auth optional pam_group.so» al archivo «/etc/pam.d/common-auth» y configurar
«/etc/security/group.conf». (Consulte Capítulo4.)
En el sistema Debian los dispositivos hardware son también archivos. Si tiene problemas para que un usuario acceda
a dispositivos como el CD-ROM o dispositivos de memoria USB, podría solucionarse añadiendo el usuario al grupo
pertinente.
Algunos grupos importantes del propio sistema permiten a sus miembros acceder a archivos y directorios específicos
sin privilegios de superusuario.
grupodescripción de archivos y dispositivos accesibles
dialoutacceso directo y completo a los puertos serie («/dev/ttyS[0-3]»)
dip
acceso limitado a los puertos series para establecer conexiones a internet por vía
telefónica (dialup IP) a pares confiables
cdromdispositivos CD-ROM, DVD+/-RW
audiodispositivo audio
vídeodispositivo de vídeo
escánerescáner
admregistros de supervisión del sistema
staff
algunos directorios para la administración básica del sistema: «/usr/local»,
«/home»
Cuadro 1.7: Relación de grupos importantes del sistema para el acceso a archivos
Page 41
Guía de referencia de Debian13 / 267
sugerencia
Necesita pertenecer al grupo dialout para reconfigurar el modem, marcar, etc. Pero si el superusuario crea
archivos de configuraciones predefinidas para algunos pares en «/etc/ppp/peers/», únicamente necesitará
pertenecer al grupo dip para crear conexiones a internet porvía telefónica a estos pares usando las órdenes
pppd(8), pon(1) y poff(1).
Algunos grupos importantes proporcionados por el sistema permiten a sus miembros ejecutar determinadas órdenes
sin privilegios de superusuario.
grupoórdenes permitidas
sudoejecuta sudo sin su contraseña
lpadminejecuta órdenes para añadir, modificar y eliminar las impresoras disponibles
Cuadro 1.8: Relación de grupos importantes del sistema para la ejecución de órdenes específicas
Puede consultar una relación completa de los usuarios y grupos del sistema en el documento «Users and Groups«
/usr/share/doc/base-passwd/users-and-groups.html del paquete base-passwd.
Consulte las órdenes para la gestión de usuarios y grupos: passwd(5), group(5), shadow(5), newgrp(1), vipw(8),
vigr(8) y pam_group(8).
1.2.6.Marcas de tiempo
Existen tres tipos de marcas o sellos de tiempo para un archivo GNU/Linux.
tiposignificado (definición histórica en Unix)
mtimeel momento de modificación (ls -l)
ctimeel momento de cambio de estado (ls -lc)
atimeel momento del último acceso (ls -lu)
Cuadro 1.9: Relación de tipos de marcas de tiempo
nota
ctime no es el momento de creación del archivo.
nota
El significado actual de atime en sistemas GNU/Linux puede no ser diferente del de Unix clásico.
Al sobrescribir un archivo se cambian todos los atributos mtime, ctime y atime del archivo.
Cambiar la propiedad o el permiso de un archivo modifica los atributos ctime y atime del archivo.
la lectura de un archivo en un sistema Unix clásico modifica su propiedad atime.
La lectura de un archivo cambia el atributo atime del archivo en el sistema GNU/Linux si su sistema de archivos
está montado con ” strictatime ”.
La lectura de un archivo por primera vez o después de un día cambia la propiedad atime en un sistema GNU/Linux
si el sistema de archivos está montado con la opción «relatime». (comportamiento por defecto desde Linux
2.6.30)
Page 42
Guía de referencia de Debian14 / 267
La lectura del archivo no cambia su propiedad atime en un sistema GNU/Linux si el sistema de archivos está
montado con la opción «noatime».
nota
Las opciones de montaje «noatime» y «relatime» se diseñaron para mejorar el desempeño de lectura del
sistema de archivos de forma normal. La simple lectura de un archivo con la opción «strictatime» genera una
operación de escritura para actualizar la propiedad atime. El atributo atime se usa poco excepto para el archivo
mbox(5). Consulte mount(8).
Utilice la orden touch(1) para cambiar las marcas de tiempo de los archivos existentes.
Para la fecha, el comando ls genera cadenas localizadas en una configuración regional que no es inglesa (”fr_FR.UTF-8”).
Ver Sección9.3.4 para personalizar la salida de «ls -l».
1.2.7.Enlaces
Existen dos métodos para asociar a un archivo ”foo” con otro nombre de archivo ”bar”.
enlace duro,
• Nombre duplicado de un fichero ya existente
• «ln foo bar»
enlace simbólico o «simlink»
• Fichero especial que apunta a otro fichero por su nombre
• «ln -s foo bar».
Con el siguiente ejemplo se muestra los cambios en el contador de enlaces y las sutiles diferencias de la orden rm.
$ umask 002
$ echo "Original Content" > foo
$ ls -li foo
1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 foo
$ ln foo bar# hard link
$ ln -s foo baz# symlink
$ ls -li foo bar baz
1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 bar
1450180 lrwxrwxrwx 1 penguin penguin3 Oct 16 21:47 baz -> foo
1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 foo
$ rm foo
$ echo "New Content" > foo
$ ls -li foo bar baz
1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 bar
1450180 lrwxrwxrwx 1 penguin penguin3 Oct 16 21:47 baz -> foo
1450183 -rw-rw-r-- 1 penguin penguin 12 Oct 16 21:48 foo
Page 43
Guía de referencia de Debian15 / 267
$ cat bar
Original Content
$ cat baz
New Content
Los enlaces duros deben ser construidos en el mismo sistema de archivos y comparten el mismo «inodo» como
revela el parámetro «-i» de la orden ls(1) .
Los enlaces simbólicos siempre tienen permisos de acceso al archivo nominales «rwxrwxrwx», como se mostró en
el ejemplo anterior, con los permisos reales que tenga el archivo al que referencia.
atención
En general es preferible no crear nunca enlaces simbólicos o enlaces duros excepto que tenga poderosas
razones. Los enlaces simbólicos puede causar problemas graves al crear bucles en el sistema de archivos.
nota
En general es preferible crear enlaces simbólicos a enlaces duros, al menos que tenga alguna buena razón para
ello.
El directorio . enlaza al propio directorio en el que aparece, por lo que la cuenta de enlaces de cualquier nuevo directorio es 2. El directorio «..» enlaza al directorio padre, por lo que la cuenta de enlaces del directorio se incrementa
con la creación de nuevos subdirectorios.
Si proviene de Windows, pronto comprenderá lo bien diseñado que están los enlaces de Unix, comparados con su
equivalente en Windows que son los accesos directos (shortcuts). Gracias su implementación en el sistema de archivos, las aplicaciones no distinguen entre el archivo original y su enlace. En el caso de los enlaces duros, ciertamente
no existe diferencia.
1.2.8.Tuberías con nombre (FIFOs)
Una tubería con nombre es un archivo que se comporta como una tubería. Usted introduce algo dentro del archivo
y sale por el otro lado. Por esa razón se dice que es FIFO o primero-en-entrar-primero-en-salir: lo primero que se
introduce en la tubería es lo primero en salir por el otro lado.
Si se escribe en una tubería con nombre, los procesos que han escrito en la tubería no pueden terminar hasta que
la información que han escrito es leída de la tubería. Si se lee de una tubería con nombre, el proceso lector espera
hasta que no hay nada que leer antes de terminar. El tamaño de la tubería es siempre cero --- no almacena datos,
la tubería solo comunica los dos procesos de igual manera que lo hace el intérprete de órdenes mediante la sintaxis
«|». Sin embargo, desde que la tubería tiene un nombre, los dos procesos no tienen que estar en la misma línea
de órdenes y ni siquiera ser ejecutados por el mismo usuario. Las tuberías fueron una innovación muy relevante de
Unix.
Por ejemplo, intente lo siguiente
$ cd; mkfifo mypipe
$ echo "hello" >mypipe & # put into background
[1] 8022
$ ls -l mypipe
prw-rw-r-- 1 penguin penguin 0 Oct 16 21:49 mypipe
$ cat mypipe
hello
[1]+Doneecho "hello" >mypipe
$ ls mypipe
mypipe
$ rm mypipe
Page 44
Guía de referencia de Debian16 / 267
1.2.9.«Sockets»
Los «sockets» se usan de forma generalizada en las comunicaciones en Internet, bases de datos y sistemas operativos. Son similares a las tuberías con nombre (FIFO) y permiten que los procesos intercambien información entre
diferentes equipos. Para los «sockets» los procesos no necesitan estar ejecutandose al mismo tiempo, ni ser hijos
del mismo proceso padre. Este es el mejor sistema para la comuniación entre procesos (IPC). El intercambio de información puede ocurrir en la red entre equipos. Los dos tipos de «sockets» más comunes son los «sockets« Internet
y los «sockets» de dominio Unix.
sugerencia
«netstat -an» ofrece una visión muy útil de los «sockets» abiertos en el sistema.
1.2.10.Archivos de dispositivos
Los archivos de dispositivos se refieren a dispositivos físicos o virtuales del sistema, como el disco duro, la tarjeta de
vídeo, la pantalla o el teclado. Un ejemplo de dispositivo virtual es la consola, representado por «/dev/console».
Hay dos tipos de archivos de dispositivo.
dispositivos orientados a carácter,
• se accede a un carácter cada vez,
• 1 carácter = 1 byte,
• p. ej. teclado, puerto serie, …
dispositivo orientado a bloque.
• se accede a unidades grandes llamadas bloques,
• 1 bloque > 1 byte,
• p. ej. un disco duro, …
Los archivos de dispositivos se pueden leer y escribir, aunque el fichero pueda contener datos binarios los cuales
son un galimatias incomprensibles para los humanos. Algunas veces escribir datos directamente en esos ficheros
puede ayudar a resolver problemas de conexión con los dispositivos. Por ejemplo, se puede enviar un archivo de
texto al dispositivo de la impresora«/dev/lp0» o mandar órdenes de modem por el puerto serie «/dev/ttyS0».
Pero, al menos que se haga con cuidado, puede causar un problema mayor. Así que tenga cuidado.
nota
Comúnmente a la impresora se accede utilizando lp(1).
El número de nodo del dispositivo se muestra por la ejecución de ls(1) como se muestra.
$ ls -l /dev/sda /dev/sr0 /dev/ttyS0 /dev/zero
brw-rw---T1 root disk8,0 Oct 16 20:57 /dev/sda
brw-rw---T+ 1 root cdrom11,0 Oct 16 21:53 /dev/sr0
crw-rw---T1 root dialout4, 64 Oct 16 20:57 /dev/ttyS0
crw-rw-rw-1 root root1,5 Oct 16 20:57 /dev/zero
«/dev/sda» tiene como número de dispositivo mayor de 8 y como número de dispositivo menor de 0. Los usuario
pueden realizar operaciones de lectura/escritura haciendo si pertenecen al grupo disk.
«/dev/sr0» tiene como número de dispositivo mayor de 11 y como menor de 0. Los usuarios pueden realizar
operaciones de lectura/escritura si pertenecen al grupo cdrom.
Page 45
Guía de referencia de Debian17 / 267
«/dev/ttyS0» tiene el número de dispositivo mayor de 4 y menor de 64. Los usuarios pueden realizar operaciones de lectura/escritura si pertenecen al grupo dialout.
«/dev/zero» tiene como número mayor de dispositivo 1 y como menor 5. Todos los usuarios pueden realizar
operaciones de lectura/escritura.
En un sistema Linux moderno, el sistema de archivos en «/dev/» se rellena de forma automática mediante udev(7).
1.2.11.Archivos de dispositivos especiales
Existen algunos archivos de dispositivos especiales.
archivo de dispositivoaccióndescripción de respuesta
/dev/nulllecturadevuelve el «carácter de final de archivo (EOF)»
/dev/nullescritura
/dev/zerolectura
/dev/randomlectura
/dev/urandomlectura
/dev/fullescrituradevuelve el error de disco lleno (ENOSPC)
no devuelve nada (un pozo sin fondo al que enviar
datos)
devuelve «el carácter \0 (NUL)» (difiere del número
cero representado en ASCII)
devuelve caracteres aleatorios creados por el
generador de números aleatorios confiable,
ofreciendo entropía real (baja)
devuelve caracteres de forma aleatoria desde el
generador de números pseudo-aleatorios de
seguridad criptográfica
Cuadro 1.10: Relación de archivos de dispositivos especiales
Con frecuencia son utilizados en las redirecciones del intérprete de órdenes (consulte Sección1.5.8).
1.2.12.procfs y sysfs
Los pseudo sistemas de archivos procfs y sysfs, que se montan en «/proc» y «/sys», son estructuras de datos
internas del núcleo que se muestran al espacio de usuario. Expresado de otra forma, estas entradas son virtuales
actúan como una ventana adecuada al funcionamiento del sistema operativo.
El directorio «/proc» contiene (entre otras cosas) un subdirectorio por cada proceso que se está ejecutando en el
sistema operativo, cuyo nombre es el identificador del proceso (PID). Las herramientas del sistema que acceden a
la información de los procesos, como ps(1), obtienen dicha información de la estructura de este directorio.
Los el subárboles de directorios «/proc/sys/» contienen interfaces que permiten cambiar algunos parámetros del
núcleo en tiempo de ejecución. (Se puede realizar las mismas operaciones por medio de la ordensysctl(8) o de su
archivo de configuración «/etc/sysctl.conf».)
La gente normalmente se alarma del gran tamaño de un archivo en particular, «/proc/kcore». Es (más o menos)
una copia del contenido de la memoria del equipo. Es útil para depurar el núcleo y es un archivo virtual que es una
referencia a la memoria del equipo, así es que no hay que preocuparse por su tamaño.
El subdirectorio ”/sys” contiene las estructuras de datos del kernel exportadas, sus atributos y los enlaces entre
ellos. También contiene interfaces para cambiar ciertos parámetros del kernel que se están ejecutándose.
Consulte «proc.txt(.gz)», «sysfs.txt(.gz)» y otros documentos que forman parte de la documentación del
núcleo de Linux («/usr/share/doc/linux-doc-*/Documentation/filesystems/*») incluidos en el paquete linux-doc-*.
Page 46
Guía de referencia de Debian18 / 267
1.2.13.tmpfs
El sistema de archivos temporal tmpfs tiene la función de mantener todos los archivos en la memoria virtual. Los
datos de «tmpfs« de la caché de páginas de la memoria se puede enviar al área de intercambio en disco cuando sea
necesario.
El directorio «/run» se monta como tmpfs al comienzo del proceso de arranque. Así se permite la escritura sobre
él, incluso cuando el directorio «/» está montado en solo lectura. Aquí se guardan los archivos en estado temporal
y sustituye a varios directorios de la Jerarquía Estándar del Sistema de Ficheros versión 2.3:
«/var/run» → «/run»,
«/var/lock» → «/run/lock»,
«/dev/shm» → «/run/shm».
Verel documento del núcleo de Linux «tmpfs.txt(.gz)» («/usr/share/doc/linux-doc-*/Documentation/filesystems/*»)
que está en el paquete linux-doc-*.
1.3.Midnight Commander (MC)
Midnight Commander (MC) es una «navaja multiusos» GNU para la consola de Linux y otros entornos de terminal.
Aporta a los nuevos usuarios una experiencia de consola basada en menús que es más sencilla de aprender que las
órdenes estándar de Unix.
Necesitará instalar el paquete de Midnight Commander llamado «mc como se muestra.
$ sudo apt-get install mc
Usa el comando mc(1) para explorar el sistema Debian. Esta es la mejor forma de aprender. Por favor, explora algunos
lugares interesantes sólo usando las teclas del cursor y la tecla Intro.
”/etc” y sus subdirectorios
«/var/log» y sus subdirectorios
«/usr/share/doc» y sus subdirectorios
«/usr/sbin» y «/usr/bin».
1.3.1.Personalización de MC
Para cambiar el directorio de trabajo de MC después de salir y no tener que ejecutar una orden cd al último directorio,
le sugiero que cambie «~/.bashrc» para incluir el archivo de órdenes que está en el paquete mc.
. /usr/lib/mc/mc.sh
Consulte mc(1) (en la opción «-P») para comprobar por qué. (Si no comprende exactamente lo que estoy diciendo
puede hacerlo más tarde.)
Page 47
Guía de referencia de Debian19 / 267
1.3.2.Comenzando con MC
Para ejecutar MC escribe lo siguiente.
$ mc
MC permite ejecutar todas las operaciones sobre archivos a través de sus menús, con el mínimo esfuerzo para el
usuario. Para acceder a la pantalla de ayuda presione F1. Puede probar MC con solo pulsar las teclas de los cursores
y las teclas de función.
nota
En algunas consolas como gnome-terminal(1), la pulsación de las teclas de función las recibe la consola. Esta
funcionalidad se desactiva en «Editar» → «Atajos de teclado» para gnome-terminal.
Si encuentra problemas de codificación de los caracteres y parecen no tener sentido, añadir «-a» como parámetro
a la orden MC ayudará a evitar problemas.
Si esto no soluciona el problema consulte Sección9.5.6.
1.3.3.Gestor de archivos de MC
Por defecto hay dos paneles con dos directorios y su contenido. Otro modo útil es asignar el panel derecho para que
muestre los permisos de los archivos, etc. A continuación mostraremos algunas claves. Con el demonio gpm(8) ejecutándose, se puede usar el ratón en la consola de caracteres de Linux. (Asegúrese de pulsar la tecla de mayúsculas
para obtener el comportamiento normal cuando corte y pegue en MC.)
teclafunción
F1menú de ayuda
F3visión del contenido del archivo
F4editor interno
F9activa el menú superior
F10salida de Midnight Commander
Tabmoverse entre los paneles
Insertar o Ctrl-Tmarcar el fichero para seleccionar varios para otra operación como copiar
Delborrar el archivo (tenga cuidado---active el modo seguro de borrado en MC)
Cursoresse explican por si mismas
Cuadro 1.11: Funciones de las teclas en MC
1.3.4.Trucos de la línea de órdenes en MC
La orden cd cambia el directorio en el panel seleccionado
Ctrl-Intro o Alt-Intro copia el nombre del archivo a la orden en la línea de órdenes Se utiliza en combinacióncon las órdenes cp(1) y mv(1) para añadir parámetros a las órdenes.
Alt-Tab muestra los posibles archivos elegibles por expansión del nombre en el intérprete de órdenes.
Se puede especificar los directorios de inicio de ambos paneles como parámetros a MC; por ejemplo, «mc /etc/root».
Esc + tecla numérica n → tecla de función n (p. ej., Esc + 1 → F1, etc.; Esc + 0 → F10).
Pulsando Esc antes que la tecla tiene el mismo efecto que presionar Alt y otra tecla a la vez.; p. ej. pulse Esc+c
para obtener Alt-C. Esc la llaman la meta-tecla y algunas veces se representa como «M-».
Page 48
Guía de referencia de Debian20 / 267
1.3.5.El editor interno de MC
El editor interno tiene un esquema de corta-y-pega interesante. Al pulsarF3 comienza la selección, una segunda
pulsación de F3 finaliza la selección y resalta lo seleccionado. Entonces puede mover el cursor. Si presiona F6 el
área seleccionada se moverá a la posición del cursor. Si presiona F5 el área seleccionada se copia e inserta en la
posición del cursor. F2 guarda el archivo. F10 permite salir. La mayor parte de las teclas cursor funcionan de forma
intuitiva.
Este editor puede iniciarse directamente en un fichero utilizando uno de los siguientes comandos.
$ mc -e filename_to_edit
$ mcedit filename_to_edit
El editor posee una sola ventana, pero se pueden usar varias consolas de Linux para obtener el mismo comportamiento. Para copiar entre ventanas, use las teclas Alt-Fn para cambiar entre consolas virtuales y utilice «Archivo→Insertar
archivo» o «Archivo→Copiar a un archivo» para mover una parte de un archivo a otro.
El editor interno se puede reemplazar por cualquier otro editor de su elección.
De hecho, muchos programas usan la variable de entorno «$EDITOR» o «$VISUAL» para determinar el editor a
utilizar. Si al principio no está cómodo con vim(1) o nano(1), puede cambiar su valor a «mcedit» añadiendo la
siguientes líneas a «~/.bashrc».
export EDITOR=mcedit
export VISUAL=mcedit
Si le parece, mi recomendación es asignarles el valor «vim».
Si está incómodo con vim(1) puede utilizar mcedit(1) para la mayor parte de las tareas de administración del sistema.
1.3.6.El visor interno de MC
MC posee un visor inteligente. Es una gran herramienta para buscar palabras en los documentos. Siempre lo uso para
archivos del directorio «/usr/share/doc». Es la manera más rápida de navegar a través de la ingente cantidad de
información de Linux. Este visor puede iniciarse de forma separada utilizando una de las órdenes que se muestran.
$ mc -v path/to/filename_to_view
$ mcview path/to/filename_to_view
1.3.7.Selección inteligente del visor en MC
Pulse Intro en un archivo y el programa, de acuerdo a su contenido, abrirá el archivo (consulte Sección9.4.11). Es
una funcionalidad de MC muy útil.
tipo de archivoacción de la tecla Intro
archivo ejecutableejecuta la orden
archivo de página de manualenvía el contenido a la aplicación de visualización
archivo htmlenvía el contenido al navegador web
archivos «*.tar.gz» y «*.deb»muestra su contenido como si fuera un subdirectorio
Cuadro 1.12: Acción de la tecla Intro en MC
Para que opere de forma correcta el visor y las funciones virtuales de archivo, los archivos visibles no deben tener
permisos de ejecución. Puede cambiar su estado con chmod(1) o en el menú de archivo de MC.
Page 49
Guía de referencia de Debian21 / 267
1.3.8.Sistema de archivos virtual de MC
MC puede acceder a archivos en Internet a través de FTP. Vaya al menú pulsando F9, ”Enter” y ”h” para activar el
sistema de archivos Shell. Escriba la URL con el formato «sh://[user@]machine[:options]/[remote-dir]»,
que abre un directorio remoto que aparece como uno local usando ssh.
1.4.Fundamentos de entornos de trabajo tipo Unix
Aunque MC permite realizar casi cualquier cosa, es importante aprender a utilizar la línea de órdenes y el intérprete
de comandos y acostumbrarse a un entorno de trabajo tipo Unix.
1.4.1.El intérprete de órdenes (shell)
Dado que algunos programas de inicialización del sistema pueden usar el shell de inicio de sesión, es prudente
mantenerlo como bash(1) y evitar cambiar el shell de inicio de sesión con chsh(1).
Si desea utilizar un prompt interactivo diferente de shell, hágalo desde la configuración del emulador de la terminal GUI
o iniciélo desde ~/.bashrc, por ejemplo, colocando ”exec /usr/bin/zsh -i -l”o”exec /usr/bin/fish -i
-l”en ella.
Intérprete
paquetepopularidad tamaño
bash
bash-completion
dash
zshV:40, I:732463Sí
tcshV:6, I:201355No
mkshV:6, I:111579SíVersión de el intérprete de órdenes Korn
cshV:1, I:6339No
sashV:0, I:51157Sí
kshV:1, I:1061Sí
rcV:0, I:1178No
poshV:0, I:0190Sí
V:838,
I:999
V:32, I:9331454N/Aterminación programable para la shell bash
V:884,
I:997
7175Sí
191Sí
de
órdenes
POSIX
descripción
Bash: el intérprete de órdenes GNU Bourne
Again SHell (estándar de facto)
Intérprete de órdenes Debian Almquist, bueno
para archivos de órdenes
Intérprete de órdenes Z: un intérprete de órdenes
con muchas mejoras
TENEX C Shell: una versión mejorada de
Berkeley csh
Intérprete de órdenes OpenBSD C, una versión
de Berkeley csh
Intérprete de órdenes Stand-alone con órdenes
internas (no es el estándar «/usr/bin/sh»)
la versión AT&T actual del intérprete de órdenes
Korn
implementación del intérprete de órdenes rc de
AT&T Plan 9
Intérprete de órdenes que cumple con las
directrices estándar (derivado de pdksh)
Cuadro 1.13: Relación de intérpretes de órdenes
sugerencia
Aunque los intérpretes de órdenes tipo POSIX comparten la sintaxis básica, pueden cambiar el comportamiento
de algunos elementos básicos como sus variables o la expansión de nombres de archivos con comodines. Por
favor, compruebe su documentación para obtener más detalles.
Page 50
Guía de referencia de Debian22 / 267
En este capítulo se sobreentiende que el intérprete de órdenes es bash.
1.4.2.Personalización de bash
Puede personalizar bash(1) en el archivo de configuración «~/.bashrc».
Por ejemplo, pruebe con lo que se muestra.
# enable bash-completion
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
# CD upon exiting MC
. /usr/lib/mc/mc.sh
# set CDPATH to a good one
CDPATH=.:/usr/share/doc:~:~/Desktop:~
export CDPATH
PATH="${PATH+$PATH:}/usr/sbin:/sbin"
# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
PATH="~/bin${PATH+:$PATH}"
fi
export PATH
EDITOR=vim
export EDITOR
sugerencia
Puede encontrar más posibilidades de personalización de bash, como Sección9.3.6 en Capítulo9.
sugerencia
El paquete bash-completion permite la finalización programable de bash.
1.4.3.Combinaciones de teclas
En un entorno tipo Unix, hay algunas teclas que tiene un uso especial. Tenga en cuenta que en una consola en
modo texto de Linux, solo las teclas Ctrl y Alt del lado izquierdo funcionan de la forma esperada. He aquí algunas
combinaciones de teclas que conviene recordar.
sugerencia
La funcionalidad del terminal de Ctrl-S puede deshabilitarse con stty(1).
Page 51
Guía de referencia de Debian23 / 267
tecladescripción de la combinación de teclas
Ctrl-Uborra el contenido desde el cursor al inicio de la línea
Ctrl-Hborra el carácter anterior al cursor
Ctrl-Dfin de la entrada (finaliza el intérprete de órdenes en uso)
Ctrl-Cfinaliza el programa en ejecución
Ctrl-Zpara temporalmente el programa que pasa a segundo plano
Ctrl-Spara la salida por pantalla
Ctrl-Qreanuda la salida por pantalla
Ctrl-Alt-Delreinicia/apaga el sistema, ver inittab(5)
tecla izquierda Alt (opcionalmente,
tecla de Windows)
flecha arribaretrocede en el histórico de órdenes bash
Ctrl-Rbúsqueda en el histórico de órdenes de bash
Tab
Ctrl-V Tabintroduce Tab sin completar la orden en bash
Cuadro 1.14: Relación de combinaciones de teclado en bash
meta-tecla para Emacs e interfaces similares de usuario
completa la entrada de la orden con el nombre de archivo en
bash
1.4.4.Operaciones con el ratón
Las operaciones del ratón para el texto en el sistema Debian mezclan 2 estilos con algunos cambios:
Operaciones tradicionales del ratón al estilo de Unix:
• usar 3 botones (clic)
• usar PRIMARIO/A
• usado por aplicaciones X tales como xterm y aplicaciones de linea de comando en la consola Linux
Operación del ratón al estilo GUI (interfaz gráfica de usuario) moderna:
• usar 2 botones (arrastrar + clic)
• usar PRIMARIO y PORTAPAPELES
• usado en aplicaciones modernas GUI tales como gnome-terminal
acciónrespuesta
botón izquierdo y arrastre del ratónseleccionar un rango como selección PRIMARIA
botón izquierdoseleccione el inicio del rango para la selección PRIMARIA
botón derecho (tradicional)seleccione el final del rango para la selección PRIMARIA
botón derecho (moderno)menú dependiente del contexto (cortar/copiar/pegar)
Clic central o Mayús-Insinsertar selección PRIMARIA en el cursor
Ctrl-Xcortar la selección PRIMARIA al PORTAPAPELES
Ctrl-C (Shift-Ctrl-C en terminal)copiar la selección PRIMARIA al PORTAPAPELES
Ctrl-Vpegue el contenido de CLIPBOARD en la ubicación del cursor
Cuadro 1.15: Lista de acciones de teclado relacionadas y operaciones con ratón en Debian
Aquí, la selección PRIMARIA es el rango de texto resaltado. Dentro del programa de terminal, Shift-Ctrl-C se
usa en su lugar para evitar terminar un programa en ejecución.
La rueda central del ratón moderno se considera el botón central del mismo y se puede usar para hacer clic en el
medio. Hacer clic en los botones izquierdo y derecho del ratón al mismo tiempo equivale como clic central en los
ratones de 2 botones.
Para usar un ratón en las consolas de caracteres de Linux, debe tener gpm(8) ejecutándose como daemon.
Page 52
Guía de referencia de Debian24 / 267
1.4.5.El paginador
La orden less(1) es un paginador mejorado (permite navegar por el contenido de los archivos). Lee el archivo
indicado como parámetro en su orden o la entrada estándar. Pulse «h» si necesita ayuda mientras utiliza la orden
less. Es más capaz que more(1) y se puede mejorar ejecutando «eval $(lesspipe)» o «eval $(lessfile)»
en el archivo de órdenes de inicio. Ver «/usr/share/doc/less/LESSOPEN». La opción «-R» permite la salida en
crudo y permite las secuencias de escape ANSI coloreadas. Ver less(1).
sugerencia
En el comando less, escriba ”h” to see the help screen, type ”/” o ”?” to search a string, and type ”-i” para
cambiar la sensibilidad entre mayúsculas y minúsculas.
1.4.6.El editor de texto
Debería ser competente con Vim o Emacs que son habituales en los sistemas tipo Unix.
Pienso que el correcto es Vim, ya que el editor Vi esta siempre disponible en el mundo Linux/Unix. (En realidad,
los programas, bien el original vi o el nuevonvi los puede encontrar en cualquier lugar. Yo elegí Vim en vez de la
versión nueva ya que ofrece ayuda a través de tecla F1 siendo similar y más potente.)
Si elige Emacs o XEmacs como su editor también son buenas opciones, especialmente para la programación. Emacs
tiene una extensa cantidad de características también, incluyendo funciones como lector de noticias, editor de directorios, aplicación de correo, etc. Cuando se usa para programar o editar archivos de órdenes, reconocerá el formato
en el que está trabajando y tratará de ayudarle. Algunos mantienen que el único programa que se necesita en Linux
es Emacs. Aprender Emacs durante diez minutos ahora puede ahorrar muchas horas después. Es recomendable
usar el manual de GNU Emacs para aprender.
Todos estos programas normalmente incluyen un tutorial para que pueda aprender a través de la práctica. Se inicia
en «vim» pulsando la tecla F1. Debería al menos leer las primeras treinta y cinco líneas. Después realizar el curso
de entrenamiento posicionando el cursor en«|tutor|» y pulsando Ctrl-].
nota
Los buenos editores, como Vim y Emacs, gestionan de manera adecuada codificaciones UTF-8 y otras menos
comunes o más exóticas. Es una buena idea usar el entorno X con la configuración regional UTF-8 e instalar
los programas y tipos de letra necesarias para ello. Los editores tienen opciones para asignar una codificación
independientemente de la del entorno X. Por favor, consulte su documentación sobre texto multibyte.
1.4.7.Configuración del editor de texto por defecto
Debian tiene un buen número de editores. Recomendamos instalar el paquete vim, como ya hemos mencionado.
Debian tiene un acceso unificado al editor por defecto del sistema mediante la orden «/usr/bin/editor», y así
otros programas (p. ej. reportbug(1)) puedan llamarlo. Puede cambiarlo como se muestra.
$ sudo update-alternatives --config editor
Mi recomendación es la opción «/usr/bin/vim.basic» mejor que «/usr/bin/vim.tiny» para los usuario
noveles ya que permite realzado de sintaxis.
sugerencia
Muchos programas utilizan las variables de entorno «$EDITOR» o «$VISUAL» para determinar el editor a usar (ver
Sección1.3.5 y Sección9.4.11). Para un sistema Debian coherente asigne este valor a «/usr/bin/editor».
(Históricamente, «$EDITOR» era «ed» y «$VISUAL» era «vi».)
Page 53
Guía de referencia de Debian25 / 267
1.4.8.Usando vim
El reciente vim(1) se inicia en la sana opción ”incompatible” y entra en el modo NORMAL.1
modoentradas con el tecladoacción
NORMALayuda|solomostrar el archivo de ayuda
NORMAL:e filename.ext
NORMAL:w
NORMAL:w filename.extescribir el búfer actual en filename.ext
NORMALqsalir vim
NORMAL:q!forzar salir vim
NORMAL:solamentecierre todas las demás ventanas abiertas
NORMAL
NORMAL
NORMALipulse el modo INSERTAR
NORMALRentrar en el modo REEMPLAZAR
NORMALventrar en el modo VISUAL
NORMALVingrese al modo lineal VISUAL
NORMALCtrl-VIngresar al modo VISUAL en bloque
excepto TERMINAL-JOBTecla ESCentrar al modo NORMAL
NORMAL:termentrar al modo TERMINAL-JOB
TERMINAL-NORMALientrar al modo TERMINAL-JOB
TERMINAL-JOBCtrl-W N (o Ctrl-\ Ctrl-N)entre el modo TERMINAL-NORMAL
TERMINAL-JOBCtrl-W :
¿establecer no
compatible?
: establecer no
compatible
abrir un nuevo búfer para editar
filename.ext
sobrescribir el búfer actual en el archivo
original
comprobar si vim está en el modo
incompatible
establecer vim en el modo
incompatible
entre el modo Ex-en modo
TERMINAL-NORMAL
Cuadro 1.16: Lista de comandos básicos de Vim
Por favor use el programa ”vimtutor” para aprender vim en un curso con tutorial interactivo.
El programa vim cambia su comportamiento al pulsar las teclas basadas en modo. La mayoría de las pulsaciones
de teclas en el búfer se realizan en modo INSERTAR y modo REEMPLAZAR. El movimiento del cursor se realiza
principalmente en modo NORMAL. La selección interactiva se realiza en modo VISUAL. Escribir ”:” en modo NORMAL
cambia su modo a Ex-modo. El modo Ex acepta comandos.
sugerencia
El Vim viene con el paquete Netrw. ¡Netrw admite la lectura de archivos, la escritura de archivos, la exploración
de directorios en una red y la exploración local! Pruebe Netrw con ”vim .” (un punto como argumento) y lea su
manual en ”:help netrw”.
Para la configuración avanzada de vim, ver Sección9.2.
1.4.9.Grabación de las actividades del intérprete de órdenes
La salida del intérprete de órdenes puede colapsar su pantalla y puede perderse para siempre. Es una buena práctica
registrar la actividad del intérprete de órdenes en un archivo para poder revisarlo más tarde. Este registro es esencial
para llevar a buen término cualquier tarea de administración de un sistema.
1Incluso el antiguo vim puede comenzar en el sano modo ”incompatible” al iniciarlo con la opción ”-N”.
Page 54
Guía de referencia de Debian26 / 267
sugerencia
El nuevo Vim (versión> = 8.2) se puede usar para registrar las actividades de shell limpiamente usando el modo
TERMINAL-JOB. Consulte Sección1.4.8.
El método básico de registro del intérprete de órdenes es operar con script(1).
Por ejemplo, intente lo siguiente
$ script
Script started, file is typescript
Ejecute las órdenes que desee después de script.
Pulse Ctrl-D para finalizar script.
$ vim typescript
Consulte Sección9.1.1.
1.4.10.Órdenes básicas de Unix
Aprendamos las órdenes fundamentales de UNIX. Aquí utilizaremos «Unix» en su sentido genérico. Normalmente
cualquier sistema operativo tipo Unix tiene un conjunto de órdenes similares. El sistema Debian no es una excepción.
No se preocupe si en este momento algunas órdenes no funcionan como esperaba. Si se utiliza alias en el intérprete
de órdenes, las salidas de las órdenes correspondientes difieren. Estos ejemplos no pretenden ejecutarse en orden.
Pruebe las siguientes órdenes desde una cuenta de usuario sin privilegios.
nota
Unix tiene una tradición de ocultar los archivos que comienzan con «.». Tradicionalmente contienen información
de configuración y de preferencias de usuario.
Para la orden cd, consulte builtins(7).
El paginador por defecto del sistema Debian es more(1) que es básico y no permite el desplazamiento para atrás.
La instalación del paquete less con la orden «apt-get install less», convertirá a less(1) en el paginador
por defecto y este sí permite el desplazamiento hacia atrás con las teclas de cursor.
En la expresión regular de la orden «ps aux | grep -e «[e]xim4*«», «[» y «]» permite a grep que no
encaje consigo mismo. La expresión regular «4*» significa cero o más repeticiones del carácter «4» y de este
modo permite a grep encajar con «exim» y con «exim4». Aunque el intérprete de órdenes utiliza «*» para el
completado de nombres y las expresiones regulares, sus significados son distintos. Aprenda expresiones regulares
consultando grep(1).
Por favor, para entrenar recorra los directorios y de un vistazo al sistema utilizando las órdenes que acabamos de
introducir. Si tiene dudas sobre cualquier orden de consola, asegúrese de leer la página del manual.
Por ejemplo, intente lo siguiente
$ man man
$ man bash
$ man builtins
$ man grep
$ man ls
El estilo de la páginas de manual puede ser un poco áspero, ya que puede ser bastante conciso, especialmente las
más antiguas y típicas pero una vez que se acostumbre, llegará a apreciar su concisión.
Recuerde que muchas órdenes de la familia Unix, incluidas las que provienen de GNU y BSD muestran un resumen
de la ayuda si las ejecuta en alguna de las siguientes maneras (o sin parámetros en algunos casos).
$ commandname--help
$ commandname -h
Page 55
Guía de referencia de Debian27 / 267
ordendescripción
pwdmuestra el nombre del directorio actual/de trabajo
whowhoamimuestra el nombre del usuario actual
id
muestra la identidad del usuario actual (nombre, uid, gid y
grupos a los que pertenece)
file foomuestra el tipo de archivo de «foo»
type -p nombre_de_la_orden
muestra la ubicación del archivo de la orden
«nombre_de_la_orden»
which nombre_de_la_orden, ,
type nombre_de_la_ordenmuestra información de la orden «nombre_de_la_orden»
apropos palabra_claveencuentra órdenes relacionadas con la «palabra_clave»
man -k palabra_clave, ,
whatis nombre_de_la_orden
man -a nombre_de_la_orden
info nombre_de_la_orden
ls
ls -a
ls -A
ls -la
ls -lai
muestra una descripción de una línea de la orden
«nombre_de_la_orden»
muestra la descripción de la orden «nombre_de_la_orden»
(al estilo Unix)
muestra una descripción detallada de la orden
«nombre_de_la_orden» (al estilo GNU)
relación el contenido del directorio (excluye aquellos archivos o
directorios que comienzan por .)
relación el contenido del directorio (todos los archivos y
directorios)
relación el contendido del directorio (casi todos los archivos y
directorios, a saber, oculta «..» y «.»)
relación todo el contenido del directorio con información
detallada
relación el contenido completo del directorio con el número del
inodo e información detallada
ls -drelación los directorios que cuelgan del directorio actual
treemuestra el contenido de los directorios en formato de árbol
lsof foorelación de los procesos que tienen abierto el archivo «foo»
lsof -p pid
relación de los archivos abiertos por el proceso con el
identificador: «pid»
mkdir foocrear un nuevo directorio «foo» en el directorio actual
rmdir fooborra el directorio «foo» del directorio actual
cd foo
cambia al directorio «foo» que se encuentre en el directorio
actual o en los directorios incluidos en la variable «$CDPATH»
cd /cambia al directorio raíz
cdcambia al directorio principal del usuario actual
cd /foocambia al directorio con ruta absoluta «foo»
cd ..cambia al directorio padre
cd ~foocambia al directorio principal del usuario «foo»
cd -cambia al directorio anterior
</etc/motd pager
muestra el contenido de «/etc/motd» usando el paginador por
defecto
touch junkfilecrea un archivo vacío «junkfile»
cp foo barcopia el archivo existente «foo» en un archivo nuevo «bar»
rm junkfileborra el archivo «junkfile»
mv foo bar
mv foo bar
renombra el archivo existente «foo» con un nuevo nombre
«bar» («bar» no debe existir con anterioridad)
mueve el archivo existente «foo» a una nueva ubicación
«bar/foo» (el directorio «bar» debe existir previamente)
mueve un archivo existente «foo» a una nueva ubicación con el
mv foo bar/baz
nombre nuevo «bar/baz» (el directorio «bar» debe existir con
anterioridad pero el archivo «bar/baz» no)
chmod 600 foo
el archivo existente «foo» únicamente tiene permisos de lectura
y escritura para el dueño (y no se permite la ejecución por nadie)
hace que un archivo existente «foo» lo pueda leer cualquiera,
chmod 644 foo
que únicamente el dueño pueda escribir sobre él (y nadie puede
ejecutarlo)
chmod 755 foo
find . -name expresión_regular
hace que un archivo «foo» pueda ser leído por cualquiera y
modificado solo por el dueño (cualquiera puede ejecutarlo)
encuentra archivos que cumplen la «expresión_regular»
Page 56
Guía de referencia de Debian28 / 267
1.5.Órdenes simples para el intérprete de órdenes
Ahora ya tiene una idea de como utilizar un sistema Debian. Vamos a ver en profundidad el mecanismo de la ejecución
de órdenes en el sistema Debian. En este tema haremos una simplificación de la realidad para las personas con poca
experiencia. Para una explicación más completa consultar bash(1).
Un comando simple es una secuencia de componentes.
5. operadores de control (optional: && , || , nueva_línea , ; , & , ( , ) ).
1.5.1.Ejecución de órdenes y variables de entorno
El comportamiento de algunas órdenes Unix cambia dependiendo del valor de algunas variables de entorno.
Los valores predeterminados de las variables de entorno los estable inicialmente el sistema PAM y luego algunos de
ellos se pueden restablecer por algunos programas de la aplicación.
El sistema PAM como pam_env puede establecer variables de entorno mediante /etc/pam.conf”, ”/etc/environment”
y ”/etc/default/locale”.
Los gestores de inicio de sesión como gdm3 pueden restablecer las variables de entorno para la sesión de GUI
por ”~/.profile”.
La inicialización del programa específico del usuario puede reajustar variables del entorno por ”~/.profile”,
”~/.bash_profile”y”~/.bashrc”.
1.5.2.La variable «$LANG»
La configuración regional predeterminada se define en la variable de entorno ”$LANG” y se configura como ”LANG=xx_YY.UTF-8”
por el instalador o por la configuración posterior de la GUI, por ejemplo, ”Configuración” → ”Región e idioma” → ”Idioma” / ”Formatos” para GNOME.
nota
Recomiendo que se configure el entorno del sistema sólo con la variable ”$LANG” por ahora y mantenerse alejado
de las variables ”$LC_*” a menos que sea absolutamente necesario.
La variable de la configuración regional «$LANG» tiene tres partes: «xx_YY.ZZZZ».
valor de configuración regionalsignificado
xx
YYcódigo del país de la ISO 3166 (en mayúsculas) como «US»
ZZZZcodificación de caracteres, siempre «UTF-8»
Cuadro 1.18: Tres partes del valor de la configuración regional
La forma más común de ejecutar la orden en un intérprete de órdenes es como se muestra.
códigos de la lengua según la ISO 639 (en minúsculas) como
«en»
Page 57
Guía de referencia de Debian29 / 267
recomendación de la configuración
regional
lengua (territorio)
en_US.UTF-8Inglés (USA)
en_GB.UTF-8Inglés (Gran Bretaña)
fr_FR.UTF-8Francés (Francia)
de_DE.UTF-8Alemán (Alemania)
it_IT.UTF-8Italiano (Italia)
es_ES.UTF-8Español (España)
ca_ES.UTF-8Catalán (España)
sv_SE.UTF-8Sueco (Suecia)
pt_BR.UTF-8Portugués (Brasil)
ru_RU.UTF-8Ruso (Rusia)
zh_CN.UTF-8Chino (República Popular de China)
zh_TW.UTF-8Chino (República de China (Taiwan))
ja_JP.UTF-8Japonés (Japón)
ko_KR.UTF-8Coreano (República de Corea)
vi_VN.UTF-8Vietnamita (Vietnam)
Cuadro 1.19: Relación de recomendaciones para la configuración regional
$ echo $LANG
en_US.UTF-8
$ date -u
Wed 19 May 2021 03:18:43 PM UTC
$ LANG=fr_FR.UTF-8 date -u
mer. 19 mai 2021 15:19:02 UTC
Aquí, el programa date(1) se ejecuta con valores locales diferentes.
En la primera orden «$LANG» tiene el valor por defecto de la configuración regional «en_US.UTF-8».
En la segunda orden «$LANG» asigna la configuración regional a francés UTF-8 con el valor «fr_FR.UTF-8».
La mayor parte de las órdenes ejecutadas no van precedidas de la definición de variables de entorno. Otra forma
alternativa del ejemplo anterior es la que se muestra.
$ LANG=fr_FR.UTF-8
$ date -u
mer. 19 mai 2021 15:19:24 UTC
sugerencia
Cuando envíe un informe de error, es una buena idea ejecutar y comprobar el comando bajo la configuración
regional ”en_US.UTF-8” si utiliza un entorno distinto al inglés.
Consultar Sección8.1 para obtener más detalles de la configuración regional.
1.5.3.La variable «$PATH»
Cuando escribe una orden en el intérprete de órdenes, este busca la orden en la relación de directorios contenidos
en la variable de entorno «$PATH». El valor de la variable de entorno «$PATH» también se le conoce como la ruta
de búsqueda del intérprete de órdenes.
Page 58
Guía de referencia de Debian30 / 267
En la instalación por defecto de Debian, la variable de entorno «$PATH» de las cuentas de usuario puede no incluir
«/usr/sbin» y «/usr/sbin». Por ejemplo, la orden ifconfig necesita ser ejecutada con la ruta completa con
«/usr/sbin/ifconfig». (Órdenes parecidas como ip están ubicadas en «/usr/bin».)
Puede cambiar la variable de entorno ”$PATH” del shell Bash mediante los archivos ”~/.bash_profile” o ”~/.bashrc”.
1.5.4.La variable «$HOME»
Muchas órdenes almacenan configuraciones específicas del usuario en su directorio principal y cambian su comportamiento en función de estas. El directorio principal del usuario es determinado por el valor de la variable de entorno
«$HOME».
valor de «$HOME»características de ejecución del programa
/programa ejecutándose por el proceso init (demonio)
/root
/home/usuario_normal
/home/usuario_normal
/home/usuario_normal
/root
programa ejecutándose desde el intérprete de órdenes del
superusuario
programa ejecutándose desde el intérprete de órdenes de un
usuario normal
programa ejecutándose desde el menú en el escritorio gráfico
de un usuario normal
programa ejecutándose como superusuario con «sudoprograma»
programa ejecutándose como superusuario con «sudo -Hprograma»
Cuadro 1.20: Relación de valores de «$HOME»
sugerencia
El intérprete de órdenes sustituye «~/» por el directorio principal del usuario actual, esto es, «$HOME/». El intérprete de órdenes sustituye «~foo/» por el directorio principal del usuario foo, a saber, «/home/foo/».
Ver Sección12.1.5 si $HOME no está disponible para su programa.
1.5.5.Opciones de la línea de órdenes
Algunas órdenes tienen parámetros. Se llaman opciones a los parámetros que comienzan con «-» o «--» y controlan
el comportamiento de la orden.
$ date
Thu 20 May 2021 01:08:08 AM JST
$ date -R
Thu, 20 May 2021 01:08:12 +0900
En este caso, el argumento de la línea de comandos ”-R” cambia el comportamiento de date(1) para mostrar una
cadena de fecha compatible con RFC2822.
1.5.6.Expansión de un patrón en el intérprete de órdenes
A menudo querrá que una orden afecte a un grupo de archivos sin escribir el nombre de cada uno de ellos. Para
cubrir esta necesidad existe la expansión de patrones de nombres de archivos dentro del intérprete de órdenes glob,
(algunas veces también llamado uso de comodines).
Por ejemplo, intente lo siguiente
Page 59
Guía de referencia de Debian31 / 267
patróndescripción de la regla de encaje
*nombres de archivos que no comienza con «.»
.*nombres de archivos que comienza con «.»
?un único carácter
[…]
[a-z]
[^…]
un único carácter que pertenezca al grupo de caracteres entre
corchetes
un único carácter con cualquier valor comprendido entre «a» y
«z»
un único carácter que no pertenezca al grupo de caracteres
encerrados entre corchetes (excluyendo «^»)
Cuadro 1.21: Patrones para la expansión de nombres de archivos del intérprete de órdenes
Si prueba «*» en la orden find(1) con «-name» test etc., encajará «.» como parte inicial del nombre de archivo,
al contrario que en la expansión de nombres del intérprete de órdenes . (Funcionalidad nueva de POSIX)
nota
BASH puede cambiar el comportamiento de la expansión de nombres de archivo con sus opciones internas como
«dotglob», «noglob», «nocaseglob», «nullglob», «extglob», etc. Ver bash(1).
1.5.7.Valor devuelto por la orden
Cada orden devuelve su estado de salida en el valor devuelto (en la variable: «$?»).
estado de salida de una
orden
éxitocero, 0VERDAD
errordiferente de cero, -1FALSO
valor numérico devueltovalor lógico devuelto
Cuadro 1.22: Códigos de salida de una orden
Por ejemplo, pruebe con lo que se muestra.
Page 60
Guía de referencia de Debian32 / 267
$ [ 1 = 1 ] ; echo $?
0
$ [ 1 = 2 ] ; echo $?
1
nota
Tenga en cuenta que en el contexto lógico del intérprete de órdenes, éxito es tratado de forma lógica como CIERTO
que tiene un valor 0 (cero). Quizá esto sea poco intuitivo y por ello se necesite recordar.
1.5.8.Secuencias de órdenes comunes y redirecciones del intérprete de órdenes
Intentemos recordar las siguientes expresiones como parte de una orden de una única línea.
expresión de la ordendescripción
orden &
orden1 | orden2
orden1 2>&1 | orden2
orden1 ; orden2ejecuta la orden1 y la orden2 de forma secuencial
orden1 && orden2
orden1 || orden2
orden > foo
orden 2> foo
orden >> foo
orden 2>> foo
orden > foo 2>&1
orden < fooenvía a la entrada estándar de la orden a un archivo foo
orden << delimitador
orden <<- delimitador
ejecución en segundo plano de la orden en un intérprete de
órdenes hijo
envía a la tubería la salida estándar de la orden1 a la entrada
estándar de la orden2 (se ejecutan de forma concurrente )
envía a la tubería la salida estándar y el error estándar de la
orden1 a la entrada estándar de la orden2 (se ejecutan de
forma concurrente )
ejecuta la orden1; y si ha tenido éxito, ejecuta la orden2
secuencialmente (devuelve éxito si tanto la orden1 como la
orden2 finalizan con éxito)
ejecuta la orden1; si no tiene éxito, se ejecuta la orden2 de
forma secuencial (devuelve éxito si orden1 o orden2 se
ejecutan con éxito)
redirecciona la salida estándar de la orden al archivo foo (y si
existe lo sobreescribe)
redirecciona el error estándar de orden al archivo foo
(sobreescribiendolo)
redirecciona la salida estándar de orden al archivofoo
(concatenándola)
redirecciona el error estándar de orden al archivo foo
(concatenándola)
redirecciona salida estándar y el error estándar de orden al
archivo foo
envía a la entrada estándar de la orden a las líneas siguientes
hasta que encuentra un «delimitador» (aquí el documento)
envía a la entrada estándar de la orden a las líneas siguientes
hasta que se encuentre con el «delimitador» ( en las líneas
de entrada se eliminan los tabuladores al inicio)
Cuadro 1.23: Expresiones de una orden
El sistema Debian es un sistema multitarea. Mediante trabajos en segundo plano se pueden ejecutar por parte de los
usuario múltiples programas desde un único intérprete de órdenes. La gestión de los procesos en segundo plano se
realiza con las órdenes internas: jobs, fg, bg y kill. Por favor, ver las secciones de bash(1) «SIGNALS», «JOB
CONTROL» y builtins(1).
Por ejemplo, intente lo siguiente
Page 61
Guía de referencia de Debian33 / 267
$ </etc/motd pager
$ pager </etc/motd
$ pager /etc/motd
$ cat /etc/motd | pager
Aunque los cuatro ejemplos de redirección del intérprete de órdenes son equivalentes, el último ejemplo ejecuta una
orden más cat y desperdicia recursos sin razón alguna.
El intérprete de órdenes permite abrir archivos utilizando la orden interna exec con un descriptor de archivo arbitrario.
$ echo Hello >foo
$ exec 3<foo 4>bar# open files
$ cat <&3 >&4# redirect stdin to 3, stdout to 4
$ exec 3<&- 4>&-# close files
$ cat bar
Hello
Los descriptores de archivo de 0 a 2 están predefinidos.
dispositivodescripcióndescriptor de archivo
stdinentrada estándar0
stdoutsalida estándar1
stderrerror estándar2
Cuadro 1.24: Descriptores de archivos predefinidos
1.5.9.Alias de órdenes
Usted puede definir alias para las órdenes más utilizadas.
Por ejemplo, intente lo siguiente
$ alias la='ls -la'
Ahora, «la» funciona como forma corta de «ls -la» la cual muestra una relación de todos los archivos en el formato
largo.
Se pueden enumerar los alias existentes mediante alias (ver el epígrafe «SHELL BUILTIN COMMANDS» de
bash(1)).
$ alias
...
alias la='ls -la'
Se puede determinar la ruta exacta o la identidad de la orden mediante «type» (ver el epígrafe «SHELL BUILTIN
COMMANDS» de bash(1)).
Por ejemplo, intente lo siguiente
$ type ls
ls is hashed (/bin/ls)
$ type la
la is aliased to ls -la
$ type echo
echo is a shell builtin
$ type file
file is /usr/bin/file
Page 62
Guía de referencia de Debian34 / 267
En el ejemplo anterior ls fue consultado recientemente y «file» no lo fue, de este modo «ls» está indexado, a
saber, el intérprete de órdenes tiene un registro interno que determina rápidamente la ubicación de la orden «ls».
sugerencia
Ver Sección9.3.6.
1.6.Operaciones de texto al estilo de Unix
En un entorno de trabajo del estilo de Unix, el tratamiento de texto se realiza mediante el uso de tuberías que unen
un conjunto de herramientas para formar una cadena. Esta fue otra de las innovaciones esenciales de Unix.
1.6.1.Herramientas de texto Unix
Algunas herramientas que trabajan con texto se usan muy frecuentemente en un sistema tipo Unix.
No se usan expresiones regulares:
• cat(1) concatena archivos y muestra el contenido completo.
• tac(1) concatena archivos y sale en sentido inverso.
• cut(1) selecciona las partes de las líneas y las salidas.
• head(1) muestra la primera parte de los archivos.
• tail(1) muestra la última parte de los archivos.
• sort(1) ordena las líneas de los archivos de texto.
• uniq(1) elimina las líneas duplicadas de un archivo ya ordenado.
• tr(1) traduce o borra caracteres.
• diff(1) compara archivos línea a línea.
La expresión regular básica (BRE) se utiliza por defecto:
• ed(1) es un editor de líneas antiguo.
• sed(1) es un editor de flujos.
• grep(1) compara el texto con otros patrones.
• vim(1) es un editor de pantalla.
• emacs(1) es un editor interactivo (en cierta manera amplía BRE).
Las expresiones regulares ampliadas (ERE son utilizadas por:
• awk(1) realiza un simple procesamiento de texto.
• egrep(1) hace coincidencias de los patrones en el texto.
• tcl(3tcl) puede hacer cualquier procesamiento de texto imaginado: Ver re_syntax(3). A menudo se utiliza con
tk(3tk).
• perl(1) puede hacer cualquier procesamiento de texto que imágenes. Ver perlre(1).
• pcregrep(1) del paquete pcregrep empareja texto con el patrón Perl Compatible Regular Expressions (PCRE).
• python(1) utilizando el módulo re puede realizar cualquier procesamiento de textos imaginable. Ver «/usr/share/doc/python/html/index.html».
Si no esta seguro de que hacen exactamente estas órdenes, por favor utilice «man orden» para averiguarlo por
usted mismo.
Page 63
Guía de referencia de Debian35 / 267
nota
El orden de clasificación y la expresión de rango dependen de la configuración regional. Si desea obtener un
comportamiento tradicional para un comando, use la configuración regional C o la configuración regional C.UTF-8
en lugar de la configuración regional normal UTF-8 (ver Sección8.1).
nota
Las expresiones regulares de Perl(perlre(1)), Perl Compatible Regular Expressions (PCRE) y las expresiones
regulares de Python ofrecidas por su módulo re tienen muchas expresiones comunes a las tradicionales ERE.
1.6.2.Expresiones regulares
Las expresiones regulares son utilizadas por muchas herramientas de procesamiento de texto. Son similares a la
expansión de nombres de archivo en el intérprete de órdenes, aunque más complicadas y poderosas.
Las expresiones regulares especifican un patrón de encaje y está compuesto por caracteres de texto y metacarac-teres.
Un metacarácter es un carácter que tiene un significado especial. Existen dos tendencias principales, BRE y ERE
dependiendo de cada herramienta de texto, como ya se ha descrito.
Emacs utiliza principalmente el tipo de expresión regular BRE pero se ha ampliado para utilizar «+» y «?» como
metacaracteres como en ERE. De este modo, no es necesario añadirles el prefijo «\» en las expresiones regulares
de emacs.
grep(1) puede utilizarse para realizar búsquedas de texto por medio de expresiones regulares.
Por ejemplo, intente lo siguiente
$ 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
sugerencia
Ver Sección9.3.6.
1.6.3.Sustitución de expresiones
En la sustitución de expresiones, algunos caracteres tiene un significado especial.
Para la cadena de sustitución Perl, se utiliza ”$&” en lugar de ”&” y ”$n” en lugar de ”\n”.
encaja con un carácter literal «c» incluso
si «c» representa un metacarácter
encaja cualquier carácter incluyendo el
de nueva línea
posición al comienzo de la cadena de
caracteres
posición al final de la cadena de
caracteres
\<\<posición al comienzo de la palabra
\>\>posición al final de la palabra
[abc…][abc…]
[^abc…][^abc…]
r*r*
r\+r+
r\?r?
r1\|r2r1|r2
encaja cualquier carácter incluido en
«abc...»
coincide con cualquier carácter excepto
en ”abc...”
coincide con cero o más expresiones
regulares identificadas por ” r ”
coinciden con una o varias expresiones
regulares identificadas por ”r”
coinciden con ninguna o una expresión
regular identificada por ”r”
encaja una de las expresiones regulares
«r1» o «r2»
haga coincidir una de las expresiones
\(r1\|r2\)(r1|r2)
regulares identificadas por «r1» o «r2» y
tratela como una expresión regular entre
paréntesis
Cuadro 1.25: Metacaracteres para BRE y ERE
expresión sustituidadescripción del texto para reemplazar la expresión de reemplazo
&lo que encaja con la expresión regular (usar \& en emacs)
\n
lo que encaja con la n enésima expresión regular entre paréntesis (donde
«n» es un número)
Cuadro 1.26: Sustitución mediante expresiones regulares
En la sustitución de texto, en las diferentes herramientas, prestar especial atención al encaje de las expresiones
regulares entre corchetes o paréntesis con las cadenas de caracteres.
Algunos editores permiten la utilización de expresiones regulares para la búsqueda y/o sustitución de texto.
En el intérprete de órdenes se puede escribir una misma orden en varias líneas anteponiendo el caraćter de barra
invertida «\» al carácter de nueva línea que será sustituido por el vacío.
Por favor, consultar las páginas de manual de estas órdenes.
1.6.4.Sustituciones globales mediante expresiones regulares
La orden ed(1) permite sustituir todas las ocurrencias de «LA_EXPRESIÓN_REGULAR» por «EL_TEXTO» en el «archivo».
$ ed file <<EOF
,s/FROM_REGEX/TO_TEXT/g
w
q
EOF
La orden sed(1) sustituye todas las ocurrencias de «LA_EXPRESIÓN_REGULAR» por «EL_TEXTO» en el «archivo».
$ sed -i -e 's/FROM_REGEX/TO_TEXT/g' file
La orden vim(1) puede sustituir todas las ocurrencias de «LA_EXPRESIÓN_REGULAR» por «EL_TEXTO» en el «archivo»
utilizando las órdenes ex(1).
$ vim '+ %s/FROM_REGEX/TO_TEXT/gc' '+update' '+q' file
sugerencia
La bandera «c» de la orden anterior hace que se pida la confirmación interactiva de cada una de las sustituciones.
Se pueden procesar varios archivos de forma similar («archivo1», «archivo2» y «archivo3») mediante las
expresiones regulares de vim(1) o perl(1).
$ vim '+argdo %s/FROM_REGEX/TO_TEXT/gce|update' '+q' file1 file2 file3
sugerencia
La bandera ”e” en lo anterior evita que el error ”No match” rompa un mapeo.
En el ejemplo en perl(1), «-i» es para la edición de cada elemento que encaja con el patrón y «-p» se utiliza para
repetir la operación sobre cada uno de los archivos que aparecen como argumentos.
Page 66
Guía de referencia de Debian38 / 267
sugerencia
El uso del argumento «-i.bak» en vez de «-i» mantiene cada archivo original añadiéndole «.bak» al nombre
del archivo. Esto permite deshacer los cambios de forma sencilla si nos hemos equivocado al realizar la sustitución.
nota
ed(1) y vim(1) utiliza BRE; perl(1) utiliza ERE.
1.6.5.Extracción de datos en archivos de texto en forma de tabla
Consideremos un archivo de texto llamado «DPL» con los siguientes campos: nombres de los líderes del proyecto
Debian con anterioridad a 2004 y su fecha de inicio, utilizando como separador el espacio en blanco.
Ver «Una breve historia de Debian» para conocer quién es el último líder del proyecto Debian.
Awk se utiliza a menudo para obtener datos de este tipo de archivos.
Por ejemplo, intente lo siguiente
$ awk '{ print $3 }' <DPL# month started
August
April
January
January
April
April
March
$ awk '($1=="Ian") { print }' <DPL# DPL called Ian
IanMurdockAugust1993
IanJacksonJanuary 1998
$ awk '($2=="Perens") { print $3,$4 }' <DPL # When Perens started
April 1996
Los intérprete de órdenes, como Bash, se pueden usar para analizar este tipo de archivos.
Por ejemplo, intente lo siguiente
$ while read first last month year; do
echo $month
done <DPL
... same output as the first Awk example
Aquí la orden interna read usa los caracteres de «$IFS» (separadores internos) para dividir las líneas en palabras.
Si cambia el valor «$IFS» a «:», puede analizar «/etc/passwd» con el intérprete de órdenes de la forma adecuada.
Page 67
Guía de referencia de Debian39 / 267
$ oldIFS="$IFS"# save old value
$ IFS=':'
$ while read user password uid gid rest_of_line; do
if [ "$user" = "bozo" ]; then
echo "$user's ID is $uid"
fi
done < /etc/passwd
bozo's ID is 1000
$ IFS="$oldIFS"# restore old value
(Para hacer lo mismo con Awk asigne el separador de campos mediante «FS=':'».)
El intérprete de órdenes utiliza IFS para separar los resultados de la expansión de parámetros, sustitución de órdenes
y expansiones aritméticas. Las palabras entre comillas dobles o simples no se tienen en cuenta en estas operaciones.
El valor por defecto de IFS es la relación espacio, tabulador y nueva_línea.
Tenga cuidado cuando utilice estos trucos en el intérprete de órdenes. Cuando el intérprete de órdenes trabaje en
algunas partes de un archivo de órdenes y su entrada pueden ocurrir cosas extrañas.
$ IFS=":,"# use ":" and "," as IFS
$ echo IFS=$IFS,IFS="$IFS"# echo is a Bash builtin
IFS=, IFS=:,
$ date -R# just a command output
Sat, 23 Aug 2003 08:30:15 +0200
$ echo $(date -R)# sub shell --> input to main shell
Sat23 Aug 2003 08 30 36 +0200
$ unset IFS# reset IFS to the default
$ echo $(date -R)
Sat, 23 Aug 2003 08:30:50 +0200
1.6.6.Fragmentos de órdenes utilizados con tuberías
Los fragmentos de órdenes siguientes son muy potentes cuando forman parte de una cadena de órdenes unidas por
tuberías.
Un archivo de órdenes de una sola línea puede repetirse sobre varios archivos utilizando find(1) y xargs(1) para
realizar tareas muy complicadas. Ver Sección10.1.5 y Sección9.4.9.
Cuando la utilización de órdenes de forma interactiva se complica demasiado debe considerarse escribir un archivo
de órdenes (ver Sección12.1).
Page 68
Guía de referencia de Debian40 / 267
fragmento de archivo de órdenes
(escrito en una única línea)
efecto de la orden
find /usr -printlista todos los archivos que se encuentran por debajo de «/usr»
seq 1 100escribe del 1 al 100
| xargs -n 1 orden
| xargs -n 1 echo
ejecuta la orden de forma repetida para cada elemento de la
tubería y utilizando este como argumento
divide los elementos de la tubería separados por espacios en
líneas
| xargs echoune todas la líneas de la tubería en una
| grep -e
patrón_de_expresión_regular
| grep -v -e
patrón_de_expresión_regular
| cut -d: -f3 -
| awk '{ print $3 }'
| awk -F'\t' '{ print $3 }'
| col -bx
selecciona las líneas de la tubería que encajan con el
patrón_de_expresión_regular
selecciona las líneas de la tubería que no tienen encaje con el
patrón_de_la_expresión_regular
selecciona el tercer campo de cada línea de la tubería utilizando
como separado «:» (archivo de contraseñas etc.)
selecciona el tercer campo de cada línea de la tubería utilizando
como separador espacios en blanco
selecciona el tercer campo de cada línea de la tubería utilizando
como separador el tabulador
elimina los retornos de carro y sustituye los tabuladores por
espacios
| expand -sustituye los tabuladores por espacios
| sort| uniqordena y elimina duplicados
| tr 'A-Z' 'a-z'convierte mayúsculas a minúsculas
| tr -d '\n'concatena las líneas en una sola
| tr -d '\r'elimina el retorno de carro
| sed 's/^/# /'añade «#» al comienzo de cada línea
| sed 's/\.ext//g'elimina «.ext»
| sed -n -e 2pimprime la segunda línea
| head -n 2 -imprimir las primeras dos líneas
| tail -n 2 -imprime las últimas dos líneas
Cuadro 1.27: Relación de fragmentos de órdenes con tuberías
Page 69
Guía de referencia de Debian41 / 267
Capítulo 2
Gestión de paquetes Debian
nota
Este capítulo se ha escrito según la última distribución estable, cuyo nombre de publicación es: bookworm.
La fuente de datos del sistema APT se denomina colectivamente lista de fuentes en este documento . Puede definirse en cualquier parte de los archivos ”/etc/apt/sources.list”, ”/etc/apt/sources.list.d/*.list”
o ”/etc/apt/sources.list.d/*.source”.
2.1.Prerequisitos de la gestión de paquetes Debian
2.1.1.Sistema de gestión de paquetes Debian
Debian es una organización constituida por voluntarios que construyen versiones de paquetes binarios precompilados
compatibles basados en software libre y lo distribuyen en su archivo,
El archivo de Debian lo constituyen múltiples nodos espejo a los que se accede por medio de los protocolos HTTP y
FTP. También esta disponible en CD-ROM/DVD.
El actual sistema de gestión de paquetes de Debian que puede utilizar todos estos recursos es Herramienta de
empaquetado avanzada (APT).
El sistema de gestión de paquetes Debian, cuando se usa de forma adecuada desde el archivo, ofrece al usuario la
instalación en el sistema de un conjunto de paquetes binarios consistentes. Actualmente existen 74165 paquetes
disponibles para la arquitectura amd64.
El sistema de administración de paquetes de Debian tiene una rica historia y muchas opciones para el programa de
usuario de front-end y el método de acceso al archivo de back-end que se utilizará. Actualmente, recomendamos lo
siguiente.
apt(8) para todas las operaciones de la línea de órdenes, incluida la instalación, eliminación y actualización de
paquetes.
apt-get(8) para llamar desde los archivos de órdenes al sistema de gestión de paquetes de Debian. Es una
opción de reserva en antiguos sistemas Debian en los que apt no esta disponible.
aptitude(8) para la gestión interactiva mediante interfaz de texto para la gestión de los paquetes instalados y
búsquedas sobre los paquetes disponibles
Page 70
Guía de referencia de Debian42 / 267
paquetepopularidad tamaño descripción
dpkgV:912, I:9996388
aptV:865, I:9994318
aptitudeV:48, I:2534389
taskselV:34, I:980347
unattended-upgrades
gnome-softwareV:153, I:2633085Centro de software para GNOME (front-end GUI APT)
synapticV:46, I:3757627gestor de paquetes gráfico (interfaz de GTK APT)
apt-utilsV:379, I:9981065
apt-listchanges
apt-listbugsV:6, I:8477relación de bugs críticos después de cada instalación APT
apt-fileV:17, I:6789
apt-rdependsV:0, I:539relación de dependencias recursivas de los paquetes
V:182, I:278301
V:358, I:872398
sistema de gestión de paquetes de bajo nivel para Debian
(basado en archivos)
Front-end de APT para administrar paquetes con CLI:
apt/apt-get/apt-cache
Front-end de APT para gestionar paquetes de forma interactiva
con consola de pantalla completa: aptitude(8)
Front-end de APT para instalar las tareas seleccionadas:
tasksel(8)
paquete mejorado de APT, para permitir la instalación
automática de actualizaciones de seguridad
utilidades de APT: apt-extracttemplates(1),
apt-ftparchive(1) y apt-sortpkgs(1)
herramienta de notificación de cambios en el histórico de
paquetes
utilidad APT para la búsqueda de paquetes — interfaz de línea
de órdenes
Cuadro 2.1: Relación de herramientas para la gestión de paquetes de Debian
2.1.2.Configuración de paquetes
Estos son algunos puntos clave para la configuración de los paquetes en el sistema Debian.
Se respeta la configuración manual del administrador del sistema. Dicho de otra forma, por convenio el sistema
de configuración de paquetes no realiza configuraciones de manera intrusíva.
Cada paquete viene con su propio archivo de órdenes para su configuración con un interfaz de usuario estándar
llamado debconf(7) que facilita el proceso de la instalación inicial del paquete.
Los desarrolladores de Debian lo hacen lo mejor posible para que tenga una experiencia de actualización perfecta
a través de los archivos de órdenes para la configuración del paquete.
Las funcionalidades completas del software empaquetado están disponibles para el administrador del sistema. Sin
embargo, aquellas que representan riesgos para la seguridad están deshabilitadas en la instalación por defecto.
Si manualmente activa un servicio peligroso para la seguridad, será el responsable de los riesgos que contenga.
El administrador del sistema puede realizar manualmente configuraciones esotéricas. Esto puede interferir con los
programas de ayuda estándar que se utilizan para la configuración del sistema.
2.1.3.Precauciones principales
aviso
No mezcle paquetes de diferentes fuentes. Probablemente romperá la consistencia entre paquetes del
sistema lo que requiere un conocimiento de su gestión interna, como son el compilador ABI, versiones de
bibliotecas, funcionalidades de intérpretes, etc.
El administrador del sistema Debian newbie deberías quedarte con la versión stable (estable) de Debian y aplicar
sólo las actualizaciones de seguridad. Hasta que entiendas muy bien el sistema Debian, deberías seguir las siguientes
precauciones.
Page 71
Guía de referencia de Debian43 / 267
No incluyas testing (pruebas) o unstable (inestable) en la lista de fuentes.
No mezcles Debian estándar con otros archivos no Debian como Ubuntu en la lista de fuentes .
No crees ”/etc/apt/preferences”.
No modifiques el comportamiento predeterminado de las herramientas de gestión de los paquetes a través de los
archivos de la configuración sin conocer todas sus repercusiones.
No instales paquetes aleatorios mediante ”dpkg -i random_package”.
No instales nunca paquetes aleatorios mediante ”dpkg --force-all -i random_package”.
No borres ni modifiques los archivos de ”/var/lib/dpkg/”.
no sobreescribas el sistema de archivos al instalar software compilado directamente de su código fuente.
• Si lo necesitas instálalos en «/usr/local» o «/opt».
Los efectos no compatibles causados por violar las precauciones anteriores al sistema de gestión de paquetes de
Debian pueden dejar tu sistema inutilizable.
Los administradores serios del sistema Debian responsables de los servidores de una misión crítica deben tomar
precauciones adicionales.
No instalar ningún paquete de Debian, incluyendo las actualizaciones de seguridad, sin probarlo con su configu-
ración especifica en un entorno seguro.
• Al final, tu como administrador del sistema, eres el responsable de tu sistema.
• el largo historial de estabilidad del sistema Debian no es una garantía por sí misma.
2.1.4.Conviviendo con actualizaciones continuas
atención
Para sus servidores de producción es recomendable la distribución stable (estable) con sus actualizaciones de seguridad. También es recomendable para los equipos de escritorio a los que quiera dedicar
poco tiempo en su administración.
A pesar de mis advertencias anteriores, muchos lectores de este documento pueden desear ejecutar las suites
testing (pruebas) o unstable (inestable) más nuevas.
La iluminación de las siguientes secciones salva a las personas de la eterna lucha kármica de actualizar el infierno
y las dejan llegar al nirvana de Debian.
Esta lista está destinada al entorno de escritorio self-administered.
Utilice la suite testing ya que es prácticamente la versión rolling -continua- gestionada automáticamente por la
infraestructura de control de calidad del archivo de Debian, como la integración continua de Debian, la prácticas de
carga solo de fuente, y el seguimiento de transición de biblioteca. Los paquetes de la suite testing se actualizan
con la suficiente frecuencia para ofrecer las funciones más recientes.
Establece el nombre de código correspondiente al conjunto testing (”trixie” durante el ciclo de publicación
bookworm-as-stable) en la lista de las fuentes.
Actualiza manualmente este nombre en clave en la lista de fuentes al nuevo solo después de evaluar la situación
durante aproximadamente un mes después del lanzamiento de la suite principal. La lista de los correos de los
usuarios y los desarrolladores de Debian también es una buena fuente de información para esto.
Page 72
Guía de referencia de Debian44 / 267
No se recomienda el uso de la suite inestable. La suite inestable es buena para depurar paquetes como desarrollador pero tiende a exponerle a riesgos innecesarios para el uso normal del escritorio. Aunque la suite
inestable del sistema Debian parece muy estable la mayoría de las veces, ha habido algunos problemas con
paquetes y algunos de ellos no eran tan triviales de resolver.
Aquí algunas ideas de las medidas de precaución básicas para asegurar una recuperación rápida y fácil de los fallos
en los paquetes Debian.
Hacer el sistema de arranque dual instalando la suite stable del sistema Debian en otra partición.
Ten a mano el CD de instalación para un arranque de recuperación del sistema.
Considera instalar apt-listbugs para comprobar la información del Sistema de seguimiento de errores de De-
bian (BTS) antes de la actualización.
Aprender la infraestructura del sistema de los paquetes lo suficiente como para solucionar un problema
atención
Si no puede tomar ninguna de estas precauciones, probablemente no estés listo para las versiones de
prueba e inestables.
2.1.5.Fundamentos del archivo de Debian
sugerencia
Las directrices oficiales del archivo de Debian están definidas en el Manual de Directrices Debian, Capítulo 2 - El
archivo de Debian.
Examinemos el archivo de Debian desde el punto de vista de un usuario del sistema.
Para un usuario del sistema, se accede al archivo de Debian usando el sistema APT.
El sistema APT especifica tu fuente de datos como la lista de fuentes y se describe en sources.list(5).
Para el sistema bookworm con el típico acceso HTTP, la lista de las fuentes al estilo de una línea como la siguiente:
deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb http://security.debian.org/debian-security bookworm-security main non-free-firmware←-
contrib non-free
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware ←-
contrib non-free
Alternativamente, la lista de fuentes equivalente en formato deb822 es la siguiente.
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: bookworm
Components: main non-free-firmware contrib non-free
Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: bookworm-security
Components: main non-free-firmware contrib non-free
Los puntos clave de las listas de las fuentes son los siguientes.
Page 73
Guía de referencia de Debian45 / 267
Formato de una sola línea
• Tus archivos con la definición se encuentran en los archivos ”/etc/apt/sources.list” y ”/etc/apt/sources.list.d/*.list”.
• Cada línea define la fuente de los datos para el sistema APT.
• La línea ”deb” define el paquete binario.
• La línea ”deb-src” define los paquetes fuente.
• El primer argumento es la URL root del archivo de Debian.
• El segundo argumento es el nombre de la distribución utilizando el nombre de la suite o el nombre en clave.
• el tercero y siguientes son la relación de nombres de área válidos del archivo de Debian.
El estilo del formato es Deb822
• Tus definiciones se encuentran en los archivos ”/etc/apt/sources.list.d/*.source”.
• Cada bloque de líneas separado por una línea en blanco define la fuente de los datos para el sistema APT.
• ”Types:” define la lista de tipos como ”deb” y ”deb-src”.
• ”URIs:” define la lista de URIs raíz del archivo de Debian.
• ”Suites:” define la lista de los nombres de la distribución utilizando el nombre de la suite o el nombre en clave.
• ”Components:” define la lista de los nombres del área de los archivos válidos de Debian.
La definición para ”deb-src” puede omitirse con seguridad si es sólo para aptitude que no accede a los metadatos
relacionados con la fuente. Acelera las actualizaciones de los metadatos del archivo.
La dirección URL puede ser ”https://”, ”http://”, ”ftp://”, ”file://”, ....
Las líneas que empiezan por ”#” son comentarios y se ignoran.
Aquí, tiendo a usar el nombre de código ”bookworm” o ”trixie” en lugar del nombre de la suite ”stable” (estable)
o ”testing” (pruebas) para evitar sorpresas cuando se publique la siguiente stable (estable).
sugerencia
Siseutiliza”sid”enelejemploanteriorenlugarde”bookworm”,lalínea”deb:
http://security.debian.org/ ...” o su contenido equivalente en deb822 para las actualizaciones
de seguridad en la lista de fuentes no es necesaria. Esto se debe a que no existe un archivo de actualizaciones
de seguridad para ”sid” (inestable).
Aquí está la lista de direcciones URL de las páginas del archivo de Debian y el nombre de la suite o nombre del
código usado en el fichero de configuración después de la publicación de bookworm.
atención
Sólo la versión stable (estable) pura con actualizaciones de seguridad proporciona la mejor estabilidad.
Ejecutar principalmente la versión stable (estable) mezclada con algunos paquetes de testing (pruebas) o unstable (inestable) es más arriesgado que ejecutar la versión unstable (inestable) pura por
desajuste de versiones de librerías, etc. Si realmente necesita la última versión de algunos programas de
la versión stable (estable), utilice los paquetes de los servicios stable-updates y backports (consulte Sección2.7.4). Estos servicios deben utilizarse con especial cuidado.
atención
Por defecto debería tener únicamente una de las distribuciones stable (estable), testing (pruebas)
o unstable (inestable) en la línea «deb». Si se tiene en línea «deb» una combinación de las distribuciones stable (estable), testing (pruebas) e unstable (inestable) los programas APT son más
lentos y sólo la última distribución es útil. El uso de múltiples distribuciones requiere utilizar el archivo
/etc/apt/preferences
«
» con un fin específico (consulte Sección2.7.7).
Page 74
Guía de referencia de Debian46 / 267
nombre
de
publica-
finalidad del repositorio
URL del archivo
nombre del
paquete
ción
https://deb.debian.org/-
debian/
https://deb.debian.org/-
debian/
https://deb.debian.org/-
debian/
https://deb.debian.org/-
debian/
https://deb.debian.org/-
debian/
https://deb.debian.org/-
debian/
https://deb.debian.org/-
debian/
http://security.debian.org/-
debian-security/
http://security.debian.org/-
debian-security/
stablebookworm
testingtrixie
unstablesid
«experimental»N/A
stable-proposed-updatesbookworm-proposed-updatesActualizaciones para la próxima versión stable (opcional)
stable-updatesbookworm-updates
stable-backportsbookworm-backports
stable-securitybookworm-security
testing-securitytrixie-securityEl equipo de seguridad no lo utiliza ni lo apoya activamente
Liberación stable cuasiestática tras exhaustivas
comprobaciones
Liberación dinámica de testing tras comprobaciones
decentes y cortas esperas
Liberación dinámica unstable tras comprobaciones mínimas
y sin esperas
Experimentos previos al lanzamiento por parte de los
desarrolladores (opcional, sólo para desarrolladores)
Subconjunto del conjunto stable-proposed-updates que
necesita actualizaciones urgentes, como los datos de la zona
horaria (opcional)
Colección aleatoria de paquetes recompilados, principalmente
de la versión testing (opcional)
Actualizaciones de seguridad para la versión stable
(importante)
Cuadro 2.2: Relación de sitios de archivo de Debian
sugerencia
Para el sistema Debian con la suite stable (estable), es una buena idea incluir el contenido con
”http://security.debian.org/” en la lista de las fuentes para habilitar las actualizaciones de seguridad
como en el ejemplo anterior.
nota
El equipo de seguridad de Debian ha corregido los errores de seguridad del archivo estable . Esta actividad
ha sido bastante rigurosa y confiable. Los errores del archivo de pruebaspueden ser corregidos por el equipo
de seguridad de pruebas de Debian. Por varias razones , esta actividad no es tan rigurosa como aquella para
estable y es posible que deba esperar la migración de los paquetes inestables corregidos al archivo
de prueba . Los errores del archivo inestable son corregidos por el mantenedor individual. Los paquetes
inestables mantenidos activamente suelen estar en bastante buen estado gracias a las últimas correcciones
de seguridad ascendentes. Consulte las Preguntas frecuentes sobre seguridad de Debian para saber cómo Debian
maneja los errores de seguridad.
El número de paquetes que se indica es para la arquitectura amd64. El área main proporciona el sistema Debian
(ver Sección2.1.6).
Al navegar por cada URL junto a dists o pool conocerá mejor la organización del archivo de Debian.
Se puede nombrar una distribución de dos formas, por la distribución o nombre de publicación. La palabra distribución
se usa alternativamente como sinónimo de la suite en muchas documentaciones. La relación entre la suite y el nombre
en clave se puede resumir de la siguiente manera.
La historia de los nombres de publicación se cuenta en ¿Debian FAQ: 6.2.1 Qué otros nombres clave se han usado
en el pasado?
Page 75
Guía de referencia de Debian47 / 267
área
número de
paquetes
criterio de componente del paquete
main72806Compatible con DFSG y sin dependencia de non-free
non-free-firmware 39
no compatible con DFSG, firmware necesario para una
experiencia razonable de la instalación del sistema
contrib356cumplen con DFSG pero con dependencias con non-free
non-free964
No cumple con las Directrices de software libre de Debian
(DFSG) y no está en non-free-firmware
Cuadro 2.3: Relación de áreas de archivo Debian
Temporización
después de la
publicación de
bookworm
después de la
publicación de trixie
distribución = stable
(estable)
nombre de publicación =
bookworm
nombre de publicación =
trixie
distribución = testing
(prueba)
nombre de publicación =
trixie
nombre de publicación =
forky
distribución =
unstable (inestable)
nombre de publicación =
sid
nombre de publicación =
sid
Cuadro 2.4: Relación entre los nombres de publicación y distribución
En la terminología de archivo de Debian de forma estricta, se usa la palabra «sección» en concreto para la categorización de paquetes por el tipo de aplicación. (Sin embargo las palabras «sección principal» algunas veces se usa
para describir el área del archivo Debian llamado «main».)
Cada vez que un desarrollador Debian (DD) realiza una nueva entrega a la distribución «inestable» (a través
del procesamiento de entrada), se le pide que se asegure que la entrega de paquetes sea compatible con el último
conjunto de paquetes de la distribución «inestable».
Si un desarrollador de Debian con su actualización rompe la compatibilidad de alguna biblioteca importante de forma
intencionada etc, normalmente se anuncia en la lista de correo de desarrollo (debian-devel mailing list) etc.
Después de que un conjunto de paquetes se han movido de forma automática desde la distribución «inestable» a
la distribución «en pruebas» el archivo de órdenes de mantenimiento que lo movió comprueba su madurez (más de
2-10 días de antigüedad), el estado RC de los informes de errores de los paquetes y comprueba su compatibilidad
con el último conjunto de paquetes de la distribución «en pruebas». Este proceso hace que la distribución «enpruebas» este actualizada y se pueda utilizar.
A través del proceso gradual de congelación de archivos dirigido por el equipo de lanzamiento, el archivo prueba
se madura hasta hacerlo completamente consistente y libre de errores con algunas intervenciones manuales. A
continuación, se crea la nueva versión estable asignando el nombre en clave del antiguo archivo prueba al nuevo
archivo estable y creando el nuevo nombre en clave para el nuevo archivo prueba. El contenido inicial del nuevo
archivo prueba es exactamente el mismo que el del nuevo archivo estable.
Tanto los repositorios unstable (inestable) como los testing (prueba) pueden sufrir fallos temporales causados
por varios factores.
Los paquetes rotos se suben al repositorio (ver unstable (inestable) )
Retrasos en la recepción de nuevos paquetes para archivar (principalmente para unstable (inestable))
Problemas con el tiempo de sincronización de los archivos (tanto para testing (pruebas) como los unstable
(inestable))
Acciones manuales sobre el archivo como la eliminación de paquetes (generalmente para testing (pruebas))
etc.
Así que si decide usar esos archivos, debe ser capaz de arreglar o indagar sobre este tipo de problemas.
Page 76
Guía de referencia de Debian48 / 267
atención
Durante unos pocos meses después de una nueva versión stable, la mayoría de los usuarios de escritorio
deberían usar el archivo stable con sus actualizaciones de seguridad incluso si normalmente usan los
archivos unstable o testing. Para este periodo de transición, tanto los archivos unstable como los
archivos testing no son buenos para la mayoría de la gente. Es difícil mantener su sistema en buenas
condiciones de funcionamiento con el archivo unstable ya que sufre oleadas de actualizaciones importantes para los paquetes principales. El archivo testing tampoco es útil ya que contiene casi el mismo
contenido que el archivo stable sin su soporte de seguridad (Debian testing-security-announce 2008-12).
Después de un mes más o menos, los archivos unstable o testing pueden llegar a ser útiles si se tiene
cuidado.
sugerencia
Al utilizar la distribución testing «en pruebas» el problema causado por la eliminación de un paquete
normalmente se soluciona temporalmente instalando el paquete correspondiente de la distribución unstable«inestable» que se carga para corregir el error.
Ver el Manual de Directrices Debian para obtener más información sobre las definiciones del archivo.
«Secciones»
«Prioridades»
«Sistema base»
«Paquetes esenciales»
2.1.6.Debian es 100 % software libre
Debian es 100 % software libre ya que:
Debian instala por defecto únicamente software libre para respetar las libertades del usuario.
Debian proporciona únicamente software libre en el área main.
Debian recomienda ejecutar únicamente el software libre del área main.
Ningún paquete en main depende ni recomienda paquetes en no libre ni el firmware no libre ni contribución.
Alguien se pregunta si los dos hechos siguientes se contradicen entre sí.
«Debian se mantendrá 100 % libre». (Primera clausula del Contrato Social de Debian)
Los servidores Debian alojan algunos paquetes non-free-firmware, non-free y contrib.
Esto no resulta contradictorio, por lo siguiente.
El sistema Debian es 100 % libre y sus paquetes están albergados en los servidores Debian en main
Los paquetes fuera del sistema Debian están alojados en los servidores de Debian en las áreas non-free,
non-free-firmware y contrib.
Se explica de forma precisa en las clausulas cuarta y quinta del Contrato Social de Debian:
Nuestra prioridad son nuestros usuarios y el software libre
Page 77
Guía de referencia de Debian49 / 267
• Nos guiaremos por las necesidades de nuestros usuarios y de la comunidad del software libre. Sus intereses
serán una prioridad para nosotros. Daremos soporte a las necesidades de nuestros usuarios para que puedan
trabajar en muchos tipos distintos de entornos de trabajo. No pondremos objeciones al software no libre que vaya
a ejecutarse sobre Debian ni cobraremos a las personas que quieran desarrollar o usar ese tipo de software (no
libre). Permitiremos a otros crear distribuciones de valor añadido basadas en Debian sin cobrarles nada por ello.
Es más, entregaremos un sistema integrado de alta calidad sin restricciones legales que pudieran prevenir este
tipo de uso.
Trabajos que no siguen nuestros estándares de software libre
• Reconocemos que algunos de nuestros usuarios requieren el uso de trabajos que no se ajustan a las Directrices
de Software Libre de Debian. Hemos creado las áreas ”non-free”, ”non-free-firmware” y ”contrib” en
nuestro archivo para estos trabajos. Los paquetes de estas áreas no forman parte del sistema Debian, aunque
han sido configurados para su uso con Debian. Animamos a los fabricantes de CDs a que lean las licencias
de los paquetes en estas áreas y determinen si pueden distribuir los paquetes en sus CDs. Así, aunque los
trabajos que no son libres no forman parte de Debian, apoyamos su uso y proporcionamos infraestructura para
los paquetes que no son libres (como nuestro sistema de seguimiento de fallos y listas de correo). Los medios
oficiales de Debian pueden incluir firmware que no forma parte del sistema Debian para permitir el uso de Debian
con hardware que requiera dicho firmware.
nota
El texto actual del 5º término en el actual Contrato Social Debian 1.2 es ligeramente diferente del texto anterior. Esta
desviación editorial es intencionada para hacer consistente este documento de usuario sin cambiar el contenido
real del Contrato Social.
Los usuarios deben ser conscientes de los riesgos de utilizar paquetes de las zonas non-free, non-free-firmware
y contrib:
restricciones a la libertad con dichos paquetes
falta de soporte de Debian para dichos paquetes (Debian no puede ayudar al software propietario por no tener
acceso a su código fuente)
contagio al 100 % del sistema libre Debian
Las Directrices de Software Libre Debian son los estándares del software libre de Debian. Debian entiende «software»
en un ámbito amplio, incluidos los documentos, firmware, logotipos y materia gráfico de los paquetes. Esto hace que
el estándar de software libre de Debian sea uno de los más estrictos.
Los paquetes típicos non-free, non-free-firmware y contrib incluyen paquetes de libre distribución de los
siguientes tipos:
Paquetes de documentación que cumplen la Licencia de Documentación Libre GNU con secciones fijas como las
de GCC y Make (la mayor parte se encuentran en la secciónnon-free/doc.)
Paquetes de firmware que contienen datos binarios sin fuente como los listados en Sección9.10.5 como non-free-firmware.
(La mayoría se encuentran en la sección non-free-firmware/kernel).
Paquetes de juegos y tipos de letra con restricciones para su uso comercial y/o modificación de su contenido
Por favor, ten en cuenta que el número de paquetes non-free, non-free-firmware y contrib es inferior al
2 % de los paquetes main. Permitir el acceso a las áreas non-free, non-free-firmware y contrib no oculta el
origen de los paquetes. El uso interactivo a pantalla completa de aptitude(8) le proporciona visibilidad completa y
control sobre qué paquetes se instalan y desde qué área lo hacen. Para mantener tu sistema tan libre como desees.
Page 78
Guía de referencia de Debian50 / 267
2.1.7.Dependencias de paquetes
El sistema Debian proporciona un conjunto consistente de paquetes binarios a través de un mecanismo de declaración de dependencia binaria versionada en sus campos de archivo de control. Aquí hay algunas definiciones simples
de ellos.
”Depende”
• Declara una dependencia obligatoria y es obligatorio que todos los paquetes enumerados sean instalados al
mismo tiempo o que estén instalados previamente.
«Predepende» (Pre-depends)
• Son como las dependencias, con la excepción de que es obligatorio que estén instalados completamente con
anterioridad.
«Recomendado» (Recommends)
• Determina una dependencia fuerte, pero no obligatoria. La mayoría de los usuarios no querrán instalar el paquete
al menos que todos los paquetes enumerados en este campo estén instalados.
«Sugiere»
• Declara una dependencia débil. Muchos usuario podrían beneficiarse de su instalación si bien tendrán una funcionalidad suficiente sin ellos.
«Mejora» (Enhances)
• Declara una dependencia débil como Sugerida pero va en la dirección contraria.
«Rompe» (Breaks)
• Declara una incompatibilidad, generalmente con una versión concreta. La solución más común es actualizar
todos los paquetes que se encuentran enumerados en este campo.
«Incompatibles» (Conflicts)
• Declara su total incompatibilidad. Todos los paquetes enumerados en este campo deben ser eliminados para
conseguir instalar el paquete.
«Sustituye» (Replaces)
• Se declara cuando los archivos instalados por el paquete sustituyen a los archivos de los paquetes que se
enumeran.
«Proporciona» (Provides)
• Se declara cuando el paquete proporciona todos los archivos y funcionalidades de los paquetes enumerados.
nota
Tener en cuenta, que lo correcto es definir «Proporciona», «Imcompatible» y «Sustituye» a la vez en el caso de un
paquete virtual. Esto asegura que solo un paquete real que proporciona el virtual puede ser instalado a la vez.
La definición «oficial», incluyendo la dependencia del código fuente, está en Manual de directrices de Debian: Capítulo
7 - Declaración de relaciones entre paquetes.
Page 79
Guía de referencia de Debian51 / 267
2.1.8.Flujo de hechos de las órdenes de gestión de paquetes
Aquí hay un resumen del flujo de hechos simplificado del manejo de un paquete por parte de APT.
«Update» («apt update», «aptitude update» o «apt-get update»):
1. Recupera los metadatos del archivo remoto
2. Reconstruye y actualiza la copia local de los metadatos del archivo que utiliza APT
«Upgrade» («apt upgrade» y «apt full-upgrade» o «aptitude safe-upgrade» y «aptitude full-upgrade»
o «apt-get upgrade» y «apt-get dist-upgrade»):
1. Seleccione una versión candidata, que instala paquetes que suelen ser las últimas versiones disponibles
(consulte Sección2.7.7 para conocer las excepciones)
2. Realiza la resolución de dependencias del paquete
3. Recupera del archivo remoto los paquetes binarios que se han seleccionado si la versión candidata es dife-
1. Selecciona los paquetes enumerados en la línea de comando
2. Realiza la resolución de dependencias del paquete
3. Ejecuta el archivo de órdenes prerm
4. Elimina los archivos instalados incluidos los archivos de configuración
5. Ejecuta el archivo de órdenes postrm
Aquí, se han omitido de forma intencionada los detalles técnicos por el bien del panorama general.
Page 80
Guía de referencia de Debian52 / 267
2.1.9.Soluciones a problemas básicos en la gestión de paquetes
Se debe leer la excelente documentación oficial. El primer documento a leer es el específico de Debian ”/usr/share/doc/package_name/README.Debian”.
También otra documentación en ”/usr/share/doc/package_name/”. Si se configura el shell en Sección1.4.2,
ingresar los siguientes comandos.
$ cd package_name
$ pager README.Debian
$ mc
Para obtener información especifica puede que necesite instalar el paquete de documentación correspondiente con
el sufijo «-doc».
Si tiene problemas con un paquete concreto, asegúrese de comprobar primero el sistema de seguimiento de errores
Debian (BTS).
sitio weborden
Página principal de el sistema
de seguimiento de errores
Debian (BTS)
El informe de errores con el
nombre de un paquete
El informe del error, si se
conoce su número de error
Cuadro 2.5: Relación de los principales sitios web para resolver problemas de un paquete concreto
Búsqueda en Google incluyendo alguno de los siguientes criterios de búsqueda «site:debian.org», «site:wiki.debian.org»,
«site:lists.debian.org», etc.
Cuando presente un informe de error, por favor utilice la orden reportbug(1).
2.1.10.Como seleccionar paquetes Debian
Cuando encuentre más de 2 paquetes similares y se pregunte cuál instalar sin el esfuerzo de ”prueba y error”, hay
que aplicar el sentido común. Creo que los siguientes puntos son las características que debe tener el paquete
preferido.
Esencial: si > no
Área: main > contrib > non-free
Prioridad: required > important > standard > optional > extra
Tareas: paquetes enumerados como tareas como «Entorno de escritorio«
Los paquetes se eligen por paquetes que dependen de ellos (por ejemplo, gcc depende de gcc-10)
Estadísticas: a mayor número de votos e instalaciones
Registro de cambios: actualizaciones regulares del desarrollador
BTS: sin errores RC (ni críticos, ni graves, ni errores leves)
BTS: atención ofrecida por el desarrollador a los informes de errores
BTS: mayor número de errores solucionados recientemente
BTS: menor número de errores que no sean nuevas funcionalidades
Debian comenzó como un proyecto voluntario con un modelo de desarrollo distribuido, sus repositorios contienen
muchos paquetes con diferentes objetivos y calidad. Se deben tomar las propias decisiones de qué hacer con ellos.
Page 81
Guía de referencia de Debian53 / 267
2.1.11.Cómo hacer frente a requisitos contradictorios
Cualquiera que sea la suite del sistema Debian que decidas usar, puede que aún desees ejecutar las versiones de
los programas que no están disponibles en esa suite. Incluso si encuentras paquetes de dichos programas en otras
suites de Debian o en otros recursos no Debian, sus requisitos pueden entrar en conflicto con tu sistema Debian
actual.
Aunque puedes modificar el sistema de gestión de los paquetes con la técnica apt-pinning, etc., tal y como se
describe en Sección2.7.7 para instalar estos paquetes binarios no sincronizados, estos métodos de modificación
sólo tienen un uso limitado, ya que pueden romper estos programas y tu sistema.
Antes de instalar a la fuerza estos paquetes no sincronizados, deberías buscar todas las soluciones alternativas más
seguras disponibles que sean compatibles con tu sistema Debian actual.
Instala estos programas utilizando los correspondientes paquetes binarios ”sandboxed” (ver Sección7.7).
• Muchos programas, en su mayoría GUI, como LibreOffice y las aplicaciones GNOME, están disponibles como
paquetes Flatpak, Snap, o AppImage.
Crea un entorno chroot o similar y ejecuta dichos programas en él (consulta Sección9.11).
• Los comandos CLI se pueden ejecutar fácilmente bajo chroot compatible (ver Sección9.11.4).
• Se pueden probar fácilmente múltiples entornos de escritorio y completos sin reiniciar (ver Sección9.11.5).
Construye tu mismo las versiones que deseas de los paquetes binarios que sean compatibles con tu sistema
Debian actual.
• Se trata de una tarea no trivial (ver Sección2.7.13).
2.2.Operaciones básicas de la gestión de paquetes
Las operaciones de gestión de paquetes basadas en repositorios en el sistema Debian pueden realizarse mediante
muchas herramientas de gestión de paquetes basadas en APT disponibles en el sistema Debian. Aquí, explicamos
tres herramientas básicas para la gestión de paquetes: apt, apt-get / apt-cache y aptitude.
Para realizar las operaciones de gestión de paquetes que incluyen su instalación o la actualización de su metainformación necesitará privilegios de superusuario.
2.2.1.apt vs. apt-get / apt-cache vs. aptitude
A pesar de que aptitude es una herramienta interactiva muy amigable que utilizo personalmente por defecto, debe
tener en cuenta algunas advertencias:
la orden aptitude no es recomendable para actualizaciones del sistema entre distribuciones del sistema Debian
stable (estable) tras la publicación de una distribución nueva .
• Está recomendado la utilización de «apt full-upgrade» o «apt-get dist-upgrade». Ver el Error #411280.
La orden aptitude algunas veces recomienda la eliminación masiva de paquetes para la actualización del sistema Debian testing (pruebas) o unstable (inestable).
• Esta situación ha aterrado a muchos administradores de sistema. No se asuste.
• Parece causado principalmente por la distorsión de dependencias o recomendaciones de paquetes por metapaquetes como gnome-core.
• Se resuelve eligiendo «Cancel pending actions» en el menú de órdenes de aptitude, saliendo de aptitude
y utilizando «apt full-upgrade».
Page 82
Guía de referencia de Debian54 / 267
Las órdenes apt-get y apt-cache son las herramientas más básicas basadas en APT para la gestión de paquetes
.
apt-get y apt-cache ofrecen únicamente interfaz de usuario por línea de órdenes.
apt-get es más adecuado para la actualización principal del sistema entre distribuciones, etc.
apt-get tiene un motor robusto para la resolución de dependencias entre los paquetes.
apt-get necesita menos recursos hardware. Utiliza menos memoria y se ejecuta más rápido.
apt-cache tiene un sistema estándar de búsqueda que utiliza expresiones regulares sobre el nombre y la des-
cripción del paquete.
apt-get y apt-cache permiten gestionar varias versiones de mismo paquete utilizando /etc/apt/preferences
aunque es bastante difícil de manejar.
La orden apt es un interfaz de alto nivel para la gestión de paquetes desde la línea de órdenes. Es un recubrimiento
de apt-get, apt-cache y órdenes parecidas ideado para que las utilice el usuario final y mejorar por defecto
algunas opciones de uso interactivo.
apt tiene una barra de progreso cuando se instalan paquetes mediante apt install.
por defecto apt borra los paquetes .deb descargados en la caché después de instalarlos con éxito
sugerencia
Se recomienda la utilización de la nueva orden apt(8) para el uso interactivoy utilizar apt-get(8) y
apt-cache(8) para los archivos de órdenes.
La orden aptitude es la herramienta de gestión de paquetes basada en APT más flexible.
aptitude tiene un interfaz de usuario interactivo a pantalla completa.
aptitude también posee un interfaz de usuario por línea de órdenes.
aptitude esta más pensado para operaciones de la gestión diaria interactiva de paquetes como examinar los
paquetes instalados y buscar entre los paquetes disponibles.
aptitude necesita más recursos hardware. Utiliza más memoria y es más lenta en ejecución.
aptitude tiene un sistema de búsqueda mejorado basado en expresiones regulares sobre metainformación de
paquetes.
aptitude permite gestionar múltiples versiones de paquetes sin utilizar /etc/apt/preferences y es muy
intuitivo.
2.2.2.Operaciones básicas de gestión de paquetes utilizando la línea de órdenes
Aquí están algunas operaciones básicas para la gestión de paquetes por medio de la línea de órdenes utilizando
apt(8), aptitude(8) y apt-get(8) /apt-cache(8).
apt / apt-get y aptitude se pueden mezclar sin más problemas.La orden «aptitude why expresión_regular» puede mostrar mas información si se utiliza «aptitude -v
why expresión_regular». Utilizando «apt rdepends paquete» o «apt-cache rdepends paquete» se
puede obtener información parecida.
Cuando se ejecuta la orden aptitude en modo de línea de órdenes y aparece algún problema como un conflicto
entre paquetes, si pulsa la tecla «e» como respuesta al cursor puede cambiar al modo interactivo a pantalla completa.
instala la versión candidata del paquete «foo» y sus
dependencias
actualiza los paquetes ya instalados a las nuevas versiones
candidatas sin eliminar ningún paquete
instala nuevas versiones candidatas de paquetes instalados
mientras elimina los paquetes si es necesario
elimina el paquete «foo» sin eliminar sus archivos de
configuración
elimina los paquetes autoinstalados que ya no son necesarios
apt-get
purge
elimina el paquete «foo» y sus archivos de configuración
foo
apt-get
clean
apt-get
autoclean
limpia por completo el repositorio local de los archivos de
paquetes descargados
limpia el repositorio local de los archivos de paquetes
descargados que son obsoletos
apt-cache
show
muestra información detallada sobre el paquete «foo»
foo
apt-cache
search
busca paquetes que concuerden con expresión_regular
expresión_regular
N/A
N/A
apt-mark
showmanual
argumenta la razón por la que el paquete que concuerda con la
expresión_regular debe instalarse
argumenta la razón por la que el paquete que concuerda con la
expresión_regular no debe instalarse
lista los paquetes instalados manualmente
Cuadro 2.6: Operaciones básicas de gestión de paquetes utilizando la línea de órdenes apt(8), aptitude(8) y
apt-get(8)/apt-cache(8)
Page 84
Guía de referencia de Debian56 / 267
nota
Aunque la orden aptitude proporciona funcionalidades sofisticadas como un mejor motor de resolución de dependencias de paquetes, su complejidad ha causado (y todavía puede causar) algunos problemas como el Error
#411123, el Error #514930 y el Error #570377. En caso de duda, por favor, utilice las órdenes apt, apt-get y
apt-cache en vez de la orden aptitude.
Puede añadir opciones después de la orden «aptitude».
opción de la ordendescripción
-ssimula el resultado de la orden
-ddescarga únicamente pero no instala o actualiza
-D
Cuadro 2.7: Opciones más importantes de la orden aptitude(8)
Para más información consulte aptitude(8) y «aptitude user’s manual» en «/usr/share/doc/aptitude/README».
muestra aclaraciones breves antes de la instalación o
eliminación automáticos
2.2.3.Uso interactivo de aptitude
Para la administración de paquetes interactivos, inicia aptitude en modo interactivo desde el indicador de shell de
la consola de la siguiente manera.
$ sudo aptitude -u
Password:
Con esto actualiza la copia local del archivo y muestra la relación de paquetes en un menú a pantalla completa. La
configuración de aptitude está en «~/.aptitude/config».
sugerencia
Si deseas utilizar la configuración de root en lugar de la de usuario, utiliza ”sudo -H aptitude ...” en lugar
de ”sudo aptitude ...” en la expresión anterior.
sugerencia
Aptitude automáticamente ejecuta las acciones pendientes como si hubiera empezado en modo interactivo.
Si esto no le gusta, puede inicializarlo desde el menú: «Acción» → «Cancelar las acciones pendientes».
2.2.4.Combinaciones de teclado en aptitude
Las pulsaciones de teclas notables para examinar el estado de los paquetes y establecer la ”acción planificada” en
ellos en este modo de pantalla completa son las siguientes.
La especificación del nombre de archivo de la línea de comandos y el mensaje del menú después de presionar ”l ” y
”// ” toman la expresión regular de aptitude como se describe a continuación. Aptitude regex puede hacer coincidir
explícitamente un nombre de paquete utilizando una cadena iniciada por ” ~n” y seguida del nombre del paquete.
sugerencia
Necesita pulsar «U» para hacer que todos los paquetes se actualicen a la versión candidata en el interfaz visual.
De otra manera solo los paquetes seleccionados y otros que son dependencias de versiones de estos son actualizados a la versión candidata.
Page 85
Guía de referencia de Debian57 / 267
teclafunción
F10 o Ctrl-tmenú
?
F10 → Ayuda → Manual de usuariomuestra el Manual de Usuario
uactualiza la información de archivo del paquete
+marca el paquete para que se actualice o instale
-
_
=coloque el paquete en hold
U
g
qsale de la pantalla actual y guarda los cambios
xsale de la pantalla actual sin guardar los cambios
Intromuestra la información de un paquete
Cmuestra el registro de cambios del paquete
lcambia el número de paquetes que se muestran
/busca el primer encaje
\repite la última búsqueda
muestra la ayuda de las combinaciones de teclas (una relación
más completa)
marca el paquete para que se elimine (mantiene los archivos de
configuración)
marca el paquete para purgarlo (borra los archivos de
configuración)
marca todos los paquetes actualizables (funciona como
full-upgrade)
comienza la descarga y la instalación de los paquetes
seleccionados
Cuadro 2.8: Relación de combinaciones de teclado de aptitude
2.2.5.Visualización de paquetes en aptitude
En el modo interactivo de pantalla completa de aptitude(8), se muestran los paquetes en la lista de paquetes como
en el siguiente ejemplo.
idAlibsmbclient-2220kB 3.0.25a-13.0.25a-2
El significado de izquierda a derecha de la fila es el siguiente.
La bandera del «estado actual« (primera letra)
La bandera de la «acción planeada« (segunda letra)
La bandera «automática« (tercera letra)
El nombre del paquete
La variación del espacio de disco usado según la «acción planeada«
La versión actual del paquete
La versión candidata del paquete
sugerencia
La lista completa de indicadores aparece en la parte inferior de la pantalla Ayuda que se muestra pulsando ”?”.
La versión candidata se elige de acuerdo a la configuración local del equipo (ver apt_preferences(5) y Sección2.7.7).
Existen diferentes formas de mostrar los paquetes en la opción de menú «Vistas».
Page 86
Guía de referencia de Debian58 / 267
vistadescripción de la vista
Vista del paquetever Tabla2.10 (por defecto)
relación de paquete que se recomiendan por algún
Recomendaciones de auditoría
Relación plana de paquetes
Buscador de etiquetas
Vista del Paquete Fuentelista de paquetes agrupados por paquetes fuente
Cuadro 2.9: Relación de vistas en aptitude
nota
Por favor, ¡ayúdenos mejorando el marcado de paquetes con debtags!
La vista estándar «Vista de paquetes» los clasifica en cierto modo como dselect con algunas funcionalidades
extra.
paquete marcado para instalación pero sin instalar
por el momento
relación de paquetes sin clasificar (para usar con
expresiones regulares)
relación de paquetes clasificados de acuerdo a sus
etiquetas Debian (debtags)
categoríadescripción de la vista
Paquetes actualizables
Nuevos paquetes, ,
Paquetes instalados, ,
Paquetes no instalados, ,
Paquetes creados localmente y
obsoletos
Paquetes virtualesrelación de paquetes con la misma función
Tareas (tasks)
Cuadro 2.10: La clasificación de la vista de paquetes estándar
sugerencia
La vista de tareas puede usarse para realizar una selección de paquetes para sus tareas.
la relación organizada de paquetes según sección → área →
paquete
, ,
relación de paquetes con diferentes funciones que normalmente
son necesarios para una tarea
2.2.6.Opciones del método de búsqueda con aptitude
Aptitude ofrece varias opciones para la búsqueda de paquetes usando su fórmula de expresiones regulares.
Línea de órdenes del intérprete de órdenes:
• «aptitude search 'expresión_regular_de_aptitude'» enumera el estado de instalación, nombre del
paquete y descripción corta de los paquetes que encajan
• «aptitude show 'nombre_del_paquete'» muestra la descripción detallada del paquete
Modo interactivo de pantalla completa:
• ”l” para limitar la vista de los paquetes a los paquetes coincidentes
• «/» para buscar los paquetes que encajan
Page 87
Guía de referencia de Debian59 / 267
• «\» busca hacia atrás el paquete que encaja
• «n» para encontrar el siguiente
• «N» para buscar el siguiente (hacia atrás)
sugerencia
La cadena del nombre_del_paquete se trata como el encaje exacto de la cadena al nombre del paquete al menos
que empiece explícitamente con «~» para ser un fórmula de expresión regular.
2.2.7.La fórmula de la expresión regular de aptitude
La fórmula de expresiones regulares de aptitud es ERE extendida similar a mutt (ver Sección1.6.2) y los significados
de la coincidencia especial específica aptitude Las extensiones de regla son las siguientes.
La parte regex es la misma ERE que la utilizada en las típicas herramientas de texto tipo Unix utilizando ”^”, ”.
*”, ”$” etc. como en egrep(1), awk(1) y perl(1).
La dependencia tipo es una de (depende, predepende, recomienda, sugiere, entra en conflicto, reemplaza, proporciona) especificando la interrelación del paquete.
El tipo de dependencia por defecto es «depends«.
sugerencia
Cuando el patrón_de_la_expresión_regular es la cadena «null«, coloca inmediatamente después de la orden «~T».
Aquí hay algunos atajos.
«~Ptérmino» == «~Dprovides:término»
«~Ctérmino» == «~Dconflicts:término»
«…~W término» == «(…|término)»
Los usuarios familiarizados con mutt se adaptan rápidamente, ya que mutt fue la inspiración para la sintaxis de las expresiones. Consulte ”BÚSQUEDA, LIMITACIÓN Y EXPRESIONES” en el ”Manual del usuario” ”/usr/share/doc/aptitude/README.”.
nota
Con la versión de lenny de aptitude(8), la nueva sintaxis en formato largo como «?broken» se puede usar
de forma equivalente para el uso de expresiones regulares en lugar de la anterior formato corto «~b». Ahora se
considera el carácter de espacio « » como uno de los caracteres de finalización de la expresión regular al igual
que la tilde «~». Ver el «Manual de Usuario« para la nueva sintaxis de formato largo.
2.2.8.Resolución de dependencias en aptitude
La selección de un paquete con aptitude no marca únicamente los paquetes definidos en su relación de «dependencias:»
sino también aquellos en la relación de «Recomendados:» si la opción «F10 → Options → Preferences → Dependency handling« esta configurada de esa manera. Estos paquetes instalados de forma automática se eliminan de
forma automatizada por aptitude si no se van a necesitar en el futuro.
La bandera que controla la ”autoinstalación” del comando aptitude también puede manipularse utilizando el comando apt-mark(8) del paquete apt.
Page 88
Guía de referencia de Debian60 / 267
descripción de las reglas extendidas de
encaje
fórmula de la expresión regular
nombre del paquete que encaja~nnombre_de_la_expresión_regula
encaja en la descripción~ddescripcion_de_la_expresión_regular
nombre de la tarea que encaja~texpresión_regular_de_tareas
encaja con las debtag~G
expresion_regular_de_etiquetas
encaja con el desarrollador~mexpresión_regular_del_desarrollador
encaja con la sección del paquete~sexpresión_regular_de_sección
encaja con la versión del paquete~Vexpresión_regular_de_la_versión
encaja con la distribución~A{bookworm,trixie,sid}
encaja con el origen~O{debian,…}
encaja con la prioridad~p{extra,important,optional,required,standard
}
encaja con los paquetes esenciales~E
encaja con paquetes virtuales~v
encaja con nuevos paquetes~N
encaja con acciones pendientes~a{install,upgrade,downgrade,remove,purge,hold,keep}
encaja con paquetes instalados~i
encaja con paquetes marcados con
A-mark (paquetes auto-instalados)
~M
encaja con paquetes instalados sin la
marca A (paquetes seleccionados por el
~i!~M
administrador)
encaja con paquetes instalados y que se
pueden actualizar
encaja con paquetes eliminados pero no
purgados
encaja con paquete eliminados y purgados
o que se pueden eliminar
encaja con paquetes que declaran una
dependencia rota
encaja con paquetes que declaran una
dependencia rota de un tipo
encaja el patrón sobre paquetes que
tienen una dependencia tipo
encaja el patrón con paquetes que tienen
una dependencia rota de tipo
~U
~c
~g
~b
~Btype
~D[tipo:]patrón
~DB[tipo:]patrón
encaja con paquetes en los cuales el
patrón encaja con paquetes que declaran
~R[tipo:]patrón
una dependencia tipo
coinciden con paquetes a los que el
paquete coincidente patrón declara
~RB[escribe:]patrón
dependencia rota tipo
encaja con los paquetes con los que los
paquetes instalados tienen dependencias
encaja con los paquetes que no dependen
de ningún paquete instalado
~R~i
!~R~i
encaja con los paquete que dependen o
son recomendados por otros paquetes
~R~i|~Rrecommends:~i
instalados
encaja con los paquetes según el patrón
filtrados por la versión
~S filtro patrón
encaja con todos los paquetes (verdad)~T
no encaja con ningún paquete (falso)~F
Cuadro 2.11: Relación de fórmulas de expresiones regulares de aptitute
Page 89
Guía de referencia de Debian61 / 267
archivocontenido
/var/log/dpkg.log
/var/log/apt/term.logRegistro de acciones genéricas APT
/var/log/aptitudeRegistro de acciones de la orden aptitude
Cuadro 2.12: Los archivos de registro de acciones sobre paquetes
Registra la actividad a nivel de dpkg para todas las acciones
sobre paquetes
2.2.9.Registro de la actividad de los paquetes
Puede comprobar el historial de actividad del paquete en los archivos de registro.
En realidad, no es fácil conseguir una comprensión rápida de estos registros. La manera más fácil se explica en
Sección9.3.9.
2.3.Ejemplos de operaciones con aptitude
A continuación se muestran algunos ejemplos de
aptitude
(8) en acción.
2.3.1.Buscando paquetes interesantes
Se pueden buscar los paquetes que cumplan sus requisitos con aptitude bien en base a la descripción del paquete
o con la relación de «Tareas«.
2.3.2.Enumera los paquetes cuyos nombres encajan con la expresión regular
Las órdenes siguientes enumeran los paquetes cuyos nombres encajan con la expresión regular.
$ aptitude search '~n(pam|nss).*ldap'
p libnss-ldap - NSS module for using LDAP as a naming service
p libpam-ldap - Pluggable Authentication Module allowing LDAP interfaces
Es bastante útil para encontrar el nombre exacto de un paquete.
2.3.3.Navega por la relación de paquetes que encajan con la expresión regular
La expresión regular ”~dipv6” en la vista ”Nueva lista plana de paquetes” con la indicación ”l”, limita la vista a los
paquetes con la descripción coincidente y permite examinar su información de forma interactiva.
2.3.4.Purga los paquetes eliminados definitivamente
Se pueden borrar todos los archivos de configuración de los paquetes eliminados.
Compruebe los resultados del siguiente comando.
# aptitude search '~c'
Si estás seguro de que los paquetes enumerados deben eliminarse por completo, ejecuta el siguiente comando.
# aptitude purge '~c'
Page 90
Guía de referencia de Debian62 / 267
Puede hacer lo mismo en modo interactivo para tener un control más detallado.
En la «Nueva Vista de Paquetes«, puede añadir una expresión regular a «~c» con el cursor «|». Esto limita los
paquetes que se visualizan a únicamente los que encajan con la expresión regular, esto es, «eliminado pero no
purgado«. Todos estos paquetes que encajan con la expresión regular se mostrarán al presionar «[» en la cabecera
de más alto nivel.
Entonces, pulse «_» en la cabecera de mayor nivel como «Paquetes no instalados«. Solo los paquetes que encajan
con el patrón de la expresión regular bajo dicho encabezado se marcarán para ser purgados. Usted puede no incluir
algunos paquetes de la purga presionando «=» de forma manual sobre cada uno de ellos.
Esta técnica es bastante útil y funciona para muchas teclas de órdenes.
2.3.5.Estado de instalación ordenado de forma automática/manual
A continuación mostraremos como mantenemos en orden el estado de instalación de los paquetes (después de
realizar instalaciones sin usar aptitude etc.).
1. Lance aptitude en modo interactivo como «root«.
2. Pulse «u», «U», «f» y «g» para actualizar la relación de paquetes y los paquetes.
3. Pulse «l» para acceder a la pantalla de los paquetes limitandolos a «~i(~R~i|~Rrecommends:~i)» y pulse
«M» sobre «Paquetes I» como auto instalados.
4. Pulse «l» para acceder a la pantalla de paquetes limitados como «~prequired|~pimportant|~pstandard|~E»
y pulse «m» sobre «Paquetes Instalados» como instalados de forma manual.
5. Escribe ”l” para entrar en el límite de la visualización de los paquetes como ”~i!~M” y elimina los paquetes no
utilizados escribiendo ”-” sobre cada uno de ellos después de exponerlos escribiendo ”[” sobre los ”Paquetesinstalados”.
6. Pulse «|», para entrar en la pantalla de paquetes limitada por «~i»; entonces pulse «m» sobre Tareas», para
marcar aquellos paquetes instalados manualmente.
7. Salir de aptitude.
8. Ejecute «apt-get -s autoremove|less» como superusuario para comprobar lo que no usa.
9. Reinicie aptitude en modo interactivo y marque los paquetes que necesite con «m».
10. Volver a ejecutar «apt-get -s autoremove|less» como superusuario para volver a comprobar que solo
ha ELIMINADO los paquetes que deseaba.
11. Ejecute «apt-get autoremove|less» como superusuario para eliminar los paquetes sin uso.
La acción «m» sobre «Tasks» es opcional y se usa para evitar la situación de eliminar paquetes de forma masiva en
el futuro.
2.3.6.Actualización mayor del sistema
nota
Cuando se cambia a una nueva distribución etc, se debe considerar implantar una instalación limpia del nuevo
sistema incluso cuando Debian es actualizable como se describe a continuación. Proporciona la oportunidad de
eliminar la basura almacenada y acceder a las mejores combinaciones de las últimas versiones de los paquetes.
Sin dudarlo, debería realizar una copia de respaldo completa del sistema a un lugar seguro (ver Sección10.2)
antes de hacerlo. Nosotros recomendamos crear un arranque dual en una partición diferente para realizar una
transición suave.
Page 91
Guía de referencia de Debian63 / 267
Puedes realizar una actualización de todo el sistema a una versión más reciente cambiando el contenido de la listade fuentes apuntando a una nueva versión y ejecutando el comando ”apt update; apt dist-upgrade”.
Para actualizar de stable (estable) a testing (pruebas) o unstable (inestable) durante el ciclo de publicación de
bookworm-como-estable, debes sustituir ”bookworm ” en la lista de fuentes por ejemplo de Sección2.1.5 con
”trixie” o ”sid”.
De hecho, se puede encontrar con algunas complicaciones debido a alguna transición entre paquetes, la mayor
parte debido a dependencias. Cuanto mayores es la actualización, más problemas importantes se puede encontrar.
Para la transición desde una distribución antigua de stable (estable) a la nueva stable (estable) después de
su publicación, puede leer las nuevas «Release Notes« y seguir el procedimiento concreto que se describe para
minimizar los problemas.
Cuando decide migrar de stable (estable) a testing (pruebas) después de una publicación formal, no existen
«Release Notes« de ayuda. La diferencia entre stable (estable) y testing (pruebas) puede ser bastante mayor
después de la liberación de una nueva distribución stable (estable) y la actualización se puede convertir en una
situación complicada.
Debería ser precavido cuando realiza un actualización completa y consultar la información actualizada sobre ello y
usar el sentido común.
1. Lea las anterior «Release Notes«.
2. Realice una copia de respaldo (o de seguridad) completa (especialmente los datos y las configuraciones).
3. Disponga de un medio alternativo de arranque por si falla el cargador de arranque.
4. Informe con anterioridad y de forma correcta a los usuarios.
5. Registre las operaciones de la actualización con script(1).
6. Para evitar su eliminación marque los paquetes que lo requieran como «sin marcado automático» (unmarkauto),
p. ej., «aptitude unmarkauto vim».
7. Minimize los paquetes instalados con el de minimizar la posibilidad de conflictos, p. ej., elimine los paquetes de
la tarea «Escritorio«.
8. Elimina el archivo ”/etc/apt/preferences” (desactiva apt-pinning).
9. Realice actualizaciones siguiendo los pasos de forma sensata: oldstable (vieja_estable) → stable (estable)
→ testing (pruebas) → unstable (inestable).
10. Actualiza la lista de fuentes para que apunte sólo al nuevo archivo y ejecuta ”aptitude update”.
11. Instale, opcionalmente, primero los nuevos paquetes fundamentales , p. ej., «aptitude install perl».
12. Ejecute la orden «apt-get -s dist-upgrade» para comprobar su efecto.
13. Finalmente , ejecute la orden «apt-get dist-upgrade».
atención
No es aconsejable omitir la distribución principal de Debian, la stable (estable), cuando se actualiza entre
distribuciones.
atención
En «Release Notes« anteriores, GCC, el núcleo de Linux , initrd-tools, Glibc, Perl, las herramientas APT,
etc. han necesitado una atención especial para la actualización mayor del sistema.
Para actualizar de forma diaria la versión unstable, ver Sección2.4.3.
Page 92
Guía de referencia de Debian64 / 267
2.4.Operaciones avanzadas de gestión de paquetes
2.4.1.Operaciones avanzadas de gestión de paquetes desde la línea de órdenes
A continuación puede encontrar otras operaciones de gestión de paquetes para las cuales aptitude es demasiada
abstracta o no posee la funcionalidad que se necesita.
nota
Para paquetes que sean multi-arch, puede necesitar especificar el nombre de la arquitectura para algunas órdenes.
Por ejemplo, use «dpkg -L libglib2.0-0:amd64» para enumerar el contenido del paquete libglib2.0-0
para la arquitectura amd64.
atención
Las herramientas de bajo nivel como «dpkg -i …» y «debi …» deben usarse con cuidado por el administrador del sistema. No tienen en cuenta de forma automática las dependencias entre paquetes. La
opción de la línea de órdenes «--force-all» y parecidas (ver dpkg(1)) están hechas para que las usen
únicamente usuarios expertos. Usarlas sin entender plenamente sus consecuencias puede corromper el
sistema entero.
Ten en cuenta lo siguiente.
Todas las órdenes de configuración e instalación necesitan ser ejecutadas por el superusuario.
A diferencia de aptitude que usa expresiones regulares (ver Sección1.6.2), otras órdenes para la gestión de
paquetes usan patrones como el intérprete de órdenes glob (ver Sección1.5.6).
apt-file(1) que está en el paquete apt-file necesita ejecutar previamente «apt-file update».
configure-debian(8) que está en el paquete configure-debian usa como su motor dpkg-reconfigure(8).
dpkg-reconfigure(8) ejecuta los archivos de órdenes de los paquetes usando como su motordebconf(1).
Los comandos ”
en la lista de fuentes.
dget(1), debuild(1) y debi(1) necesitan el paquete devscripts.
Consulte el procedimiento de (re)empaquetado mediante «apt-get source» en Sección2.7.13.
La orden make-kpkg necesita el paquete kernel-package (ver Sección9.10).
Para el empaquetado general ver Sección12.9.
apt-get build-dep
”, ”
apt-get source
” y ”
apt-cache showsrc
” requieren la entrada ”
2.4.2.Verificación de los archivos de un paquete instalado
deb-src
”
La instalación de debsums permite de la verificación de los archivos de los paquetes instalados comparando los
valores MD5sum en el archivo «/var/lib/dpkg/info/*.md5sums» con debsums(1). Para saber como funciona
MD5sum verSección10.3.5.
nota
Ya que la base de datos de MD5sum la puede alterar un intruso, debsums(1) su uso como herramienta de seguridad es limitada. Solo es aceptable para que el administrador compruebe modificaciones locales o daños producidos
por errores del medio de almacenamiento.
Page 93
Guía de referencia de Debian65 / 267
ordenacción
COLUMNS=120 dpkg -l
patrón_del_nombre_del_paquete
enumera el estado de los paquetes instalados para el informe de
errores
dpkg -L nombre_del_paqueteenumera el contenido de un paquete instalado
dpkg -L nombre_del_paquete |
egrep '/usr/share/man/man.*/.+'
dpkg -S
patrón_del_nombre_de_archivo
apt-file search
patrón_nombre_de_archivo
apt-file list
patrón_nombre_de_paquete
dpkg-reconfigure
nombre_del_paquete
dpkg-reconfigure -plow
package_name
relación las páginas del manual para un paquete instalado
enumera los paquetes instalados que tienen un archivo que
encaja con el patrón
enumera los paquetes en el repositorio que encajan con el
nombre de archivo
enumera el contenido de los paquetes del repositorio que
encajan
reconfigura el paquete dado
reconfigura el paquete dado realizando el mayor número de
preguntas
configure-debianreconfigura los paquetes desde el menú de pantalla completa
dpkg --audit
auditoría del sistema referente a paquete instalados
parcialmente
dpkg --configure -aconfigura todos los paquetes instalados parcialmente
apt-cache policy
nombre_del_paquete_binario
apt-cache madison
nombre_del_paquete
apt-cache showsrc
nombre_del_paquete_binario
apt-get build-dep
nombre_del_paquete
aptitude build-dep
nombre_del_paquete
apt-get source
nombre_del_paquete
muestra la versión, la prioridad y la información del repositorio
de un paquete binario
muestra la versión disponible y la información del repositorio de
un paquete
muestra la información del paquete fuente que corresponde con
el paquete binario
instala los paquetes requeridos para construir el paquete
instala los paquetes requeridos para construir el paquete
descarga la fuente (desde el repositorio estándar)
dget URL del archivo dscdescarga el código del paquete (desde otro repositorio)
dpkg-source -x
nombre_del_paquete_version-versión_de_debian.dsc
construye el árbol de las fuentes para un conjunto de paquetes
fuente («orig.tar.gz» y «debian.tar.gz»/«*.diff.gz»)
debuild binaryconstruye el/los paquete(s) desde un árbol de fuentes locales
make-kpkg kernel_imageconstruye el paquete del núcleo desde el árbol fuente del kernel
construye el paquete del núcleo desde el árbol fuente de este
con initramfs activado
instala un paquete local en el sistema
instala un paquete local en el sistema y trata de resolver de
forma automática sus dependencias
instala el(los) paquete(s) locales en el sistema
guardar información de estado de selección de nivel de paquete
dpkg
asigna la información de estado de selección de nivel del
paquete dpkg
establecer el estado de selección del paquete a nivel dpkg para
un paquete hold (equivalente a ”aptitude holdpackage_name”)
Cuadro 2.13: Relación de operaciones avanzadas con paquetes
Page 94
Guía de referencia de Debian66 / 267
2.4.3.Protección frente a problemas con paquetes
Muchos usuarios prefieren seguir las versiones testing (pruebas) (o unstable (inestable)) del sistema Debian por
sus nuevas características y paquetes. Esto hace que el sistema sea más propenso a sufrir fallos críticos en los
paquetes.
La instalación del paquete apt-listbugs protege el sistema contra errores críticos comprobando estos de forma
automática BTS de Debian cuando se actualiza mediante el sistema APT.
La instalación del paquete apt-listchanger aporta noticias importantes en «NEWS.Debian» cuando se actualiza
mediante el sistema APT.
2.4.4.Buscando metadatos en los paquetes
Aunque al visitar la página de Debian https://packages.debian.org/ facilita formas fáciles de buscar en los metadatos
del paquete en estos días, veamos otras formas más tradicionales.
Las órdenes grep-dctrl(1), grep-status(1) y grep-available(1) se pueden usar para buscar cualquier archivo que tenga el formato general de un archivo de control de paquetes de Debian.
«dpkg -S patrón_de_archivo_de_nombres» se puede usar para buscar nombres de paquetes que contengan
archivos que coincidan con el nombre instalado por dpkg. Pero pasa por alto los archivos creados por los scripts de
mantenimiento.
Si necesita realizar búsquedas más elaboradas de metadatos de dpkg , necesita ejecutar la orden «grep -e regex_pattern*» en el directorio «/var/lib/dpkg/info/». Esto realiza búsquedas de las palabras mencionadas en los archivos
de órdenes de los paquetes y textos de preguntas de la instalación.
Si desea realizar búsquedas recursivas en dependencias de paquetes , debería usar apt-rdepends(8).
2.5.Gestión interna de los paquetes Debian
Aprendamos como funciona internamente el sistema de paquetes Debian. Esto puede ayudar a encontrar su propia
solución en algunos problemas con paquetes.
2.5.1.Metadatos de archivos
Los metadatos de archivos para cada distribución se almacenan en «dist/codename» en cada sitio espejo de
Debian , p. ej., «http://deb.debian.org/debian/». La estructura del repositorio se puede navegar con un
navegador web. Existen seis tipos de metadatos clave.
En el archivo reciente, estos metadatos se almacenan como los archivos comprimidos y diferencial para reducir
tráfico de red.
2.5.2.Archivo «Release» del nivel superior y autenticación
sugerencia
El archivo de la raíz «Release» se usa para firmar el repositorio del sistema seguro APT.
Cada versión del archivo de Debian tiene un fichero de nivel superior ”Release”,por ejemplo, ”http://deb.debian.org/debian/dists/unstable/Release”,
como sigue.
Page 95
Guía de referencia de Debian67 / 267
archivoubicacióncontenido
DistribuciónAlto de la distribución
Release.gpgAlto de la distribución
Contenido-arquitecturaAlto de la distribución
Distribución
raíz de cada combinación de
distribución/área/arquitectura
raíz de cada combinación
Paquetes
distribución/área/arquitecturabinaria
Fuentes
raíz de cada combinación
distribución/área/fuente
descripción del archivo e información de
integridad
archivo de firma para el archivo firmado
«Release» con el archivo llave
relación de todos los archivos para todos
los paquetes en el repositorio pertinente
descripción de archivo usado para la
regla de apt_preferences(5)
concatenado de debian/control para
paquetes binarios
concatenado de debian/control para
paquetes fuente
Cuadro 2.14: El contenido de metadatos del repositorio Debian
Origin: Debian
Label: Debian
Suite: unstable
Codename: sid
Date: Sat, 14 May 2011 08:20:50 UTC
Valid-Until: Sat, 21 May 2011 08:20:50 UTC
Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips ←-
mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian x.y Unstable - Not Released
MD5Sum:
Aquí, puede encontrar la razón de ser entre la «versión« y el «nombre en clave« en Sección2.1.5. «Distribución«
se utiliza cuando se refiere a la «versión« y «nombre en clave«. Todos los nombres de ”áreas” de archivo que
ofrece el archivo se enumeran en ”Componentes”.
La integridad del archivo de nivel superior ”Release” se verifica mediante una infraestructura criptográfica denominada secure apt, tal y como se describe en apt-secure(8).
El archivo de firma criptográfica «
Release.gpg
» se crea desde el auténtico archivo «
Release
» de la raíz y el
archivo de la clave secreta Debian.
Las claves del archivo público de Debian se instalan localmente mediante el último paquete debian-archive-keyring.
El sistema secure APT verifica automáticamente la integridad del fichero descargado de nivel superior ”Release”
criptográficamente mediante este fichero ”Release.gpg” y las claves públicas del archivo de Debian instaladas
localmente.
La integridad de todos los archivos «Packages» y «Sources» se verifican usando valores MD5sum del archivo
raíz «Release». La integridad de todos los archivos de paquetes se comprueban usando los valores de MD5sum
en los archivos«Packages» and «Sources». Ver debsums(1) y Sección2.4.2.
Page 96
Guía de referencia de Debian68 / 267
Ya que la verificación de la firma criptográfica es un proceso intensivo en uso de la CPU, el uso del valor MD5sum
para cada paquete mientras se usa el archivo de firma criptográfica de la raíz «Release» proporciona buena
seguridad y eficiencia (ver Sección10.3).
Si la entrada lista de fuentes especifica la opción ”firmado por”, la integridad del archivo de nivel superior
”Release” descargado se verifica utilizando la clave pública especificada. Esto es útil cuando la lista de fuentes
contiene archivos que no son Debian.
sugerencia
El uso del comando apt-key(8) para la gestión de claves APT está obsoleto.
También puedes verificar manualmente la integridad del fichero ”Release” con el fichero ”Release.gpg” y la clave
pública del archivo Debian publicada en ftp-master.debian.org usando gpg.
2.5.3.Archivos «Release» a nivel de archivo
sugerencia
Los archivos “
Release
” a nivel de fichero se usan para la regla
apt_preferences
(5).
Existen ficheros a nivel del archivo ”Release” para todas las ubicaciones del archivo especificadas por la listade fuentes, como ”http://deb.debian.org/debian/dists/unstable/main/binary-amd64/Release” o
”http://deb.debian.org/debian/dists/sid/main/binary-amd64/Release”, como se indica a continuación.
Archive: unstable
Origin: Debian
Label: Debian
Component: main
Architecture: amd64
atención
Para la etiqueta «Archive:» , los nombres de distribución (stable (estable), testing (pruebas),
unstable (inestable), …) se utilizan en el repositorio Debian mientras que los nombres de publicación
(«trusty», «xenial», «artful», …) se utilizan en el repositorio Ubuntu.
Para algunos archivos, como experimental, y bookworm-backports, que contienen paquetes que no deben instalarse automáticamente, hay una línea extra, por ejemplo, ”http://deb.debian.org/debian/dists/experimental/main/binary-amd64/Release”
como sigue.
Tenga en cuenta que los repositorios normales sin «NotAutomatic: yes», el valor por defecto de la prioridad de
instalación (Pin-Priority) es 500, mientras que en los repositorios especiales con «NotAutomatic: yes», el valor
por defecto de la prioridad de instalación (Pin-Priority) es 1 (ver apt_preferences(5) y Sección2.7.7).
Page 97
Guía de referencia de Debian69 / 267
2.5.4.Actualizando la meta información de los paquetes
Cuando se usan herramientas APT, como aptitude, apt-get, synaptic, apt-file, auto-apt, ..., necesitamos actualizar las copias locales de los metadatos que contienen la información del archivo Debian. Estas copias
locales tienen los siguientes nombres que corresponden a los nombres especificados para: distribución, área
y arquitectura en la lista de fuentes (ver Sección2.1.5).
Los 4 primeros tipos de archivos son compartidos por todos los comandos APT pertinentes y actualizados desde la
línea de comandos mediante ”apt-get update” o ”aptitude update”. Los metadatos ”Paquetes” se actualizan
si se especifica ”deb” en la lista de fuentes. Los metadatos ”Fuentes” se actualizan si se especifica ”deb-src” en
la lista de fuentes.
La metainformación de los «paquetes» y de las «fuentes» contienen el campo «Filename:» que apunta a la
ubicación del archivo de los paquetes fuente y binarios. En este momento, estos paquetes se ubican en el subárbol
del directorio «pool/» para mejorar la transición entre distribuciones.
Se pueden realizar búsquedas interactivas en las copias locales de la metainformación de los «paquetes» mediante
la orden aptitude. La orden de búsqueda especializada grep-dctrl(1) puede buscar metainformación en las
copias locales de los «paquetes» y las «fuentes».
La copia local de los metadatos ”Contents-architecture” se puede actualizar con ”apt-file update” y su
ubicación es diferente de las otras 4 . Ver apt-file(1). (El auto-apt usa una ubicación diferente para la copia
local de ”Contents-architecture.gz” por defecto)
2.5.5.Estado del paquete para APT
Además de acceder de forma remota a la metainformación, desde lenny, la herramienta APT almacena la información local referente al estado de la instalación en «/var/lib/apt/extended_states» el cual usan el resto de
herramientas APT para realizar el seguimiento de todos los paquetes autoinstalados.
2.5.6.El estado del paquete en aptitude
Además de acceder de forma remota a la metainformación, la orden aptitude almacena el estado de la instalación
de forma local en «/var/lib/aptitude/pkgstates» y este es usado únicamente por aptitude.
2.5.7.Copias locales de los paquetes descargados
Todos los paquetes descargados de forma remota mediante APT se almacenan en «/var/cache/apt/archives»
hasta que se limpia.
Esta política de limpieza de los archivos de la caché para aptitude se puede configurar en ”Opciones” → ”Preferencias”
y se puede forzar por su menú ”Limpiar caché de los paquetes” o ”Limpiar los archivos obsoletos”
en ”Acciones”.
Page 98
Guía de referencia de Debian70 / 267
tipo de paqueteestructura del nombre
El paquete binario (apodado deb)nombre_del_paquete_versión_actual-debian-versión_arquitectura.deb
El paquete binario para el instalador de
debian (apodado udeb)
Paquete de código fuente (código fuente
ascendente)
El paquete fuente 1.0 (cambios Debian)nombre_del_paquete_versión_actual-debian-versión.diff.gz
El paquete fuente 3.0 (quilt) (cambios
de Debian)
El paquete fuente (descripción)nombre_del_paquete_versión_actual-debian-versión.dsc
Cuadro 2.15: La estructura del nombre de los paquetes Debian
Cuadro 2.16: Los caracteres permitidos en cada campo del nombre del paquete en Debian
nota
Se puede comprobar el orden de las versiones de los paquetes con la ordendpkg(1), p. ej., «dpkg
--compare-versions 7.0 gt 7.~pre1 ; echo $?» .
nota
El instalador debian (d-i) usa la extensión de archivo udeb para sus paquetes binarios en vez de la normal deb.
Un paquete udeb es una versión reducida de un paquete deb a la cual se le han eliminado los contenidos no
esenciales como la documentación con el fin de ahorrar espacio mientras se relajan los requisitos de la directriz
de los paquetes. Ambos paquetes, deb y udeb, comparten la misma estructura de paquetes. La «u» tiene el
significado de micro.
Caracteres disponibles
(expresión regular)
existencia
2.5.9.La orden dpkg
dpkg(1) es la herramienta de más bajo nivel para la gestión de paquetes Debian. Es una herramienta muy poderosa
y por tanto es necesario usarla con cuidado.
Al instalar el paquete llamado ”package_name”, dpkg lo procesa en el siguiente orden.
1. Desempaqueta el archivo deb (equivale a «ar -x»)
El sistema debconf proporciona una interacción de usuario estandarizada con compatibilidad con I18N y L10N
(Capítulo8).
archivodescripción del contenido
/var/lib/dpkg/info/nombre_del_paquete.conffiles
/var/lib/dpkg/info/nombre_del_paquete.listrelación de archivos y directorios instalados por el paquete
/var/lib/dpkg/info/nombre_del_paquete.md5sums
/var/lib/dpkg/info/nombre_del_paquete.preinst
/var/lib/dpkg/info/nombre_del_paquete.postinst
/var/lib/dpkg/info/nombre_del_paquete.prerm
/var/lib/dpkg/info/nombre_del_paquete.postrm
/var/lib/dpkg/info/nombre_del_paquete.configarchivo de órdenes para el sistema debconf
/var/lib/dpkg/alternatives/nombre_del_paquete
/var/lib/dpkg/availablela información disponible para todo el paquete
/var/lib/dpkg/diversions
/var/lib/dpkg/statoverride
/var/lib/dpkg/statusla información del estado de todos los paquetes
/var/lib/dpkg/status-old
/var/backups/dpkg.status*
relación de archivos de configuración (modificables por el
usuario)
relación de resumen criptográfico MD5 de los archivos
instalados por el paquete
archivos de órdenes del paquete que se ejecutan antes de su
instalación
archivo de órdenes que se ejecutan después de la instalación
del paquete
archivo de órdenes del paquete que se ejecuta antes de la
eliminación del paquete
archivo de órdenes del paquete para ser ejecutada después de
la eliminación del paquete
la información alternativa usada por la orden
update-alternatives
la información de la ubicación alternativa usada por dpkg(1) y
asignada por dpkg-divert(8)
la información estadística manual utilizada por dpkg(1) y
asignada por dpkg-statoverride(8)
la copia de seguridad de la primera generación del archivo
”var/lib/dpkg/status”
el segundo juego de copias de respaldo y anteriores del archivo
«var/lib/dpkg/status»
Cuadro 2.17: Los archivos destacados creados por dpkg
El archivo «status» además lo utilizan herramientas como dpkg(1), «dselect update» y «apt-get -u dselect-upgrade».
El comando de la búsqueda especializada grep-dctrl(1) puede buscar las copias locales de los metadatos ”status”
y ”disponible”.
sugerencia
En el entorno del instalador de debian, la orden udpkg se usa para abrir los paquetes udeb. La orden udpkg es
una versión reducida de la orden dpkg.
2.5.10.La orden update-alternatives
En sistema Debian existe un mecanismo para tener instalados a la vez varios programas que realizan la misma
función sin problemas usando update-alternatives(1). Por ejemplo, se pueden hacer que la orden vi seleccione
vim cuando se tienen instalados los paquetes tanto vim y nvi.
Page 100
Guía de referencia de Debian72 / 267
$ ls -l $(type -p vi)
lrwxrwxrwx 1 root root 20 2007-03-24 19:05 /usr/bin/vi -> /etc/alternatives/vi
$ sudo update-alternatives --display vi
...
$ sudo update-alternatives --config vi
Enter to keep the default[*], or type selection number: 1
El sistema «alternatives« de Debian mantiene un conjunto de enlaces simbólicos en «/etc/alternatives/». El
uso del proceso de selección se encuentran en los archivos de «/var/lib/dpkg/alternatives/».
2.5.11.La orden dpkg-statoverride
El cambio de permisos (Stat overrides) que se realiza mediante la orden dpkg-statoverride(8) es una manera
de conseguir quedpkg(1) use un propietario o unos permisos de uso diferentes para un archivo cuando se instala un
paquete. Si se especifica «--update» y el archivo existe , los nuevos permisos y propietario se cambian al instante.
atención
El cambio directo del propietario o modo de un archivo propiedad del paquete mediante los comandos
chmod o chown por parte del administrador del sistema se restablece en la siguiente actualización del
paquete.
nota
Hemos usado la palabra archivo en los párrafos anteriores, pero realmente estos cambios se pueden ser realizar
sobre cualquier objeto del sistema de archivos que gestione dpkg, incluidos directorios, dispositivos, etc.
2.5.12.La orden dpkg-divert
Las ubicaciones alternativas de un archivo que se realizan mediante la orden dpkg-divert(8) son una forma de
obligar a dpkg(1) de instalar un archivo en una ubicación alternativa y no en su ubicación por defecto. Los archivos
de órdenes de mantenimiento del paquete son los encargados del uso de dpkg-divert. Es una práctica en desuso
su utilización por el administrador del sistema.
2.6.Recuperación de un sistema
Cuando se ejecuta el sistema testing (pruebas) o unstable (inestable), se espera que el administrador recupere
la situación de administración de paquetes rotos.
atención
Algunos métodos descritos conllevan acciones muy peligrosas. ¡Está avisado!
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.