Introducción a Linux

Version imprimible
Este documento deber servir exclusivamente como material de apoyo
al contenido del curso interactivo accesible a través de internet.

Indice
Evaluación inicial...................................................................... 4
Presentación........................................................................... 5
Ejemplos................................................................................ 6
Módulo I. Introducción............................................................... 7
Introducción......................................................................... 7
Instalación........................................................................... 9
Historia.............................................................................. 11
Entornos de trabajo.............................................................. 14
Práctica: Consola................................................................. 21
Distribuciones...................................................................... 21
Autoevaluación: Distribuciones................................................. 24
Sopa de letras.................................................................... 25
Evaluación primera.................................................................. 26
Módulo II. Órdenes comunes..................................................... 27
Instrucciones habituales......................................................... 27
Sintaxis de las órdenes......................................................... 31
Autoevaluación: Comandos..................................................... 38
Práctica: Primeros comandos.................................................. 38
Sistema de ficheros.............................................................. 38
Instrucciones de ficheros........................................................ 45
Instrucciones de ficheros..................................................... 45
Inspeccionar.................................................................... 45

Plataforma de Teleformación de IFES Página 1 de 328
Crear............................................................................. 51
Modificar......................................................................... 55
Borrar.............................................................................55
Autoevaluación: Ficheros..................................................... 56
Práctica: Ficheros................................................................ 58
Instrucciones de texto........................................................... 58
Práctica: Manejo de texto....................................................... 68
Instrucciones útiles............................................................... 68
Búsqueda de archivos........................................................... 77
Empaquetado de archivos...................................................... 78
Autoevaluación: Órdenes comunes........................................... 79
Sopa de letras.................................................................... 80
Cuestionario de evaluación procesual........................................... 81
Evaluación segunda................................................................ 82
Módulo III. Órdenes avanzadas.................................................. 83
Redirecciones..................................................................... 83
Concatenar órdenes..............................................................92
Uso de variables.................................................................. 95
Uso de comillas................................................................... 96
Estructuras de control........................................................... 96
Autoevaluación: Comandos avanzados...................................... 98
Práctica: Comandos avanzados............................................... 99
Editores de texto.................................................................. 99
Sopa de letras................................................................... 102
Animación: opciones avanzadas - redirección............................. 102
Evaluación tercera................................................................. 103
Práctica final........................................................................ 104
Evaluación final.....................................................................105
Bibliografia........................................................................... 106
Glosario.............................................................................. 107
F.A.Q.................................................................................. 120

Página 2 de 328 Introducción a Linux
Introducción e información general.......................................... 120
Antes de la instalación......................................................... 123
Durante la instalación.......................................................... 133
Sobre LILO....................................................................... 139
Kernel / Núcleo.................................................................. 146
X-windows / Entornos gráficos................................................151
Administración................................................................... 158
Internet / Redes / Modems.................................................... 170
Comandos básicos..............................................................187
Apéndices (Conceptos básicos)................................................. 192
¿Qué es un sistema operativo?.............................................. 192
¿Qué es el software libre?.................................................... 193
¿Por qué usar software libre?................................................ 196
Licencias de software libre.................................................... 197
Internet y herramientas de red............................................... 253
Introducción a MySQL......................................................... 283
Grabación de cd´s.............................................................. 316
Programación en Bash......................................................... 320

Plataforma de Teleformación de IFES Página 3 de 328
Introducción a Linux

Evaluación inicial
Este recurso es de tipo Evaluación.
Debe conectarse a la plataforma para realizar la evaluación. Recuerde que las
evaluaciones son obligatorias ya que determinan la nota final.

Página 4 de 328 Introducción a Linux
Introducción a Linux

Presentación

Reciba la bienvenida al curso de Linux
Para aprender un sistema operativo como Linux es fundamental practicar mucho
su uso. Normalmente, cuando alguien empieza a aprender Linux se encuentra con
algunas aparentes dificultades (dónde está esto, cómo se accede a lo otro...) que
pueden hacernos desmotivarmos. Afortunadamente, en nuestro curso contamos con un
tutor que nos resolverá cualquier duda y tenemos un foro donde podremos compartir
experiencias con nuestros compañeros del curso.

No dudes en preguntar al tutor o escribir en el foro.

A continuación le pedimos que rellene la ficha de datos personales.

Después debe descargar el recurso llamado "ejemplos" del curso. Es muy importante
probarlo todo, hacer todos los ejercicios, modificarlos, probarlos, preguntar al tutor
cualquier duda o comentar las impresiones en el foro.

Plataforma de Teleformación de IFES Página 5 de 328
Introducción a Linux

Ejemplos
Este recurso es de tipo Multimedia.
Tiene que conectarse a la plataforma para acceder a este recurso.

Página 6 de 328 Introducción a Linux
Introducción a Linux

Módulo I. Introducción
Introducción

Opciones, muchas opciones
Bajo el nombre Linux se encuentran muchas opciones que podemos elegir al usar
nuestro ordenador. Podemos elegir el tipo de kernel, shell, entorno gráfico, distribución,
programas de ofimática, etc.

No te preocupes si alguno de estos nombres no sabes qué son, puedes mirarlos en el
glosario o ya los iremos aprendiendo poco a poco.

Vamos a aprender a manejar Linux mediante comandos de texto;también se puede
hacer mediante el ratón con programas basados en ventanas (tenemos muchas
opciones), pero el sistema de ventanas es muy parecido al de Windows o al de
Macintosh y es muy sencillo aprenderlo por nuestra cuenta.

Pero si es tan sencillo el método gráfico,¿por qué
vamos a utilizar el arcaico sistema de texto?
El sistema de trabajo basado en texto es arcaico y es más difícil de aprender que el
utilizar programas gráficos, pero una vez que hemos aprendido podemos hacer más
cosas en menos tiempo que con el método gráfico.

Curva de aprendizaje
La curva de aprendizaje es un gráfico que nos gusta mucho a los profesores; muestra
cuánto esfuerzo es necesario para lograr aprender a hacer algo.

Plataforma de Teleformación de IFES Página 7 de 328
En esta imagen podemos ver que cuando llevamos poco tiempo aprendiendo el
entorno de texto, el resultado es muy pequeño, podemos hacer muy pocas cosas, y
a nadie se le ocurre decirle a los amigos: "hoy he aprendido a borrar un archivo". Por
el contrario,al poco tiempo de trabajar con un entorno gráfico (Windows, Macintosh
o Linux), ya podemos hacer lo fundamental y podemos poner en nuestro currículum
"usuario avanzado".

Lo que también se puede ver en la curva de aprendizaje es que cuando llevamos
más tiempo aprendiendo conseguimos hacer tareas que no se puede hacer en modo
gráfico.

De todas maneras, como en Linux podemos elegir,podemos usar al mismo tiempo
órdenes de teclado y el sistema gráfico, por lo que conseguimos unir lo mejor de ambos
mundos, ser un Usuario avanzado y llegar a ser un Usuario experto.

Todos los ejemplos de código están almacenados
en un archivo en el recurso multimedia
llamado "Ejemplos", al principio del temario.
Descárgalo y descomprímelo con la orden tar
xzvf ejemplos.tar.gz. Puedes ver el contenido

Página 8 de 328 Introducción a Linux
de cualquiera de los ejemplos con la orden cat
nombreDelArchivo , y puedes ejecutarlo con la
orden sh nombreDelArchivo.

Instalación
Aprender a instalar en profundidad un sistema Linux no es un objetivo de este curso.
Sin embargo,practicar las órdenes de Unix es fundamental para el aprendizaje de este
curso, por esto vamos a dar unas pequeñas nociones sobre cómo instalar Linux.

Conseguir una distribución
El primer paso es conseguir una distribución, una colección de programas que forman
el sistema operativo y otros programas.

Comprar
Se puede comprar (que sean libres no significa que no se puedan vender, lo que no
se puede hacer es limitar el derecho de copia), así que puedes ir a un distribuidor de
informática y comprar una distribución grande;no son muy caras y vienen con manuales
muy útiles.

Comprar una revista en el quiosco
En casi todas las revistas de Linux viene incluido un CD-ROM con una distribución de
Linux.

Descargarla de Internet
También se pueden descargar los CD-ROMs de Internet y después grabarlos. Aquí
tenemos una lista de lugares donde se pueden descargar varias distribuciones:

• Mandriva, versión live y para instalar, en CD-ROMs o en DVD.
• Open Suse También varias opciones.
• Fedora La distribución libre de RedHat.
• Knoppix. La distribución live original.

Plataforma de Teleformación de IFES Página 9 de 328
Que te la envíen gratis a tu casa
La distribución *Ubuntu* no sólo dejan descargar y copiar sino que te la envían a casa
¡pagando ellos el transporte!, les cuesta unas tres semanas.

Instalación completa
La instalación completa en disco duro es complicada porque normalmente querremos
tener Linux y mantener Windows, y cuando instalamos Windows, este sistema
operativo ocupó todo el espacio en disco duro para él.

Antes de instalar Linux en un ordenador que ya tiene Windows es necesario hacer una
copia de seguridad de todos nuestros datos, los programas se pueden volver a instalar,
pero las fotos digitales de las vacaciones pasadas no las podremos recuperar si se
borran durante el proceso.

Las distribuciones modernas permiten instalar Linux en el espacio que no está
utilizando Windows y normalmente no dan ningún problema, pero hacer copias de
seguridad nunca está de más.

Una vez que está instalado el ordenador al arrancar nos preguntará con cuál de los
sistemas operativos queremos trabajar. Se lo indicamos con las teclas de las flechas
arriba o abajo y la tecla enter cuando está seleccionada la opción correcta.

Ejecución live
Para ejecutar una distribución live, es necesario decirle al ordenador que cuando
arranque busque el sistema operativo en el CD-ROM, y si no hay ninguno que lo
busque en el disco duro.

El programa que se pone en marcha al encender el ordenador se le llama "la BIOS" y
se puede acceder pulsando la tecla Supr en algunos ordenadores, en otros es con la
tecla F1 y en otro es con la tecla F2.

Este programa se maneja con las teclas de las flechas, la tecla enter para hacer
cambios.

Página 10 de 328 Introducción a Linux
El único dato que nos interesa cambiar es la secuencia de arranque, (boot sequence).
En esta secuencia van los dispositivos donde va a buscar el sistema operativo. Le
pondremos como primera opción el CD-ROM, para que si encuentra uno puesto, con
sistema operativo, lance éste. Como segunda opción pondremos el disco duro (HD),
para que cuando no queramos arrancar en Linux, saquemos el CD y el ordenador
arranque con el sistema operativo que tenemos instalado.

Historia
Conocer un poco la Historia de estos sistemas operativos no es fundamental, pero
nos aporta un poco de perspectiva para organizar algunos conceptos con los que
trabajaremos en el curso.

Plataforma de Teleformación de IFES Página 11 de 328
Multics
Multics era un sistema operativo multiusuario y multiproceso (de ahí le viene el
nombre) que se intentó hacer en los laboratorios Bell a mediados de los años 60 y que
nunca llegó a funcionar.

Unix
Unos ingenieros, en su tiempo libre ,hicieron por su cuenta una versión reducida del
sistema Multics y como chiste le llamaron Unix ,en contraposición al sistema que no
llegaron a hacer.

En los años siguientes varias empresas realizaron sus propias versiones de Unix
como IBM, HP, Apple, Santa Cruz Operation o Digital para grandes ordenadores.

GNU

A mediados de los 80 surge el movimiento en apoyo del software libre con el proyecto
GNU.

Página 12 de 328 Introducción a Linux
GNU es una sigla recursiva y con un significado chocante; GNU es "GNU is Not Unix",
en español "GNU No es Unix". Es un proyecto que intenta hacer un sistema que
funcione como Unix pero volviendo a programar cada programa necesario para su
funcionamiento. La mayor parte de las órdenes que vamos a ver en este curso las han
hecho bajo el proyecto GNU.

Linux

A principio de los años 90 GNU tenía preparados editores de caracteres, compiladores,
intérpretes de comandos y otras utilidades necesarias para desarrollar un sistema
operativo, pero el programa principal, el kernel, que se encarga de los usuarios, la
ejecución de los programas, su relación con la memoria y los discos duros, se les
retrasaba (en el año 2006 todavía no lo han terminado).Un estudiante finlandés llamado
Linus Torwalds programó uno sin las especificaciones que se habían impuesto los
desarrolladores de GNU, pero que funcionaba.

Plataforma de Teleformación de IFES Página 13 de 328
En 1992 Linus Torwald adoptó la licencia GPL para el kernel: el núcleo ya era libre;a
partir de este punto ,el crecimiento de este sistema en variedad y utilización está siendo
exponencial.

Entornos de trabajo
En Linux tenemos la oportunidad de trabajar en modo texto (consola) o en modo
gráfico (con ventanas), así podremos elegir un método u otro y poder cambiar cuando
queramos.

Entornos de consola
El entorno de consola no es MS-DOS. El entorno de consola de Unix es mucho más
rico y poderoso.

Dentro del entorno de consola también podemos elegir entre varios sistemas, aunque el
más utilizado y el que vamos a estudiar en este curso es el shell llamado Bash.

Maneras en las que se puede utilizar el entorno de consola:

• Sistemas Linux sin entorno gráfico.

Página 14 de 328 Introducción a Linux
• Instalando Cygwin en ordenadores con Windows.
• Utilizando un programa emulador de consola en Linux con sistemas gráficos
podemos poner en marcha varios programas que nos ponen una consola en
una ventana, (Konsole, xterm, Gnome-Term, etc).
• Pulsando la tecla F1 (o F2 ... F5) mientras mantenemos pulsadas las
teclas Control y Alt. En este caso siempre podemos volver al modo gráfico
pulsando Control + Alt + F7.

Entornos gráficos
En Linux, tenemos multitud de entornos de trabajo gráficos

• WindowMaker
• Blackbox
• IceWM
• XFCE
• Gnome
• KDE

Plataforma de Teleformación de IFES Página 15 de 328
WindowMaker

BlackBox

Página 16 de 328 Introducción a Linux
recomendables cuando ya se tenga experiencia y se quiera experimentar con métodos
diferentes de poner en marcha los programas, ver el correo, manejar las ventanas, etc.

Plataforma de Teleformación de IFES Página 17 de 328
Gnome

KDE

Página 18 de 328 Introducción a Linux
recursos del ordenador (memoria y velocidad); son los recomendados para empezar a
no ser que se esté trabajando con un ordenador lento.

Plataforma de Teleformación de IFES Página 19 de 328
IceWM

XfCE

Página 20 de 328 Introducción a Linux
Práctica: Consola
Este recurso es de tipo Práctica.
Tiene que conectarse a la plataforma para acceder a este recurso.

Distribuciones
Los sistemas operativos propietarios, como Windows, están desarrollados por
empresas como Microsoft y esta empresa es la que realiza los CDs y los vende.

En el campo de Linux, no hay una única empresa que lo desarrolle, sino que hay miles
de programadores, sin ninguna relación entre ellos que van creando y modificando los
programas que funcionan en Linux. Como estos programas están a disposición de
cualquiera que los quiera utilizar, surgieron las distribuciones, que son recopilaciones
de programas y utilidades que forman el sistema Linux.

Como los programas que se incluyen en una distribución son libres, la empresa que
realiza la distribución no puede limitar el derecho de copia, sólo pueden prohibir la
copia de programas que haya realizado dicha empresa y no haya liberado, así como
logotipos, marcas, etc.

Distribuciones comerciales o de organizaciones
Hay varias empresas que se dedican a recopilar, personalizar, comprobar que
funcionan bien de forma conjunta y empaquetar programas para conseguir
distribuciones de Linux.

Estas empresas tienen como objetivos vender las distribuciones o los servicios de
mantenimiento y personalización a organizaciones o a usuarios finales.

Las distribuciones más importantes actualmente son:

Plataforma de Teleformación de IFES Página 21 de 328
RedHat busca acceder al mercado de los servidores para empresas.

Suse y Mandriva son distribuciones enfocadas para el usuario final.

Página 22 de 328 Introducción a Linux
Debian es una distribución que está hecha por programadores que sólo intenta el
desarrollo del software sin cortapisas.

Ubuntu: recientemente ha surgido esta distribución que es de una empresa, pero está
basada en la de Debian y pretende ser muy sencilla y permanecer libre.

Distribuciones temáticas
Como no hay apenas restricciones a la creación de distribuciones, se van creando
distribuciones con objetivos de lo más variopinto.

Distribuciones enfocadas a un sector de la informática concreto:

• Bioknoppix: programas de uso en bioinformática.
• NetBSD: enfocado en una seguridad estricta.
• FreeBSD: enfocado a la estabilidad del sistema.
• Media Linux: programas multimedia.
• GhostWriter: distribución con herramientas para escritores.
• Oralux: distribución para ciegos (interfase mediante audio).
• JuegaLinex: juegos.

Plataforma de Teleformación de IFES Página 23 de 328
También hay distribuciones adaptadas a un idioma o zona del mundo,;existen
distribuciones centradas en el bengalí o hebreo y distribuciones para prácticamente
cada autonomía española, así comopara varias localidades.

Podemos buscar todas las distribuciones Linux que queramos en http://
distrowatch.com/

Distribuciones live

Las distribuciones live son recopilaciones de programas que están listas para funcionar
sin necesidad de instalar nada en el disco duro, no lo modifican de ninguna manera.

La primera distribución live fue Knoppix, que ya va por la versión 4.0, se desarrolló
para demostrar a los usuarios las posibilidades y facilidad de uso de Linux.

Actualmente tenemos multitud de distribuciones live para:

• Demostraciones de Linux o de funcionamiento de programas.
• Distribuciones con herramientas de recuperación de datos.
• Distribuciones para poder trabajar sin tener que realizar instalaciones o en
ordenadores que no tienen disco duro.

Autoevaluación: Distribuciones

Un par de preguntas a ver si te has leído esta lección.
Pregunta 1:
¿Qué distribución está desarrollada por un grupo de programadores, sin

empresa?
• Ubunto
• Debian
• Mandriva

Página 24 de 328 Introducción a Linux
• RedHat

Respuesta correcta: Debian

Pregunta 2:
¿Qué distribuciones están enfocadas al entorno empresarial?

Respuesta correcta: RedHat y SuSe

Sopa de letras
Este recurso es de tipo Multimedia.
Tiene que conectarse a la plataforma para acceder a este recurso.

Plataforma de Teleformación de IFES Página 25 de 328
Introducción a Linux

Evaluación primera
Este recurso es de tipo Evaluación.
Debe conectarse a la plataforma para realizar la evaluación. Recuerde que las
evaluaciones son obligatorias ya que determinan la nota final.

Página 26 de 328 Introducción a Linux
Introducción a Linux

Módulo II. Órdenes comunes
Instrucciones habituales

Comenzamos a escribir
Empezamos a trabajar con Linux, tenemos una pantalla negra (puede ser de otro
color) que hemos sacado en el menú terminales (o xterm o kterm), o hemos pulsado las
teclas Control, Alt y F1 al mismo tiempo (en este caso, volvemos al modo gráfico con
Control + Alt + F7).

Después de escribir el nombre de usuario y la clave (si nos la pide), nos encontramos
un texto que sirve para indicarnos que el sistema está esperando que escribamos una
orden, a este texto le llamaremos "prompt" y lo representaremos en este curso con el
símbolo del dólar (en tu Linux puede ser diferente).

$

escribimos nuestra primera orden:

$ date

y al darle a la tecla de retorno (o entrar o return ), obtenemos:

$ date
Wed Nov 23 13:22:21 2005
$

Plataforma de Teleformación de IFES Página 27 de 328
Cuando hemos pulsado la tecla retorno le hemos indicado al sistema que la orden
estaba completa, la ha ejecutado y nos ha mostrado el resultado de la ejecución
en la siguiente línea, la fecha y la hora actual, y en la línea siguiente ha vuelto a
aparecer el prompt para indicarnos que está preparado para la siguiente tarea que se le
encomiende.

Errores de escritura
Vamos a escribir una orden incorrectamente para ver qué sucede:

$ dates

al pulsar retorno nos aparece un mensaje parecido al siguiente:

$ dates
sh: dates: command not found
$

Cuando nos equivoquemos nos aparecerán mensajes de error indicando:

• Que no se conoce la orden, porque no está instalada o porque la hemos
escrito mal.
• Que no conoce los argumentos o que están mal escritos.
• Que no puede realizar la orden, por ejemplo que no puede borrar un archivo
que está en un CD-ROM.

Atajos de teclado
En los entornos gráficos un atajo de teclado es una combinación de teclas que hace lo
mismo que un menú.

En el entorno de consola, realmente son atajos para no tener que escribir las órdenes
completas.

Sin estos atajos el trabajo con el teclado sería muy tedioso, es muy importante que se
conozcan y se utilicen constantemente.

Auto completado
El auto completado se activa cuando tenemos un comando o nombre de archivo escrito
a medias y pulsamos la tecla tabulador (tab).

Página 28 de 328 Introducción a Linux
• Si cuando pulsamos sólo hay una orden que empiece como lo que hemos
escrito, el sistema la escribe.
• Si hay varias posibilidades que casan tendremos que volver a darle al
tabulador y nos mostrará las diferentes posibilidades.

Vamos a ver un ejemplo, la pulsación de la tecla tabulador la marcaremos como
(tab), no aparecerán las letras t, a y b en la pantalla. Normalmente la tecla tabulador
está a la izquierda del teclado, encima de la tecla de bloqueo de mayúsculas y tiene
dibujadas unas flechas horizontales.

Unix distingue entre mayúsculas y minúsculas, asegúrate de que están tal y como las
escribimos aquí.

$ rmd(tab)/e(tab)X(tab)xin(tab)

El texto que tiene que haber aparecido es:

$ rmdir /etc/X11/xinit/

Hemos pulsado 13 teclas y tenemos 21 caracteres, el utilizar el auto completado nos
ahorra alrededor de un 50% de pulsaciones.

Por cierto la orden anterior intentará borrar un directorio de configuración del sistema,
pero si no tenemos permisos o no está vacío nos dará un error y no lo borrará, pero por
si acaso en lugar de darle a la tecla control , anularemos la orden manteniendo pulsada
la tecla control (Ctrl ) y pulsamos una vez la tecla c.

Para no ejecutar una orden que hemos escrito pulsamos Ctrl + c

¿Qué sucede cuando hay varias órdenes o archivos que comienzan igual? Al darle
al tabulador el sistema no sabe cuál de ellos poner, pone las letras que puede y nos
avisa con un pitido, podemos forzarle a que nos muestre las diversas opciones con
una segunda pulsación sobre el tabulador (tab), escribir unas letras para que diferencie
entre las opciones posibles y volver a darle al tabulador.

Ejemplo: escribimos:

$ ls /usr/i(tab)

el sistema encuentra en el directorio /usr los directorios que empiezan por i include e
info, como los dos empiezan por i y luego n , el sistema pone la n y nos indica que no
sabe cuál de los dos poner con un pitido, si le damos una segunda vez al tabulador nos
indica cuáles son las opciones:

Plataforma de Teleformación de IFES Página 29 de 328
$ ls /usr/in(tab)(tab)
include/ info/
$ ls /usr/inc(tab)

escribimos una letra (c) que rompa el empate y volvemos a pulsar (tab); ahora el
sistema no tiene dudas y nos mostrará el directorio /usr/include.

Recuperación de órdenes
En el entorno de texto que estamos trabajando se almacenan las órdenes que vamos
escribiendo.Para recuperarlas pulsamos las teclas flecha-arriba o flecha-abajo, y
cuando las tengamos en pantalla pulsamos retorno.

También podemos recuperar una orden antigua y modificarla para que se ejecute con
otras opciones o sobre otros ficheros.

$ ls -l
total 0
drwxr-xr-x+ 3 felix Ninguno 0 Nov 29 14:18 bin
drwxr-xr-x+ 4 felix Ninguno 0 Nov 30 10:19 cursos
drwxr-xr-x+ 4 felix Ninguno 0 Nov 30 12:04 tmp
$ ls -l /usr
total 0
drwxrwxrwx+ 8 ifes Usuarios 0 Nov 21 13:59 X11R6
drwxrwxrwx+ 3 ifes Usuarios 0 Nov 30 08:59 bin
drwxrwxrwx+ 7 ifes Usuarios 0 Nov 21 13:59 doc
drwxrwxrwx+ 2 ifes Usuarios 0 Nov 21 10:45 etc
drwxrwxrwx+ 23 ifes Usuarios 0 Nov 21 14:01 include
drwxrwxrwx+ 2 ifes Usuarios 0 Nov 21 10:45 info
drwxrwxrwx+ 18 ifes Usuarios 0 Nov 21 14:01 lib
drwxrwxrwx+ 5 ifes Usuarios 0 Nov 21 10:45 local
drwxrwxrwx+ 6 ifes Usuarios 0 Nov 25 10:30 man
drwxrwxrwx+ 3 ifes Usuarios 0 Nov 23 09:01 sbin
drwxrwxrwx+ 35 ifes Usuarios 0 Nov 23 09:01 share
drwxrwxrwx+ 2 ifes Usuarios 0 Nov 21 10:45 src
drwxrwxrwx+ 6 ifes Usuarios 0 Nov 21 14:00 ssl
drwxrwxrwx+ 2 ifes Usuarios 0 Nov 21 10:45 tmp
drwxrwxrwx+ 7 ifes Usuarios 0 Nov 24 12:50 var
$ ls -l /usr/X11R6
total 0
drwxrwxrwx+ 2 ifes Usuarios 0 Nov 23 14:26 bin

Página 30 de 328 Introducción a Linux
drwxrwxrwx+ 5 ifes Usuarios 0 Nov 21 13:59 doc
drwxrwxrwx+ 8 ifes Usuarios 0 Nov 21 13:59 include
drwxrwxrwx+ 4 ifes Usuarios 0 Nov 21 13:59 lib
drwxrwxrwx+ 5 ifes Usuarios 0 Nov 21 14:00 man
drwxrwxrwx+ 5 ifes Usuarios 0 Nov 21 13:59 share

En este ejemplo, la primera vez hemos escrito ls -l , la segunda vez flecha arriba
(espacio)/usr, con lo que hemos obtenido ls -l /usr, y la tercera vez flecha arriba /X11R6,
con lo que hemos obtenido ls -l /usr/X11R6.

Las órdenes que escribimos se almacenan en un archivo, y las recuerda de una sesión
a otra aunque se haya apagado el ordenador.

Sintaxis de las órdenes

Órdenes simples
Hay muy pocas órdenes que tengan utilidad al emplearse sin modificadores ni
argumentos.Suelen dar información del sistema.Las más habituales están en el
siguiente listado:

$ pwd
/home/ifes
$ ls
RCS
bin
cursos
tmp
$ ps
PID PPID PGID WINPID TTY UID STIME COMMAND
1484 1 1484 1484 con 1001 13:22:17 /usr/bin/bash
964 1484 964 1676 con 1001 13:22:25 /usr/local/bin/screen
1612 964 1612 1612 ? 1001 13:22:25 /usr/local/bin/screen
1672 1612 1672 1460 0 1001 13:22:25 /usr/bin/sh
1804 1672 1804 1500 0 1001 13:49:22 /usr/bin/vim
1816 1612 1816 1568 1 1001 13:52:43 /usr/bin/sh
540 1816 1208 540 1 1001 14:01:41 /usr/bin/sh
1620 540 1208 1588 1 1001 14:01:41 /usr/bin/ps
$ date
Thu Nov 24 14:01:41 2005

Plataforma de Teleformación de IFES Página 31 de 328
$ who
felix cesar josemi

Si practicas obtendrás resultados diferentes;vamos a ver qué hacen estas órdenes:

• pwd: nos indica en qué directorio estamos.
• ls: hace un listado de los archivos y directorios que hay en el directorio
donde nos encontramos.
• ps: saca la lista de procesos que se están ejecutando en este momento.
• date: nos indica la fecha y la hora actual.
• who: nos dice quién está conectado en este ordenador.
• cal: saca un calendario.

Opciones
Las opciones son letras o textos que se ponen detrás de la orden,normalmente con
espacios y guiones.

Hacen que el funcionamiento de la orden sea diferente del original.

Veamos unos ejemplos:

$ date
Thu Nov 24 14:36:18 2005
$ date -u
Thu Nov 24 13:36:18 UTC 2005
$ date --iso-8601
2005-11-24

• date: Muestra la fecha y la hora en el formato por defecto.
• date -u: Muestra la fecha y la hora en formato universal (fíjate que muestra
una hora menos si estás en la zona horaria de Madrid con horario de
invierno).
• date --iso-8601: Muestra la fecha sacando primero el año, el mes y el día.

Cuando la opción está formada por una letra se suele poner un guión delante;cuando
es una opción larga se suelen poner dos guiones, pero esto no es estándar y depende
de la orden de que se trate.

Se pueden poner más de una opción y son equivalentes las siguientes órdenes:

$ ls -l -h
total 0

Página 32 de 328 Introducción a Linux
drwxr-xr-x+ 2 ifes Ninguno 0 Nov 24 12:05 RCS
drwxr-xr-x+ 3 ifes Ninguno 0 Nov 23 13:48 bin
drwxr-xr-x+ 4 ifes Ninguno 0 Nov 24 09:03 cursos
drwxr-xr-x+ 2 ifes Ninguno 0 Nov 24 14:51 tmp
$ ls -h -l
total 0
drwxr-xr-x+ 2 ifes Ninguno 0 Nov 24 12:05 RCS
drwxr-xr-x+ 3 ifes Ninguno 0 Nov 23 13:48 bin
drwxr-xr-x+ 4 ifes Ninguno 0 Nov 24 09:03 cursos
drwxr-xr-x+ 2 ifes Ninguno 0 Nov 24 14:51 tmp
$ ls -lh
total 0
drwxr-xr-x+ 2 ifes Ninguno 0 Nov 24 12:05 RCS
drwxr-xr-x+ 3 ifes Ninguno 0 Nov 23 13:48 bin
drwxr-xr-x+ 4 ifes Ninguno 0 Nov 24 09:03 cursos
drwxr-xr-x+ 2 ifes Ninguno 0 Nov 24 14:51 tmp
$ ls -hl
total 0
drwxr-xr-x+ 2 ifes Ninguno 0 Nov 24 12:05 RCS
drwxr-xr-x+ 3 ifes Ninguno 0 Nov 23 13:48 bin
drwxr-xr-x+ 4 ifes Ninguno 0 Nov 24 09:03 cursos
drwxr-xr-x+ 2 ifes Ninguno 0 Nov 24 14:51 tmp

• Da igual poner antes la opción l o la opción h .
• Las opciones cortas (de una sola letra) se pueden combinar y escribir -lh o
-hl , con un sólo guión.

Argumentos
Los argumentos son textos o nombres de archivos que se pasan a la orden para que
los procese (que haga algo con ellos).

En los dos ejemplos siguientes vamos a utilizar argumentos para la función date del
tipo cadena de texto.

$ date -d 1-may
Sun May 1 00:00:00 2005
$ date -d 1-dec-2005
Thu Dec 1 00:00:00 2005
$ date -r /etc/passwd
Mon Nov 21 10:45:48 2005

Plataforma de Teleformación de IFES Página 33 de 328
En los dos primeros ejemplos utilizamos la opción -d para que nos saque por pantalla
la fecha que le pasamos como argumento, en lugar de la fecha actual;así nos sacará la
fecha del 1 de mayo de presente año o la fecha del 1 de diciembre de 2005.

Como el sistema en el que estoy trabajando está en inglés, los nombres de los meses
tienen que estar en inglés (la abreviatura de mayo, may, en inglés es igual que en
español, pero para diciembre hemos tenido que poner dec).

Comprueba cómo está instalado el idioma en tu sistema con los resultados que
devuelve date.

En el tercer ejemplo modificamos el comportamiento de date con la opción -r , que
hace que en lugar de sacar la fecha actual, saque la fecha de la última vez que se ha
modificó un archivo. En este último ejemplo el argumento es un fichero.

Acuérdate de utilizar los tabuladores para acabar las
órdenes y los nombres de los directorios y archivos.

Comodines
El uso de los comodines lo hace el sistema operativo, que busca los archivos que
tengan la forma que case con los comodines y se los pasa al programa, así que todos
los programas admiten comodines.

Los comodines de la baraja son naipes que pueden tomar el valor que nos apetezca en
juegos como el póquer o el rabino.

En la línea de comandos los comodines son:

• El asterisco ( * )
• El cierre de paréntesis ( ? )
• Cualquier símbolo entre corchetes cuadrados ( [ ] ).

El asterisco sirve para indicar cualquier letra, un número de veces ilimitado.

$ ls /bin/a*
/bin/a2p
/bin/addftinfo
/bin/afmtodit
/bin/animate
/bin/annotate

Página 34 de 328 Introducción a Linux
/bin/antiword
/bin/anytopnm
/bin/apropos
/bin/ascii
/bin/asciitopgm
/bin/ash
/bin/aspell-import
/bin/aspell
/bin/atktopbm
/bin/awk
$ ls /bin/an*
/bin/animate
/bin/annotate
/bin/antiword
/bin/anytopnm
$ ls /bin/*ba*
/bin/banner
/bin/basename
/bin/bash
/bin/bashbug
/bin/libart2-config
/bin/tiff2rgba

En los ejemplo anteriores estamos mostrando los archivos que se encuentran dentro
del directorio /bin y que además:

• a*: Empiezan por a y sigue cualquier combinación de caracteres.
• an*: Empiezan por an y sigue cualquier combinación de caracteres.
• *ba*: Hay cualquier combinación de caracteres seguido de las letras ba y
cualquier combinación de teclas después.

El símbolo cierre de interrogación (?) sirve para indicar cualquier letra, pero sólo una
vez.

No te confundas el símbolo de inicio de interrogación (¿) que no tiene ningún
significado en Unix.

$ ls /bin/?sh
/bin/ash
/bin/ssh
$ ls /bin/??sh
/bin/bash

Plataforma de Teleformación de IFES Página 35 de 328
• ls /bin/?sh: buscamos los archivos dentro del directorio bin que empiecen
por cualquier letra y después tengan una s y una hache.
• ls /bin/??sh: buscamos los archivos dentro del directorio bin que empiecen
por cualquier letra, seguido de cualquier otra letra y después tengan una s y
una hache.

El otro comodín que se utiliza es poner las letras que nos interesan entre corchetes ([]).
El sistema busca en su lugar cualquiera de las letras que estén en el corchete una sola
vez.

$ ls /bin/b[ae]*
/bin/banner
/bin/basename
/bin/bash
/bin/bashbug
$ ls /bin/b[ai]*
/bin/banner
/bin/basename
/bin/bash
/bin/bashbug
/bin/bioradtopgm
$ ls /bin/[bc][ae]*
/bin/banner
/bin/basename
/bin/bash
/bin/bashbug
/bin/cal
/bin/cameratopam
/bin/captoinfo
/bin/cat

Así la orden ls /bin/b[ae]* muestra el contenido del directorio /bin/ que empiece con una
b seguido indistintamente por una a o una e , seguido de cualquier letra o grupo de
letras *.

Obtención de ayuda
Para la obtención de ayuda podemos utilizar el comando man

$ man uname
UNAME(1) UNAME(1)
NOMBRE

Página 36 de 328 Introducción a Linux
uname - imprime información del sistema
SINOPSIS
uname [-snrvma] [--sysname] [--nodename] [--release] [--machine]
[--all] [--help] [--version]
DESCRIPCIÓN
Esta documentación no va a ser mantenida a partir de ahora y puede ser
inexacta o incompleta. La documentación Texinfo es ahora la fuente
autorizada.
Esta pagina de manual documenta la versión de GNU de uname. uname
imprime información acerca de la máquina y el sistema operativo en los
que esta corriendo. Si no se da ninguna opción,uname actúa como si se
hubiera dado la opción -s -a ;la información seleccionada se imprime
en el orden `snrvm' con un espacio entre los diferentes elementos.
OPCIONES
-m, --machine
Imprime el tipo de maquina (hardware).
-n, --nodename
Imprime el hostname del nodo de red de la maquina.
-r, --release
Imprime la versión del sistema operativo.
-s, --sysname
Imprime el nombre del sistema operativo.
-v Imprime la fecha de compilación del sistema operativo.
-a, --all
Imprime toda la información anterior.
--help Imprime un mensaje de uso en la salida estándar y termina satis-
factoriamente.
--version
Imprime información sobre la version por la salida estándar y
termina satisfactoriamente.
FSF Utilidades Shell de GNU UNAME(1)

Para manejar el resultado, las órdenes más
importantes son: tecla q para salir, flecha arriba o
flecha abajo para subir o bajar, / para buscar un
texto (se escribe después y se le da a enter), n para
buscar el siguiente texto.

Nadie es capaz de aprenderse todos los comandos que se utilizan en Unix con todas
sus opciones, pero es un objetivo de este curso que se sepan utilizar las páginas del
manual y encontrar las opciones necesarias para realizar lo que se quiera hacer.

Plataforma de Teleformación de IFES Página 37 de 328
Autoevaluación: Comandos

Unas preguntas sencillitas sobre las órdenes iniciales con el teclado.

Pregunta 1:
Cuál es la orden para saber la fecha actual

Respuesta correcta: date

Pregunta 2:
Si queremos sacar el calendario del año 1975 ¿qué orden tendremos que darle al

sistema?
Respuesta correcta: cal 1975 o cal -m 1975

Pregunta 3:
Para ver la página del manual de la orden ls utilizaremos la orden:

Respuesta correcta: man ls

Pregunta 4:
Cuando estamos viendo el manual de la orden ls y queremos buscar qué hace la

opción -r :
• tecleamos -r directamente
• tecleamos / y después -r y retorno
• Menú buscar y escribimos -r
• Menú opciones y la buscamos por orden alfabético

Respuesta correcta: tecleamos / y después -r y retorno

Práctica: Primeros comandos
Este recurso es de tipo Práctica.
Tiene que conectarse a la plataforma para acceder a este recurso.

Página 38 de 328 Introducción a Linux
Sistema de ficheros

El sistema de archivos en Unix
Antes de continuar con las órdenes habituales, es necesario conocer cómo se organiza
la información en Unix.

Ficheros y directorios
Como la mayoría de los sistemas actuales, Unix organiza la información en ficheros
y directorios. También hay otros elementos un poco más exóticos que veremos a su
debido tiempo.

Plataforma de Teleformación de IFES Página 39 de 328
Estructura jerárquica
En Unix no existen los equivalentes a las unidades de MS-DOS (c: o a:), sino que todo
está en una única estructura en árbol.

El directorio raíz se representa por la barra de dividir (/).

Podemos ver qué hay en el directorio raíz con la orden:

$ ls /
bin
cygdrive
cygwin.bat
cygwin.ico
etc
home
lib
mnt
tmp
usr
var

Dentro del directorio raíz nos encontramos varios directorios, como bin, etc, home, tmp,
usr, var, etc. Para ver el contenido de uno de ellos ejecutamos las orden:

$ ls /usr
X11R6
bin
doc
etc
include
info
lib
local
man
sbin
share
src
ssl
tmp

Página 40 de 328 Introducción a Linux
Con esta orden le hemos dicho que nos muestre el contenido de usr, que está dentro
del directorio raíz /.

Para ver el contenido del directorio man que está debajo de usr, que está debajo de /
usaremos la orden:

$ ls /usr/man
es
man1
man5
man7

En una dirección el símbolo / puede tener dos significados, si está al principio de la
dirección, nos referimos al directorio raíz. Si no está al principio es sólo una separación
entre directorios.

¿Dónde están los discos?
Pero si no se utilizan nombres de unidades, ¿cómo se puede acceder al CD-ROM, a la
disquetera o a un dispositivo USB?.

Unix monta los diferentes dispositivos en un directorio que varía en función de la
personalización de la distribución, para ver donde las guarda tu distribución puedes
meter un CD-ROM de datos y probar con los siguientes comandos:

$ ls /mnt/cd(tab)
$ ls /cd(tab)
$ ls /media/cd(tab)

una de las órdenes anteriores debería funcionar. Si el sistema encuentra el directorio
cd(algo), (estamos utilizando el tabulador), nos mostrará el contenido del CD-ROM.

Usuarios, grupos y permisos
Todos los archivos y directorios de un sistema Unix tienen, entre otras, estas
características:

• Propietario, el nombre del usuario que lo ha creado.
• Grupo, grupo al que está asociado.
• Permisos para el propietario, para el grupo y para el resto de los usuarios.

Así, si escribimos:

Plataforma de Teleformación de IFES Página 41 de 328
$ ls -l /
total 9
drwxrwxrwx+ 3 ifes Usuarios 0 Nov 23 09:01 bin
dr-xr-xr-x 5 0 root 0 Jan 1 1970 cygdrive
-rwxrwxrwx 1 ifes Usuarios 57 Nov 21 11:06 cygwin.bat
-rwxrwxrwx 1 ifes Usuarios 7022 Nov 23 14:26 cygwin.ico
drwxrwxrwx+ 16 ifes Usuarios 0 Nov 23 12:07 etc
drwxrwxrwx+ 3 ifes Ninguno 0 Nov 23 09:30 home
drwxrwxrwx+ 18 ifes Usuarios 0 Nov 21 14:01 lib
drwxr-xr-x+ 2 ifes Ninguno 0 Nov 25 09:11 mnt
drwxrwxrwt+ 4 ifes Usuarios 0 Nov 25 13:18 tmp
drwxrwxrwx+ 16 ifes Usuarios 0 Nov 21 14:00 usr
drwxrwxrwx+ 7 ifes Usuarios 0 Nov 24 12:50 var

podemos ver que el directorio /bin pertenece al usuario ifes y su grupo es Usuarios

Los permisos también aparecen en este listado, pero son un poco más complicados de
entender.

La primera letra de cada línea indica el tipo es cada "objeto", un guión - indica que es
un archivo, una d indica que es un directorio.

Las siguientes nueve letras son las que indican los permisos asociados a ese archivo.

• Las tres primeras letras indican los permisos del propietario.
• Las tres siguientes indican los permisos del grupo.
• Las tres últimas indican los permisos de otros que no sean ni el propietario ni
pertenezcan al grupo del archivo.

En cada grupo de tres letras cada una tienen el significado:

• La primera indica si tiene permiso de lectura (r ) o no (- ).
• La segunda indica si tiene permiso de escritura (w ) o no (- ).
• La tercera indica si tiene permiso de ejecución (x ) o no (- ).

Direcciones absolutas o relativas
Hay dos maneras de indicar la dirección de un fichero o un directorio, en la estructura
de ficheros de un sistema Unix.

• Direcciones absolutas
• Direcciones relativas

Página 42 de 328 Introducción a Linux
Direcciones absolutas
Las direcciones absolutas empiezan con el símbolo /.

Una dirección absoluta es válida siempre.

Direcciones relativas
Las direcciones relativas no empiezan con el símbolo /.

Las direcciones relativas dependen del directorio donde nos encontremos, no
funcionarán si nos encontramos en un directorio diferente.

Normalmente las direcciones relativas son más cortas de escribir que las direcciones
largas.

Ejemplos de direccionamiento absoluto y relativo:

$ # ¿Cuál es mi directorio?
$ pwd
/home/felix
$ # ¿Qué hay en el directorio /usr?
$ ls /usr
X11R6
bin
doc
etc
i686-pc-cygwin
i686-pc-mingw32
include
info
lib
local
man
sbin
share
src
ssl
tmp
$ # ¿Qué hay en mi directorio?
$ ls
bin

Plataforma de Teleformación de IFES Página 43 de 328
cursos
tmp
$ # Ahora con direccionamiento absoluto
$ ls /home/felix
bin
cursos
tmp
$ # Que hay dentro de cursos
$ ls cursos
bin
linux
$ # Dentro de cursos con direccionamiento absoluto
$ ls /home/felix/cursos
bin
linux

Lo que se escribe en la consola después del símbolo # será ignorado hasta que
empiece la siguiente línea, se puede utilizar para poner comentarios. El sistema lo
ignora.

Directorios virtuales
Cuando ponemos una dirección relativa podemos trabajar con dos directorios virtuales:

• Directorio actual ( . ).
• Directorio superior ( .. ).

El directorio actual (un punto) se utiliza cuando una orden necesita un argumento
que es un directorio, en lugar de poner la ruta completa del directorio donde nos
encontramos, como /home/francisco/proyecto, ponemos simplemente.

El directorio superior (representado por un punto seguido de otro punto, ..) nos indica
el contenido del directorio padre del que nos encontramos. Podemos escribir ls .. , o
incluso ls ../.. , que nos listará el directorio padre del directorio padre del actual (o sea el
abuelo ;-)).

Página 44 de 328 Introducción a Linux
Introducción a Linux / Módulo II. Órdenes comunes

Instrucciones de ficheros
Instrucciones de ficheros
A continuación veremos las órdenes para trabajar con el sistema de archivos más
habituales, así como sus opciones más usadas.

Podemos ver la descripción oficial de cada orden, con todas sus opciones tecleando
man orden.

Las órdenes se pueden agrupar por lo que hacen:

• Ver
• Crear
• Modificar
• Borrar

Inspeccionar

Ver
Instrucciones que nos dan información sobre el sistema de archivos. No modifican
nada.

pwd
La orden pwd nos muestra en qué directorio nos encontramos.

Hay muchas órdenes en las que si no les indicamos otro directorio, utilizan el actual,
por lo que es importante conocer en dónde estamos en cada momento.

Es una de las pocas órdenes de Unix que no tienen opciones.

$ pwd
/home/ifes/cursos/linux
$ cd /home
$ pwd
/home

Plataforma de Teleformación de IFES Página 45 de 328
Al principio del ejemplo nos encontramos en el directorio linux, dentro de cursos, dentro
de ifes, dentro de home, dentro del directorio raíz. Cambiamos de directorio con la
orden cd y pwd nos indica la nueva dirección.

ls
ls sirve para ver qué archivos o directorios hay en un directorio.

Si no le indicamos el directorio nos muestra el contenido del directorio actual (podemos
saber cuál es nuestro directorio con la orden pwd).

Hacemos un listado del directorio actual.

$ ls
Makefile
RCS
admin
literal
out
src
tmp
$ pwd
/home/ifes/cursos/linux

Hacemos un listado del directorio /usr

$ ls /usr
X11R6
bin
doc
etc
include
info
lib
local
man
sbin
share
src
ssl
tmp

Página 46 de 328 Introducción a Linux
Hacemos un listado de los archivos que acaban en sh del directorio /bin.

$ ls /bin/*sh
/bin/ash
/bin/bash
/bin/ppmflash
/bin/sh
/bin/ssh

Las opciones más habituales de ls son:

• -l: Hace que el listado sea largo, dando más información además del
nombre.
• -h: Los datos de tamaño de archivo están en formato humano, en kbytes o
mbytes.
• -a: Nos muestra todos los archivos, incluidos los ocultos.

Una opción que utilizo es ls -rlt que hace un listado largo (-l ), ordenado por fecha de
modificación (-t ) en orden creciente (-r ). De esta manera los ficheros que aparecen al
final son los últimos en los que se ha estado trabajando.

Si el entorno de texto no te acaba de mostrar la información que necesitas puedes
interactuar con el entorno gráfico o con alguna herramienta interactiva como md
(midnight comander).

cat
La orden cat sirve para concatenar archivos y mostrarlos por pantalla.

Varios ejemplos, para practicar puedes probar con los archivos que se encuentran en el
directorio /etc.

$ # Miramos qué archivos hay en el directorio tmp
$ ls tmp
bin
carta1.txt
carta2.txt
cursos
kk.tar.gz
last_sesion.txt
sesion.sh.1448.tmp
sesion.sh.1528.tmp

Plataforma de Teleformación de IFES Página 47 de 328
tree-1.5.0.tgz
$
$ # Miramos el contenido de tmp/carta1.txt
$ cat tmp/carta1.txt
Nuevos ordenadores
=====================================
Thu Dec 1 08:53:49 2005
Para: mantenimiento
Hay que instalar los nuevos ordenadores para que los utilicen en el
departamento de idiomas.
$
$ # Miramos el contenido de tmp/carta2.txt
$ cat tmp/carta2.txt
Actualización de software
=====================================
Thu Dec 1 08:55:43 2005
Para: mantenimiento
Actualizar los ordenadores con la nueva versión de OpenOffice
disponible en el repositorio habitual.
$
$ # Miramos el contenido de todas las cartas
$ cat tmp/carta*
Nuevos ordenadores
=====================================
Thu Dec 1 08:53:49 2005
Para: mantenimiento
Hay que instalar los nuevos ordenadores para que los utilicen en el
departamento de idiomas.
Actualización de software
=====================================
Thu Dec 1 08:55:43 2005
Para: mantenimiento
Actualizar los ordenadores con la nueva versión de OpenOffice
disponible en el repositorio habitual.

less
Cuando un archivo es más grande que la pantalla y lo vemos utilizando el comando
cat, el sistema no espera a que lo leamos, sino que lo pasa a toda velocidad. Para
poder verlo poco a poco está el comando less.

Página 48 de 328 Introducción a Linux
Cuando vemos la ayuda de cualquier programa con man, estamos utilizando el
programa less para ver esta ayuda poco a poco.

less es un programa interactivo, todas las órdenes anteriores eran no interactivas, le
dábamos el nombre de la orden, sus opciones y parámetros y se ejecutaba. En los
programas interactivos el programa espera la interacción del usuario, para qué le diga
qué quiere en cada momento.

Para ver un archivo grande podemos probar:

$ less /etc/passwd

Cuando estamos viendo el archivo le podemos indicar qué queremos que haga
mediante órdenes de una sola tecla, las más importantes son:

• flecha abajo : sube el texto una línea.
• f lecha arriba : baja el texto una línea.
• avance página : sube una pantalla.
• retroceso página : baja una pantalla.
• / : búsqueda, a continuación escribimos el texto que queremos buscar y
pulsamos enter.
• n : vuelve a buscar la siguiente aparición del texto que estamos buscando.
• N : busca hacia el principio del texto.
• q : finalizar la ejecución de less.

file
La orden file nos indica de qué tipo son los archivos, ya que la extensión es sólo un
adorno en Unix.

$ file /home/felix/tmp/*.*
/home/felix/tmp/blame-1.3: directory
/home/felix/tmp/calculos.txt: ASCII text
/home/felix/tmp/calendario.txt: ASCII text, with CRLF line terminators
/home/felix/tmp/carta.txt: ISO-8859 text
/home/felix/tmp/carta1.txt: ASCII text
/home/felix/tmp/carta2.txt: ISO-8859 text
/home/felix/tmp/grandes.txt: ISO-8859 English text, with CRLF line terminators
/home/felix/tmp/kk.tar.gz: gzip compressed data, from Unix
/home/felix/tmp/last_sesion.txt: ASCII text, with CRLF line terminators
/home/felix/tmp/numeros.txt: ASCII text, with CRLF line terminators
/home/felix/tmp/ordenes.txt: ASCII text

Plataforma de Teleformación de IFES Página 49 de 328
/home/felix/tmp/sesion.sh.1076.tmp: ISO-8859 text, with CRLF, LF line terminators
/home/felix/tmp/sesion.sh.1140.tmp: ASCII text
/home/felix/tmp/sesion.sh.1188.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1196.tmp: ASCII text
/home/felix/tmp/sesion.sh.1208.tmp: ISO-8859 text, with CRLF, LF line terminators
/home/felix/tmp/sesion.sh.1256.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1344.tmp: ASCII text
/home/felix/tmp/sesion.sh.1392.tmp: ASCII text
/home/felix/tmp/sesion.sh.1448.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1504.tmp: ASCII text
/home/felix/tmp/sesion.sh.1540.tmp: ASCII text
/home/felix/tmp/sesion.sh.1572.tmp: ASCII text
/home/felix/tmp/sesion.sh.1596.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1632.tmp: ISO-8859 English text
/home/felix/tmp/sesion.sh.1664.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1668.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1696.tmp: ASCII text
/home/felix/tmp/sesion.sh.1704.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1708.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1720.tmp: ASCII text
/home/felix/tmp/sesion.sh.1728.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1732.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1744.tmp: ISO-8859 English text
/home/felix/tmp/sesion.sh.1752.tmp: ISO-8859 text, with CRLF, LF line terminators
/home/felix/tmp/sesion.sh.1808.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1816.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1856.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1880.tmp: ASCII text
/home/felix/tmp/sesion.sh.1900.tmp: ASCII text
/home/felix/tmp/sesion.sh.1904.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1936.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1948.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1952.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1972.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.1976.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.472.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.664.tmp: ASCII text
/home/felix/tmp/sesion.sh.676.tmp: ASCII text
/home/felix/tmp/sesion.sh.748.tmp: ISO-8859 text, with CRLF, LF line terminators
/home/felix/tmp/sesion.sh.792.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.880.tmp: ISO-8859 text, with CRLF, LF line terminators

Página 50 de 328 Introducción a Linux
/home/felix/tmp/sesion.sh.924.tmp: ASCII text
/home/felix/tmp/sesion.sh.964.tmp: ASCII text
/home/felix/tmp/sesion.sh.972.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.992.tmp: ISO-8859 text
/home/felix/tmp/sesion.sh.996.tmp: ISO-8859 text
/home/felix/tmp/tree-1.5.0.tgz: gzip compressed data, from Unix

wc
wc nos indica el número de líneas, palabras y letras que tiene un archivo.

$ # cifras de /etc/passwd
$ wc /etc/passwd
7 9 718 /etc/passwd
$#
$ # sólo las líneas
$ wc -l /etc/passwd
7 /etc/passwd
$#
$ # todas las cartas
$ wc tmp/carta*
12 25 206 tmp/carta1.txt
11 25 219 tmp/carta2.txt
23 50 425 total

Las opciones más habituales son:

• -l : sólo saca el número de líneas.
• -w : sólo saca el número de palabras (grupos de letras separados por
símbolos).
• -c : sólo saca el número de letras (incluidos símbolos, espacios, etc.).

Crear
Instrucciones para crear archivos o directorios.

En este apartado no veremos otros métodos para crear archivos como son los
procesadores de texto o la redirección, porque técnicamente no son órdenes, se verán
en otros módulos.

Plataforma de Teleformación de IFES Página 51 de 328
touch
touch seguido de uno o varios nombres crea unos archivos con esos nombres si no
existían, si ya existía le cambia la fecha de modificación.

$ #####################################
$#
$ # listamos los archivos de texto
$ # que están dentro del directorio tmp
$#
$ ls tmp/*.txt
tmp/carta1.txt
tmp/carta2.txt
tmp/last_sesion.txt
$ #####################################
$#
$ # creamos 3 archivos de texto
$ # dentro del directorio tmp
$#
$ touch tmp/ene.txt tmp/feb.txt tmp/mar.txt
$ #####################################
$#
$ # listamos los archivos de texto
$ # que están dentro del directorio tmp
$ # para ver si están los archivos nuevos
$#
$ ls tmp/*.txt
tmp/carta1.txt
tmp/carta2.txt
tmp/ene.txt
tmp/feb.txt
tmp/last_sesion.txt
tmp/mar.txt
$ #####################################
$#
$ # sacamos un listado largo para ver
$ # el tamaño de los nuevos
$ # y comprobamos que es cero.
$#
$ ls -l tmp/*.txt
-rw-r--r-- 1 felix Ninguno 206 Dec 1 08:54 tmp/carta1.txt

Página 52 de 328 Introducción a Linux
-rw-r--r-- 1 felix Ninguno 219 Dec 1 08:56 tmp/carta2.txt
-rw-r--r-- 1 felix Ninguno 0 Dec 1 09:59 tmp/ene.txt
-rw-r--r-- 1 felix Ninguno 0 Dec 1 09:59 tmp/feb.txt
-rw-r--r-- 1 felix Ninguno 36 Dec 1 09:43 tmp/last_sesion.txt
-rw-r--r-- 1 felix Ninguno 0 Dec 1 09:59 tmp/mar.txt

mkdir
mkdir seguido del nombre de uno o varios directorios, los crea.

Una opción muy interesante es -p , si en el directorio a crear tiene que estar bajo otro
directorio y éste no existe también lo crea.

$ #############################################
$#
$ # creamos el directorio trabajo
$#
$ mkdir trabajo
$#
$ # nos metemos en este directorio
$#
$ cd trabajo
$#
$ # creamos directorios con subdirectorios
$#
$ mkdir -p clientes/opel clientes/seat prov/cepsa prov/pirelli
$#
$ # salimos del directorio trabajo
$ # subiendo al directorio superior
$#
$ cd ..
$#
$ # hacemos un listado recursivo
$ # del directorio trabajo
$#
$ ls -lR trabajo
trabajo:
total 0
drwxr-xr-x+ 4 felix Ninguno 0 Dec 1 10:17 clientes
drwxr-xr-x+ 4 felix Ninguno 0 Dec 1 10:17 prov
trabajo/clientes:

Plataforma de Teleformación de IFES Página 53 de 328
total 0
drwxr-xr-x+ 2 felix Ninguno 0 Dec 1 10:17 opel
drwxr-xr-x+ 2 felix Ninguno 0 Dec 1 10:17 seat
trabajo/clientes/opel:
total 0
trabajo/clientes/seat:
total 0
trabajo/prov:
total 0
drwxr-xr-x+ 2 felix Ninguno 0 Dec 1 10:17 cepsa
drwxr-xr-x+ 2 felix Ninguno 0 Dec 1 10:17 pirelli
trabajo/prov/cepsa:
total 0
trabajo/prov/pirelli:
total 0

cp
cp sirve para copiar archivos.

• cp archivoOrigen archivoDestino: copia el archivo origen (que tiene que
existir) a destino, si no existe el destino lo crea

$ # copiamos el archivo passwd del directorio etc
$ # a un nuevo archivo que se llamará archivo_de_claves.txt
$ # en el directorio actual
$ cp /etc/passwd archivo_de_claves.txt

• cp archivoOrigen directorioDestino; copia el archivo origen en el directorio
destino, manteniendo el nombre.

$ # copiamos el archivo passwd del directorio /etc
$ # al directorio tmp manteniendo el nombre
$ cp /etc/passwd tmp

• cp archivo1 archivo2 ... directorio: copia los archivos indicados en el
directorio de destino, cuando copiamos varios archivos es obligatorio que el
último argumento sea un directorio.

$ # copiamos todos los archivos con la extensión txt
$ # que estén en el directorio tmp
$ # al directorio clientes, debajo de trabajo,

Página 54 de 328 Introducción a Linux
$ # debajo del directorio actual,
$ # manteniendo los nombres de los archivos
$ cp tmp/*.txt trabajo/clientes

Modificar
Para modificar archivos se usan editores en modo interactivo, no órdenes. También se
procesan archivos mediante redirección que se estudiará más adelante.

mv
La orden mv sirve para mover o renombrar un archivo o directorio.

Las maneras de poner los argumentos son las siguientes:

• mv archivo nuevoNombre: renombra el archivo como nuevo nombre.
• mv archivo directorio: mueve el archivo al directorio manteniendo el nombre.
• mv archivo directorio/nuevoNombre: mueve el archivo al directorio
cambiando el nombre.

En la lista anterior se puede sustituir archivo por directorio y la orden mv funciona
exactamente igual.

Borrar
rm
Para borrar archivos utilizamos la orden rm seguida del nombre del archivo o archivos
que queremos borrar.

rm no borra directorios a no ser que le demos algunas opciones extra.

Las opciones más habituales son:

• -i : interactiva, pregunta si queremos borrar interactivamente
• -f : forzado, no pregunta, los borra.
• -r : recursivo, le podemos poner directorios y los borra completamente.

En Unix, en modo texto, no tenemos papelera, lo que borremos no podremos
recuperarlo, es muy importante que antes de borrar nos aseguremos en qué directorio
estamos (pwd ) y que borremos con la opción de borrado interactivo (rm -i archivos ).

Plataforma de Teleformación de IFES Página 55 de 328
rmdir
rmdir sirve para borrar directorios vacíos. Si contienen algún archivo o directorio, da un
error y no los borra.

Para borrar directorios y todo su contenido se puede utilizar la orden rm -r , pero
nuestros datos estarán más seguros si nos acostumbramos a borrar el contenido y
luego borrar sólo directorios vacíos con rmdir directorio.

Autoevaluación: Ficheros

Pregunta 1:
¿Cuál es la diferencia entre ls y ls . (con un punto)?

Respuesta correcta: ninguna

Pregunta 2:
¿Cuál es el directorio raíz?

Respuesta correcta: /

Pregunta 3:
¿Qué orden nos indica cuál es el directorio actual?

• ls
• ls -rtl
• path
• pwd

Respuesta correcta: pwd

Pregunta 4:
Para copiar las imágenes con extensión .jpg del directorio /var/www/img al

directorio /tmp ¿qué orden podemos utilizar?
Respuesta correcta: cp /var/www/img/*.jpg /tmp

Pregunta 5:
Para recuperar archivos que hemos borrado con la orden rm , utilizaremos

• No podemos recuperarlos
• rm -r nombre_archivo

Página 56 de 328 Introducción a Linux
• recover nombre_archivo
• cp /trash/nombre_archivo .

Respuesta correcta: No podemos recuperarlos

Pregunta 6:
rmdir borra directorios:

• siempre
• que no contengan nada
• que sólo contengan directorios, no archivos
• hay que utilizar la opción -f

Respuesta correcta: que no contengan nada

Plataforma de Teleformación de IFES Página 57 de 328
Introducción a Linux / Módulo II. Órdenes comunes

Práctica: Ficheros
Este recurso es de tipo Práctica.
Tiene que conectarse a la plataforma para acceder a este recurso.

Instrucciones de texto
Las instrucciones de texto son muy importantes porque los archivos de configuración,
programación y otros muchos están en formato texto, así como el resultado de las
órdenes también son de texto y podremos realizar acciones sobre estos resultados
intermedios.

head

head (cabeza en inglés)
sirve para mostrar el principio de un archivo.

Nos puede ser útil para ver el aspecto de un documento o ver su definición.

Por defecto head muestra las primeras 10 líneas del archivo. Se puede modificar con la
opción -n número donde número puede ser 1,2,8,88, etc.

Página 58 de 328 Introducción a Linux
tail
tail (cola en inglés) sirve para mostrar el final de un documento.

Se utiliza mucho para ver archivos que van aumentando de tamaño, añadiendo lo que
va pasando al final (logs).

Las opciones más habituales son:

• -n número: Indicamos cuantas líneas del final queremos ver. Si no indicamos
nada nos muestra 10.
• +número: Nos muestra desde la línea número hasta el final.
• -f : Le indicamos que nos muestre las últimas líneas y tail se queda
esperando, observando el archivo, en el momento que cambia nos muestra
que líneas se han añadido. Esta opción es útil si queremos ver cómo va
aumentando un archivo.

sort

sort sirve para ordenar.

Veamos varios ejemplos:

Plataforma de Teleformación de IFES Página 59 de 328
$ # sacamos por pantalla el archivo passwd
$ cat /etc/passwd
SYSTEM:*:18:544:,S-1-5-18::
Administradores:*:544:544:,S-1-5-32-544::
Administrador:unused_by_nt/2000/xp:500:513:U-
NUEVO2Administrador,S-1-5-21-2000478354-1563985344-839522115-500:/home/
Administrador:/bin/bash
ASPNET:unused_by_nt/2000/xp:1002:513:ASP.NET Machine Account,U-
NUEVO2ASPNET,S-1-5-21-2000478354-1563985344-839522115-1002:/home/
ASPNET:/bin/bash
felix:unused_by_nt/2000/xp:1003:513:U-
NUEVO2felix,S-1-5-21-2000478354-1563985344-839522115-1003:/home/felix:/bin/
bash
ifes:unused_by_nt/2000/xp:1001:513:U-
NUEVO2ifes,S-1-5-21-2000478354-1563985344-839522115-1001:/home/ifes:/bin/bash
Invitado:unused_by_nt/2000/xp:501:513:U-
NUEVO2Invitado,S-1-5-21-2000478354-1563985344-839522115-501:/home/Invitado:/
bin/bash
$ # sacamos por pantalla el archivo passwd
$ # pero esta vez ordenado
$ sort /etc/passwd
ASPNET:unused_by_nt/2000/xp:1002:513:ASP.NET Machine Account,U-
NUEVO2ASPNET,S-1-5-21-2000478354-1563985344-839522115-1002:/home/
ASPNET:/bin/bash
Administrador:unused_by_nt/2000/xp:500:513:U-
NUEVO2Administrador,S-1-5-21-2000478354-1563985344-839522115-500:/home/
Administrador:/bin/bash
Administradores:*:544:544:,S-1-5-32-544::
Invitado:unused_by_nt/2000/xp:501:513:U-
NUEVO2Invitado,S-1-5-21-2000478354-1563985344-839522115-501:/home/Invitado:/
bin/bash
SYSTEM:*:18:544:,S-1-5-18::
felix:unused_by_nt/2000/xp:1003:513:U-
NUEVO2felix,S-1-5-21-2000478354-1563985344-839522115-1003:/home/felix:/bin/
bash
ifes:unused_by_nt/2000/xp:1001:513:U-
NUEVO2ifes,S-1-5-21-2000478354-1563985344-839522115-1001:/home/ifes:/bin/bash

Las opciones más habituales son:

• -n: ordena teniendo en cuenta los números.

Página 60 de 328 Introducción a Linux
• -f: no tiene en cuenta las minúsculas o mayúsculas (si no ponemos esta
opción primero muestra las mayúsculas y luego las minúsculas).
• -r: hace que invierta el resultado.

echo

La orden echo saca por pantalla el texto que le pasemos como
argumento.

Es útil cuando queramos saber el valor de una variable o introducirle un texto a un
programa.

$ echo hola
hola
$ echo la variable HOME vale $HOME
la variable HOME vale /home/felix

Para sacar el valor de una variable tenemos que poner un símbolo dolar $ delante del
nombre, pero esto ya lo veremos más adelante.

Plataforma de Teleformación de IFES Página 61 de 328
grep

La orden grep sirve
para seleccionar las líneas que queremos mostrar, nos sirve para buscar dentro de
archivos sin tener que verlos por completo.

$ grep felix /etc/passwd
felix:unused_by_nt/2000/xp:1003:513:U-
NUEVO2felix,S-1-5-21-2000478354-1563985344-839522115-1003:/home/felix:/bin/
bash

Las opciones más habituales son:

• -i: ignora si la cadena está en mayúsculas o minúsculas. Normalmente sólo
busca las líneas que contengan exactamente la misma cadena, teniendo en
cuenta las minúsculas o mayúsculas.
• -v: muestra las líneas en las que no aparece la cadena buscada. Es el
significado contrario al habitual.
• -l: No muestra las líneas que contienen las cadenas, sólo los nombres de los
archivo.

Veamos algunos ejemplos:

$ # Vamos a realizar varias búsquedas en el directorio
$ # /usr/include en los ficheros con las extensión .h

Página 62 de 328 Introducción a Linux
$#
$#
$ # Buscamos los que contengan la cadena Linux
$#
$ grep Linux /usr/include/*.h
/usr/include/bfd.h:/* Linux shared library support routines for the linker. */
/usr/include/bfdlink.h: wrap_hash. Used by PowerPC Linux for 'dot' symbols. */
/usr/include/expat.h:/* Expat follows the GNU/Linux convention of odd number minor
version for
/usr/include/libmng.h: (eg. Windows, Linux and some others)
/usr/include/libmng.h: TO RECAP: for sRGB systems (Windows, Linux) no action
required!
/usr/include/libmng_types.h:/* * - changed inclusion of lcms.h for Linux platforms * */
/usr/include/pngconf.h:/* This is an attempt to force a single setjmp behaviour on Linux.
If
$#
$ # Ahora sólo el nombre de los archivos
$#
$ grep -l Linux /usr/include/*.h
/usr/include/bfd.h
/usr/include/bfdlink.h
/usr/include/expat.h
/usr/include/libmng.h
/usr/include/libmng_types.h
/usr/include/pngconf.h
$#
$ # Repetimos las búsquedas anteriores pero
$ # sin que me importe si está en mayúsculas o minúsculas
$#
$ # Buscamos los que contengan la cadena Linux
$#
$ grep -i Linux /usr/include/*.h
/usr/include/bfd.h:/* Linux shared library support routines for the linker. */
/usr/include/bfd.h:extern bfd_boolean bfd_i386linux_size_dynamic_sections
/usr/include/bfd.h:extern bfd_boolean bfd_m68klinux_size_dynamic_sections
/usr/include/bfd.h:extern bfd_boolean bfd_sparclinux_size_dynamic_sections
/usr/include/bfdlink.h: wrap_hash. Used by PowerPC Linux for 'dot' symbols. */
/usr/include/expat.h:/* Expat follows the GNU/Linux convention of odd number minor
version for
/usr/include/lcms.h:// like linux, SGI, VAX, FreeBSD, BeOS, etc.
/usr/include/libmng.h: (eg. Windows, Linux and some others)

Plataforma de Teleformación de IFES Página 63 de 328
/usr/include/libmng.h: TO RECAP: for sRGB systems (Windows, Linux) no action
required!
/usr/include/libmng_types.h:/* * - changed inclusion of lcms.h for Linux platforms * */
/usr/include/netdb.h:/* Original linux netdb.h merged with winsock.h types */
/usr/include/netdb.h: /* Different from the linux versions - note the shorts.. */
/usr/include/pngconf.h:/* This is an attempt to force a single setjmp behaviour on Linux.
If
/usr/include/pngconf.h:# ifdef linux
/usr/include/pngconf.h:# endif /* linux */
/usr/include/pngconf.h:# ifdef linux
/usr/include/pngconf.h:# endif /* linux */
$#
$ # Ahora sólo el nombre de los archivos
$#
$ grep -il Linux /usr/include/*.h
/usr/include/bfd.h
/usr/include/bfdlink.h
/usr/include/expat.h
/usr/include/lcms.h
/usr/include/libmng.h
/usr/include/libmng_types.h
/usr/include/netdb.h
/usr/include/pngconf.h
$#
$ # Ahora vamos a buscar los archivos que no
$ # tengan una cadena por ejemplo "function"
$#
$ grep -vl function /usr/include/*.h
/usr/include/Imlib.h
/usr/include/Imlib_private.h
/usr/include/Imlib_types.h
/usr/include/_ansi.h
/usr/include/_syslist.h
....
....
/usr/include/xmi.h
/usr/include/xtiffio.h
/usr/include/zconf.h
/usr/include/zlib.h

Página 64 de 328 Introducción a Linux
cut
Si grep nos permite qué lineas de un archivo nos interesan, la orden cut nos deja elegir
qué parte de la línea queremos ver.

Las dos maneras habituales de indicarle qué queremos ver son:

• cut -f campos -d'delimitador' archivo

Trabajando de esta manera el programa divide cada línea utilizando el delimitador (que
es una letra o un símbolo, como:, o un espacio en blanco, etc.) y nos muestra sólo los
campos que le hayamos indicado con el argumento campos .

Unos ejemplos de indicarle los campos que nos interesarían serían:

• 3 : Sólo sacara el tercer campo.
• 1,5,7 : Sacará los campos 1, 5 y 7.
• 2,6-10 : sacará los campos 1, 6, 7, 8, 9 y 10.
• -5 : sacará todos los campos 1, 2, 3, 4 y 5.
• 3,8- : sacará el campo 3 y desde el campo 8 hasta el final.

Podemos ver que ocurre con el fichero /etc/passwd, que está separado en campos por
':'.

$ # nombres de usuarios
$ cut -f1 -d':' /etc/passwd
SYSTEM
Administradores
Administrador
ASPNET
felix
ifes
Invitado
$ # números de usuario
$ cut -f3 -d':' /etc/passwd
18
544
500
1002
1003
1001
501

Plataforma de Teleformación de IFES Página 65 de 328
$ # nombres y números
$ cut -f1,3 -d':' /etc/passwd
SYSTEM:18
Administradores:544
Administrador:500
ASPNET:1002
felix:1003
ifes:1001
Invitado:501

• La otra manera de trabajar con cut es eligiendo los caracteres que nos
interesan, cut -c caracteres archivo.

Le indicamos qué caracteres nos interesan de la misma manera que los campos.

$ ##############################
$#
$ # sólo las primeras 10 letras
$#
$ cut -c -10 /etc/passwd
SYSTEM:*:1
Administra
Administra
ASPNET:unu
felix:unus
ifes:unuse
Invitado:u
$ ##############################
$#
$ # las siguiente 10 letras
$#
$ cut -c 11-20 /etc/passwd
8:544:,S-1
dores:*:54
dor:unused
sed_by_nt/
ed_by_nt/2
d_by_nt/20
nused_by_n
$ ##############################
$#
$ # Las 20 primeras letras de cada línea

Página 66 de 328 Introducción a Linux
$#
$ cut -c -20 /etc/passwd
SYSTEM:*:18:544:,S-1
Administradores:*:54
Administrador:unused
ASPNET:unused_by_nt/
felix:unused_by_nt/2
ifes:unused_by_nt/20
Invitado:unused_by_n

sed
sed nos permite hacer sustituciones cuando nos muestra un fichero.

Con esta técnica no modificamos los archivos sólo el resultado que aparece, más
adelante sí que lo haremos.

Las sintaxis es sed "s/busqueda/sustitucion/g" archivo .

$ ############################################################
$#
$ # sacamos el archivo original para que podamos comparar
$#
$ cat tmp/carta.txt
Hola, soy felix
El próximo día 8 es mi cumpleaños,
espero que vengas a mi fiesta y traigas muchos
regalos.
Zaragoza, 30 de noviembre de 2008
$ ############################################################
$#
$ # sustituimos felix por mi nombre completo
$#
$ sed "s/felix/Félix Jorge Anadón Trigo/g" tmp/carta.txt
Hola, soy Félix Jorge Anadón Trigo
El próximo día 8 es mi cumpleaños,
espero que vengas a mi fiesta y traigas muchos
regalos.
Zaragoza, 30 de noviembre de 2008
$ ############################################################
$#

Plataforma de Teleformación de IFES Página 67 de 328
$ # sustituimos las letras oes por ceros
$#
$ sed "s/o/O/g" tmp/carta.txt
HOla, sOy felix
El próximO día 8 es mi cumpleañOs,
esperO que vengas a mi fiesta y traigas muchOs
regalOs.
ZaragOza, 30 de nOviembre de 2008
$ ############################################################
$#
$ # sustituimos los dobles espacios por un único espacio
$#
$ sed "s/ / /g" tmp/carta.txt
Hola, soy felix
El próximo día 8 es mi cumpleaños,
espero que vengas a mi fiesta y traigas muchos
regalos.
Zaragoza, 30 de noviembre de 2008

Práctica: Manejo de texto
Este recurso es de tipo Práctica.
Tiene que conectarse a la plataforma para acceder a este recurso.

Instrucciones útiles

Otras instrucciones potentes
seq
Cuando necesitamos una lista de números utilizaremos la orden seq.

Le podemos indicar el inicio el incremento y el final. Si no le ponemos incremento,
supondrá que es 1. Si no le ponemos inicio supondrá que empezaremos desde el 1.

$ ############################################################
$#
$ # orden completa
$#

Página 68 de 328 Introducción a Linux
$ seq 10 2 20
10
12
14
16
18
20
$ ############################################################
$#
$ # sólo ponemos el inicio y el final
$#
$ seq 38 42
38
39
40
41
42
$ ############################################################
$#
$ # solo indicamos hasta donde queremos llegar
$#
$ seq 10
1
2
3
4
5
6
7
8
9
10

find
find es seguramente la orden más compleja y con la página del manual más grande del
entorno Linux.

find sirve para buscar, pero también sirve para buscar y hacer algo con lo encontrado.

Su sintaxis es: find directorio opciones comparaciones acciones

Plataforma de Teleformación de IFES Página 69 de 328
• directorio es el directorio donde vamos a empezar a buscar recursivamente,
es obligatorio, si queremos buscar en el directorio actual tenemos que
indicárselo mediante un punto: (. ).
• opciones: estas opciones cambian el modo en el que se realiza la búsqueda,
como -daystart que hace que los tiempos se busquen teniendo en cuenta
el comienzo del día, no por horas. -maxdepth o -mindepth que regula el
número de directorios donde busca.
• comparaciones: nos permiten elegir lo que queremos buscar. Podemos
buscar por fechas (o minutos) de modificación o de acceso, por tamaños,
nombres o quien es el propietario.
• acciones: lo habitual es mostrarlo por pantalla, pero también podemos hacer
que saque los datos de ese archivo de una manera diferente, o que ejecute
una orden de Unix, como rm, cat, grep, etc. sobre los archivos encontrados.

Vamos a ver unos ejemplos que aporten algo de claridad a esta maraña de opciones.

$ ############################################################
$#
$ # busqueda por nombre
$ # desde el directorio actual
$#
$ find . -name carta.txt
./tmp/carta.txt
$ ############################################################
$#
$ # búsqueda por nombre en todo
$ # el disco duro
$#
$ find / -name passwd
/etc/passwd
$ ############################################################
$#
$ # búsqueda por nombre en todo
$ # el disco duro
$ # con comodines entre comillas
$#
$ find / -name "*.mp3"
/cygdrive/c/Archivos de programa/C-Media 3D Audio/Driver/Advance/MUSIC/
Demo3_Bass.mp3
/cygdrive/c/Archivos de programa/C-Media 3D Audio/Driver/Advance/MUSIC/
Demo3_Front.mp3

Página 70 de 328 Introducción a Linux
/cygdrive/c/Archivos de programa/C-Media 3D Audio/Driver/Advance/MUSIC/
Demo3_Rear.mp3
/cygdrive/c/Archivos de programa/C-Media 3D Audio/Driver/Advance/MUSIC/
Demo3_Side.mp3
/cygdrive/c/Archivos de programa/Winamp/demo.mp3
/cygdrive/c/Documents and Settings/felix/Mis documentos/mp3/campanas.mp3
/cygdrive/c/Documents and Settings/felix/Mis documentos/mp3/cantatas/2/1/
bwv_20_01.mp3
/cygdrive/c/Documents and Settings/felix/Mis documentos/mp3/cantatas/2/1/
bwv_20_02.mp3
/cygdrive/c/Documents and Settings/felix/Mis documentos/mp3/cantatas/2/1/
bwv_20_03.mp3
/cygdrive/c/Documents and Settings/felix/Mis documentos/mp3/cantatas/2/1/
bwv_20_04.mp3
$ ############################################################
$#
$ # búsqueda por fecha de modificación en minutos
$ # menos de 10 en el directorio cursos
$#
$ find cursos -mmin -10
cursos/linux/src
cursos/linux/src/.contenidos.txt.swp
cursos/linux/src/contenidos.txt
cursos/linux/tmp
$ ############################################################
$#
$ # búsqueda fecha de acceso
$ # por días
$ # empezando a las 00 horas de hoy
$ # el disco duro
$#
$ find cursos -daystart -atime -1
cursos
cursos/bin
cursos/bin/hazmenu.pl
cursos/bin/hazmenu.sh
cursos/bin/ponenlaces.sh
cursos/linux
cursos/linux/.vimrc
cursos/linux/admin
cursos/linux/admin/contenidos.txt

Plataforma de Teleformación de IFES Página 71 de 328
cursos/linux/admin/especificaciones.txt
cursos/linux/literal
cursos/linux/literal/img
cursos/linux/literal/img/180px-Linus_Torvalds.jpeg
cursos/linux/literal/img/bios.png
cursos/linux/literal/img/blackbox.jpg
cursos/linux/literal/img/curva_aprendizaje.png
cursos/linux/literal/img/curva_aprendizaje4.png
cursos/linux/literal/img/gnome.png
cursos/linux/literal/img/icewm.jpg
cursos/linux/literal/img/kde.jpg
cursos/linux/literal/img/logo_debian.gif
$ ############################################################
$#
$ # búsqueda por tamaño
$ # archivos de más de 100 kb
$#
$#
$#
$ find cursos -size +100k
cursos/linux/literal/img/blackbox.jpg
cursos/linux/literal/img/gnome.png
cursos/linux/literal/img/icewm.jpg
cursos/linux/literal/img/kde.jpg
cursos/linux/literal/img/xfce.png
cursos/linux/out/img/backbox.jpg
cursos/linux/out/img/blackbox.jpg
cursos/linux/out/img/gnome.png
cursos/linux/out/img/icewm.jpg
cursos/linux/out/img/kde.jpg
cursos/linux/out/img/xfce.png
cursos/linux/src/RCS/contenidos.txt,v

Ahora otra serie de ejemplos con acciones.

$ ############################################################
$#
$ # busqueda por nombre
$ # de archivos vacíos
$ # y posterior borrado
$#

Página 72 de 328 Introducción a Linux
$ find tmp -type f -size 0 -exec rm {} \;
$ ############################################################
$#
$ # búsqueda de archivos que se llaman carta y algo más
$ # sacamos el nombre del archivo y
$ # sacamos las líneas que contienen la cadena Para
$#
$ find . -name "carta*" -print -exec grep Para {} \;
./tmp/carta.txt
./tmp/carta1.txt
Para: mantenimiento
./tmp/carta2.txt
Para: mantenimiento de software

tar
tar sirve para agrupar varios archivos en un único archivo, con o sin compresión.

También sirve para ver el contenido de archivos con formato tar o extraer los archivos
de este formato.

Cuando se agrupa con esta orden a los archivos generados les solemos poner las
extensiones .tar, .tar.gz o.tgz.

Se utiliza profusamente para hacer copias de seguridad, copiar directorios para
trasladarlos y es el formato en el que se distribuyen la mayor parte de los programas
para Linux.

La sintaxis de esta orden es: tar opciones archivos.

Entre estas opciones tiene que estar obligatoriamente una de las siguientes:

• c: para crear un archivo "tar"
• x: para extraer de una archivo "tar"
• t: para listar de un archivo "tar"
• Otras órdenes menos usadas.

Además hay otras opciones que suelen acompañar a las opciones anteriores:

• v: va mostrando qué está haciendo el programa
• z: el fichero que creamos o del que sacamos archivos está comprimido (con
el algoritmo gZip)

Plataforma de Teleformación de IFES Página 73 de 328
• f fichero: sirve para indicarle el archivo dónde metemos los archivos que
queremos agrupar.

Veamos unos ejemplos:

$ # miramos el contenido del directorio tmp
$
$ ls tmp
introduccion_a_linux-50h-mod_01-ud_01-introduccion.htm
introduccion_a_linux-50h-mod_01-ud_02-instalacion.htm
introduccion_a_linux-50h-mod_01-ud_03-historia.htm
introduccion_a_linux-50h-mod_01-ud_04-distribuciones.htm
introduccion_a_linux-50h-mod_01-ud_04-entornos.htm
introduccion_a_linux-50h-mod_02-ud_01-instrucciones_habituales.htm
introduccion_a_linux-50h-mod_02-ud_02-sintaxis_ordenes.htm
introduccion_a_linux-50h-mod_02-ud_03-sistema_de_ficheros.htm
introduccion_a_linux-50h-mod_02-ud_04-instrucciones_de_ficheros.htm
introduccion_a_linux-50h-mod_02-ud_05-instrucciones_de_texto.htm
introduccion_a_linux-50h-mod_02-ud_06-instrucciones_utiles.htm
introduccion_a_linux-50h-mod_03-ud_01-instrucciones_avanzadas.htm
introduccion_a_linux-50h-mod_03-ud_02-editores_de_texto.htm
introduccion_a_linux-50h-mod_anexo-ud_01-glosario.htm
ordenes.txt
separa.smf
$
$ # opción c, creamos un fichero
$ # opción z, estará comprimido
$ # opción v, que nos muestre qué está haciendo
$ # opción f, le indicamos el nombre del fichero (tmp.tar.gz)
$ # qué vamos a meter, el directorio tmp
$
$ # podríamos escribirlo:
$ # tar -c -z -v -f tmp.tar.gz tmp
$
$ # pero se pueden agrupar las órdenes y
$ # escribirlo así:
$
$ tar czvf tmp.tar.gz tmp
tmp/
tmp/introduccion_a_linux-50h-mod_01-ud_01-introduccion.htm
tmp/introduccion_a_linux-50h-mod_01-ud_02-instalacion.htm

Página 74 de 328 Introducción a Linux
tmp/introduccion_a_linux-50h-mod_01-ud_03-historia.htm
tmp/introduccion_a_linux-50h-mod_01-ud_04-distribuciones.htm
tmp/introduccion_a_linux-50h-mod_01-ud_04-entornos.htm
tmp/introduccion_a_linux-50h-mod_02-ud_01-instrucciones_habituales.htm
tmp/introduccion_a_linux-50h-mod_02-ud_02-sintaxis_ordenes.htm
tmp/introduccion_a_linux-50h-mod_02-ud_03-sistema_de_ficheros.htm
tmp/introduccion_a_linux-50h-mod_02-ud_04-instrucciones_de_ficheros.htm
tmp/introduccion_a_linux-50h-mod_02-ud_05-instrucciones_de_texto.htm
tmp/introduccion_a_linux-50h-mod_02-ud_06-instrucciones_utiles.htm
tmp/introduccion_a_linux-50h-mod_03-ud_01-instrucciones_avanzadas.htm
tmp/introduccion_a_linux-50h-mod_03-ud_02-editores_de_texto.htm
tmp/introduccion_a_linux-50h-mod_anexo-ud_01-glosario.htm
tmp/ordenes.txt
tmp/separa.smf
$
$ # para ver su contenido usamos
$ # la opción t
$
$ tar tzf tmp.tar.gz
tmp/
tmp/introduccion_a_linux-50h-mod_01-ud_01-introduccion.htm
tmp/introduccion_a_linux-50h-mod_01-ud_02-instalacion.htm
tmp/introduccion_a_linux-50h-mod_01-ud_03-historia.htm
tmp/introduccion_a_linux-50h-mod_01-ud_04-distribuciones.htm
tmp/introduccion_a_linux-50h-mod_01-ud_04-entornos.htm
tmp/introduccion_a_linux-50h-mod_02-ud_01-instrucciones_habituales.htm
tmp/introduccion_a_linux-50h-mod_02-ud_02-sintaxis_ordenes.htm
tmp/introduccion_a_linux-50h-mod_02-ud_03-sistema_de_ficheros.htm
tmp/introduccion_a_linux-50h-mod_02-ud_04-instrucciones_de_ficheros.htm
tmp/introduccion_a_linux-50h-mod_02-ud_05-instrucciones_de_texto.htm
tmp/introduccion_a_linux-50h-mod_02-ud_06-instrucciones_utiles.htm
tmp/introduccion_a_linux-50h-mod_03-ud_01-instrucciones_avanzadas.htm
tmp/introduccion_a_linux-50h-mod_03-ud_02-editores_de_texto.htm
tmp/introduccion_a_linux-50h-mod_anexo-ud_01-glosario.htm
tmp/ordenes.txt
tmp/separa.smf
$
$ # podemos borrar el directorio tmp
$ # pues tenemos una copia en tmp.tar.gz
$
$ ls tmp*

Plataforma de Teleformación de IFES Página 75 de 328
tmp.tar.gz
tmp:
introduccion_a_linux-50h-mod_01-ud_01-introduccion.htm
introduccion_a_linux-50h-mod_01-ud_02-instalacion.htm
introduccion_a_linux-50h-mod_01-ud_03-historia.htm
introduccion_a_linux-50h-mod_01-ud_04-distribuciones.htm
introduccion_a_linux-50h-mod_01-ud_04-entornos.htm
introduccion_a_linux-50h-mod_02-ud_01-instrucciones_habituales.htm
introduccion_a_linux-50h-mod_02-ud_02-sintaxis_ordenes.htm
introduccion_a_linux-50h-mod_02-ud_03-sistema_de_ficheros.htm
introduccion_a_linux-50h-mod_02-ud_04-instrucciones_de_ficheros.htm
introduccion_a_linux-50h-mod_02-ud_05-instrucciones_de_texto.htm
introduccion_a_linux-50h-mod_02-ud_06-instrucciones_utiles.htm
introduccion_a_linux-50h-mod_03-ud_01-instrucciones_avanzadas.htm
introduccion_a_linux-50h-mod_03-ud_02-editores_de_texto.htm
introduccion_a_linux-50h-mod_anexo-ud_01-glosario.htm
ordenes.txt
separa.smf
$
$ # borramos el directorio tmp
$
$ rm -rf tmp
$
$ # ¡mucho cuidado al usar rm -rf!
$
$ # restauramos el directorio desde el archivo tar
$
$ tar xzvf tmp.tar.gz
tmp/
tmp/introduccion_a_linux-50h-mod_01-ud_01-introduccion.htm
tmp/introduccion_a_linux-50h-mod_01-ud_02-instalacion.htm
tmp/introduccion_a_linux-50h-mod_01-ud_03-historia.htm
tmp/introduccion_a_linux-50h-mod_01-ud_04-distribuciones.htm
tmp/introduccion_a_linux-50h-mod_01-ud_04-entornos.htm
tmp/introduccion_a_linux-50h-mod_02-ud_01-instrucciones_habituales.htm
tmp/introduccion_a_linux-50h-mod_02-ud_02-sintaxis_ordenes.htm
tmp/introduccion_a_linux-50h-mod_02-ud_03-sistema_de_ficheros.htm
tmp/introduccion_a_linux-50h-mod_02-ud_04-instrucciones_de_ficheros.htm
tmp/introduccion_a_linux-50h-mod_02-ud_05-instrucciones_de_texto.htm
tmp/introduccion_a_linux-50h-mod_02-ud_06-instrucciones_utiles.htm
tmp/introduccion_a_linux-50h-mod_03-ud_01-instrucciones_avanzadas.htm

Página 76 de 328 Introducción a Linux
tmp/introduccion_a_linux-50h-mod_03-ud_02-editores_de_texto.htm
tmp/introduccion_a_linux-50h-mod_anexo-ud_01-glosario.htm
tmp/ordenes.txt
tmp/separa.smf
$

zip/unzip
zip y unzip se usan para comprimir o descomprimir grupos de archivos.

Normalmente se usa cuando estamos compartiendo datos con usuarios de Windows,
que utilizan habitualmente este formato.

Para comprimir se escribe: zip ficherozip lista de ficheros o directorios.

Para descomprimir se escribe: unzip ficherozip.

Búsqueda de archivos
Búsqueda de archivos

La búsqueda de archivos que tiene Linux es mucho más potente que cualquier búsqueda de
archivos que hayamos usado antes.
El pequeño esfuerzo de aprender el comando find nos compensará con creces cuando
tengamos que buscar archivos o analizar el sistema.

Tipos de búsquedas

Con find podemos buscar archivos según los siguientes criterios:

Además, podremos hacer algo con los archivos encontrados, como borrarlos, copiarlos,
hacer una copia de seguridad...
La sintáxis de find es:
find lugar opciones acciones

Ejemplos con tiempos

Buscar archivos que han sido modificados en Buscar archivos que son más viejos de 30
los últimos 5 días días
find . -mtime -7 find . -mtime +30

Plataforma de Teleformación de IFES Página 77 de 328
Buscar archivos que son más viejos de 30 Buscar archivos que son más viejos de 30
días y borrarlos días y copiarlos a /tmp
find . -mtime +30 -exec rm {} \; find . -mtime +30 -exec cp {} /tmp \;

Otros ejemplos

Buscar archivos que ocupan más de 2048 Buscar archivos que puede ejecutar todo el
kilobytes mundo
find . -size +2048k find . -perm 0755
Buscar archivos del usuario root Buscar archivos cuyo nombre acaba en .pdf
find . -user root find . -name '*.pdf'

Empaquetado de archivos
Empaquetar

A menudo queremos empaquetar un
conjunto de archivos para copiarlos a otro
lugar, enviarlos por correo o hacer una copia
de seguridad

Tar

La órden que usamos en Linux para Empaquetamos así:
empaquetar es tar tar cf paquete.tar file1 file2 ...
Desempaquetamos así: Miramos el contenido de un paquete así:
tar xf paquete.tar tar tf paquete.tar

Comprimir

Página 78 de 328 Introducción a Linux
Muchas veces aprovecharemos para
comprimir el archivo para que ocupe menos

Algoritmos

Existen diferentes archivos de compresión. PKZIP
Los más usados son: La extensión suele ser .zip
Se usa mucho en sistemas Windows
GZIP BZIP2
La extensión suele ser .gz ó .tgz La extensión suele ser .bz2
Es el más usado en Linux, comprime mejor Es el más moderno y el que más comprime
que PKZIP

Gzip y Bz2

Usamos compresión GZIP añadiendo el Usamos compresión BZIP2 añadiendo el
parámetro z parámetro j
tar czf paquete.tar.gz file1 file2 ... tar cjf paquete.tar.gz file1 file2 ...
tar xzf paquete.tar.gz tar xjf paquete.tar.gz

Zip

Además podemos usar los archivos .zip, usados comúnmente en los sistemas Windows con
los comandos zip y unzip
Comprimir:
zip -r paquete.zip file1 file2
Descomprimir
unzip paquete.zip

Autoevaluación: Órdenes comunes

Pregunta 1:
La instrucción para ver el contenido de un archivo muy grande es:

Plataforma de Teleformación de IFES Página 79 de 328
• cat
• less
• ls
• wc

Respuesta correcta: less

Pregunta 2:
Si queremos saber el número de usuarios que hay en un sistema podemos contar

las líneas del fichero /etc/passwd, ¿cuál sería la orden?
Respuesta correcta: wc -l /etc/passwd

Pregunta 3:
Para saber de qué tipo es un fichero utilizaremos la orden:

• wc
• file
• head
• tail

Respuesta correcta: file

Pregunta 4:
Para saber qué valores contiene la variable PATH utilizaremos:

• ls $PATH
• cat $PATH
• echo $PATH
• file $PATH

Respuesta correcta: echo $PATH

Pregunta 5:
Para hacer una copia de seguridad de un directorio utilizaremos la orden:

Respuesta correcta: tar czvf copia.tar.gz directorio

Sopa de letras
Este recurso es de tipo Multimedia.
Tiene que conectarse a la plataforma para acceder a este recurso.

Página 80 de 328 Introducción a Linux
Introducción a Linux

Cuestionario de evaluación procesual
Este recurso es de tipo Encuesta.
Tiene que conectarse a la plataforma para acceder a este recurso.

Plataforma de Teleformación de IFES Página 81 de 328
Introducción a Linux

Evaluación segunda
Este recurso es de tipo Evaluación.
Debe conectarse a la plataforma para realizar la evaluación. Recuerde que las
evaluaciones son obligatorias ya que determinan la nota final.

Página 82 de 328 Introducción a Linux
Introducción a Linux

Módulo III. Órdenes avanzadas
Redirecciones
La redirección es una de las herramientas más potentes cuando trabajamos con la
consola de Linux.

Hasta ahora, cuando ejecutábamos una orden el resultado salía por pantalla, la
pantalla es lo que se conoce como salida estándar.

Podemos decirle que cuando ejecute una orden el resultado no salga por pantalla
sino que lo redirija a un fichero (por ejemplo). De esto ya hemos visto ejemplos en los
ejercios del curso.

Redirección de la salida estándar
Para redirigir la salida estándar a un fichero tenemos que terminar la orden con el
símbolo mayor que (> ) y el nombre del fichero donde vamos a guardar los resultados
de la ejecución.

$ # ejemplo de redirección
$
$ cal -m 5 2006 > tmp/calendario.txt
$
$ # Hemos ejecutado la orden cal(endario) con la opción
$ # -m (las semanas empiezan en monday, lunes)
$ # pero por pantalla no aparece nada, el resultado está
$ # guardado en el archivo calendario.txt dentro del directorio tmp
$
$ # Podemos verlo utilizando la orden less o cat
$
$ cat tmp/calendario.txt
May 2006
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21

Plataforma de Teleformación de IFES Página 83 de 328
22 23 24 25 26 27 28
29 30 31
$

Cuando redirigimos la salida de una orden a un fichero y éste no existe el sistema lo
crea antes de escribir en él.

Si el fichero ya existe y redirigimos a él una orden, su contenido es borrado antes de
empezar a escribir en él.

Si queremos añadir al final de un fichero el resultado de una orden, sin borrar el
contenido previo, tendremos que utilizar el operador >>.

$ # guardo la fecha actual en un fichero.
$
$ date > fecha.txt
$
$ cat fecha.txt
Fri Dec 2 09:51:22 2005
$
$ # vuelvo a guardarla
$
$ date > fecha.txt
$
$ cat fecha.txt
Fri Dec 2 09:51:31 2005
$
$ # ¡la primera fecha ha desaparecido!
$
$ # para no borrar las anteriores utilizamos el
$ # operador >>, que añade el resultado de la orden
$ # al final del archivo.
$
$ date >> fecha.txt
$ echo "---------------" >> fecha.txt
$ cal -m >> fecha.txt
$ cat fecha.txt
Fri Dec 2 09:51:31 2005
Fri Dec 2 09:51:32 2005
---------------
December 2005
Mo Tu We Th Fr Sa Su

Página 84 de 328 Introducción a Linux
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
$

Redirección de la entrada estándar
La entrada estándar es mucho menos importante que la salida estándar, en casi todas
las órdenes se puede poner como argumento el nombre de un fichero que es lo que
hace la redirección de la entrada.

Algunas órdenes no tienen la opción de indicarle el nombre de un fichero, pero la
redirección funciona siempre.

Para redireccionar la entrada se pone el símbolo < seguido del archivo con el que
queremos alimentar el archivo.

$ # creo un fichero con números
$
$ seq 20 > tmp/numeros.txt
$
$ # lo ordeno mediante sort
$
$ sort tmp/numeros.txt
1
10
11
12
13
14
15
16
17
18
19
2
20
3
4

Plataforma de Teleformación de IFES Página 85 de 328
5
6
7
8
9
$
$ # con sort no haría falta redireccionar
$ # pero lo hacemos por motivos didácticos
$
$ sort < tmp/numeros.txt
1
10
11
12
13
14
15
16
17
18
19
2
20
3
4
5
6
7
8
9

Redirección de los errores
Cuando ejecutamos un programa y se producen errores, por la pantalla salen tanto los
errores como los resultados correctos.

Por ejemplo, si nos ponemos a buscar en todo el disco duro, habrá carpetas donde no
tengamos permisos de escritura y nos saldrá un error.

Para que los errores no salgan por pantalla los podemos redirigir con el operador 2>

Página 86 de 328 Introducción a Linux
No podemos separar el 2 del > .

$ # buscamos los archivos que tengan más de un mega
$ # en el disco duro
$ # y metemos sus nombres en el archivo grandes.txt
$#
$ # los errores los metemos en grandes.errores
$
$ find / -size +1000k > tmp/grandes.txt 2> tmp/grandes.errores
$
$ # miramos a ver cuantos archivos hay y cuantos errores se han producido.
$
$ wc -l tmp/grandes.*
6 tmp/grandes.errores
781 tmp/grandes.txt
787 total

Si sabemos que se van a producir errores pero no nos interesan se pueden redirigir al
dispositivo nulo, que es como tirarlos a la basura.

$ # buscamos los archivos que tengan más de un mega
$ # en el disco duro
$ # y los metemos el archivo grandes.txt
$#
$ # los errores los eliminamos
$
$ find / -size +1000k > tmp/grandes.txt 2> /dev/null
$
$ # miramos a ver cuantos archivos hay
$
$ wc -l tmp/grandes.*
781 tmp/grandes.txt

Uso de tuberías
Es muy común que el resultado de una orden lo queramos volver a tratar mediante otra
orden por ejemplo:

$ # vamos a buscar cuál es el número asociado a un usuario determinado
$
$ # buscamos en el archivo etc/passwd los usuarios que se llaman felix

Plataforma de Teleformación de IFES Página 87 de 328
$ # y lo guardamos para su posterior tratamiento
$
$ grep felix /etc/passwd > tmp/felix.txt
$
$ # podemos ver qué hemos obtenido con
$
$ cat tmp/felix.txt
felix:unused_by_nt/2000/xp:1003:513:U-
NUEVO2felix,S-1-5-21-2000478354-1563985344-839522115-1003:/home/felix:/bin/
bash
$
$ # como nos interesa el tercer campo lo cortamos con cut
$
$ cut -d':' -f 3 tmp/felix.txt
1003
$
$ # ahora ya podemos borrar el archivo temporal
$
$ rm tmp/felix.txt
$

Todo lo anterior lo podemos escribir de forma mucho más resumida utilizando tuberías
(mediante el símbolo | ) que pasa la salida de una orden a la siguiente.

$ grep felix /etc/passwd | cut -d':' -f 3
1003

Se pueden concatenar varias tuberías, no sólo una:

$ find / -name '*.h' | grep "sys" | head -n 30 | less
/cygdrive/c/WINNT/system32/faxcount.h
/cygdrive/c/WINNT/system32/iasperf.h
/cygdrive/c/WINNT/system32/msdtcprf.h
/cygdrive/c/WINNT/system32/perfci.h
/cygdrive/c/WINNT/system32/perffilt.h
/cygdrive/c/WINNT/system32/perfwci.h
/cygdrive/c/WINNT/system32/pschdcnt.h
/cygdrive/c/WINNT/system32/rasctrnm.h
/cygdrive/c/WINNT/system32/rsvpcnts.h
/home/felix/tmp/blame-1.3/lib/sysexit_.h
/home/felix/tmp/blame-1.3/src/system.h
/lib/gcc/i686-pc-cygwin/3.4.4/include/syslimits.h

Página 88 de 328 Introducción a Linux
/lib/gcc/i686-pc-cygwin/3.4.4/install-tools/gsyslimits.h
/lib/gcc/i686-pc-mingw32/3.4.4/include/syslimits.h
/lib/gcc/i686-pc-mingw32/3.4.4/install-tools/gsyslimits.h
/lib/perl5/5.8/cygwin/CORE/iperlsys.h
/usr/include/cygwin/in_systm.h
/usr/include/cygwin/sysproto.h
/usr/include/gtk-2.0/gtk/gtkfilesystem.h
/usr/include/mingw/sys/fcntl.h
/usr/include/mingw/sys/file.h
/usr/include/mingw/sys/locking.h
/usr/include/mingw/sys/param.h
/usr/include/mingw/sys/stat.h
/usr/include/mingw/sys/time.h
/usr/include/mingw/sys/timeb.h
/usr/include/mingw/sys/types.h
/usr/include/mingw/sys/unistd.h
/usr/include/mingw/sys/utime.h
/usr/include/netinet/in_systm.h
$
$ # buscamos archivos que acaben en .h
$ # nos quedamos con los que contengan el texto sys
$ # nos quedamos con las 30 primeras
$ # lo vemos poco a poco con un programa interactivo

Podemos ir viendo cómo se van uniendo las órdenes escribiendo la primera orden,
recuperándola y poniendo la tubería y la siguiente orden, y así sucesivamente y vemos
cómo va quedando.

$ find / -name '*.h'
/lib/gcc/i686-pc-cygwin/3.4.4/install-tools/include/stddef.h
/lib/gcc/i686-pc-cygwin/3.4.4/install-tools/include/unwind.h
....
....
/usr/X11R6/include/Xm/XmosP.h
/usr/X11R6/include/Xm/XmP.h
/usr/X11R6/include/Xm/XmStrDefs.h
/usr/X11R6/include/Xm/XpmP.h
$
$ # ejecutamos la primera orden
$
$ # vemos que está sacando montones de archivos

Plataforma de Teleformación de IFES Página 89 de 328
$ # recuperamos la orden y la añadimos la tubería
$ # y la orden grep para limitar qué resultados se muestran
$
$ find / -name '*.h' | grep "sys"
/cygdrive/c/WINNT/system32/faxcount.h
/cygdrive/c/WINNT/system32/iasperf.h
/cygdrive/c/WINNT/system32/msdtcprf.h
/cygdrive/c/WINNT/system32/perfci.h
/cygdrive/c/WINNT/system32/perffilt.h
/cygdrive/c/WINNT/system32/perfwci.h
/cygdrive/c/WINNT/system32/pschdcnt.h
/cygdrive/c/WINNT/system32/rasctrnm.h
/cygdrive/c/WINNT/system32/rsvpcnts.h
/home/felix/tmp/blame-1.3/lib/sysexit_.h
/home/felix/tmp/blame-1.3/src/system.h
/lib/gcc/i686-pc-cygwin/3.4.4/include/syslimits.h
/lib/gcc/i686-pc-cygwin/3.4.4/install-tools/gsyslimits.h
/lib/gcc/i686-pc-mingw32/3.4.4/include/syslimits.h
/lib/gcc/i686-pc-mingw32/3.4.4/install-tools/gsyslimits.h
/lib/perl5/5.8/cygwin/CORE/iperlsys.h
/usr/include/sys/acl.h
/usr/include/sys/cdefs.h
....
....
/usr/lib/gcc/i686-pc-cygwin/3.4.4/install-tools/gsyslimits.h
/usr/lib/gcc/i686-pc-mingw32/3.4.4/include/syslimits.h
/usr/lib/gcc/i686-pc-mingw32/3.4.4/install-tools/gsyslimits.h
/usr/lib/perl5/5.8/cygwin/CORE/iperlsys.h
$
$ # vemos que está sacando sólo los que contienen el texto sys
$ # recuperamos la orden y la añadimos la tubería
$ # y la orden head para que sólo saque 30
$
$ find / -name '*.h' | grep "sys" | head -n 30
/cygdrive/c/WINNT/system32/faxcount.h
/cygdrive/c/WINNT/system32/iasperf.h
/cygdrive/c/WINNT/system32/msdtcprf.h
/cygdrive/c/WINNT/system32/perfci.h
/cygdrive/c/WINNT/system32/perffilt.h
/cygdrive/c/WINNT/system32/perfwci.h
/cygdrive/c/WINNT/system32/pschdcnt.h

Página 90 de 328 Introducción a Linux
/cygdrive/c/WINNT/system32/rasctrnm.h
/cygdrive/c/WINNT/system32/rsvpcnts.h
/home/felix/tmp/blame-1.3/lib/sysexit_.h
/home/felix/tmp/blame-1.3/src/system.h
/lib/gcc/i686-pc-cygwin/3.4.4/include/syslimits.h
/lib/gcc/i686-pc-cygwin/3.4.4/install-tools/gsyslimits.h
/lib/gcc/i686-pc-mingw32/3.4.4/include/syslimits.h
/lib/gcc/i686-pc-mingw32/3.4.4/install-tools/gsyslimits.h
/lib/perl5/5.8/cygwin/CORE/iperlsys.h
/usr/include/cygwin/in_systm.h
/usr/include/cygwin/sysproto.h
/usr/include/gtk-2.0/gtk/gtkfilesystem.h
/usr/include/mingw/sys/fcntl.h
/usr/include/mingw/sys/file.h
/usr/include/mingw/sys/locking.h
/usr/include/mingw/sys/param.h
/usr/include/mingw/sys/stat.h
/usr/include/mingw/sys/time.h
/usr/include/mingw/sys/timeb.h
/usr/include/mingw/sys/types.h
/usr/include/mingw/sys/unistd.h
/usr/include/mingw/sys/utime.h
/usr/include/netinet/in_systm.h
$
$ # vemos que está sacando sólo los 30 primeros
$ # recuperamos la orden y la añadimos la tubería
$ # y la orden less para poder leerlo con comodidad
$
$ find / -name '*.h' | grep "sys" | head -n 30 | less
/cygdrive/c/WINNT/system32/faxcount.h
/cygdrive/c/WINNT/system32/iasperf.h
/cygdrive/c/WINNT/system32/msdtcprf.h
/cygdrive/c/WINNT/system32/perfci.h
/cygdrive/c/WINNT/system32/perffilt.h
/cygdrive/c/WINNT/system32/perfwci.h
/cygdrive/c/WINNT/system32/pschdcnt.h
/cygdrive/c/WINNT/system32/rasctrnm.h
/cygdrive/c/WINNT/system32/rsvpcnts.h
/home/felix/tmp/blame-1.3/lib/sysexit_.h
/home/felix/tmp/blame-1.3/src/system.h
/lib/gcc/i686-pc-cygwin/3.4.4/include/syslimits.h

Plataforma de Teleformación de IFES Página 91 de 328
/lib/gcc/i686-pc-cygwin/3.4.4/install-tools/gsyslimits.h
/lib/gcc/i686-pc-mingw32/3.4.4/include/syslimits.h
/lib/gcc/i686-pc-mingw32/3.4.4/install-tools/gsyslimits.h
/lib/perl5/5.8/cygwin/CORE/iperlsys.h
/usr/include/cygwin/in_systm.h
/usr/include/cygwin/sysproto.h
/usr/include/gtk-2.0/gtk/gtkfilesystem.h
/usr/include/mingw/sys/fcntl.h
/usr/include/mingw/sys/file.h
/usr/include/mingw/sys/locking.h
/usr/include/mingw/sys/param.h
/usr/include/mingw/sys/stat.h
/usr/include/mingw/sys/time.h
/usr/include/mingw/sys/timeb.h
/usr/include/mingw/sys/types.h
/usr/include/mingw/sys/unistd.h
/usr/include/mingw/sys/utime.h
/usr/include/netinet/in_systm.h

Es muy habitual acabar una orden que genera muchas líneas con | less para poder
verlas más cómodamente.

También son finalizaciones habituales | wc para saber cuantas líneas genera o | grep
cadena para quedarnos sólo con las líneas que nos interesan.

Concatenar órdenes

Órdenes seguidas
Normalmente cuando tenemos que poner varias órdenes se escriben en diferentes
líneas.

El mismo resultado se produce si las escribimos en la misma línea, separadas por
punto y coma (; ).

$ # es lo mismo escribir
$
$ ls tmp/*.txt
tmp/calculos.txt
tmp/calendario.txt
tmp/carta.txt

Página 92 de 328 Introducción a Linux
tmp/carta1.txt
tmp/carta2.txt
tmp/grandes.txt
tmp/last_sesion.txt
tmp/numeros.txt
tmp/ordenes.txt
$ date
Fri Dec 2 12:01:41 2005
$
$ # que separarlo con punto y coma
$ ls tmp/*.txt; date
tmp/calculos.txt
tmp/calendario.txt
tmp/carta.txt
tmp/carta1.txt
tmp/carta2.txt
tmp/grandes.txt
tmp/last_sesion.txt
tmp/numeros.txt
tmp/ordenes.txt
Fri Dec 2 12:01:41 2005

Tanto la separación en diferentes líneas como con punto y coma hacen que se ejecuten
las órdenes, una después de otra independientemente de si se han ejecutado bien o
mal.

A veces querremos que una orden se ejecute sólo si la orden anterior se ha realizado
con éxito.

$ tar czvf usuario.tar.gz proyecto;rm -rf proyecto

En el código anterior realizamos una copia de seguridad del directorio proyecto y a
continuación lo borramos.

Si la copia de seguridad no se ha producido porque hemos escrito algo mal o no
tenemos permisos de escritura o está el disco lleno o cualquier otra cosa, el directorio
se borrará de cualquier manera, habremos perdido el directorio sin tener la copia de
seguridad.

Plataforma de Teleformación de IFES Página 93 de 328
Ejecución condicional
Para asegurarnos de que una orden se ejecute sólo si la anterior se ha realizado las
concatenaremos con el símbolo && , sin separar.

$ tar czvf usuario.tar.gz proyecto && rm -rf proyecto

con este código creamos el archivo donde guardamos la copia de seguridad y sólo en
el caso de que todo haya ido bien borraremos el directorio.

Otras veces querremos que se ejecute una segunda orden sólo si la primera ha fallado.

Para concatenar órdenes y que se ejecute la segunda sólo cuando falle la primera se
utiliza el símbolo || .

Así en

cat /etc/passwd || echo "no puedo abrirlo" >> /tmp/errores.txt

Si se puede abrir, la segunda orden no se ejecuta. Si no lo podemos abrir, por el motivo
que sea, ejecutaremos la orden echo, que guardará un texto en el archivo errores.txt.

Agrupar órdenes con paréntesis
Hay veces que queremos agrupar varias órdenes para ejecutarlas si se cumple una
condición o queremos que el resultado de todas ellas vaya a un único archivo. Para
hacer esto se ponen las órdenes entre paréntesis.

$ echo escribe el año;read a; cal -m $a || (echo el mes $a no es correcto; cal -m -y)

En el ejemplo anterior el sistema nos pide el valor de la variable a , donde
almacenamos el año que nos interesa, intentamos sacar el calendario de ese año y si
se produce un fallo realizamos dos acciones, ya que están entre paréntesis, sacar un
mensaje de error y sacar el calendario del año actual). Los años válidos son del 1 al
9999.

$ (date;echo;cal -m;pwd) > /tmp/estado.txt

es una manera mucho más corta (y elegante) que escribir:

$ date >/tmp/estado.txt
$ echo >>/tmp/estado.txt

Página 94 de 328 Introducción a Linux
$ cal -m >> /tmp/estado.txt
$ pwd >>/tmp/estado.txt

Uso de variables
Las variables sirven para almacenar valores para utilizarlos más adelante.

Las variables se pueden establecer de dos maneras:

$ a=32
$ read b
hola

• poniendo el nombre de la variable, el símbolo = y el valor que se le asigna.
No puede haber espacios antes ni después del igual. Si el valor va a tener
espacios hay que ponerlo entre comillas.
• leyendo el valor de la variable interactivamente con la orden read .:

Para utilizar el valor de una variable tenemos que añadirle el símbolo del dolar ($ )
antes del nombre.

Utilizando variables podemos ahorrarnos tener que escribir mucho texto.

$ t=/tmp/archivo_temporal.txt
$
$ find / -size +10000k > $t
$ wc $t
$ head $t
$ rm -f $t

Nos hemos creado la variable t con el valor de un archivo que se utiliza mucho. Así
en las siguientes órdenes sólo escribimos $t y no tenemos que escribir el nombre
completo.

Cuando veamos las estructuras de control veremos más utilidades de las variables.

Variables del sistema
El sistema define y utiliza varias variables que podemos ver y utilizar.

Por ejemplo la variable HOME indica cuál es nuestro directorio personal. Podemos ver
su valor con la instrucción:

Plataforma de Teleformación de IFES Página 95 de 328
$ echo $HOME

Si hacemos un programa que depende del directorio del usuario podemos poner esta
variable en lugar de tener que modificarlo.

Para ver las variables del sistema utilizamos la orden set.

Para ver todas utilizamos esta orden pero con tuberías set | less o set | grep -i home.

Uso de comillas
En el shell utilizamos 3 tipos de comillas.

• comilla simple ('). En la tecla a la derecha el cero. Sirve para escribir texto
literal.
• comilla doble ("). En la tecla del 2 con mayúsculas pulsadas. Si dentro de
estas comillas hay una variable se sustituye por su valor.
• comilla grave (`). En la tecla que hay a la derecha de la tecla p, al pulsarla no
sale nada en la pantalla, hay que pulsar un espacio después. Su contenido
se ejecuta y es sustituido por el resultado de la ejecución.

$ # uso de las comillas para asignar un valor que tiene espacios
$
$ v="¿alguien ha visto un pingüino resfriado?"
$
$ echo 'no sustituyo las variables ($v)'
no sustituyo las variables ($v)
$
$ echo "con comillas dobles sí ($v)"
con comillas dobles sí (¿alguien ha visto un pingüino resfriado?")
$
$ # uso de comillas graves
$
$ echo "hoy es `date`"
hoy es Fri Dec 2 13:08:53 2005

Estructuras de control
Las estructuras de control son "instrucciones" que hacen que unas órdenes se repitan o
se ejecuten de forma condicionada por variables o estados del sistema.

Página 96 de 328 Introducción a Linux
Todos los lenguajes de programación tienen estructuras de control, pero esto es un
entorno de trabajo, las estructuras nos permiten hacer gran cantidad de cosas en poco
tiempo.

for
La estructura for hace que se repitan una serie de órdenes asignando a una variable
un valor diferente cada vez que se repite el bucle.

for i in pepe juan ana
do
tar czvf /var/backup/$i.tar.gz /home/$i && rm -rf /home/$i
done

Como podemos ver en el ejemplo anterior for va seguido del nombre de la variable que
vamos a utilizar, en este caso i, después la palabra in seguida de una lista de palabras,
letras o números que son los valores que irá tomando la variable. Después de la lista
viene la palabra do indicando que empiezan las órdenes que se van a repetir. Después
de las órdenes hay que poner la palabra done para indicar que hemos acabado las
órdenes que se repiten.

Vamos a seguir paso a paso qué hace el código anterior:

• asigna a i el valor pepe.
• crea el archivo /var/backup/pepe.tar.gz partiendo del directorio /home/pepe.
• si se ha ejecutado bien la orden anterior se borra el directorio /home/pepe.
• asigna a i el valor juan.
• crea el archivo /var/backup/juan.tar.gz partiendo del directorio /home/juan.
• si se ha ejecutado bien la orden anterior se borra el directorio /home/juan.
• asigna a i el valor ana.
• crea el archivo /var/backup/ana.tar.gz partiendo del directorio /home/ana.
• si se ha ejecutado bien la orden anterior se borra el directorio /home/ana.
• terminamos el bucle.

Podemos hacer bucles que combinen los conocimientos anteriores:

$ for i in enero febrero marzo abril;do echo "$i tiene `echo $i|wc -c` letras";done
enero tiene 6 letras
febrero tiene 8 letras
marzo tiene 6 letras
abril tiene 6 letras

Plataforma de Teleformación de IFES Página 97 de 328
La instrucción superior tiene una alta densidad de técnicas recientemente aprendidas,
vamos a verlas con más detalle:

• Separación mediante ; . Debemos fijarnos que al acabar la lista (abril ), va un
punto y coma, pero no va después de do.
• Dentro de la cadena de echo sacamos el valor de la variable i.
• Utilizamos comillas graves para sacar el resultado de ejecutar una orden.
• En este caso la orden que se ejecuta es la combinación de dos órdenes
unidas mediante una tubería, la salida de la orden echo se le pasa a wc
para que cuente cuantas letras tiene. Como wc -c cuenta también el carácter
de retorno, nos muestra una letra de más. Podíamos arreglarlo pasándole
menos letras. Lo siguiente ya es para nota.

$ for i in enero febrero marzo abril;do echo "$i tiene `echo $i|cut -c 2- |wc -c`
letras";done
enero tiene 5 letras
febrero tiene 7 letras
marzo tiene 5 letras
abril tiene 5 letras

Si queremos realizar un bucle numérico como en muchos lenguajes de programación
podemos usar como lista del for la orden seq entre comillas graves.

$ for i in `seq 1 10`;do echo hola $i;done
hola 1
hola 2
hola 3
hola 4
hola 5
hola 6
hola 7
hola 8
hola 9
hola 10

Autoevaluación: Comandos avanzados

Pregunta 1:
Si queremos añadir la salida de una orden al principio de un fichero usaremos el
operador:

Página 98 de 328 Introducción a Linux
• >
• 2>
• >>
• no se puede

Respuesta correcta: no se puede

Pregunta 2:
Si queremos tener en un archivo los números pares hasta el 100, la orden será:

Respuesta correcta: seq 2 2 100 > pares.txt

Pregunta 3:
Si queremos saber qué archivos han cambiado en mi directorio en los últimos 2

días, ¿qué orden no es correcta?
• cd;find . -mtime -2
• find $HOME -type f -mtime -2
• find $HOME -daystart -mtime -2
• find $HOME -mmin -2

Respuesta correcta: find $HOME -mmin -2

Pregunta 4:
Si queremos saber qué archivos son mayores de 1 megabyte y que no se hayan

mirado desde hace más de 30 días, para guardarlo en un archivo ¿cuál será la
orden?
Respuesta correcta: find / -size +1024k -atime +30 > gor.txt

Práctica: Comandos avanzados
Este recurso es de tipo Práctica.
Tiene que conectarse a la plataforma para acceder a este recurso.

Editores de texto
Un editor de texto es simplemente un programa que nos permite escribir y modificar
archivos de texto.

Los editores de texto nos permiten también escribir programas, varias órdenes
seguidas en diferentes líneas, hacer pruebas y volver a modificar los archivos de texto.

Plataforma de Teleformación de IFES Página 99 de 328
Entre los programadores usuarios de Linux la mayoría utiliza Vim o Emacs, que son
editores de texto con multitud de trucos, opciones y atajos. Pero cuesta mucho tiempo
aprender a manejarlos con soltura.

Editor vim.

Si no se va a trabajar intensivamente en modo consola es recomendable editar
nuestros archivos de texto con programas gráficos como Kate o gedit.

Página 100 de 328 Introducción a Linux
Editor Kate.

Plataforma de Teleformación de IFES Página 101 de 328
Editor gedit.

En modo texto hay varios editores sencillos como joe, pico o nano.

Sopa de letras
Este recurso es de tipo Multimedia.
Tiene que conectarse a la plataforma para acceder a este recurso.

Animación: opciones avanzadas - redirección
Este recurso es de tipo Multimedia.
Tiene que conectarse a la plataforma para acceder a este recurso.

Página 102 de 328 Introducción a Linux
Introducción a Linux

Evaluación tercera
Este recurso es de tipo Evaluación.
Debe conectarse a la plataforma para realizar la evaluación. Recuerde que las
evaluaciones son obligatorias ya que determinan la nota final.

Plataforma de Teleformación de IFES Página 103 de 328
Introducción a Linux

Práctica final
Este recurso es de tipo Práctica.
Tiene que conectarse a la plataforma para acceder a este recurso.

Página 104 de 328 Introducción a Linux
Introducción a Linux

Evaluación final
Este recurso es de tipo Evaluación.
Debe conectarse a la plataforma para realizar la evaluación. Recuerde que las
evaluaciones son obligatorias ya que determinan la nota final.

Plataforma de Teleformación de IFES Página 105 de 328
Introducción a Linux

Bibliografia
Linux a fondo. BERNAUS PÉREZ, ALBERT BLANCO.
Editorial Infor books, Barcelona 2002.

Linux Curso de Iniciación. BERNAUS PÉREZ, ALBERT BLANCO.
Editorial Infor books, Barcelona 2003.

Guía Práctica para usuarios Linux. CESAR MARTIN PEREZ E ISMAEL PEREZ
CRESPO.
Editorial Anaya, Madrid 1998.

Linux Administration Handbook. NEMETH, SNYDER, HEIN.
Editorial Prentice Hall, New Jersey 2002.

Linux RUTE User's Tutorial and Exposition. PAUL SHEER.
Editorial Prentice Hall, New Jersey 2002.

Curso de Linux. SCHRODER, CARLA.
Editorial Multimedia-Anaya interactiva, Madrid 2005.

Página 106 de 328 Introducción a Linux
Introducción a Linux

Glosario
Ahh,muy importante,¡puedo introducir texto con formato en este recurso!

¡Perfectamente posible!
Cómo se ha comentado en la demostración del recurso de edición anterior, el
correspondiente a las FAQ ,podemos hacer uso de diferentes "herramientas" en la
edición de un determinado curso como :
texto en negrita
texto tipo código
listas para enumerar como:
• una cosa

• dos cosas
• tres cosas
• ........
Lo que a continuación viene podría servirnos como ejemplo de Glosario de un supuesto
curso de la Plataforma ,en este caso ,un curso de Linux.
Como se acaba de comentar,podemos y debemos presentar el texto de una forma más
atractiva ,complementándolo con diferentes formatos....

alias

Orden interna de bash. Permite sustituir una cadena por una sola palabra. Esto nos
permite poner el nombre que queramos a un comando junto con sus parámetros.
Ahorra tiempo en el trabajo diario, por lo que su uso es altamente recomendado. Puede
ser algo tan sencillo como: alias rm='rm -i'. Por lo que cada vez que teclearamos rm el
shell lo sustituiría por rm -i.

Apache

Servidor de páginas web. Hoy por hoy lider del mercado de servidores, por delante de
soluciones propietarias.

background

Segundo plano. Se habla de proceso en segundo plano cuando se ejecuta sin nuestra
interactividad o lo pasamos a modo suspendido. Es útil,si por ejemplo, estamos
compilando un programa grande que nos deja inutilizada la consola mientras dura el
proceso de compilación. Pasándolo a segundo plano, el proceso se completaría, pero
nosotros podríamos seguir trabajando.

Plataforma de Teleformación de IFES Página 107 de 328
bash

(Bourne Again Shell) Intérprete de comandos. Es el shell por defecto en la mayoría de
las distribuciones de GNU/Linux de hoy en día. Se encarga de interpretar las ordenes
que le demos para su proceso por el kernel.

boot

Proceso de arranque en un sistema informático

BSD

Berkeley Software Distribution. Adaptación del UNIX original de AT&T por la
universidad de Berkeley.

case sensitivity

GNU/Linux distingue entre minúsculas y mayúsculas, por lo que deberemos tener
cuidado a la hora de teclear ordenes o nombres de ficheros.

compilar

Proceso por el cual se "traduce" un programa escrito en un lenguaje de programación a
lo que realmente entiende el ordenador.

consola

Una consola la forman el teclado y el monitor del equipo donde tenemos instalado
GNU/Linux . No confundir con terminal.

cron

demonio que usa el administrador para delegar ciertas tareas que pueden ser
ejecutadas sin su participación. Este demonio puede ser programado para ejecutar las
tareas a intervalos variables, anualmente, semanalmente, diariamente etc. Sus tareas
típicas suelen ser el borrado de ficheros temporales, conexiones con otros equipos,
backups, etc.

cuenta

Una cuenta en un sistema Unix/Linux puede ser algo así como la llave de un taller
comunitario. Es decir, tenemos una llave personal que nos permite acceder a ese
taller y utilizar algunas de las herramientas del mismo. Donde además tenemos que
atenernos a las normas que rijan en ese taller.

Página 108 de 328 Introducción a Linux
cuota

Es un sistema del que se vale el administrador, para regular el espacio que los
diferentes usuarios de un sistema ocupan con sus ficheros en disco.

demonio

Aparte del significado que todos conocemos, en Unix/Linux se conoce como un
programa que permanece en segundo plano ejecutándose continuamente para dar
algún tipo de servicio. Ejemplos de demonio, son los servidores de correo, impresora,
sistemas de conexión con redes etc.

display

Variable de entorno, cuyo valor apunta al servidor Xwindow del usuario que lo está
ejecutando.

Emacs

Editor de texto. Aunque es su principal función, Emacs es hoy en día un programa
muy extenso y con muchas utilidades, gracias a su soporte de plug-ins en lenguaje
LISP. Desde Emacs podrás contestar el correo, leer las noticias de USENET, compilar
programas, jugar al tetris... Requiere un periodo de aprendizaje largo.

enlaces

Los enlaces o links permiten tener "copias" de un mismo archivo, ocupando sólo el
espacio del archivo real. Es decir, el enlace no es más que otro archivo que apunta al
original.

enlightenment

Gestor de ventanas. Muy espectacular, a la vez que algo inestable y consumidor de
recursos nato.

entrada/salida estándar

Por defecto la entrada de datos estándar se establece en el teclado y la salida de
datos estándar en la pantalla del monitor, esto lo podemos variar a través de tuberías
o redirecciones. Por ejemplo, podemos hacer que la entrada sea el ratón y la salida la
impresora.

ethernet

Plataforma de Teleformación de IFES Página 109 de 328
Son redes que permiten distribuir datos a través de un solo cable por lo que necesitan
de un protocolo especial que evite la colisión de los paquetes de datos, ya que sólo se
permite el envío de un solo paquete al mismo tiempo, encargándose el protocolo de su
reenvío en caso de la colisión de ambos.

expresiones regulares

Las expresiones regulares o "regexp" permiten definir el patrón de análisis en una
cadena de texto. De forma que a la hora de modificarlas, borrarlas, o lo que queramos
hacer con ellas, sea de acuerdo a unas reglas que definimos.

ext2fs

Sistema de ficheros utilizado en GNU/Linux . Permite el uso de permisos para los
ficheros y directorios, y tiende a fragmentarse mucho menos que los de otros sistemas
operativos.

filtro

Un filtro es un programa o conjunto de estos, que procesan una serie de datos
generando una salida modificada conforme a lo que nosotros le especifiquemos.

FSF

Free Software Foundation. Fundación que pretende el desarrollo de un sistema
operativo libre tipo UNIX. Fundada por Richard Stallman, empezó creando las
herramientas necesarias para su propósito, de modo que no tuviera que depender
de ninguna compañia comercial. Después vino la creación del núcleo, que todavía se
encuentra en desarrollo.

ftp

File Transfer Protocol. Servicio de Internet que permite el envío y la recepción de
ficheros. Para su uso necesitamos disponer de una cuenta en la máquina que va a
recibir o enviar los ficheros. Si bien hay multitud de máquinas en Internet que permiten
el uso de sus sistemas utilizando una cuenta anónima y validando el password con
nuestra dirección de correo.

gcc

GNU C Compiler. El compilador estándar de la FSF.

getty

Página 110 de 328 Introducción a Linux
Procesos que controlan cada una de las terminales que están conectadas al sistema,
o las terminales virtuales que podamos tener abiertas. Establecen las características
de los terminales y llaman al proceso encargado de validar la entrada al sistema de los
usuarios.

ghostcript

Programa encargado de la visualización de ficheros de texto con formato postcript.

GID

Group IDentification. En UNIX/LINUX se definen grupos para administrar las
herramientas a las que tienen acceso unos y otros, el pertenecer a un determinado
grupo nos puede permitir, por ejemplo, tener acceso a internet. La pertenencia a
algún grupo viene determinada por el numero GID establecido en el cuarto campo del
fichero /etc/passwd.

GNOME

GNU Network Object Model Environment. Entorno de escritorio basado en las librerías
GTK diseñadas para el programa de retoque fotográfico GIMP. Ofrece un entorno
amigable y la posibilidad de que las aplicaciones intercambien datos entre sí.

GNU

Movimiento que persigue la libertad en el software. Son los creadores de la mayoría de
los programas que utilizan Linux, por eso piden que al sistema se le llame GNU/Linux,
no solamente Linux.

GNU

Gnu is Not Unix. Proyecto de la FSF para crear un sistema UNIX libre.

GNU/Linux

Sistema operativo compuesto de las herramientas GNU de la FSF y el núcleo
desarrollado por Linus Torvalds y sus colaboradores.

GPL

General Public License. Una de las mejores aportaciones de la FSF. Es una licencia
que protege la creación y distribución de software libre.

groff

Plataforma de Teleformación de IFES Página 111 de 328
Versión GNU del programa nroff para el formateo de textos. Las páginas del manual en
línea han sido escritas con este formato.

host

Nombre de un ordenador en una red.

http

HyperText Transfer Protocol.Protocolo de red para la transferencia de páginas de
hipertexto, o lo que es lo mismo, paginas web como ésta

HURD

Nombre del núcleo del sistema que sigue desarrollando la FSF dentro del proyecto
GNU.

inetd

Demonio encargado de mantener en escucha determinados puertos y de llamar a
determinados programas en función de las señales recibidas.Por ejemplo, atiende a las
llamadas de telnet, finger o ftp.

init

Init es el primer proceso que se ejecuta en un sistema UNIX/Linux y el que inicia
todos los procesos getty. Tiene varios estados, llamados niveles de ejecucion, que
determinan los servicios que pueden ofrecer. Por ejemplo, dependiendo del nivel
de ejecucion podemos establecer la posibilidad de poner la maquina en modo
monousuario, impidiendo la posibilidad de acceso a otras personas.

initdefault

El valor de initdefault establece el nivel de ejecución por defecto de entrada al sistema.

inode

Todos los archivos en UNIX/Linux tienen un inode que mantienen información referente
al mismo, tal como situación, derechos de acceso, tamaño o tipo de fichero.

job

Orden interna de bash que muestra los trabajos pendientes que tengamos en segundo
o primer plano.

Página 112 de 328 Introducción a Linux
KDE

K Desktop Environment. Entorno de escritorio que integra gestor de ventanas propio
y una barra de tareas y que al igual que GNOME permite la interacción entre sus
aplicaciones. Programado en C++ y con la base de librerias QT+ ha sido víctima de
críticas por parte de la comunidad GNU/Linux, ya que estas librerías eran propiedad de
una empresa comercial.

kernel

Programa núcleo que se encarga de que funcionen el resto de los programas, que
tengan acceso al disco duro, a la memoria, a la red, etc. Son kernels Linux, FreeBSD,
NetBSD, Hurd, etc.

kernel

Véase núcleo

kerneld

Demonio para la carga dinámica de módulos. Cuando necesitamos el uso de un
determinado dispositivo, no es necesario tener su controlador todo el tiempo cargado
en memoria, por lo que este demonio se encarga de enlazarlo con el resto del núcleo.

LaTeX

Lenguaje para el formateado de textos. Muy potente y completo.

lilo

LInux LOader. Programa que nos permite elegir que sistema operativo arrancar, en el
caso de tener varios.

Linus Torvalds

Estudiante finlandés creador del nucleo de GNU/Linux. Actualmente, el desarrollo del
núcleo, depende de unos cientos de personas, incluido Linus.

Linux

Núcleo del sistema operativo GNU/Linux

login

Plataforma de Teleformación de IFES Página 113 de 328
Programa encargado de la validación de un usuario a la entrada al sistema. Primero
pide el nombre del usuario y después comprueba que el password sea el asignado a
éste.

loopback

Sistema de trabajo en red en modo local. Con este sistema podemos trabajar en red
con nuestro propio ordenador; su utilidad radica en probar programas de seguridad,
leer las noticias o el correo de los servidores instalados en nuestro ordenador o
simplemente poder ejecutar Xwindow.

lpd

Demonio encargado de asistir a las peticiones de impresión por parte del sistema.

LuCaS

Organización de voluntarios dedicada a la traducción de documentación del sistema
GNU/Linux al castellano.

man

Manual en línea del sistema. Aquí puedes buscar casi cualquier cosa relacionada con
el sistema, sus comandos, las funciones de biblioteca, etc.

mbr

Master Boot Record. Tabla de información referente al tamaño de las particiones.

módulos

Porciones de código que se añaden en tiempo de ejecución al kernel para el manejo de
dispositivos o añadir funciones al núcleo.

monousuario

Sistema informático que sólo admite el trabajo con una persona.

montar

Poner un dispositivo o un sistema de ficheros en disposición de ser usado por el
sistema.

motif

Página 114 de 328 Introducción a Linux
Librería de funciones para el desarrollo de aplicaciones gráficas. Son de caracter
comercial, aunque existe una implementación libre llamada lesstif

mta

Mail Transfer Agent.Programa encargado del transporte de correo electrónico. Es
el encargado de deliverar las direcciones y de transportarlas hacia su correcta
ubicación, dentro de nuestra red local o en Internet. Los más usados en Linux son
Sendmail,qmail,postfix y exim.

mtools

Conjunto de herramientas para la administración de ficheros, disquetes o discos duros
con el sistema de archivos de msdos.

mua

Mail User Agent. Programa encargado de la lectura y composición de mensajes de
correo electrónico. Algunos tipicos en Linux son: Mutt,Kmail,Pine,Balsa.

multitarea

Capacidad de un sistema para el trabajo con varias aplicaciones al mismo tiempo.

multiusuario

Capacidad de algunos sistemas para ofrecer sus recursos a diversos usuarios
conectados a través de terminales.

nntp

Network News Transfer Protocol.Protocolo de transmisión para el envío y recepción de
los grupos de noticias de USENET.

núcleo

kernel traducido al español, normalmente se utiliza el término kernel.

núcleo

Parte principal de un sistema operativo, encargado del manejo de los dispositivos, la
gestión de la memoria, del acceso a disco y en general de casi todas las operaciones
del sistema que permanecen invisibles para nosotros.

password

Plataforma de Teleformación de IFES Página 115 de 328
Palabra clave personal, que nos permite el acceso al sistema una vez autentificada con
la que poseé el sistema en el fichero passwd.

path

Variable del entorno, cuyo valor contiene los directorios donde el sistema
buscará cuando intente encontrar un comando o aplicación. Viene definida en los
ficheros .bashrc o .bash_profile de nuestro directorio home.

permisos

Todos los archivos en UNIX/Linux tienen definido un set de permisos que permiten
establecer los derechos de lectura, escritura o ejecución para el dueño del archivo, el
grupo al que pertenece y los demás usuarios.

PID

Process IDentification. Número que identifica un proceso en el sistema; este numero es
único para cada proceso.

posix

Es un estándar con una serie de normas definidas para permitir la portabilidad entre
diferentes sistemas UNIX. GNU/Linux cumple con este estándar.

postscript

Formato profesional de impresión para impresoras de gama alta.

ppp

Point to Point Protocol. Protocolo de transmisión de datos, utilizado en la mayoria de las
conexiones a internet domesticas.

proceso

Programa en ejecución en un sistema informático.

prompt

El prompt es lo siguiente que vemos al entrar al sistema, una linea desde donde el
sistema nos indica que esta listo para recibir ordenes, que puede ser tan sencilla como:
$ o algo mas compleja como: amphora:1505200:home/israel:$

redirección

Página 116 de 328 Introducción a Linux
Con los operadores de redirección podemos dirigir la salida de un proceso hacia un
dispositivo diferente al estandar o a un fichero.

respawn

Parametro para el proceso init que indica la necesidad de volver a arrancar el programa
implicado, una vez finalizado o muerto por alguna causa.

root

Persona o personas encargadas de la administración del sistema Tiene TODO
el privilegio para hacer y deshacer, por lo que su uso para tareas que no sean
absolutamente necesarias es muy peligroso.

sed

Editor de flujo. Sed se utiliza en la manipulación de cadenas de texto de acuerdo a
unas reglas especificadas.

señales

Las señales son eventos que se hacen llegar a un proceso en ejecución para su
tratamiento por este. Las señales las podemos mandar nosotros u otros programas a
otros programas. Tienen diferentes valores, y en función a esos valores el proceso que
las recibe actua de una manera u otra.

setuid

Establece la identidad del usuario del proceso en curso. Si bien es muy común oir
hablar del bit set-uid.Este bit establece permisos de root para el programa que que
lo posea, por lo que cualquier usuario puede utilizar ese programa con los mismos
privilegios que el administrador. Es facilmente identificable por la "s" que aparece en
vez de la "x" en los permisos del archivo.

shell

literalmente concha, caparazón. Es el programa que envuelve el núcleo y que se
relaciona con el usuario, se aplica a los programas que esperan que el usuario escriba
una orden y se la pasan al resto del sistema para que la ejecute. Diferentes shells en
Linux son Bash, Ksh, Csh.

shell

Traducido del inglés concha o caparazón. El shell es el intérprete de comandos que
se establece entre nosotros y el kernel. Hay muchos tipos de shell cada uno con sus

Plataforma de Teleformación de IFES Página 117 de 328
propias características, sin embargo el estandar en GNU/Linux es el shell bash ya que
es el que forma parte del proyecto GNU.

smtp

Simple Mail Transfer Protocol. Más claro el agua.

superusuario

Ver root.

swap

Memoria virtual. Espacio de disco duro que utiliza el kernel en caso de necesitar mas
memoria de la que tengamos instalada en nuestro ordenador.

telnet

Servicio que nos permite la conexión a otro ordenador de la red, pasando nuestro
sistema a ser una terminal de ese ordenador.

terminal

Una terminal es un teclado y una pantalla conectados por cable u otro medio a un
sistema UNIX/Linux, haciendo uso de los recursos del sistema conectado.

tubería

Las tuberías son como conexiones entre procesos. La salida de un proceso la
encadenamos con la entrada de otro, con lo que podemos procesar unos datos en una
sola línea de comando.

uid

User IDentification. Número que identifica al usuario frente al sistema.

unix

Sistema operativo creado por AT&T a mediados de los 70.

vi

Editor de texto muy potente aunque algo complejo al principio. Es el editor por defecto
en casi todas las distribuciones. Hay versiones mejoradas (vim) o versiones para X
Xvim.

Página 118 de 328 Introducción a Linux
WindowMaker

Gestor de ventanas con buena apariencia y poco consumidor de recursos.

windowmanager

Gestor de ventanas.Programa que se encarga de dar apariencia a los programas que
se ejecutan bajo Xwindow, también se encarga de maximizar/minimizar ventanas,
ponerles el marco, un fondo al escritorio...

X ó Xwindow

Entorno gráfico. Es el programa que se encarga de dibujar en pantalla todo lo que
le solicitan los procesos que corren bajo este entorno. Tiene la facultad de visualizar
programas que están siendo ejecutados en otro ordenador de la red.

X11R6

Última versión utilizada del sistema de ventanas Xwindow.

xterm

Terminal virtual que funciona bajo el sistema de ventanas Xwindow.

Plataforma de Teleformación de IFES Página 119 de 328
Introducción a Linux

F.A.Q.
Introducción e información general
¿Qué es Linux?

LINUX es un sistema operativo compatible Unix.
Dos características muy peculiares lo diferencian del resto de los sistemas que
podemos encontrar en el mercado; la primera, es que es libre.Esto significa que no
tenemos que pagar ningún tipo de licencia a ninguna casa desarrolladora de software
por el uso del mismo; la segunda, es que el sistema viene acompañado del código
fuente.
El sistema lo forman el Núcleo (leer sección Kernel/Nucleo) del sistema ,más un gran
número de programas / librerías que hacen posible su utilización.
Linux se distribuye bajo la GNU General Public License, por lo tanto, el código fuente
tiene que estar siempre accesible.
El sistema ha sido diseñado y programado por multitud de programadores alrededor del
mundo.
El núcleo del sistema sigue en continuo desarrollo bajo la coordinación de Linus
Torvalds, la persona de la que partió la idea de este proyecto, a principios de la decada
de los noventa.
Día a día, más y más programas están disponibles para este sistema, y la calidad
de los mismos aumenta de versión a versión. La gran mayoría de los mismos vienen
acompañados del código fuente y se distribuyen gratuitamente bajo los términos de
licencia de la GNU Public License.
En los últimos tiempos, ciertas casas de software comercial han empezado a distribuir
sus productos para Linux y la presencia del mismo en empresas aumenta rápidamente
por la excelente relación calidad-precio que se consigue con Linux.
Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-.
Pentium, Pentium Pro, Pentium II,Amiga y Atari; también existen versiones para su
utilización en otras plataformas, como Alpha, ARM, MIPS, PowerPC y SPARC.

Historia de Linux

LINUX hace su aparición a principios de la década de los noventa .Era el año 1991 y
por aquel entonces ,un estudiante de informática
de la Universidad de Helsinki llamado Linus Torvalds empezó, como una afición y sin
poderse imaginar a lo que llegaría este proyecto, a programar las primeras líneas de

Página 120 de 328 Introducción a Linux
código de este sistema operativo llamado LINUX. Este comienzo estuvo inspirado en
MINIX, un pequeño sistema Unix desarrollado por Andy Tanenbaum.
Las primeras discusiones sobre Linux fueron en el grupo de noticias comp.os.minix.En
estas discusiones se hablaba sobre todo del desarrollo de un pequeño sistema Unix
para usuarios de Minix que querían más. Linus nunca anunció la versión 0.01 de
Linux (agosto 1991). Esta versión no era ni siquiera ejecutable;solamente incluía los
principios del núcleo del sistema, estaba escrita en lenguaje ensamblador y asumía que
uno tenía acceso a un sistema Minix para su compilación.
El 5 de octubre de 1991 Linus anunció la primera version "Oficial" de Linux, versión
0.02. Con esta versión Linus pudo ejecutar Bash (GNU Bourne Again Shell) y gcc (El
compilador GNU de C),pero no mucho más funcionaba. En este estado de desarrollo
ni se pensaba en los términos soporte, documentación, distribución ..... Después de la
version 0.03, Linus saltó en la numeración hasta la 0.10. Más y más programadores
a lo largo y ancho de internet empezaron a trabajar en el proyecto y, después de
sucesivas revisiones, Linus incrementó el número de versión hasta la 0.95 (Marzo
1992).
Más de un año después (diciembre 1993), el núcleo del sistema estaba en la version
0.99 y la versión 1.0 no llegó hasta el 14 de marzo de 1994.
Desde entonces no se ha parado de desarrollar.La versión actual del núcleo es la 2.6 y
sigue avanzando día a día con la meta de perfeccionar y mejorar el sistema.

Características de Linux

Aquí tenéis una lista bastante completa con las características de LINUX [Fuente:
Infosheet-Como. Autor: Ivan Casado] .
• Multitarea: La palabra multitarea describe la habilidad de ejecutar varios
programas al mismo tiempo. LINUX utiliza la llamada multitarea preeventiva,
la cual asegura que todos los programas que se están utilizando en un
momento dado serán ejecutados, siendo el sistema operativo el encargado
de ceder tiempo de microprocesador a cada programa.
• Multiusuario:muchos usuarios usando la misma máquina al mismo tiempo.
• Multiplataforma: Las plataformas en las que en un principio se puede
utilizar Linux son 386-, 486-, Pentium, Pentium Pro, Pentium II,Amiga y
Atari.También existen versiones para su utilización en otras plataformas,
como Alpha, ARM,MIPS, PowerPC y SPARC.
• Multiprocesador: Soporte para sistemas con más de un procesador;está
disponible para Intel y SPARC.
• Funciona en modo protegido 386.
• Protección de la memoria entre procesos, de manera que uno de ellos no
pueda colgar el sistema.
• Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes
de un programa que están siendo usadas actualmente.

Plataforma de Teleformación de IFES Página 121 de 328
• Política de copia en escritura para la compartición de páginas entre
ejecutables: esto significa que varios procesos pueden usar la misma

zona de memoria para ejecutarse. Cuando alguno intenta escribir en esa
memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de
copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso
de memoria.
• Memoria virtual usando paginación (sin intercambio de procesos completos)
a disco: a una partición o un archivo en el sistema de archivos, o ambos,
con la posibilidad de añadir más áreas de intercambio sobre la marcha .Un
total de 16 zonas de intercambio de 128Mb de tamaño máximo pueden ser
usadas en un momento dado con un límite teórico de 2Gb para intercambio.
Este límite se puede aumentar fácilmente con el cambio de unas cuantas
líneas en el código fuente.
• La memoria se gestiona como un recurso unificado para los programas de
usuario y para la caché de disco, de tal forma que toda la memoria libre
puede ser usada para caché, y ésta puede a su vez ser reducida cuando se
ejecuten grandes programas.
• Librerías compartidas de carga dinámica (DLL's) y librerías estáticas.
• Se realizan volcados de estado (core dumps) para posibilitar los análisis
post-mortem, permitiendo el uso de depuradores sobre los programas ,no
sólo en ejecución sino también tras abortar estos por cualquier motivo.
• Compatible con POSIX, System V y BSD a nivel fuente.
• Emulación de iBCS2, casi completamente compatible con SCO, SVR3 y
SVR4 a nivel binario.
• Todo el código fuente está disponible, incluyendo el núcleo completo y todos
los drivers, las herramientas de desarrollo y todos los programas de usuario;
además todo ello se puede distribuir libremente.
Hay algunos programas comerciales que están siendo ofrecidos para Linux
actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.
• Control de tareas POSIX.
• Pseudo-terminales (pty's).
• Emulación de 387 en el núcleo, de tal forma que los programas no tengan
que hacer su propia emulación matemática. Cualquier máquina que ejecute
Linux parecerá dotada de coprocesador matemático. Por supuesto, si el
ordenador ya tiene una FPU (unidad de coma flotante), esta será usada
en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la
emulación matemática y conseguir un pequeño ahorro de memoria.
• Soporte para muchos teclados nacionales o adaptados y es bastante fácil
añadir nuevos dinámicamente.
• Consolas virtuales múltiples: varias sesiones de login a través de la consola
entre las que se puede cambiar con las combinaciones adecuadas de teclas

Página 122 de 328 Introducción a Linux
(totalmente independiente del hardware de video). Se crean dinámicamente
y puedes tener hasta 64.

• Soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix
y todos los sistemas de archivo típicos de System V, y tiene un avanzado
sistema de archivos propio con una capacidad de hasta 4 Tb y nombres de
archivos de hasta 255 caracteres de longitud.
• Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT)
mediante un sistema de archivos especial: no es necesario ningún comando
especial para usar la partición MS-DOS, ésta parece un sistema de archivos
normal de Unix (excepto por algunas restricciones en los nombres de
archivo, permisos, y esas cosas). Las particiones comprimidas de MS-DOS
6 no son accesibles en este momento, y no se espera que lo sean en el
futuro. El soporte para VFAT (WNT, Windows 95) ha sido añadido al núcleo
de desarrollo y estará en la próxima versión estable.
• Un sistema de archivos especial llamado UMSDOS que permite que Linux
sea instalado en un sistema de archivos DOS.
• Soporte en sólo lectura de HPFS-2 del OS/2 2.1
• Sistema de archivos de CD-ROM que lee todos los formatos estándar de
CD-ROM.
• TCP/IP, incluyendo ftp, telnet, NFS, etc.
• Appletalk.
• Software cliente y servidor Netware.
• Lan Manager / Windows Native (SMB), software cliente y servidor.
• Diversos protocolos de red incluidos en el kernel: TCP, IPv4, IPv6, AX.25,
X.25, IPX, DDP, Netrom, etc.

Linux Copyright

El copyright del kernel de Linux pertenece a Linus Torvalds. Éste se distribuye bajo
la GNU General Public License.Esto significa básicamente que cualquiera puede
libremente copiarlo, cambiarlo y distribuirlo, pero sin posibilidad de aplicar restricciones
en futuras distribuciones y teniendo que incluir el código fuente. Las licencias de los
programas y aplicaciones que acompañan al núcleo varían;muchos pertenecen al
proyecto GNU y se distribuyen bajo GPL.

Fuentes

Las presentes FAQ se han seleccionado de http://www.linux-es.org/Faq/Files/Html/
FAQ_Linux_V2.0.2.html

Plataforma de Teleformación de IFES Página 123 de 328
Antes de la instalación
¿Es Linux para mí?

Aunque parezca muy simple,esta pregunta conlleva otra serie de cuestiones anejas
que
hemos de considerar para responder con verosimilitud al profano en este sistema. Por
otra parte,aunque convencidos abogados de este sistema operativo frente a los que
no son de código abierto, también hemos de aceptar las limitaciones del mismo con
respecto a los nuevos usuarios.
En un principio,linux era para gurús, hackers y desarrolladores...y hay muchos que
piensan que debería seguir siendo así. No obstante, las facilidades que tanto en
instalación, configuración y gestión del sistema,han proporcionado las distribuciones en
sus versiones más recientes han acercado mucho al usuario final al mundo linux.
Cuando pensamos en esta FAQ lo hicimos considerando que los "novatos" en
este sistema podían ser de diversas procedencias: algunos podrían ser grandes
conocedores de informática, programadores y administradores de sistemas "no-
linux",quienes se adaptarían fácilmente; otros podrían ser usuarios finales de algún otro
sistema operativo, que utilizan el ordenador para correr aplicaciones, como algunos
conductores usan el vehículo sólo como medio para acceder a lugares lejanos en
tiempos cortos, pero no quieren saber nada de mecánica ni electricidad del automóvil...
Al preguntarnos ,¿es linux para mí? ,queremos decir más bien,¿me conviene usar
Linux? ¿Para qué lo quiero? Hemos leído muchos libros y un gran número de
documentos acerca de linux en relación con el usuario. Uno de ellos, titulado "Linux for
the masses and other popular myths" de Todd Burgess, trata en profundidad el tema de
los tránsfugas de sistemas operativos por cuestiones de moda (Cool people use Linux
= la gente güai usa linux) y nos dice usa linux:
• Si lo requiere la aplicación que necesitas

• Si deseas aumentar tu conocimiento acerca de sistemas operativos
• Si no te importa investigar "per se", como imperativo categórico.
No uses linux:
• Si no estás ducho en sistemas operativos
• Sólo porque no es Microsoft
• Si piensas que por eso eres más güai, inteligente o mejor que el usuario
medio.En una línea similar, encontramos otro interesante documento que
mantenía que no deberíamos usar linux:
• Si nuestras necesidades están cubiertas con nuestro sistema actual y
pensamos que continuará así en el futuro.
• Si trabajamos en un ambiente comercial/industrial/profesional donde no se
usa linux y no disponemos de apoyo técnico por parte de nuestra plantilla
técnica ni pensamos poder proporcionar dicho apoyo nosotros mismos.

Página 124 de 328 Introducción a Linux
• Si alguna aplicación importante y necesaria para nuestro trabajo no está
disponible en linux ni hay sustitutos adecuados.

Mucha gente que lea esta FAQ en el futuro, provendrá del ambiente Microsoft
(Windows 95/98/NT/00 ).
En tal caso, aquéllos que usaren su computador básicamente para el procesamiento de
textos y el empleo de hojas de cálculo, deberían quedarse como están.
A pesar de todos sus fallos, Windows es fácil de usar, más aún de aprender y dispone
de una ingente cantidad de software.
Los que tienen otras ambiciones, pueden plantearse cambiar a linux por 10 importantes
razones(http://www.reichel.net/opensource/linuxtop10.html ):
1.Las distribuciones de Linux no son costosas: pueden obtenerse gratis de los lugares
apropiados de internet o bien comprar los CDs por muy poco dinero comparado con
otros sistemas comerciales.
2. Linux es un sistema operativo completo con tres grandes características: estable
(es muy raro que colapse una aplicación en linux), fidedigno (un servidor linux puede
funcionar durante cientos de días sin necesidad de reiniciarse, lo que no es común en
sistemas Windows) y extremadamente potente.
3.Tiene un entorno de programación completo,incluyendo C, C++, compiladores
Fortran, utilidades como Qt y lenguajes de guiones (scripts) como Perl, gwak y sed. (un
simple compilador C para Windows cuesta cientos de dólares)
4.Presenta una excelentes prestaciones para conexión en red, permitiendo compartir
PPUs y módems.
5.Constituye el entorno ideal para hacer funcionar servidores web (Apache) o FTP
(oran).
6.Además del software "libre", hay también bastante software comercial para linux.
7. Se actualiza y mantiene fácilmente (a diferencia de Windows).
8. Admite múltiples procesadores como norma.
9. Es realmente multitarea (a diferencia de Windows).
10.Tiene un excelente servidor X-windows y numerosos gestores de ventanas X. y
además, por instalar linux no tendremos que renunciar a Windows: es posible gestionar
linux + otros sistemas operativos en el mismo ordenador.
Para terminar, me gustaría copiar literalmente un trozo de la introducción de un libro
titulado "Manual Avanzado de linux" de Raúl Montero Rivero (Ed. Anaya) que viene
como anillo al dedo al nuevo usuario de nuestro sistema:
"Aprenderás qué es linux, sus virtudes y sus defectos, cómo puedes conseguirlo, qué
distribución elegir a la hora de instalarlo, cómo administrar tu sistema correctamente,
cómo trabajar con X-windows, cómo conectarte con él a Internet...Pero no todo va a ser
tan fácil con linux, porque como comprobarás, no es un sistema hecho para cobardes.
Tendrás que ser valiente".
Si te da miedo formatear tu disco duro, linux no es para ti. Si te acobarda tener que
reinstalar todo de nuevo sólo porque has cometido un pequeño error en el proceso
de instalación, abandona y no sigas. Si te aterra la mera idea de particionar tu disco

Plataforma de Teleformación de IFES Página 125 de 328
duro, apaga y vámonos. Y si te vas a pasar todo el rato pensando que al configurar
la frecuencia de tu monitor para que funcione X windows, te lo puedes cargar, mejor
que vuelvas a tu Windows de siempre. Ahora seguro que ya sabes si linux es para ti...
¡Bienvenido!

¿Cuánto espacio necesito en mi disco duro para instalar Linux?

Esto depende en gran medida de la cantidad de programas/paquetes que quieras
instalar, del espacio que reserves para swap (espacio de intercambio) y del espacio
libre que quieras tener para datos/documentos. Hay que puntualizar que los datos que
se dan en esta subsección hacen referencia al sistema en sí, más programas.
• Una instalación super mínima,necesitará alrededor de unos 10MB.

• Una instalación mínima con las X incluídas, alrededor de los 80Mb.
• Para tener un sistema completo (sistema/librerías/programas/aplicaciones/
espacio para almacenamiento de datos),funcional y siendo realistas, habría
que tener de 500Mb a 1,5Gb de espacio en el disco duro. Como en cualquier
sistema, si quieres instalar todos los programas que pasen por tus manos o
si la cantidad de información con la que trabajas es muy grande, necesitarás
más y más espacio y siempre te parecerá poco el que tienes.

¿Cuánta memoria necesito para usar Linux?

Esto dependerá también en gran medida del uso que le vayas a dar a tu
máquina.Cuanta más memoria, mejor trabajará. Aquí tienes unos datos orientativos
sobre la cantidad de memoria necesaria:
• Como mínimo se necesitan 4Mb de memoria RAM para utilizar Linux.Esta
cantidad es como se indica mínima y no apta para trabajar con sistemas
gráficos.

• Para trabajar con las X-windows de una manera decente (dependerá del
entorno gráfico utilizado) se necesitará como mínimo 16Mb.
• Para un uso intensivo y para trabajar con programas que requieren muchos
recursos,se recomienda de 32Mb en adelante. Cuanta más memoria se
tenga, más suelto trabajará nuestro sistema y más programas podremos
tener cargados en memoria.

¿Funcionará mi equipo con linux?

Hoy en día la gran mayoría de hardware está soportado por Linux,así que no deberiais
tener problemas.De todas maneras, existen configuraciones que no están soportadas
y quizás últimos modelos de tarjetas gráficas, controladoras, etc, que tampoco
lo estén.Día a día se trabaja para dar soporte a nuevo hardware y lo que no este
soportado hoy, probablemente esté soportado muy pronto. En un pasado,muchas

Página 126 de 328 Introducción a Linux
casas de productos no apoyaban a linux,con el consiguiente retraso en el soporte a
estos productos con respecto a otros sistemas operativos, pero últimamente esto está
cambiando rápidamente.Si queréis comprobar si vuestro hardware está soportado por
linux o no, leed el Hardware-Howto,un documento con el hardware soportado por linux.
También os podéis pasar por esta excelente web, Linuxhardware.net, donde podréis
consultar sobre vuestro hardware.

¿Cómo consigo Linux?

Linux es una sistema de libre distribución por lo que podéis encontrar todos los ficheros
necesarios para su funcionamiento en multitud de servidores conectados a Internet.
Casi todos los principales distribuidores de Linux ofrecen la posibilidad de bajarse
sus distribuciones vía FTP. Otra alternativa para los que van a instalar el sistema por
primera vez son las llamadas "Distribuciones" de Linux. Una distribución no es otra
cosa que una recopilación de programas y ficheros, organizados y preparados para
su instalación. Estas distribuciones se pueden obtener a través de Internet,como ya
hemos explicado, pero también se encuentran en varios CDes conteniendo todos los
ficheros necesarios para instalar un sistema Linux bastante completo y, en la mayoría
de los casos, un programa de instalación que nos ayudará en la tarea de una primera
instalación.
Existen varias distribuciones creadas por diferentes empresas a unos precios bastantes
asequibles las cuales deberiais poder encontrar en tiendas de informática o librerías.En
el peor de los casos siempre podéis encargarlas directamente por Internet a las
empresas que las crean.A veces las revistas de informática sacan una edición
bastante aceptable de alguna distribución.Si vais a instalar el sistema por primera
vez os recomiendo haceros con una de estas distribuciones y en un futuro, cuando
queráis actualizar el sistema con las últimas versiones y actualizaciones del núcleo y
programas que utilicéis, usad Internet.
Para más información sobre las distintas distribuciones de Linux podéis leer la Linux
Distribution HOWTO. A continuación tenéis una lista con las principales distribuciones:
• Redhat Pagina web:

http://www.redhat.com
FTP principal:
ftp://ftp.redhat.com/pub/
• Debian Pagina web:

http://www.debian.org/
FTP principal:
ftp://ftp.debian.org/debian/
• SuSE Pagina web:

http://www.suse.de/es/

Plataforma de Teleformación de IFES Página 127 de 328
FTP principal:
ftp://ftp.suse.com/
• Caldera Openlinux Pagina web:

http://www.caldera.com/
FTP principal:
ftp://ftp.caldera.com/pub/OpenLinux/
• Slackware Pagina web:

http://www.slackware.com/
FTP principal:
ftp://ftp.cdrom.com/pub/linux/slackware
• Eurielec Pagina web:

http://www.eurielec.etsit.upm.es/linux/
FTP principal:
ftp://ftp.dit.upm.es/linux/
• Esware Pagina web:

http://www.esware.com/
FTP principal:
ftp://ftp.hardlogic.es/pub/

¿Qué distribución es la mejor?

Esta pregunta se podría denominar "la pregunta del millón".Son muchos los usuarios
que la hacen y la respuesta no es fácil de hacer.Como ya se ha explicado en la sección
Que es Linux?, un sistema Linux está formado por el núcleo (Leer seccion kernel/
nucleo) más una serie de programas y librerías que hacen posible tener un sistema
productivo y operativo. Tanto el núcleo, como las librerías y programas necesarios
están disponibles libremente en internet. Con esto, cualquiera con conocimientos,
puede instalarse un sistema Linux sin necesidad de adquirir una distribución, o crear
una nueva distribución desde cero.No hace falta decir que hacer esto es una tarea que
requiere muchos conocimientos y tiempo. Lo que hacen las empresas que crean una
distribucion es precisamente esto, poner todos los componentes necesarios juntos,
con esto nos evitamos el tener que hacerlo nosotros. Las distribuciones suelen traer un
programa de instalacion, generalmente creado por la empresa que crea la distribucion,
manuales con documentacion, una serie de programas/librerias para poder usar el
sistema, un kernel, y en algunas ocasiones aplicaciones diversas y soporte tecnico.
Sabido esto, podemos afirmar que la diferencia entre una distribución u otra es la
calidad de lo incluído en la misma.
Algunos programas de instalación pueden ser más intuitivos que otros o más faciles
de utilizar.La calidad de la documentación,que el conjunto de programas/librerias estén
bien testeados y funcionen bien juntos (diferentes versiones, librerías, etc),soporte

Página 128 de 328 Introducción a Linux
eficiente, etc,el kernel es el mismo en todas las distribuciones,excepto en la version,es
decir, una distribución A con el kernel 2.2.9 y otra distribución distinta B con el kernel
2.2.9 están utilizando exactamente el mismo kernel,el kernel es común a todas
las distribuciones y no existe un kernel para una distribución y otro para otra. A
continuación tenéis unos comentarios sobre las distribuciones más usadas. No son
en absoluto todas, pero sí son las que forman el mayor porcentaje de sistemas Linux
instalados.
Redhat:
• Más extendida, buena calidad.

• Fácil de instalar,incluye programas de configuración que simplifican ciertas
tareas.
• Buena documentación (en inglés).
• Buen seguimiento de fallos y correcciones de los mismos pueden bajarse de
su web.
Debian:
• Muy buena calidad. No está sometida a presiones comerciales,cuidan
mucho la calidad antes de su lanzamiento.

• Definida típicamente como la distribución de los usuarios avanzados. Puede
ser un poco difícil de instalar para el usuario iniciado y sin conocimientos de
informática.
• Buena documentación (en inglés).
• Buen seguimiento de fallos y correcciones de los mismos pueden bajarse de
su web.
SuSE:
• Buena calidad germana.

• Fácil de instalar, incluye programas de configuración que simplifican ciertas
tareas.
• Buena documentación (gran parte en castellano).
• Buen seguimiento de fallos y correcciones de los mismos pueden bajarse de
su web.
Caldera:
• Buena calidad.
• Fácil de instalar.
• Buena documentación (en inglés).
• Buen seguimiento de fallos y correcciones de los mismos pueden bajarse de
su web Slackware:
• Esta distribución fue de las primeras y durante un largo tiempo fue la que
más se utilizó.Ha tenido un tiempo en que no se ha actualizado mucho y eso
le ha hecho perder seguidores.Parece que ha vuelto con fuerza.
• Un poco más complicada de configurar que la media.

Plataforma de Teleformación de IFES Página 129 de 328
• Documentación en inglés.

¿Puedo tener más de un sistema operativo en mi equipo?

La respuesta es sí,no es ningún problema el tener más de un sistema operativo en
tu máquina. Es más,hay mucha gente que tiene incluso 3 y 4 sistemas.Para hacer
esto hay que tener claro cómo se instalan los sistemas que queremos tener, cómo
realizar particiones en el disco duro (Leer sección durante la instalación) y en qué orden
deberíamos instalarlos para que no tengamos problemas.
Existen unos documentos Howtos y MiniHowtos que explican muy bien cómo tener
diferentes sistemas en tu ordenador; los podréis encontrar en cualquier servidor que
contenga la documentación de Linux. Más información en la subsección "¿Dónde
encuentro documentacion sobre linux?":
• Linux-DOS-Win95-OS2

• Linux + FreeBSD
• NT Loader+Linux
• Linux+Win95
• Loadlin+Win95

¿Funcionan mis programas/juegos para Windows en Linux?

Como primera afirmación,podemos decir que no:tus programas para Windows
no funcionarán en Linux. Windows y Linux/Unix no son compatibles y programas
compilados en una u otra plataforma no funcionarán en otra plataforma que no sea
en la que el programa se compiló para su utilización. Como segunda afirmación,
podemos decir que en algunos casos es posible ejecutar programas para Windows
en Linux, si hacemos uso de un emulador de windows para Linux. Un emulador es un
programa que se ejecuta en Linux y que crea una máquina virtual windows, engañando
al programa windows, que creerá que se está ejecutando en un sistema Windows.
Existen dos emuladores de uso común, Wine (libre) y WMware (comercial).De estos
dos parece ser que WMware es de una calidad superior y que funcione sin grandes
problemas. Podríamos aconsejar el no usar emuladores para evitar problemas. A no
ser que tengas necesidad de usar una aplicación muy especial,existen versiones de
programas con características similares a los de Windows,nativos de Linux, con lo que
probablemente te funcionen mejor,más rápido y no te consuman tantos recursos. La
elección es vuestra .

¿Qué tengo que saber antes de instalar linux?

Introducción :
Si nos ceñimos a esta FAQ, en la sección 1 se proporciona una información de carácter
general acerca de qué es Linux, su historia, características,... .

Página 130 de 328 Introducción a Linux
En la segunda sección se añaden otros aspectos fundamentales como ,¿para qué
quiero linux? ¿Qué espacio y memoria necesito? ¿Funcionará en mi equipo? (si lo
tengo) ¿Cómo lo consigo? ¿Qué distribución es la que más me conviene? etc...
Lo que se ha abordado en esta sección son los datos relativos al sistema donde
vamos a instalar linux. Muchos usuarios desconocen por completo qué es lo que están
usando: no saben qué placa base tienen, ni qué tipo de memoria, qué tarjeta de vídeo,
si su ratón es serie o ps2, ...y por supuesto otras más sutiles como el refresco vertical
de la pantalla de su monitor.
Es necesario conocer el tipo de hardware de nuestro sistema informático para ver si es
compatible con la distribución de linux que vamos a instalar. Hay un par de libros de la
editorial Anaya que son excelentes para prepararse:
• Patrick Volkerding, Kevin Reichard y Eric Foster-Johnsos, Instalación y
configuración de Linux, Anaya, Madrid, 1999

• Naba Barkakati, RedHat Linux a fondo, Anaya, Madrid,1999 Antes de
instalar Linux hay que preparar el PC para la instalación. Puede que ya
dispongamos de un PC con algún sistema operativo instalado como MS-
DOS, Windows o OS/2 o puede ocurrir que vayamos a comprarnos un PC
nuevo para instalar Linux en él. En este último caso podremos elegir el
hardware y los periféricos compatibles con linux. De todos modos, en el
apartado siguiente, nos dedicaremos a considerar el hardware soportado
por el sistema operativo linux. Los componentes fundamentales En la tabla
adjunta se indican los requerimientos mínimos (M) y óptimos (O) para los
componentes más típicos de un PC
• Procesador : Intel 80386 (M); Pentium, i486 y cualquier clónico de Intel (O)
• RAM: 8 MB (M); de 32 MB a 2 GB
• Tarjeta gráfica: VGA (M), SVGA o tarjeta soportada por las XFree86 (O)
• Disco duro: 125 MB (M); 500 MB o más (O)
• Bus: Todos (M = O)
• Lector CD-ROM: velocidad de x2 (M); x8 o mayor (O)
• Ratón: Microsoft, Logitech o compatible (M=O)
• Tarjeta de red: Ninguna (M); Cualquiera soportada (O) .A continuación
veremos todo desde un punto de vista mucho más pormenorizado.
La Unidad Central de Procesos:
Linux funcioma bien con cualquier procesador a partir de i386, especialmente i486,
Pentium, Pentium Pro Pentium II/III y los Intel compatibles AMD y Cyrix. No funcionará
con ningún i286 o inferior porque no son de 32 bits (aunque existen proyetos por ahí
para hacerlo funcionar en 8086 /80286).
Buses:
Linux los admite todos: ISA, VLB, EISA, PCI, PS/2 y MCA (este último desde la versión
2.0.7).

Plataforma de Teleformación de IFES Página 131 de 328
Hay dos placas base que no funcionan con linux: la Supermicro P5MMA y la
Supermicro P5MMA98. Para que lo hagan es necesario descargar de la red BIOS
adecuadas: ftp.supermicro.commma9051.zip y ftp.supermicro.com/a98905.zip/
Memoria RAM: para que el sistema con X-windows funcione decentemente debería
disponer de al menos 16 MB de RAM. Como máximo puede gestionar 2 GB de RAM,
pero a partir de 1 GB, pueden aparecer grandes limitaciones en la celeridad si no se
instala memoria caché adicional en el PC. Si la memoria es superior a 64 MB habrá
de indicarse al sistema en el fichero de configuración de LILO /etc/lilo.conf como una
línea (esto no es necesario a partir de la serie 2.2.x del kernel); p.ej., si tenemos 128
MB pondremos ## append="mem=128M"
Discos duros:
Linux funciona con cualquier disco duro compatible con el BIOS del PC. Para instalar
linux en el PC, no vendría mal disponer de una partición de alrededor de 1 GB para
el linux native. Si se usa un disco duro de gran capacidad (que tenga más de 1024
cilindros), entonces habremos de situar LILO, el kernel y los archivos de configuración
en los primeros 1023 cilindros. Realmente linux no trabaja con los discos directamente,
sino con los controladores del disco. Linux funciona con todos los controladores IDE e
IDE/ATAPI, ciertos controladores EIDE (que gestionan hasta cuatro dispositivos sean
discos duros o CD-ROMs) y los controladores SCSI a excepción de los adaptadores
SCSI de puerto paralelo.
Miscelánea:
La gran mayoría del hardware soportado por linux puede consultarse en las direcciones
http://es.tldp.org/COMO-INSFLUG/COMOs/Compatibilidad-Hardware-Como/ , http://
www.xfree86.org/ y http://linuxhardware.net/ .
Todo sobre controladores EIDE, SCSI, Lectores y grabadores CD-ROM, Unidades de
cinta, Unidades extraíbles, ratones (trackballs y touchpads), tarjetas de red (Ethernet,
RDSI, Token-Ring, ARCnet...), tarjetas gráficas incluídas en la última lista de XFree86,
tarjetas de sonido, dispositivos PCMCIA, etc. , se encuentra en estas direcciones y
deben consultarse para evitar sorpresas.
El peligro de Windows:
Impresoras y modems:
Existe un peligro en lo que respecta a ciertas impresoras y modems llamados
winprinters y winmodems que no funcionan en linux. Hay dos tipos de impresoras
que definitivamente no funcionan con linux: todas las impresoras Hewlett-Packard
Desjet 820xx y la Sharp JX-9210 que sólo funcionan con Windows 95. El resto son
compatibles con linux, aunque en ciertos casos hace falta descargar controladores
(Canon BJC600/800; HP Deskjet 500/.../855C) o programas que mejoran la calidad de
impresión (como el free-lj4 para la serie HP Laserjet 4). El problema de los winmodems
es que parte del hardware es sustituido por software y ese software solamente es
de Windows, con lo cual no pueden funcionar en linux. Lo malo es que al comprar
un módem nos venden un winmodem sin avisar. Si tenemos uno de ellos lo mejor
es reemplazarlo por otro que funcione en linux. Para ello lo mejor es consultar en la

Página 132 de 328 Introducción a Linux
dirección http://es.tldp.org/FAQ/FAQ_Linux/Html/FAQ_Linux-8.html para escoger uno
adecuado.
Antes de la instalación...
Antes de comenzar la instalación, es necesario recoger la información necesaria para
llevar a buen término el proceso:
• Controlador marca y modelo del CD-ROM

• Marca y modelo de la tarjeta ethernet
• Modelo, fabricante y puerto usado por el ratón
• Modelo Chipset y fabricante de la tarjeta gráfica
• Servidor X compatible con la tarjeta gráfica
• Memoria de la tarjeta gráfica
• Modelo, fabricante y datos de la tarjeta de sonido
• Intervalos de trabajo de barrido horizontal (kHz) y de refresco vertical (Hz)
del Monitor.
• Fabricante, modelo y puerto serie usado por el módem
• Fabricante y modelo de impresora
• Nombre del computador
• Nombre del dominio de red
• Dirección IP asignada al computador
• Dirección de red de area local
• Dirección de la máscara de red
• Dirección de transmisión de la red
• Dirección del encaminador
• Dirección del servidor de nombres
Todos estos datos serán necesarios para instalar convenientemente el hardware y
configurar las X-windows. Por último, antes de comenzar sería bueno haber leído un
poco de linux o -mejor aún- tener un amigo que ya conozca el sistema y que se digne a
acompañarnos durante la instalación y configuración de nuestra distribución.

Durante la instalación
¿Dónde instalo Linux?

Linux se puede instalar en cualquier disco que tengas en tu sistema y en cualquier
partición del disco duro (primaria o extendida).No podrás tener Linux en una partición
compartida con otro sistema operativo.Linux necesita su propia partición/es para
funcionar.

¿Qué es una partición? ¿Cómo creo una partición?

Particionar el disco duro es una manera de dividir el disco físico en varios discos
lógicos. O lo que es lo mismo, al particionar un disco, dividimos el disco en varias

Plataforma de Teleformación de IFES Página 133 de 328
particiones independientes unas de otras, creando la ilusión de que tenemos diferentes
discos, cuando en realidad lo que tenemos es un solo disco físico dividido en partes.
Una partición es una de estas partes (divisiones) del disco. Existen dos clases de
particiones: primarias y extendidas. En un disco sólo podrás tener como máximo 4
particiones primaria y 1 extendida. En la partición extendida se podrán definir todas
(bueno,también existe un límite, pero es alto) las unidades lógicas que queramos.
Con este sistema podemos tener una gran cantidad de particiones en nuestro disco.
Cualquier disco que tengamos en nuestro ordenador tiene al menos una partición
primaria,que en la mayoría de los casos tiene un tamaño equivalente al total del disco.
Unos ejemplos aclararán las cosas:
• Un disco de 1Gb con una sola partición, tendrá una partición primaria de 1Gb
(total del disco).

• Ese mismo disco podría tener 4 particiones primarias de 0.25Gb cada
una,dando la ilusión de que tenemos 4 discos duros de 0.25Gb en vez de un
solo disco de 1Gb.
• Otra combinación posible podría ser 4 particiones primarias de 0.10Gb
y 1 extendida con 6 unidades logicas de 0.10Gb.En este caso parecería
que tenemos 10 discos duros de 0.10Gb cada uno.Las combinaciones
son múltiples y variadas y dependerán de nuestros gustos y de lo que
necesitemos.
Casi todos los sistemas operativos traen un programa con el que podemos
crear,modificar, borrar las particiones de nuestro disco. En Ms-Dos/Windows se llama
FDISK. Este programa sólo puede trabajar con particiones de Ms-Dos/Windows. En
Linux también se llama FDISK (/sbin/fdisk), pero es un programa más potente, capaz
de trabajar y crear particiones tanto para Linux como otros sistemas operativos. Si vas
a trabajar con Linux, es recomendable el uso del FDISK que viene con tu distribución,
para evitar problemas.
Al contrario que Ms-Dos, Windows, OS/2, las diferentes particiones en linux no se
denominan C:, D:, E:, ...., etc. Existe una denominación propia.
Si los discos son IDE:
• /dev/hda: Disco duro IDE como master en el canal IDE 1.
• /dev/hda1: Partición primaria 1 en /dev/hda
• /dev/hda2: Partición primaria 2 en /dev/hda
• /dev/hda3: Partición primaria 3 en /dev/hda
• /dev/hda4: Partición primaria 4 en /dev/hda
• /dev/hda5: Partición extendida 1 en /dev/hda
• /dev/hda6: Partición extendida 2 en /dev/hda
• .....
• .....
• /dev/hda16: Partición extendida 16 en /dev/hda
• /dev/hdb: Disco duro IDE como esclavo en el canal IDE 1.
• /dev/hdb1: Partición primaria 1 en /dev/hdb * ........

Página 134 de 328 Introducción a Linux
• ........

• /dev/hdc: Disco duro IDE como master en el canal IDE 2.
• /dev/hdc1: Partición primaria 1 en /dev/hdc * ........
• ........
• /dev/hdd: Disco duro IDE como esclavo en el canal IDE 2.
• /dev/hdd1: Particion primaria 1 en /dev/hdd * ........
• ........
Si los discos son SCSI:
• /dev/sda: Disco duro SCSI nr.1.

• /dev/sda1: Partición primaria 1 en /dev/sda
• ........
• ........
• /dev/sdb: Disco duro SCSI nr.2.
• /dev/sdb1: Partición primaria 1 en /dev/sdb * ........
• ........
IMPORTANTE: Es muy importante saber lo que se está haciendo cuando trabajéis
con programas que modifican la tabla de particiones de un disco. Al cambiar la tabla
de particiones de vuestro disco, se pierden los datos contenidos en las particiones
afectadas. Realizad copias de seguridad de los datos que queráis mantener antes de
usar FDISK.

¿Por qué necesito diferentes particiones?

El particionar el disco es simplemente una manera de organizar tu disco duro.Podrás
organizarlo con una sola partición o en varias. Es el usuario el que deberá decidir
cuántas particiones tendrá su disco y el tamaño de las mismas.
Hay que recordar que al menos hay que tener una partición primaria.
Desventajas de tener vuestro disco dividido en diferentes particiones:ninguna.
Ventajas de tener vuestro disco particionado en varias particiones:
• Si tenéis un error/problema en una de ellas, las demás no se verán
afectadas.

• Poder tener diferentes sistemas operativos en vuestra máquina,totalmente
independientes unos de otros.
• Poder tener vuestros archivos de datos en particiones totalmente
independientes.
• Poder borrar/cambiar el contenido de una partición, sin que esto afecte a las
demás.

¿Cuántas particiones necesito para Linux?

Plataforma de Teleformación de IFES Página 135 de 328
La respuesta rápida y fácil es: recomendable al menos dos,una para el sistema/datos
y otra para Swap.Usualmente se suelen tener tres, una para el sistema/programas
(/), otra para los datos (/home) y otra para swap. La respuesta larga y no tan fácil es
más complicada de explicar:todo dependerá muchísimo del uso que se le vaya a dar al
sistema.Para sistemas que se utilicen de forma particular y por uno o pocos usuarios
bastará con las dos/tres particiones antes mencionadas;esto evitará los problemas
de saber qué cantidad de espacio necesitan las diferentes particiones y el quedarnos
sin espacio en alguna particion vital,mientras que nos sobra en otras.Para sistemas
servidores, con gran cantidad de servicios y usuarios, es muy recomendable tener
varias particiones/discos.
Existe un documento (HOWTO: Multi Disk System Tuning) muy bueno y quizás
complicado para el principiante que explica cuántas particiones, discos y qué tamaño
deberían tener en función del uso que se le vaya a dar al sistema .Lo podéis encontrar
en http://www.nyx.net/~sgjoen/disk.html, o en cualquier servidor con documentación
Howto.

¿Qué es la Swap ?

La swap es un espacio reservado en tu disco duro para poder usarse como una
extensión de memoria virtual de tu sistema. Es una técnica utilizada desde hace tiempo
para hacer creer a los programas que existe más memoria RAM de la que en realidad
existe. Es el propio sistema operativo el que se encarga de pasar datos a la swap
cuando necesita más espacio libre en la RAM y viceversa. En Linux, la memoria total
disponible por el sistema estará formada por la cantidad de memoria RAM instalada +
la swap disponible.
El acceso a la swap (disco duro) es más lento que el acceso a la memoria RAM, por
lo que si nuestro ordenador está muy cargado de trabajo y hace un uso intensivo de
la swap, la velocidad del sistema disminuirá.Un uso muy intensivo y continuado de
la swap es un indicativo de que necesitamos más memoria en nuestro sistema para
que funcione desahogado con el uso que le estamos dando. En linux generalmente se
usa como mínimo una partición dedicada a swap (aunque también se puede tener un
fichero swap).

¿Cuánta Swap necesito?

Ésta es otra pregunta que es difícil de contestar:todo dependerá del uso que se le vaya
a dar al sistema y del espacio libre que tengamos.Si vas a utilizar muchos programas
a la vez y tienes poca memoria RAM, necesitarás más swap;si tienes mucha RAM, no
necesitarás tanta swap.
Hay que recordar que un uso no intensivo de la swap es normal y no afectará mucho
a la velocidad del sistema,pero como hemos dicho antes,un uso muy intensivo y
continuado es un indicativo de que necesitamos más memoria RAM. No existe una
fórmula mágica para saber cuánto espacio deberíamos reservar para swap.Hay

Página 136 de 328 Introducción a Linux
que recordar que la memoria total disponible en Linux es RAM + Swap.Como datos
orientativos podríamos decir que como mínimo,esta combinación debería ser de 32MB
para sistemas que se utilicen en modo texto y de 64MB en adelante para sistemas que
se utilicen en modo gráfico. Aquí tenéis una serie de consejos sobre la swap:
• Es recomendable el tener siempre algo de swap configurada,incluso en
sistemas con mucha memoria.

• En linux no se puede tener mas de 128MB en una particion swap.Si
necesitas más de 128MB de swap,puedes tener más de una particion
dedicada a swap,por ejemplo,dos de 128MB
• Si tienes más de un disco,instala la swap en el que trabaje más rápido.
• Si tienes más de un disco que se puedan acceder simultaneamente (por
ej. dos SCSI, o dos IDE en diferentes canales IDE),se puede ganar algo
de velocidad teniendo una partición swap en cada uno de estos discos.
Para un uso privado "normal-alto" del sistema, aquí tenéis unos ejemplos
orientativos,según mi opinión,de la cantidad de swap recomendable:
• 16MB RAM + 64MB Swap
• 32MB RAM + 96MB Swap
• 64MB RAM + 64MB Swap
• 128MB RAM + 128MB Swap
• 256MB RAM + 128MB Swap
Como dato anecdótico,decir que existen servidores,en donde la cantidad de swap llega
a ser de 256MB y hasta 512MB aunque yo tengo ordenadores con 16MB de RAM y
16MB de Swap como servidores de impresión que funcionan sin ningún problema. En
fin, cada uno debe saber el uso que le va a dar a su sistema y analizar la cantidad de
memoria necesaria,aunque si tenéis espacio de sobra en el disco,más vale tener mas
Swap disponible que la necesaria,por lo que pueda ocurrir en un futuro.
Como dice el dicho,más vale que sobre que no que falte.

No tengo sitio en mi disco duro,¿qué hago?

Si tienes todo el espacio de tu disco ocupado por otros sistemas
operativos,deberásconseguir espacio para poder crear la partición/es donde instalar
Linux. Existen tres maneras de hacer esto:la primera, compra un disco duro e instálalo.
• Ventajas: Es la manera más fácil y segura de conseguir más espacio.

• Desventajas: Es la más cara ;tienes que instalar un nuevo disco duro.
La segunda es borrar todas las particiones de tu disco duro,con lo que perderás toda la
información que contiene, y empezar desde cero a definir las diferentes particiones del
disco. Así podrás definir las particiones para Linux y otros sistemas operativos si vas a
tenerlos.
• Ventajas: Es la manera más fácil y barata de conseguir más espacio,no
necesitas comprar otro disco.

Plataforma de Teleformación de IFES Página 137 de 328
• Desventajas: Pierdes la información que ya tengas en el disco; más trabajo,
ya que si tienes más de un sistema operativo tienes que instalarlos también
aparte de Linux.

La tercera,existen unos programas que permiten cambiar la tabla de particiones del
disco,sin perder los datos de las mismas.
Si tienes por ejemplo una partición de 1GB con 500MB libres, puedes utilizar
uno de estos programas para "robarle" espacio a la partición y crear una nueva
partición,teniendo al final por ej. una particion de 600MB con la información de la
particion original y una nueva partición con el resto de espacio liberado.
• Ventajas: Liberas espacio sin perder datos; no tienes que instalar de nuevo
la información/sistema operativo contenido en la particion original.

• Desventajas: Estás jugando con la tabla de particiones del disco,hay
que saber muy bien lo que se hace y cómo utilizar estos programas
"ladrones de espacio".Si algo va mal,puedes perder la información que
tenías en la partición original y deberás empezar de cero como en el caso
segundo.Existen dos programas "ladrones de espacio" que se suelen utilizar
normalmente en el caso tercero:
• Partition Magic: Pagina web principal http://www.powerquest.com/root/intnl/
spanish.html
• FIPS: Pagina web principal http://bmrc.berkeley.edu/people/chaffee/fips/
fips.html

¿Cómo configurar el arranque de Linux?

La manera más fácil de arrancar Linux es con LILO.Pásate por la sección sobre LILO
para más información.

¿Cómo utilizar LoadLin para el arranque de Linux?

A veces ciertos programas o "sistemas operativos" están diseñados para modificar el
Master Boot Record (MBR) del ordenador sin tener en cuenta los contenidos actuales
del mismo,lo que suele redundar en la eliminación de LILO y la imposibilidad del
usuario de entrar en Linux. Para solucionar estos problemas, o por si simplemente
deseamos entrar en Linux desde MSDOS, está disponible el programa LOADLIN.
Loadlin es un programa de MSDOS que podemos encontrar en el directorio dosutils
de los CDs de Linux (en la propia distribución).Este programa permite arrancar Linux
desde MSDOS a partir de él mismo,un fichero kernel de Linux (como vmlinuz, bzImage
o zImage) y una partición Linux. Mediante él podemos hacernos un disco de seguridad
para arrancar Linux cuando LILO sea borrado por otros S.O.:
creamos un directorio a:\loadlin y copiamos alli el ejecutable Loadlin.exe.

Página 138 de 328 Introducción a Linux
Copiamos también cualquier núcleo de Linux que tengamos disponible(por ejemplo
\vmlinuz o \boot\bzImage) al mismo diskette. Cuando necesitemos arrancar desde el
diskette, arrancamos en MSDOS y ejecutamos lo siguiente:
Formato de uso:
loadlin kernel root=particion, en nuestro caso: ## a: loadlin bzImage
root=/dev/hda4
(cambiando cada cosa por su nombre correcto de fichero de kernel y partición donde
tengamos instalado Linux). Esto lo podemos escribir en el mismo diskette en un fichero
linux.bat,por ejemplo.
Tras ejecutarlo,Linux arrancará normalmente con dicho kernel y con los datos de la
partición indicada,lo cual permite restaurar el MBR original (con LILO) ejecutando de
nuevo LILO(mediante /sbin/lilo, o /sbin/lilo -v).

Sobre LILO
¿Qué es LILO y para qué sirve?

LILO,literalmente el cargador de Linux (Linux LOader), es un gestor de arranque muy
versátil que permite iniciar un sistema operativo(SO) cargando el sector de arranque de
una partición del disco duro(o de un diskette). Esto lo pueden hacer otros gestores de
botado,pero sólo LILO puede cargar el kernel de Linux y arrancar Linux presentando
además la posibilidad de pasar parámetros al kernel mediante líneas de comando.
LILO tiene una serie de componentes que se cargan de manera secuencial.En primer
lugar,se carga la primera parte (el comienzo del código) del cargador en el sector
de arranque.Cuando este primer tramo del cargador se ha iniciado, aparece una "L"
en el monitor.Entonces, el resto (la mayor parte del código) del cargador (que junto
con la primera parte del código se encuentra en el fichero /boot/boot.b) procede a
iniciarse.Justo antes de que se cargue este segundo tramo de código, se presenta
"I" en la pantalla. Si todo ha ido bien, después de haberse cargado, la siguiente
letra de LILO, "L", aparecerá en la pantalla. Después de esto, se produce la carga
de la tabla de descriptores a partir del fichero /boot.map,donde se establecerán las
ubicaciones de los posibles kernels de Linux así como los sectores de arranque
correspondientes a otros SOs que también gestione LILO. Por último, se carga el
SO seleccionado, que en principio será el kernel de Linux. Si todo ha funcionado sin
problemas, aparecerá una "O" en el monitor y se habrá escrito en la pantalla la palabra
LILO. Si hubiese problemas en el proceso de arranque, la presencia o ausencia de
las letras de LILO,junto con algunos otros mensajes, serán claves para diagnosticar la
causa del fallo.

¿Dónde se instala LILO?

Dependiendo de las necesidades que tengamos, podremos instalar LILO:
• En el sector de arranque de un diskette (floppy) (/dev/fd0)

Plataforma de Teleformación de IFES Página 139 de 328
• En el sector de arranque (superbloque) de una partición raíz de Linux
(primaria o extendida) (/dev/hda1, p.ej. para (E)IDE ó /dev/sda1 p.ej. para
SCSI)

• En el MBR (Master Boot Record) o Sector Maestro de Arranque (primer
sector) del primer disco duro (/dev/hda, p.ej. para (E)IDE ó /dev/sda p.ej.
para SCSI)
La opción de instalar LILO en un diskette ("de arranque") es el procedimiento más
seguro, pero también el más lento de cargar Linux en nuestra máquina. Si solamente
tenemos Linux en nuestro ordenador la opción idónea sería instalar LILO en el MBR
del primer disco duro. Si vamos a disponer de otros SOs coexistiendo en nuestra
máquina(MS-DOS, Windows) también podemos escoger la instalación de LILO en
el MBR, y gestionar con él la carga de los SOs. Pero con esto hay que tener ciertas
precauciones.
Si ya tenemos un SO en una partición, p. ej. Windows 95, cuando instalemos LILO en
el MBR sobreescribiremos dicho sector y ya no podremos arrancar Windows 95, si no
lo gestiona el propio LILO. Si tenemos Linux instalado con LILO en el MBR y después
instalamos p. ej., Windows 95, se borrará LILO del MBR y no podremos arrancar Linux.
En tal caso, para poder usar LILO como gestor común, habría que cargar Linux con un
diskette de arranque y reinstalar,desde Linux, LILO en el MBR. Por lo tanto, si vamos a
meter varios SOs en nuestra máquina, es mejor instalar primero los otros y luego linux,
usando después LILO como gestor de arranque de todos los SOs.
Si nos planteamos iniciar los diversos SOs, incluído linux, desde otro gestor de
arranque, como por ejemplo el moderno BootMagic del PartitionMagic 4.0 (Englobado
ya en El Caldera OpenLinux 2.2), la mejor opción sería escribir LILO en el sector de
arranque de la partición linux nativa correspondiente. En tal caso,cuando instalemos
linux,deberemos marcar dicha partición raíz como activa (usando el comando "a" de
fdisk o el "b" de cfdisk).

¿Qué limitaciones impone el BIOS a LILO?

Excepto en el caso de que LILO sea el gestor de otros SOs,será el BIOS u otro
cargador el responsable de ejecutar el sector de arranque de la partición.
El BIOS (Basic Input Output System) cuando encendemos el ordenador, lleva a cabo
el POST (Power-On Self Test) para comprobar los parámetros de la configuración
de hardware que se encuentran permanentemente salvados en el chip CMOS
(Complementary Metal Oxyde Semiconductor) RAM (continuamente alimentado por
una batería aunque el ordenador se apague): memoria instalada, disqueteras, discos
duros, cd-roms,...
Después del test, BIOS muestra en la pantalla los valores de los parámetros de
hardware y procede a arrancar el SO.En el caso de un disco duro toma el MBR del
disco primario y de él se cargará el programa gestor de arranque. Antaño, el MBR
contenía el sistema de arranque del único sistema operativo instalado. Hoy día,como es

Página 140 de 328 Introducción a Linux
posible cargar más de un SO, para arrancar hace falta un gestor de arranque múltiple,
como por ejemplo LILO. Por lo tanto LILO está limitado por las opciones del BIOS.
Además, LILO depende del BIOS para cargar los ficheros /boot/boot.b, /boot.map, los
diversos kernels, los sectores de arranque de los otros SOs ,y el mensaje de arranque
de LILO si se ha definido.
Las restricciones más importantes que afectan LILO eran en el caso de BIOS antiguos
la limitación a los dos primeros discos duros y la imposibilidad de acceder más allá de
1024 cilindros por disco, lo cual se vulneraba en cuanto el disco duro superaba los 504
Mbytes,por lo que convenía tener la partición raíz que contuviera los kernels en las
primeras posiciones de la tabla.
Los BIOS de las modernas placas base ya soportan hasta cuatro dispositivos (discos
duros o cdroms). Así, cuando la partición de arranque de Linux se encuentra en el
segundo, tercero o cuarto disco duro, LILO imprime un mensaje de precaución,pero
continúa. El límite de los 1024 cilindros no ha cambiado con los nuevos BIOS, pero
los controladores de disco con soporte de LBA (Logical Block Address)o LARGE(IDEs
con más de 1024 cilindros, la mayoría de EIDEs y todos los SCSI) pueden "traducir"
o "remapear" la geometría del disco en otra equivalente de manera que parezca
que el sistema tiene menos de los 1024 cilindros y se puedan gestionar hasta casi
8 Gbytes.Si la información acerca de la geometría del disco que hay en el menú del
BIOS (remapeada con p.ej. LBA) no es la misma (en cuanto a cilindros/cabezas/
sectores) que la que nos da fdisk, entonces se producirá un problema de "geometry
mismatch" (no equivalencia de geometría) y LILO abortará el arranque a menos que se
utilice la opción "linear" en la configuración de LILO.

¿Cómo se configura e instala LILO?

La configuración de LILO se hace en /etc/lilo.conf,pero antes que editar y escribir
manualmente la configuración en este archivo, existen interfaces o programas capaces
de preparar una configuración conveniente para el usuario, de manera que solamente
en el caso de incorporar opciones avanzadas tenga que editar y modificar a mano el
archivo.
En primer lugar existe un programa llamado Quickinst que acompaña la distribución
original del programa LILO. Se trata de un guión (shell script) que produce una
configuración mínima de LILO que luego conviene actualizar. Por otra parte ,la mayor
parte de las distribuciones proporcionan un asistente durante la instalación que ayuda a
la configuración de LILO.
RedHat en su "INSTALL" dedica una parte importante a la configuración de LILO. El
"SETUP" de Slackware también lo permite. Distribuciones como Caldera OpenLinux o
SuSE disponen de herramientas de instalación que permiten una cómoda configuración
de LILO para el usuario (LISA y LIZARD para OpenLinux 1.3 y 2.2, y YAST para
SuSE).Quizás Debian ha sido un poco más espartana (al menos hasta Hamm 2.0)
en su utilidad de instalación para la configuración de LILO: se limita a escribir una
configuración básica de LILO sin soporte para otros SOs ni otros kernels. El fichero /

Plataforma de Teleformación de IFES Página 141 de 328
etc/lilo.conf sólo debería ser leído por el superusuario administrador, ya que podría
contener contraseñas. En caso de duda, deberíamos hacer (como root):
chmod 600 /etc/lilo.conf .
Escribiendo /etc/lilo.conf el fichero /etc/lilo.conf comienza con una "global
section" (sección general) seguida de una o más "system sections" (secciones para
cada SO que LILO gestione) que comenzarán por:
image= (si es un kernel linux) ,
other= (si es otro SO).
Los comentarios en el fichero comienzan con el símbolo de la almohadilla (#).
Consideremos a continuación las líneas más importantes de /etc/lilo.conf: Sección
general
• boot=dispositivo indica el dispositivo donde se instalará LILO; dispositivo
puede ser un diskette (/dev/df0), una partición (p.ej. /dev/hdc2) o el disco
completo (p.ej /dev/hda) que corresponde a la instalación en el MBR

• install=ficheroarranque instala el fichero especificado como nuevo sector de
arranque. Por defecto es /boot/boot.b
• map=ficheromapa establece la ubicación del fichero de mapeado. Por
defecto es /boot/map.
• prompt ordena a LILO que muestre un indicador (boot:) al momento
de iniciarse el arranque que permita seleccionar el SO a iniciar. Si en
este punto pulsamos la tecla TAB, aparecerán los nombres dados a los
correspondientes SOs.
• timeout=tiempo indica el tiempo en décimas de segundo que LILO debe
mostrar el indicador anterior. Si pasado ese tiempo no se indicase nada,
LILO cargaría el primer SO configurado. Sección linux:
• image=kernelimagen donde introducimos el fichero que contiene el kernel,
incluyendo la ruta de directorio. Lo más normal es que sea /vmlinuz o /boot/
vmlinuz
• label=nombre donde escribimos un nombre para el SO en cuestión, p. ej.,
"linux" para linux, pero para otros, puede ser "DOS", "win98"...como máximo
pueden ser cadenas de 15 caracteres.Introduciendo ese nombre cuando
LILO presenta el indicador (boot:) se selecciona el SO a iniciar.
• root=partición root donde indicamos el nombre de la partición linux nativa de
nuestro sistema linux, p. ej., /dev/hdc2.
• read-only indica al kernel que ha de montar inicialmente la partición raíz
en modo de sólo lectura. Es necesario indicar esta opción para la partición
donde se montará el sistema de ficheros raíz.
Sección otros SOs:
• other=partición donde indicamos esta vez la partición de inicio del SO en
cuestión, p.ej., /dev/hda1.
• label=nombre tal como se indicó antes, será el nombre con que etiquetemos
dicho SO.

Página 142 de 328 Introducción a Linux
• loader=gestor de arranque .Para cargar el SO, LILO construye un pseudo
MBR en su fichero de mapeo. Esta opción especifica el fichero donde tomar
el código del pseudo MBR. Por defecto el fichero es /boot.chain.b

• table=tabla establece el dispositivo fuente para la tabla de partición escrita
en el pseudo MBR, usualmente /dev/hda o /dev/sda. Otras opciones
interesantes (sólo algunas)
• vga=modo selecciona el modo VGA al inicio. Los modos válidos son
"normal" (80x25), "ext" (extendido, 80x50) o "ask" (preguntar).
• linear hace que las referencias a los sectores se escriban como direcciones
lógicas en lugar de físicas. Se emplea cuando LILO no reconoce
correctamente la geometría del disco duro (debido a un remapeado por parte
del BIOS).
• message=ficheromensaje establece el fichero cuyo texto se mostraría
durante el arranque. No debe tener más de 24 líneas.
• append=parámetro permite pasar parámetros y componentes de hardware
al kernel como cadena de caracteres. Por ejemplo, si nuestra memoria
RAM es superior a 64 Mbytes, por ejemplo, 128, debemos pasarle el dato al
kernel durante el arranque mediante (no necesario a partir de la serie 2.2.x)
append="mem=128M"
• delay=tiempo establece el tiempo en décimas de segundo que LILO
esperará antes de arrancar el primer SO. Generalmente se usa cuando se
arranca un único SO, pues si no, la opción prompt es mucho mejor. Por
defecto (sin la opción) LILO no espera y se inicia el SO inmediatamente.
Después de haber escrito el fichero /etc/lilo.conf, es necesario lanzar el "map
installer" haciendo:## /sbin/lilo
con lo cual LILO escribe un backup del sector de arranque, escribe la primera parte
de su código en él y crea un nuevo fichero de mapeado (/boot/map). LILO anuncia
entonces por la pantalla los SOs que gestiona, añadiendo una estrella al que se
arrancará por defecto. Hay que recalcar que si cualquiera de los componentes de LILO
cambia o se modifica su configuración mediante ## /etc/lilo.conf
es necesario volver a reinstalar LILO con ## /sbin/lilo.
Configuración mínima de LILO y configuración para gestionar linux y otro sistema
operativo (win95).
Consideremos el siguiente fichero ## /etc/lilo.conf
únicamente para arrancar linux:
Fichero de configuración
/etc/lilo.conf
Sección general
boot=/dev/hda delay=100 vga=normal
Partición linux
image=/vmlinuz root=/dev/hda1 label=linux read-only .
Este ejemplo se interpreta de la siguiente forma:

Plataforma de Teleformación de IFES Página 143 de 328
LILO se va a instalar en el MBR del disco duro /dev/hda. El modo de video EGA es
80x25, el sistema linux nativo se encuentra en la primera partición del disco duro (/
dev/hda1) y la imagen del kernel se encuentra en el fichero /vmlinuz. Después de 10
segundos,arrancará el sistema linux, cuyo nombre es "linux". Si hacemos
/sbin/lilo
entonces aparecerá en el monitor:
Added linux
• Veamos ahora otro fichero de configuración para gestionar linux y win95:

Fichero de configuración
/etc/lilo.conf
Sección general
boot=/dev/hda prompt
timeout=100
vga=normal
Partición linux
image=/vmlinuz
root=/dev/hdc1
label=linux read-only
Partición Windows 95
other=/dev/hda1
label=win95 table=/dev/hda .
En este caso, LILO también está en el MBR del primer disco duro (/dev/hda) y hay dos
sistemas operativos: Linux en la partición /dev/hdc1 y Windows 95 en la partición /dev/
hda1. La tabla de partición para el gestor de arranque corresponde al dispositivo /dev/
hda. Si hacemos
/sbin/lilo
aparecerá el mensaje:
Added linux
• Added win95, lo que significa que LILO va a gestionar los dos sistemas
operativos y que por defecto el primero en arrancar será linux. Cuando

reinicialicemos el sistema, si todo ha ido bien aparecerá la palabra LILO
seguida del indicador de arranque LILO boot: y así permanécera durante
unos 10 segundos, pasados los cuales si no hemos escrito el nombre de uno
de los SOs, cargará por defecto linux. Si antes del tiempo pulsamos la tecla
TAB, entonces aparecerán en pantalla los nombres de los SOs gestionados:
linux, win95

¿Cómo desinstalo LILO?

Hay razones para desear desinstalar LILO:

Página 144 de 328 Introducción a Linux
una, desinstalar el sistema linux de nuestra máquina; otra imperativa: porque algo va
mal.
LILO es un programa que, mal manejado, puede hacer al sistema no arrancable si se
instala en el MBR. Mal configurado, impedirá el acceso al cualquier SO. En tales casos
es indispensable disponer de diskettes de arranque para dichos SO. Por lo tanto es
conveniente hacer el disco de arranque de Windows y el de arranque de Linux (en el
momento adecuado de la instalación del sistema) de manera que nos permita acceder
via disquetera al sistema correspondiente en caso de imposibilidad de arrancar. Nótese
que en el BIOS el arranque deberá comenzar por defecto en la disquetera A: .
Una vez que hemos arrancado el SO, hay muchas maneras de desinstalar LILO del
MBR. Si nos encontramos en DOS o Windows, basta con ejecutar el comando MS-
DOS FDISK /MBR (ó SYS C: si C: es el disco duro en cuyo MBR se instaló LILO).Si
estamos en OS/2 FDISK /NEWMBR que escriben los primeros 446 bytes (el código de
arranque) en el MBR y dejando las particiones ilesas.Si estamos en Linux, basta con
hacer
/sbin/lilo -u
para restaurar el MBR anterior a la instalación de LILO .
Además de todo esto puede hacerse otra cosa: cuando LILO sobreescribe el MBR,
salva una copia de backup en ## /boot/boot.xxxx
donde xxxx es un número mágico del dispositivo donde se ha instalado. Veamos
algunos ejemplos:
Disco
/dev/zzz xxxx
IDE primario ## /dev/hda 0300
SCSI primario ## /dev/sda 0800
floppy ## /dev/fd0 0200
Así,si queremos desinstalar LILO del sector de arranque de alguno de estos
dispositivos, bastará con hacer:
dd if=/boot/boot.xxxx of=/dev/zzz bs=446
count=1
Si LILO se ha instalado en una partición raíz, no hará no arrancable ningún otro sistema
operativo. Únicamente, si está mal instalado, hará que no arranque linux. Si deseamos
restaurar el sector de arranque de la partición /dev/yyyy (p.ej. /dev/hda1) podemos
reescribir el sector de botado haciendo:
dd if=/dev/yyyy of=New-file bs=512 count=1
dd if=Backup-Date of=/dev/yyyy
Si lo que queremos es desinstalar linux, borraremos la partición root con fdisk.

LILO no funciona bien. Diagnóstico de errores

Cuando LILO se inicia, si todo ha ido bien, presenta en la pantalla las cuatro letras
"LILO".

Plataforma de Teleformación de IFES Página 145 de 328
Como ya vimos, cada letra correspondía a una acción. Si LILO no ha funcionado, las
letras que presente en pantalla junto con ciertos mensajes, serán la clave para saber
dónde está el problema.Veamos los más comunes:
• "L" error: El primer tramo del código ha sido cargado pero no el segundo.
Esto se debe generalmente a un error físico en el sector de botado o a un
problema de geometría del disco.

• "LI":El segundo tramo del código ha sido invocado, pero no ha podido
iniciarse. Esto sucede cuando hay un error de geometría de disco o se ha
movido /boot/boot.b sin reinstalar LILO (/sbin/lilo).
• "LIL":El segundo tramo del código se ha iniciado pero no puede ubicar los
datos que necesita en el fichero de mapeado. Esto puede deberse a un error
físico del dispositivo de arranque o a un problema en la geometría del disco.
• "LIL?":El segundo tramo del código se ha cargado en una dirección de
memoria equivocada. Esto se debe a un error en la geometría del disco o
cuando se ha movido /boot/boot.b sin reinstalar LILO (/sbin/lilo).
• "LIL-":Los datos en el fichero de mapeado no son válidos. Las causas son
las mismas que en el caso anterior. La mayor parte de las veces, no se trata
de un problema físico del dispositivo de botado, sino errores debidos a la no
equivalencia entre la geometría del disco que fdisk presenta y que el BIOS
ha remapeado. En tal caso el uso del parámetro "linear" en /etc/lilo.conf
puede funcionar. Otras veces puede deberse a que se ha intentado instalar
LILO en una partición lógica.Y otras veces a causas más sutiles.Por ejemplo:
Yo arranco linux junto a otros sistemas operativos con el gestor de arranque de
Partition Magic y tengo LILO en una partición raíz. Una vez hice un resize y cambié
el tamaño de mi partición linux nativa porque necesitaba espacio para instalar nuevos
programas. Al terminar e intentar arrancar linux de su partición, apareció en la pantalla
"LI". Eso se debió a que después de haber hecho el cambio de tamaño, había movido
/boot/boot.b y no había lanzado el ' map installer /sbin/lilo'.Cogí mi diskette de arranque
de linux, y cuando entré ejecuté la orden y reinicié el sistema. Todo funcionó.

Kernel / Núcleo
¿Qué es el kernel?

El kernel o núcleo de linux se podría definir como el corazón de este sistema operativo.
Es el encargado de que el software y el hardware de tu ordenador puedan trabajar
juntos. Las funciones más importantes del mismo, aunque no las únicas, son:
- Administración de la memoria, para todos los programas en ejecución.
- Administración del tiempo de procesador, que estos programas en ejecución utilizan.
- Es el encargado de que podamos acceder a los periféricos/elementos de nuestro
ordenador de una manera cómoda. Existen dos versiones del Linux kernel:

Página 146 de 328 Introducción a Linux
- Versión de producción: la versión de producción, es la versión estable hasta
el momento. Esta versión es el resultado final de las versiones de desarrollo o
experimentales. Cuando el equipo de desarrollo del núcleo experimental, decide que ha
conseguido un núcleo estable y con la suficiente calidad, se lanza una nueva versión
de producción o estable. Esta versión es la que se debería utilizar para un uso normal
del sistema, ya que son las versiones consideradas más estables y libres de fallos en el
momento de su lanzamiento.
- Versión de desarrollo: esta versión es experimental y es la que utilizan los
desarrolladores para programar, comprobar y verificar nuevas características,
correcciones, etc. Estos núcleos suelen ser inestables y no se deberían usar, a no ser
que sepas lo que haces.
Cómo interpretar los números de las versiones: las versiones del núcleo se numeran
con 3 números,de la siguiente forma:
XX.YY.ZZ
- XX: indica la serie principal del núcleo. Hasta el momento sólo existen la 1 y 2. Este
número cambia cuando la manera de funcionamiento del núcleo ha sufrido un cambio
muy importante.
- YY: indica si la versión es de desarrollo o de producción.Un número impar, significa
que es de desarrollo; uno par,que es de producción.
- ZZ: Indica nuevas versiones dentro de una versión, en las que lo único que se ha
modificado, son fallos de programación /bugs.
Unos ejemplos nos ayudarán a entenderlo mejor:
- ej1: versión del núcleo 2.0.0: Núcleo de la serie 2 (XX=2),
versión de producción 0 (YY=0 par), primera versión de 2.0 (ZZ=0)
- ej2: versión del núcleo 2.0.1: Núcleo de la serie 2, versión 0, en el que se han
corregido errores de programación presentes en la versión 2.0.0 (ZZ=1)
- ej3: versión del núcleo 2.1.100: versión 100 del núcleo de desarrollo 2.1.

¿Dónde consigo el kernel?

El núcleo se puede bajar de un gran número de servidores en internet. El servidor
principal es http://www.kernel.org/ y la página de servidores espejos es http://
www.kernel.org/mirrors/.
Si tienes problemas accediendo a estas páginas, aquí tienes una copia en otro
servidor:http://linux-es.uio.no/lista_kernel.html

¿Cómo se configura e instala el kernel?

Éste es uno de los temas que asustan a los nuevos usuarios de Linux. Lo primero
deciros que no hay razón para asustarse, la configuración e instalación de un nuevo
núcleo en nuestro sistema es mas fácil de lo que suena.Lo que si hay que hacer es
tener claro una serie de cosas antes de ponernos a trabajar, para así evitar problemas.
A continuación tienes una pequeña guía sobre cómo configurar e instalar un nuevo

Plataforma de Teleformación de IFES Página 147 de 328
núcleo en tu sistema. Has decidido instalar un nuevo núcleo en tu sistema,que es lo
que tenemos que hacer?
1. Bajarte la ultima versión ¿De dónde? Léete la sección anterior.
NOTA: Si vais a instalar un núcleo de la serie 2.2.x, tenéis que tener en cuenta que
algunas distribuciones no están/estaban preparadas para hacer uso de esta serie.Si
vuestra distribución no es de las que vienen preparadas,tenéis que actualizar una
serie de paquetes/programas antes de instalar el nuevo núcleo (más información en la
documentación que acompaña al núcleo).
2.Tener claro lo que vamos a hacer,léete el documento HOWTO sobre el núcleo
( Inglés / Castellano)
3. Tener claro las opciones que tenemos que configurar, para poder utilizar el hardware
de nuestro sistema, así como las características que queremos utilizar. Por ejemplo,si
no utilizamos un dispositivo SCSI, no tenemos que configurar nada en el apartado SCSI
de nuestro núcleo. Así nos ahorramos espacio y tiempo.
4. Entrar como root: su root
5. Copiar el archivo que te has bajado al directorio/usr/src: ##cp linux-xx.yy.zz.tar.gz /
usr/src/
6. Descomprimirlo y desempaquetar: ##tar -xvzpf linux-xx.yy.zz.tar.gz
NOTA: El archivo linux-xx.yy.zz.tar.gz se desempaquetara en el directorio /usr/src/linux.
Si ya existe un directorio llamado linux en tu sistema, renombralo, p.ej: mv linux linux-
old .
En algunas distribuciones, linux es un enlace simbólico a linux-x.y.z;borra este enlace
simbólico. Es importante que no exista ningún directorio/enlace simbolico llamado linux,
antes de desempaquetar la nueva versión. Si te has bajado el kernel comprimido con
bzip2, tendrás que descomprimirlo con ##bunzip2 linux-xx.yy.zz.tar.bz2
7. Entrar en /usr/src/linux: ##cd /usr/src/linux
8. Configurar el núcleo, esto se puede hacer de tres maneras diferentes:
• make config (modo texto)

• make menuconfig (modo texto con menus)
• make xconfig (X-windows version)
9. Si tenéis X-windows instalado, os recomiendo el último comando, si no el segundo.
10. Os recomiendo que las opciones que vienen por defecto no las toquéis, si no sabéis
lo que hacéis,podéis pulsar Help en cada opción para obtener una descripción de la
misma. Configurar las opciones que queréis tener en vuestro nuevo núcleo. Una vez
terminada la configuración, grabar los cambios y salir del programa de configuración.
11. Una vez terminado el proceso de configuración, tenemos que compilar nuestro
nuevo núcleo.Para ello hay que hacer lo siguiente:
make dep make clean make bzImage
12. Si en el proceso de configuración, elegimos alguna opción como módulo,
tendremos que compilar/instalar dichos módulos:
make modules make modules_install

Página 148 de 328 Introducción a Linux
NOTA: No olvidar ejecutar como root el comando depmod -a l a primera vez que
arranquéis con vuestro nuevo núcleo, para computar las dependencias entre módulos.
13. Ya tenemos el núcleo y los módulos compilados, ahora tenemos que instalarlo.
Casi todo el mundo utiliza LILO para arrancar el sistema, por ello explicaré como
instalarlo utilizando LILO:
Todavía estamos en /usr/src/linux , ejecutar el comando ##make install
.. esto copiará el núcleo que acabamos de crear a el directorio /boot de nuestro
sistema, con el nombre vmlinuz., o como un enlace simbólico ##vmlinuz -> vmlinuz-
xx.yy.zz
14. Ahora tenemos que configurar LILO para que reconozca el nuevo núcleo.
Tendremos que modificar el fichero /etc/lilo.conf. Aquí tenéis un ejemplo, del fichero /
etc/lilo.conf antes de modificarlo:
boot=/dev/hda prompt
timeout=50 image=/boot/vmlinuz-2.0.34
label=linux
root=/dev/hda1 read-only.
Y aquí como quedaría después de la modificación para que reconozca nuestro nuevo
núcleo al arrancar:
boot=/dev/hda prompt
timeout=50
image=/boot/vmlinuz label=nuevokernel
root=/dev/hda1 read-only
image=/boot/vmlinuz-2.0.34
label=linux root=/dev/hda1 read-only 15.
Ahora sólo tenemos que ejecutar el comando /sbin/lilo y arrancar el sistema de nuevo.
Si tuviésemos algún problema con el nuevo núcleo, siempre podríamos arrancar con
el antiguo ,escribiendo linux y pulsando ENTER cuando arrancamos y nos sale en
pantalla lilo: de esta manera podemos entrar y ver qué es lo que ha fallado.
NOTA: Recordar que existen multitud de opciones para configurar LILO, y que los
ejemplos anteriores, son ejemplos. Puede que vuestro sistema necesite diferentes
parámetros y opciones. Leeros los documentos HOWTOS sobre el núcleo y LILO antes
de cambiar nada en vuestro sistema.
Al final de esta página tenéis enlaces a los mismos. Suerte y espero que tengáis las
cosas un poco más claras.

¿Qué son los parches (patchs)? ¿Cómo se instalan?

Seguramente habréis oído hablar de los parches para el núcleo, si no, aquí tenéis
información sobre los mismos
¿Qué son los parches y para qué sirven?
Un parche para el núcleo no es más que un fichero que solamente contiene
información, sobre las líneas de código que han cambiado desde la versión precedente
del núcleo. De esta manera, solamente te tienes que bajar un fichero con los cambios

Plataforma de Teleformación de IFES Página 149 de 328
en vez del núcleo al completo. El ahorro en cantidad de Mb bajados es bastante
considerable, sobre todo para aquellos que dependen del módem y no tienen una
conexion buena a internet. Algo a tener muy en cuenta si vais a actualizar el núcleo
por medio de parches, en vez de bajaros el núcleo al completo, es que tenéis que ir
actualizando de versión a versión. Para que se entienda un poco mejor, aquí tenéis un
ejemplo: si tenéis el núcleo 2.2.0 y vais a actualizarlo al 2.2.1, os podeis bajar el fichero
patch-2.2.1.gz [70Kb] en vez del núcleo 2.2.1 al completo [12.5Mb]. Pero si tenéis el
núcleo 2.2.0 y vais a actualizar al 2.2.4, NO os vale bajaros el fichero patch-2.2.4.gz
nada más, tendriais que bajaros el 2.2.1, 2.2.2, 2.2.3 y 2.2.4. Esto es porque los
ficheros patch solamente contienen los cambios de versión a versión. Si la diferencia
entre la versión que tenéis y la que queréis instalar es muy grande (p.ej: del 2.2.0 al
2.2.10), no os merece la pena actualizar por medio de parches;en este caso bajaros la
versión completa.
¿Qué hacer con un fichero patch-XX.YY.ZZ.gz?
Ya te has bajado el fichero patch (se pueden bajar del mismo subdirectorio donde está
la versión completa)que necesitas para actualizar el núcleo y,¿ahora qué haces? Ahora
hay que aplicarlo al núcleo que tienes y compilar de nuevo. El procedimiento para
actualizar el núcleo por medio de ficheros patch es el siguiente:
• Copia el fichero patch-XX.YY.ZZ.gz al directorio /usr/src : ##cp patch-
XX.YY.ZZ.gz /usr/src/

• Cambia a este subdirectorio y descomprime el fichero: ##cd /usr/src/; gunzip
patch-XX.YY.ZZ.gz
• Aplica el parche: ##patch -s -p0 < patch-XX.YY.ZZ
• La opcion -s hará que sólo se impriman mensajes de error. Si no recibes
ningún mensaje de error (como debería de ser) solamente te queda entrar
en /usr/src/linux:
cd /usr/src/linux
y ejecutar
make clean,make xconfig,make dep,make bzImage
el resto es igual que en la sección anterior a partir del punto 12)
Esto es todo lo que se me ocurre sobre los parches del núcleo.

¿Algún consejo sobre el kernel?

Pregunta: ¿Necesito actualizar el núcleo que utilizo cada vez que una nueva versión
aparece?
Respuesta:NO.
¿Por qué? La explicación es la siguiente:
cuando un nuevo núcleo aparece, puede ser por las siguientes causas:
• Nuevas características se han añadido.
• Fallos de programación se han corregido.
• Fallos de seguridad se han corregido.

Página 150 de 328 Introducción a Linux
• Nuevo hardware es soportado. Si las características que se han añadido
no las vamos a utilizar, es evidente que no necesitamos actualizar.Si los

fallos de programación que se han corregido afectan a características/drivers
que no utilizamos, no necesitamos actualizar. Si no utilizamos el nuevo
hardware soportado, tampoco necesitamos actualizar. De todas maneras es
recomendable, actualizar de vez en cuando, sobre todo cuando se corrigen
fallos de seguridad o cuando los cambios en el nuevo núcleo afectan a
características/funciones/hardware que utilicemos. El código está ahí, libre
y esperando a ser compilado en un nuevo ordenador, cada usuario debe
decidir cuándo es hora de una actualización.
Pregunta: Soy nuevo en Linux y acabo de instalar una distribución,¿cómo actualizo el
núcleo?
Respuesta: te aconsejo que esperes un poquito. La distribución que acabas de instalar
(si es de las últimas) viene con un núcleo de los "últimos", totalmente funcional y que
te sirve sin problemas. Utiliza el sistema un tiempo, familiarízate con el nuevo sistema
que acabas de instalar, y cuando comprendas un poco más cómo funcionan las cosas,
actualiza el núcleo. Un buen punto de partida para encontrar información sobre el
núcleo, lo tienes en estas páginas.

X-windows / Entornos gráficos
¿Qué es X-windows?

El protocolo X-windows fue desarrollado a mediados de los años 80 como respuesta a
la necesidad de un interfaz gráfico transparente sobre todo para sistemas Unix.
X-windows es el encargado de visualizar la información de manera gráfica y es
totalmente independiente del sistema operativo (los sistemas Unix/Linux no necesitan
de X-windows para funcionar, pudiendo trabajar en modo texto). La gran diferencia
entre X-windows y la interfaz gráfica de otros sistemas operativos es que X-windows
distribuye el procesamiento de aplicaciones, especificando un enlace cliente-servidor.
El cliente X especificará "Qué hacer" al servidor X, que se encargará de "Cómo
hacerlo". Pero dejémonos de teoría y pasemos a un ejemplo práctico. La gran ventaja
de X-windows es que el servidor X de una aplicación y el cliente X donde trabajamos
no tienen por qué estar en la misma máquina. Podemos estar utilizando X-windows
en nuestra máquina, conectarnos a otra remota, ejecutar un programa en esta
máquina remota y utilizar/ver este programa en nuestra máquina local. Todo esto
independientemente de la plataforma/sistema operativo que el ordenador remoto
utilice.Como veis, las posibilidades son muchas y potentes.
Cliente X | | Xlib | | Servidor X | | Sistema operativo

¿Cómo configuro las X-windows?

Plataforma de Teleformación de IFES Página 151 de 328
Para utilizar el sistema en modo gráfico es necesario instalar X-windows en tu sistema.
Existen servidores comerciales y bajo licencia GNU, en estos apartados nos basaremos
en el X-windows bajo licencia GNU, XFree, ya que es el que se incluye en todas las
distribuciones de Linux.
Una vez instaladas las X-windows tendremos que configurarlas para que funcionen en
nuestro sistema. El fichero de configuración de las X-windows se llama XF86Config y
generalmente se encuentra en el directorio /etc/X11/.Unos datos que tenéis que saber
antes de configurar X-windows son:
• Datos técnicos de la tarjeta gráfica que utilicéis, o por lo menos el nombre de
la tarjeta.El programa /usr/X11R6/bin/SuperProbe os puede ayudar a obtener
información sobre vuestra tarjeta.

• Datos técnicos del monitor que tenéis, resoluciones/frecuencias de refresco
verticales/horizontales a la que puede trabajar. Este punto es importante
para evitar problemas posteriores con vuestro monitor. Antes de lanzar X-
windows mediante el comando startx debemos asegurarnos de la correcta
configuración de los diferentes parámetros del mismo (teclado, ratón,
tarjeta de vídeo, etc.).Hay diferentes métodos para hacer esto. En primer
lugar tenemos los programas de configuración semi-automática. Según la
distribución de Linux que utilicemos tendremos a nuestra disposición una
serie de programas que nos permitirán realizar la configuración de XWindow
de una manera más o menos sencilla:
• /usr/X11R6/bin/xf86config - Todas las distribuciones: Programa en modo
texto.
• /usr/X11R6/bin/XF86Setup - SuSe, Redhat, Slackware: Programa en modo
gráfico,tiene que arrancarse en una consola texto.
• /usr/X11R6/bin/Xconfigurator Redhat: Programa semi-gráfico con
menus.Estos programas nos preguntarán cosas básicas sobre el teclado,
el monitor, la videomemoria o la tarjeta de vídeo instalada (lo harán cuando
no sean capaces de detectarlas por sí mismos).Debemos responder
siempre la opción más acertada y en cuanto a monitores, nunca especificar
características superiores de las que disponemos. Un caso muy habitual
en tarjetas muy nuevas es no encontrar un soporte exacto para los
últimos chipsets, problema que se suele corregir acudiendo al soporte de
framebuffer del kernel o esperando a que quienes trabajan en XFree86
obtengan por parte de los fabricantes (poco colaboradores) la información
sobre cómo programar sus tarjetas.
En ciertos casos también se nos puede preguntar si deseamos que el sistema arranque
directamente en XWindow o incluso testear los diferentes modos de vídeo para ver
que si son correctamente soportados. Además para que estos programas realicen una
correcta configuración el sistema debe estar ya correctamente configurado en cuanto
a modo texto se refiere.Por ejemplo, Xconfigurator no activará el teclado en castellano
para XWindow si no hemos especificado que el idioma en que queremos usar nuestro

Página 152 de 328 Introducción a Linux
Linux es este mismo, mediante la orden export LANG=es_ES bien en la línea de
comandos, o en el fichero /etc/profile. Cuando Xconfigurator detecta esta variable de
entorno ya sabe qué lenguaje utiliza el usuario y por tanto configurará XWindow para el
correcto uso del teclado en este lenguaje.
Otras variables indican el tipo de ratón, etc., y suelen ser correctamente especificadas
por el programa de instalación. En el caso de XF86Setup la configuración permite una
mayor participación por parte del usuario, ya que en lugar de realizar una configuración
automática proporciona una lista de opciones para cada apartado, de modo que si
conocemos nuestro hardware es la mejor manera de configurar el sistema.Además,
a la hora de elegir resoluciones de vídeo, este programa permite especificar cual
es la resolución por defecto deseada mientras que Xconfigurator deja marcada la
menor de ellas como "por defecto" (o la primera que seleccionemos). El programa de
configuración xf86config es el más antiguo de todos, y realiza la configuración mediante
preguntas que se responderán con teclado. Nos preguntará la tarjeta de vídeo, monitor,
rango de frecuencias del monitor, videomemoria y resoluciones de trabajo deseadas,
así como el mapa del teclado a utilizar (es 102 = España 102 teclas). Como siempre,
el método más eficaz de configurar XWindow es directamente editando los ficheros de
configuración.Y es que otro método de configuración básico es sencillamente editar
el fichero /etc/X11/XF86Config, que es en realidad lo que hacen todos los programas
comentados anteriormente.En este fichero la configuración está dividida en secciones
y mediante cualquier editor de texto llano es posible cambiar cualquier parámetro de
XWindow.Este fichero se divide en varias categorías o secciones (todas ellas con más
subopciones muy bien comentadas en dicho fichero de configuración):
• Sección Files: Indica los caminos hacia las fuentes o ficheros de
colores. RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/
fonts/75dpi:unscaled" (etc.)

• Sección ServerFlags: Opciones varias sobre el servidor.
• Sección KeyBoard:Configuración del teclado. Para teclados en castellano
las opciones son similares a las siguientes: Protocol "Standard" LeftAlt
Meta RightAlt Meta ScrollLock Compose RightCtl Control XkbKeycodes
"xfree86" XkbTypes "default" XkbCompat "default" XkbSymbols "us(pc101)"
XkbGeometry "pc" XkbRules "xfree86" XkbModel "pc101" XkbLayout "es"
• Sección Pointer: Configuración del ratón: # Para un ratón microsoft mouse o
un genius: Protocol "Microsoft" Device "/dev/mouse"
• Sección Monitor: Datos sobre el monitor (frecuencias).
• Sección Device: Indica el servidor X a utilizar: Por ejemplo para una tarjeta
con chipset Mach64: Section "Device" Identifier "Mach64 GB" VendorName
"ATI" BoardName "ATI 3d Rage II" VideoRam 8192 EndSection
• Sección Screen: Modos de vídeo seleccionados: Por ejemplo para activar
320x200, 640x480, 800x600 y 1024x768 tanto a 8 como a 16 bpp de color,
siendo usado por defecto el modo 1024x768x16 (el primero que aparezca en
la lista):

Plataforma de Teleformación de IFES Página 153 de 328
Section "Screen"
Driver "accel"
Device "Mach64 GB"
Monitor "My Monitor"
DefaultColorDepth 16
Subsection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480" "320x200"
ViewPort 0 0
Virtual 1024 768
EndSubsection
Subsection "Display"
Depth 8
Modes "1024x768", "800x600", "640x480", "320x200" ViewPort 0 0 Virtual 1024 768
EndSubsection EndSection .
Una vez creado este fichero, entramos en XWindow mediante el comando startx. Del
entorno XWindow se puede salir en cualquier momento mediante la combinación
de teclas Ctrl+Alt+Borrar, o bien seleccionando LOGOUT en el menú del gestor de
ventanas que utilicemos. Para volver a las consolas de texto bastará con utilizar la
combinación de teclas Ctrl+Alt+F1, +F2 , etc... (hasta F6 en las instalaciones por
defecto).Para volver al terminal gráfico se utiliza de F7 en adelante (Ctrl+Alt+F7,+F8,
etc.).
Si durante la instalación (o en la línea apropiada del fichero XF86Config)seleccionamos
varias resoluciones de vídeo,es posible cambiar entre ellas mediante las teclas Ctrl+Alt
+'+' y Ctrl+Alt+'-' (los signos del teclado númérico).Además, si por defecto marcamos
8bpp (o 16 bpp) en las opciones,nada nos impide lanzar posteriormente XWindow en
la profundidad de color deseada:
[sromero@localhost]# startx -- -bpp 8
[sromero@localhost]# startx -- -bpp 16
etc...También es posible establecer la profundidad de color por defecto mediante una
línea DefaultColorDepth = 16 en el fichero de configuración XF86Config, sección
Screen. Por último, saber que podemos lanzar más de una sesión de XWindow
simultáneamente (en las consolas accesibles desde Ctrl+Alt+F8, +F9, etc.),mediante:
[sromero@localhost]# startx -- :1
[sromero@localhost]# startx -- :2 etc...

¿Cómo cambio la resolución por defecto?

En el fichero /etc/X11/XF86Config en la sección screen correspondiente al servidor que
se está utilizando actualmente,en la subsección Display correspondiente a la Depth en
que estemos trabajando, buscamos la línea:
Modes "resolución_1" "resolución_2"...

Página 154 de 328 Introducción a Linux
Un ejemplo: Modes "1024x768" "800x600" "640x480" "320x200". Entonces ponemos la
resolución que queramos que sea por defecto de primera. Estas resoluciones puestas
aquí son entre las que podremos cambiar si queremos al pulsar Ctrl+ Alt+ '+' ó Ctrl+Alt
+'-' , una vez arrancado X-windows...

¿Cómo cambio el escritorio virtual?

En el fichero /etc/X11/XF86Config , en la sección screen correspondiente al servidor
que se está utilizando actualmente,en la subsection Display correspondiente a la Depth
en que estemos trabajando, añadimos la línea:
Virtual tamaño_x tamaño_y
#en píxeles
Un ejemplo: Virtual 1024 768 .Hay que puntualizar que si existe una resolución definida
de Modes mayor que el escritorio virtual, ésta no se podrá utilizar.
Resumiendo, no se puede tener una resolución de trabajo mayor que el escritorio
virtual.

¿Cómo cambio el número de colores por defecto?

Hay dos maneras:
mediante la línea de comandos:
#[user@localhost]# startx --bpp resolución
(dónde resolución es 8, 16,24 ó 32).
Mediante el fichero de configuración: en el fichero /etc/X11/XF86Config , en la sección
screen correspondiente al servidor que se está utilizando actualmente, añadimos la
línea:
DefaultColorDepth depth_que_queramos_utilizar .
Un ejemplo:
DefaultColorDepth 16 .
Un Depth con valor 8 significa que trabajaremos a 256 colores, uno con valor 32
truecolor.No todas las tarjetas gráficas podrán utilizar todos los Depth disponibles en
todas las resoluciones;todo dependerá de la tarjeta gráfica y de la memoria que ésta
tenga.

¿Cómo arranco directamente en X-windows?

En Linux es perfectamente posible pedir que el arranque del sistema se haga en
modo gráfico, y que el login y password se introduzcan directamente en una ventana
XWindow para la posterior carga del gestor de ventanas habitual que use dicho usuario.
Es decir,podremos identificarnos y aparecer directamente bajo X sin necesidad de
ejecutar startx.
Para arrancar directamente en X Window (o no hacerlo) todo el proceso de
configuración gira en torno a cambiar el runlevel (o nivel de ejecución en que arranca

Plataforma de Teleformación de IFES Página 155 de 328
Linux). El runlevel es, dicho de una manera sencilla, el modo en que arranca Linux. Por
defecto, el runlevel suele ser el 2 ó el 3, es decir, arranque en modo texto o consola.
Para cada distribución suele haber una lista de runlevels y sus significados, aunque
casi se puede decir que son similares para todas ellas.
Para Redhat, por ejemplo, la lista es la siguiente:
# Porción del fichero /etc/inittab
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3)
# 3 - Full multiuser mode
# 4 - unused # 5 - X11
# 6 - reboot (Do NOT set initdefault to this) Como puede verse, el arranque normal
por defecto para que puedan acceder usuarios a Linux es 2 (si no tenemos red) o 3
si queremos usar servicios de red, siendo normalmente éste el runlevel por defecto.
Como puede verse, X11 tiene asignado el runlevel al 5. Si cambiamos el runlevel por
defecto para que arranque en el 5, nos aparecerán directamente X Window. Para
cambiar este runlevel por defecto hay que editar el fichero /etc/inittab, y acudir a la
siguiente línea: id:3:initdefault: .
El valor numérico antes de initdefault indica el runlevel de arranque por defecto. Si lo
cambiamos de 3 a 5, la próxima vez que arranquemos Linux arrancará en X Window:
id:5:initdefault: .
Para que el proceso se ejecute correctamente debe tener instalado un gestor de
arranque en runlevel 5, que es el programa encargado de pedir el login+passwd y
arrancar el gestor de ventanas adecuado. Puede elegir entre xdm (el que viene por
defecto con XWindow), kdm (version de kde del mismo) y gdm (versión aportada por
gnome). Cada una de ellas dispone de ciertos ficheros de configuración o ejecutables
para cambiar el fondo del login, el lenguaje, gestor de ventanas, etc. Consulte los
ficheros en los paquetes relacionados. Haga "man runlevel" para más información
sobre runlevels. En las últimas versiones de Redhat, el programa Xconfigurator le
permite elegir si desea o no arrancar directamente en XWindow (él mismo modifica
el runlevel por defecto) mediante una simple pregunta a la que usted debe responder
SI (Si desea arrancar en runlevel 5) o no (si desea arrancar en runlevel 3). Esta
pregunta se le suele realizar al finalizar la selección de resoluciones y antes de salir
de Xconfigurator. Una vez arranque en XWindow, puede volver a cualquier consola
de texto mediante las teclas Ctrl+Alt+F1, Ctrl+Alt+F2, etc. ..(por defecto entre F1 y F6
tendrás 6 consolas de texto), y volver a XWindow en cualquier momento mediante Ctrl
+Alt+F7 en adelante. En algunas distribuciones puede ser necesario indicarle a inittab
dónde está el gestor de runlevel 5 que debe arrancar:
para xdm:
Run xdm in runlevel 5 x:5:respawn:/usr/X11R6/bin/wdm -nodaemon
Para gdm:
x:5:respawn:/etc/X11/prefdm -nodaemon .

Página 156 de 328 Introducción a Linux
Estas líneas suelen ser automáticamente incluídas en el fichero por los rpm/deb
instaladores de xdm, kdm y gdm. Consulte en la ayuda de dichos programas para más
información.

¿Qué es un gestor de ventanas?

Un gestor de ventanas no es otra cosa que el conjunto de programas, ventanas,
funcionalidades, .... que hacen posible que el usuario pueda interactuar con el sistema
de forma gráfica y no en modo texto. Para usar un gestor de ventanas hay que tener
configurado un servidor X. También hay que decir que el gestor de ventanas utilizado
es totalmente independiente del servidor X utilizado. Gestor de ventanas | | Cliente X | |
Xlib | | Servidor X | | Sistema operativo Al contrario que en otros sistemas operativos, en
Linux no es necesario utilizar un servidor X - gestor de ventanas para usar el sistema.
El sistema operativo y el conjunto servidor X - gestor de ventanas usado, son cosas
totalmente diferentes, independientes entre sí. Es más, existen usuarios que trabajan
en modo texto sin ningún problema y sin usar un interfaz gráfico. Existen numerosos
y variados gestores de ventanas para Linux, unos mejores y otros más desarrollados
y estables. Es el usuario el que tiene que decidir qué gestor satisface mejor sus
necesidades, pudiendo incluso tener más de uno instalado. Para aclarar un poco
las cosas, podríamos decir que, si un ordenador es usado por varios usuarios, todos
utilizaran el mismo servidor X pero no necesariamente el mismo gestor de ventanas.

¿Cómo elijo el Gestor de ventanas que quiero arrancar?

Una vez configurado X se hace necesario decirle a XWindow qué gestor de ventanas
debe arrancar. Dicho de una manera sencilla, XWindow es la conjunción de 3
componentes:
• El entorno de ventanas X Window: es quien implementa las llamadas
internas de XWindow, el protocolo X, etc., es decir, el sistema de
comunicaciones entre aplicaciones.

• El servidor gráfico X. Es un programa (un fichero ejecutable) encargado de
responder a las órdenes gráficas encargadas por el entorno de ventanas. Es
el encargado de dibujar rectángulos, puntos de color o pixels, rellenar zonas,
dibujar imágenes, etc. La manera de decirle a XWindow qué ejecutable es el
que deseamos usar es crear un enlace simbólico llamado /usr/X11R6/bin/X
que apunte al servidor que usemos:
Ejemplo:
ln -s /usr/X11R6/bin/XF86-S3
/usr/X11R6/bin/X (
le diría que utilice el servidor de las S3). Este enlace es creado por el programa de
configuración cuando seleccionamos la tarjeta en la lista que nos presenta.

Plataforma de Teleformación de IFES Página 157 de 328
• El gestor de ventanas es el módulo encargado de decidir que aspecto,
forma, funcionalidades, atajos de teclado, opciones y menúes debe

tener XWindow. Así, al dividir XWindow en estos 3 módulos se nos
permite cambiar cualquiera de ellos para dotar a XWindow del aspecto o
funcionalidades que deseemos. El entorno de ventanas no suele cambiarse
nunca (es XFree86), y el servidor X tampoco, ya que éste último es siempre
el ejecutable apropiado para manejar nuestra tarjeta gráfica (XFree86-SVGA,
XFree86-S3, etc.),pero el último es totalmente seleccionable entre multitud
de opciones y es lo que nos permite cambiar radicalmente el aspecto de
XWindow. Cambiando el gestor de ventanas (o Window Manager) podemos
cambiar prácticamente el funcionamiento completo de XWindow.
Gestores de ventanas hay muchos: kde, afterstep, gnome, WindowMaker, icewm,
etc, y todos tienen sus respectivos ejecutables: startkde, afterstep, gnome-session,
wmaker, icewm, etc.
Toda esta explicación se ha dado por un motivo muy sencillo: la posibilidad de elegir
el Gestor de Ventanas deseado es parte de la configuración activa de XWindow, y
vamos a ver la manera de decirle a XWindow qué gestor deseamos utilizar. Para ello,
simplemente debemos ir al directorio HOME del usuario en cuestión (/home/usuario)
o de root (/root) y editar (creándolo si no existe) el fichero de texto .xinitrc . En este
fichero pondremos una línea que indicará el Gestor de Ventanas que deseamos utilizar,
en el formato:
exec ejecutable_del_gestor_de_ventanas.
Además podemos utilizar líneas de comentarios que comiencen por el carácter '#' y que
XWindow ignorará: Ejemplos de ficheros .xinitrc:
# utilizar afterstep exec afterstep;
otro ejemplo podría ser lanzar kde:
# utilizar KDE exec startkde;
Así,dependiendo del ejecutable que lancemos (startkde, gnome-session, icewm,
wmaker, ctwm, fvwm2, wmaker, blackbox, etc...) podremos arrancar el WM deseado.

Administración
¿Cómo se utilizan los empaquetadores-des/compresores?

Los ficheros tar no son ficheros comprimidos, sino empaquetados. Tar es un
empaquetador, es decir, es algo parecido a
un compresor como arj o zip, pero sin compresión. Se dedica a incluir todos los ficheros
juntos en el mismo archivo, preservando las estructuras de directorios y permisos de
los mismos. Como veremos, lo podremos comprimir gracias al programa GZip.
Hay 2 operaciones básicas con tar:empaquetado y desempaquetado.

Página 158 de 328 Introducción a Linux
Si estamos en un directorio y queremos empaquetar todos los ficheros de este
directorio y los que cuelgan de él, basta con ejecutar la orden:
tar -cvf fichero.tar
• c = compress (más bien, empaquetar)

• v = verbose (para que nos diga lo que hace)
• f = file (empaquetar en un fichero)
(Empaquetar todos los ficheros, podría haber sido *.doc, etc.). Si disponemos de un
fichero .tar y queremos desempaquetarlo:
tar -xvf fichero.tar
x = eXtract (desempaquetar).
También es posible listar los contenidos de un fichero .tar antes de desempaquetarlo,
mediante la orden ##tar tvf fichero.tar.
Por otra parte,los ficheros con extensión gz son ficheros comprimidos. A diferencia
de arj o zip, el contenido de un fichero GZ es un solo fichero, es decir, cuando
comprimimos fichero.txt con este compresor (llamado gzip) obtenemos un fichero.txt.gz
de tamaño mucho menor.Con GZ no es posible empaquetar ficheros, es decir, la
compresión se realiza a un sólo fichero. Para comprimir un fichero con gz se utiliza el
comando:## gzip fichero .
Para descomprimirlo: ##gunzip fichero.gz.
La combinación de tar y gz es lo que permite el tener multiples ficheros comprimidos en
un solo archivo. Es decir, si empaquetamos un directorio con tar y luego comprimimos
ese archivo tar con gz, obtenemos un tar.gz comprimido con múltiples ficheros. La
compresión y descompresión es posible hacerla en 2 pasos (primero tar y luego usar
gz),o bien usar el flag -z de tar para ello:
• Compresión: ##tar -cvzf fichero.tar.gz

• Descompresion: ##tar -xvzf fichero.tar.gz
Otro formato que se ha puesto de moda es bzip20, con el mismo sistema de
funcionamiento que Gzip, y cuyos nombres de ejecutable son bzip2 (comprimir) y
bunzip2 (descomprimir).
Este compresor obtiene mejor compresión que Gzip y su funcionamiento es igual de
sencillo,aunque tarda más en comprimir y utiliza más recursos. Estos compresores/
descompresores/empaquetadores son una gran y libre alternativa a formatos
comerciales como zip, arj y rar, también disponibles para Linux (comandos zip, unzip,
rar y unarj).
Para descomprimir ficheros arj mediante unarj, simplemente hace falta ejecutar el
comando unarj x fichero.arj. El compresor es shareware y se debe obtener en la Web
de sus programadores.
Zip es el programa destinado a hacer Linux capaz de leer y escribir los ficheros en
formato .zip (generados por pkzip o winzip): Para ello tenemos los comandos zip
e unzip, que nos permitirán comprimir y descomprimir ficheros sueltos, directorios
completos, directorios con recursividad, etc..

Plataforma de Teleformación de IFES Página 159 de 328
Para comprimir todos los ficheros de un directorio en un zip: ##zip fichero.zip
• Para comprimir este directorio y todos los que cuelguen del mismo: ##zip -r
fichero.zip

• La descompresión se realiza mediante unzip:
unzip fichero.zip.
El programa rar también es un buen compresor que podemos encontrar en diferentes
formatos (rpm, deb, tar.gz) en Internet. Su uso es idéntico a la versión MSDOS:
• Comprimir: ##rar a fichero.rar

• Descomprimir: ##rar x fichero .
Para más información sobre cualquiera de los des/compresores basta con consultar la
página man del mismo, mediante "man comando".

¿Cómo instalo, desinstalo o actualizo paquetes rpm?

Los paquetes rpm son archivos que llevan incluídos dentro de ellos todos los ficheros
que componen un determinado programa. Internamente están comprimidos, pero
nosotros sólo debemos pensar en ellos en términos de Instalación, Actualización,
Borrado y Consultas.
Dentro del rpm van los ficheros del programa a instalar, su descripción, a qué
directorios van a ir instalados, scripts de auto-configuración en algunos casos, etc.
La sintaxis de rpm es:
rpm -acción nombre_del_paquete
Acciones:
rpm -i archivo (instalar)
rpm -e paquete (desinstalar)
rpm -u paquete (actualizar)
rpm -qi paquete (pedir info)
Ejemplos:
rpm -i Par-1.50-1.i386.
rpm -e Par rpm -u Par
rpm -qi Par
Supongamos el fichero programa-1.0.rpm que no tenemos instalado y que acabamos
de bajar de Internet. Procedemos a su instalación: ##rpm -i programa-1.0.rpm
Tras eso el programa estará instalado en nuestro Linux y podremos ejecutarlo y
usarlo normalmente. Tal vez nuestro problema es que no sabemos como se llama el
ejecutable y los demás ficheros de configuración que le acompañan. Para solucionar
eso hacemos una consulta (query) del paquete ya instalado: ##rpm -ql programa
La acción -ql significa "query list", y nos mostrará en pantalla la lista de ficheros
instalados de este programa y sus directorios destinos. Si por ejemplo deseamos
ver sólo los fichero sean instalados en los directorios bin (los ejecutables) podemos

Página 160 de 328 Introducción a Linux
hacer uso de grep, la herramienta de Linux que sólo nos mostrará aquellas líneas que
contengan una cadena determinada:
rpm -ql programa | grep bin
Esto nos mostrará sólo los ficheros de "programa" que hayan sido instalados en
directorios bin. Si queremos saber qué hace un paquete instalado, podemos verlo con
la opción "query info" (-qi):
rpm -qi programa
Como ejemplo, veamos la salida para el paquete fetchmail de Linux:
Name : fetchmail
Relocations: (not relocateable) Version : 5.0.0 Vendor: Red Hat Software
Release : 1
Install date: dom 30 may 1999 16:00:12 CEST Group : Applications/Internet
Size : 565413
Packager : Red Hat Software
http://developer.redhat.com/bugzilla
Summary : A remote mail retrieval and forwarding utility.
Description : Fetchmail is a remote mail retrieval and forwarding utility intended for
use over on-demand TCP/IP links, like SLIP or PPP connections. Fetchmail supports
every remote-mail protocol currently in use on the Internet (POP2, POP3, RPOP,
APOP, KPOP, all IMAPs, ESMTP ETRN) for retrieval. Then Fetchmail forwards the mail
through SMTP, so you can read it through your normal mail client.
Si el programa no nos gusta, la deinstalación es muy sencilla:
rpm -e programa
Obviamente, no tenemos porqué instalar los programas para ver su contenido o
información. Los podremos ver antes de la instalación insertando un comando p antes
de la acción:
rpm -qpi fichero.rpm
rpm -qpl fichero.rpm
Si queremos ver la lista de RPMs instalados disponemos del comando "query all" (-qa):
rpm -qa
Para verlo en formato pausado, podemos usar una tubería:
rpm -qa | less
Es posible que tras un tiempo obtengamos la versión 2.0 del programa que ya
disponemos instalado.
En esto caso hay 2 opciones: bien eliminar el programa anterior (-e) e instalar este
nuevo (-i), o, simplemente, actualizar el programa a la versión 2.0 con el comando -U
(de Update):
rpm -U programa-2.0.rpm
Por último, si al tratar de instalar un paquete rpm aparece el siguiente error:
Data type X not supprted ,es debido a que nuestra versión de rpm es muy antigua,
al menos más que el rpm que estamos tratando de instalar, y que éste tiene algún
tipo de compresión o elemento que nuestro rpm no entiende.Bastará entonces con
actualizar nuestro ejecutable del RPM. Cabe decir que también existen front-ends al

Plataforma de Teleformación de IFES Página 161 de 328
programa rpm, es decir, programas en modo gráfico (o texto) que realizan las acciones
del programa RPM mediante pulsaciones nuestras del ratón. Es el front-end el que
se encarga de pasarle a RPM los parámetros correctos para que se realice la acción
pedida por el usuario. Entre estos programas tenemos glint, gnorpm, purp, kpackage,
xrpm, etc.

¿Cómo instalo paquetes .deb de Debian?

Al igual que el formato RPM , los .DEB encapsulan todos los ficheros y scripts
vinculados a un determinado programa, pero para la distribución Debian.Además de
disponer de herramientas de instalación como dselect, se incluye la posibilidad de
instalación manual mediante las diferentes opciones del programa dpkg:
Instalación de paquetes deb: ## dpkg -i nombre_del_paquete.deb .
Para hacer consultas:
dpkg -s nombre_del_paquete (admite comodines)
Para desinstalar:
dpkg -r nombre_del_paquete
El resto de opciones de dpkg puede verse con ##man dpkg.

¿Cómo se convierten paquetes entre RPM, DEB y TGZ con alien?

Alien es un programa que permite convertir un paquete binario entre los formatos rpm
(Redhat, Suse), deb (Debian) y tgz (Slackware).
Conversion a .DEB:
alien --to-deb paquete.elquesea
Conversion a .RPM:
alien --to-rpm paquete.elquesea
Conversion a .TGZ:
alien --to-tgz paquete.elquesea
Existen otros flags (como -i) que permiten directamente tras la conversión realizar la
instalación del paquete generado.
Alien realiza la conversión descomprimiendo el paquete original y generando el nuevo
paquete, diciéndonos el lugar del árbol de directorios donde dejará el paquete recién
generado,según la distribución (por ejemplo, en Redhat en /usr/src/redhat/RPMS/).

¿Cómo se cambian los permisos de ficheros y directorios?

Lo primero que hay que decir es que para conseguir toda la información sobre los
comandos involucrados en el tema de
permisos podéis consultar ##man chmod, man chown , man chgrp.
Información de un fichero/directorio:
cuando obtienes información sobre un fichero/directorio, existen diferentes campos que
te dicen qué clase de permisos el fichero/directorio tiene.

Página 162 de 328 Introducción a Linux
Ejemplo:
[user@localhost]ls -l -rwxr-x--- 1 pepito depart1 4348 Nov 24 16:19 test.
En la primera columna se pueden ver una serie de letras:
-rwxr-x--- ; estas letras nos dicen quién en el sistema, y qué clases de permisos tiene
el fichero test. Estas letras están agrupadas en tres grupos con tres posiciones cada
uno,más una primera posición que nos dice de qué clase de archivo se trata (los
más normales (d) directorios, o (-) archivos de datos). En nuestro ejemplo, la primera
posicion es (-) ,con lo cual el archivo test es un archivo de datos (binario/ejecutable
en este caso). El primer grupo de tres (rwx en nuestro caso) nos dice qué clase de
permisos tiene el dueño del fichero (u)(user/owner)).
El segundo grupo de tres (r-x en nuestro caso) nos dice qué clase de permisos tiene el
grupo del fichero (g)(group).
Y el último grupo de tres (--- en nuestro caso) nos dice qué clase de permisos tienen
todos los demas usuarios del sistema sobre este fichero(o)(others).
r :significa permiso para leer
w :significa permiso para escribir
x :significa permiso para ejecutar.
La segunda columna,pepito,nos dice quién es el dueño del fichero(pepito en este caso).
La tercera columna,depart1, nos dice cuál es el grupo del fichero (depart1 en este
caso).
La cuarta columna ,4348, nos dice el tamaño del fichero.
La quinta columna, Nov 24 16:19, nos dice cuál es la fecha y hora de la última
modificación.
La sexta columna,test, nos dice cuál es el nombre del fichero/directorio.Así pues, el
fichero test de nuestro ejemplo tiene los siguientes permisos:
pepito puede leer,escribir/modificar, y ejecutar el fichero test.
depart1 puede leer y ejecutar, pero no escribir/modificar. Los demás usuarios no
pueden hacer nada, ni leerlo, ni escribir/modificar, ni ejecutarlo.
¿Cómo cambiar los permisos/dueño/grupo de un fichero/directorio?
Para cambiar el dueño del fichero:
chown usuario fichero .
Para cambiar el grupo del fichero:
chgrp usuario fichero
Para cambiar los permisos se utiliza el comando:
chmod permisos fichero
Los permisos se pueden especificar de diferentes maneras;una serie de ejemplos es lo
mejor para comprenderlo:
chmod ugo+rwx test
(da permisos rwx a todos, user,group,others)
chmod ugo-x test
(quita permiso x (ejecución) a todos, user,group,others)
chmod o-rwx test
(quita permisos rwx a others).

Plataforma de Teleformación de IFES Página 163 de 328
chmod u=rwx,g=rx test
(da permisos rwx a user, rx a group y ninguno a others)
Así podrías continuar con todas las posibles combinaciones de letras, es cuestión de
usar la imaginación.
Existe otro método que utiliza números, en vez de letras para asignar permisos;
la siguiente tabla nos puede ayudar un poco a comprender esta manera:
r w x VALOR DECIMAL 0 0 0 0 (000 binario es 0 en decimal) 0 0 1 1 ......... 0 1 0
2 ......... 0 1 1 3 ......... 1 0 0 4 (100 binario es 4 en decimal) 1 0 1 5 ......... 1 1 0 6 ......... 1
1 1 7 (111 binario es 7 en decimal)
1 significa activado y 0 desactivado, o sea 101 activa r y x, y desactiva w.
Sabiendo esto sólo tenemos que usar el valor decimal;un ejemplo aclarará esto:
chmod 750 test
da permisos rwx al usuario (7=111) ;
da permisos r-x al grupo (5=101)
da permisos --- a los demas (0=000).

¿Cómo apago mi equipo?

Para apagar el equipo tienes que hacerte superusuario y hacer:
[asimovI@localdomain root]$shutdown -t3 -h now .
Esto pararía todos los procesos en curso, haría sync, entraría en el runlevel 0, y
desmontaría todas las particiones.
El proceso de parada llegaría cuando se observa system halted , y si la fuente lo
permite y se compiló el kernel con esa opción, el ordenador se apaga automáticamente
sin necesidad de pulsar el botón de apagado.La opción h viene de halt (parar), y hace
que se mantenga parado después de todo el proceso de apagado. La opción now
indica que lo haga ahora;esta opción se puede sustituir por un número, los minutos a
esperar antes de realizar el shutdown.
Para reiniciar el equipo tienes que hacerte superusuario y hacer:
[asimovI@localdomain root]shutdown -t3 -r now
,pues como habías imaginado hace lo mismo que la anterior, pero en vez de ponerse
en system haltedse pone en system reboot' y reinicia.
Existe otro método que consiste el accionar tres teclas, sí, esas que tanto hay que usar
en otros sistemas operativos ( aunque cada vez menos ya que apenas los usamos), las
CAS (Ctrl+Alt+Supr). Pues bien, en el proceso de arranque de Linux, cuando lee la
/etc/inittab
existe una entrada que asocia estas tres teclas a un comando. Si lo ves verás que lo
asocia al comando anterior. # Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now .
Un consejo: en los métodos anteriores es necesario ser superusuario ya que el
comando shutdown lo requiere. Cosa lógica ya que sino cualquier usuario de la
máquina lo podría echar abajo.Esto hace bastante incómodo el apagarlo,por lo que un
consejo práctico es ir a la

Página 164 de 328 Introducción a Linux
/etc/inittab
y cambiar la -r por la -h del comando que se une a las CAS, esto asociará el apagar
el sistema a las tres teclas y no al reiniciarlo.Con esto ya no es necesario hacerse
superusuario, sino estar sentado delante del ordenador a apagar.
Nota: en los kerneles 2.2.x hay que modificar una línea en el
/etc/rc.d/*halt
en dónde llame al halt, hay que añadirle la opción -p. Si no lo que hace es reboot.

¿Puedo trabajar normalmente como root?

Un consejo,sólo utilizar la cuenta de root (administrador) para tareas de administración.
Para trabajar normalmente con el sistema NO hacerlo como root, ya que se tiene
acceso completo a todo el sistema y es fácil de estropear cosas si no se sabe lo que se
hace. Aquí tenéis un ejemplo que le ocurrió al autor de esta sección trabajando como
root: sólo utilizo la cuenta de root para administración del sistema,pero un día estuve
demasiado tiempo trabajando con ella para intentar empaquetar un rpm, resulta que lo
instalé mal y creé el directorio:
/usr/src/redhat/usr/src/redhat/SRC/.
Claro que eso no era lo que quería, así que tecleé:
root@asimovI src]$ cd ..
root@asimovI /]$ rm -rf *
Yo pensaba que estaba dentro del segundo src, pero estaba en el primero,menos
mal que me di de cuenta pronto y pulsé Ctrl+c para abortar el comando de borrado
mientras se estaba borrando el directorio X11R6,así que no corrompí por completo
el sistema,sólo tuve que volver a instalar algunos paquetes. Pero, ¿y si no me doy
cuenta? Pues que no podría haber hecho nada ya que hubiese borrado todo el
contenido de /usr ; no existirían librerías, comandos, etc, teniendo que haber instalado
el sistema operativo de nuevo.
Después de este ejemplo, volvemos a recomendar lo que dijimos al principio:
utilizar la cuenta de root sólo en los casos necesarios y siempre teniéndole un respeto
al poder que da. Estar seguros al 100% de lo que hacéis como root, para no estropear
el sistema. Una buena costumbre es nunca hacer login con root, sino trabajar como
un usuario normal y cuando se necesite ser root hacer un "su", y tan pronto como deje
de ser necesario tener el privilegio hacer un "exit", para volver a trabajar como usuario
normal.

¿Cómo abro/cierro una nueva cuenta?

Abrir una nueva cuenta:
el abrir una nueva cuenta, no es más que añadir una entrada en el archivo /etc/passwd
del sistema. Una entrada en este archivo tiene la siguiente forma:
<user>:<encrip>:<UID>:<GID>:<informacion>:<home>:<shell>
user: es el nombre de usuario.

Plataforma de Teleformación de IFES Página 165 de 328
encrip: es la clave encriptada.
UID: es el número UID con el que nos identificará el kernel.
GID: el número de grupo principal GID al que pertenecemos.
información: información varia, tal como nombre completo del usuario, número de
teléfono, e-mail, etc.
home:es el directorio home del usuario, es decir, el directorio al que accedemos justo
después de hacer entrar en el sistema.
shell: Es el shell que se abrirá para ejecutar las órdenes que de el usuario.Hay
utilidades que hacen que añadir cuentas de usuario sea más fácil. Entre ellas están el
comando useradd y passwd. Lo pasos para crear un usuario son:
[root@asimovI /root] adduser mario
[root@asimovI /root] passwd mario
Para más información hacer man adduser, sobre todo si se quiere poner caducidad a
las claves. Hay otras utilidades más vistosas y fáciles de usar e intuitivas ya que son
bajo X-Windows; un ejemplo de éstas son en el contol-panel de redhat, el YaST en
SuSE, el gestor de usuarios de Kde, etc.
Hay que aclarar que si el campo de la clave encriptada del fichero /etc/passwd no
contiene ningún valor, no será necesario la utilización de una clave para entrar en el
sistema. Esto es totalmente desaconsejable por los problemas de seguridad que puede
crear.Sin embargo es útil, por ejemplo, cuando nos olvidamos de la clave de root:
la solución es arrancar con un diskette de rescate, luego montar la partición de linux,
y borrar la clave encriptada de la entrada de root en el fichero /etc/passwd. Luego
reiniciamos el equipo, entramos como root y ejecutamos passwd root para poner la
nueva contraseña.
Borrar una cuenta de usuario:
El comando a utilizar es userdel el cual tiene la siguiente sintaxis:
userdel [-r][login] .
Este comando borra el usuario login, y si se añade la opción -r también borra su
directorio de usuario.
Para borrar una cuenta de usuario también se pueden utilizar las utilidades gráficas que
comentamos antes, de una forma muy intuitiva.

Tengo un ejecutable que no quiere ejecutarse...

A todos nos ha ocurrido alguna vez,que al intentar ejecutar un comando/programa
hemos obtenido como respuesta "command not found". Esto significa que el shell no
encontró el comando que queríamos ejecutar. Las causas más comunes suelen ser:
• El ejecutable no está en un subdirectorio incluido en el $(PATH)./

La solución es escribir el ejecutable con la ruta completa o moverte al directorio de éste
y escribir ./programa, donde programa es el nombre del ejecutable.
• El comando/programa que habéis escrito no existe.

Página 166 de 328 Introducción a Linux
• Faltan variables de entorno. Busca ficheros de documentación del programa,
o prueba comando --help, para ver si hace falta añadir variables de entorno,
para el uso del mismo.

Otra respuesta que podemos obtener al intentar ejecutar un comando/programa es
Permission denied. El error es bien claro:
el ejecutable existe ,pero no tenemos permiso para ejecutarlo.Comprueba que lo
podemos ejecutar, es decir, tiene una x en el grupo al que pertenezcamos: dueño,
grupo, u otros.
Más información sobre permisos en la subsección " ¿Cómo se cambian los permisos
de ficheros y directorios?". Por último, podemos obtener un error en el que se nos
informa que cierta librería no se encuentra.
Ejecuta el comando:
[asimov@asimovI bin] ldd comando .
Esto mostrará todas las librerías compartidas que el comando/programa utiliza/necesita
para funcionar. Si no tenemos algunas, las tenemos que instalar, pero si las tenemos
hemos que comprobar que /sbin/ld (el cargador de librerías dinámicas) sabe dónde
están, para ello hemos de añadir una entrada en el fichero /etc/ld.so.conf que consiste
en poner el directorio donde está la librería, luego ejecutamos ##/sbin/ldconfig -D
,para cerciorarnos que la lee.

¿Cómo dar formato a un diskette en Linux?

El formato de diskettes en Linux depende del tipo de formato que se le desee dar al
diskette (tipo MSDOS, tipo FAT32/VFAT, tipo
Ext2 de Linux, minix, etc.). En general, simplemente hay que usar uno de los comandos
mkfs disponibles que creará el sistema de ficheros pertinente.
Para formatear diskettes en formato Linux-ext2 :
mkfs.ext2 [opciones] /dev/fd0
,o bien su equivalente:
mke2fs [opciones] /dev/fd0
El usuario que formatee deberá tener permiso de escritura para la disketera
(normalmente /dev/fd0). Para eso, debe estar en el grupo de usuarios floppy o que /
dev/fd0 tenga permisos 666 (para todo el mundo).
Para formatear diskettes en formato MSDOS:
mkfs.msdos [opciones] /dev/fd0
o bien:
mkdosfs [opciones] /dev/fd0
Otro comando disponible si tenemos instaladas las mtools es mformat:
mformat a:
este último comando formateará el diskette en formato ms-dos.Por último, existen otros
programas como fdformat o superformat (ver paquete fdutils) que también sirven para
dar formato a diskettes.

Plataforma de Teleformación de IFES Página 167 de 328
NOTA: Formatos del tipo ext2 y ms-dos son los que se utilizan más usualmente en
linux. Hay que aclarar que un diskette con formato ext2 no será posible leerlo bajo ms-
dos o Windows, solamente bajo Linux. Un diskette con formato ms-dos podrá ser leído
indistintamente por ms-dos, windows o Linux (si tenemos soporte en el kernel para
trabajar con este formato).

¿Cómo puedo montar y desmontar unidades en Linux?

Montar un sistema de ficheros/dispositivo a nivel usuario no es más que hacerlo
disponible en el árbol de directorios de nuestro sistema. Como ya sabéis, en Linux
vemos todos los sistemas de ficheros/dispositivos en un solo árbol de directorios;no
existen letras a:, c:, etc.., así que nos da igual que el contenido de un directorio sea un
sistema de ficheros msdos, vfat, ext2, otro que está en una máquina remota, etc. Esta
abstracción tiene un inconveniente: hay que montarlo, es decir,indicarle al kernel de
Linux que a través del directorio XXXX, accedemos al sistema de ficheros/dispositivo
yyy. Esto se hace con el comando mount (man mount, para detalles). Montar un
sistemas de ficheros/dispositivo a nivel kernel, no es más que rellenar unas tablas de
registro. Es decir, ver si el sistema de ficheros está soportado, es decir, si existe la
tabla de funciones con las que manejarlo. Luego registrar estas funciones y enlazar el
directorio al sistema de ficheros. Esto es más bien lo que hace la llamada al sistema
mount, la cual es llamada mediante el comando del mismo nombre. Los parámetros
necesarios para montar un sistema de ficheros son:
• Tipo de sistema de ficheros: es necesario indicarle el tipo de sistemas de
ficheros a registrar. Así sabrá qué funciones utilizar.

• Tipo de acceso: si es de sólo lectura, sólo escritura o ambos.
• Dispositivo: indicar el dispositivo sobre el que está físicamente el sistema de
ficheros,( p.e.: /dev/hda1, /dev/hdb, /dev/sda1,..., none si es el /proc, ya que
se realiza sobre la memoria).
• Directorio: indica el directorio sobre el que se va a montar, es decir, el
directorio mediante el cual accederemos al sistema de archivos.
Ejemplo: montar el cdrom en el directorio /dev/cdrom:
mount -t <sistema de ficheros> <Dispositivo> <Directorio> mount -t iso9660 /
Supongo que ya comprenderéis el inconveniente de esto: cada vez que se quiere
acceder a un cdrom se ha de ejecutar el comando anterior, en vez de teclear d: (como
en otros sistemas operativos). Pero la versatilidad y la flexibilidad que ofrece hace que
no se tenga en cuenta ese inconveniente (como usuario accedo dentro de un directorio
sin que me pase por la cabeza que ese fichero está al otro lado del planeta utilizando
para ello el protocolo nfs). Existen otras formas de reducir la línea de comandos, para
ello (entre otras cosas) existe el fichero fstab. En él se indican los sistemas de ficheros
sobre los que trabajamos normalmente: el sistema de ficheros en el que tenemos los
directorios de linux, el /proc, la partición dos, el cdrom, y el floppy. El fichero /etc/fstab
funciona de la siguiente manera:

Página 168 de 328 Introducción a Linux
partimos de un ejemplo de contenido de /etc/fstab:
# <device> <mountpoint> <filesystemtype> <options> <dump> <fsckorder> /dev/hda2 /
ext2 defaults 1 1 /dev/hda3 /usr ext2 defaults 1 2 /dev/sda1 /home ext2 defaults 1 2 /
dev/hdb /mnt/cdrom iso9660 user,noexec,nodev,nosuid,ro,noauto 0 0 /dev/fd0 /mnt/
floppy vfat user,noexec,nodev,nosuid,rw,noauto 0 0 none /proc proc defaults 0 0 /dev/
hda4 swap swap defaults 0 0 /dev/hda1 /mnt/dos vfat exec,dev,suid,rw,auto 0 0
Con la información contenida en este fichero, el sistema haría lo siguiente al arrancar el
sistema:
• La partición /dev/hda1 se montaría en el subdirectorio /mnt/dos

• La partición /dev/hda2 se montaría en el subdirectorio /
• La partición /dev/hda3 se montaría en el subdirectorio /usr
• La partición /dev/hda4 se montaría en el subdirectorio como swap
• La partición /dev/sda1 se montaría en el subdirectorio /home
• Proc se montaría en el subdirectorio /proc
• El sistema tendría información sobre cómo montar un diskette /dev/fd0 y un
CD-Rom /dev/hdb, aunque no los monta automáticamente al arrancar por
haber definido la opción noauto.Veamos la explicación de los parámetros
usados en /etc/fstab:
En la columna de dispositivo se indica el dispositivo/particion a montar, en el punto
de montaje se indica el directorio mediante el cual vamos a acceder al sistema de
archivos. En la columna de tipo de sistema de ficheros se indica el sistema de ficheros
que se usará sobre el dispositivo.
Las opciones significan lo siguiente:
• user,nouser: permite/no permite a un usuario ordinario montar el sistema de
ficheros.

• suid,nosuid: Se requiere / no se requiere tener privilegios de superusuario .
• auto/noauto: Indica que sí/no se monta cuando hacemos mount -a.
• defaults: Aplica las opciones rw,suid,dev,exec,auto,nouser,async.
• exec: Permite la ejecución de binarios.
• ro,rw: Montar sólo lectura, lectura-escritura. El fichero /etc/fstab de nuestro
ejemplo nos permitiría hacer lo siguiente para montar un diskett o CD-Rom:
mount /mnt/cdrom mount /mnt/floppy
Cuando dejamos de utilizar un sistema de ficheros, tenemos que darlo de baja
(desmontarlo), para eliminar todas las referencias del kernel a él. El comando utilizado
para esto es umount.
Para desmontar un sistema de ficheros/dispositivo:
umount <directorio|dispositvo>
ej: ##umount /mnt/floppy umount /dev/fd0
NOTA: es necesario ejecutar el comando umount cada vez que cambiemos un diskette,
ya que no siempre cuando se escribe en un dispositivo se realiza automáticamente
un volcado al dispositivo (por eso se pueden perder datos si se apaga el ordenador

Plataforma de Teleformación de IFES Página 169 de 328
a lo bruto).Además,si cambiamos el diskette sin hacer umount,el kernel piensa que
hay el sistema de ficheros anterior y cuando guarda alguna información lo hace
con referencia al retirado,perdiéndose todo. Éste es un punto a tener en cuenta con
el uso de diskettes, ya que el mecanismo para retirar un diskette es mecánico,no
existe posibilidad de impedir por medio de software que alguien saque un diskette
de la disquetera. No ocurre lo mismo con el CD-Rom,ya que el sistema bloqueará la
posibilidad de extraerlo cuando esté montado.

¿Cómo se crea un diskette de arranque para Linux?

Sólo tenemos que ejecutar los siguientes comandos con un diskette vacío dentro de la
diskettera:
[sromero@localhost]$/sbin/mke2fs /dev/fd0
[sromero@localhost]$ [ -d /fd ] || mkdir /fd
[sromero@localhost]$ mount /dev/fd0 /fd
[sromero@localhost]$ cp /boot/boot.b /fd
[sromero@localhost]$ cp /vmlinuz /fd
[sromero@localhost]$ echo
image=/fd/vmlinuz label=linux | /sbin/lilo -C - -b /dev/fd0 -i /fd/boot.b -c
[sromero@localhost]$ umount /fd
[sromero@localhost]$rmdir /fd
Lo que hacen estos comandos es:
/sbin/mke2fs /dev/fd0
-> Formatea el diskette con formato ext2
[ -d /fd ] || mkdir /fd
-> Si no existe el directorio /fd lo crea
mount /dev/fd0 /fd
-> monta el diskette en dicho directorio.
cp /boot/boot.b /fd cp /vmlinuz /fd
-> Copia el kernel de Linux y el archivo de boot al diskette. Si nuestro kernel no se
llama vmlinuz (por ej bzImage o zImage) o no está en el raíz debemos cambiar esto.
echo image=...
-> Activa el kernel en el diskette.
umount /fd
-> Desmontamos el disco
rmdir /fd
-> Borramos el dir /fd
Si alguno de los paths o nombres cambia los deberemos cambiar dentro del diskette.

Internet / Redes / Modems
¿Qué es un módem? ¿Y un puerto serie?

Página 170 de 328 Introducción a Linux
¿Por qué los modems están normalmente asociados a puertos serie? Lo impone el
hecho que cuando uno usa un módem, la línea telefónica a la que está conectado
sólo tiene un cable por el que enviar la información. Para transmitir simultáneamente
los 8 bits de los que consta un byte, que es la unidad de información usual en los
ordenadores, harían falta 8 cables (8 líneas telefonicas). Una solución alternativa es
enviar los 8 bits sucesivamente uno detrás del otro a intervalos de tiempo regulares.
Precisamente esto es lo que hace un puerto serie. El corazón del puerto serie es un
chip del ordenador llamado UART (Receptor-Transmisor Asíncrono Universal) el cual
se encarga de todo el trabajo, tanto para recibir datos como para enviarlos. Así, la
potencia de dicha UART y lo bien configurada que esté influirán en la calidad de la
comunicación. El flujo de bits generado por la UART/puerto serie no puede introducirse
directamente en la línea telefónica al no estar preparada para ello. La solución es
utilizar un aparato intermedio que tome los bits que llegan del puerto serie y emita un
tono u otro por la línea telefónica según le llegue un bit 0 o un 1. Esto es lo que se
conoce como "modular una señal". Al otro lado del hilo telefónico otro aparato similar
interpretaría estos tonos y generaría unos o ceros en función del tono recibido. Éste
sería el paso opuesto, "demodular la señal". Como normalmente se deseará enviar y
recibir, el aparato intermedio deberá realizar ambas funciones: MOdular y DEModular
(MO-DEM). Así funcionaban los modems antiguos.
Los modernos se basan en los mismos principios aunque son infinitamente más
versátiles y potentes. Los modems modernos realizan la modulación y demodulación
utilizando chips especiales llamados DSP (Procesadores Digitales de Señales en
castellano). Son como microprocesadores, pero muy rápidos y optimizados para
tratamiento de señales. Los modems modernos también incorporan sistemas de
compresión de datos que aceleran las transferencias, sistemas de corrección de
errores, cambios automáticos de velocidad de transferencia si la calidad de la señal
mejora o empeora, etc... Existen dos clases de modems: Los internos y los externos.
Los externos van conectados a un puerto serie del ordenador por lo que simplemente
se limitan a las funciones descritas de modulación-demodulación, compresión,
correción, etc. Los modems internos "de verdad", al no ir conectados a un puerto
serie incorporan una UART como las de dichos puertos serie, de forma que a ojos del
ordenador se trata de un puerto serie más.

Entonces, ¿qué es un winmodem, módem HSP o módem software ? ¿Funcionan
los winmodem en Linux ? ¿Y los modems PCI?

Son modems internos "capados". Los fabricantes les quitan chips para que sean más
baratos. Por ejemplo, algunos no tienen UART, a otros les quitan los protocolos de
compresión, etc. Para que tengan las mismas funciones que los modems "de verdad",
las funciones correspondientes a los chips retirados las tienen que realizar drivers del
sistema operativo, o sea el microprocesador del ordenador. Los fabricantes de los
distintos modems sólo ofrecen drivers para Windows y no dan especificaciones de
cómo se programan, y así desarrollar versiones para Linux. Por tanto estos modems no

Plataforma de Teleformación de IFES Página 171 de 328
funcionan en Linux. Sobre los modems PCI, no tengo noticias de que ninguno sea un
módem "de verdad". Es probable que en el futuro aparezcan pues el hecho de ser PCI
no es ningún impedimento para ello.

¿Cómo se configura el puerto serie ?

La primera pregunta sería:¿debo configurar mis puertos serie ? En general, sólo
deberás configurar los puertos serie en estos casos:
• Tu módem es interno y Plug'n'Play. Deberás configurar el módem y al menos
el puerto serie que incorpora.

• Tienes más de dos puertos serie, contando además con los que incorporan
los modems internos (si tienes alguno). Por lo general deberás configurar
todos los puertos a partir del COM3 incluído.
• Un tercer caso, más raro, que consistiría en tener un módem interno
en COM1 o COM2 y que no usará los recursos estándar (puerto 3f8 e
interrupcion 4 para COM1, y puerto 2f8 e interrupción 3 para COM2). Los
recursos utilizados por el módem pueden consultarse en el Panel de Control
de Windows 95 :
(Sistema -> Administrador de dispositivos -> Puertos COM y LPT -> el puerto que sea -
> Recursos). Entonces deberás configurar el puerto del módem.
Si no cumples ninguna de estas condiciones, puedes ignorar el resto de la sección.
Un puerto serie (más exactamente, la UART del puerto serie) usa un rango de
direcciones de entrada-salida y una solicitud de interrupción para comunicarse con
el sistema operativo. Para el correcto funcionamiento del ordenador y del sistema
operativo, ningún otro dispositivo del ordenador puede usar alguno de esos valores.
Nuestro objetivo será conseguir esto, y en segundo lugar, hacer que el sistema
operativo atienda a ese rango de entrada-salida y esa interrupción para comunicarse
con el módem. Tradicionalmente, la elección del rango de entrada-salida y la
interrupción se realizaba a través de una serie de microinterruptores manuales situados
en el módem. Conocida la posición de estos interruptores, se configuraba el sistema
operativo para que usara esos valores. Hoy en día casi la totalidad de los modems
internos son Plug'n'Play, lo cual significa que el sistema operativo puede, por software,
decirle a la tarjeta qué valores debe usar.
Configuración de modems Plug'n'Play en Linux
Si tienes un módem Plug'n'Play, lo primero que habrá que hacer es decirle qué rango
de entrada-salida y qué interrupción debe usar. Lo más cómodo en este caso es usar
los mismos valores que Windows 95. Para ello, arranca Windows 95, y haz:
Inicio->Configuración->Panel de control. Una vez en el Panel de control, elige el icono
'Sistema' y dentro de él, el 'Administrador de dispositivos'. Dentro del apartado 'Puertos
COM y LPT' elige el correspondiente al puerto COM donde tienes el módem. Busca
en 'Recursos' el rango de entrada-salida y la interrupción que use y apúntalos. Con
esos valores en la mano, puedes configurar tu módem Plug'n'Play en Linux. Eso se

Página 172 de 328 Introducción a Linux
hace con el programa 'isapnp'. Entra en Linux y busca si tienes un archivo llamado /etc/
isapnp.conf. Si no lo tienes haz lo siguiente:
pnpdump > /etc/isapnp.conf
Esto generará el esqueleto de un archivo de configuración para 'isapnp'. Este programa
generará un listado con todas las posibles posibilidades de configuración que permiten
tus dispositivos Plug'n'Play, pero todas deshabilitadas con un '#' al principio de cada
línea.
Los dispositivos aparecen por secciones por lo que es fácil encontrar los
correspondientes a tu módem. Así,tu misión se reducirá a encontrar en la sección
correspondiente a tu módem del archivo /etc/isapnp.conf, dos líneas así:
(IO 0 (BASE 0x0NNN))
(INT 0 (IRQ MM (MODE +E)))
donde NNN sea el rango de entrada-salida que use el módem en Windows y MM
la interrupción. Las líneas no tienen por qué ser consecutivas ni ir en ningún orden
especial. Cuando las encuentres, quítales el '#' inicial. Luego, al final de la sección del
módem encontrarás una línea parecida a ésta:
(ACT Y)
De la misma forma, le quitas el '#' inicial.Ya está. Listo para enviar dichos valores al
módem. Esto lo hace la orden isapnp:
/etc/isapnp.conf
...y deberá aparecer en los scripts de arranque de Linux para enviar los valores cada
vez que enciendas el ordenador. Las distribuciones más recientes (Red-Hat 5.0 y
posteriores, Debian 2.0 y posteriores) ya incluyen dicha invocación por lo que no
necesitarás tocar los scripts de arranque. En caso de tener una distribución antigua,
será necesario añadir dicha orden. Un buen sitio para incluirla sería el script rc.local,
que suele estar situado en uno de los subdirectorios de /etc. De todas formas será
necesario ejecutar ##isapnp /etc/isapnp.conf
,si queremos activar los cambios en este momento y nos queremos ahorrar el
rearrancar la máquina.
Ahora hay que decirle al sistema operativo que debe usar esos valores para
comunicarse con el módem. En el caso de los modems Plug'n'Play lo que viene a
continuación es imprescindible.
Configuración de los puertos serie a ojos del sistema operativo:
Lo primero que hay que saber es que Linux no llama a los puertos serie de la misma
forma que el DOS o Windows.
Así existe la siguiente correspondencia:
DOS-Windows Linux
COM1 /dev/ttyS0
COM2 /dev/ttyS1
COM3 /dev/ttyS2
COM4 /dev/ttyS3
Ojo a las mayúsculas y las minúsculas del nombre de Linux. Son importantes.

Plataforma de Teleformación de IFES Página 173 de 328
Para leer la configuración y configurar los puertos serie se usa la orden 'setserial'. Para
leer la configuración,hay que ejecutar setserial con el puerto serie que deseamos ver
como único parámetro.
Por ejemplo:
setserial /dev/ttyS1
,nos muestra la configuración de COM2 y se obtendrá algo como esto:
/dev/ttyS1
UART: 16550A
Port: 0x02f8
IRQ 3
, es decir:
el puerto serie (/dev/ttyS1), el tipo de chip UART que lleva (16550A), el puerto base de
entrada-salida (2f8) y la solicitud de interrupción (3). Nótese que estos son los valores
que el sistema operativo CREE que debe utilizar para comunicarse con el módem/
puerto serie. Es posible que ahora no coincidan con los reales, incluso que ni siquiera
detecte la UART, lo cual no es raro en caso de modems Plug'n'Play. Si no coinciden,
asignaremos los valores adecuados.
Por fortuna,por lo general no será necesario indicar la dirección base de entrada-
salida. Salvo casos muy, muy excepcionales, COM1 usa la dirección base 3f8, COM2
la 2f8, COM3 la 3e8 y COM4 la 2e8, y eso setserial lo sabe. Así, al indicar el puerto
serie, setserial implícitamente sabe cuál es la dirección base. En cambio, en caso de
tener un puerto COM5 o superior sí será necesario indicar la dirección base. Así, para
COM1-COM4 ,sólo indicaremos la interrupción.
Por ejemplo, supongamos que tenemos un módem en COM3 que usa la interrupción 5.
La orden a introducir sería:
setserial /dev/ttyS2 irq 5 autoconfig .
Y si quisiéramos indicar también la dirección base de entrada-salida (por tener el
módem en COM5, por ejemplo) se haría así:
setserial /dev/ttyS4 port 0x2e8 irq 10 autoconfig
lo cual hace que el sistema operativo use un rango de direcciones desde la 2e8, y la
interrupción 10.
Nótese que el '0x' antes de la dirección base es importante. Por último, sólo queda
ver que los cambios han surtido efecto. Para ello bastará usar de nuevo setserial de
la primera forma que se indicó. Por desgracia, esta configuración durará hasta que
apaguemos el ordenador.
Por tanto será necesario incluir la línea o líneas de configuración setserial ###/dev/
ttyS2 irq 5...
en uno de los scripts de arranque de Linux para que los puertos se configuren cada vez
que se inicie el sistema operativo.
Un buen candidato es rc.local, que estará en uno de los subdirectorios de /etc. En caso
de ser necesario incluir en rc.local tanto el isapnp /etc/isapnp.conf para configurar un
módem Plug'n'Play, y el setserial... de los puertos serie, deberá colocarse el isapnp...
en primer lugar.

Página 174 de 328 Introducción a Linux
También habrá que usar setserial de la misma forma si el ordenador tuviera más de
dos puertos serie,(contando los que traen los modems internos en caso de disponer de
alguno). El motivo es que por alguna extraña razón de diseño del PC, COM1 y COM3
por defecto comparten la misma interrupción, y a pesar de que esa configuración no es
deseable, Linux por defecto busca COM3 en la misma interrupción que COM1, por lo
que habría que cambiar la de COM3. Lo mismo ocurre con COM2 y COM4 ,por lo que
habría que cambiar COM4. Si no se hiciera esto, podrían ocurrir cosas muy raras, como
ratones y modems que dejan de funcionar, modems que funcionan "a pedales" (cuando
se mueve el ratón), etc...

¿Cómo compruebo que todo está bien configurado?

Una vez activados los cambios con el comando isapnp para los modems Plug'n'Play
y el/los comando(s) setserial necesarios para configurar el/los puerto(s) serie, o se
hreiniciado el ordenador con los scripts de arranque modificados para que ejecuten
dichas órdenes (es más seguro hacer lo primero), se puede probar si todo va bien. La
forma más sencilla es usar un programa de comunicaciones y enviarle comandos al
módem para ver si responde. Así, un programa adecuado sería minicom ,que es un
terminal de comunicaciones tipo Telix. No es complicado de configurar. Pulsando Ctrl+a
y luego z sale un menú. Una de las opciones 'configure minicom' dará paso a otro menú
donde la opción "Serial port setup" nos permitirá elegir el puerto serie, la velocidad con
la que nos comunicaremos con él (no la velocidad del módem) y otras opciones más.
Lo normal es usar :
115200 o 57600 para la velocidad, 8N1,
"Hardware Flow Control: Yes" y "Software Flow control: No".
Una vez configurado y sin ningún menú sobre la pantalla escribes ' AT' (las dos en
mayúsculas o las dos en minúsculas) y pulsas ENTER. Si el módem responde al
instante 'OK' ,o con un número cero, indicaría que el módem funciona y que responde
bien. Para completar la faena puedes probar a conectarte a una BBS o a tu nodo de
infovía plus (los nodos de infovía plus permiten una conexión tipo terminal, aunque no
sé qué se puede hacer con ella) ,y así probar que todo va bien. Si el módem tarda en
responder al 'AT', o no responde, algo ha fallado en la configuración del módem o del
puerto serie y habría que revisar lo hecho.
Un comentario sobre el 'AT' :
Cuando se escriben estas dos letras pueden ocurrir varias cosas:
• Que salga el AT mientras lo escribes (lo normal).

• Que no te salga el AT, pero al pulsar ENTER el módem responda con OK.
Para solucionar esto deberías activar el eco local del terminal con Ctrl+a e o
escribir a ciegas "ATE1" y pulsar ENTER.
• Que te salga AATT y todo lo que pongas por duplicado. No es problema
porque el módem sólo recibirá 'AT'. Para quitar esto, desactiva el eco local
del terminal con Ctrl+a e o escribe "ATE0", aunque te salga duplicado.

Plataforma de Teleformación de IFES Página 175 de 328
Cuando pulses ENTER tras el ATE0 ya funcionará bien.

¿Qué es pppd?

Se trata de la primera posibilidad de conexión a internet que ofrece Linux. Es una
conexión a internet que gasta pocos recursos y con posibilidad de hacerla desde la
consola, sin necesidad de entrar en modo gráfico. Cualquiera que aspire a obtener el
máximo rendimiento de la conexión a internet, por ejemplo automatizando la conexión,
automatizando la recogida de correo, noticias, ftp, etc..., casi seguro no tendrá más
remedio que pasar por aquí. Como inconvenientes, tiene unos cuantos. El más
destacable es la falta total y absoluta de interactividad o de información en pantalla de
cómo va la conexión, siendo necesario el uso de otros comandos (como ifconfig) o la
observación de archivos históricos (/var/log/messages) para averiguar si la conexión se
ha realizado con éxito o ha habido algún error. La configuración de pppd se basa en la
creación de una serie de archivos...
/etc/ppp/options :
Configuración de la conexión y del puerto
serie /etc/ppp/marcado :
Configuración del módem y marcado del número de teléfono
/etc/ppp/pap-secrets :
Claves de acceso para identificación con PAP
/etc/ppp/chap-secrets :
Claves de acceso para identificación con CHAP
/etc/resolv.conf :
Servidores de nombres (DNS)
Así un posible /etc/ppp/options sería así:
connect "/usr/sbin/chat -v -f
/etc/ppp/marcado" name
mi_login@mi_proveedor defaultroute
noipdefault modem crstcts asyncmap a0000
mru 576 /dev/ttySx 115200
Comentarios:
• En mi_login@mi_proveedor irá el login y el proveedor (el proveedor sin
dominio, por ejemplo: fulanito@arrakis)

• Donde pone /dev/ttySx, la 'x' indica el puerto serie: /dev/ttyS0 = COM1, /dev/
ttyS1 = COM2, etc...
• La velocidad 115200 NO es la velocidad del módem, es la velocidad entre el
módem y el puerto serie, que no tiene por qué coincidir con la velocidad en
el lado de la línea telefónica. La velocidad del módem (33600, 28800...) NO
hay que ponerla en ningún sitio.
Algunos modems no soportan esa velocidad entre el módem y el puerto serie y habrá
que probar con 57600 o incluso con 38400. Si se tiene una UART 16450 o 8250, utilizar

Página 176 de 328 Introducción a Linux
38400 (usar setserial /dev/ttySx para conocer la UART del módem o del puerto serie,
donde 'x' indica el puerto serie de la misma forma que antes). Nótese que el valor
óptimo es 115200 y conforme menor sea dicho valor, menos rendimiento le sacaremos
al módem.
/etc/ppp/marcado:
ABORT "BUSY" ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT "ERROR" ""
"AT& F&quot; TIMEOUT 5 OK "ATDTnumero_de_telefono" TIMEOUT 100 CONNECT
Comentarios:
• Los ABORT iniciales sirven para que, si el módem encuentra una situación
anómala (no hay tono de llamada, comunicando...) y responde alguno de

esos mensajes (BUSY, NO CARRIER...), el pppd pare y no pierda tiempo
hasta fallar el TIMEOUT 100 que sería el que acabase la conexión. El
problema es que no todos los modems responden de la misma forma (por
ejemplo, el mío responde "NO DIAL TONE" en vez de "NO DIALTONE")
y la correspondencia debe ser exacta. Por tanto, para una configuración
correcta, será necesario consultar en el manual del módem cómo son estos
mensajes.
• El "AT& F&quot; es la cadena de inicialización del módem. La que se
indica es de las más estándar. No obstante, en algunos modems puede
ser mejor "ATZ" o variantes de "AT& F&quot; (como "AT& F1&quot;, "AT&
F2&quot;...). Como referencia, se debe usar aquella que configure el módem
para usar control de flujo hardware (RTS/CTS). En caso de no acertar en
la configuración del módem, es posible que se produzcan algunos efectos
indeseables (el módem no cuelga al cortar la comunicación, conexión
lenta...).
Una posibilidad es "fusilar" la que use windows. Se puede ver dentro del directorio de
windows un archivo llamado modemlog.txt o modemdet.txt.
• El numero_de_telefono es precisamente eso. El número de teléfono del
nodo de Infovia Plus, el de Iddeo, etc...

/etc/ppp/pap-secrets
/etc/ppp/chap-secrets
Existen dos formas posibles de identificación cuando nos conectamos a un proveedor:
PAP y CHAP.
PAP es la más sencilla y es la que usaba por ejemplo Infovia.
CHAP es muy usada en Infovia Plus. El formato de ambos archivos es el mismo:
mi_login@mi_proveedor * password
Comentarios:
• mi_login@mi_proveedor debe ser exactamente lo mismo que se puso como
parámetro de la opción 'name' en /etc/ppp/options.
• Los campos van separados por TABULADORES no por espacios.

Plataforma de Teleformación de IFES Página 177 de 328
• Si se dispone de más cuentas en otros proveedores, se pueden añadir
nuevas líneas con el mismo formato.

¿Cuál uso, pap-secrets o chap-secrets?
Si sabes que tu proveedor usa PAP, grábalo como pap-secrets. Si usa CHAP, grábalo
como chap-secrets. Si no sabes cuál usa, puedes hacer prueba-y-error o crearte los
dos, o crearte uno sólo y hacer un enlace simbólico de uno al otro. Por ejemplo, si has
creado chap-secrets, para hacer un enlace desde pap-secrets se haría:
cd /etc/ppp ln -s chap-secrets pap-secrets.
Esto en teoría haría que pppd y tu proveedor se pusieran de acuerdo para elegir PAP o
CHAP según prefieran.
/etc/resolv.conf : Aquí irían las direcciones de los DNS primario y secundario. El formato
es muy sencillo:
nameserver DNS_primario nameserver DNS_secundario
Por ejemplo, nameserver 195.5.65.2
Comentarios:
• En lugar de DNS_primario y DNS_secundario, se pondrán las direcciones
numéricas de los DNS primario y secundario respectivamente.

Los DNS primarios y secundarios deberás preguntarlos a tu proveedor y deberán
dártelos, pues no son secretos.
• Si no tuvieras DNS_secundario, puedes ahorrarte la segunda línea. Una
vez creados los scripts, la conexión se efectuaría al escribir pppd o /usr/

sbin/pppd. Para comprobar si la conexión tiene éxito, se puede usar el
comando /sbin/ifconfig y ver si al cabo de un minuto o dos aparece un bloque
nuevo ppp0. Otra forma es consultando periódicamente el fichero /var/log/
messages hasta ver si aparece algo como esto:
Local IP address xxx.xxx.xxx.xxx
Remote IP address yyy.yyy.yyy.yyy
Lo cual indicaría una conexión con éxito.
Una forma de hacer esto sería con la orden
tail -f /var/log/messages
y pulsar Ctrl+C cuando veamos que la conexión ha funcionado o fallado.
La desconexión se realizaría introduciendo la orden ##killall pppd.
En caso de necesitar ayuda, remitir la duda a es.comp.os.linux.misc o
es.comp.os.linux.redes mandando copia de los scripts (ocultando los passwords, claro)
y lo que haya salido en /var/log/messages durante la conexión fallida.
NOTA IMPORTANTE: Los ficheros arriba descritos han de crearse desde cero con un
editor de Linux. Crearlos con un editor de DOS o de Windows, o con operaciones de
cortar-y-pegar en Windows añade un carácter no visible al final de cada línea que Linux
confundiría con un carácter normal, inutilizando los scripts.

Página 178 de 328 Introducción a Linux
¿Cómo conecto a internet con KDE-kppp?

Después de haber utilizado diversos sistemas para conectar con Internet a través
de InfovíaPlus mediante módem y haber constatado en el grupo de noticias
es.comp.os.linux la gran cantidad de veces que se pregunta acerca de cómo
conectarse mediante kppp, hemos pensado que este breve resumen sobre cómo
establecer la conexión usando el kppp podría ser interesante para algunos que se
inician en linux y disfrutan del entorno grafico KDE.
Las notas que escribo a continuación se refieren a la versión KDE 1.0 (las diferencias
con respecto al KDE 1.1 son mínimas) y por lo tanto voy a partir de la base de que el
usuario de linux ha instalado ya el KDE y le funciona sin problemas de ningún tipo.
Guía paso a paso de conexión a internet a través de InfovíaPlus con kppp.
Antes de comenzar...
El módem debe estar correctamente instalado y su funcionamiento verificado (usando
por ejemplo el programa minicom). El dispositivo asociado al módem dependerá del
puerto serie al que está conectado. Si está conectado al "COM2" (en jerga DOS), el
dispositivo será /dev/ttyS1 , y podemos hacer un enlace simbólico a /dev/modem :
ln -s /dev/ttyS1 /dev/modem .
Además debemos saber su velocidad máxima. Si el módem es de más de 28,8Kbps
podemos tomar 115200.
Otros datos fundamentales son los que tienen que ver con nuestro proveedor de
internet:
• "Domain name" (Nombre de dominio del servidor de acceso) seguido por
un punto y la extensión del país: por ejemplo proveedor.es (se trata de un
nombre inventado para ilustrar el procedimiento)

• "DNS IP" (Dirección IP del servidor de nombres de dominio: en nuestro caso
será (inventado también) 194.150.24.25
• Login: compuesto por nuestro indicador de usuario (p.ej. user) y "Domain
name" sin extensión separados por arroba
user@proveedor
• Número de teléfono que corresponda según nuestro nodo de
conexión. Cuando existía Infovía este número era el 055, pero con

InfovíaPlus,dependiendo del lugar, hay un teléfono de acceso; por ejemplo
(para Sevilla) 954547000 .
Comenzamos..
Invoquemos kppp mediante acción sobre el correspondiente icono del menú del KDE o
escribiendo en un terminal:
[user@localhost]# kppp .
Para que el programa funcione para un usuario normal el propietario y el grupo
deben ser root y el ejecutable debe tener el bit SETUID activado, para poder abrir el
dispositivo del módem. Si no es así se pone uno superusuario:

Plataforma de Teleformación de IFES Página 179 de 328
[user@localhost]# su root
(... da la password... y entonces hacemos)
[user@localhost]# chown root.root kppp
[user@localhost]# chmod +s kppp
[user@localhost]# exit (...para volver a usuario normal...)
Si todo ha ido bien aparecerá la ventana del kppp y con el ratón accionaremos la tecla
setup.Entonces se abrirá la ventana "kppp configuration" con varias pestañas indicando
secciones: Accounts; Device; Modem; PPP y About.
Comenzaremos por la primera sección:
Seccion ACCOUNTS .
Accionamos la tecla new y aparece una nueva ventana llamada new account con otra
serie de subsecciones: desde Dial hasta Accounting.
Subseccion DIAL.
Esta sección contiene el Dial Setup que debemos rellenar:
Connection name: Ponemos el nombre que queramos dar a la conexión; por ejemplo,
INFOPLUS Phone number: 954547000
Authentication.
La autenticación puede realizarse de cuatro modos:
script-based, PAP, terminal-based o CHAT.
Debemos elegir la opción PAP Store password:
si no quieres tener que teclear la password cada vez que te conectes deja activada esta
opción .
Execute program upon connect:debe tener su casillero vacío. No escribas nada.
Execute program upon disconnect: Debe tener su casillero vacío. No escribas nada.
Edit pppd arguments: una vez activada la opción los argumentos se introducen
escribiéndolos en el casillero "arguments" y pulsando la tecla "add". Deben estar los
siguientes:
detach defaultroute asyncmap a0000
noipdefault ipcp-accept-local
ipcp-accept-remote .
Cuando hayamos terminado, pulsamos "close" y pasamos a las subsecciones
siguientes
NOTA: Estos argumentos los tenía así establecidos para cuando conectaba con Infovía.
Al pasar a InfovíaPlus, alguno puede quedar superfluo,pero ¡funciona!, así que no quité
ninguno.
Subseccion IP Contiene el IP setup. La única opción que debe estar activada es
Dynamic IP address Subseccion DNS. Aquí tenemos el menú del DNS Server:
Domain name:
proveedor.es
DNS IP address: la(s) introducimos en este casillero: 194.150.24.25 y pulsando la tecla
"add" la(s) pasamos al DNS address list. Al menos debe haber una.
Disable existing DNS servers during connection: Esta opción debe estar activada.
Subsección GATEWAY :contiene el Gateway setup .

Página 180 de 328 Introducción a Linux
Las opciones que deben activarse son:
Default Gateway : Assign the default route to this gateway
Subseccion LOGIN SCRIPT ¡Principiantes Ni tocarlo!
El edit script deberá estar vacío, con el primer casillero de opciones presentando la
opción "EXPECT".
Subseccion ACCOUNTING:
La opción Enable accounting debe estar activada.Selecciona entonces con la
opción "Selected" : Spain y dentro de ella, Telefónica Local y deja la opción "Volume
accounting: No accounting" desactivada.
Entonces, una vez que hemos rellenado todas las subsecciones de la sección
ACCOUNTS, accionamos el botón OK de la ventana "new account" y volvemos a la de
kppp configuration. Hay que rellenar el resto de las secciones.
• Seccion DEVICE:

Aquí está el menú Serial device:
Modem device: pon el dispositivo correspondiente, p.ej. /dev/ttyS1 (para módem en
puerto serie com2) Flow control: CRTSCTS (hardware flow control) Line termination:
La que corresponda. Generalmente es CR/LF Connection speed: La que corresponda,
p.ej. 115200 Modem lock file: /var/lock/LCK..modem .Este fichero debe estar por
defecto. No lo cambies si no sabes lo que haces, pues algunos programas como mgetty
dependen de la existencia de tal fichero y kppp no funcionará.
• Seccion MODEM Busy wait: 0 seconds

Modem Asserts CD line: opción desactivada
Modem commands: Deja los valores por defecto y no cambies nada Query modem:
Pulsando este botón kppp insta al módem a que se identifique. Sirve para probar el
módem.
Terminal: También sirve para comprobar si el módem negocia bien el protocolo de
conexión. De todos modos no te detengas en esto si no sabes lo que haces y sigue
adelante.
• Seccion PPP

Presenta el ppp setup: pppd timeout: 60 seconds
Dock into the panel on connect: opción desactivada
Automatic redial on disconnect: opción generalmente desactivada
Show clock on caption: opción activada
Disconnect on X-server shutdown: opción activada
Quit on disconnect: opción desactivada
Minimize window on connect: opción activada
La sección ABOUT evidentemente es para mirar solamente. Por último accionamos el
botón OK de la ventana kppp configuration.
Con ello volvemos a la inicial de kppp.

Plataforma de Teleformación de IFES Página 181 de 328
Activamos "Show log window". En el casillero "Connect to" deberá aparecer el nombre
de nuestra conexión (en el ejemplo INFOPLUS). El login ID será en nuestro ejemplo
user@proveedor.
Escribimos la password en su casillero: ****** y por último pulsamos "connect" .
Si todo va bien, aparecerán dos ventanas: una con el marco superior indicando
"Connecting to: INFOPLUS" que mostrará Dialing 954547000 y otra mayor, a la
derecha de la primera indicando en su marco superior "Login Script Debug Window" y
presentando una serie de acciones: ATZ OK ATD954547000 (Mientras está "Expecting
Connect") cuando se ha establecido la conexión, aparece en esa misma pantalla
CONNECT 115200 e indicará en su marco inferior "running pppd" mientras la otra
ventana indica "Logging on the network".
Cuando la ventana mayor presente en su marco inferior "Done", la otra más pequeña,
que en su marco superior exhibirá el nombre de la conexión (INFOPLUS), se
minimizará y ya estamos conectados.
Si restauramos la ventana de conexión INFOPLUS en un momento dado nos mostrará
la siguiente información:
Connected at 115200 Time connected ....
Session bill...PTAS Total bill ....PTAS y dos teclas "Details" (para ver los detalles de la
conexión con nuestro proveedor) y "Disconnect" evidentemente para desconectarnos.
Si la pulsamos, aparecerá de nuevo la ventana kppp y entonces, para salir,
presionaremos la tecla "quit".
Preguntas habituales:
• kppp muestra "pppd has died unexpectly" o

"data timeout has expired" (pppd ha muerto inesperadamente o ha pasado el tiempo
de espera). Estos mensajes pueden aparecer alguna que otra vez, aisladamente. Si
siempre se producen, entonces hay un problema.
Hemos de comprobar que:
- pppd es realmente un binario y no un script
- pppd tiene el bit setuid activado
- el fichero /etc/pppd/options existe pero está VACÍO
- que no has usado la opción "lock" como argumento del pppd en la configuración del
kppp
- no uses el enlace simbólico /dev/modem; en su lugar usa el dispositivo real que
corresponda, p.ej., /dev/ttyS1
- asegúrate que tienes los permisos necesarios en caso de seguir igual, invoca:
[user@localhost]# tail /var/log/messages
para considerar las causas de posibles fallos. Es muy conveniente leer el dossier sobre
kppp que aparece pulsando la tecla help de la ventana de kppp.
• kppp indica "sorry, can't open the modem" (perdón, no puedo abrir el
modem). Esto significa que kppp no tiene permisos para abrir el dispositivo
módem o que se ha seleccionado un dispositivo incorrecto en el cuadro del

Página 182 de 328 Introducción a Linux
modem. Comprueba que el dispositivo sea correcto y luego dale el bit setuid
a kppp.

• kppp muestra "I can't create a modem lock file" (no puedo crear el fichero de
cerradura)
O bien le das a kppp el bit setuid o das acceso al fichero /var/lock a los usuarios
normales
• kppp sólo espera (Expecting OK) - ¿Has jugado con la configuración de CR/
LF? - El modem quizá necesita más tiempo para inicializarse. Ve al cuadro
"Modem commands" y aumenta el "Init Delay Time".

• La conexión funciona, pero no se pueden arrancar aplicaciones.Puede ser
que esté activada la opción "Auto configure hostname" y el servidor X tiene
problemas para conectar con tu nuevo servidor. Si no hay más remedio
que usar dicha opción, tendrás que proporcionar los permisos adecuados
tecleando xhost + antes de realizar la conexión. Pero,¡MUCHO CUIDADO!,
porque cualquier otra persona tendrá acceso a tu servidor de X.
• kppp funciona, pero Netscape indica que "There is not a DNS entry for this
server" (El servidor no tiene una entrada DNS).
Intenta hacer un ping al número IP de otro servidor. Si funciona entonces hay que
comprobar si le diste al kppp al menos una dirección DNS o si en el fichero
/etc/host.conf hay una línea indicando algo parecido a order hosts, bind. (Debe haberla
para que se consulte al servidor de nombres cuando se busca una dirección)

Mi módem cuelga durante la negociación inicial.

La negociación se puede distinguir por ser la fase en la que suenan los modems.
Si cuelga bruscamente puede ser debido a un TIMEOUT demasiado corto en el
script de marcado. Se puede subir a TIMEOUT 100 o a TIMEOUT 150. En caso
de seguir colgando, se puede intentar añadir S7=100 o S7=150 entre el AT y el
DTnumero_de_telefono en el script de marcado.

Mi módem suena muy fuerte ,¿cómo le bajo el volumen?

Depende de lo que quieras. Si simplemente quieres bajar el volumen del módem, basta
añadir L1 o L0 a la cadena de inicialización del módem. Un posible sitio para colocarlo
sería entre el "AT" y el DTnumero_de_telefono en el script de marcado.
Si lo que quieres es que no suene para nada (por ejemplo, si quieres automatizar
la conexión para que se realice de madrugada), deberás añadir M0 a la cadena de
inicialización del módem. Puedes colocarla en el mismo sitio que se indicó para L1 o
L0.

Conecto a internet, pero no logro ir a ningún sitio.

Plataforma de Teleformación de IFES Página 183 de 328
Lo primero que hay que tener en cuenta es que no hay conexión hasta que no aparece
por /var/log/messages lo de Local IP Address xxx.xxx.xxx.xxx y Remote IP Address
yyy.yyy.yyy.yyy (o el bloque ppp0 al escribir ifconfig.
Esto viene al caso de que a veces la autentificación inicial falla, por ejemplo porque
haya caído el proveedor o esté saturado.En esos casos Infovia Plus no corta la
conexión y puede parecer que el módem está conectado a internet cuando en realidad
ni siquiera ha llegado a contactar con el proveedor.En ese caso habría que revisar
las claves de acceso que se hubiesen introducido en pap-secrets o chap-secrets o
intentarlo más tarde. En caso de aparecer Local IP Address... y Remote IP Address...
en /var/log/messages ,pero no conseguir conectar a ningún sitio habría que revisar en
primer lugar /etc/resolv.conf y ver si las direcciones allí introducidas son correctas.
Una forma de averiguar si es culpa de los DNS es probar a conectar usando una
dirección numérica. Por ejemplo se puede probar con la dirección 130.206.1.2 que
corresponde a www.rediris.es .Si conecta, es un problema en /etc/resolv.conf (o
del DNS de tu proveedor).Si se descarta el DNS, comprueba que tienes la opción
'defaultroute' en /etc/ppp/options. En caso afirmativo, comprueba /var/log/messages y
mira si aparece algún mensaje tipo " ppp not replacing existing default route to ...".
Este último caso es típico si se tiene alguna tarjeta de red y has definido alguna
dirección de gateway.Lo normal es eliminar dicho gateway. Averigua como introduciste
el gateway y elimínalo.
Una forma de eliminarlo sería por ejemplo con linuxconf, que viene con Red-Hat.

¿Qué significa eso de

Es un mensaje que aparece en /var/log/messages típico de Infovia Plus y debido a un
protocolo de red llamado IPX.No debe suponer ningún problema para la conexión, pero
si resultara molesto se podría añadir la opción noipx a ##/etc/ppp/options.

Mi módem no cuelga, ¿qué hago?

Asegúrate de que tienes (si usas pppd) la opcion módem en /etc/ppp/options. En caso
de que la tuvieras, comprueba que has puesto una cadena de inicialización al módem
en el script de marcado (por ejemplo at& f, atz...).
En caso de que así siguiese sin colgar, tendrás que echar mano del manual del módem
y buscar el comando "que haga que el módem cuelgue (o se resetee) cuando cambie la
línea DTR".
Normalmente es & Dx donde &#039;x' es un número(que es lo que deberás buscar
en el manual del módem;si prefieres prueba-y-error 'x' normalmente estará entre 0 y
4). Luego deberás editar el script de marcado del módem y colocar dicho "& Dx&quot;
entre el "AT" y el "DTnumero_de_telefono". Al usar el caracter '&&#039;, no olvides
poner todo el conjunto (desde el AT hasta el final del número de teléfono) entre comillas
dobles (p.e.: "AT& D3DT055&quot;).

Página 184 de 328 Introducción a Linux
Internet me va mucho más lento con Linux que con Windows.

Esto puede deberse a muchas causas: deberás verificar la configuración del módem
y del puerto serie. Sigue la descripción que se da en la sección correspondiente de la
FAQ.
Comprueba que la velocidad que has puesto en /etc/ppp/options NO es la velocidad del
módem (nada de 28800, 33600 o lo que sea, no es eso lo que debes poner ahí). Pon
115200 o 57600, preferiblemente la primera. Si tienes una UART 16450 u 8250 pon
38400 y asegúrate de NO poner el flag 'spd_hi' o 'spd_vhi' con setserial (si has seguido
las instrucciones de la FAQ desde el principio no hace falta que compruebes esto). El
tipo de UART que tienes lo podrás ver haciendo ##setserial /dev/ttySx
,donde 'x' es 0 para COM1, 1 para COM2, etc...
Si sigue lento o conectando mal, asegúrate de poner una cadena de inicialización al
módem ("at& f&quot;, "atz") y que la opción crtscts aparece en /etc/ppp/options. En
caso de continuar los problemas deberás echar mano del manual del módem y buscar
las opciones que "activen el control de flujo RTS/CTS".
Suelen ser de la familia de las que empiezan por '&&#039;. En algunos modems es
una sola orden (por ejemplo "& K3&quot;) y en otros hay que activar el RTS y el CTS
separadamente. Colocar el o los comandos entre el "AT" y el "DTnumero_de_telefono".
Si usas el carácter '&&#039;, asegúrate de poner todo el conjunto (desde el AT hasta el
final del número de teléfono) entre comillas dobles (p.e. "AT& K3DT055&quot;).

Tengo más de un proveedor de internet,¿qué hago para poder elegir por cuál me
conecto?

Una posible forma sería eliminar de
/etc/ppp/options
la opción name
## mi_login@mi_proveedor.
De esta forma, si hemos puesto en pap-secrets o chap-secrets, el login y el password
de todos nuestros proveedores, bastaría con escribir
pppd name login@proveedor
para elegir a cuál nos queremos conectar. Esto funciona si todos los proveedores
comparten el mismo número de teléfono (por ejemplo, si todos están en infovía plus).
En caso de tener diferentes números de teléfono, habría que eliminar en connect "/usr/
sbin/chat -v -f /etc/ppp/marcado" de /etc/ppp/options , crearse un fichero de marcado
particular para cada proveedor y crearse un fichero para cada proveedor en /etc/
ppp con las dos opciones personalizadas que le correspondan. O sea: ##/etc/ppp/
nombre_del_proveedor:
##connect
"/usr/sbin/chat -v -f
/etc/ppp/marcado_proveedor" name login@proveedor
Y ejecutar pppd así:

Plataforma de Teleformación de IFES Página 185 de 328
/usr/sbin/pppd file
/etc/ppp/nombre_del_proveedor .
Las DNS de todos los proveedores se podrían poner en /etc/resolv.conf , añadiendo
nuevas líneas ##"nameserver xxx.xxx.xxx.xxx".
Es conveniente ordenar los nameservers poniendo primero todos los DNS primarios
de todos los proveedores y después los DNS secundarios. También conviene poner en
primer lugar los correspondientes a los proveedores más usados.

Sólo puedo usar internet como root , ¿qué hago para poder hacerlo como
usuario?

Hay dos formas de hacerlo.
La forma "buena", sería usando el programa sudo el cual permite ejecutar como usuario
algunos programas que sólo podrían funcionar como root. Esto supondría que cada vez
que uno quisiera conectarse a internet debería introducir un password, lo cual es útil en
caso de que otros tuvieran acceso a nuestro ordenador. Para lo configuración de sudo
consultar "man sudo". La forma "mala", y digo mala porque es más insegura en caso
de que otros tengan acceso a nuestra máquina, consistiría en poner pppd "suid root" lo
cual posibilita que un usuario normal tuviera acceso al programa de una forma similar
que root. Para esto último, habría que empezar por localizar pppd. Suele estar en el
directorio /usr/sbin. Luego haría falta echar un vistazo para ver qué permisos tiene. Esto
se hace con la orden ls -l pppd y debe arrojar algo parecido a esto:
-rws--x--x 1 root ppp 70336 May 18 1996 pppd
Lo que se persigue es que la tercera letra sea una 's', como en el ejemplo. Si el
programa no está "suid root", la tercera letra será una 'x'. Entonces en este caso habría
que hacer ##chmod 4711 pppd
para conseguirlo. Los scripts de /etc/ppp necesitarían también acceso libre para los
usuarios así que habría que hacer:
chmod 755 /etc/ppp
chmod a+r /etc/ppp/*.
El efecto secundario que esto tiene es que cualquier usuario del sistema puede leer
las claves de acceso a nuestro proveedor de internet. Existe la posibilidad de limitar
la conexión a internet (y a los scripts de conexión y claves de acceso), leer la sección
"¿Cómo se cambian los permisos de ficheros y directorios?"
NOTA: Aún así, es posible que no seamos capaces de conectar con internet como
usuario normal. Una posible causa de fallo sería intentar conectar a internet escribiendo
pppd en vez de /usr/sbin/pppd. Para root funciona la primera, pero para el resto de
usuarios no. El motivo es que el PATH (el conjunto de directorios en los que Linux
busca un ejecutable) es diferente para root que para los usuarios normales. Los
usuarios normales no tienen /usr/sbin dentro del PATH así que deberán hacer /usr/
sbin/pppd para conectarse a internet o hacer un enlace simbólico a /usr/sbin/pppd
desde otro directorio que sí esté en el PATH de usuario (como por ejemplo /usr/bin), o
hacernos un script (pequeño programa) que se limite a ejecutar /usr/sbin/pppd.

Página 186 de 328 Introducción a Linux
Para el enlace simbólico bastaría hacer:
ln -s /usr/sbin/pppd /usr/bin/pppd

Comandos básicos
¿Pero hay que saber comandos?

La respuesta a esta pregunta es sencilla: todo depende de cómo vayas a utilizar el
sistema, de las ganas de aprender que tengas y de lo que quieras profundizar en el
sistema. Hay que diferenciar entre tareas de administración y uso habitual del sistema.
Si vas a realizar tareas de administración del sistema, deberías saber, o mejor dicho,
tendrás que aprender una serie de comandos para realizar estas tareas. Si vas a
utilizar el sistema a nivel usuario, no necesitarás saber ningún comando, solamente
tendrás que aprender a utilizar los programas que uses. Lo que ocurre habitualmente
es que el usuario de la máquina y el administrador son la misma persona, con lo cual
tendrán que saber una serie de comandos mínimos. Como anécdota, os puedo contar
que en el lugar donde trabajo, hay usuarios que utilizan Linux y no tienen ni idea de
administración del sistema (y no sólo en linux), no saben comandos y tampoco los
necesitan. Trabajan en modo gráfico, saben utilizar los programas que necesitan y
tienen a alguien (yo en este caso) que se hace cargo de las tareas de administración/
configuración del sistema.

¿Esto no lo puedo hacer en modo gráfico?

Como regla general, se podría decir lo siguiente: "Todo lo que se puede hacer en modo
gráfico, se puede hacer también en modo texto, a base de comandos. Pero no todo
lo que se puede hacer en modo texto, se puede hacer en modo gráfico". Cada día
aparecen más y más programas, que permiten hacer hacer en modo gráfico, a golpe
de ratón y ventanas, lo que se hace en modo texto a base de comandos. Es más, lo
único que estos programas hacen, es crear una versión gráfica que hace uso de los
comandos que se utilizan en modo texto. Entornos gráficos como Gnome y Kde, vienen
con una serie de programas gráficos que hacen esto. Para terminar esta sección, sólo
decir a aquellos que quieran profundizar en el sistema, que hasta el momento, ningun
programa gráfico, supera en versatilidad y potencia, a una consola de texto donde
ejecutar comandos directamente.

Combinaciones especiales de teclas

# [Ctrl]+[Alt]+[Del]: Shutdown.
Apaga el sistema de forma organizada desde una terminal texto.
# [Ctrl]+[Alt]+[F1]: Cambia a la primera terminal de texto.
# [Ctrl]+[Alt]+[Fn]: Cambia a la terminal de texto numero n (n=1,...,6).
# [Ctrl]+[Alt]+[F7]: Cambia a la primera terminal X (si se está usando alguna)

Plataforma de Teleformación de IFES Página 187 de 328
NOTA:Si estamos en X-windows y por alguna razón nuestro entorno gráfico dejase de
funcionar, siempre podríamos entrar en una terminal texto con [Ctrl]+[Alt]+[Fn], terminar
los procesos que estén dando problemas y volver a las X con [Ctrl]+[Alt]+[F7].
# [Ctrl]+[Alt]+[Fn]: Cambia a la terminal X numero n (n=7,...,11)
# [Tab]: Autocompleta el nombre de un comando, fichero, directorio, programa, cuando
trabajamos en una terminal texto.
P.ej: Si vamos a usar el programa "programa_de_prueba", podemos escribir progr y
pulsar [Tab], el sistema se encargará de rellenar el resto.
# [ArrowUp]: (Flecha arriba). Va editando la historia de comandos que hemos escrito
anteriormente en terminal texto.
[Enter] para ejecutar.
# [Shift][PgUp]: Scroll la salida de la terminal hacia arriba, en terminal texto.
# [Shift][PgDown: Scroll la salida de la terminal hacia abajo, en terminal texto.
# [Ctrl]+c: Termina el proceso actual. Cuando lo comenzamos sin & ([localhost]$
proceso)
# [Ctrl]+d: Termina la terminal actual.
# [Ctrl]+s: Para la transferencia a la terminal.
# [Ctrl]+z: Manda el proceso actual (comenzado sin &) a &quot;Background". Lo mismo
que si comenzamos el proceso con & ([localhost]$ proceso &).

Lista de comandos más usados

Todos los comandos citados en este apartado, pueden usarse con multitud de
opciones. Para conseguir información detallada de cada comando utilizar " man
comando". A continuación tenéis la manera más sencilla de utilización.Información del
sistema
• ##hostname

, devuelve el nombre de la máquina.
• ## uptime

,devuelve la cantidad de tiempo trascurrido desde la última vez que se arrancó el
sistema, la cantidad de usuarios trabajando en el sistema y el load average (carga del
sistema).
• ## uname -a

,información sobre el sistema operativo de la máquina.
• ## dmesg|more

, imprime el "ring buffer" del kernel.
• ## free -tm

, información sobre la cantidad de memoria disponible y usada.
• ## df -h

Página 188 de 328 Introducción a Linux
,información sobre todo los dispositivos montados en la máquina.
• ## du -bh /|more

,información sobre el espacio ocupado por cada subdirectorio, comenzando en el
directorio raíz /.
• ## ps

, información sobre los procesos del actual usuario, que se están ejecutando.
• ## ps axu

, información sobre todos los procesos que se están ejecutando en la máquina.
• ## top

, información sobre el uso de cpu y memoria de los procesos del sistema.
• ## cat /proc/cpuinfo

,información sobre el microprocesador.
• ## cat /proc/interrupts

, información sobre las interrupciones en uso.
• ## cat /proc/dma

, información sobre dma en uso.
• ## cat /proc/filesystems

, información sobre los sistemas de archivos que se pueden utilizar (compilados en el
kernel).
• ## /sbin/lsmod

, información sobre los módulos en uso.
• ## finger usuario

, información sobre el usuario usuario.
• ## who

, información sobre los usuarios usando el sistema.
• ## id usuario

, información sobre UID, GID y GROUPS del usuario usuario
• ## last

,información sobre los últimos usuarios que han usado el sistema.
• ##set|more

, información sobre el entorno de usuario actual.

Plataforma de Teleformación de IFES Página 189 de 328
• ## ping máquina

, para comprobar si tenemos contacto con la maquina maquina (maquina: nombre o IP)
• ## /sbin/route

,tabla de enrutamiento de nuestro sistema.
• ## /sbin/ifconfig

, información sobre los distintos dispositivos de red
* netstat
, información valiosa sobre la conexión de red (Este comando tiene muchas
posibilidades, ejecutar man netstat Administración
• ## su

, te conviertes en administrador(root) después de introducir la clave de acceso. Ideal
para realizar alguna tarea de administración sin necesidad de salir del sistema y entrar
de nuevo como root.
• ##/usr/sbin/adduser usuario

, registra y crea una cuenta de usuario.
• ##/usr/sbin/userdel usuario

, borra la cuenta de usuario usuario.
• passwd: Cambia la clave de acceso para el usuario actual. Root puede
cambiar la clave de cualquier usuario passwd usuario

• ##/usr/sbin/groupadd grupo
, crea un nuevo grupo.
• ##/usr/sbin/groupdel grupo

, borra un grupo.
• ## more /etc/passwd,

muestra el fichero de claves del sistema. (Si no se usa shadow password)
• ## more /etc/group

, muestra los grupos registrados en el sistema.
• ## chmod permisos fichero/directorio

, cambia los permisos de ficheros/directorios
• ## cp fichero1 fichero2

,copia fichero1 como fichero2
• ## rm fichero

Página 190 de 328 Introducción a Linux
,borra fichero
• ## rm -R directorio

,borra el contenido completo (ficheros/subdirectorios) de directorio
• ## mv fichero1 fichero2

, cambia el nombre de fichero1 a fichero2
• ## mkdir directorio

,crea un subdirectorio
• ## rmdir directorio

,borra un subdirectorio
• ## shutdown -t3 -r now

,reinizializa el sistema (hay que hacerlo como root).
• ##shutdown -t3 -h now

,apaga el sistema (hay que hacerlo como root).

Plataforma de Teleformación de IFES Página 191 de 328
Introducción a Linux

Apéndices (Conceptos básicos)
¿Qué es un sistema operativo?
Un sistema operativo es un programa (o conjunto de programas) de control que
tiene por objeto facilitar el uso de la computadora y conseguir que ésta se utilice
eficientemente. Se encarga de gestionar y asignar los recursos hardware que requieren
los programas.

El sistema operativo es el programa principal de nuestro computador: sin él no
funcionaría ningún otro y todos los demás programas se ejecutan sobre él, siendo el
S.O. quien los administra y gestiona.

El objetivo fundamental de los sistemas operativos es, por lo tanto, gestionar y
administrar eficientemente los recursos hardware, permitiendo que se ejecuten
concurrentemente varios programas, sin que haya conflictos en el acceso de cada
uno de ellos a cada uno de los recursos que necesite, y sin que ningún programa
monopolice alguno de ellos. Los recursos hardware son: el procesador (CPU), la
memoria principal, los discos y otros periféricos.

Pensemos en un sistema multiusuario, esto es, un ordenador utilizado desde diversos
terminales por varios usuarios (por ejemplo, el ordenador de un banco que gestiona las
cuentas de los clientes o el ordenador que gestiona la reserva de los billetes de una
línea aérea). Obviamente, si varios usuarios están utilizando la misma computadora,
debe haber alguien o algo que asigne los recursos y evite los conflictos que puedan
surgir cuando dos programas requieran los mismos elementos (la misma unidad de
disco, o la impresora, por ejemplo). Esta es una de las funciones del sistema operativo.

Además de esta función de asignar los recursos a cada programa, el sistema operativo
se encarga de contabilizar éstos, y de la seguridad (que un usuario no pueda acceder
sin autorización a la información de otro, por ejemplo).

Del mismo modo, es normal que un ordenador ejecute varios programas
simultáneamente. Pueden darse conflictos cuando dos aplicaciones quieran modificar
el mismo fichero. Es función del sistema operativo controlar estas situaciones para que
no se produzcan daños o pérdidas de información, como por ejemplo podría ocurrir si
dos agencias de viaje intentan vender el mismo billete simultáneamente.

Página 192 de 328 Introducción a Linux
El sistema operativo facilita el uso de la computadora. Para ello crea un sistema de
capasque evita al usuario y a las aplicaciones de mayor nivel tener que estar pendiente
de las operaciones de menor nivel. Por ejemplo, cada dispositivo de E/S (entrada/
salida, como el teclado, la pantalla, la impresora, etc.), para ser utilizado, requiere
varias instrucciones máquina que establezcan un dialogo entre las unidades centrales
y el periférico, enviando o captando el dato de salida o de entrada, respectivamente.
Estas instrucciones dependen considerablemente de las características concretas
del periférico. Si se trata, por ejemplo, de una unidad de disco, hay que considerar
el ancho de los buses, el tamaño de su memoria intermedia, el arranque (y parada)
de los motores de la unidad, el código identificador de la posición a donde hay que
acceder, etc. Por otra parte, un dispositivo dado, estas instrucciones u operaciones
son comunes para grabar o leer cual tipo de información (programas o datos), sea
cual sea su naturaleza. El sistema operativo, con objetivo de facilitar el trabajo de los
programadores, contiene módulos de gestión de entradas / salidas que evitan a los
usuarios tener que incluir esas instrucciones cada vez que hacen una operación de
entrada o salida. Se puede decir que esos programas del sistema operativo hacen
transparente al usuario las características hardware concretas de los dispositivos.

El sistema operativo también hace que la computadora se utilice eficientemente.
Para poner de manifiesto cómo el sistema operativo puede incrementar la eficiencia
consideremos otro sencillo ejemplo. Los programas tradicionalmente se ejecutan
secuencialmente; es decir, hasta que no concluye la ejecución de una instrucción no
se ejecuta la siguiente. Supongamos que dentro de un programa hay una instrucción
que implica la escritura de una página en una impresora láser. Hasta que no acabe de
imprimirse dicha página el programa no puede continuar ejecutándose. Sin embargo,
el sistema operativo puede recoger la orden de impresión, almacenarla en memoria y
encargársela a una rutina de impresión, dejando el programa que había efectuado la
llamada original a la impresora liberado para poder seguir trabajando.

En resumen, el sistema operativo efectúa, entre otras, las siguientes funciones:

• Facilita el uso de la computadora, en general, la comunicación
computadora / usuario
• Gestiona y asigna recursos hardware (procesador, memoria y periféricos) a
los distintos programas o tareas
• Gestiona y mantiene los archivos en dispositivos de memoria masiva
• Apoya a otros programas
• Protege los datos y los programas, cuestión especialmente compleja en
sistemas multiusuario
• Identifica y autentifica a los usuarios que hacen uso de la computadora.
• Contabiliza la utilización de los recursos realizada por los distintos usuarios

Plataforma de Teleformación de IFES Página 193 de 328
¿Qué es el software libre?
Adaptado de:
http://www.sindominio.net/pipermail/hacklabs/2003-May/000212.html
, un documento de
mailto: meskalito-at-sindominio.net

¿Qué es el software?
Empecemos con la definición de Software: son los componentes no físicos(programas)
que un ordenador --o un aparato con capacidades de computación-- necesita para
funcionar.

Lamentablemente, el castellano no ha adoptado una palabra propia para definir este
concepto y nos vemos obligado a usar este anglicismo. Durante una época, en los
albores del ordenador personal en la década de los 80, se propuso el término logical,
pero no llegó a prosperar su uso.

El software, por el tipo de licencia, se divide en dos grupos principales: Software Libre
y Software Propietario.

El software propietario
Este software se define como aquel cuya licencia restringe drásticamente su uso.
Puede ser creado por desarrolladores para el uso en una única empresa, como es el
caso de numerosas aplicaciones verticales, aunque en este caso la empresa cliente
suele retener la propiedad completa del software, o por pequeñas empresas, que lo
venden bajo numerosos tipos de licencias, algunas de ellas gratuitas (pero no libres).
Sin embargo, cuando nos referimos a este tipo de software, estamos pensando en el
que es producido principalmente por grandes empresas. La más conocida de ellas
probablemente sea Microsoft, pero existen otras: Oracle, Adobe,...

En este caso, cuando pagas por un programa, no pagas por el cdrom, el programa o
su código, solamente pagas por su licencia, que es la autorización de su uso, con las
condiciones que ponga la empresa propietaria de dicho software.

En general, las condiciones que tiene la licencia del software propietario son éstas,
aunque la empresa propietaria del mismo suele poner las que le interesa:

Página 194 de 328 Introducción a Linux
No se puede averiguar el código fuente del programa; no se puede usar más que en
una sola máquina; no se puede copiar ni prestar a un amigo (para que lo copie ni para
que lo use, aunque nosotros no lo estemos usando); no se puede ceder, no se puede
alquilar.

Esto hace que, por ejemplo, haya que pagar 2 veces por el mismo programa si se
instala en 2 puestos de trabajo, aunque sean usados por la misma persona (en casa y
en la oficina).

Además de no poder aprender sobre el software viendo el código, ni adaptarlo a
nuestras posibilidades sin incurrir en delito.

Algunas de estas empresas utilizan en ocasiones procedimientos comerciales que
intentan monopolizar el mercado, causando el mayor número de incompatibilidades
posibles para evitar que se use otro software que no sea el de su empresa y tener que
estar pagando para actualizar cada poco tiempo los programas.

El software libre

Este software ha sido desarrollado principalmente por una comunidad de usuarios,
para ponerlo al servicio de la sociedad. Hay excepciones, en que una empresa
comercial, por algún motivo, desarrolla un software abierto y lo pone a disposición de la
comunidad de usuarios.

Para que un software sea libre, ha de cumplir los siguientes requisitos:

Libertad de uso: se puede usar de la manera que se quiera, por quien quiera, en
el número de ordenadores que se quiera.
Libertad de código: la cual permite ver el código, estudiarlo, usarlo, copiarlo,
mejorarlo, adaptarlo a nuestras necesidades y ponerlo a disposición de la
comunidad. El código fuente de un programa libre, debe estar a la disposición de
quien lo quiera.
Libertad de distribución: se puede copiar, regalar o vender, cómo y a quien se
quiera. Sin dar explicaciones a los autores.

Una lista de las licencias más frecuentes de código abierto está disponible en la página
web de la Open Source Iniciatives:
http://www.opensource.org/licenses/index.php
. Quizás el máximo exponente del software libre son las distribuciones GNU/Linux, más
conocidas globalmente como Linux.

Plataforma de Teleformación de IFES Página 195 de 328
¿Por qué usar software libre?
Adaptado de
http://www.sindominio.net/pipermail/hacklabs/2003-May/000212.html
, un documento de
mailto: meskalito-at-sindominio.net

Por economía
Usando software propietario, por cada ordenador, hay que tener una licencia de cada
programa que se use. Por poner un ejemplo, el sistema operativo que es lo mas básico
para que funcione el ordenador, la versión que se comercializa actualmente para uso
doméstico es el WindowsXP homey su licencia suele superar los 120 Euros, pero para
poder hacer algo más que encender el ordenador necesitamos programas de ofimática
como la suite de Microsoft Office XPy algunos programas de audio, publicación y
retoque fotográfico, por ejemplo.

El precio del software de cada terminal de trabajo puede superar ampliamente los 600
euros pudiendo invertir este dinero en la compra de nuevos equipos o periféricos que
se necesiten si usamos software libre.

Una distribución de Linux, que se puede conseguir de forma gratuita, aunque
puede costar desde los 20 a los 80 euros, donde se suelen incluir, algún manual,
además de soporte técnico y el código fuente del programa para su estudio o
modificación, un paquete de programas, entre los que hay software de oficina,
editores gráficos,herramientas para la administración de redes, servidores de
páginas web,correo electrónico, edición de publicaciones... Un paquete de software
que difícilmente podría pagar una persona normal... y pocas empresas con un parque
de ordenadores.

Por su filosofía
Porque el software libre, ha sido y es creado por miles de personas que cooperan
desde todas las partes de la geografía mundial coordinndose mediante Internet,
de forma descentralizada además de desinteresada en su mayoría, aportan su
conocimiento, su trabajo y su tiempo, para la creación de este software, que ha sido
propuesto a la Unesco a formar parte del patrimonio de la Humanidad.

Página 196 de 328 Introducción a Linux
El Software Libre es la prueba de que las cosas pueden funcionar de muchas formas
diferentes a como funcionan actualmente.

Enseña los valores de la cooperación por encima de la competición, el de la libertad
frente a la restricción, compartir frente a retener, la difusión del conocimiento frente al
oscurantismo y a valorar a las personas por su forma de ser y no por su apariencia,
género o raza, ya que en la red desaparecen estas características.

Por favorecer el desarrollo tecnológico
La política de desarrollo del software libre, tiene el mismo modelo que (hasta hace
poco) la comunidad científica, que ha funcionado tan bien a la Humanidad. Cada
descubrimiento, se pone inmediatamente en conocimiento del resto de la comunidad, lo
que permite una rápida evolución.

Mientras que el software propietario, lejos de potenciarlo, lo frena poniendo
impedimentos para que otras compañías no puedan mejorarlo.

Por seguridad

El software libre basa su robustez y su seguridad en su transparencia. Miles de
miembros de la comunidad del software libre, participa activamente en la búsqueda
de fallos de seguridad, que son rápidamente reportados, siendo los mismos que
encuentran los fallos muchas veces los que reportan la solución, o los mismos
desarrolladores, en poco tiempo.

Mientras que el software propietario, basa su seguridad en el oscurantismo, esto
es, no dar a conocer los fallos de seguridad del software, para que no puedan ser
aprovechados por supuestos atacantes.

Esto no hace más que dar una ficticia seguridad a sus usuarios, que ven como día a
día, se ven afectados por una gran cantidad de virus, gusanos e intrusos informáticos.

Plataforma de Teleformación de IFES Página 197 de 328
Licencias de software libre

Introducción a las licencias de software libre
Jorge Nonius.
v. 0.92, 16 de abril de 2002
Resumen
Este artículo introduce a los usuarios de Debian GNU, con poco o ningún conocimiento
jurídico, en el Derecho español sobre propiedad intelectual y su efecto en las licencias
de software libre. Continua la serie dedicada a la propiedad intelectual que se inició
con la "Introducción a la propiedad intelectual" publicada también en La Espiral. Se
completa con tres apéndices en el apartado 7.

El artículo se centra en el Derecho español, pero las normas sobre propiedad
intelectual de programas de ordenador son prácticamente idénticas en todos los
Estados miembros de la Unión Europea.

El punto de vista adoptado no es siempre el del autor o fabricante de software, sino
que más bien se les trata de igual a igual con los usuarios, consumidores y demás
personas con derechos y libertades implicados en la creación, explotación y utilización
del software.

© 2001, Jorge Nonius. La versión más actualizada se encuentra disponible en http://
www.laespiral.org/xml/. Para ponerse en contacto con el autor: jnonius@terra.es. Este
artículo puede ser copiado y distribuido en las condiciones de la licencia GNU para
documentación libre, GFDL (http://www.gnu.org/copyleft/fdl.html).

[Nota de La Espiral: El autor, que firma con seudónimo, es usuario de Debian GNU y
Licenciado en Derecho.]

Página 198 de 328 Introducción a Linux
Los derechos del autor del software
Este artículo continua la serie dedicada a la propiedad intelectual que se inició con la
"Introducción a la propiedad intelectual" publicada en La Espiral, pero, a diferencia de
allí, aquí no se trata sólo de los derechos de autor, sino también de los derechos de los
consumidores y usuarios, de ciertas libertades públicas, y en suma de un abigarrado
conjunto de situaciones jurídicas que aparecen en los conflictos, teóricos o prácticos,
acerca de las licencias de software libre. Utilizaremos siempre el término "libertad" en
su acepción técnica estricta: Libertad es la situación jurídica en que se encuentra uno
cuando no le alcanza una prohibición. Las prohibiciones, que adoptan muchas formas
y muchas más denominaciones (deberes, obligaciones, cargas, sujeciones) provienen
de muchas fuentes: directamente de la ley, por medio de un contrato, de una demanda
judicial o de una sentencia, etc. De estas prohibiciones trata este primer apartado.

En el segundo apartado trataremos las libertades y restricciones a los usuarios
implicadas en una licencia de software, y en especial en una de software libre. Pero
antes daremos un repaso rápido a la contrapartida de las libertades de los usuarios: los
derechos del autor del software, reconocidos y garantizados por la LPI.

Vamos a explicar cuáles y cómo son los derechos del autor del programa. Por ahora
trataremos al software como una obra intelectual más, sin fijarnos demasiado en
aquello que lo caracteriza y distingue de, por ejemplo, una novela o una canción.
Después de tratar algunas cuestiones generales (1.1), definiremos quién es el titular
de los derechos de autor de un programa (1.2), sobre qué objetos recaen y sus tipos
(1.3), qué es y qué implica la divulgación y la publicación del software (1.4), cuál es
el multiforme contenido del derecho de autor y sus límites (1.5), su duración (1.6), las
formas de explotación y cesión de derechos (1.7) y finalmente las garantías legales de
todo esto (1.8).

El lector que conozca los fundamentos jurídicos de la propiedad intelectual puede
saltarse este apartado 1 y pasar directamente al 2.

Cuestiones generales sobre el software como
obra protegida
La LPI sólo protege los programas originales generados por el intelecto. Ésta es la
definición legal de programa protegible. Un programa no expresado (p. ej. una idea)
no es un programa, ni tampoco lo es un programa no original, aunque veremos que
se reconocen ciertos grados de originalidad en la LPI, por ejemplo para los programas

Plataforma de Teleformación de IFES Página 199 de 328
derivados. No están protegidos pues los programas no originales y en cierto modo
tampoco los que se encuentren en dominio público, que son aquellos para los que
ha transcurrido el plazo de duración. Tampoco están protegidos los programas que,
aunque originales, estén destinados a producir fallos en el funcionamiento del sistema
(virus, etc). Estas exclusiones se irán detallando en su lugar más adelante, pues deben
ser analizadas con cuidado. [P. ej.: La divulgación de programas inéditos que estén en
dominio público genera derechos de propiedad intelectual a favor del divulgador].

El software no es patentable. Excepciones
La propiedad intelectual de los programas se reconoce y regula en la LPI ya que el
software es oficialmente considerado "obra generada por el intelecto" . Por contra, el
software no tiene consideración oficial o legal de objeto patentable, pues en derecho
español sólo son patentables las invenciones nuevas de aplicación industrial. Resulta
que los programas de ordenador no se consideran invenciones (?), en un juicio más
formal que de fondo, y por lo tanto no pueden patentarse.

Dicho de otro modo, un programa no puede ser objeto de propiedad industrial, que
es el conjunto de derechos de los inventores sobre sus inventos y de las empresas
sobre sus marcas y rótulos comerciales, o de los ingenieros sobre topografía de
semiconductores, etc. Es una propiedad "incorporal" o "inmaterial" , lo mismo que la
propiedad intelectual, pero se regula no en la LPI sino en la LP y LM, conforme a reglas
y mecanismos diferentes.

No obstante, un programa protegido por la LPI puede ser también objeto de
protección por la LP si forma parte de un invento patentado. En ese caso, ambas
vías de protección de derechos, la garantizada por LPI y la que garantiza la LP, son
independientes, compatibles y acumulables. Véase en el Apéndice B la referencia de
las leyes citadas.

¿Es el software equivalente a una obra literaria?
No es realmente necesario etiquetar a los programas de ordenador como obras
literarias, artísticas o científicas. Puede leerse en tratados internacionales y normas
de la Unión Europea que los programas de ordenador han de quedar protegidos
como "obras literarias" , por alguna extraña razón; tal vez porque, como no son obras
científicas (?) ni artísticas (??), en algún cajón hay que meterlos (???). Al fin y al
cabo, el programa fuente viene expresado en lenguaje humano, aunque sea tan
poco literario como C++. Este asunto es demasiado general, y no hace falta tratarlo
aquí. Mejor veamos qué protección dispensa la LPI a los programas de ordenador,

Página 200 de 328 Introducción a Linux
comparémosla con la dispensada a las obras literarias, y concluyamos sobre las
diferencias encontradas.

Adelantemos que hay diferencias, y muy notables. Probablemente a causa de que los
programas no son en absoluto equivalentes a las obras literarias.

Los titulares de los derechos de propiedad
intelectual sobre un programa
Menores de edad y asalariados

Los autores de programas que sean menores de edad son por supuesto considerados
titulares únicos de sus derechos, igual que los mayores de edad. Pero sólo los menores
de 18 años y mayores de 16 independientes -de acuerdo con sus padres o tutores-
pueden ceder sus derechos de explotación del programa sin la autorización de quien
les tenga a su cargo.

Si un asalariado crea un programa original durante y con motivo de su relación
laboral con un empresario, se entiende que cede a éste en exclusiva sus derechos de
explotación sobre el programa, salvo pacto en contra. Pero el empresario no puede
disponer del software con fines distintos de los de su actividad empresarial habitual.
Más adelante volveremos sobre este delicado asunto.

Programas colectivos y en colaboración
La LPI nunca considera "autoras" de las obras intelectuales a las personas jurídicas
(asociaciones, sociedades anónimas, fundaciones), sino sólo a las personas naturales
o físicas, con una excepción: ¡los programas de ordenador! Técnicamente hablando
hay otro caso en el que también se dice que una persona jurídica queda equiparada al
autor de la obra: las obras colectivas.

Obra colectiva es un concepto difícil de definir con precisión. Para la LPI, programa
de ordenador colectivo es el generado por iniciativa y coordinación de una persona
(natural o jurídica), que lo edita y divulga bajo su nombre. El programa colectivo está
constituido por aportaciones de diferentes programadores, de las que resulta una
creación única y autónoma, sin atribución de partes o cuotas a cada aportador, y sin
que uno solo de ellos pueda atribuirse derechos sobre el conjunto del programa.

Plataforma de Teleformación de IFES Página 201 de 328
Programa colectivo no es lo mismo que programa creado en colaboración, que nace
del trabajo de varios coautores y permite la explotación separada de cada aportación.
Volveremos sobre esta distinción enseguida, apartado 1.3.

Titulares originarios y derivados
El autor es el titular originario de los derechos de propiedad intelectual sobre su
programa. Pero muchos de esos derechos, como veremos más adelante, pueden
ser cedidos a otras personas, que no por ello pasan a ser autores obviamente, pero
sí titulares de los derechos. Decimos en este caso que son titulares derivados, o
simplemente titulares. Al hablar de titular originario diremos simplemente "autor" .

Tipos de programas
Los programas pueden clasificarse según varios criterios con arreglo a la LPI:

1. Por la autonomía del programa tenemos programas independientes y
programas dependientes.
2. Por el número de autores y su forma de cooperar tenemos programas
individuales, programas en colaboración y programas colectivos.
3. Por su originalidad tenemos programas estrictamente originales por un lado
y programas derivados y compuestos por otro.

Ahora nos interesa sólo dar algunas definiciones. Llamamos programa independiente
al constituido como una "creación autónoma" , aunque se publique conjuntamente con
otros programas. Se distingue del programa compuesto, formado por varios programas
independientes preexistentes.

Decimos que un programa es realizado en colaboración si resulta unitariamente del
trabajo de varios desarrolladores, en el que es posible separar las aportaciones de
cada cual y de explotarlas independientemente. En este caso, los programadores
son co-autores, y pueden entre ellos pactar lo contrario y explotar por su cuenta cada
cual su parte. Si no hay acuerdo, el único límite a la explotación separada consiste
en no perjudicar la explotación común. Para divulgar y modificar un programa en
colaboración hace falta el consentimiento de todos los coautores, que sólo el juez
puede excusar. Los derechos de autor pertenecen a cada coautor en la proporción que
entre ellos pacten; en otro caso, se aplican las reglas generales del Código Civil sobre
la comunidad de bienes.

Programa derivado es el que se ha obtenido de un modo u otro de software anterior, p.
ej. traduciéndolo, adaptándolo, modificándolo o revisándolo. En general debe hablarse

Página 202 de 328 Introducción a Linux
de programa derivado ante cualquier transformación de un programa preexistente. Pero
cuidado: La LPI protege los derechos de los dos autores: el del programa primitivo y el
del derivado.

Un programa se dice "compuesto" si se ha obtenido de la incorporación de uno o más
programas preexistentes y sin la colaboración de los autores originarios. Se considera
obra protegida siempre que haya autorización de los titulares de los programas
originarios y se respeten sus derechos sobre ellos. Es decir: el autor del programa
compuesto tiene derechos sólo sobre la composición, no sobre el software que la
compone. La distribución Debian GNU/Linux Potato, p. ej., es una obra compuesta,
compuesta de software. Debian sólo tiene derechos sobre la composición en sí, no
sobre los programas independientes incluidos en la distribución.

Un programa (obra intelectual) se distingue del soporte en que está contenido (bien
mueble, como puede ser un CD). El soporte del programa es el material en que se
plasma, no es lo mismo que el programa. [Advertencia probablemente superflua:
El significado de soporte al que nos referimos nada tiene que ver con el utilizado
constantemente en informática de "servicio de apoyo" ]. Lo importante es que son
distintos e independientes los derechos sobre el programa (derechos inmateriales, de
propiedad intelectual) y los derechos sobre el CD (derechos materiales, de propiedad
común). Al cederse los derechos de propiedad intelectual no necesariamente se ceden
los derechos sobre el soporte. Viceversa y más importante: ser dueño del soporte no
significa ser titular de los derechos sobre el programa que incorpora.

Divulgación y publicación de un programa
Divulgar un programa es expresarlo de modo que se haga accesible al público por
primera vez en cualquier forma. La divulgación es facultad exclusiva y personalísima
del autor, se dice incluso que es un "derecho moral" (véase más adelante). Lo
importante de todo esto es la fecha de divulgación, porque a partir de ella se cuenta el
plazo de duración de los derechos de propiedad intelectual.

La publicación del programa es una forma de divulgarlo, de las más importantes
pero no la única. Publicar un programa es expresarlo de modo que lo hace accesible
al público mediante ejemplares o copias. Verdaderamente es la forma principal de
divulgación del software, por eso no trataremos otras, como la comunicación pública,
apenas concebible en el ámbito de los programas de ordenador. No obstante, véase el
apartado 1.7.

Plataforma de Teleformación de IFES Página 203 de 328
Facultades del autor del programa y sus límites
Los derechos del autor se manifiestan ante todo en dos grupos de facultades: 1º
Los derechos morales, o facultades personalísimas que tiene sobre los programas
que ha creado; y 2º Los derechos patrimoniales, como la facultad exclusiva de
explotarlos en cualquier forma y obtener remuneración por ello; o el derecho a obtener
remuneración por el simple acceso a las fuentes; y el derecho a autorizar o prohibir su
uso, divulgación y explotación; etc.

El derecho moral es una figura que sólo encontraremos en los derechos continentales,
no en las leyes anglosajonas, al menos con el mismo aspecto. No puede cederse en
vida, como parece deducirse del texto de la LPI. En realidad son varios los derechos
morales del autor:

1. Decidir si su programa ha de divulgarse y en qué forma;
2. Decidir si el programa aparecerá con su nombre, bajo seudónimo o
anónimamente;
3. Exigir el reconocimiento de su condición de autor del programa, y el
respeto a su integridad, sin deformaciones, modificaciones o atentados que
perjudiquen el interés o reputación del autor;
4. A modificar el programa cuando le plazca, aunque ha de respetar los
derechos adquiridos por otras personas. Volveremos sobre esto al tratar de
las modificaciones de los programas;
5. A retirar su programa por cambio de convicciones (derecho de
arrepentimiento), indemnizando a quienes perjudique la retirada,
normalmente los usuarios y el explotador del programa. Esta facultad y las
dos siguientes no es probable que un programador las ejercite nunca;
6. A acceder al ejemplar único o raro de su programa que se halle en poder de
otra persona, indemnizando los posibles perjuicios;
7. A publicar su programa en colección escogida o completa.

Para más detalles sobre el derecho moral, véanse los artículos 14 a 16 LPI.

Los derechos patrimoniales son los que tienen relevancia económica. Los trataremos
muy sintéticamente en el apartado 1.7, dedicado a la explotación del software.

Página 204 de 328 Introducción a Linux
Duración de los derechos. Programas en
dominio público
Los derechos de propiedad intelectual nacen con la simple creación del programa, no
es preciso anunciarlo ni registrarlo. Pero, como en las demás propiedades intelectuales,
los derechos no duran indefinidamente; se disfrutan por un tiempo y después se
extinguen; se dice entonces que el programa pasa al dominio público.

Esto es esencial, al menos en teoría. Veamos: Una vez creado el programa, nacen
los derechos de propiedad intelectual sobre él, que duran toda la vida del autor y 70
años tras su muerte, contados desde el 1 de enero del año siguiente al de la muerte,
y después se extinguen. Hay reglas especiales para los programas anónimos y
seudónimos, los realizados en colaboración y los programas colectivos, los programas
publicados por partes, que no detallaremos aquí (veánse los artículos 26 y 30 LPI).

Sin embargo, el derecho moral dura toda la vida del autor, pero sólo dos de sus
facultades duran después indefinidamente sin límite de tiempo: exigir el reconocimiento
de la autoría y exigir la integridad del programa. El resto de las facultades se extinguen
con la muerte del autor, salvo la divulgación del programa inédito durante su vida, pero
éste es un caso muy extraño y tampoco lo trataremos.

Cuando los derechos de explotación se extinguen por transcurso del plazo, el programa
pasa al dominio público, es decir, puede ser utilizado por cualquiera siempre que
respete la autoría e integridad del software. Trataremos de nuevo el dominio público,
con más fundamento, en el apartado 4.

Formas de explotación del programa. Cesión de
derechos
Explotar un programa es difundirlo en cualquier forma con obtención de beneficio.
Comprende todas las modalidades posibles de ganar utilidad con el programa, pero
las más importantes son las formas de explotación tipificadas por la LPI, que son las
habituales: fijación o grabación, reproducción, transformación y distribución.

Los beneficiarios de la explotación son en principio los autores, a quienes se llama
también titulares originarios de los derechos de propiedad intelectual sobre el
programa, pero es muy normal ceder la explotación a empresarios especializados,
quienes pagan al autor por ello. A estos les llamamos titulares derivados.

Plataforma de Teleformación de IFES Página 205 de 328
No podemos ver aquí en detalle cuánto hay detrás de las reglas sobre explotación de
los programas, recomendamos al lector interesado que acuda a la "Introducción a la
propiedad intelectual" publicada en La Espiral. Nos arreglaremos con una sinopsis:

• Todo el que no sea titular ha de obtener autorización para explotar el
programa, salvo en casos tasados que veremos después. Al titular
corresponde la facultad de explotar el software, con los medios presentes o
futuros, ya que los tipos legales (reproducción, distribución, transformación)
sólo son algunos de los posibles. Cualquier otra modalidad corresponde
siempre y en exclusiva al autor, mientras no la ceda a otra persona. Cada
modalidad de explotación es además independiente una de otra.
• No hemos citado una modalidad de explotación, la comunicación pública,
porque es dudoso que sea apta para el software, como sí lo es para, por
ejemplo, una obra musical. Remitimos al lector al otro artículo de esta
serie para algunos detalles sobre esta jurídicamente compleja forma de
explotación, de todos modos seguramente inaplicable a los programas, pues
no hay forma de acceder a ellas si no es mediante copia.
• Las formas típicas de explotación son, repetimos, la fijación, la reproducción
u obtención de copias, la modificación y la distribución. Nos ocuparán el
resto de este artículo, así que ahora no diremos mucho sobre ellas.

Pero lo dicho no es suficiente. A riesgo de resultar esquemáticos en exceso, aunque
con la seguridad de no dejar cosas importantes sin atender, recapitulemos las
facultades del autor de un programa (se encuentran principalmente en el art. 99 LPI):

1. Derecho exclusivo de autorizar o prohibir la divulgación del programa,
derecho al reconocimiento de la autoría, y demás derechos llamados
morales. Los trataremos con un enfoque diferente en el apartado 4.2.
2. Derecho exclusivo de explotación del programa. Aquí comienzan los
obstáculos para las libertades de los usuarios que expondremos después.
Algunos de ellos no sólo igualan, sino exceden, las facultades de los autores
de los demás tipos de obras. Resulta que la explotación de un programa de
ordenador se entiende que incluye:
1. La reproducción incluso para uso personal, o sea: la copia privada,
que por tanto está expresamente prohibida. Es ilícito copiar
programas sin autorización del autor, autorización normalmente
expresada en una licencia. La prohibición de copia es muy
completa: Cuando la carga, presentación, ejecución, transmisión o
almacenamiento de un programa requiera copiarlo (reproducirlo),
debe disponerse de autorización del autor;
2. La transformación y su reproducción. De todos modos, es muy difícil
transformar un programa si se carece del código fuente, código que el
autor no tiene en modo alguno obligación legal de ceder a nadie;

Página 206 de 328 Introducción a Linux
3. La distribución pública. Pero como incluso la reproducción privada
está prohibida, como acabamos de ver, resulta que también está
prohibida o imposibilitada la distribución privada, aunque la LPI no lo
diga expresamente.
3. Cuando se produce la cesión del derecho de uso, es decir cuando tenemos
a un usuario legítimo (después definiremos este concepto), se entiende que
es una cesión no exclusiva -el autor del programa puede ceder el uso a más
personas, o crear más usuarios legítimos, dar más licencias en suma-; se
entiende que la cesión es intransferible -el usuario no puede dar licencias a
su vez-; y la finalidad de la cesión es satisfacer las necesidades únicamente
del usuario y de nadie más.

Este es el panorama con que se enfrentan las licencias de software libre, que vienen
a subvertir los términos: No limitar al usuario, que explote el programa a su entero
placer, sin restricciones. ¿Permite esto la LPI española? ¿No se encontrará una licencia
de software libre, y especialmente las copyleft que son las más interesantes desde
el punto de vista teórico-jurídico, con el muro infranqueable de algún derecho del
autor que sea inviolable, ni siquiera contando con la propia voluntad del autor? A esto
tratan de responder los apartados siguientes. Pero antes, y para rematar el cuadro,
trataremos brevemente el sistema de garantías de los derechos de autor.

Garantías legales de los derechos del autor del
programa
Registro de programas

Ya sabemos que la autoría se reconoce por la simple creación del programa, no
es preciso inscribirlo en ningún Registro. Pero el hecho es que tener un programa
registrado refuerza muchísimo la prueba de la autoría (art. 101 LPI). Los programas
no se patentan, no pueden patentarse, pero sí pueden registrarse. Por cierto que el
software libre puede registrarse, precisamente como software libre, y esto no quita
nada a la licencia, que sigue siendo de software libre en sus términos literales. El
Registro se limita a dar publicidad de su existencia y a dar fe de su validez. De hecho
es la misma licencia lo que se inscribe.

Pero todo esto es teoría. Los programas se inscriben en la llamada Sección VII del
Registro General de la Propiedad Intelectual, cuya organización y funciones básicas se

Plataforma de Teleformación de IFES Página 207 de 328
exponen en la "Introducción a la propiedad intelectual" . En realidad sólo se inscribe en
él una descripción del programa o la determinación de los elementos que permiten su
completa identificación, que se entiende contenida en las diez primeras y diez últimas
hojas del código fuente (?), o en un resumen de un máximo de 20 folios del manual
de uso (??), "siempre y cuando [dice el Reglamento del Registro] éste reproduzca los
elementos esenciales del programa" (???) (arts. 13 y 14.7 del Reglamento de 1993). Si
el programa es inédito (o sea: si no se ha publicado) entonces debe adjuntarse todo el
código fuente (????). Estas son las reglas. No se dispone de datos acerca del uso que
los programadores hacen del Registro, pero al parecer sí lo usan.

¿Cómo da publicidad el Registro a los programas inscritos? Esto tampoco es lo que
parece: El Registro es ciertamente público, pero de un programa inscrito sólo podemos
consultar los datos personales del autor y sus derechos sobre el programa (esto es:
la licencia si existe). Y sólo nos proporcionarán el título y la fecha de publicación. Por
supuesto, jamás nos permitirán consultar el código fuente ni los manuales. Así lo dice el
art. 32 del Reglamento.

Infracciones de los derechos del autor del programa
Hay que estar de acuerdo con la FSF en que las leyes de copyright presentan
como infracciones lo que, visto desde el punto de vista del usuario del software, son
libertades truncadas que éste podía esperar disfrutar en el uso normal de un programa,
libertades que de hecho se reconocen para otro tipo de obras. Una vez uno compra
un libro (soporte físico de una obra intelectual, literaria tal vez) no necesita licencia
especial para leerlo. ¿Por qué ha de ser así con el uso del software? Volveremos
después sobre esto. Pero nuestro esquema no estaría completo si no se citaran aquí
lo que la LPI llama claramente infracciones del derecho de autor. [Un tratamiento
más extenso del sistema de protección de los derechos de autor se encuentra en la
"Introducción a la propiedad intelectual" ]. Ahora nos centraremos en las infracciones de
los derechos de autor de los programas de ordenador. Se encuentran especificadas en
el art. 102 LPI y son éstas (asústese el lector):

• Poner en circulación una o más copias de un programa, conociendo o
pudiendo presumir su naturaleza ilegítima (no tener licencia para copiarlo).
Está prohibido copiar un programa de ordenador sin licencia. Esta es la regla
y sólo una licencia puede excusar de su cumplimiento. En los apartados 4.3
y 6.2 trataremos este asunto de nuevo.
• Almacenar o simplemente tener con fines comerciales una o más copias
ilegítimas.
• Poner en circulación o tener con fines comerciales instrumentos cuyo
único uso es facilitar la supresión o neutralizar sin autorización cualquier

Página 208 de 328 Introducción a Linux
dispositivo técnico utilizado para proteger un programa de ordenador. ¿Hay
que entender que además de los virus, este tipo de software tampoco es
obra protegida? No, pues la ley sólo se refiere a ponerlo en circulación. Éste
es de todos modos un caso dudoso.

En fin, si no se arregla de otro modo y por las buenas, el autor o titular que considere
violados sus derechos ha de acudir al Juez de 1ª Instancia de la localidad en donde
se haya producido la infracción, al que pedirá que se condene al infractor a devolverle
el beneficio ilícito, a indemnizarle por los perjuicios, a detener la actividad ilegal e
impedirle que pueda reanudarla. Entretanto estudia el litigio y dicta sentencia, el juez
puede adoptar medidas cautelares que llegan a ser muy gravosas para el presunto
infractor, como el secuestro de los equipos y materiales de reproducción y copia, etc.
No podemos entrar en detalles, además muy técnicos y farragosos, fuera del objetivo
de esta "Introducción" . Para las infracciones de las licencias de software libre, véase el
apartado 4.7.

Las libertades de los usuarios
Después del examen general del apartado anterior, toca ahora cambiar el enfoque para
tratar un tipo muy especial de fórmula de cesión de derechos de explotación todavía
poco conocida en los medios profesionales jurídicos: la licencia de software libre. Para
esto es necesario partir de las libertades del usuario del programa, no de los derechos
de autor. Éstos se encuentran protegidos por la LPI, como hemos visto en el apartado
1. Las libertades de los usuarios por contra tienen sus garantías (en la Constitución
y en otras leyes que se citarán) muy difuminadas y dispersas, no en un único cuerpo
legal sistemático.

Para empezar despejaremos algunos problemas de nomenclatura. Reservaremos el
término software libre ( "free software" ), que abreviaremos sl, para los programas que
se ajustan a la especificación de la Free Software Foundation, que es la más rigurosa,
pero puede utilizarse también como denominación genérica del conjunto de licencias
que liberan las facultades típicas del copyright básicas para la libre utilización del
software, aunque no se ajusten estrictamente a la definición de la FSF y siempre que
del contexto se deduzca a qué nos referimos (en los apartados 3.1 y 4.1 se encuentran
las definiciones). Sin embargo, no nos atendremos necesariamente al criterio de la
compatibilidad de las licencias con la GPL, no porque este punto de vista no tenga
importancia, en realidad es tal vez el más importante, sino porque la propia FSF
dispone de documentación apropiada -véanse las referencias al final en el apéndice
C- y porque aquí deseamos examinar solamente la compatibilidad de las licencias de
software libre con el Derecho español.

Plataforma de Teleformación de IFES Página 209 de 328
Huelga decir que el objetivo es el de saber a qué atenernos en España cuando
surjan conflictos de intereses relacionados con el software libre. Y es que la FSF
opera obviamente con categorías jurídicas anglosajonas, sutilmente diferentes de la
europeas continentales en lo sustancial, y decididamente distintas en los formalismos.
Tenemos que asegurarnos de que hablamos consistentemente, pues las palabras son
importantes. Para empezar, los hispanohablantes no tenemos ningún problema en
distinguir algo que es gratis de algo que es libre, pequeñez que a los angloparlantes les
ha costado mucha tinta.

El primer objetivo es entonces disponer de un vocabulario apropiado, no
obligatoriamente castellanizado, por exigencias prácticas obvias y que sirva para
entendernos en nuestras discusiones.

Pero hay un segundo objetivo: Comprender lo mejor posible las licencias de software,
que es el instrumento utilizado por el movimiento del sl en general, y por el copyleft
en particular, para articular jurídicamente un fenómeno que sobrepasa el ámbito del
software, alcanza a la documentación técnica y científica y comienza a sustentar
la distribución de otro tipo de bienes y productos (véase el apartado 5). No es
que software libre y copyleft hayan surgido de las licencias, sino que éstas han
"instrumentado" tales movimientos, se han servido de ellas para recuperar las
libertades académicas, científicas y de los usuarios. De hecho, parece que el software
libre es incluso un modelo de negocio, pero también es un fenómeno social, un método
de investigación y de docencia.

Orbitando las licencias de software se encuentran muchos asuntos que no podemos
tratar, pero tan importantes que se citan a continuación algunos:

• Conflictos graves, comerciales o no, entre distribuidores de software, p. ej. el
pleito ATT-Berkeley de 1992, o la cuestión GNU v. KDE de 1997.
• Aparición de sistemas operativos libres, con representantes como la
rama BSD o GNU/Linux, en competencia insospechada con los grandes
fabricantes de software cerrado (expresión que usaremos en lugar de
software propietario, más adelante se explica por qué).
• Alianzas expresas o tácitas entre fabricantes de software libre y hardware,
en competencia también inesperada con los chips dominantes. Es el caso
del acuerdo Apple-Universidad Carnegie Mellon para el MacOS X, o el
impulso dado por el software libre a los chips Alpha, SPARC...
• Nuevos modelos de negocio, como el de Cygnus con el compilador GCC,
acuerdos de Red Hat con Penguin Computer y con la misma Cygnus
Solutions (noviembre de 1999).

Página 210 de 328 Introducción a Linux
• La aparición de un instrumento incomparable de colaboración profesional y
científica, y de fórmulas como la FDL para la transmisión de documentación
técnica. Véase sobre esto el apartado 5.
• Iniciativas legislativas, como la reciente sobre uso de software libre en la
Administración pública del Perú, 9 de abril 2002.

Todos estos son asuntos del mayor interés, en el apéndice C se encontrarán algunas
referencias. También se trata de cuestiones complejas, pero alejadas en cierto modo
de nuestro tema, mucho más restringido: las licencias de software según el Derecho
español, y especialmente las de software libre.

Comenzaremos con unas cuantas frases fuertes y un esquema lo más breve posible,
para comodidad del lector, de lo que ya se ha ido apuntando con otro enfoque en el
apartado 1, es decir: Qué exige la LPI española a las licencias de software libre para
considerarlas viables o atendibles por los jueces (éstos como último recurso, claro
está).

Premisas del software libre
El sistema jurídico español, como todos los europeos y anglosajones de corte
"constitucional" , se basa en la libertad, en el sentido de que uno puede hacer lo que
guste mientras no esté prohibido. Esta es una afirmación muy general, pero nos sirve
para enfocar la cuestión tal y como interesa, o sea: desde el punto de vista de las
libertades del usuario, y no el de los derechos de autor. Este último, así lo esperamos,
ha quedado expuesto ya en el apartado 1. Para más detalles, véase la "Introducción a
la propiedad intelectual" publicada en La Espiral.

En nuestros modernos sistemas legales se entiende que la libertad tiene límites, no se
garantiza la libertad absoluta. Un género esencial de esos límites a la libertad son los
derechos y libertades de los demás. Así que nuestra primera afirmación queda "uno
puede hacer lo que guste mientras no dañe los derechos y libertades de los demás" .
Por supuesto, los derechos y libertades de los demás tampoco son absolutos.

Las libertades del usuario de software
Algunos derechos y libertades se consideran fundamentales, se les garantiza una
protección reforzada sobre los demás derechos y libertades ordinarias. De entre ellos,
las licencias de software se encuentran con los siguientes, que vamos a clasificar en
tres grupos:

Plataforma de Teleformación de IFES Página 211 de 328
1) En el primer grupo tenemos los fundamentos de nuestra sistema político. No se trata
de un auténtico reconocimiento de libertades y derechos fundamentales, sino de su
basamento:

• La libertad es el fundamento de todo lo demás. Se ha dicho muchas veces,
y no se trata sólo de una dificultad idiomática del inglés, que el concepto
software libre trata de la libertad, no del precio. El concepto de libertad es
calificado por nuestra Constitución, nada menos que en el primer párrafo
de su primer artículo, como uno de los valores superiores del ordenamiento
jurídico español, junto con la justicia, la igualdad y el pluralismo político.
• Es cometido de los poderes públicos promover las condiciones para que
la libertad y la igualdad de los individuos y grupos sean reales y efectivas;
remover los obstáculos que impiden o dificultan su plenitud; y facilitar la
participación de todos en la vida cultural (art. 9.2 CE).
• El libre desarrollo de la personalidad es uno de los fundamentos de nuestro
orden político (art. 10.1 CE).

2) El segundo grupo es el más importante a efectos prácticos. Se trata de las
libertades y derechos fundamentales que directa y necesariamente los jueces han de
proteger. Los más importantes son los tres últimos de los que se citan a continuación,
directamente esgrimibles ante argumentos del tipo "el software libre atenta contra
la libre expresión, embota la creatividad y vulnera el copyright" , etc. No es así, sino
justamente al contrario. En términos jurídicos, el usuario de cualquier software debería
poder argüir conforme a los siguientes ítems, que incluso tienen protección de amparo
garantizada hasta el recurso ante el Tribunal Constitucional, y aplicables según las
circunstancias. Son los siguientes:

• Derecho a la igualdad y no discriminación por condición social (art. 14 CE).
• El uso de la informática será limitado por la ley para garantizar el pleno
ejercicio de los derechos de los ciudadanos (art. 18.4 CE). Este artículo
se incluyó en la Constitución con una finalidad relativamente clara: evitar
que mediante la informática se alcanzara un control excesivo sobre las
personas, y con la misma finalidad se promulgó la Ley de protección de
datos personales de 1998. Pero cabe una segunda interpretación interesada,
y un poco traida por los pelos, pero no irrazonable: Las limitaciones al
uso del software, especialmente algunas cláusulas abusivas (véase el
apartado 6), dificultan de tal modo el pleno ejercicio de los derechos de los
consumidores y ciudadanos en general que deben quedar restringidas por la
ley [Me complace hacer constar aquí que estando ya estas líneas escritas,
encuentro este mismo argumento como motor del proyecto (proposición)
de ley sobre uso del software libre en la Administración pública remitido
al Congreso peruano en abril de 2002 por los congresistas VILLANUEVA
NÚÑEZ y RODRICH ACKERMAN, así como en la admirable carta que

Página 212 de 328 Introducción a Linux
el primero dirigió al gerente de Microsoft del Perú. Los textos se pueden
encontrar en http://www.gnu.org.pe/rescon.html]
• Derecho a la libre expresión de pensamientos e ideas (art. 20.1.a CE).
• Derecho a la producción y creación literaria, artística, científica y técnica (art.
20.1.b CE).
• Derecho a la educación y a la libertad de enseñanza. Aunque la libertad
académica, y una de sus componentes, la libertad de estudio, no figuran
expresamente en el art. 27 CE, puede entenderse que se encuentran
implícitamente reconocidas por la Constitución, pues son necesarias y
congruentes con el modelo docente general que pretende garantizar.

3) Finalmente tenemos los principios rectores de la política social y económica. No
son derechos y libertades fundamentales propiamente dichos, sino directrices que,
aplicadas a éstos, han de inspirar su efectividad y garantía. Se trata concretamente del
mandato que la Constitución contiene en el art. 44, dirigido a los poderes públicos, de
promover y tutelar el acceso a la cultura, a la que todos tenemos derecho, así como a
la ciencia y la investigación científica y técnica en beneficio del interés general.

El derecho de autor no es un derecho fundamental
Por contra, y desde el punto de vista del autor del programa, no puede decirse que
haya derechos fundamentales implicados. No es pensable una lesión a los derechos
de propiedad intelectual que afecte también a un derecho fundamental de los que
acabamos de citar, ni a ningún otro, con una sola excepción, por lo demás bastante
rara en la práctica: el atentado contra el honor, la reputación, la imagen del autor,
derivado de una infracción de los derechos de propiedad intelectual (véase el art. 18.1
CE). Este es un caso poco usual y no vamos a tratarlo, salvo algunos apuntes en 4.5.2.

En realidad, sí tiene que ver la propiedad intelectual con un derecho fundamental, pero
de los que la Constitución considera de segunda categoría, el derecho de propiedad
(art. 33 CE). No puede negarse que tanto el fenómeno del software libre, como más
acentuadamente el copyleft, parecen superficialmente ir directos contra el derecho
de propiedad (intelectual). Nada más falso. El software libre se basa en el derecho de
autor para, sobre él, modular sus facultades intrínsecas a las necesidades prácticas de
las libertades que hemos citado antes, sin machacarlo en modo alguno. Simplemente el
software libre tiene copyright.

Asímismo, una licencia copyleft, que impide la redistribución de software con
restricciones añadidas a las de la distribución originaria, no atenta contra el derecho
de autor del programa originario, pero esto no es obvio y en lo que sigue tratará de
demostrarse. Tampoco atenta contra los derechos del autor del programa derivado, que
modificó el software porque la licencia copyleft se lo permitía, si no no hubiera podido

Plataforma de Teleformación de IFES Página 213 de 328
hacerlo; y se ve obligado a redistribuirlo con licencia copyleft por el mismo motivo, es
decir: por haber aceptado previamente una licencia copyleft, una decisión voluntaria y
libre.

Naturalmente que cuando uno acepta una licencia (copyleft o no) ve limitadas algunas
de sus libertades y derechos, se dice que asume obligaciones, deberes y sujeciones,
lo mismo que cuando se casa o cuando firma un préstamo hipotecario. Simplemente
acepta de forma libre los términos que se le ofrecen. En este sentido puede decirse que
la GNU-GPL es un tratado de desarme (WAYNER), porque da total libertad a todos,
salvo a quien quiere apropiarse -para sí y con exclusión de los demás- de la libertad
que recibió, la que le permitió y permite explotar el programa.

El derecho de propiedad, decimos en España, queda delimitado por su función social
de acuerdo con la ley (art. 33 CE). No puede haber otra finalidad del Derecho de
propiedad intelectual que garantizar al autor la percepción de los beneficios de su
explotación, lo que es perfectamente acorde con los postulados del software libre.
Pero tampoco hay función social de la propiedad del software que no sea su libre uso y
explotación por quien sepa hacerlo.

No debe olvidarse que el autor tiene derecho al honor y a la propia imagen, ya se ha
dicho; pero también él mismo está manifestando, al escribir código, su libertad de
expresión de pensamientos e ideas y su derecho a la producción científica y técnica.

En resumen, las licencias de software son expresión de un derecho individual ordinario:
el derecho de autor. Aunque la autoría de una obra tiene mucho que ver con algunos
derechos fundamentales, es muy dudoso que, fuera de los aspectos relacionados con
la reputación del autor, los demás sean considerados por un juez como expresión de
sus derechos fundamentales. Por contra, los usuarios sí pueden esgrimir sus derechos
y libertades fundamentales frente a ciertos atentados contra el software libre (véase el
apartado 4.7).

Las normas imperativas de la LPI
Los límites de las libertades de la gente sobre los programas de ordenador, y los
derechos sobre ellos de sus autores o titulares, se encuentran principalmente en
la LPI, aunque no solamente. Debe tenerse en cuenta también toda la legislación
existente sobre protección de los consumidores y usuarios, competencia desleal,
condiciones generales de la contratación y tantos otros asuntos. No se hará aquí así,
nos limitaremos al campo de los derechos de autor, o de propiedad intelectual. Más
adelante añadiremos de todos modos algunas notas sobre estas cuestiones.

Página 214 de 328 Introducción a Linux
La LPI está pensada sobre todo para proteger a los autores, es decir, sus derechos
ordinarios sobre la obra; no para proteger las libertades de los demás (usuarios, otros
programadores), aunque no falten artículos que garantizan algunas, muy escasas e
indefensas, como vamos a ver.

Efectivamente, ya se habrá advertido que hay reglas claramente limitativas a los
usuarios o destinatarios de los programas o a quienes los explotan; y otras por contra
limitan a los autores. Esto es lo que puede esperarse de un sistema jurídico que no
admite libertades o derechos absolutos. Pero lo importante ahora está un paso más
allá: Hay reglas de la LPI que son solamente indicativas, pueden no seguirse sin
cometer ninguna ilegalidad (se llaman reglas "dispositivas" ); y también hay reglas que
necesariamente han de seguirse, a riesgo de que después el sistema no te proteja si
las infringes, se llaman reglas "imperativas" .

Uno no puede saltarse las reglas imperativas de la LPI impunemente. ¿Cómo se
sancionan sus infracciones? Depende del grado de la infracción, pero para resumir
diremos que va desde tener la falta por inexistente -como una cláusula inválida de
una licencia, simplemente no se aplica- hasta la prisión -desde luego, sólo en casos
muy graves y poco frecuentes. Ahora lo que interesa es recalcar que si una licencia
de software contiene cláusulas contrarias a las normas imperativas de la LPI, tales
claúsulas no valen, incluso si el perjudicado hubiera dado su acuerdo para aceptar la
licencia (p. ej., porque desconocía que tales claúsulas eran ilegales).

Beneficios irrenunciables de los autores de software
Aunque una licencia de software libre no implica renuncia alguna, al menos en sentido
técnico, conviene aclarar algunas cuestiones que al parecer sus críticos mantienen en
reserva. Para empezar, en España es en general posible la exclusión voluntaria de la
ley aplicable, lo mismo que la renuncia de derechos reconocidos en la ley, a condición
de que no se contraríe el interés o el orden público ni se perjudique a terceros (art. 6.2
CC). Lo que no se permite es obligar a nadie a renunciar a sus derechos irrenunciables,
y justamente para prevenir esta posibilidad se establecen las reglas que se citan a
continuación, pensadas para proteger al autor de contratos leoninos con empresarios
sin escrúpulos, no para proteger a distribuidores de software dominantes frente al
desorganizado público de usuarios, en su mayoría desconocedores de las posibilidades
inauditas de sus máquinas.

Por lo tanto, interesa saber cuáles son esas normas imperativas. Relacionarlas
todas no es fácil ni por suerte tampoco muy útil. Basta conocer las más importantes.
Hay de todo: beneficios renunciables sólo por acuerdo de las partes, ventajas

Plataforma de Teleformación de IFES Página 215 de 328
irrenunciables... Nos quedaremos únicamente con las reglas imperativas relevantes
sobre los programas de ordenador:

1) Los derechos morales son irrenunciables y no transmisibles (artículo 14 LPI).
Veremos más adelante que las licencias de software libre no afectan a esta limitación,
véase el apartado 4.2.

2) La cesión de derechos de autor no puede alcanzar nunca a las modalidades de
utilización o medios de explotación o difusión inexistentes o desconocidos al tiempo de
la cesión (artículo 43.5 LPI). En general, para la cesión de derechos y el efecto de esta
regla sobre el software libre véase el apartado 4.2.

3) También son irrenunciables los beneficios que la LPI otorga a los autores en los
actos de transmisión de sus derechos, o contratos de cesión de derechos de autor.
Así lo dice el artículo 55 de la Ley. Esto tiene mucha más importancia, y de hecho
algunos de los siguientes ítems nos dará algún trabajo después. Pero en general
las licencias de software libre no se ven afectadas por estas reglas sobre "derechos
irrenunciables" , aunque parezca paradójico. Piénsese que al fin y al cabo la GPL (p.
ej.) no supone renuncia alguna para el autor, sino la cesión voluntaria de sus derechos
transmisibles. Todo esto se tratará después, ahora nos limitaremos a enumerar, sólo
aproximativamente, los beneficios irrenunciables de los autores al ceder sus derechos:

• Es nula la cesión de derechos de explotación respecto del conjunto de obras
que pueda el autor crear en el futuro (art. 43.3).
• Es obligatorio documentar las cesiones (art. 45).
• Durante 10 años desde la cesión de la explotación, el autor puede exigir la
revisión de la cantidad con que se le ha remunerado si considera (y logra
probar) que es inequitativa o desproporcionada al beneficio obtenido por el
cesionario o explotador del programa (art. 47).
• Supongamos que Juan cede sus derechos a Pedro mediante la licencia L-1,
y Pedro los cede a su vez a otro mediante L-2. Si L-2 no respeta los términos
de L-1, esta primera licencia puede quedar sin efecto y dejar de amparar a
Pedro, a requerimiento de Juan (art. 68.1.d LPI).
• Las cesiones no exclusivas son intransmisibles (art 50.1).
• En general, las obligaciones de los editores suponen en muchos casos -en el
polo opuesto- derechos irrenunciables del autor del programa.

Garantías a favor de los usuarios
Por otro lado están las normas imperativas de la LPI que establecen garantías a favor
de los usuarios, insoslayables para el autor. A diferencia de antes, algunas garantías no

Página 216 de 328 Introducción a Linux
desaparecen ni siquiera mediante pacto en contra, pero otras sí (se encuentran en el
art. 100 LPI). Las primeras son éstas:

• El usuario legítimo -véase más adelante su definición- siempre ha de poder
hacer una copia de seguridad, si es necesaria (?) para la utilización del
programa.
• El usuario legítimo siempre puede observar, estudiar y verificar el
funcionamiento del programa para determinar las ideas y principios implícitos
[algoritmo] en cualquier elemento, mientras lo haga durante cualquiera
de las operaciones de carga, visualización, ejecución, transmisión o
almacenamiento del programa que tiene derecho a hacer.

Las siguientes son facultades del usuario legítimo, pero son renunciables mediante
pacto contrario entre el usuario y el autor:

• Puede reproducir o transformar un programa, incluída la corrección de
errores, si es necesario para su utilización legítima y conforme con la
finalidad. Pero cabe pacto en contra, que es lo normal, pues mal pueden
corregirse los errores sin tener a mano el código fuente.
• El autor no puede oponerse a que el titular de derechos de explotación
realice o autorice versiones sucesivas y programas derivados. El lector
ha leído bien: la LPI garantiza al titular de derechos de explotación
(aparentemente no al mero usuario) de un programa del que no sea autor
la posibilidad de modificarlo o de que otros lo hagan con su autorización.
Este apartado supone un aparente obstáculo a algunos requerimientos
del software libre, lo despejaremos después. Aunque no parece que un
usuario realice con el mero uso una explotación del programa, la LPI no
parece excluirlo, tal vez a causa de una redacción defectuosa del precepto
o por falta de sistemática. Nuestra conclusión provisional podría ser: La
LPI garantiza a cualquier usuario o explotador legítimos hacer este tipo de
transformaciones en el código. Pero desde luego, necesitará para ello el
código fuente. Y la interpretación estándar no es ésa, sino la siguiente: Esta
regla se refiere sólo a los programas realizados por encargo, o sólo a los
titulares no autores de derechos de explotación distintos del mero uso.
• Tampoco puede el autor de un programa oponerse a su reproducción y
transformación si se dan todas las condiciones siguientes:
1. Que sea indispensable para obtener la información necesaria para
la interoperabilidad con otros programas de un programa creado de
forma independiente;
2. Que la reproducción o transformación la haga el usuario legítimo o
persona facultada para utilizar una copia del programa, o persona
autorizada en su nombre;

Plataforma de Teleformación de IFES Página 217 de 328
3. Que la información necesaria para conseguir la interoperabilidad no
haya sido puesta a disposición, fácil y rápidamente, de las personas
citadas antes;
4. Que la reproducción o transformación se limiten a las partes del
programa original necesarias para la interoperabilidad;
5. Que el resultado se utilice sólo para la interoperabilidad del programa
creado de forma independiente; sólo se comunique a terceros si es
necesario para la interoperabilidad; y no se utilice para el desarrollo,
producción y comercialización de un programa sustancialmente
distinto en su expresión o para cualquier otro acto que infrinja los
derechos de autor.

Estas reglas sobre la interoperabilidad (excepción o límite a la prohibición de reproducir
y transformar un programa sin autorización del autor) no pueden interpretarse de
modo que se perjudique injustificadamente los legítimos intereses del titular de los
derechos de autor, o se contraríe la explotación normal del programa. Está claro
además que esta garantía para el usuario, muy limitada y borrosa, no es efectiva si no
se proporciona el código fuente, al menos de las partes del programa necesarias para
la interoperabilidad.

Una interpretación restrictiva acerca de los derechos sobre los interfaces es
la siguiente: La especificación del interfaz está protegida, pero no lo están los
protocolos en que se base y que sean necesarios para escribir código que cumpla las
especificaciones. Tales protocolos no pueden ser obra protegida.

Hasta aquí llega la protección que garantiza la LPI a los usuarios de programas de
ordenador. No olvidemos que esta ley, como todas las de su clase en los demás
países, y lo mismo en los tratados internacionales, está pensada para proteger los
derechos del autor. De un autor preconcebido, idealizado en el literato, en el pintor,
indefensos frente a los editores, los galeristas. Un autor de aspecto distinto al del titular
de derechos de explotación de un programa de ordenador, p. ej. un gran fabricante de
software cerrado. Sea como sea, la LPI reconoce y protege sobre todo los derechos del
autor de un programa, no los del usuario del programa.

Ahora estamos listos para acometer nuestra tercera tarea: Seguir aclarando la
terminología, dar algunas definiciones más, desentrañar el contenido estándar de
una licencia de software y, digamos en general, perder un poco el respeto a las más
abtrusas discusiones jurídicas e incluso poder participar en ellas. Para esto, disponer
de un lenguaje preciso es esencial.

Página 218 de 328 Introducción a Linux
Cuestiones generales y terminológicas sobre las
licencias de software
Inevitablemente y antes de nada, hemos de ponernos de acuerdo sobre las
definiciones, sobre el significado de los conceptos que vamos a emplear, que
confrontaremos con los de la ley española para obtener conclusiones congruentes.
Añadiremos más definiciones, que no necesitaremos hasta entonces, en el apartado
4.1.

Qué es una licencia de software
Es un tipo de contrato de software, de software ya creado. Recae sobre los derechos
de propiedad intelectual. En este artículo no se tratan los contratos de software
por crear, como el contrato de desarrollo de programas por encargo, servicios de
adaptación de software; ni contratos como "escrow" , etc. Pero ojo: sí trata de los
derechos de propiedad intelectual originados por motivo de esos contratos, o de
cualquier otro por el que se genere software original.

Externamente una licencia puede adoptar muchas formas, desde un documento en
papel hasta un archivo electrónico de texto, parte de un ejecutable, etc. Puede ser un
acto jurídico independiente o puede integrarse documentalmente en el seno de otro
contrato, aunque la LPI exige documentos independientes. La licencia puede recaer
sobre software también muy variado, aunque la LPI hable sólo de programas. En
esencia es una oferta de acuerdo realizada por el autor o titular del programa, que si es
aceptada por un usuario o explotador del software, pasa a convertirse en contrato entre
las partes. Aquí hay varios conceptos involucrados, necesitamos desmenuzarlos.

Qué es una licencia
En realidad lo que llamamos licencia pasa por varios estadios: Primero es una
declaración unilateral del autor del programa en la que expresa las condiciones en que
se puede acceder a él y explotarlo. Como tal declaración prácticamente no tiene ningún
valor legal, sólo lo adquiere (se dice que pasa a ser ley entre las partes) cuando otra
persona acepta sus términos. Como es lógico, cuando la licencia se rechaza, o no se
acepta, simplemente no llega a tener efecto.

Es preciso recalcarlo: Aunque la licencia es unilateral, pues la origina el autor
voluntariamente y en los términos que le interesen, está pensada para ser aceptada
o rechazada por otros, normalmente quienes van a usar el programa o van a

Plataforma de Teleformación de IFES Página 219 de 328
explotarlo de algún modo. Si la contraparte rechaza la licencia no hay más que hablar:
probablemente el autor del programa no cederá su software, p. ej. no permitiendo
su instalación. Pero si la licencia es aceptada, entonces deja de ser una declaración
unilateral y se convierte en un negocio bilateral, entre licenciante (el autor o el titular de
los derechos de autor) y licenciatario (quien va a usar o explotar el software).

A este negocio puede llamársele "licencia" o "licencia contractual" o también "acuerdo
de licencia" . Su denominación técnica precisa es, para la mayoría de los casos, la de
"contrato de cesión de derechos de uso y/o explotación del programa de ordenador" .

Es normal que el documento de licencia contenga otras cuestiones, como garantía,
servicios de soporte y postventa, que no tienen nada que ver con la propiedad
intelectual ni con el software libre, y no los tratamos en este artículo. Tal vez haya
ocasión en versiones sucesivas de tratar alguno de estos asuntos.

Qué es "software"
La LPI no habla nunca de software desde luego, sino de "programas de ordenador" ,
que define (art. 96) como secuencia de instrucciones o indicaciones destinadas a ser
utilizadas, directa o indirectamente, en un sistema informático para realizar una función
o una tarea o para obtener un resultado determinado, cualquiera que sea su forma de
expresión o fijación.

No es una bella definición, ni tampoco un modelo de precisión. Dice la LPI que gozan
de la misma protección que los programas tanto la documentación preparatoria como
la documentación técnica y los manuales de uso. Ya sabemos además que se protegen
las versiones sucesivas y los programas derivados, pero no los creados con el fin de
ocasionar efectos nocivos a un sistema informático. Tampoco están protegidas las
ideas y principios en que se base cualquier elemento de un programa, incluidos los que
sirven de fundamento a los interfaces. Esta exclusión parece referirse a los algoritmos
y otros elementos, que no necesitamos determinar completamente para saber a qué
nos referimos con el término legal genérico "programa de ordenador" . En la práctica,
el problema de la definición se plantea ante casos como los sitemas expertos, los
interfaces, etc.

Los programas no pueden patentarse, pero sí formar parte de un objeto patentado.
Entonces, la protección de la Ley de Patentes también se activa a favor del programa,
aunque sea indirectamente. [Nota sobre patentes: Recuérdese lo dicho en el apartado
1, en Derecho español son patentables las invenciones nuevas de aplicación industrial,
pero los programas de ordenador no se consideran invenciones, y por lo tanto son no
patentables]. Asímismo un programa puede incorporar una marca comercial, sea su

Página 220 de 328 Introducción a Linux
mismo título u otra marca. La marca comercial del programa no es objeto de protección
por la LPI pero sí por la Ley de Marcas, lo mismo que antes.

Por supuesto podemos considerar incluidos en la definición legal de programa todo
aquello que técnicamente lo es: ejecutables de cualquier tipo, módulos, controladores,
aplicaciones de usuario y sistemas operativos, suites, paquetes y distribuciones, con
toda la documentación. La GPL concretamente se aplica a programas y a "cualquier
otro tipo de trabajo" . No olvidemos que la LPI exige que la secuencia de instrucciones
sea original, obra del intelecto, y se destine a un sistema informático. La Directiva
1991/250, traspuesta a la ley española en 1993, incluye los programas "incorporados al
hardware" . En España, por otra parte, la topografía de semiconductores está protegida
en una ley propia de 1988; véase el art. 104 LPI.

Son programas protegidos tanto los originales como los derivados, las versiones
sucesivas y las originadas en bifurcaciones. Tenemos obras independientes, como un
kernel; y obras compuestas, como paquetes y distribuciones. Tenemos obras originales
como el primer núcleo Linux, y obras derivadas como un kernel 2.2.x.

Sin embargo, puede que no encontremos software en dominio público por expiración
del plazo de duración de los derechos, pues no han transcurrido años suficientes
desde la aparición de los primeros programas a mediados del siglo XX. Es cierto que,
además, este software sólo tiene utilidad histórica.

¿Puede un autor poner su software en dominio público voluntariamente? No en
Derecho español, para el cual una obra está en dominio público sólo cuando se
extinguen todos los derechos de explotación por transcurso del plazo de duración. No
es exactamente lo mismo que carecer de copyright, como lo definen la FSF y la OSI
en su digamos "plataforma jurídica anglosajona" . Volveremos sobre todo esto más
adelante en 4.1.

Quién es el autor del software
Aquí no vamos a extendernos, porque esto ha debido quedar claro desde el apartado
1. Recordemos los conceptos de autor asalariado, y de obra colectiva frente a obra
en colaboración. Un programa como Windows XP es obra colectiva, creada por
asalariados de Microsoft, que asume la autoría del programa y sin que ninguno
de los desarrolladores puedan reclamar la explotación separada sobre su parte.
La distribución Debian GNU/Linux es una obra en colaboración en cuanto a los
componentes individuales, pero la distribución en sí es una obra colectiva, compuesta,
cuyo titular es una asociación de desarrolladores voluntarios que se sirve de la
organización Software In The Public Interest, Inc. para dotarse de personalidad jurídica,

Plataforma de Teleformación de IFES Página 221 de 328
titular de los derechos de autor de la distribución en sus diferentes versiones [Esta
explicación es conforme con el Derecho español, y en realidad vale para todo el
mundo. Se incluye aquí a título de ejemplo, esperemos que apropiado].

Una observación común en la literatura jurídica acerca de lo ventajosa que resulta
la protección del programa no libre para una empresa de software por las reglas del
derecho de autor, se basa en que normalmente los autores de los programas son
anónimos y quien se beneficia de los derechos de autor (la empresa) no es autor.
Pero lo cierto es que, primero, la observación también rige para los autores de obras
literarias salvo excepciones; segundo, la observación no se aplica al software libre,
cuyos autores no son casi nunca anónimos; y, tercero, la mayor parte de los derechos
de explotación -y por tanto su protección legal- queda cedida a la comunidad de
usuarios y por tanto las vías para obtener beneficio no derivan ya de la exclusividad.

Quién es "usuario legítimo" del software
Este es un concepto mucho más importante, aunque la LPI no lo define. Podemos
suponer, en un examen superficial de las premisas del apartado 2.1, o simplemente
deduciéndolo de nuestra experiencia cotidiana, que usuario legítimo es quien ha
comprado el software, y en efecto así es cuando la compra del soporte incorpora -
mediante la licencia- la autorización para usarlo.

Pero hablando estrictamente, no existe la "compraventa de software" . Lo que uno
compra en la tienda (tal vez un CDROM con un juego o una distribución GNU)
no es el programa, sino sólo su soporte más una oferta de licencia para uso y
explotación -licencia que después habrá de aceptar. Y esto es todo (y nada menos,
dirán el vendedor, el distribuidor, el titular de derechos de explotación y/o el autor del
programa). Esta explicación suele encontrarse en las licencias de software propietario,
que en este artículo y por las razones que se explicarán después, preferimos
denominar "software cerrado" . No es una explicación realmente necesaria, pues todo
software nace con copyright.

Pero también puede adquirirse software por ftp anónimo gratuitamente con licencia
copyleft, y por supuesto quien lo obtiene así puede usarlo muy legítimamente;
simplemente la LPI no estaba pensando en esta circunstancia. Cuando se aprobó la
LPI en 1987, incluso cuando se aprobó en Bruselas en 1991 la directiva que obligó a
hacer algunas modificaciones en la ley española en 1993, el software libre no era un
movimiento lo suficientemente relevante en Europa y menos en España.

Lo relevante para nosotros ahora es otra cosa: No hay otro tipo de obras para las que
la LPI distinga entre usuarios legítimos e ilegítimos, sólo hace la distinción para los

Página 222 de 328 Introducción a Linux
programas de ordenador y para las bases de datos. No se habla nunca de usuario
ilegítimo de un libro, o espectador ilegítimo de un cuadro. Esto parece absurdo, y puede
que lo sea en cierto sentido que vamos a explicar. Ante todo, no estamos hablando de
quien roba un CD que contiene un programa, o roba un libro, o entra en un museo sin
pagar. Estamos hablando de quien usa un programa que instaló desde un CD prestado
por un amigo, de quien ha leído un libro prestado por un amigo, de quien contempla en
casa un cuadro prestado por un amigo. Es evidente que en los dos últimos casos no
hablamos de "lector ilegítimo" ni de "espectador ilegítimo" , pero para la LPI el primer
fulano, el del programa de ordenador prestado, ése es un usuario ilegítimo. Esta es una
extraña asimetría. Nos dará que hablar después.

Quién es el responsable ante el usuario
El autor tiene siempre algunas obligaciones frente a quienes explotan su obra. Ante
todo responde de la autoría y de la originalidad de la obra. Responde también de su
propia capacidad jurídica para licenciar el programa. El supuesto que más problemas
puede dar es el de un redistribuidor de software que él cree libre y que en realidad no lo
es, por error, a sabiendas o mediante engaño (y esto tendrá que probarlo).

Ocurre que las exigencias jurídicas del software libre (sl) pueden confundir: Redistribuir
software libre del que no se es autor no traslada automáticamenten al redistribuidor
las responsabilidades del autor. Para empezar, la habitual cláusula de ausencia de
garantía deja claras ya algunas cosas. En general, si el licenciante del programa
original (normalmente el autor pero no necesariamente, p. ej. en el caso de los
asalariados) y el licenciatario (quien tal vez lo va a modificar y redistribuir) acuerdan
válidamente los términos de la licencia, está claro que de la autoría de los programas
responde cada cual: del original el autor o licenciante; y del derivado el licenciatario,
pero por motivo de una segunda licencia, en la que es él ahora el licenciante de
un tercero licenciatario, y así sucesivamente. Más en general no es posible, ni
seguramente útil, tratar los diferentes supuestos de responsabilidad (patrimonial o no,
ya sea civil, penal o administrativa). Es un asunto demasiado amplio, árido y complejo.
Y a efectos prácticos no muy útil. Tal vez sea éste, como otros del presente artículo,
objeto apropiado para una apartado FAQ en versiones sucesivas. De todos modos, uno
debería ser capaz de deducir la respuesta a su duda a partir de cuanto contienen la
presente "Introducción" (ésa es su finalidad).

Contenido deseable de una licencia de software
Lo que sigue pretende indicar al lector, que probablemente no será ducho en
cuestiones jurídicas, en qué debería fijarse al leer una licencia para entenderla

Plataforma de Teleformación de IFES Página 223 de 328
correctamente y sin mucho trabajo. El método no va a ser la presentación de un
prototipo de licencia abstracta, sino el examen de la mejor licencia concreta que hemos
podido encontrar, ya sirva a un programador tal cual, o como modelo para obtener otra
a su gusto, o tal vez de anticristo para estigmatizarla a placer. Se trata de la GPL.

La GNU-GPL es una pieza jurídica de gran valor. Entre otras utilidades, contiene
la estructura completa del sistema de cesión de derechos de autor sin atentados al
copyright y respetuosa con los derechos y libertades de los usuarios. Es superior
técnicamente a los mejores ejemplos de licencias de software no libre, es más
completa que las licencias breves tipo BSD, y mucho más clara y fácil de leer que
cualquier otra de software no libre que conozcamos.

Para empezar, la GNU-GPL carece de traducciones oficiales. Pero esto no es ningún
problema práctico, primero porque hay traducciones oficiosas; segundo, porque el
inglés original es fácilmente traducible a términos jurídicos de cualquier país; tercero,
porque el texto evita deliberadamente los tecnicismos y expresiones o rodeos oscuros.
Sin ser coloquial, que casi lo es, pasa por ser un modelo de redacción jurídica.

Estas cualidades no se deben sólo a su punto de vista distinto al de la propiedad
intelectual. Por cierto, la GPL no se opone a la propiedad intelectual, pero su enfoque
no es desde luego el de la protección de los derechos de autor -para eso ya está la
LPI- sino el del respeto de la libertad de los usuarios. Para redactar una licencia que
acabaría por dar nombre a una forma de distribución ( "copyleft" ) la FSF debió sortear
más de un serio escollo, además de enfrentarse con críticas no siempre benévolas,
con el punto de mira desviado y finalmente incapaces de demoler el imponente edificio
que se estaba levantado bajo su protección. Por ahora no disponemos de un modelo
mejor, aunque todo es perfectible. Las directrices Open Source son muy prácticas, pero
técnicamente hablando no son un modelo de licencia, y en términos jurídicos significan
un paso atrás sobre el esquema de la FSF, como se tratará de demostrar después. No
son tampoco fáciles de entender. Pero su importancia e influencia son enormes y le
dedicaremos el apartado 4.5.2. Iremos dando indicaciones por orden, para desmenuzar
la licencia deseable, aunque no llegaremos a los detalles.

La forma más segura de licenciar el programa consiste en incluir un anuncio al principio
de cada fichero fuente, unas líneas de indicación de autoría y año de publicación
(es decir, lo que se llama "línea de copyright" ) y la indicación de uno o dos lugares
fácilmente accesibles donde encontrar el texto completo de la licencia.

Una licencia no necesita un preámbulo que exponga la justificación de las cláusulas
o cuerpo de la licencia, pero la GPL tiene uno, y muy útil porque sirve para solventar
las dudas que pueden aparecer al leer o al aplicar las cláusulas. La GPL no es neutral,
pretende ser interpretada en un sentido dado y no en otro distinto u opuesto. Su sentido

Página 224 de 328 Introducción a Linux
es el de la libertad, y está recogido justamente en el preámbulo, que forma parte de
la licencia misma, aunque esto la FSF no se ha ocupado de indicarlo así. De todos
modos, la licencia es toda ella autoexplicativa, e interpretarla debería de resultar fácil.
No puede decirse lo mismo de muchas otras licencias estándar que hemos podido
consultar.

En el cuerpo de una licencia de software debe encontrarse 3 grupos de cláusulas,
sólo en lo que se refiere a los derechos de autor; habrá más apartados si se tratan
asuntos sobre garantías, servicios de apoyo, pagos y demás, pero las materias ajenas
a la propiedad intelectual no son tratadas en estas notas. Los grupos de cláusulas
son los siguientes, y se incluye después de cada uno, como ejemplo, las cláusulas
correspondientes de la GPL. La discusión del grupo segundo, el cuerpo principal sobre
explotación del programa, la dejamos para el apartado 4.

1. Cláusulas generales
1. Definiciones y ámbito de aplicación de la licencia. Advertencias de
copyright (GPL cláusula 0)
2. Formas de aceptación de la licencia (GPL cláusula 5)
2. Uso y explotación del programa
1. Copia, modificación y distribución libres (GPL cláusulas 1 a 3)
2. Copyleft, o persistencia de la libre distribución de programas
derivados (GPL cláusulas 4, 6 y 10)
3. Integridad del sistema copyleft en caso de impedimento forzoso a la
libre distribución (GPL Cláusula 7)
4. Posibilidad de límites geográficos a la libre distribución (GPL claúsula
8)
3. Intangibilidad de la licencia. Versiones sucesivas (GPL cláusula 9)

Las diferencias entre el orden lógico y el de presentación por la GPL se deben a
necesidades prácticas de exposición de la FSF. Comprobaremos que para analizar
el funcionamiento de una licencia de software libre es más apropiada la ordenación
lógica. A continuación tratamos las cláusulas generales, y como se ha dicho dejamos
las relativas a la explotación para el apartado 4.

Cláusulas generales
Definiciones, ámbito de aplicación de una licencia y avisos de copyright

Estas declaraciones de la licencia no tratan directamente de la explotación del
software, e incluso pueden ser teóricamente innecesarias, pero siempre ayudan a
la comprensión del cuerpo principal. En cuanto a las definiciones, podemos usar las
contenidas en las leyes o bien habremos de hacerlo nosotros mismos. Son esenciales

Plataforma de Teleformación de IFES Página 225 de 328
las de programa u objeto licenciado, programa derivado (el obtenido a partir del que
ahora licenciamos) y las formas de explotación. De todo ello se encuentra información
en los apartados anteriores. Es típico de las licencias, como de muchos otros contratos,
fijar los términos importantes que vayan a usarse más a menudo: "usted" puede ser
el licenciatario, "titular del copyright" o simplemente "titular" es el autor o el derecho-
habiente de las facultades de explotación que van a autorizarse, "versiones y/o
programas derivados" son el resultado de cualquier modificación del programa, incluida
la traducción, etc. Todo esto depende de las concretas necesidades en cada caso.

Una licencia debe delimitar claramente su ámbito geográfico de aplicación, su duración
(que puede ser indefinida) y las formas de explotación que se van a tratar, las que
se retienen y las que se ceden. Aquí bastará limitarse a definirlas lo mejor posible
y siempre que parezca conveniente o necesario. Hacen referencia a cuestiones
generales tratadas en otras partes de este artículo, así que no las repetimos. Es clásico
advertir que la licencia no se aplica a la entrada o a la salida del programa, salvo que
se diga otra cosa, es decir: siempre que una y otra no sean a su vez obra protegida.

Es casi esencial que el programa incluya de algún modo uno o más avisos de copyright
y de la licencia, como ya hemos reseñado antes.

La copia impresa debe prevalecer sobre la información que muestre la pantalla, porque
es más sencillo hacer modificaciones de última hora en aquélla.

Formas de aceptación de la licencia

Este asunto es clave, al menos formalmente, pero no debe dar problemas en su puesta
en práctica. No hay auténtica licencia hasta su aceptación por el destinatario, esto ya
lo sabemos. La forma de la aceptación es variada, las hay muy rebuscadas, incluso
puede encontrarse algunas definitivamente abusivas para el usuario (véase el apartado
6.1). Aquí nos referiremos sólo a las habituales. En esencia, se trata de que queden
claras las voluntades del licenciante y del licenciatario, por cualquier medio admitido.

Primero, es conveniente advertir al destinatario que no está obligado a aceptar la
licencia para el uso y la copia privada, pero sí para la modificación y distribución (o
redistribución) del programa. Los dos primeros actos son privados, normalmente; pero
los segundos involucran a terceras personas. A primera vista, de lo dicho se podría
deducir que este software no va a tener "usuario legítimo" en el sentido genuino de la
LPI, ni estará prohibida la copia privada, también en contra de la LPI. Pero no es así.
El uso y la copia privada son actos que normalmente sólo conocen los mismos usuario
y copista, p. ej. si se realizan en casa. Por tanto no tiene mucho sentido exigir la
aceptación de la licencia para estas dos formas de explotación. Esto es así sobre todo
para el software libre, en donde por definición prácticamente todo usuario es legítimo

Página 226 de 328 Introducción a Linux
y quedan autorizadas las formas principales de explotación. Obviamente, para el
software cerrado la situación es muy distinta, ya que su explotación está radicalmente
restringida desde el mismo uso. De hecho, desde antes del uso, pues para algunos
fabricantes el romper los precintos del paquete de CDs supone la aceptación de la
licencia (puede comprobarse en las licencias de conocidas casas comerciales).

Suele darse por válido que la realización de actos de explotación permitidos por
la licencia suponen su aceptación. Por supuesto, pulsar "aceptar" en el ejecutable
interactivo tiene exactamente -jurídicamente- ese valor, aunque debería darse
la oportunidad al usuario de poder usar el programa durante un tiempo para
comprobaciones y ajustes, antes de la aceptación. En fin, que no hace falta una
declaración pesonal por escrito, firmada y fechada, para aceptar una licencia. Sí tal vez
para rechazarla, si uno cree que ha realizado, por error o defecto del programa, algo
que puede significar la aceptación de lo inaceptable. El software libre, de todos modos,
no se enfrenta con estos problemas casi nunca.

Intangibilidad de la licencia
El contenido de una licencia, sobre todo de una licencia de software libre, no es libre.
Dicho de otro modo, el efecto de una licencia de sl no es reflexivo, no se aplica a sí
misma. Una licencia no puede permitir su propia modificación entretanto esté en vigor,
salvo por acuerdo expreso de ambas partes. En Derecho español se dice, más en
general, que los términos de un contrato no pueden quedar al arbitrio de uno solo
de los contratantes. Por todo esto se exige que la licencia sea intangible, intocable
mientras esté en vigor.

Tenemos que distinguir las novaciones, o cambios que puede sufrir una licencia por
acuerdo entre las partes o por sentencia judicial, p. ej. si un tribunal anula una claúsula
abusiva; de las revisiones de una licencia-modelo o general, como p. ej. la GNU-GPL.
El supuesto interesante es el segundo. Una licencia-tipo, como la GPL o la FDL, que al
fin y al cabo son obras literarias, están protegidas por las leyes de derechos de autor,
aquí aplicados estrictamente con la finalidad de mantener el texto sin cambios. Estas
licencias están sujetas al copyright, en este caso de la FSF, con domicilio en Boston-
MA. Esto significa que quien use la GPL para licenciar su programa y mantenga el
nombre de la licencia en el ejemplar que utilice para su programa, debe mantenerla
íntegra y sin modificaciones. En otro caso, y si prefiere el autor realizar algún cambio,
no será ya "licencia GPL" y no podrá utilizar tal denominación. A esto se refiere la GPL
en la advertencia © que va antes del preámbulo.

La intangibilidad de las licencias-tipo se debe a su papel de destinataria de tantas
remisiones que circulan por ahí. La seguridad del tráfico exige que los términos literales

Plataforma de Teleformación de IFES Página 227 de 328
no cambien. Aún así, una licencia modelo puede pasar revisiones, y por tanto podemos
encontrarnos con versiones distintas, pero no deberían serlo mucho sino sólo en
mejoras, aclaraciones y tratamiento de casos nuevos. Todas las versiones deben
ajustarse al espítitu de la licencia original, en otro caso habrá de redactarse una licencia
distinta y con otro nombre o identificador. La FSF admite además que si alguien licencia
su programa con la versión x puede hacerlo al mismo tiempo con referencia a cualquier
versión posterior. Esto se contrapesa estableciendo que cuando no se especifique el
número de versión de la licencia, el destinatario elegirá la que más le convenga, algo
perfectamente válido y respetuoso con el usuario.

¿Puede revocarse una licencia?

Una licencia es revocable por el autor en muchas circunstancias y en ejercicio de
varias facultades. Una de ellas, el caso del llamado derecho de arrepentimiento, por
cambio de convicciones del autor, forma parte del derecho moral. Por supuesto tiene un
límite: indemnizar los perjuicios que pueda producir a terceros. Y lo mismo ocurre con
cualquier revocación unilateral (no pactada) de la licencia. Si hay acuerdos sobre este
asunto, habrá que estar a lo acordado. En el sl la situación no tiene mayor relevancia,
salvo en un caso: la revocación de la licencia copyleft ¿Es ello posible? Y de serlo,
¿qué consecuencias tiene para el autor? ¿Y para los licenciatarios antiguos y nuevos?
En el software de uso masivo, sea libre o no, las dificultades en la aplicación práctica
de las reglas sobre revocación de licencias son tan grandes que se usa otra fórmula:
nueva licencia para una nueva versión del programa; o bien la doble licencia. Los
problemas resueltos de esta forma resultan más manejables, pero no dejan de ser
serios. Su tratamiento aquí excede del ámbito de las presentes notas, aunque se
espera poder tratarlo mínimamente en versiones sucesivas.

Tipos de licencias de software
Aunque la GNU-GPL, BSD, XFree86, Mozilla, y otras muchas son las licencias más
conocidas, lo cierto es que no podríamos enumerarlas todas porque cada autor puede
tener la suya, y una distinta para cada programa. Pero esto no es ningún problema,
por varias razones. Primera, porque disponemos de un instrumento de análisis de las
licencias: las premisas del apartado 2.1 de este artículo. Segunda, porque hay varias
licencias que sirven como modelos para otros programas, y así hablamos de "tipo BSD"
para referirnos a licencias similares a la del sistema operativo de Berkeley. Hay incluso
licencias y modelos creados en abstracto, sin referencia a un concreto programa,
como la misma GNU-GPL o la Open Source Definition. Las licencias típicas son muy
cómodas de usar ya que el autor de un programa dado, conocedor de la que más le
conviene, la incluye tal cual o hace sólo las modificaciones que precisa, sin el trabajo

Página 228 de 328 Introducción a Linux
de redactar una por entero, o encargarla a un abogado. Por otro lado, quienes van a
usar o explotar un programa (los licenciatarios) también conocen estas licencias típicas
y saben de antemano a qué atenerse. Igualmente, los abogados y los jueces tienen
mejor conocimiento de ellas que de una licencia nueva u original. Todo esto simplifica
las relaciones y los negocios y resulta útil.

Nosotros vamos a ocuparnos sólo de las licencias típicas. Las más interesantes son
las licencias de software libre, ya que en una licencia se materializa la voluntad del
autor sobre cómo desea que su programa se use y explote, y las de software libre
materializan una voluntad radicalmente contraria a la que la LPI espera de un autor. En
particular, las licencias copyleft revierten literalmente las relaciones autor-usuario que la
LPI presupone.

Por contra, las licencias de software no libre, exactamente las de software cerrado, se
asientan en la LPI y desde ella pueden incluso lanzarse más allá en la limitación de los
derechos y libertades de los usuarios. Pero esto sólo es válido, como ya sabemos, si no
se atenta contra las normas imperativas, que conocemos del apartado 2.1.3. Por eso
se dice que las licencias de software no libre están acompasadas con la LPI y son por
lo tanto mucho menos interesantes. La lectura completa de una de estas licencias no
libres puede resultar además una penosa experiencia.

Con todo, sólo las licencias típicas forman ya un buen montón. Tampoco tiene mucha
utilidad hacer una selección, pues la FSF y la OSI ya han hecho algunas muy valiosas,
aunque no siempre detalladas, y de las que en el apéndice C se encuentran las
referencias. Nosotros vamos a examinarlas de una forma distinta, y nos evitaramos
tanto el tedio de la exposición de licencias una por una, como una lectura árida o
abrumadora. De todos modos, se encontrará en 4.6 una breve discusión final sobre los
criterios de las clasificaciones principales.

Y llegamos por fin al núcleo de la cuestión.

Las licencias de software libre
Más definiciones
Necesitamos aún algunas definiciones más para seguir aclarando la terminología que
estamos usando y otra nueva que introduciremos enseguida. Las definiciones más
útiles para hablar de software libre son, de nuevo por su rigor jurídico, las de la FSF,
que usamos en este artículo por convención.

Plataforma de Teleformación de IFES Página 229 de 328
Tenemos dos grandes superconjuntos: el software libre y el resto del software, que
por tanto llamamos no libre. Cualquier otra terminología para estos superconjuntos
no es aceptable en español. Por cierto, software no libre no es sinónimo de "software
propietario" , y como esta última expresión es horrible además de inexacta, nosotros
no la utilizaremos, además en el fondo nos sobra. En caso necesario hablaremos de
"software cerrado" . Es más preciso hablar en general de software no libre, y de paso
englobamos a los semipropietarios, semilibres, sharewares y demás. Esta terminología
también nos facilitará la comprensión cabal de un cuadro bastante grande de licencias.

"Software libre" (sl) es el que incorpora una autorización general no discriminatoria para
usar, copiar, modificar y distribuir el programa original o sus derivados, gratuitamente
o no. Debe proporcionarse las fuentes, directa o indirectamente, pero siempre de
forma fácil y asequible. Todo programa que no incorpore esta autorización no es libre,
decimos que es software no libre.

Abusaremos un poco del lenguaje llamando "licencia libre" a la licencia de un programa
libre.

Estas definiciones no son pacíficas. Nosotros las usaremos convencionalmente, pero
ignorar cuánto hay detrás es un pobre servicio al conocimiento, porque no se trata
de pequeñeces. Para empezar, las definiciones de software libre ( "free software" )
y fuente abierta ( "open source" ) no son coincidentes, aunque vienen ciertamente
a significar casi lo mismo. Pero estas diferencias no son importantes por ahora, las
dejamos para el apartado 4.5.2.

También es esencial distinguir sl (superconjunto) de copyleft (subconjunto). Éste es
software libre cuyos términos de distribución no permiten a los re-distribuidores añadir
a su licencia restricciones adicionales a las de la licencia de que se sirvieron. Esto
supone la perpetuación de la condición de libertad del software hasta su extinción.
El copyleft determina la imposibilidad (jurídica) de apropiarse del software libre. Y
éste es el hallazgo de la FSF, al que dedicaremos por entero el apartado 4.5.1. El
resto del sl que no es copyleft puede ser modificado añadiendo restricciones a la libre
distribución que no se encontraban en la licencia del programa originario. Los ejemplos
característicos son las licencias BSD y X11.

Esta segunda dicotomía "sl-copyleft v. sl-no-copyleft" es en cambio pacífica, porque
los términos de distribución de, p ej., la GNU-GPL son claros y terminantes. Es cierto
que una cuestión de estrategia invitó a la FSF a redactar la Lesser GPL, y que se
han detectado una o dos lagunas relativamente importantes, pero procedentes sólo
de una interpretación forzada del sentido de su texto. Un programa es copyleft o no
lo es, y esto es fácil distinguirlo. Aun así, la FSF habla de "grados" de copyleft (hay
programas más copyleft que otros), y finalmente introduce una última subdivisión:

Página 230 de 328 Introducción a Linux
"copyleft compatible GNU v. copyleft no compatible GNU" . Lo mismo hace la OSI con
su calificación de compatibilidad Open Source. Pero estas expresiones, graduación y
compatibilidad, forman otro de los asuntos en los que, dado el ámbito de este artículo,
no podremos entrar a fondo hasta una versión ulterior.

En Derecho anglosajón se incluye dentro del sl el software que se encuentra en
dominio público, pero esto generalmente no es así en los Derechos continentales.
En primer lugar, no es fácil con arreglo a la ley española encontrar programas en
dominio público por las razones expuestas antes, simplemente no ha transcurrido
suficiente tiempo desde la aparición de los primeros programas protegidos para que
se haya producido la extinción de los derechos de autor sobre ellos (recuérdese:
toda la vida del autor y 70 años más). Segundo, probablemente las fuentes pueden
no estar disponibles. Tercero, el Derecho español admite la apropiación del dominio
público inédito (art. 129.1 LPI), y desde luego la apropiación de las obras derivadas del
dominio público, pero no del dominio público mismo. Con razón la FSF considera que
el software en dominio público no es en modo alguno copyleft, sobre todo en Derecho
anglosajón. Ni siquiera tiene que ser necesariamente libre, p. ej. no lo es si las fuentes
no estan disponibles. Volveremos aún sobre el dominio público en 4.5.1.

Encaje general de las licencias de software libre
en la ley española
Sin rodeos, no plantean problemas en Derecho español, son perfectamente válidas y
viables. Trataremos de demostrarlo en lo que resta de este apartado 4. En primer lugar:

1. No afectan a los derechos morales del autor, aunque la existencia del
llamado derecho de arrepentimiento, típico de los Derechos continentales,
parece sugerir otra cosa. Pero ya tratamos este asunto (superficialmente,
es cierto) en el apartado 3.2.2 al hablar de la revocación de las licencias.
Aunque allí quedaron temas por tratar, éste en particular quedó allanado.
Se trata de un asunto más teórico que otra cosa, de todos modos. Y aún
volveremos de nuevo a él cuando tratemos de la Open Source Definition.
2. En cuanto a los derechos patrimoniales del autor, tampoco hay nada en las
licencias de software libre que infrinja las normas imperativas de la LPI. En
efecto:
1. El derecho de autorizar o prohibir la explotación de la obra se
manifiesta justamente en la facultad del autor de dar licencia a su
programa, siempre que no se vulneren otras normas imperativas u
obligaciones asumidas.

Plataforma de Teleformación de IFES Página 231 de 328
2. Las licencias de software libre no implican renuncia del derecho de
remuneración, aunque en muchos casos se renuncie de hecho a
una remuneración, que es cosa distinta, perfectamente renunciable.
Es claro que el autor no renuncia a la explotación por sí mismo.
Y respecto de la explotación por los demás, la cede con causa
(liberalidad, prestigio, obtención de una marca comercial, de apoyo en
el mantenimiento del programa, etc, etc).
3. Las licencias regulan sobre todo la cesión de los derechos de
explotación, que es su cometido, y por tanto son el vehículo apropiado
para contener las condiciones de uso y explotación de un programa
de ordenador.

Una dificultad más seria se encuentra en la limitación que la ley española impone a
cualquier cesión de derechos de explotación: Queda limitada siempre a los medios
de explotación existentes en el momento de la cesión, esto es, en el momento de la
aceptación de la licencia; y no se extiende por tanto a los medios futuros de copia,
modificación, etc, ni a los inexistentes. Por su parte la GPL deja bien claro que
la explotación libre autorizada se refiere "a cualquier medio" (claúsula 1) y queda
restringida a determinadas formas de explotación (y no a otras), concretamente la
copia, modificación y distribución. Si se produce una explotación de distinto tipo, la
GPL deja de amparar al licenciatario (cl. 1 y 4), pero el sentido de la GPL es el de
respetar las libertades del usuario, no la restricción injustificada del uso y explotación
de los programas; y no entra, salvo lo ya señalado, en buscar limitaciones más allá de
las necesarias a su finalidad. Por lo tanto se concluye que la GPL ampara formas de
explotación sobrevenidas después de la aceptación de la licencia, pero siempre que no
se atente contra el espíritu de la GPL. Aunque nunca está de más avisar al licenciante,
puede incluso ser imprescindible.

También hemos de resolver una aparente contradicción entre la regla imperativa de la
LPI que dice "las cesiones no exclusivas son intransmisibles" (art. 50.1) y el hecho de
que una licencia de sl, que consiste en una cesión no exclusiva, justamente permite la
transmisión ulterior de derechos por el licenciatario si éste crea un programa derivado.
Pero no hay tal contradicción. Por al menos dos razones: 1ª La esencia del sl está
en la cesión de derechos de explotación sin exclusiva, y no en ninguna renuncia del
copyright. Mediante la licencia libre el autor cede sus derechos de explotación sin
exclusiva, pero ello no permite al licenciatario re-licenciar la obra originaria, ni licenciar
su obra derivada en términos contrarios a los aceptados en la primera licencia. 2ª El
art. 50.1 no es realmente una norma imperativa, existe para proteger al autor, pero
éste puede disponer de ella, es en realidad una norma dispositiva. Se incluyó en su
momento como imperativa por pura precaución, pues el tenor literal de la LPI da que
pensar. Para los más juristas: una licencia de sl tiene algo de donación modal (te doy

Página 232 de 328 Introducción a Linux
algo si haces esto), y esta es otra forma de demostrar que la contradicción es sólo
aparente.

A continuación veremos con más detalle las libertades aparejadas a una licencia
de software libre. Seguiremos el orden expuesto al final del apartado 3.2, o sea: el
segundo grupo de claúsulas que teníamos pendientes. Puede adelantarse que no se
trata de un examen pormenorizado de cuantas cuestiones suscitan los rótulos de los
apartados, sino un vistazo general. Esto podemos en cierto modo permitírnoslo porque,
primero, estamos tratando con el negativo de las habituales licencias de software
cerrado, innecesariamente prolijas y obsesivas. Segundo, estamos tratando acerca de
las libertades, más simples de expresar que las sujeciones.

Libertades de uso y reproducción
Estas libertades no nos darán ya mucho trabajo. Todo ha quedado definido en
apartados anteriores y sabemos por tanto que una licencia de sl otorga libertad
prácticamente plena para utilizar y copiar el programa cuando, como, cuanto y donde
a uno le apetezca. Suele incluirse restricciones formales, como el mantenimiento del
aviso de copyright, que si son razonables no hacen al programa no libre.

Por supuesto, es lícito bajo licencia de sl cobrar por el acto físico de transfererir copias
del programa (p. ej. en CDROM), así lo dice entre otras la GPL en el último inciso de
la cláusula 1. ¿Significa esto que la cesión de derechos de explotación del programa
(que es una transferencia de objeto inmaterial) ha de ser gratuita si se utiliza la GPL?
Aquí la GPL parece confundir el programa (obra intelectual, inmaterial, objeto de los
derechos de autor) con el soporte de la obra (un binario o código fuente, grabados
en un CDROM). Debería estar claro que la GPL no exige gratuidad en la cesión de
derechos de explotación, no hay restricción a los derechos de autor ni a la libertad
del usuario, pero es un hecho la cesión gratuita en muchas ocasiones. Además,
¿a quién se cobra por una cesión de derechos de explotación muy amplia y con
destinatario indeterminado? Este asunto es muy teórico y no merece más atención en
este momento.

Libertad de modificación
Tampoco aquí encontraremos a estas alturas dificultades mayores, aunque siempre
es posible complicarse la vida. Uno puede modificar libremente un programa libre,
que lo es porque entre otras cosas se dispone de su código fuente. Puede traducirse,
transformarse, combinarse con otros, o dividirse. Todos los programas o colecciones

Plataforma de Teleformación de IFES Página 233 de 328
de programas obtenidos son obras derivadas, pero (un gran pero) no necesariamente
libres.

¿Qué ocurre si redistribuímos un programa en el que hemos incluído parte del código
de un programa libre? Que el programa obtenido ha de ser libre en su totalidad. Es
decir, no puede extraerse de un programa libre copias u obras derivadas que a su
vez se licencien como libres sólo en la parte derivada. En varias ocasiones la GPL
tiene en cuenta este supuesto, especialmente para los trabajos derivados (claúsula
2), exigiendo que la licencia se aplique al programa "como un todo" , de modo que el
carácter libre se transfiera al programa derivado. Aunque hay excepciones.

Esta es una exigencia coherente con las bases del sistema copyleft, de hecho es
la primera exigencia del copyleft, en el ámbito de la modificación de programas.
Es el primer supuesto que nos encontramos en nuestro recorrido con el llamado
incorrectamente "virus copyleft" , calificado también de efecto contaminante. Desde el
punto de vista de las libertades del usuario es más bien un efecto supermineralizante,
reconstituyente. Estos calificativos no tienen mucha importancia, sí el efecto mismo
por supuesto. Pero esta restricción no es toda la cláusula copyleft, en realidad no lo
es en absoluto en cuanto a las modificaciones que no se redistribuyen. Más bien, la
transmisión del carácter libre de un programa original a sus derivados es una exigencia
del copyright: Si el programa original es copyleft, porque el derecho del autor del
programa derivado se origina en una licencia copyleft, de la que no puede sustraerse. Y
si el programa original no es copyleft, exactamente igual.

Luego el mal llamado carácter contaminante del copyleft resulta que se da bajo
cualquier licencia, como cualquier jurista esperaría. Las críticas habituales suelen
tener lugar en otro plano, sea económico, empresarial o político. Por ejemplo, que
la contaminación por licencias no libres es una calamidad para el usuario, que la
producida por licencias Open Source no copyleft es incierta, y que la producida por
el copyleft es defitivamente una bendición para el usuario y la libre computación en
general, porque mantiene la libertad. Nada de esto se deduce del Derecho, que,
todo lo más, establece reglas muy generales, como que lo accesorio sigue la suerte
de lo principal (art. 379 CC) y que los derechos sobre una mezcla indivisible son
proporcionales a los elementos mezclados (art. 381 CC), siempre que no haya otros
pactos.

Puede darse el caso de un programa que posee partes identificables no derivadas
de un programa libre. Entonces, y siempre que se trate de trabajos independientes y
separados ( "autónomos" en nuestra nomenclatura del apartado 1), sólo entonces no
se transmite el copyleft. Pero si esas partes se distribuyen como un todo derivado del
programa libre, la distribución del todo debe producirse según la licencia libre, cuyas
autorizaciones se extienden al todo. La finalidad de esto (véase cl. 2 GPL) no es otra

Página 234 de 328 Introducción a Linux
que la de controlar la distribución de los trabajos derivados del programa libre. Además,
y esto es esencial en las distribuciones y paquetes, la reunión o colección de trabajos
libres y no libres en un volumen de almacenamiento o medio de distribución NO hace
que unos trabajos pasen al ámbito licenciado por otros. Esto se ajusta como un guante
a las reglas comunes, o sea las del CC que hemos citado. Vamos a ser más explícitos.

Adquisición de propiedad: Unión y especificación de
cosas
Como base del debate sobre cómo han de transmitirse los efectos de las licencias
de programas originales a los programas derivados, vamos a utilizar las reglas del
CC citadas arriba, y algunas más. Se trata de saber cómo se adquiere la propiedad
sobre objetos derivados, bien por unión de cosas distintas (mezcla y adjunción), bien
por especifición de una cosa. Este es un viejo asunto de los juristas, desde hace más
de 2000 años. "Nada más complicado y de más difícil apreciación jurídica en la vida
real... Las relaciones que supone... han llegado a [considerarse] de casi imposible
determinación..." , así se expresaba un magistrado, J.Mª MANRESA, hace un siglo
aproximadamente. Con esta alentadora perspectiva, vamos a basarnos en las normas
del CC aplicables a los bienes muebles, porque de cierto que los programas de
ordenador no son inmuebles (!).

Unión de programas

Tenemos dos tipos de unión de cosas, la mezcla y la adjunción. La mezcla de
elementos supone que éstos resultan después inseparables, de modo que cada
propietario adquiere un derecho proporcional sobre la parte que le corresponde según
el valor de las cosas mezcladas (art. 381 CC).

La adjunción ocurre por la unión de cosas heterogéneas que se unen indisolublemente
para constituir un solo y nuevo objeto, no desmontable. En este objeto pueden
distinguirse tal vez sus antiguos componentes, pero no pueden ya separarse. En
este caso, la regla es que lo accesorio sigue la suerte de lo principal (art. 375 CC).
Accesorio es lo que facilita el uso o perfecciona lo principal (art. 376 CC). Pero suele
utilizarse como criterio más práctico el del valor económico de los componentes (art.
377.1º CC).

Versiones de programas o especificación

La especificación consiste en dar a una cosa una nueva forma. Más estrictamente,
es dar nueva forma a una cosa ajena, creándose así una nueva cosa de más valor.
El art. 383 CC dice que el especificador hace suya la cosa nueva, si efectivamente

Plataforma de Teleformación de IFES Página 235 de 328
es de mayor valor, aunque habrá de indemnizar al dueño de la cosa especificada
( "versioneada" ). En otro caso, éste puede optar por quedarse con la nueva especie,
indemnizando el valor de la obra nueva; o pedir indemnización de la materia original.

Todo esto sólo vale si quien mezcla, adjunta o especifica actúa de buena fe.

Exigencias razonables para la modificabilidad del
software
Por supuesto, no hay modificación factible de un programa de ordenador si no se
dispone del código fuente. La disponibilidad del código recompilable puede darse de
varias formas, pero sólo algunas son admitidas en la definición de software libre. Habrá
de escogerse alguna de éstas en tal caso y dependiendo de la explotación que se
prevé:

• Acompañar las fuentes completas en formato electrónico y en el soporte
habitualmente utilizado para intercambiar programas. Actualmente estos
medios y soportes son casi siempre ftp anónimo y/o CDROM. La carencia
simultánea de estos dos citados resulta inaceptable.
• Acompañar un compromiso escrito, válido por un plazo razonable (la FSF
exige 3 años), de proporcionar las fuentes a quien las pida a un coste no
superior al de la distribución física por medio estándar (ftp y CDROM al
menos).
• Una tercera forma de poner a disposición el código fuente, y que
normalmente sólo debería aplicarse a usos no comerciales, es la de
acompañar el programa con la información recibida por el licenciatario sobre
la oferta anteriormente citada del código fuente. Esto sirve para disminuir
costes y no cargar a ciertos usuarios con elementos posiblemente inútiles.
• [Queda claro que las fórmulas segunda y tercera sólo tienen sentido cuando
la distribución del programa únicamente es en programa objeto o binario
ejecutable]

La LPI no define "código fuente" . La GPL y las OSD dicen que es "la forma preferida
del trabajo cuando se hacen modificaciones" . Para un ejecutable, fuente es el código
completo de todos sus módulos, ficheros asociados de definición de interfaces y
guiones utilizados para controlar la compilación e instalación del ejecutable. No
comprende necesariamente el código que suele acompañar a los componentes
principales del sistema (el compilador y el núcleo sobre el que funciona el ejecutable),
salvo que el propio componente principal acompañe al ejecutable.

Página 236 de 328 Introducción a Linux
Libertad de distribución
Todas las formas anteriores de explotación pueden ser realizadas individualmente
y sin conocimiento por nadie. Pero la distribución es inherentemente relacional, ya
que hay intercambio, y es en este punto en el que reside una de las más importantes
polémicas dentro del sl. En su seno, la libertad de distribución no se pone en duda,
libertad sin restricciones aparentes, salvo por cuestiones formales, algunas limitaciones
geográficas lógicas, asuntos de poca monta comparados con la general libertad de
distribuir y redistribuir programas originales o transformados.

También está claro para todos que la distribución sólo es libre si puede tener por
causa cualquiera que sea lícita: ánimo de lucro, altruismo, proselitismo... Asímismo no
admite dudas que el sl sólo es libre si la licencia del programa libre original persiste
durante toda la vida útil del software y de sus derivados, que por lo tanto también han
de ser libres. La cuestión es la de la transmisión de efectos de las licencias, que ya
avanzamos en el apartado anterior. ¿Se transmite el carácter libre de un programa
a sus programas derivados siempre, o sólo para determinadas modificaciones
(derivaciones, agregaciones, paquetes, bibliotecas, distribuciones), tal vez sólo para
la redistribución? ¿O se reconstituye plenamente el copyright? Esto depende de la
licencia misma, y por eso el movimiento del software libre se articula no mediante una
forma especial de escribir código, ni por una nueva mercadotecnia, ni por el apoyo del
sector empresarial, todo eso son consecuencias de mover la palanca sobre cierto punto
de apoyo: esos extraños e indigeribles documentos llamados licencias de software.

El criterio para resolver el dilema reside, obviamente y una vez más, en las libertades
ciudadanas, incluidas las exigencias de la libre competencia, entre las que no está
-más bien al contrario- la limitación de entrada en el mercado por apropiación de
resultados obtenidos en el desarrollo de software, mucho menos de software libre. Así,
el copyleft es una exigencia de la auténtica libre competencia.

No se conoce ninguna norma jurídica que prohíba la apropiación del software, ahí está
la LPI para garantizar que los programas pertenecen a sus autores. Pero el art. 81
del Tratado de la Comunidad Europea (ojo: en la nueva numeración de Amsterdam)
califica de incompatibles con el mercado común, y quedan prohibidas, las prácticas
tendentes a impedir, restringir o falsear la competencia; y en particular el limitar o
controlar la producción y el desarrollo técnico, subordinar la celebración de contratos
a la aceptación por la contraparte de prestaciones suplementarias sin relación con su
objeto. También prohíbe el art. 82 abusar de la posición dominante, p. ej. limitando
la producción o el desarrollo técnico en perjuicio de los consumidores. No es el sl el
que usa estas prácticas, de hecho las dificulta. Por contra, hay paladines del software

Plataforma de Teleformación de IFES Página 237 de 328
cerrado y (teóricamente) de la libre competencia que se encuentran expedientados en
Bruselas por presuntas prácticas ilícitas.

Este apartado 4 trata de las libertades del usuario de software, no de los derechos de
autor. Muchos entienden que la libertad del usuario no puede restringirse mediante
el uso de la misma libertad. Si quien modifica un programa libre hace uso de sus
derechos de autor (de su libertad, dirá él tal vez) añadiendo en la licencia del programa
derivado (y en perjuicio de sus usuarios) restricciones que no figuraban en la licencia
del programa libre original, lo que está haciendo no es ejercitar sus derechos de
autor -que están indeleblemente unidos a la licencia libre original- sino apropiarse
ilegítimamente de algo que no le corresponde a él en exclusiva, la libertad de los
demás a usar y explotar libremente el nuevo programa, libertad garantizada por las
constituciones, sin duda por la Constitución española cuando reconoce el derecho
fundamental a la producción científica y técnica (art. 20.1.b CE).

Las licencias libres tipo BSD-original no pudieron tener en cuenta que el software
estaba empezando a ser usado masivamente y a gran escala, los fabricantes
intentaban patentar los productos y prescindir de una vez por todas de los desarrollos
abiertos. Habiendo encontrado mejor cobijo en la ley de derechos de autor que en la de
patentes, actualmente han debido frenar su expansión tras la recuperación del modelo
de software libre.

Este modelo se ha repuesto del declive de los años 80 añadiendo a su definición
la única prohibición importante que contiene la licencia deseable: Está prohibido al
destinatario de un programa libre restringir la libertad de explotación de los programas
derivados creados por él. Esta prohibición es tan importante que se dedica el apartado
siguiente sólo a ella. Tiene incluso nombre propio.

Copyleft o prohibición de añadir restricciones sobre los
programas derivados de un programa libre
La esencia jurídica del software libre se encuentra en la libre explotación de los
programas por los usuarios, sin discriminación. A su vez, el autor de un programa
derivado tiene el derecho exclusivo de autorizar o prohibir la explotación de su obra.
Pero el programa derivado existe y es legítimo porque la licencia del programa original
facilita su creación, porque es libre. Y como es libre, exige la persistencia de la
libertad de uso y explotación sobre los programas derivados. De haber resistido las
universidades en las últimas décadas sus carencias financieras de otra guisa, y no
aprovechando a toda costa el modelo de patentes, tal vez no hubiera sido necesario
tener que recordar semejantes afirmaciones. Pero ha sido necesario. El recordatorio de

Página 238 de 328 Introducción a Linux
la existencia de libertades fundamentales, constitucionalmente garantizadas, ha tomado
la forma de una cláusula prohibitiva, la cláusula copyleft.

El mejor ejemplo de cláusula copyleft es, de nuevo, la GNU-General Public License, o
simplemente GPL, publicada por la Free Software Foundation. En realidad la cláusula
se halla dividida en tres apartados, números 4, 6 y 10 de la versión 2 de 1991.

Las modificaciones sobre la licencia original pueden ser irrelevantes (correcciones
gramaticales, de ordenación, inclusión de asuntos ajenos al derecho de autor). El
copyleft se ocupa sólo de las modificaciones relevantes, que afectan a los términos
de la explotación del programa. Pueden a su vez ser de dos tipos: las que hacen
la explotación más libre (difíciles de imaginar) y las que la restringen, por ejemplo
cerrando el software, licenciándolo sólo para uso no comercial, impidiendo su
modificación, copia o redistribución. De éstas sí hay numerosos ejemplos. Son las del
segundo tipo las modificaciones prohibidas por el copyleft. La LesserGPL permite una
excepción "estratégica" , para las bibliotecas y otros elementos, que no podemos tratar
aquí, ni es para nuestro estudio demasiado importante.

Persistencia de la libertad del software

El copyleft pretende justamente la transmisión de los efectos de la licencia del
programa originario a las licencias de los programas derivados, como cualquier licencia,
aunque no se trata sólo de eso: Requiere seriamente la persistencia del carácter libre
del software libre modificado y (re)distribuido. El copyleft preserva el carácter de sl
prohibiendo que de un programa libre se obtenga otro no libre o que se redistribuya con
restricciones adicionales a las libertades de los destinatarios.

El copyleft no afecta directamente a los derechos del autor del programa originario,
pero sí a los del autor del programa derivado en el momento de su redistribución.
¿Cómo es esto posible? Porque el segundo aceptó la licencia del primero. Copyleft
no es lo contrario de copyright. El copyleft contiene lo que técnicamente se conoce en
Derecho como "condición resolutoria" [otros preferirán hablar de "modo" , pero esto
apenas tiene importancia]. Se trata de un suceso (condición) que, de darse, produce
determinado efecto en los derechos. El suceso en nuestro caso es la infracción de una
licencia, que por tanto queda desactivada (resuelta). La condición resolutoria implícita
en el copyleft se produce al añadirse restricciones a la libre explotación del programa
derivado sobre las que figuraban en la licencia del programa original.

La cláusula copyleft la impone el autor de la obra original en uso de sus facultades
de copyright, no en contra de tales facultades, que ya hemos demostrado no quedan
afectadas por ello. Y la aceptación por el destinatario de la licencia con cláusula
copyleft supone que si vulnera la cláusula, la licencia deja de ampararle a él y al

Plataforma de Teleformación de IFES Página 239 de 328
programa derivado que redistribuya, que pasa a ser automáticamente ilegítimo. Lo
mismo que en cualquier explotación de otras obras intelectuales distintas del software.

Estructura de la cláusula copyleft

El copyleft es fácil de entender, se condensa en una prohibición. Pero lo cierto es que
se encuentra formada por varios elementos:

1. Una sujeción: No cabe explotación del programa sino en los mismos
términos copyleft. Cualquier explotación en términos diferentes no queda
amparada por la licencia. Esto es un requerimiento general en casi cualquier
contrato de cesión de derechos. La explotación indebida por alguien no
afecta a todos los demás que sí ajusten el uso del programa copyleft a sus
términos.
2. Una obligación: Quien redistribuya el programa copyleft u otros derivados
de él, ha de poner ipso facto a disposición del receptor una licencia copyleft
equivalente, sin restricciones adicionales. Como aclara la GPL (cl. 6),
el licenciatario original, ahora licenciante del programa derivado, no es
responsable del incumplimiento de la licencia original por terceras personas.
Pero sí es responsable de ajustar la redistribución a los términos copyleft.
3. Una carga: Si se desea incorporar partes del programa copyleft a otros
programas libres que tengan condiciones de distribución distintas, debe
obtenerse permiso del autor de aquél. Es decir, la incorporación es posible
pero su legitimidad no es automática, depende de que en la transmisión
de derechos se preserven las condiciones que hacen libre al programa
incorporado, y se promueva o fomente el uso compartido y la reutilización del
software en general.

La claúsula copyleft se complementa con una aclaración y una excepción, ambas de
poca importancia en el fondo:

• Integridad del copyleft en caso de impedimento forzoso a la libre
distribución (cl. 7 GPL): No puede redistribuirse un programa copyleft si,
por impedimento forzoso (decisión judicial, vínculo con patentes, etc), la
redistribución no va a poder ser copyleft.
• Posibilidad de limitaciones geográficas a la distribución libre (cl. 8 GPL):
Normalmente por motivos de vinculación con patentes o interfaces bajo
copyright, pero siempre que se incluyan en la licencia indicaciones al
respecto, claras y prominentes.

Y esta es la construcción jurídica, tomada de la FSF aunque podría servir cualquier
otra. Ha sustentado, desde el Derecho y sin litigios judiciales, la realización de sistemas
como GNU, del núcleo Linux, de colectivos como Debian y de innumerables foros; ha

Página 240 de 328 Introducción a Linux
estimulado la formación de empresas, proyectos editoriales y docentes; la aparición de
cuerpos orgánicos de software libre en distribuciones multiformes... No son sus únicos
frutos, como se verá en el apartado 5.

Notas finales, un poco fuera de lugar

El copyleft, mediante un dispositivo jurídico impecable, da y asegura la libertad,
protege al autor favoreciendo la explotación de su programa, incluso por sí mismo si
lo desea, e impide en fin que nadie, salvo eventualmente él mismo y con dificultades,
tome demasiado control en el desarrollo. Es un artilugio equivalente, salvando
ciertas distancias, a la división de poderes del Derecho constitucional (LOCKE,
MONTESQUIEU y demás). El control por el explotador del programa nunca podrá ser
absoluto, pero el de los demás usuarios y desarrolladores tampoco. Y el programa con
más distribución será necesariamente el mejor posible, en otro caso será corregido
rápidamente. Etc.

Esto es teóricamente cierto, pero la realidad no se ajusta exactamente a esta
descripción. ¿Por qué? Porque la rentabilidad financiera del copyleft sólo se manifiesta
si alcanza a cubrir una rama de desarrollo mínima explotable, sea un solo programa
o una plataforma completa. Si no es el caso, no deja por ello de ser rentable, pero no
necesariamente en términos financieros, de generación de ingresos, de inversión y
crecimiento. Hay otras rentabilidades buscadas por el copyleft, prioritarias en realidad.
Hay economistas que pueden demostrar si es o no cierto lo anterior, al cabo sólo una
conjetura.

Evidentemente no es cierto que el copyleft haga a un programa menos libre porque
"limita la libertad del autor del software derivado" . Esta es una apreciación incorrecta.
Por una parte, el copyleft preserva el carácter libre del software sin afectar en nada a
la esencia del copyright (sí por supuesto al ejercicio de determinadas facultades del
copyright, como cualquier contrato de cesión de derechos de autor). Segundo, entre
la libertad de un número determinado de usuarios que desean apropiarse del software
derivado y la del número indeterminado de usuarios que no tienen tal intención,
el copyleft opta por éstos, pero no exactamente quitando libertad a aquéllos, no
restringiéndoles su libertad de elección (lo que sí se produce mediante determinadas
prácticas comerciales en perjuicio de los usuarios) sino hasta después de aceptar la
licencia, que por tanto han de respetar. Para todos los demás usuarios, los que no
desean vulnerar la libertad de distribución, el copyleft simplemente no les supone ni
siquiera una prohibición, porque la mayoría nunca agotamos toda la libertad que se
nos ofrece. Si el copyleft es una camisa de fuerza, al menos se la pone uno mismo.
Pero más bien el copyleft es un pacto de no agresión, y esto es saludable, no vírico.
Al contrario, hay pautas comerciales que sí pueden resultar víricas, lo son de hecho.

Plataforma de Teleformación de IFES Página 241 de 328
Pero es tan fácil hablar en términos tales (contagio general-monopolio, etc) como poco
seguro.

El copyleft, o más bien las manifestaciones de su potencia, son una materia enorme,
que excede lo jurídico con creces. Se ha pretendido con lo anterior dar breve cuenta
de ello. Quedan muchas cuestiones por tratar y explicar, como las dobles licencias,
la remota posibilidad de un programa copyleft que entra efectivamente en dominio
público, los problemas específicos de los paquetes, distribuciones, medios de
almacenamiento y canales de distribución. Confiamos en una versión ulterior de este
artículo para tratarlos apropiadamente.

No obstante la claridad de su construcción jurídica, y por razones que en este artículo
no podemos tratar sino muy por encima, a los hombres de negocios el sistema copyleft
no les gustaba. Temían su aspecto comunista, anarquista o libertario. En esencia,
no les gustaba la cláusula que impedía apropiarse, al no restringir la libertad de
los demás, del trabajo realizado a costa de su dinero. También se encontraban los
programadores que sufrían un temor análogo respecto del futuro fruto de su esfuerzo.
Este temor provenía de un malentendido, inexcusable pero persistente, acerca de
cómo rentabilizar los proyectos copyleft, normalmente origen de riqueza (fondo) si
son buenos claro está; pero no necesariamente generadores de dinero (flujo) si la
explotación es defectuosa. En el software no copyleft no pasa exactamente lo mismo,
porque los costes de desarrollo y mantenimiento no garantizan siquiera lo primero. Por
supuesto, también el software no libre puede ser objeto de explotación defectuosa.
El caso es que en el movimiento del software libre se produce una bifurcación en
1997-1998. Para nosotros es "la" bifurcación, porque afectó a las definiciones y a las
licencias y su clasificación.

Autorización de restricciones adicionales: Open Source
La distribución de software, y en particular la re-distribución de software modificado,
es el punto crítico del sl. La Iniciativa Open Source (OSI) surge de las Directrices
Debian de Software Libre (DFSG), adaptadas en 1997 sin cambios sustanciales a unos
términos más generales bajo el rótulo que se usa actualmente: Definición de Fuente
Abierta (Open Source Definition - OSD). No se trata de una licencia, ni siquiera de un
modelo de licencia, sino de directrices para la clasificación y adopción de licencias en
productos de software (programas, paquetes y distribuciones).

La definición de fuente abierta no es del todo equivalente a la de software libre. Las
diferencias esenciales son dos: Una fundamental, pues la OSD entiende por libertad
del usuario una situación jurídica menos amplia que el sl, según la definición de éste
hecha por la FSF, que es la que estamos utilizando en este artículo por su notable rigor

Página 242 de 328 Introducción a Linux
y ajuste a las exigencias constitucionales y legales españolas. La otra diferencia es
instrumental, está ubicada en la cláusula de persistencia del sl, que en la OSD no es ya
necesariamente software libre tras la distribución, con o sin modificaciones del software
originario. Se permite añadir determinadas restricciones a los términos de distribución
de originales y redistribución de derivados. Esto es una simplificación compacta que
debe explicarse y matizarse.

El punto de vista de la FSF no es sólo económico, que no se excluye de todos modos,
sino ultrajurídico pues comprende también postulados éticos y por lo tanto filosóficos.
El punto de vista de la OSI, que reconoce inspirado por la FSF, es sin embargo sólo
económico (disminución de precios, apertura de nuevos mercados). Se trataba de
atraer a los hombres de negocios y a importantes sectores de desarrolladores al
movimiento del sl, lo que se consiguió en parte. Pero no se logró mediante la atracción
de aquéllos al ámbito del sl, sino eliminando la necesidad de persistencia del sl, vale
decir llevando a los usuarios al coto de los temerosos. El copyleft quedó eliminado de la
definición deseable de sl, se volvió a las definiciones más antiguas, perfeccionadas es
cierto, de lo que podía entenderse por software libre, expresión que además se cambió
por "fuente abierta" , menos expresiva en inglés y todavía menos en castellano. Para
el Derecho, la OSD no impide restringir la libertad del usuario, facilita la apropiación del
software derivado, aunque su intención primordial sea asegurar al autor la posibilidad
de apropiación exclusiva del fruto principal del esfuerzo invertido, sobre todo en los
desarrollos más originales, con marca, etc.

Estructura de la OSD

Para examinar detalladamente la OSD bastaría con tratar cuatro de los diez apartados
que tiene la versión 1.0, ya que el último es tan sólo es un ejemplo, sin valor normativo,
y los cinco restantes tratan cuestiones que han quedado ya examinadas en apartados
anteriores. Pero sólo daremos unas breves notas.

Interesan los apartados que eliminan la necesidad del copyleft y, en general, la
persistencia de la libre explotación, que son los números 3, 4, 8 y 9. El número
3 permite cambiar los términos de sl del programa originario a términos no libres
en el programa derivado (tipo BSD), y se justifica -erróneamente- en la necesidad
de evitar al autor del programa originario el riesgo que supone a su reputación la
derivación de un programa con código muy defectuoso que se pudiera atribuir no al
autor derivado, sino a él, al autor del programa original. Lo mismo para evitar caballos
de troya, prohibiciones locales sobre transferencia tecnológica, como en criptografía,
etc. El apartado 4 exige la integridad del código original (algo legítimo) con medidas
innecesariamente restrictivas. El punto 8 sirve para separar claramente un programa
libre de una colección no libre de software. El programa libre lo seguirá siendo en
cuaquier caso, incluso si después se desagrega de la colección. Y el 9 señala que la

Plataforma de Teleformación de IFES Página 243 de 328
parte no transmite su carácter al todo. Esto supone la estanqueidad de las licencias.
La eficacia de la licencia de un programa no dependerá de las de los otros que se
encuentren en el mismo medio o soporte.

El argumento de la posible mayor vulnerabilidad del sl frente al software no libre, por
ejemplo ante caballos de troya, simplemente no tiene que ver con las condiciones
jurídicas de modificación y distribución del software, y naturalmente no es tratado aquí.
El software no es vulnerable en ese sentido por motivo del tipo de licencia que lleva
aparejada. Sí es necesario, en ciertos ámbitos de distribución y ante cierto tipo de
modificaciones (es decir, no siempre) un seguimiento adecuado de las versiones y de
su autoría. Pero estas exigencias no se atienden alterando el sistema copyleft, basta
el sistema de marcas, que nada tiene que ver con los derechos de autor; y un buen
sistema de control de versiones, se supone. No podemos tratar estos asuntos ahora, y
tal vez estemos en un error. Pero hay indicios de que estos argumentos contra el sl y el
copyleft son inválidos.

Para disipar los temores de los hombres de negocios, o quienquiera que vea tras
el copyleft al gran satán, es aconsejable muchas veces el uso adecuado de la Ley
de Marcas. Quien desee apropiarse de sl para mantener la autoría sin riesgos de
confusión hará mejor en registrar una marca, creándose así versiones oficiales de fácil
control y gestión. Esto es lo que se ha hecho con Linux -que es GPL- y tantos otros
casos. Todo ello sin tocar la licencia libre, incluso manteniendo la cláusula copyleft.

Clasificaciones de las licencias
No vamos a reproducir las clasificaciones más importantes, que puede encontrar
el lector en www.gnu.org/philosophy/categories.html y en el artículo de B. Perens
en "Open Sources..." citado al final, Apéndice C. Aquí nos basta retener tres
clasificaciones muy generales pero importantes:

1. La división básica con la que se está de acuerdo, aunque no completamente,
entre software libre-software no libre. Esperamos haber convencido al lector
de que el término open source-fuente abierta es menos riguroso.
2. La división GNU añade dos criterios más a su clasificación de licencias:
"grado" de copyleft y compatibilidad con el sistema GNU, que aunque son de
interés no podemos tratar ahora.
3. La compatibilidad Open Source se basa en criterios más simples que los
anteriores de GNU, éstos más rigurosos en todos los sentidos.

Confiamos en versiones ulteriores de estas notas para desarrollar todo esto como
merece.

Página 244 de 328 Introducción a Linux
Infracción de una licencia de software libre
Para este asunto se recomienda consultar www.gnu.org/licenses/gpl-violation.html. Allí
se ofrece sintéticamente el camino para reaccionar ante lo que uno cree que es una
infracción de las condiciones de explotación y uso del software libre. En resumen, se
trata de comprobar la infracción, documentarla, e informar al titular del copyright, único
legitimado en apariencia para actuar contra el infractor. La FSF presta asistencia para
reaccionar contra las infracciones de la GPL.

Reacción por quien no es titular del copyright
En este subapartado presentamos una conjetura, probablemente válida, pero de la que
desconocemos aplicaciones prácticas: Es muy probable que en España dispongamos
actualmente de una o dos fórmulas de reacción adicionales frente a un atentado contra
una licencia de sl, vías que GNU-España extrañamente no menciona, y que trataremos
de demostrar sumariamente.

Es cierto que, bajo una licencia de software libre con copyleft, estrictamente hablando
sólo el titular del copyright (¡que no es necesariamente el autor!) tiene acción jurídica
contra la infracción de su derecho, manifestado en la licencia violada. Pero también
lo es que los usuarios del programa copyleft cuya licencia alguien ha infringido tienen
interés legítimo en que la infracción se rectifique. Los usuarios pueden incluso haberse
organizado, por ejemplo en un colectivo de desarrolladores o simplemente en una
asociación de consumidores. Pues bien, la suma [interés legítimo + organización de un
grupo de consumidores] abre claramente la vía judicial también para quienes no son
autores, vía no basada en el copyright directamente sino indirectamente, a través de
la licencia. De hecho, debería bastar el interés legítimo esgrimido por un solo usuario,
pero esto puede resultar a menudo impracticable y es de más difícil digestión por los
jueces.

Esta vía está fundamentada muy sencillamente en el ensamblaje de varios preceptos
de la Constitución española y algunos más de otras leyes ordinarias. En síntesis,
se trata de la protección judicial de un genuino interés legitimo, para el que los
grupos, y singularmente las Asociaciones de Consumidores, se dice que tienen
"legitimación activa" . Puede llegar a obtenerse incluso protección administrativa
(oficinas municipales de consumo, p. ej.). No nos extenderemos aquí, sólo citaremos
los artículos, que el lector puede consultar por su cuenta: arts. 9.2 y 24.1 CE, 2.1.e y .f
LCU y 6.7º LEC.

Plataforma de Teleformación de IFES Página 245 de 328
Con esto ha debido de quedar tratado lo más importante. Para completar el cuadro sólo
resta tratar brevemente dos asuntos complementarios y de distinto interés.

Expansión del modelo de las licencias de software libre
Este apartado se incluye como ilustración del potencial de la construcción jurídica
contenida en las licencias de software libre, y no pretende ni de lejos dar cuenta al
mismo nivel que en los apartados anteriores de los modelos que se citan.

La Licencia de Documentación Libre. Otras licencias similares

No vamos a tratar de la licencia de documentación libre, GNU-FDL (GFDL o
simplemente para nosotros FDL), propuesta por la FSF para los manuales de uso,
documentación técnica y otros textos. El lector sabrá ahora leerla y comprender
su significado por sí solo, es similar a la GPL. Estrictamente hablando, en Derecho
español no es necesaria, pues la documentación de un programa se protege con el
mismo copyright que el del programa mismo. Pero en la práctica es muy útil, por dos
razones: En primer lugar permite modular las exigencias de una licencia copyleft,
pensada para el software, a las de los textos escritos, por ejemplo preservando algunos
fragmentos, normalmente todo el contenido no técnico, cláusulas externas, etc, de
la característica autorización de libre explotación. Es la licencia apropiada para la
documentación del software, pero no sólo. Efectivamente, y en segundo lugar, una
licencia como la FDL permite, sin merma de los derechos de autor, la formación de
proyectos colectivos de documentación libre, normalmente técnicos y científicos. No es
apropiada para libros de poemas y memorias, al menos no se pensó con esa finalidad.
En general, la documentación FDL debe permitir la libre modificación del contenido
técnico, no del valorativo-personal.

Para la FDL, en la documentación libre debe distinguirse claramente los siguientes
textos de un manual o trabajo técnico cualquiera:

• Textos de Cubierta, que son los de Portada y Contraportada.
• Página de Título, que incluye la página de título misma y además las
necesarias para contener legiblemente cuanto la FDL requiere. En los libros
con formatos carentes de esta página, se llama Página de Título al texto
inmediato a la aparición más prominente del título de la obra, que precede al
comienzo del Cuerpo del Texto.
• Cuerpo del Texto.
• Secciones Secundarias, para materias como notas editoriales, advertencias
legales, valorativas, etc, sin conexión directa con el Cuerpo del Texto.
Dentro de ellas se encuentran las Secciones Invariantes, inalterables en las
modificaciones.

Página 246 de 328 Introducción a Linux
• Puede, incluso a veces debe, incluirse secciones como Historia,
Reconocimientos y Dedicatorias. Obligatoriamente han de quitarse en
las modificaciones las aprobaciones (endorsements), homologaciones o
similares que recaigan sobre el texto original, pues son exclusivos de éste.

La advertencia de copyright y el aviso de licencia FDL deben contener las siguientes
indicaciones: a) cuáles son los Textos de Cubierta, si los hay, ya sean de portada o
contraportada; y b) cuáles son las Secciones Invariantes. No puede exponerse ahora
ni siquiera los aspectos más relevantes de este singular sistema de liberación de
facultades de propiedad intelectual.

Tal vez a los teóricos del sl les sorprenda que el ejercicio del Derecho sea una
profesión abierta, en el sentido de que los profesionales intercambiamos libremente
nuestros conocimientos y argumentaciones jurídicas (¡no los derechos sobre nuestros
libros!). Es un hecho normal, indiscutido, el que unos a otros nos fusilemos nuestros
textos, desde siempre jamás, con ciertos límites, claro está. La FDL y otras licencias
parecidas tal vez completen el régimen de libertad intelectual de que disfrutamos los
juristas, propiciando p. ej. textos universitarios libres, de los que tan necesitados están
los estudiantes, los profesores y los profesionales.

El examen de la documentación libre requeriría un trabajo por sí solo, pero en cuanto al
contenido jurídico de las licencias lo esencial ya ha quedado expuesto antes. Además
de la FDL se puede encontrar documentación amparada en licencias libres como la
FreeBSD Documentation Lic., la Apple's Common Documentation Lic., la algo menos
estricta Open Publication Lic., que puede o no aplicarse "copylefting" , y algunas más.
También se dispone de la Open Science Lic., licencia libre y copyleft, redactada para
dar esa cobertura a datos en general, no sólo software.

Adviértase que otra idea surgida en el seno de Debian, Open Hardware, no tiene
directamente que ver con las licencias de software. Consiste en un programa de
certificación, exactamente de calificación de hardware según ciertas especificaciones,
diseñado para verificar que una configuración de máquina es apta para un sistema
Linux o FreeBSD. Incluye la promoción de un certificado de la verificación, llamado
"certificado open hardware" para uso por los vendedores y consumidores.

Software no libre
Comprende todo el software que no es libre. Es un género, con muchas especies.

Primero tenemos el software semilibre, cuya licencia contiene autorización para la libre
copia, modificación y distribución, pero siempre que no tengan carácter comercial. Esta
es una restricción muy importante sobre todo a la distribución, que desnaturaliza la

Plataforma de Teleformación de IFES Página 247 de 328
finalidad del sl, por eso no lo calificamos como libre. Por ejemplo, el software semilibre
no permite su incorporación a paquetes copyleft. La restricción de la autorización a la
explotación no comercial añade muy poco a la libertad de uso, o más bien restringe la
posibilidad de ser utilizado. Parte de una idea errónea o de una valoración incorrecta
del ánimo de lucro. La primera versión de la GPL encajaba en esta definición, pero la
versión 2 (1991) retiró la restricción, por innecesaria.

El segundo grupo de software no libre es el "propietario" . Esta denominación es
inexacta por más de un motivo. Con ella quiere denominarse lo que la FSF llama
"software no libre que no es semilibre" . Podría decirse entonces que es software
aprisionado, enjaulado, inaccesible. Desde luego está lleno de limitaciones al libre
uso, es intransferible, incopiable sin convertirse uno en infractor, inmodificable (no
mejorable por los usuarios directamente) y de ningún modo redistribuíble. En este
artículo preferimos denominarlo software "cerrado" . Así entendidos, estos programas
ni siquiera forman parte de la máquina. No serían ni contendrían piezas que uno puede
examinar, reparar, o sustituir si son defectuosas. Pero la realidad es que el software
sí forma parte de la máquina, y no hay razón para que quien puede reparar o repintar
o recauchutar un automóvil utilitario no pueda hacerlo en un programa utilitario, sobre
todo si es un sistema operativo o un compilador.

Hay otras subespecies de software no libre, las repasamos en los apartados siguientes,
apuntando rápidamente las restricciones que imponen a las libertades básicas de los
usuarios.

En este artículo no tratamos el pseudotipo "software comercial" , categoría para
nosotros inútil porque no es puesta en cuestión por el sl; aunque sí por el software
semilibre, que no admite el uso comercial de los programas licenciados. Tampoco
podemos tratar fenómenos tan extraños como MSAgent, una especie de "software libre
revocable" que no es en modo alguno software libre.

Restricciones de uso
Lo que califica a un programa como semilibre es que su uso y explotación quedan
limitados a un destino no comercial. Esta restricción no resulta aceptable, ya lo hemos
dicho, y no la trataremos más.

También el software cerrado impone graves restricciones de uso del software. Se
prefiere en este artículo llamar al software propietario "software cerrado" no por afán
de neologismo sino para ilustrar mejor que su uso y explotación no son libres, además
de por corrección idiomática y jurídica. Sobre él no es preciso decir mucho más de
cuanto ha quedado expuesto en los apartados anteriores, y quien desee información

Página 248 de 328 Introducción a Linux
adicional hará bien en acudir a un manual de propiedad intelectual sobre programas de
ordenador, cosa que este artículo no pretende ni puede ser.

No tiene sentido examinar las limitaciones impuestas en las licencias estándar de
software cerrado, ya se han citado algunas en apartados anteriores, como la fórmula
de aceptación de licencia consistente en romper los precintos del paquete de CDs, es
decir, antes de toda posibilidad de uso y comprobación, contra el art. 10bis LCU. En
el software cerrado simplemente la licencia no tiene otra finalidad que la de plegarse
de modo obsesivo a las facultades del copyright (de la LPI en España), prescindiendo
de cualquier consideración sobre las libertades constitucionalmente garantizadas de
los usuarios de software, sin otra finalidad que la explotación exclusiva, normalmente
no por su autor sino por un titular derivado, y lesionando (sin advertirlo, claro está) sus
propios intereses de mercadotecnia y desarrollo.

El uso queda prohibido sin licencia aceptada, imposibilitándose la instalación,
restringiéndola a monopuesto, o necesitándose una reactivación de la licencia si se
supera determinado número de componentes del hardware (!). No pueden evitar estas
licencias el que se apliquen las normas imperativas que hemos visto en el apartado
2.1.3, pero quedan restringidas al máximo, de hecho se imposibilitan porque las
modificaciones necesarias no son factibles sin el código fuente, nunca disponible.

Con lo visto hasta ahora, queda claro que la subcategoría "shareware" se refiere
a programas cerrados que restringen el uso si no se paga una cantidad de dinero
adicional pasado un período de prueba. Normalmente son programas incompletos,
mejor dicho mutilados.

Limitaciones a la libre reproducción y copia
Estas actividades no son autorizadas en el softawre cerrado, e incluso pueden
impedirse automáticamente. Las copias de seguridad se restringen en lo posible. La
copia privada es calificada incorrectamente de piratería en varias licencias que se ha
podido consultar.

Límites a libre transformación y modificación
En el software cerrado y sus variantes la transformación está prohibida, y ni siquiera
es factible, pues el código fuente nunca se acompaña en la distribución. Los
componentes del software no pueden separarse legítimamente. Caso de hacerse
alguna transformación legítima, si la licencia se revoca los archivos fuentes derivados

Plataforma de Teleformación de IFES Página 249 de 328
han de destruirse (!). El shareware tampoco es modificable, pues casi siempre es
cerrado y además no acompaña las fuentes.

El denominado "freeware" es normalmente software cerrado que, aunque puede
redistribuirse con muchos límites -no libremente- no puede sin embargo ser modificado,
entre otras razones porque el programa fuente no está disponible. No es en modo
alguno software libre contra lo que indica su (impropio) nombre.

Límites a la libre distribución
En el software cerrado la distribución y la redistribución están sencilla y rotundamente
prohibidas, salvo en los casos del llamado freeware. Esto incluye la prohibición de
alquiler y préstamo.

Conclusión
El matemático David Hilbert, refiriéndose a la teoría de conjuntos creada por Georg
Cantor, objeto del desprecio de otros matemáticos, decía "nadie podrá expulsarnos del
paraíso que Cantor ha creado para nosotros" . Desde los ingenieros y programadores
hasta los usuarios menos avezados, pasando por distribuidores, empresas comerciales
y universidades, formamos legión quienes hacemos correr sobre nuestras máquinas
programas libres, hackeados y compilados por nosotros mismos conforme a nuestras
necesidades y gustos, que nos prestamos y copiamos libremente, con la destreza y
seguridad que permiten el mejor banco de pruebas posible, una variedad inagotable
de soluciones, siempre en renovación, y una documentación de calidad superior a
la estándar de los programas no libres. El software libre, sobre todo si es copyleft,
mantiene e impulsa el entusiasmo universal en la computación, especie en peligro en
las dos últimas décadas, e incluso comienza a servir de referencia para otros ámbitos
de la libertad intelectual.

No es seguro que esta apreciación de la realidad sea completa, pero es la de mucha
gente. Además, es el objeto de una polémica contemporánea trascendental, que no se
trata en este artículo sino muy de pasada. Las piezas puestas en juego por el software
libre son muchas y poderosas. Es cierto que el software libre trata de la libertad, y que
éste no es un asunto sólo comercial o industrial. Simplemente, es una asunto muy
grande, de enjundia, origen o final de conflictos a veces muy serios.

En fin, tal vez la cosa esté a estas alturas algo más clara y podamos parafrasear a
Hilbert tranquilamente, pero sin bajar la guardia: Nadie podrá expulsarnos del paraíso
que la GNU-GPL ha creado para nosotros.

Página 250 de 328 Introducción a Linux
Apéndices
Apéndice A - Abreviaturas utilizadas
• CC - Código civil
• CE - Constitución española
• CP - Código penal
• Disp. Ad. - Disposición adicional
• Disp. Trans. - Disposición transitoria
• FSF - Free Software Foundation
• GNU-GPL - Licencia Pública General del proyecto GNU - GNU's Not Unix
• LCU - Ley de consumidores y usuarios
• LEC - Ley de enjuiciamiento civil
• LPI - Ley de propiedad intelectual
• MEDC - Ministerio de Educación, Cultura y Deporte
• OSD - Definición de Fuente Abierta, de la Open Source Initiative
• OSI - Open Source Initiative
• RD - Real Decreto
• RTV - Radiotelevisión
• sl - Software libre
• UE - Unión Europea

Apéndice B - Leyes, reglamentos, tratados
internacionales
Disposiciones españolas:

• La LPI vigente está recogida en el texto refundido de 1996, aprobado por
Real Decreto Legislativo 1/1996 de 12 de abril, publicado en el BOE núm.
97 de 22 de abril. Las últimas reformas se produjeron en marzo de 1998 y
enero de 2000. Está en elaboración una nueva modificación, por motivo de
la Directiva 2001/29/CE del Parlamento y Consejo, 22 de mayo, publicada
el 22 de junio 2001, sobre armonización de determinados aspectos de los
derechos de autor y derechos afines en la sociedad de la información.
• Ley orgánica, de protección al honor, a la intimidad personal y familiar y a la
propia imagen, 1/1982 de 5 de mayo.
• Ley general para la defensa de los consumidores y usuarios, 26/1984 de 19
de julio.
• Ley de patentes, 11/1986 de 20 de marzo.

Plataforma de Teleformación de IFES Página 251 de 328
• Ley de protección de las topografías de los semiconductores, 11/1988 de 3
de mayo.
• Ley de marcas, 17/2001 de 7 de diciembre.
• El Código penal español fue aprobado por la Ley Orgánica 10/1995 de 23 de
noviembre, BOE 281 de 24 de noviembre.
• Ley de enjuiciamiento civil, 1/2000 de 7 de enero.
• Real Decreto 1584/1991 de 18 de octubre, que aprueba el Reglamento del
Registro General de la Propiedad Intelectual. Es el que viene aplicándose
hasta que se encuentre totalmente en funcionamiento el sistema de registro
diseñado por el Real Decreto 733/1993 de 14 de mayo, que aprueba el
nuevo Reglamento del Registro General de la Propiedad Intelectual.
• RD 114/2000 de 28 de enero (BOE 33 de 8 de febrero), de la Comisión
Interministerial para actuar contra las actividades vulneradoras de los
derechos de propiedad intelectual e industrial (Comisión antipirateo).
• Reglamento del Consejo de la UE que prohibe la comercialización de
mercancías piratas y la intervención de las aduanas para impedirla, Rgl.(CE)
241/1999 de 25 de enero, DOCE 2.2.1999 L 27.

Convenios internacionales:

• Convenio de 14 de julio de 1967 que establece la Organización Mundial de
la Propiedad Intelectual.
• Convenio de Berna de 9 de septiembre de 1886 para la protección de las
obras literarias y artísticas, revisado en París el 24 de julio de 1971.
• Convención Universal de Ginebra de 6 de septiembre de 1952 sobre
Derecho de Autor, revisada en París el 24 de julio de 1971.

La Organización Mundial de la Propiedad Intelectual (OMPI) con sede en Ginebra, y
la Organización Mundial del Comercio (OMC) son foros generadores de importantes
documentos y acuerdos internacionales en materia de derechos de propiedad
intelectual.

Apéndice C - Referencias
Se incluye sólo una breve nota de los materiales utilizados.

Un libro introductorio, que no trata a fondo las cuestiones jurídicas pero sí el tema
general del software libre, WAYNER, P., "La ofensiva del software libre" , ed. Granica,
Barcelona, 2001.

Los sitios web en los que puede encontrarse información sobre los asuntos tratados
en este artículo son naturalmente innumerables. Un buen libro en línea se encuentra

Página 252 de 328 Introducción a Linux
en www.oreilly.com/opensources/, "Open Sources: Voices from the open source
revolution" , con artículos de E. S. Raymond, M. K. McKusick, S. Bradner, R. Stallman,
M. Tiemann, P. Vixie, L. Torvalds, R. Young, L. Wall, B. Behlendorf, B. Perens, T.
O'Reilly, y J. Hamerly y T. Paquin con S. Walton, ed. O'Reilly Ass., Inc., 2000.

Para conocer los fundamentos del software libre, y no sólo los jurídicos, es evidente
que el directorio recomendado está en www.gnu.org/philosophy/. La mejor aplicación
práctica de la teoría del proyecto GNU está basada en www.debian.org/social_contract.
Un buen lugar para empezar a leer sobre programas libres y sus problemas en cuanto
a licencias es www.opensource.org

En castellano puede consultarse http://gsyc.escet.urjc.es/sobre/, grupo SoBre de
software libre.

Una lectura nueva y práctica se encuentra en el proyecto (proposición diríamos en
España) de ley sobre uso del software libre en la Administración pública, remitido al
Congreso peruano el 9 de abril de 2002 por los congresistas E.VILLANUEVA NÚÑEZ y
J.RODRICH ACKERMAN, http://www.gnu.org.pe/rescon.html.

Artículos
• Lista por temas
• Lista por autor
• Licencia GFDL
• Licencia GPL

La Espiral
• Objectivo/ Noticias
• Recetas
• Contribuir
• Historia
• Repositorio CVS
• Contacto

v. 0.92, 16 de abril de 2002
© Copyright 2001, 2002, 2003, 2004, La Espiral, debian-laespiral@lists.debian.org
Permitida la cópia y distribución textual, integral, siempre y cuando se mantenga este
aviso.

Plataforma de Teleformación de IFES Página 253 de 328
Internet y herramientas de red

Navegadores de la World Wide Web (WWW)
Adaptado de:
http://www.gulic.org/cila/libro
, un documento libre del Grupo de usuarios Gulic

Durante muchos años Netscape Communicator 4 fue el único navegador
multiplataforma real, dando cobertura a muchos de los distintos UNIX comerciales
existentes. Puesto que Linux no podía ser menos, casi desde que Linux tiene interfaz
gráfico ha existido una versión del navegador de Netscape para este sistema operativo.

Netscape Communicator 4 proporciona soporte para navegación de páginas web
con JavaScript y Flash 5, y permite visualizar documentos PDF dentro del navegador
(mediante un plugin para el Adobe Acrobat Reader). También nos permite gestionar el
correo electrónico y componer páginas web. Los Linuxeros siempre hemos considerado
que el navegador de Netscape consumía demasiados recursos en Linux, además de
tener bastantes problemas de estabilidad. Debido a éste y a otros factores importantes,
como fueron la forma de competir con la casa Microsoft Corporation, Netscape
Communications Corporation llegó a la sana conclusión de que la mejor manera de
mantener su navegador en el mercado era liberando su código fuente. Así nació el
proyecto Mozilla .

Sin embargo, Mozilla sigue siendo un navegador excesivamente pesado para un
número importante de máquinas. Dentro de la comunidad del Software Libre, se
alzaron voces en contra de ese desperdicio de recursos, proponiendo la creación de
navegadores alternativos. Aquí listamos algunas de las alternativas que podemos
encontrar en el área de los navegadores web dentro del Software Libre:

• Netscape Communicator: Bajo dicho nombre podemos encontrar el
navegador original de Netscape. La última versión es la 4.77.
• Epiphany: Es un navegador que utiliza el motor de rendering Genko de
Mozilla para mostrar el contenido de la World Wide Web. Sin embargo,
puesto que utiliza las bibliotecas de GNOME y GTK es ligeramente
más rápido que Mozilla, y se integra perfectamente con el resto de las
aplicaciones GNOME.
• Konqueror: Gestor de ficheros, navegador web y visor de documentos del
KDE.
• Mozilla: Es un sofisticado navegador gráfico de la World Wide Web que
soporta un gran número de tecnologías, como por ejemplo soporte para

Página 254 de 328 Introducción a Linux
HTML 4.0, CSS 2, JavaScript y Java. Además de poder ser utilizado como
un sencillo visor de HTML. Mozilla está basado en parte del código de los
navegadores Netscape Communicator y Netscape Navigator.
• Mozilla Firefox: Navegador que también procede de fundación Mozilla. En
los últimos tiempos se está convirtiendo en un navegador de referencia por
su rapidez y sencillez de uso.

Bueno, seguro que en el momento de leer este apartado, habrán surgido nuevos
navegadores web dentro del mundillo del Software Libre.

Mozilla
Mozilla es probablemente el más completo de los navegadores multiplataforma. Esto
es debido a que implementa soporte para un gran número de tecnologías de la World
Wide Web, y se ciñe rigurosamente a los estándares del W3C (nombre con el que
se conoce al World Wide Web Consortium, que es el organismo encargado de la
estandarización de las diferentes tecnologías presentes en la World Wide Web).

Plataforma de Teleformación de IFES Página 255 de 328
Ventana del navegador web Mozilla

Para centrarnos en el manejo de Mozilla empezaremos mirando la Figura. En ella
podemos observar la clásica ventana de navegación de Mozilla que es semejante a
la de otros muchos navegadores. A continuación enumeramos los elementos de la
ventana de arriba a abajo y de izquierda a derecha:

1. Barra de menús
2. Barra de herramientas de navegación
3. Barra de herramientas personales
4. Panel lateral
5. Área de visualización de la navegación
6. Barra de tareas

Página 256 de 328 Introducción a Linux
La visualización de la mayor parte de estos elementos puede activarse o desactivarse
desde el menú VER -> BARRA DE HERRAMIENTAS de la barra de menú del
programa.

Adicionalmente disponemos de una barra denominada barra de componentes. Dicha
barra se muestra como unos pequeños iconos a la izquierda de la barra de tareas
(parte inferior de la ventana del programa). Dicha barra nos permite lanzar de forma
sencilla y rápida algunas de las otras herramientas de Internet que acompañan al
navegador web Mozilla. Entre dichas herramientas disponemos de un editor de HTML y
de un lector de noticias y de correo electrónico.

Navegación básica
Para navegar por la World Wide Web basta con introducir la dirección de la máquina
o recurso al que deseamos acceder en la barra de herramientas de navegación. La
misma barra dispone a la izquierda de botones para avanzar o retroceder a través de
las páginas visitadas, recargar la página actual, o detener la descarga. A la derecha
de la barra disponemos de un botón de acceso rápido al menú de impresión, con el
que podemos imprimir la página actual. Para simplificar el aprendizaje, si dejamos el
puntero del ratón sobre cualquiera de los botones durante unos segundos la aplicación
nos informará de la función de cada uno.

Además de las funciones básicas la barra de herramientas de navegación nos permite
realizar búsquedas de términos en Internet. Para ello basta con introducir las palabras
a buscar en la propia barra y a continuación pulsar en el botón BUSCAR. El navegador
consultará al buscador que tengamos configurado (por defecto se trata del de Netscape
Network) y nos mostrará los resultados. El buscador utilizado puede ser configurado
en EDITAR -> PREFERENCIAS... -> NAVIGATOR -> BÚSQUEDA EN INTERNET.
Mientras que el contenido de la propia barra de herramientas de navegación puede
ser configurado en EDITAR -> PREFERENCIAS... -> NAVIGATOR. Nos ocuparemos
de describir el cuadro de diálogo PREFERENCIAS y las opciones de configuración de
Mozilla más a delante.

Plataforma de Teleformación de IFES Página 257 de 328
Menú del botón de retroceso de la barra de herramientas de navegación

Algunos de los botones de la barra de herramientas de navegación disponen de un
pequeño icono con forma de flecha en la parte inferior-derecha de los mismos. Dicho
icono suele desplegar un menú con opciones adicionales. En el caso particular de los
botones de avance y retroceso dicho menú nos permite elegir a que dirección, de entre
las ya visitadas, queremos avanzar o retroceder. Hay que tener en cuenta que si no
existiera el menú tendríamos que retroceder o avanzar por las páginas visitadas de una
en una.

Durante nuestra visita a la World Wide Web la barra de tareas suele mantenernos
informados de las acciones que realiza el navegador. Por ejemplo, nos informa de si

Página 258 de 328 Introducción a Linux
estamos detenidos y de cuanto se tardó en descarga la página actual, o de si estamos
descargando alguna página.

Además, la barra de tareas dispone de una serie de iconos en la parte derecha
con el objetivo de mantenernos informados del estado de la conexión. Si dejamos
unos segundos el puntero del ratón sobre dichos iconos seremos informados de
su significado, e incluso podremos realizar alguna acción relacionada con dicha
información.

• Trabajar sin conexión: Mientras disponemos de conexión a la red y
navegamos, Mozilla descarga las páginas que vamos visitando y las
almacena en el disco duro en lo que se denomina una caché. La existencia
de está caché es importante puesto que si visitamos varias veces una misma
dirección Mozilla no tiene necesidad de volver a repetir la descarga. En su
lugar nos proporciona directamente la página almacenada en la caché. En
ocasiones no disponemos de conexión a red por lo que sería deseable que
Mozilla no intentará descargarse la páginas desde la red y nos mostrara
directamente la copia en la caché. También es posible que aun habiendo
conexión estemos interesados en que Mozilla no haga uso de ella. Ese
modo de trabajo que andamos buscando es el denominado trabajo sin
conexión. Existe un icono que representa dos enchufes desconectados que
nos indica que estamos en dicho modo. Si los enchufes están conectados
significa que estamos haciendo uso de la conexión de red, es decir trabajo
con conexión. El paso de un modo de trabajo a otro se puede realizar
pulsando con el ratón sobre el icono, o seleccionando el elemento de menú
ARCHIVO -> TRABAJAR SIN CONEXIÓN.
• Cookies: En ocasiones algunos servidores de la World Wide Web requieren
que los navegadores que los acceden almacenen cierta información. En
muchos casos se trata de información sobre nuestras preferencias que
dichos servidores han recopilado, y que desean que guardemos para volver
a reclamarla cuando nos volvamos a conectar a sus páginas. Este tipo de
comportamiento puede ser un agujero de seguridad en potencia (o al menos
un problema de privacidad) por lo que Mozilla dispone de un filtro de cookies
que nos permite decidir en que servidores confiamos y en cuales no. Si
nuestro navegador ha aceptado una cookie para ser almacenada podremos
observar el icono de una galleta. Pulsando sobre la misma podremos
averiguar la información que contiene, asícomo configurar el filtro de cookies
frente a posibles peticiones futuras.
• Seguridad: Es importante recordar que todo lo que recibimos o enviamos
desde o hacia la World Wide Web es fácilmente interceptarle. Cuando
accedemos a páginas donde la seguridad de las comunicaciones es de vital

Plataforma de Teleformación de IFES Página 259 de 328
importancia dicha comunicación se hace cifrando los datos. Si disponemos
de un icono con un candado abierto en nuestro navegador significa que todo
lo que hagamos en Internet puede ser observado por otros. Sin embargo, si
dicho candado está cerrado es porque las comunicaciones son seguras, por
lo que tenemos garantías de que nuestros datos no pueden ser fácilmente
interceptados. Al pulsar sobre dicho icono obtendremos la información de
seguridad para la pagina actual.

Al igual que en muchos otros navegadores Mozilla dispone de un menú de contexto
activable pulsando con el botón derecho del ratón sobre alguno los elementos del
área de visualización. Dicho menú nos permite, por ejemplo, recargar la página actual,
descargar un enlace, o abrir un enlace en una ventana diferente, entre otras muchas
posibles acciones.

Durante la navegación por la World Wide Web resulta habitual disponer de varias
ventanas de Mozilla abiertas en páginas diferentes. Sin embargo, todas esas ventanas
están ligadas a un mismo proceso en ejecución del navegador Mozilla. Es importante
conocer esto puesto que si seleccionamos el elemento de menú ARCHIVO -> SALIR
TODAS las ventanas de Mozilla se cerraran, al terminar el proceso que las gestionaba.
Si por el contrario deseamos cerrar únicamente una de las ventanas en particular,
debemos seleccionar ARCHIVO -> CERRAR o utilizar el botón correspondiente de la
barra de título del marco de la ventana.

Pestañas
Una de las innovaciones tomada de otros navegadores e introducida en Mozilla es el
uso de las pestañas durante la navegación. Tanto si seleccionamos la opción ARCHIVO
-> NUEVO -> PESTAÑA DE NAVIGATOR, como si seleccionamos en ABRIR EN
UNA PESTAÑA NUEVA cuando pulsamos con el botón derecho en un enlace, se
nos abre una nueva área de visualización dentro de la misma ventana de Mozilla.
Podemos disponer de tantas áreas como deseemos y en cada una visualizar una
página diferente.

Página 260 de 328 Introducción a Linux
Navegación con pestañas en Mozilla

En la figura anterior podemos observar cómo cada área está representada por una
pestaña en la parte superior del área de visualización. Seleccionando un pestaña u
otra podremos navegar por una página u otra. Cuando deseemos cerrar la pestaña
seleccionada bastará con que pulsemos en botón a la derecha de todas las pestañas.
También podemos arrastrar un enlace en la pagina web del área de visualización sobre
una de las pestañas. Con ello conseguimos que en dicha pestaña se cargue el recurso
del la World Wide Web al que apunta dicho enlace (por ejemplo, una página web, una
imagen, etc).

Algunos aspectos del comportamiento de las pestañas pueden ser configurados en
EDITAR -> PREFERENCIAS... -> NAVIGATOR -> PESTAÑAS.

Plataforma de Teleformación de IFES Página 261 de 328
Marcadores
Mozilla nos permite almacenar de forma ordenada y clasificada las direcciones de los
recursos de la World Wide Web que más nos interesan. Dicho almacenamiento se hace
en forma de lo que se denominan marcadores.

Añadir la dirección de la página actual como marcador es tan sencillo como seleccionar
MARCADORES -> AÑADIR A MARCADORES. También podemos pulsar con el
botón derecho del ratón sobre un enlace y seleccionar la opción correspondiente para
añadirlo a los marcadores.

En todo caso el marcador se crea siempre al final de la lista. Si deseamos tener un
control más fino para, por ejemplo, añadir el marcador a una carpeta determinada,
podemos utilizar el menú MARCADORES -> ARCHIVAR MARCADOR...Dicha opción
del menú muestra un cuadro de diálogo que nos permite seleccionar el nombre del
nuevo marcador, crear carpetas de marcadores, y elegir en que carpeta deseamos
guardarlo. Los marcadores así creados son accesibles en forma de menús en el menú
MARCADORES de la barra de menús.

En ocasiones es necesario realizar sobre los marcadores tareas de administración
mucho más avanzadas. La opción MARCADORES -> ADMINISTRAR MARCADORES
despliega un cuadro de diálogo (figura siguiente) que nos permite manipular los
marcadores a nuestro antojo. Podemos movernos por el árbol de marcadores y
copiarlos o pegarlos con ayuda de ratón. También podemos alterar sus propiedades
utilizando el menú de contexto que se despliega con el uso del botón derecho de
nuestro ratón.

Página 262 de 328 Introducción a Linux
Cuadro de diálogo ADMINISTRAR MARCADORES

El administrador de marcadores dispone de opciones para ordenar los marcadores
según diversos criterios, para realizar búsquedas, y para exportar o importar hacia o
desde los marcadores de otros navegadores. Además de carpetas, el administrador
de marcadores nos permite crear separadores que se utilizan para separar elementos
dentro de los menús. Al igual que con el resto de las ventanas de Mozilla debemos
evitar utilizar la opción ARCHIVO -> SALIR puesto que ésta cierra todas la ventanas del
programa.

Entre las carpetas de marcadores existe una con un significado especial. La carpeta
PERSONAL TOOLBAR FOLDER representa la barra de herramientas personales, que
está situada debajo de la barra de herramientas de navegación. Todos los marcadores

Plataforma de Teleformación de IFES Página 263 de 328
insertados en dicha carpeta aparecerán automáticamente como botones en la citada
barra de herramientas.

Panel lateral
A la izquierda del área de visualización está el panel lateral o sidebar de Mozilla. Dicho
panel dispone de una serie de pestañas con funciones que ayudan a la navegación.
Utilizando el menú PESTAÑAS del panel lateral podemos decidir que pestañas vemos
de entra la disponibles. También podemos personalizar nuestro panel añadiendo
nuevas pestañas con nuevas funciones descargadas desde Internet.

Para que no interfiera con la navegación podemos modificar el ancho del panel
pulsando con el ratón en la barra que lo separa del área de visualización. Si hacemos
una pulsación sencilla sobre la pequeña marca del centro podremos plegar y desplegar
el panel de forma rápida. También podemos ocultarlo de forma permanente pulsando
en la equis de la parte superior-derecha del panel.

Por defecto, en el reducido espacio del panel lateral podemos consultar el historial y los
marcadores, y realizar búsquedas por palabras o por temas relacionados en Internet.
Sin embargo, como ya hemos comentado, dichas funcionalidades son completamente
ampliables.

Preferencias
Muchas de las características de Mozilla son personalizables. En la figura siguiente
podemos observar el cuadro de diálogo de preferencias de Mozilla. A dicho cuadro
podemos acceder desde la opción EDITAR -> PREFERENCIAS...

Las preferencias de Mozilla están clasificadas en categorías. Al seleccionar una
categoría podemos observar en el lado derecho de la ventana las opciones de
configuración relacionadas. Además, cada categoría puede contener subcategorías
cuya lista se despliega o se pliega con una pulsación simple del ratón sobre dicha
categoría.

Página 264 de 328 Introducción a Linux
Cuadro de diálogo de preferencias de Mozilla

• APARIENCIA: Preferencias tales como los colores, o los tipos de letras
utilizados por el navegador en la visualización de las páginas web son
establecidas en esta categoría. También podemos seleccionar el idioma
y el tema de la aplicación. Seleccionar un nuevo tema cambia el aspecto
visual de los botones, cuadros de diálogo, menú, barras de herramientas y
otros objetos. En Internet resulta sencillo encontrar todo tipo de temas para
personalizar nuestro navegador.
• NAVIGATOR: Las preferencias específicas del navegador son establecidas
en esta categoría. Entre ellas contamos con la dirección de la página
de inicio, el buscador por defecto, o la administración del historial de

Plataforma de Teleformación de IFES Página 265 de 328
direcciones. En ocasiones el contenido de las páginas web está disponible
en varios idiomas. En esta categoría podemos establecer los idiomas en los
que preferimos ver dichas páginas web.
• COMPOSER: En esta categoría podemos encontrar toda una serie de
opciones relacionadas con el editor de páginas web que viene con Mozilla.
• MAIL & NEWS: En caso de haber instalado el lector de noticias y de correo
electrónico de Mozilla, podemos acceder a esta categoría para configurarlo.
• PRIVACIDAD Y SEGURIDAD: Las preferencias de privacidad y seguridad
determinan las características del filtrado de cookies e imágenes. Además,
nos permite configurar el navegador para que guarde contraseñas o datos
de formularios que utilizamos habitualmente. También nos permite gestionar
los protocolos y certificados utilizados durante las conexiones encriptadas.
Debido a que la mayor parte de esta información confidencial es almacenada
en el disco duro, Mozilla permite la encriptación de dichos datos bajo una
contraseña maestra. Con ello se consigue que esa información no pueda ser
accesible a terceros.
• AVANZADAS: En esta categoría se configuran aspectos avanzados como
el soporte de Java y JavaScript, la configuración del caché, o el acceso a
la red a través de proxies. La opciones de esta categoría nos permiten, por
ejemplo, establecer qué permitimos y qué no permitimos hacer a las páginas
web a las que accedemos.
• SIN CONEXIÓN Y ESPACIO EN DISCO DURO: Configuración sobre el
comportamiento del navegador en los modos de trabajo con conexión y sin
conexión. Podemos utilizar la ayuda para obtener información más detallada
de cada una de las opciones.

Programas FTP (gFTP)
Existen multitud de programas clientes de FTP tanto para la consola como para el
entorno gráfico.

gFTP es el cliente FTP del entorno de escritorio GNOME. Se trata, por tanto, de un
cliente en modo gráfico diseñado para facilitar el acceso a los recursos FTP. El uso de
un cliente en modo gráfico nos permite olvidarnos de los comandos del protocolo FTP.
En su lugar todas las operaciones se reducen a sencillas acciones sobre la interfaz
gráfica.

Página 266 de 328 Introducción a Linux
Ventana de gFTP en una conexión a ftp.es.debian.org

En la figura anterior podemos observar la ventana de un gFTP con una conexión a
ftp.es.debian.org. Para iniciar una sesión de FTP con gFTP debemos recurrir a la
barra situada justo debajo de la barra de menús. En ella debemos especificar los datos
requeridos para realizar la conexión.

• SERVIDOR: En este campo debemos escribir el nombre de la máquina
remota a la que nos vamos a conectar. En el de la figura anterior fue
ftp.es.debian.org.
• PUERTO: Cada servicio que se ofrece en Internet tiene un puerto asociado.
El puerto por defecto para el servicio de FTP es el 21, aunque algunas
máquinas dan dicho servicio en otro puerto cualquiera. En este campo se

Plataforma de Teleformación de IFES Página 267 de 328
debe especificar el puerto en el que la máquina remota está esperando
las peticiones de FTP. Si no se indica nada, como es nuestro caso, gFTP
asumirá que queremos utilizar el puerto por defecto, es decir, el 21.
• USUARIO: En este campo debemos indicar el nombre de usuario con el que
queremos acceder a la máquina remota. Si el servidor es público, lo más
probable que utilizando el nombre anonymous podamos acceder a través de
la cuenta de usuario anónima.
• CONTRASEÑA: La contraseña asociada al usuario con el que queremos
acceder. En caso de acceder a través de la cuenta de usuario anónima
debemos indicar nuestra dirección de correo electrónico.
• PROTOCOLO: El último campo nos permite indicar el protocolo que vamos
a utilizar para nuestra conexión. gFTP no sólo puede utilizar el protocolo
FTP para realizar transferencias de archivos. Por ejemplo, podemos utilizar
SSH2 para realizar transferencias de archivos encriptadas. Esto garantiza
que tanto nuestro datos (nombre de usuario, contraseña, etc) como los
de los archivos estén seguros frente a intentos de interceptación de las
comunicaciones. Es importante destacar que el protocolo FTP no es un
protocolo seguro, en el sentido de que nuestra contraseña y todos los demás
datos que viajen por la conexión son fácilmente interceptables.

Tras completar los datos podemos pulsar en el botón de la izquierda para iniciar la
sesión. gFTP se encarga de enviar los comandos necesarios para iniciar la conexión,
evitándonos el engorroso problema de tener que conocerlos. El botón de la izquierda
nos permite iniciar una conexión si ésta no ha sido iniciada, o terminarla si ya ha sido
iniciada correctamente. Sin embargo, si queremos detener el intento de conexión en
curso debemos recurrir al botón de la derecha. Dicho botón se utiliza para abortar
cualquier tarea que gFTP esté realizando en el momento actual.

En la parte inferior de la ventana de gFTP podremos observar un registro de la
conexión. En rojo veremos información propia de gFTP, en verde observaremos
los comandos que gFTP envía a la máquina remota, y en azul podremos ver la
respuestas de la máquina remota a dichos comandos. Sea cual sea la tarea que
estemos realizando siempre quedará registrada en esa zona de la ventana. Por eso
suele ser importante estar atento a ella para saber en todo momento lo que está
sucediendo. Utilizando la barra de desplazamiento de la derecha podremos ver los
mensajes antiguos, o que hayan pasado demasiado rápido.

El centro de la ventana de gFTP está dividido en dos áreas que podemos utilizar para
navegar por el árbol de directorios. El área de la izquierda podemos utilizarla para
movernos por el árbol de directorios de la máquina local. Mientras que el área de la
derecha, siempre y cuando gFTP esté conectado, podemos utilizarla para movernos

Página 268 de 328 Introducción a Linux
por el árbol de directorios de la máquina remota. En ambos lados podemos utilizar el
botón derecho del ratón para desplegar un menú de contexto con un amplio conjunto
de opciones. Con ellas podemos crear directorios, renombrar archivos, ver y editar
archivos, modificar sus atributos, borrar, etc.

Mientras que la doble pulsación sobre una directorio nos permite ver su contenido,
una doble pulsación sobre un archivo inicia una transferencia para que el archivo sea
enviado al otro lado de la conexión. El mismo efecto conseguimos si seleccionamos
uno o más archivos (p. ej. pulsando con el botón izquierdo del ratón sobre el archivo
deseado mientras mantenemos pulsada la tecla Ctrl o Shift) y los arrastramos al área
del otro lado. También podemos conseguir el mismo efecto si pulsamos sobre los
botones situados en el centro de las dos áreas. Dichos botones nos permiten iniciar la
transferencia de archivos en el sentido que más nos convenga.

Justo entre el área donde se registran las tareas realizadas por gFTP y la que
utilizamos para explorar los árboles de directorios, tenemos la cola de transferencias.
Todas las transferencias iniciadas o pendientes se muestran en dicha área, así como
información relacionada con ellas. Utilizando el menú de contexto que se despliega
con el botón derecho de nuestro ratón podemos detener o iniciar una transferencia, o
alterar el orden de la cola para decidir qué transferencia se iniciará después de que se
complete la actual. Por defecto, las transferencias desde máquinas remotas diferentes
se realizan en paralelo, mientras que las transferencias desde una misma máquina
remota que se van realizando secuencialmente.

Mensajería instantánea y IRC
Gaim
Entre la surtida gama de clientes de Mensajería Instántanea, destacaremos el
programa Gaim. La característica que nos mueve a destacar este programa en
particular es la gran cantidad de protocolos soportados en un único cliente. Con este
cliente de Mensajería Instántanea podremos conectarnos con los servicios de MSN,
Yahoo, AOL, ICQ, Jabber, Napster o el propio IRC, por citar algunos de los protocolos
soportados.

Plataforma de Teleformación de IFES Página 269 de 328
Ventana de Gaim en una charla con otro usuario a través de Jabber

XChat/KVirc
Otro de los servicios que se suelen utilizar con bastante frecuencia, se encuentran las
“consultas” al IRC. Este protocolo nos permite estar interconectados con otros grupos
de usuarios, de una manera muy dinámica. En Linux, en el apartado de clientes de IRC
gráficos, destacan especialmente dos clientes: XChat y KVirc
XChat es un cliente de IRC muy flexible, que nos permite mantener sesiones no sólo
en varios canales al mismo tiempo, sino que incluso nos permite conectar con varios
servidores de IRC al mismo tiempo, todo ello de una manera muy intuitiva.

Página 270 de 328 Introducción a Linux
Ventana de Xchat en un canal de IRC

De la misma manera, el KVirc es otro cliente gráfico capaz de satisfacer al más
exigente de los usuarios. Entre otras cosas destaca por las ayudas que presta a
aquellos que les gusta disfrutar haciendo “scripts” para los clientes de IRC.

Aplicaciones de correo electrónico
Adaptado de:
http://linux-cd.com.ar/manuales/rh9.0/rhl-gsg-es-9/ch-
emailclients.html
, un documento libre del Manual oficial de referencia de Red Hat Linux

Plataforma de Teleformación de IFES Página 271 de 328
El correo electrónico es un modo muy popular de comunicarse con otros a través
de Internet. Puede usarlo con un cliente de correo, una aplicación que entiende las
diversas transmisiones de correo electrónico estándar y le permite enviar, recibir y
leer el correo electrónico. Cualquier distribución Linux contiene varias aplicaciones
de correo electrónico, incluyendo los clientes de correo electrónico gráficos como por
ejemplo Evolution Mozilla Mail y clientes en modo texto tal como mutt . Todas las
aplicaciones de clientes de correo electrónico están diseñados para satisfacer a ciertos
tipos de usuarios; de manera que pueda escoger uno con las características que mejor
satifacen sus necesidades en particular.

Ya que algunos clientes de correo electrónico ejecutan las mismas tareas básicas
(enviar y recibir correo electrónico), escoja la más conveniente y fácil de usar.

Antes de lanzar el cliente de correo electrónico, debería tener alguna información útil
sobre su Internet Service Provider (ISP) de manera que pueda configurar el cliente
adecuadamente. Las siguientes listas muestran algunas cosas que es necesario que
conozca:

Su dirección de correo electrónico
La dirección de correo electrónico que utilizará para enviar y recibir el correo.
Normalmente adopta la forma de yourname@yourisp.net .

Tipo de servidor para recibir correo (POP o IMAP)
Para recibir correo, debe saber el tipo de servidor que utiliza su administrador
de la red o proveedor de servicios de Internet. Esta dirección POP o IMAP
normalmente adopta la forma de mail.someisp.net .
POP, acrónimo de Post Office Protocol, se usa para enviar correo electrónico
desde un servidor de correo a su buzón de correodel cliente de correo electrónico,
el lugar en el que el correo electrónico de entrada está almacenado. La mayoría
de los servidores de correo electrónico ISP usan el protocolo POP, aunque
puedan utilizar el protocolo más reciente IMAP (Internet Message Access
Protocol).
IMAP, acrónimo de Internet Message Access Protocol, es un protocolo para
recuperar los mensajes de correo electrónico desde su servidor de correo
electrónico ISP. IMAP se diferencia de POP en que los correos electrónicos de
los servidores IMAP están almacenados en el servidor y permanece allí incluso
si descarga y lee su correo electrónico, mientras que el correo de POP está
descargado para su cliente de correo electrónico directamente y noestá en el
servidor.

Página 272 de 328 Introducción a Linux
Tipo de servidor para enviar correo electrónico (SMTP)
El Simple Mail Transfer Protocol (SMTP)(Protocolo de transferencia de
correo simple), es un protocolo para enviar mensajes de correo electrónico entre
servidores. La mayoría de los sistemas de correo electrónico que envían correo a
través de Internet utilizan el protocolo SMTP para enviar mensajes de un servidor
a otro; los mensajes se pueden recuperar posteriormente con un cliente de correo
electrónico que utilice el protocolo POP o IMAP. SMTP se utiliza normalmente
para enviar mensajes de un cliente de correo a un servidor de correo. Por este
motivo, deberá especificar tanto el servidor POP o IMAP como el servidor SMTP
cuando configure la aplicación de correo electrónico.

Si tiene alguna duda o pregunta sobre la información necesaria, póngase en contacto
con su proveedor de servicios de Internet o administrador de la red. Salvo si ha
configurado correctamente esta información, no podrá hacer un uso completo de los
clientes de correo electrónico que se describen en este capítulo.

Evolution
La aplicación Evolution es más que un simple cliente de correo electrónico.
Proporciona todas las funciones de administración de correo electrónico estándar,
que incluyen una administración eficaz de buzones, filtros definidos por el usuario y
búsquedas rápidas. Admite el uso de un calendario/programa flexible y permite a los
usuarios crear y confirmar reuniones de grupo en línea y eventos especiales. Evolution
es la primera herramienta completa de administración de información personal y de
trabajo en grupo para Linux y sistemas basados en UNIX.

Para lanzar Evolution en el panel del escritorio, seleccione Menú principal =>
Programas =>Internet =>Correo electrónico .

Plataforma de Teleformación de IFES Página 273 de 328
Pantalla de bienvenida de Evolution

La primera vez que inicie Evolution aparecerá la pantalla de bienvenida, que le permite
configurar su conexión de correo electrónico. Siga las instrucciones de la pantalla en
la información que ha recopilado desde su ISP o administrador en las casillas de texto
proporcionadas. Cuando acabe, haga click en Finish y verá la pantalla principal como
se muestra en la figura.

Página 274 de 328 Introducción a Linux
Pantalla principal de Evolution

Plataforma de Teleformación de IFES Página 275 de 328
Para ver el contenido de su buzón o enviar un correo, haga clic en el icono Inbox .

Página 276 de 328 Introducción a Linux
Pantalla de la bandeja de entrada de Evolution

Para componer un correo, seleccione New Message en la barra de herramientas.

Pantalla de nuevo mensaje de correo electrónico de Evolution

Plataforma de Teleformación de IFES Página 277 de 328
Cuando haya compuesto el mensaje y haya introducido la dirección de correo
electrónico a la que enviará el correo, haga clic en Send en la barra de herramientas.

Mientras que Evolution hace mucho más que leer y enviar correo electrónico, este
capítulo se centra exclusivamente en las posibilidades del correo electrónico. Si
desea conocer más sobre el uso de algunas de las características de Evolution ,
como calendario/programa y mensajes de grupo, haga click en Help desde la barra
de herramientas principal y escoja el componente que del que desea obtener más
información.

Mozilla Mail
En esta sección se ofrece una breve descripción de los pasos básicos para enviar y
recibir correo con Mozilla .

Para iniciar Mozilla Mail, seleccione Menú principal => Todas las aplicaciones
Internet => Mozilla Mail.

Para abrir Mozilla Mail mientras está en la aplicación Mozilla, haga clic en el icono de
correo situado en la esquina inferior izquierda de la pantalla de Mozilla.

Página 278 de 328 Introducción a Linux
Correo y noticias en Mozilla

Plataforma de Teleformación de IFES Página 279 de 328
Pantalla de nuevo mensaje de correo electrónico de la herramienta de correo de Mozilla

Para enviar un correo electrónico, haga clic en el botón Send o seleccione File =>
Send Now o Send Later . Si opta por enviar el correo más tarde, puede volver a la
pantalla de correo principal y seleccionar File => Send unsent messages .

Página 280 de 328 Introducción a Linux
Para leer el correo electrónico, haga clic en la carpeta de correo que ha creado para ver
una lista de los mensajes que ha recibido y todavía no ha leído. A continuación, haga
clic en el mensaje que desee leer.

Cuando haya leído un mensaje, puede eliminarlo o guardarlo en otra carpeta, entre
otras muchas opciones.

Mozilla y los grupos de noticias
Los grupos de noticias son grupos de debate en Internet que tratan temas específicos.
Los debates se realizan en formato threaded (lo que significa que todos los temas y
respuestas al tema están organizados de manera que la lectura y suscriptción a un
grupo sea sencilla. No debe enviar mensajes si no lo desea, puede llevar a cabo lurk,
que es un término de los grupos de noticias para la lectura sin enviar mensajes. Hay
muchos grupos de noticias realmente excelentes en la Web con temas que abarcan
desde la política hasta juegos de ordenador y extrañas filosofías. Puede enviar y
descargar fotografías y archivos a los grupos de noticias (aunque su ISP restrinja los
grupos de noticias a envios de sólo texto).

Para participar en un grupo de noticias, primero deberá configurar una cuenta de
grupo de noticias. Haga clic en el nombre de la cuenta de correo en la barra lateral y
seleccione Create a new account en las opciones que aparecen en el lado derecho
de la pantalla. Aparecerá la pantalla New Account Setup. Seleccione Newsgroup
account y haga click en Next.

Plataforma de Teleformación de IFES Página 281 de 328
Configuración de una cuenta para el grupo de noticias

Introduzca su nombre y la dirección de correo electrónico en la siguiente pantalla y
haga clic en Next. En la siguiente pantalla, escriba el nombre del servidor de noticias
(si no conoce el nombre del servidor de noticias, póngase en contacto con el proveedor
de servicios de Internet para que le proporcione esta información). En las últimas
pantallas, puede determinar o su administrador de redes para esta información). En las
otras pantallas, puede determinar el nombre al que esta cuenta se referirá y revisar la
configuración.

Ahora, aparecerá la cuenta de grupo de noticias que acaba de crear en la barra lateral
de la pantalla de correo de Mozilla . Haga clic con el botón derecho del ratón en este
nombre de cuenta y seleccione Subscribe. Aparecerá un cuadro de diálogo con una

Página 282 de 328 Introducción a Linux
lista de todos los grupos de noticias disponibles. Seleccione los grupos que desee leer
y haga clic en Subscribe. Cuando haya acabado, haga clic en OK.

Ahora, haga clic en la flecha situada junto al nombre de cuenta del grupo de noticias
y la lista de grupos a la que está suscrito aparecerá al lado. Seleccione el grupo de
noticias al que desea acceder y aparecerá un cuadro de diálogo con información sobre
cómo descargar y leer los mensajes existentes. La acción de publicar un mensaje en
un grupo de noticias es similar a escribir un correo electrónico, con la diferencia de que
el nombre del grupo de noticias aparece en el campo To en lugar de la dirección de
correo electrónico. Para anular la suscripción de un grupo de noticias, haga clic con el
botón derecho en el nombre del grupo y seleccione Unsubscribe.

Introducción a MySQL

Trabajar con MySQL
En este capítulo vamos a ver cómo:

• Qué es MySQL y usar el cliente mysql.
• Crear y usar una base de datos.
• Crear una tabla y añadir datos a la tabla.
• Seleccionar, modificar, ordenar y borrar registros de una tabla.
• Utilizar patrones de comparación en las consultas.
• Contar registros de una tablas.
• Usar más de una tabla en una base de datos.
• Usar mysql en modo batch.

¿Qué es MySQL?
MySQL es el servidor de bases de datos relacionales de código abierto más popular y
desarrollado. Una de las razones para el rápido crecimiento de popularidad de MySQL,
es que se trata de un producto de código abierto, y por lo tanto, va de la mano con este
movimiento. Consta de las siguientes características.

• MySQL es un sistema de administración de bases de datos. Una base
de datos es una colección estructurada de datos. Los información que puede
almacenar una base de datos puede ser tan simple como la de una agenda,
un contador, o un libro de visitas, ó tan vasta como la de una tienda en línea,
un sistema de noticias, un portal, o la información generada en una red
corporativa. Para agregar, acceder, y procesar los datos almacenados en

Plataforma de Teleformación de IFES Página 283 de 328
una base de datos, se necesita un sistema de administración de bases de
datos, tal como MySQL.
• MySQL es un sistema de administración de bases de datos
relacionales. Una base de datos relacional almacena los datos en tablas
separadas en lugar de poner todos los datos en un solo lugar. Esto agrega
velocidad y flexibilidad. Las tablas son enlazadas al definir relaciones
que hacen posible combinar datos de varias tablas cuando se necesitan
consultar datos. La parte SQL de "MySQL" significa "Lenguaje Estructurado
de Consulta", y es el lenguaje más usado y estandardizado para acceder a
bases de datos relacionales.
• MySQL es código abierto. Código abierto significa que la persona que
quiera puede usar y modificar MySQL. Cualquiera puede descargar el
software de MySQL de Internet y usarlo sin pagar por ello. Inclusive,
cualquiera que lo necesite puede estudiar el código fuente y cambiarlo de
acuerdo a sus necesidades. MySQL usa la licencia GPL (Licencia Pública
General GNU), para definir qué es lo que se puede y no se puede hacer con
el software para diferentes situaciones. Sin embargo, si uno está incómodo
con la licencia GPL o tiene la necesidad de incorporar código de MySQL en
una aplicación comercial es posible comprar una versión de MySQL con una
licencia comercial.

Usar el cliente mysql
El objetivo de este capítulo es mostrar el uso del programa cliente mysql para crear
y usar una sencilla base de datos. mysql (algunas veces referido como "monitor
mysql") es un programa interactivo que permite conectarnos a un servidor MySQL,
ejecutar algunas consultas, y ver los resultados. mysql puede ser usado también en
modo batch: es decir, se pueden colocar toda una serie de consultas en un archivo, y
posteriormente decirle a mysql que ejecute dichas consultas.
Lo primero es instalar mysql en alguna máquina y disponer de un servidor MySQL al
cuál podemos conectarnos. En nuestro caso, para instalarlo bajo Guadalinex, podemos
abrir un terminal de Root ejecutando el menú Herramientas del sistema>Terminal
de Root. Tecleamos la contraseña del root y, dentro del terminal, nos aparece el shell
(programa que interpreta y ejecuta los comandos que el usuario escribe en un indicador
de línea de comandos. Cuando iniciamos un Terminal, se activa el shell predeterminado
especificado en la cuenta del sistema donde tecleamos las siguientes órdenes:

shell>apt-get update
shell>apt-get install mysql-server mysql-client
Con apt-get install incluso nos configura el arranque, los derechos de ejecución y las
bases de datos propias de mysql y nos ahorramos tener que redefinir el PATH. Para
probar que todo ha ido bien ejecutamos la consola mysql :

Página 284 de 328 Introducción a Linux
shell>mysql

y nos debería de aparecer el mensaje de bienvenida siguiente y el promt de mysql:

Welcome to the MySQL monitor. Commands end with ; org.Your MySQL
connection id is 3 to server version: 4.0.16-logType 'help;' or
'h' for help. Type 'c' to clear the buffer.

mysql>

Conectarse y desconectarse al servidor MySQL
Para conectarse al servidor, usualmente necesitamos de un nombre de usuario (login)
y de una contraseña (password), y si el servidor al que nos deseamos conectar está
en una máquina diferente de la nuestra, también necesitamos indicar el nombre o la
dirección IP de dicho servidor. Una vez que conocemos estos tres valores, podemos
conectarnos de la siguiente manera en un terminal:

shell> mysql -h NombreDelServidor -u NombreDeUsuario -p
Cuando ejecutamos este comando, se nos pedirá que proporcionemos también la
contraseña para el nombre de usuario que estamos usando.
Algunas instalaciones, como la comentada anteriormente, permiten que los usuarios se
conecten de manera anónima al servidor corriendo en la máquina local. Si es el caso
de nuestra máquina, como ya hemos visto, debemos de ser capaces de conectarnos al
servidor invocando a mysql sin ninguna opción en un terminal:

shell> mysql
Este prompt nos indica que mysql está listo para recibir comandos. Para ver la lista de
opciones proporcionadas por mysql , lo invocamos con la opción 'h':

mysql>h

Después de que nos hemos conectado de manera satisfactoria, podemos
desconectarnos en cualquier momento al escribir "quit", "exit", o presionar CONTROL
+D.
La mayoría de los ejemplos siguientes asume que estamos conectados al servidor, lo
cual se indica con el prompt de mysql.

Ejecutar algunas consultas
En este momento debimos de haber podido conectarnos ya al servidor MySQL,
aún cuando no hemos seleccionado alguna base de datos para trabajar. Lo que

Plataforma de Teleformación de IFES Página 285 de 328
haremos a continuación es escribir algunos comandos para irnos familiarizando con el
funcionamiento de mysql

mysql> SELECT VERSION(), CURRENT_DATE;
+------------+--------------+
| VERSION() | CURRENT_DATE |
+------------+--------------+
| 4.0.16-log | 2004-11-03 |
+------------+--------------+
1 row in set (0.16 sec)

mysql>

Este comando ilustra distintas cosas acerca de mysql:

• Un comando normalmente consiste de un sentencia SQL seguida por un
punto y coma.
• Cuando emitimos un comando, mysql lo manda al servidor para que lo
ejecute, nos muestra los resultados y regresa el prompt indicando que está
listo para recibir más consultas.
• mysql muestra los resultados de la consulta como una tabla (filas y
columnas). La primera fila contiene etiquetas para las columnas. Las filas
siguientes muestran los resultados de la consulta. Normalmente las etiquetas
de las columnas son los nombres de los campos de las tablas que estamos
usando en alguna consulta. Si lo que estamos recuperando es el valor de
una expresión (como en el ejemplo anterior) las etiquetas en las columnas
son la expresión en sí.
• mysql muestra cuántas filas fueron regresadas y cuanto tiempo tardó en
ejecutarse la consulta, lo cual puede darnos una idea de la eficiencia del
servidor, aunque estos valores pueden ser un tanto imprecisos ya que no
se muestra la hora del CPU, y porque pueden verse afectados por otros
factores, tales como la carga del servidor y la velocidad de comunicación en
una red.
• Las palabras clave pueden ser escritas usando mayúsculas y minúsculas.

Aquí está otra consulta que demuestra cómo se pueden escribir algunas expresiones
matemáticas y trigonométricas:

mysql> SELECT VERSION(), CURRENT_DATE;
+------------+--------------+
| VERSION() | CURRENT_DATE |
+------------+--------------+

Página 286 de 328 Introducción a Linux
| 4.0.16-log | 2004-11-03 |
+------------+--------------+
1 row in set (0.16 sec)

mysql>

Aunque hasta este momento se han escrito sentencias sencillas de una sola línea, es
posible escribir más de una sentencia por línea, siempre y cuando estén separadas por
punto y coma:

mysql> select now();select version();
+---------------------+
| now() |
+---------------------+
| 2004-11-04 15:49:25 |
+---------------------+
1 row in set (0.00 sec)
+------------+
| version() |
+------------+
| 4.0.16-log |
+------------+
1 row in set (0.02 sec)

Un comando no necesita ser escrito en una sola línea, así que los comandos que
requieran de varias líneas no son un problema. mysql determinará en dónde finaliza la
sentencia cuando encuentre el punto y coma, no cuando encuentre el fin de línea.
Aquí está un ejemplo que muestra un consulta simple escrita en varias líneas:

mysql> select
-> user(),
-> current_date;
+-----------------+--------------+
| user() | current_date |
+-----------------+--------------+
| chema@localhost | 2004-11-04 |
+-----------------+--------------+
1 row in set (0.00 sec)

En este ejemplo notamos como cambia el prompt (de mysql> a ->) cuando se escribe
una consulta en varias líneas. Esta es la manera en cómo mysql indica que está

Plataforma de Teleformación de IFES Página 287 de 328
esperando a que finalice la consulta. Sin embargo si deseamos no terminar de escribir
la consulta, podemos hacerlo al escribir c como se muestra en el siguiente ejemplo:

mysql> select -> user(), -> c mysql>
De nuevo, se nos regresa el comando el prompt mysql> que nos indica que mysql está
listo para una nueva consulta.

En la siguiente tabla se muestran cada uno de los prompts que podemos obtener y una
breve descripción de su significado para mysql:

Prompt Significado
mysql> Listo para una nueva consulta.
-> Esperando la línea siguiente de una consulta
multi-línea.
'> Esperando la siguiente línea para completar
una cadena que comienza con una comilla
sencilla ( ' ).
"> Esperando la siguiente línea para completar
una cadena que comienza con una comilla
doble ( " ).
Tabla 20.1 Promts de mysql.

Los comandos multi-línea comúnmente ocurren por accidente cuando tecleamos
ENTER, pero olvidamos escribir el punto y coma. En este caso mysql se queda
esperando para que finalicemos la consulta:

mysql> SELECT USER() ->
Si esto llega a suceder, muy probablemente mysql estará esperando por un punto y
coma, de manera que si escribimos el punto y coma podremos completar la consulta y
mysql podrá ejecutarla:

mysql> SELECT USER()
-> ;
+-----------------+
| USER() |
+-----------------+
| chema@localhost |
+-----------------+

Página 288 de 328 Introducción a Linux
1 row in set (0.00 sec)

Los prompts '> y "> ocurren durante la escritura de cadenas. En mysql podemos
escribir cadenas utilizando comillas sencillas o comillas dobles (por ejemplo, 'hola' y
"hola"), y mysql nos permite escribir cadenas que ocupen múltiples líneas. De manera
que cuando veamos el prompt '> o "> , mysql nos indica que hemos empezado a
escribir una cadena, pero no la hemos finalizado con la comilla correspondiente.
Aunque esto puede suceder si estamos escribiendo una cadena muy grande, es más
frecuente que obtengamos alguno de estos prompts si inadvertidamente escribimos
alguna de estas comillas.
Por ejemplo:

mysql> SELECT * FROM mi_tabla WHERE nombre = "Lopez AND
antiguedad < 10;
">

Si escribimos esta consulta SELECT y entonces presionamos ENTER para ver el
resultado, no sucederá nada. En lugar de preocuparnos porque la consulta ha tomado
mucho tiempo, debemos notar la pista que nos da mysql cambiando el prompt. Esto
nos indica que mysql está esperando que finalicemos la cadena iniciada ("Lopez).
En este caso, ¿qué es lo que debemos hacer? . La cosa más simple es cancelar la
consulta. Sin embargo, no basta con escribir c, ya que mysql interpreta esto como
parte de la cadena que estamos escribiendo. En lugar de esto, debemos escribir antes
la comilla correspondiente y después c :

mysql> SELECT * FROM mi_tabla WHERE apellido = "Lopez AND
antiguedad < 10;
"> " c
mysql>
El prompt cambiará de nuevo al ya conocido mysql>, indicándonos que mysql está listo
para una nueva consulta.

Es sumamente importante conocer lo que significan los prompts '> y ">, ya que si
en algún momento nos aparece alguno de ellos, todas la líneas que escribamos a
continuación serán consideradas como parte de la cadena, inclusive cuando escribimos
QUIT. Esto puede ser confuso, especialmente si no sabemos que es necesario escribir
la comilla correspondiente para finalizar la cadena, para que podamos escribir después
algún otro comando, o terminar la consulta que deseamos ejecutar.

Plataforma de Teleformación de IFES Página 289 de 328
Crear y usar una base de datos
Ahora que conocemos como escribir y ejecutar sentencias, podemos ya acceder a una
base de datos.

Para ello, supongamos que tenemos mucha información musical en nuestra casa en
forma de compactos, discos de vinilo y cintas de casete y deseamos tener registros
de los datos acerca de ellas. Podemos hacer esto al crear tablas que guarden esta
información, para que posteriormente la consulta de estos datos sea bastante fácil y
de manera muy práctica. En esta sección vamos a ver como crear una base de datos,
crear una tabla, incorporar datos en una tabla, y recuperar datos de las tablas de
diversas maneras.

La base de datos "música" será deliberadamente muy sencilla, pero no es difícil pensar
de situaciones del mundo real en la cual una base de datos similar puede ser usada.

Primeramente usaremos la sentencia SHOW para ver cuáles son las bases de datos
existentes en el servidor al que estamos conectados:

mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)

Es probable que la lista de bases de datos que veamos sea diferente en nuestro caso,
pero seguramente las bases de datos "mysql" y "test" estarán entre ellas (si hemos
accedido como 'root'). En particular, la base de datos "mysql" es requerida, ya que ésta
tiene la información de los privilegios de los usuarios de MySQL. La base de datos
"test" es creada durante la instalación de MySQL con el propósito de servir como área
de trabajo para los usuarios que inician en el aprendizaje de MySQL.

Tenemos que tener en cuenta también que es posible que no veamos todas las bases
de datos si no tenemos el privilegio SHOW DATABASES.

Si la base de datos "test" existe, se puede acceder a ella:

mysql> USE test
Database changed

Página 290 de 328 Introducción a Linux
Observamos que USE , al igual que QUIT , no requieren el uso del punto y coma,
aunque si se usa éste, no hay ningún problema. El comando USE es especial también
de otra manera: éste debe ser usado en una sola línea.

Podríamos usar la base de datos "test" (si tenemos acceso a ella) para los ejemplos
que vienen a continuación, pero cualquier cosa que hagamos puede ser eliminada
por cualquier otro usuario que tenga acceso a esta base de datos. Por esta razón,
es recomendable que preguntemos al administrador MySQL acerca de la base de
datos que podemos usar. Supongamos que deseamos tener una base de datos
llamada "musica" (nótese que no se está acentuando la palabra) a la cual sólo nosotros
tengamos acceso, para ello el administrador necesita ejecutar un comando como el
siguiente:

mysql> GRANT ALL on musica.* TO MiNombreUsuario@MiComputadora
-> IDENTIFIED BY 'MiContraseña';

en donde MiNombreUsuario es el nombre de usuario asignado dentro del contexto de
MySQL, MiComputadora es el nombre o la dirección IP de la computadora desde la que
nos conectamos al servidor MySQL, y MiContraseña es la contraseña que se nos ha
asignado, igualmente, dentro del ambiente de MySQL exclusivamente. Ambos, nombre
de usuario y contraseña no tienen nada que ver con el nombre de usuario y contraseña
manejados por el sistema operativo.

Si el administrador creó la base de datos al momento de asignar los permisos,
podemos hacer uso de ella. De otro modo, nosotros debemos crearla:

mysql> USE musica
ERROR 1049: Unknown database 'musica'

El mensaje anterior indica que la base de datos no ha sido creada, por lo tanto
necesitamos crearla.

mysql> CREATE DATABASE musica;
Query OK, 1 row affected (0.00 sec)
mysql> USE musica;
Database changed
mysql>

Bajo el sistema operativo Guadalinex, los nombres de las bases de datos son sensibles
al uso de mayúsculas y minúsculas (no como las palabras clave de SQL), por lo tanto
debemos de tener cuidado de escribir correctamente el nombre de la base de datos.
Esto es cierto también para los nombres de las tablas.

Plataforma de Teleformación de IFES Página 291 de 328
Al crear una base de datos no se selecciona ésta de manera automática; debemos
hacerlo de manera explícita, por ello usamos el comando USE en el ejemplo anterior.

La base de datos se crea sólo una vez, pero nosotros debemos seleccionarla cada vez
que iniciamos una sesión con mysql . Por ello es recomendable que se indique la base
de datos sobre la que vamos a trabajar al momento de invocar al monitor de MySQL.
Por ejemplo:

shell>mysql -h localhost -u chema -p musica
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 9 to server version: 4.0.16-log
Type 'help;' or 'h' for help. Type 'c' to clear the buffer

Observamos que "musica" no es la contraseña que se está proporcionando desde la
línea de comandos, sino el nombre de la base de datos a la que deseamos acceder. Si
deseamos proporcionar la contraseña en la línea de comandos después de la opción
"-p", debemos de hacerlo sin dejar espacios (por ejemplo, -pholamundo, no como -p
holamundo). Sin embargo, escribir nuestra contraseña desde la línea de comandos no
es recomendado, ya que es bastante inseguro.

Crear una tabla
SHOW TABLES:Crear la base de datos es la parte más fácil, pero en este momento la
base de datos está vacía, como lo indica el comando SHOW TABLES

mysql> SHOW TABLES;
Empty set (0.00 sec)

La parte un tanto complicada es decidir la estructura que debe tener nuestra base de
datos: qué tablas se necesitan y qué columnas estarán en cada tabla.
En principio, necesitamos una tabla que contenga un registro para cada una de
nuestros títulos de música. Ésta puede ser una tabla llamada discos, y debe contener
por lo menos el título de cada uno de nuestros discos. Ya que el nombre en sí no
es muy interesante, la tabla debe contener alguna otra información. Por ejemplo, es
probable que queramos guardar la información acerca de quien es el interprete de
cada disco. Así mismo, también sería interesante contar con alguna información más
descriptiva tal como el género musical de cada disco.
¿Y que sucede con la antigüedad del disco? Esto puede ser también de interés, pero
no es una buena idea almacenar este dato en la base de datos. La antigüedad cambia
conforme pasa el tiempo, lo cual significa que debemos de actualizar los registros
frecuentemente. En vez de esto, es una mejor idea guardar un valor fijo, tal como

Página 292 de 328 Introducción a Linux
la fecha de adquisición. Entonces, cuando necesitemos la antigüedad, la podemos
calcular como la diferencia entre la fecha actual y la fecha de adquisición. MySQL
proporciona funciones para hacer operaciones entre fechas, así que no hay ningún
problema.
Es probable que estemos pensando en otro tipo de información que sería igualmente
útil en la tabla 'discos', pero para nosotros será suficiente por ahora contar con
información de título, autor, género y fecha de adquisición.

Usaremos la sentencia CREATE TABLE para indicar como estarán conformados los
registros de nuestras discos.

mysql> CREATE TABLE discos(
-> titulo VARCHAR(40), autor VARCHAR(20),
-> genero VARCHAR(20), adquisicion DATE);
Query OK, 0 rows affected (0.03 sec)

VARCHAR es una buena elección para los campos título, autor, y género, ya que los
valores que almacenarán son de longitud variable. Se puede especificar cualquier
longitud entre 1 y 255, lo que se considere más adecuado. Si resulta que la elección de
la longitud de los campos que hemos hecho no resultó adecuada, MySQL proporciona
una sentencia ALTER TABLE que nos puede ayudar a solventar este problema. El uso
del tipo de dato DATE para el campo adquisición debe de resultar obvio.

Ahora que hemos creado la tabla, la sentencia SHOW TABLES debe producir algo
como:

mysql> SHOW TABLES;
+------------------+
| Tables_in_musica |
+------------------+
| discos |
+------------------+
1 row in set (0.00 sec)

Para verificar que la tabla fue creada como nosotros esperábamos, usaremos la
sentencia DESCRIBE :

mysql> DESCRIBE discos;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| titulo | varchar(40) | YES | | NULL | |

Plataforma de Teleformación de IFES Página 293 de 328
| autor | varchar(20) | YES | | NULL | |
| genero | varchar(20) | YES | | NULL | |
| adquisicion | date | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

Podemos hacer uso de la sentencia DESCRIBE en cualquier momento, por ejemplo, si
olvidamos los nombres ó el tipo de las columnas en la tabla.

Añadir datos en una tabla

Después de haber creado la tabla, ahora podemos incorporar algunos datos en ella,
para lo cual haremos uso de las sentencias INSERT y LOAD DATA .

Supongamos que los registros de nuestros discos pueden ser descritos por los datos
mostrados en la siguiente tabla.

Título Autor Género Adquisición
MADE IN JAPAN DEEP PURPLE POP-ROCK 1991-02-04
CLUES ROBERT PALMER POP-ROCK 1998-03-17
CABO DO MUNDO LUAR NA LUBRE FOLK 1999-05-13
EN LA FUSA VINICIUS DE BRASILEÑO 2000-08-27
MORAES
RUMBA ARGELINA RADIO TARIFA ETNICO 1998-08-31
SUPERNATURAL SANTANA POP-ROCK 2001-09-11
A PESAR DE TODO HILARIO CAMACHO FOLK 1991-02-09
LADY SOUL ARETHA FRANKLIN SOUL 1994-04-29
GRATEST HITS BOB DYLAN FOLK 1997-01-22
Tabla 20.2 Datos de la tabla 'discos'

Debemos observar que MySQL espera recibir fechas en el formato YYYY-MM-DD, que
puede ser diferente a lo que nosotros estamos acostumbrados.

Página 294 de 328 Introducción a Linux
Ya que estamos iniciando con una tabla vacía, la manera más fácil de poblarla es crear
un archivo de texto que contenga un registro por línea para cada uno de nuestros
discos para que posteriormente carguemos el contenido del archivo en la tabla
únicamente con una sentencia.

Por tanto, debemos de crear un archivo de texto "discos.txt" que contenga un registro
por línea con valores separados por tabuladores, teniendo en cuenta que el orden
de las columnas sea el mismo que utilizamos en la sentencia CREATE TABLE. Para
valores que no conozcamos podemos usar valores nulos (NULL). Para representar
estos valores en nuestro archivo debemos usar N.

Para cargar el contenido del archivo en la tabla mascotas, usaremos el siguiente
comando:

mysql> LOAD DATA LOCAL INFILE "discos.txt" INTO TABLE discos;

La sentencia LOAD DATA nos permite especificar cuál es el separador de columnas
y el separador de registros. Por defecto, el tabulador es el separador de columnas
(campos), y el salto de línea es el separador de registros, que en este caso son
suficientes para que la sentencia LOAD DATA lea correctamente el archivo "discos.txt".

Si lo que deseamos es añadir un registro a la vez, entonces debemos hacer uso de la
sentencia INSERT . En la manera más simple, debemos proporcionar un valor para
cada columna en el orden en el cual fueron listados en la sentencia CREATE TABLE .
Podemos usar la sentencia INSERT para agregar un registro en nuestra base de datos.

mysql> INSERT INTO discos
-> VALUES('MOONDANCE','VAN MORRISON','POP-ROCK','2004-06-03');

Notar que los valores de cadenas y fechas deben estar encerrados entre comillas.
También, con la sentencia INSERT podemos insertar el valor NULL directamente para
representar un valor nulo, un valor que no conocemos. En este caso no se usa N como
en el caso de la sentencia LOAD DATA.

De este ejemplo, debemos ser capaces de ver que es un poco más la tarea que se
tiene que realizar si inicialmente cargamos los registros con varias sentencias INSERT
en lugar de una única sentencia LOAD DATA.

Recuperar información de una tabla

Plataforma de Teleformación de IFES Página 295 de 328
La sentencia SELECT es usada para obtener la información guardada en una tabla. La
forma general de esta sentencia es:

SELECT LaInformaciónQueDeseamos FROM DeQueTabla WHERE
CondiciónASatisfacer

Aquí, LaInformaciónQueDeseamos es la información que queremos ver. Esta puede
ser una lista de columnas, o un * para indicar "todas las columnas". DeQueTabla indica
el nombre de la tabla de la cual vamos a obtener los datos. La claúsula WHERE es
opcional. Si está presente, la CondiciónASatisfacer especifica las condiciones que los
registros deben satisfacer para que puedan ser mostrados.

Seleccionar todos los datos
La forma más simple de la sentencia SELECT es cuando se recuperan todos los datos
de una tabla:

mysql> SELECT * FROM discos;
+-----------------+--------------------+-----------+-------------
+
| titulo | autor | genero | adquisicion |
+-----------------+--------------------+-----------+-------------
+
| MADE IN JAPAN | DEEP PURPLE | POP-ROCK | 1991-02-04 |
| CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 |
| CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 |
| EN LA FUSA | VINICIUS DE MORAES | BRASILEÑO | 2000-08-27 |
| RUMBA ARGELINA | RADIO TARIFA | ETNICO | 1998-08-31 |
| SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 |
| A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 |
| LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 |
| GRATEST HITS | BOB DYLAN | FOLK | 1997-01-22 |
| MOONDANCE | VAN MORRISON | POP-ROCK | 2004-06-03 |
+-----------------+--------------------+-----------+-------------
+
10 rows in set (0.00 sec)

Esta forma del SELECT es útil si deseamos ver los datos completos de la tabla, por
ejemplo, para asegurarnos de que están todos los registros después de la carga de un
archivo.

Página 296 de 328 Introducción a Linux
Por ejemplo, en este caso que estamos tratando, al consultar los registros de la tabla,
nos damos cuenta de que hay un error en el archivo de datos (discos.txt). Al revisar
el disco MADE IN JAPAN encontramos que la fecha correcta de adquisición es el año
1999, no 1991.

Podemos corregir el registro erróneo con una sentencia UPDATE:

mysql> UPDATE discos SET adquisicion="1999-02-04" WHERE
titulo="MADE IN JAPAN";

Como se mostró anteriormente, es muy fácil recuperar los datos de una tabla completa.
Pero típicamente no deseamos hacer esto, particularmente cuando las tablas son
demasiado grandes. En vez de ello, estaremos más interesados en responder
preguntas particulares, en cuyo caso debemos especificar algunas restricciones para la
información que deseamos ver.

Seleccionar registros particulares
Podemos seleccionar sólo registros particulares de una tabla. Por ejemplo, si
deseamos verificar el cambio que hicimos a la fecha de adquisición de MADE IN
JAPAN , seleccionamos sólo este registro de la siguiente manera :

mysql> SELECT * FROM discos WHERE titulo="MADE IN JAPAN";
+---------------+-------------+----------+-------------+
| titulo | autor | genero | adquisición |
+---------------+-------------+----------+-------------+
| MADE IN JAPAN | DEEP PURPLE | POP-ROCK | 1999-02-04 |
+---------------+-------------+----------+-------------+
1 row in set (0.00 sec)

La salida mostrada confirma que el año ha sido corregido de 1991 a 1999.

La comparación de cadenas es normalmente no sensitiva, así que podemos especificar
el nombre como "made in japan", "MADE IN JAPAN", etc. El resultado de la consulta
será el mismo.

Plataforma de Teleformación de IFES Página 297 de 328
Podemos además especificar condiciones sobre cualquier columna, no sólo el "titulo".
Por ejemplo, si deseamos conocer qué discos hemos adquirido después del 2000,
tendríamos que usar la columna "adquisicion":

mysql> SELECT * FROM discos WHERE adquisicion >= "2000-1-1";
+--------------+--------------------+-----------+-------------+
| titulo | autor | genero | adquisicion |
+--------------+--------------------+-----------+-------------+
| EN LA FUSA | VINICIUS DE MORAES | BRASILEÑO | 2000-08-27 |
| SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 |
| MOONDANCE | VAN MORRISON | POP-ROCK | 2004-06-03 |
+--------------+--------------------+-----------+-------------+
3 rows in set (0.00 sec)

Podemos también combinar condiciones, por ejemplo, para localizar a los discos de
pop-rock que hemos adquirido antes del 2000:

SELECT * FROM discos WHERE adquisicion <= "2000-1-1"AND genero="POP-ROCK";
+---------------+---------------+----------+-------------+
| titulo | autor | genero | adquisicion |
+---------------+---------------+----------+-------------+
| MADE IN JAPAN | DEEP PURPLE | POP-ROCK | 1999-02-04 |
| CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 |
+---------------+---------------+----------+-------------+
2 rows in set (0.00 sec)
La consulta anterior usa el operador lógico AND . Hay también un operador lógico OR :

mysql> SELECT * FROM discos WHERE genero="SOUL"OR genero="FOLK";
+-----------------+-----------------+--------+-------------+
| titulo | autor | genero | adquisicion |
+-----------------+-----------------+--------+-------------+
| CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 |
| A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 |
| LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 |
| GRATEST HITS | BOB DYLAN | FOLK | 1997-01-22 |
+-----------------+-----------------+--------+-------------+
4 rows in set (0.00 sec)

El operador AND y el operador OR pueden ser intercambiados. Si hacemos esto, es
buena idea usar paréntesis para indicar como deben ser agrupadas las condiciones:

Página 298 de 328 Introducción a Linux
mysql>SELECT * FROM discos WHERE(adquisicion >= "2000-1-1"AND
genero="POP-ROCK")
-> OR genero="SOUL";
+--------------+-----------------+----------+-------------+
| titulo | autor | genero | adquisicion |
+--------------+-----------------+----------+-------------+
| SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 |
| LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 |
| MOONDANCE | VAN MORRISON | POP-ROCK | 2004-06-03 |
+--------------+-----------------+----------+-------------+
3 rows in set (0.00 sec)

Si no deseamos ver los registros completos de una tabla, entonces tenemos que
usar los nombres de las columnas en las que estamos interesados separándolas por
coma. Por ejemplo, si deseamos conocer la fecha de adquisición de nuestros discos,
debemos seleccionar la columna "título" y "adquisicion":

mysql> SELECT titulo, adquisicion FROM discos;
+-----------------+-------------+
| titulo | adquisicion |
+-----------------+-------------+
| MADE IN JAPAN | 1999-02-04 |
| CLUES | 1998-03-17 |
| CABO DO MUNDO | 1999-05-13 |
| EN LA FUSA | 2000-08-27 |
| RUMBA ARGELINA | 1998-08-31 |
| SUPERNATURAL | 2001-09-11 |
| A PESAR DE TODO | 1991-02-09 |
| LADY SOUL | 1994-04-29 |
| GRATEST HITS | 1997-01-22 |
| MOONDANCE | 2004-06-03 |
+-----------------+-------------+
10 rows in set (0.00 sec)

Para conocer de que géneros musicales disponemos, usaremos la siguiente consulta:

mysql> SELECT SELECT genero FROM discos;
+-----------+
| genero |
+-----------+
| POP-ROCK |
| POP-ROCK |

Plataforma de Teleformación de IFES Página 299 de 328
| FOLK |
| BRASILEÑO |
| ETNICO |
| POP-ROCK |
| FOLK |
| SOUL |
| FOLK |
| POP-ROCK |
+-----------+
10 rows in set (0.00 sec)
Sin embargo, debemos notar que la consulta recupera el nombre del género de
cada disco, y algunos de ellos aparecen más de una vez. Para minimizar la salida,
agregaremos la palabra clave DISTINCT:

mysql> SELECT DISTINCT genero FROM discos;
+-----------+
| genero |
+-----------+
| POP-ROCK |
| FOLK |
| BRASILEÑO |
| ETNICO |
| SOUL |
+-----------+
5 rows in set (0.02 sec)

Se puede usar también una clausula WHERE para combinar selección de filas con
selección de columnas. Por ejemplo, para obtener el título y interprete de los discos de
folk y pop-rock, usaremos la siguiente consulta:

mysql> SELECT titulo,autor FROM discos WHERE genero="FOLK" OR
genero="POP-ROCK";
+-----------------+-----------------+
| titulo | autor |
+-----------------+-----------------+
| MADE IN JAPAN | DEEP PURPLE |
| CLUES | ROBERT PALMER |
| CABO DO MUNDO | LUAR NA LUBRE |
| SUPERNATURAL | SANTANA |
| A PESAR DE TODO | HILARIO CAMACHO |
| GRATEST HITS | BOB DYLAN |
| MOONDANCE | VAN MORRISON |

Página 300 de 328 Introducción a Linux
+-----------------+-----------------+
7 rows in set (0.00 sec)

Ordenar registros
Tenemos que notar en los ejemplos anteriores que las filas regresadas son mostradas
sin ningún orden en particular. Sin embargo, frecuentemente es más fácil examinar
la salida de una consulta cuando las filas son ordenadas en alguna forma útil. Para
ordenar los resultados, tenemos que usar una clausula ORDER BY.

Aquí aparecen algunos datos ordenados por fecha de adquisición:

mysql> SELECT titulo,autor,adquisicion FROM discos WHERE
genero="FOLK"
-> ORDER BY adquisicion;
+-----------------+-----------------+-------------+
| titulo | autor | adquisicion |
+-----------------+-----------------+-------------+
| A PESAR DE TODO | HILARIO CAMACHO | 1991-02-09 |
| GRATEST HITS | BOB DYLAN | 1997-01-22 |
| CABO DO MUNDO | LUAR NA LUBRE | 1999-05-13 |
+-----------------+-----------------+-------------+
3 rows in set (0.04 sec

En las columnas de tipo carácter, el ordenamiento es ejecutado normalmente de forma
no sensitiva, es decir, no hay diferencia entre mayúsculas y minúsculas. Sin embargo,
se puede forzar un ordenamiento sensitivo al usar el operador BINARY.

Para ordenar en orden inverso, debemos agregar la palabra clave DESC al nombre de
la columna que estamos usando en el ordenamiento.

mysql> SELECT titulo,autor,adquisición FROM discos
-> ORDER BY adquisicion DESC;
+-----------------+--------------------+-------------+
| titulo | autor | adquisicion |
+-----------------+--------------------+-------------+
| MOONDANCE | VAN MORRISON | 2004-06-03 |
| SUPERNATURAL | SANTANA | 2001-09-11 |
| EN LA FUSA | VINICIUS DE MORAES | 2000-08-27 |
| CABO DO MUNDO | LUAR NA LUBRE | 1999-05-13 |
| MADE IN JAPAN | DEEP PURPLE | 1999-02-04 |

Plataforma de Teleformación de IFES Página 301 de 328
| RUMBA ARGELINA | RADIO TARIFA | 1998-08-31 |
| CLUES | ROBERT PALMER | 1998-03-17 |
| GRATEST HITS | BOB DYLAN | 1997-01-22 |
| LADY SOUL | ARETHA FRANKLIN | 1994-04-29 |
| A PESAR DE TODO | HILARIO CAMACHO | 1991-02-09 |
+-----------------+--------------------+-------------+
10 rows in set (0.00 sec)
Podemos ordenar por múltiples columnas. Por ejemplo, para ordenar por género
musical y fecha de adquisición, usaremos la siguiente consulta:

mysql> SELECT titulo,genero,adquisición FROM discos
-> ORDER BY genero,adquisición DESC;
+-----------------+-----------+-------------+
| titulo | genero | adquisición |
+-----------------+-----------+-------------+
| EN LA FUSA | BRASILEÑO | 2000-08-27 |
| RUMBA ARGELINA | ETNICO | 1998-08-31 |
| CABO DO MUNDO | FOLK | 1999-05-13 |
| GRATEST HITS | FOLK | 1997-01-22 |
| A PESAR DE TODO | FOLK | 1991-02-09 |
| MOONDANCE | POP-ROCK | 2004-06-03 |
| SUPERNATURAL | POP-ROCK | 2001-09-11 |
| MADE IN JAPAN | POP-ROCK | 1999-02-04 |
| CLUES | POP-ROCK | 1998-03-17 |
| LADY SOUL | SOUL | 1994-04-29 |
+-----------------+-----------+-------------+
10 rows in set (0.00 sec)
En este caso se aprecia la palabra clave DESC se aplica sólo a la columna nombrada
que le predede.

Borrar registros

Si deseamos borrar algún registro de la tabla 'discos' por la razón que sea, podemos
ejecutar el comando DELETE . Por ejemplo, si queremos borrar el disco 'RUMBA
ARGELINA' de nuestra tabla:

mysql> DELETE FROM discos WHERE titulo="RUMBA ARGELINA";
Query OK, 1 row affected (0.00 sec)

A continuación, comprobamos que ya no ésta en la tabla 'discos':

Página 302 de 328 Introducción a Linux
mysql> SELECT * FROM discos;
+-----------------+--------------------+-----------+-------------
+
| titulo | autor | genero | adquisición |
+-----------------+--------------------+-----------+-------------
+
| MADE IN JAPAN | DEEP PURPLE | POP-ROCK | 1999-02-04 |
| CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 |
| CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 |
| EN LA FUSA | VINICIUS DE MORAES | BRASILEÑO | 2000-08-27 |
| SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 |
| A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 |
| LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 |
| GRATEST HITS | BOB DYLAN | FOLK | 1997-01-22 |
| MOONDANCE | VAN MORRISON | POP-ROCK | 2004-06-03 |
+-----------------+--------------------+-----------+-------------
+
9 rows in set (0.00 sec)

Cálculos con fechas
MySQL proporciona diversas funciones que se pueden usar para efectuar cálculos
sobre fechas, por ejemplo, para calcular antigüedades o extraer partes de una fecha
(día, mes, año, etc).

Por ejemplo, para determinar la antigüedad (en años completos) de cada uno de
nuestros discos, tenemos que calcular la diferencia de años de la fecha actual y
la fecha de adquisición, y entonces retar uno si la fecha actual ocurre antes en el
calendario que la fecha de adquisición. Las siguientes consultas muestran la fecha
actual, la fecha de adquisición y la antigüedad para cada disco.

mysql> SELECT titulo, adquisicion, CURRENT_DATE,
-> (YEAR(CURRENT_DATE) - YEAR(adquisicion))
->-(RIGHT(CURRENT_DATE,5) < RIGHT(adquisicion,5)) AS antiguedad
FROM discos;

+-----------------+-------------+--------------+------------+
| titulo | adquisicion | CURRENT_DATE | antiguedad |
+-----------------+-------------+--------------+------------+
| MADE IN JAPAN | 1999-02-04 | 2004-11-08 | 5 |
| CLUES | 1998-03-17 | 2004-11-08 | 6 |

Plataforma de Teleformación de IFES Página 303 de 328
| CABO DO MUNDO | 1999-05-13 | 2004-11-08 | 5 |
| EN LA FUSA | 2000-08-27 | 2004-11-08 | 4 |
| SUPERNATURAL | 2001-09-11 | 2004-11-08 | 3 |
| A PESAR DE TODO | 1991-02-09 | 2004-11-08 | 13 |
| LADY SOUL | 1994-04-29 | 2004-11-08 | 10 |
| GRATEST HITS | 1997-01-22 | 2004-11-08 | 7 |
| MOONDANCE | 2004-06-03 | 2004-11-08 | 0 |
+-----------------+-------------+--------------+------------+
9 rows in set (0.04 sec)

Aquí, YEAR( ) obtiene ú

nicamente el año y RIGHT( ) obtiene los cinco caracteres más a la derecha de cada
una de las fechas, que representan el mes y el día (MM-DD). La parte de la expresión
que compara los valores MM-DD se evalúa a 1 o 0, y permite ajustar el valor de la
antigüedad en el caso de que el valor MM-DD de la fecha actual ocurra antes del valor
MM-DD de la fecha de adquisición.

Dado que la expresión en sí es bastante fea, se ha usado un alias (antiguedad) que es
el que aparece como etiqueta en la columna que muestra el resultado de la consulta.
Esta consulta debe trabajar bien, pero el resultado puede ser de alguna manera más
útil si las filas son presentadas en algún orden. Para ello haremos uso de la cláusula
ORDER BY.

Por ejemplo, para ordenar por título, usaremos la siguiente consulta:

mysql> SELECT titulo, adquisición, CURRENT_DATE,
-> (YEAR(CURRENT_DATE) - YEAR(adquisición))
-> - (RIGHT(CURRENT_DATE,5) < RIGHT(adquisición,5))
-> AS antiguedad FROM discos ORDER BY titulo;
+-----------------+-------------+--------------+------------+
| titulo | adquisición | CURRENT_DATE | antiguedad |
+-----------------+-------------+--------------+------------+
| A PESAR DE TODO | 1991-02-09 | 2004-11-08 | 13 |
| CABO DO MUNDO | 1999-05-13 | 2004-11-08 | 5 |
| CLUES | 1998-03-17 | 2004-11-08 | 6 |
| EN LA FUSA | 2000-08-27 | 2004-11-08 | 4 |
| GRATEST HITS | 1997-01-22 | 2004-11-08 | 7 |
| LADY SOUL | 1994-04-29 | 2004-11-08 | 10 |
| MADE IN JAPAN | 1999-02-04 | 2004-11-08 | 5 |
| MOONDANCE | 2004-06-03 | 2004-11-08 | 0 |
| SUPERNATURAL | 2001-09-11 | 2004-11-08 | 3 |

Página 304 de 328 Introducción a Linux
+-----------------+-------------+--------------+------------+
9 rows in set (0.00 sec)

Para ordenar por antigüedad en lugar de por título, ún

icamente tenemos que usar una cláusula ORDER BY diferente:

mysql> SELECT titulo, adquisición, CURRENT_DATE,
-> (YEAR(CURRENT_DATE) - YEAR(adquisición))
-> - (RIGHT(CURRENT_DATE,5) < RIGHT(adquisición,5))
-> AS antiguedad FROM discos ORDER BY antiguedad;
+-----------------+-------------+--------------+------------+
| titulo | adquisición | CURRENT_DATE | antiguedad |
+-----------------+-------------+--------------+------------+
| MOONDANCE | 2004-06-03 | 2004-11-08 | 0 |
| SUPERNATURAL | 2001-09-11 | 2004-11-08 | 3 |
| EN LA FUSA | 2000-08-27 | 2004-11-08 | 4 |
| MADE IN JAPAN | 1999-02-04 | 2004-11-08 | 5 |
| CABO DO MUNDO | 1999-05-13 | 2004-11-08 | 5 |
| CLUES | 1998-03-17 | 2004-11-08 | 6 |
| GRATEST HITS | 1997-01-22 | 2004-11-08 | 7 |
| LADY SOUL | 1994-04-29 | 2004-11-08 | 10 |
| A PESAR DE TODO | 1991-02-09 | 2004-11-08 | 13 |
+-----------------+-------------+--------------+------------+
9 rows in set (0.00 sec)

¿Qué sucede si deseamos conocer cuáles de nuestros discos hemos comprado en un
mes concreto? Para este tipo de cálculos, el año y el día son irrelevantes; simplemente
tenemos que extraer el valor del mes en la columna nacimiento. Como se mencionó
anteriormente, MySQL proporciona diversas funciones para trabajar y manipular
fechas, en este caso haremos uso de la función MONTH( ). Para ver como trabaja,
vamos a ejecutar una consulta muy simple que muestra tanto el valor de una fecha
como el valor que regresa la función MONTH( ).

mysql> SELECT titulo, adquisición, MONTH(adquisición) FROM
discos;
+-----------------+-------------+--------------------+
| titulo | adquisición | MONTH(adquisición) |
+-----------------+-------------+--------------------+
| MADE IN JAPAN | 1999-02-04 | 2 |
| CLUES | 1998-03-17 | 3 |
| CABO DO MUNDO | 1999-05-13 | 5 |

Plataforma de Teleformación de IFES Página 305 de 328
| EN LA FUSA | 2000-08-27 | 8 |
| SUPERNATURAL | 2001-09-11 | 9 |
| A PESAR DE TODO | 1991-02-09 | 2 |
| LADY SOUL | 1994-04-29 | 4 |
| GRATEST HITS | 1997-01-22 | 1 |
| MOONDANCE | 2004-06-03 | 6 |
+-----------------+-------------+--------------------+
9 rows in set (0.00 sec)

Encontrar ahora, por ejemplo, los discos que hemos comprado en el mes de febrero es
muy sencillo.

mysql> SELECT titulo, adquisición, MONTH(adquisición) FROM discos
WHERE MONTH(adquisición)=2;
+-----------------+-------------+--------------------+
| titulo | adquisición | MONTH(adquisición) |
+-----------------+-------------+--------------------+
| MADE IN JAPAN | 1999-02-04 | 2 |
| A PESAR DE TODO | 1991-02-09 | 2 |
+-----------------+-------------+--------------------+
2 rows in set (0.00 sec)

Trabajar con valores nulos
El valor NULL puede sorprendernos mientras no hayamos trabajado con él.
Conceptualmente, NULL significa un valor que hace falta, o un valor desconocido, y es
tratado de una manera diferente a otros valores. Para verificar si un valor es NULL no
podemos usar los operadores de comparación tales como =, > , o < .

Para probar esto ejecutemos la siguiente consulta:

mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
| NULL | NULL | NULL | NULL |
+----------+-----------+----------+----------+
1 row in set (0.00 sec)

Claramente observamos que no obtenemos resultados con algún significado con estos
operadores. Es por ello que tenemos que usar los operadores IS NULL e IS NOT
NULL:

Página 306 de 328 Introducción a Linux
mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
| 0 | 1 |
+-----------+---------------+
1 row in set (0.00 sec)

En MySQL, 0 o NULL significan falso y cualquier otro valor significa verdadero. El valor
que se considera verdadero por defecto es 1.

Cuando se usa un ORDER BY , los valores NULL son siempre ordenados primero, aún
cuando se use la cláusula DESC .

Coincidencia de patrones
MySQL proporciona métodos de coincidencia de patrones basados en SQL estándar,
así como también basados en expresiones regulares, de manera similar a las utilidades
de Unix tales como vi, grep y sed.

La coincidencia de patrones basada en SQL nos permite usar _ (guión bajo) para un
solo carácter y % para un arbitrario número de caracteres. En MySQL, los patrones
SQL no son sensibles al uso de mayúsculas y minúsculas.

Es importante notar que no se usan los operadores = o < > cuando se usan los
patrones SQL; en su lugar se usan los operadores LIKE y NOT LIKE . A continuación,
presentamos algunos ejemplos.

Para encontrar los títulos de discos que comienzan con 'c' :

mysql> SELECT * FROM discos WHERE titulo LIKE "c%";
+---------------+---------------+----------+-------------+
| titulo | autor | genero | adquisicion |
+---------------+---------------+----------+-------------+
| CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 |
| CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 |
+---------------+---------------+----------+-------------+
2 rows in set (0.00 sec)

Para encontrar los títulos de discos que finalizan con 'do' :

mysql> SELECT * FROM discos WHERE titulo LIKE "%do";

Plataforma de Teleformación de IFES Página 307 de 328
+-----------------+-----------------+--------+-------------+
| titulo | autor | genero | adquisicion |
+-----------------+-----------------+--------+-------------+
| CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 |
| A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 |
+-----------------+-----------------+--------+-------------+
2 rows in set (0.00 sec)

Para encontrar los títulos de discos que contienen una s :

mysql> SELECT * FROM discos WHERE titulo LIKE "%s%";
+-----------------+--------------------+-----------+-------------
+
| titulo | autor | genero | adquisición |
+-----------------+--------------------+-----------+-------------
+
| CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 |
| EN LA FUSA | VINICIUS DE MORAES | BRASILEÑO | 2000-08-27 |
| SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 |
| A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 |
| LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 |
| GRATEST HITS | BOB DYLAN | FOLK | 1997-01-22 |
+-----------------+--------------------+-----------+-------------
+
6 rows in set (0.00 sec)

El otro tipo de coincidencia de patrones proporcionado por MySQL hace uso de
expresiones regulares. Para hacer uso de estos tipos de patrones se tienen que usar
los operadores REGEX P y NOT REGEXP ( o RLIKE y NOT RLIKE , los cuáles son
sinónimos).

Algunas características de las expresiones regulares son:

• El carácter punto ( . ) coincide con cualquier carácter.
• Una clase de caracteres [...] coincide con cualquier carácter dentro de los
paréntesis cuadrados. Por ejemplo, [abc] coincide con a, b o c. Para nombrar
un rango de caracteres, se usa el guión. [a-z] coincide con cualquier letra
minúscula, mientras que [0-9] coincide con cualquier dígito.
• El carácter asterisco ( * ) coincide con cero o más instancias de lo que le
preceda. Por ejemplo, x* coincide con cualquier número de caracteres
x, [0-9]* coincide con cualquier número de dígitos, y .* (punto asterisco)
coincide con cualquier cosa.

Página 308 de 328 Introducción a Linux
• El patrón coincide si éste ocurre en cualquier parte del valor que está
siendo evaluado. (Los patrones SQL coinciden únicamente en los valores
completos.)
• Para indicar el inicio o el final de un valor que está siendo evaluado se usan
los caracteres ^ y $ respectivamente.

Para demostrar como se usan las expresiones regulares, se van a mostrar los ejemplos
presentados anteriormente con el operador LIKE , ahora con el operador REGEXP .

Para encontrar los títulos de discos que comienzan con 'c' :

mysql> SELECT * FROM discos WHERE titulo REGEXP "^c";
+---------------+---------------+----------+-------------+
| titulo | autor | genero | adquisición |
+---------------+---------------+----------+-------------+
| CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 |
| CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 |
+---------------+---------------+----------+-------------+
2 rows in set (0.00 sec)

Antes de la versión 3.23.4 de MySQL, el operador REGEXP era sensible al uso de
mayúsculas y minúsculas, así que dependiendo de la versión de MySQL con la que
se está trabajando podemos ver que obtenemos o no algún resultado en la consulta
anterior. Se puede usar también la siguiente consulta para buscar los títulos de los
discos que inician con la letra 'c', no importando si es mayúscula o minúscula.

mysql> SELECT * FROM discos WHERE titulo REGEXP "^[cC]";
+---------------+---------------+----------+-------------+
| titulo | autor | genero | adquisición |
+---------------+---------------+----------+-------------+
| CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 |
| CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 |
+---------------+---------------+----------+-------------+
2 rows in set (0.00 sec)

Desde la versión 3.23.4, para forzar que el operador REGEXP sea sensible al uso de
mayúsculas y minúsculas, se tiene que usar la palabra clave BINARY para hacer de
una de las cadenas, una cadena binaria. Observamos los resultados de la siguientes
consultas.

mysql> SELECT * FROM discos WHERE titulo REGEXP BINARY "^c";
Empty set (0.00 sec)

Plataforma de Teleformación de IFES Página 309 de 328
mysql> SELECT * FROM discos WHERE titulo REGEXP BINARY "^C";
+---------------+---------------+----------+-------------+
| titulo | autor | genero | adquisición |
+---------------+---------------+----------+-------------+
| CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 |
| CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 |
+---------------+---------------+----------+-------------+
2 rows in set (0.00 sec)

Para encontrar los títulos de los discos que finalizan con la palabra 'do' , haremos uso
del carácter $.

mysql> SELECT * FROM discos WHERE titulo REGEXP "do$";
+-----------------+-----------------+--------+-------------+
| titulo | autor | genero | adquisición |
+-----------------+-----------------+--------+-------------+
| CABO DO MUNDO | LUAR NA LUBRE | FOLK | 1999-05-13 |
| A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 |
+-----------------+-----------------+--------+-------------+
2 rows in set (0.00 sec)

Para encontrar los títulos de los discos que contienen una letra s, la consulta sería:

mysql> SELECT * FROM discos WHERE titulo REGEXP "s";
+-----------------+--------------------+-----------+-------------
+
| titulo | autor | genero | adquisición |
+-----------------+--------------------+-----------+-------------
+
| CLUES | ROBERT PALMER | POP-ROCK | 1998-03-17 |
| EN LA FUSA | VINICIUS DE MORAES | BRASILEÑO | 2000-08-27 |
| SUPERNATURAL | SANTANA | POP-ROCK | 2001-09-11 |
| A PESAR DE TODO | HILARIO CAMACHO | FOLK | 1991-02-09 |
| LADY SOUL | ARETHA FRANKLIN | SOUL | 1994-04-29 |
| GRATEST HITS | BOB DYLAN | FOLK | 1997-01-22 |
+-----------------+--------------------+-----------+-------------
+
6 rows in set (0.00 sec)

Página 310 de 328 Introducción a Linux
Contar filas
Las bases de datos son usadas frecuentemente para responder una pregunta, "¿Con
qué frecuencia ocurre un cierto tipo de dato en una tabla?". Por ejemplo, tal vez
queremos conocer cuántos discos tenemos, o cuántos discos hay de cada género. La
función COUNT( ) es la utilizamos en esta situación.

Si deseamos conocer cuántas discos hay por género musical, la consulta es la
siguiente:

mysql> SELECT COUNT(*) FROM discos;
+----------+
| COUNT(*) |
+----------+
| 9 |
+----------+
1 row in set (0.00 sec)

Si deseamos conocer cuántas discos hay por género musical, la consulta es la
siguiente:

mysql> SELECT genero,COUNT(*) FROM discos GROUP BY GENERO;
+-----------+----------+
| genero | COUNT(*) |
+-----------+----------+
| BRASILEÑO | 1 |
| FOLK | 3 |
| POP-ROCK | 4 |
| SOUL | 1 |
+-----------+----------+
4 rows in set (0.00 sec)

Se debe notar que hemos usado una cláusula GROUP BY para agrupar todos los
registros de cada género musical. Si no hacemos esto, obtendremos un mensaje de
error:

mysql> SELECT genero,COUNT(*) FROM discos;
ERROR 1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with
no GROUP columns is illegal if there is no GROUP BY clauseclause

Plataforma de Teleformación de IFES Página 311 de 328
El uso de la función COUNT( ) en conjunto con la cláusula GROUP BY es muy útil en
diversas situaciones como, por ejemplo, si queremos saber el número de discos por
género e intérprete:

mysql> SELECT genero, autor, COUNT(*) FROM discos GROUP BY
genero, autor;
+-----------+--------------------+----------+
| genero | autor | COUNT(*) |
+-----------+--------------------+----------+
| BRASILEÑO | VINICIUS DE MORAES | 1 |
| FOLK | BOB DYLAN | 1 |
| FOLK | HILARIO CAMACHO | 1 |
| FOLK | LUAR NA LUBRE | 1 |
| POP-ROCK | DEEP PURPLE | 1 |
| POP-ROCK | ROBERT PALMER | 1 |
| POP-ROCK | SANTANA | 1 |
| POP-ROCK | VAN MORRISON | 1 |
| SOUL | ARETHA FRANKLIN | 1 |
+-----------+--------------------+----------+
9 rows in set (0.01 sec)

No es necesario que se obtengan todos los datos de una tabla cuando se usa la
función COUNT( ). Por ejemplo, en la consulta anterior, para ver únicamente los datos
de folk y soul, la consulta queda de la siguiente manera:

mysql> SELECT genero, autor, COUNT(*) FROM discos
-> WHERE genero="FOLK" OR genero="SOUL"
-> GROUP BY genero,autor;
+--------+-----------------+----------+
| genero | autor | COUNT(*) |
+--------+-----------------+----------+
| FOLK | BOB DYLAN | 1 |
| FOLK | HILARIO CAMACHO | 1 |
| FOLK | LUAR NA LUBRE | 1 |
| SOUL | ARETHA FRANKLIN | 1 |
+--------+-----------------+----------+
4 rows in set (0.00 sec)

Página 312 de 328 Introducción a Linux
Usar más de una tabla
La tabla 'discos' nos ha servido hasta este momento para tener guardados los datos
acerca de los discos que tenemos. Si deseamos guardar algún otro tipo de información
acerca de ellos, tal como los eventos que se producen con los discos -prestamos a
amigos o compañeros, perdidas o deterioro, etc.- necesitaremos de otra tabla. Para
ello, necesitamos:

• El título del disco para saber a cuál de ellos se refiere el evento.
• Una fecha para saber cuando ocurrió el evento.
• Una descripción del evento.
• Un campo que indique el tipo de evento, si deseamos clasificarlos.

Dadas estas condiciones, la sentencia para crear la tabla eventos queda de la siguiente
manera:

mysql> CREATE TABLE eventos(titulo varchar(40),fecha date,
-> tipo varchar(15),descripcion varchar(255));
Query OK, 0 rows affected (0.00 sec)

De manera similar a la tabla 'discos', es más fácil cargar los datos de los registros
iniciales al crear un archivo de texto delimitado por tabuladores 'eventos.txt' en el que
se tenga la siguiente información:

título fecha tipo descripción
MADE IN JAPAN 2003-02-15 deterioro Rayada el tema dos.
CLUES 2004-03-23 perdida Falta portada trasera
CABO DO MUNDO 2004-11-19 copia Dos copias realizadas
EN LA FUSA 2003-04-21 prestamo Prestamo a Ana
Lopez
A PESAR DE TODO 2004-04-27 devolucion Devuelto por Jaime
Meilan del prestamo
LADY SOUL 2003-10-03 prestamo Prestamo a Claudia
Romero
Cargamos los datos desde este archivo con la siguiente sentencia:

mysql> LOAD DATA LOCAL INFILE "eventos.txt" INTO TABLE eventos;
Query OK, 6 rows affected (0.00 sec)

Plataforma de Teleformación de IFES Página 313 de 328
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0

Tomando en cuenta lo que hemos aprendido en la ejecución de consultas sobre la tabla
'discos', debemos de ser capaces de recuperar algunos datos de la tabla eventos; los
principios son los mismos. Sin embargo puede suceder que la tabla eventos por sí
misma sea insuficiente para darnos las respuestas que necesitamos.
Supongamos que deseamos conocer el interprete de cada disco que hemos prestado.
La tabla 'eventos' indica cuando ocurrió dicho evento, pero el dato interprete está
almacenado en la tabla 'discos', por lo tanto, necesitamos ambas tablas para realizar
esta consulta.

mysql> SELECT discos.titulo, discos.autor,
-> descripcion FROM discos, eventos
-> WHERE discos.titulo=eventos.titulo
-> AND tipo="prestamo";
+------------+--------------------+---------------------------+
| titulo | autor | descripcion |
+------------+--------------------+---------------------------+
| EN LA FUSA | VINICIUS DE MORAES | Prestamo a Ana Lopez |
| LADY SOUL | ARETHA FRANKLIN | Prestamo a Claudia Romero |
+------------+--------------------+---------------------------+
2 rows in set (0.00 sec)

Hay diversas cosas que notar acerca de esta consulta:

• La cláusula FROM lista dos tablas dado que la consulta necesita información
que se encuentra en ambas tablas.
• Cuando se combina (junta) información de múltiples tablas, es necesario
especificar los registros de una tabla que pueden coincidir con los registros
en la otra tabla. En nuestro caso, ambas columnas tienen una columna
"titulo". La consulta usa la cláusula WHERE para obtener los registros cuyo
valor en dicha columna es el mismo en ambas tablas.
• Dado que la columna "titulo" ocurre en ambas tablas, debemos de
especificar a cuál de las columnas nos referimos. Esto se hace al anteponer
el nombre de la tabla al nombre de la columna.

Utilizar mysql en modo batch
En todos los ejemplos mostrados anteriormente, hemos usado mysq l de manera
interactiva para ejecutar algunas consultas y ver los resultados. Sin embargo, es
posible usar mysql en modo batch. Para hacer esto tenemos que poner los comandos

Página 314 de 328 Introducción a Linux
que deseamos ejecutar dentro de un archivo, y entonces decirle a mysql que lea los
comandos de dicho archivo:

shell> mysql < archivo-batch

Si se usa mysql de esta manera, se está creando un pequeño script, y posteriormente
se está ejecutando dicho script.

Al ejecutar las sentencias y comandos que se encuentran en el script, es posible que
suceda algún error. Si se desea que se continuen ejecutando las demás sentencias, a
pesar de que haya ocurrido un error, se tiene que usar la opción –force

shell> mysql --force < archivo-batch

Así mismo, es posible especificar los parámetros de conexión desde la línea de
comandos. Por ejemplo:

s
hell> mysql -h localhost -u chema -p < archivo-batch

Algunas de las ventajas de usar un script son las siguientes:

• Si se ejecutan un cierto número de consultas de modo frecuente, al hacer un
script nos evitamos tener que volver a teclear cada una de las consultas.
• Podemos generar nuevas consultas similares a las existentes copiando y
editando estos scripts.
• Al escribir consultas de varias líneas, los scripts ayudan bastante para que
no se tengan que escribir todas las líneas nuevamente si se comete algún
error.
• Si ejecutamos consultas que producen una gran cantidad de datos, es
posible usar un paginador para examinar los resultados de una mejor
manera.

shell> mysql < archivo-batch | less

Se puede guardar la salida en un archivo para revisarla posteriormente.

shell> mysql < archivo-batch > salida-del-script.txt

Hay que mencionar que el formato de la salida es más simple cuando se ejecuta mysql
en modo batch, que cuando se usa de manera interactiva, como se puede ver en el
siguiente ejemplo:

Plataforma de Teleformación de IFES Página 315 de 328
Queremos obtener un listado de los géneros musicales de la tabla 'discos'.Si se ejecuta
en modo interactivo:

mysql> SELECT DISTINCT genero FROM discos;
+-----------+
| genero |
+-----------+
| POP-ROCK |
| FOLK |
| BRASILEÑO |
| SOUL |
+-----------+
4 rows in set (0.00 sec)

Si se ejecuta en modo batch:

shell> mysql -h localhost -u root < generos.sql
genero
POP-ROCK
FOLK
BRASILEÑO
SOUL

Si se desea obtener la salida que proporciona el modo interactivo, se tiene que usar la
opción -t .

shell> mysql -t -h localhost -u root < generos.sql
+-----------+
| genero |
+-----------+
| POP-ROCK |
| FOLK |
| BRASILEÑO |
| SOUL |
+-----------+

Hemos utilizado el archivo generos.sql, un fichero de texto que contiene dos
instrucciones mysql:

USE musica;
SELECT DISTINCT genero FROM discos;

Página 316 de 328 Introducción a Linux
Grabación de cd´s

Grabar CD-ROM en consola
Existen multitud de programas gráficos para la grabación de CD?s, (k3b, nerolinux...)
pero en este manual, comenzaremos por la base, aprenderemos hacerlo desde
consola. Que necesitamos, y que podemos hacer para diferentes casos.

• Hay que instalar y recompilar el kernel para grabadoras IDE,
• En la sección: ATA/IDE/MFM/RLL -> IDE, ATA, ATAPI
Desactivar IDE/ATAPI CDROM
Activar SCSI emulation support
En la sección: SCSI support
Activar SCSI disk support
Activar SCSI CD-ROM support
Activar SCSI generic support
• Instalamos los paquetes cdrecord, mkisofs y cdparanoia, desde una
distribución Debian, usaremos la siguiente línea.
• apt-get install cdrecord mkisofs cdparanoia
• Para conseguir información sobre si la instalación ha sido correcta y dónde
se encuentran los dispositivos
• cdrecord -scanbus
• Para Copiar CD de DATOS
• Montamos CD
mount -t iso9660 -ro unhide /dev/sr1 /cdrom
/dev/sr1
es el dispositivo donde este nuestro cdrom
-ro
l
o montamos en sólo lectura
unhide
Para que lea también los ficheros ocultos
Creamos la Imagen del CDROM
mkisofs -R -J -T -o /tmp/imagen.iso /cdrom
-R= Genera registros SUSP y RR usando Rock Ridge
-T= Genera un archivo TRANS.TBL en cada directorio del CD-Rom, que
puede ser usado en sistemas incapaces de usar Rock Ridge para ayudar
a establecer los nombres de archivo correctos. Hay también información
presente en el archivo que indica el mayor y menor número para unidades
de bloque y carácter y cada symlink tiene el nombre del archivo enlace dado.

Plataforma de Teleformación de IFES Página 317 de 328
-J= Genera nombres de directorio Joliet junto con los iso9660. Ésto es
principalmente útil cuando los discos van a ser usados en máquinas bajo
WindowsNT y Windows95.
-o= es el nombre del archivo el cual el sistema de archivo iso9660 deberia
escribir. Esto puede ser un archivo de disco, una unidad de cinta, o puede
corresponder directamente a la unidad de la grabadora. Si no se especifica
se usa stdout. Percátese de que la salida puede ser una unidad de bloque
especial para una unidad de disco normal, en cuyo caso la particion del
disco puede ser montada y examinada para asegurar que la preparación se
efectua correctamente.
Otras opciones:
cat /dev/cdrom > imageCD.iso
dd if=/dev/cdrom/ of=imageCD.iso
G rabamos el cd
cdrecord -v dev=0,0,0 fs=10M speed=4 /tmp/imagen.iso
speed=X Donde "x" es la velocidad de grabación. Ejemplo: una regrabadora
24x de lectura 2x de regrabación y 4x de grabación, speed=4
Luego si no queremos conservar la imagen porque no vamos hacer más
copias, haremos lo siguiente.
rm /tmp/imagen.iso
• Un Script que hace todo completo
• #!/bin/bash
/bin/mount -t iso9660 -ro unhide /dev/sr1 /cdrom
/usr/bin/mkisofs -R -J -T -o /tmp/imagen.iso /
cdrom
/usr/bin/cdrecord -v dev=0,0,0 fs=10M speed=4 /
tmp/imagen.iso
/bin/rm /tmp/imagen.iso
/bin/umount /cdrom
• Para Copiar Música
• Mostrar las canciones que tiene el cd
cdparanoia -Q -d /dev/sr1
Extraer el audio n: numero de canciones
cdparanoia -W -Z -X -B -d /dev/sr1 -v 1-n
-Wdesactivar corrección de rayado. Detecta y lleva a cabo la sincronización
entre rayaduras, pero no intenta reparar los datos dañados. Si algún archivo
de información esta en uso (-i) guarda la posición de las rayaduras.
-Zdesactivar paranoia. Desactiva la verificación de datos y las características
de corrección. Con esta opción, cdparanoia lee los datos exactamente
como cdda2wav. Esta opción implica que -Y esta activado, pero no es
equivalente a -Z -W -X -Y como el -W a través de las opciones -Z especifica
niveles estratificados de verificación. La última opción especificada sienta
precedente.

Página 318 de 328 Introducción a Linux
-Xdesactivar detección de rayado. Ni busca rayaduras ni hace una
sincronización de tolerancia a rayaduras durante la verificación. Con -X
activado, un disco rayado provocará que cdparanoia cancele la lectura.
-dforzar unidad de cdrom. Fuerza el interfaz a leer del dispositivo algo más
de lo que primeramente encontró legible en el CDROM. Puede ser usado
para especificar unidades de cualquier tipo de interfaz válido (ATAPI, SCSI o
propietaria).
-B - batch. Al estilo del procesamiento de salida etiquetado de cdda2wav,
cdparanoia dividirá la salida en multiples archivos, por pistas. Los nombres
de los archivos resultantes estan nombrados como "track#.".
Grabar
cdrecord -v speed=4 -eject fs=20M dev=0,0 -audio -
nopreemp track* -defpregap=[tiempo en segundos]
• Otro script para copiar un cd de música
• #!/bin/bash
/usr/bin/cdparanoia -Q -d /dev/sr1
cd /tmp/
echo ¿Cuantas canciones hay?
read CANCIONES
/usr/bin/cdparanoia -W -Z -X -B -d /dev/sr1 -v 1-
$CANCIONES
/usr/bin/cdrecord -v speed=4 -eject fs=20M
dev=0,0 -audio -nopreemp track* -defpregap=0
rm /tmp/track*
• Para Copiar CD de música en directo (sin espacio y cortes entre canciones)
• Instalamos cdda2wav
apt-get install cdda2wav
Mostrar las canciones que tiene el cd
cdparanoia -Q -d /dev/sr1
Extraer el audio en un sólo fichero. n: numero de canciones
cdda2wav -D /dev/sr1 -s -x -t 1+n
Grabamos los ficheros *.wav a un cd
cdrecord -v speed=X -eject fs=20M dev=0,0 -audio
archivo.wav
speed=XDonde "x" es la velocidad de grabación. Ejemplo: una regrabadora
24x de lectura 2x de regrabación y 4x de grabación, speed=4
-audioparámetro que especifica el formato de salida del archivo, con lo cual
para cada pista crea un archivo .wav diferente
archivo.wavcorresponde al archivo o seleccion de archivos que acaben
en .wav, por lo general el cdda2wav los extrae como audio_NN.wav donde
NN es el numero de pista..
• Grabar / Clonar VCD
• Hacer una imagen VCD (Mi CDROM está en el 0,1,0)

Plataforma de Teleformación de IFES Página 319 de 328
cdrdao read-cd -v 2 --device 0,1,0 --read-raw --driver
generic-mmc --datafile imagen.bin imagen.toc
Copiar la imagen en el CD
cdrdao write -v 2 --device 0,1,0 --speed 16 --driver
generic-mmc --buffers 64 imagen.toc
Borrado del .toc
cdrecord -v blank=fast

• cdrecord.conf

#ident @(#)cdrecord.dfl 1.1 98/12/06 Copyr 1998 J. Schilling
#
# This file is /etc/cdrecord.conf
# It contains defaults that are used if no command line option
# or environment is present.
#
# The default device, if not specified elswhere #
CDR_DEVICE=hp8100
#
# The default speed, if not specified elswhere
#
#CDR_SPEED=2
#
# The default FIFO size if, not specified elswhere
#
#CDR_FIFOSIZE=16m
#
# The following definitions allow abstract device names.
# They are used if the device name does not contain the
# the characters ',', ':', '/' and '@'
#
# drive name device speed fifosize
#
#teac= 1,3,0 -1 -1
#panasonic= 1,4,0 -1 -1
#yamaha= 1,5,0 -1 -1
#cdrom= 0,6,0 2 1m
hp8100= 0,0,0 2 16m

Página 320 de 328 Introducción a Linux
Programación en Bash
Adaptado de:
http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/Bash-
Prog-Intro-COMO.html
, un documento libre de Mike G (mikkey)

Scripts muy sencillos
Este COMO tratará de darle algunos consejos sobre la programación de shell scripts,
basándose profundamente en ejemplos.

En esta sección encontrará varios scripts pequeños que esperanzadamente le
ayudarán a entender algunas técnicas.

Típico script hola mundo
#!/bin/bash echo Hola Mundo
Este script tiene sólo dos líneas. La primera le indica al sistema qué programa usar
para ejecutar el fichero.

La segunda línea es la única acción realizada por este script, que imprime 'Hola
Mundo'en la terminal.

Si le sale algo como ./hello.sh: Comando desconocido., probablemente la primera línea,
'#!/bin/bash', está mal. Ejecute whereis bash, o vea 'encontrando el bash'para saber
cómo debe escribir esta línea.

Un script de copia de seguridad muy simple
#!/bin/bash tar -cZf /var/my-backup.tgz /home/yo/
En este script, en vez de imprimir un mensaje en la terminal, creamos un tar-ball del
directorio home de un usuario. Esto NO pretende ser un script útil; más tarde se ofrece
un script de copia de seguridad más útil.

Plataforma de Teleformación de IFES Página 321 de 328
Todo sobre redirección
Teoría y referencia rápida
Existen 3 descriptores de ficheros: stdin, stdout y stderr (std=estándar).

Básicamente, usted puede:

1. redirigir stdout a un fichero
2. redirigir stderr a un fichero
3. redirigir stdout a stderr
4. redirigir stderr a stdout
5. redirigir stderr y stdout a un fichero
6. redirigir stderr y stdout a stdout
7. redirigir stderr y stdout a stderr

El número 1 'representa'a stdout, y 2 a stderr.

Una pequeña nota para ver todo esto: con el comando less puede visualizar stdout
(que permanecerá en el búfer) y stderr, que se imprimirá en la pantalla, pero será
borrado si intenta leer el búfer.

Ejemplo: stdout a un fichero
Esto hará que la salida de un programa se escriba en un fichero.

ls -l > ls-l.txt
En este caso, se creará un fichero llamado 'ls-l.txt' que contendrá lo que se vería en la
pantalla si escribiese el comando 'ls -l'y lo ejecutase.

Ejemplo: stderr a un fichero
Esto hará que la salida stderr de un programa se escriba en un fichero.

grep da * 2> errores-de-grep.txt
En este caso, se creará un fichero llamado 'errores-de-grep.txt' que contendrá la parte
stderr de la salida que daría el comando 'grep da *'.

Página 322 de 328 Introducción a Linux
Ejemplo: stdout a stderr
Esto hará que la salida stdout de un programa se escriba en el mismo descriptor de
fichero que stderr.

grep da * 1>&2
En este caso, la parte stdout del comando se envía a stderr; puede observar eso de
varias maneras.

Ejemplo: stderr a stdout
Esto hará que la salida stderr de un programa se escriba en el mismo descriptor de
fichero que stdout.

grep * 2>&1
En este caso, la parte stderr del comando se envía a stdout. Si hace una tubería con
less, verá que las líneas que normalmente 'desaparecen'(al ser escritas en stderr),
ahora permanecen (porque están en el stdout).

Ejemplo: stderr y stdout a un fichero
Esto colocará toda la salida de un programa en un fichero. A veces, esto es
conveniente en las entradas del cron, si quiere que un comando se ejecute en absoluto
silencio.

rm -f $(find / -name core) &> /dev/null
Esto (pensando en la entrada del cron) eliminará todo archivo llamado `core'en
cualquier directorio. Tenga en cuenta que tiene que estar muy seguro de lo que hace un
comando si le va a eliminar la salida.

Tuberías
Esta sección explica de una manera muy sencilla y práctica cómo utilizar tuberías, y por
qué querría utilizarlas.

Qué son y por qué hay que utilizarlas
Las tuberías le permiten utilizar (muy sencillo, insisto) la salida de un programa como la
entrada de otro.

Plataforma de Teleformación de IFES Página 323 de 328
Ejemplo: una tubería sencilla con sed
Ésta es una manera muy sencilla de utilizar tuberías.

ls -l | sed -e " s/[aeio]/u/g"
En este caso, ocurre lo siguiente: primero se ejecuta el comando 'ls -l', y luego su
salida, en vez de imprimirse en la pantalla, se envía (entuba) al programa sed, que
imprime su salida correspondiente.

Ejemplo: una alternativa a ls -l *.txt
Probablemente ésta es una manera más difícil de hacer un 'ls -l *.txt', pero se muestra
para ilustrar el funcionamiento de las tuberías, no para resolver ese dilema.

ls -l | grep ".txt$"
En este caso, la salida del programa ls -l se envía al programa grep, que imprimirá las
líneas que concuerden con la regex".txt$" (expresión regular) .
Variables
Puede usar variables como en cualquier otro lenguaje de programación. No existen
tipos de datos. Una variable de bash puede contener un número, un caracter o una
cadena de caracteres. No necesita declarar una variable. Se creará sólo con asignarle
un valor a su referencia.

Ejemplo: ¡Hola Mundo! utilizando variables
#!/bin/bash CAD="¡Hola Mundo!" echo $CAD
La segunda línea crea una variable llamada STR y le asigna la cadena "¡Hola
Mundo!". Luego se recupera el VALOR de esta variable poniéndole un '$'al principio.
Por favor, tenga en cuenta (¡inténtelo!) que si no usa el signo '$', la salida del
programa será diferente, y probablemente no sea lo que usted quería.

Ejemplo: Un script de copia de seguridad muy simple
(algo mejor)
#!/bin/bash OF=/var/mi-backup-$(date +%Y%m%d).tgz tar -cZf $OF /home/yo/

Página 324 de 328 Introducción a Linux
Este script introduce algo nuevo. Antes que nada, debería familiarizarse con la creación
y asignación de variable de la línea 2. Fíjese en la expresión '$(date +%Y%m%d)'.
Si ejecuta el script se dará cuenta de que ejecuta el comando que hay dentro de los
paréntesis, capturando su salida.

Tenga en cuenta que en este script, el fichero de salida será distinto cada día, debido al
formato pasado al comando date (+%Y%m%d). Puede cambiar esto especificando un
formato diferente.

Algunos ejemplos más:

echo ls echo $(ls)
Variables locales
Las variables locales pueden crearse utilizando la palabra clave local.

#!/bin/bash
HOLA=Hola
function hola {
local HOLA=Mundo
echo $HOLA
}
echo $HOLA
hola
echo $HOLA

Este ejemplo debería bastar para mostrarle el uso de una variable local.

Estructuras Condicionales
Las estructuras condicionales le permiten decidir si se realiza una acción o no; esta
decisión se toma evaluando una expresión.

Pura teoría
Los condicionales tienen muchas formas. La más básica es: if expresión then
sentenciadonde 'sentencia'sólo se ejecuta si 'expresión'se evalúa como verdadera.
'2<1'es una expresión que se evalúa falsa, mientras que '2>1'se evalúa verdadera.

Plataforma de Teleformación de IFES Página 325 de 328
Los condicionales tienen otras formas, como: if expresión then sentencia1 else
sentencia2. Aquí 'sentencia1'se ejecuta si 'expresión'es verdadera. De otra manera
se ejecuta 'sentencia2'.

Otra forma más de condicional es: if expresión1 then sentencia1 else if expresión2
then sentencia2 else sentencia3. En esta forma sólo se añade "ELSE IF
'expresión2'THEN 'sentencia2'", que hace que sentencia2 se ejecute si expresión2
se evalúa verdadera. El resto es como puede imaginarse (véanse las formas
anteriores).

Unas palabras sobre la sintaxis: La base de las construcciones 'if'es ésta:
if [expresión]; then
# código si 'expresión' es verdadera.
fi

Ejemplo: Ejemplo básico de condicional if .. then

#!/bin/bash
if [ "petete" = "petete" ]; then
echo "expresión evaluada como verdadera"
fi

El código que se ejecutará si la expresión entre corchetes es verdadera se encuentra
entre la palabra 'then'y la palabra 'fi', que indica el final del código ejecutado
condicionalmente.

Ejemplo: Ejemplo básico de condicional if .. then ...
else
#!/bin/bash
if [ "petete" = "petete" ]; then
echo "expresión evaluada como verdadera"
else
echo "expresión evaluada como falsa"
fi

Página 326 de 328 Introducción a Linux
Ejemplo: Condicionales con variables
#!/bin/bash
T1="petete"
T2="peteto"
if [ "$T1" = "$T2" ]; then
echo "expresión evaluada como verdadera"
else
echo "expresión evaluada como falsa"
fi

Ejemplo: comprobando si existe un fichero
#!/bin/bash
FILE=~/.basrc
if [ -f $FILE ]; then
echo "el fichero $FILE existe"
else
echo "fichero no encontrado"
fi

Los bucles for, while y until
En esta sección se encontrará con los bucles for, while y until. El bucle for es distinto
a los de otros lenguajes de programación. Básicamente, le permite iterar sobre una
serie de "palabras"contenidas dentro de una cadena. El bucle while ejecuta un trozo
de código si la expresión de control es verdadera, y sólo se para cuando es falsa
(o se encuentra una interrupción explícita dentro del código en ejecución). El bucle
until es casi idéntico al bucle loop, excepto en que el código se ejecuta mientras
la expresión de control se evalúe como falsa. Si sospecha que while y until son
demasiado parecidos, está en lo cierto.

Por ejemplo
#!/bin/bash
for i in $( ls ); do
echo "item: $i"
done

Plataforma de Teleformación de IFES Página 327 de 328
En la segunda línea declaramos i como la variable que recibirá los diferentes valores
contenidos en $( ls ).

La tercera línea podría ser más larga o podría haber más líneas antes del done .

done indica que el código que ha utilizado el valor de $i ha acabado e $i puede tomar el
nuevo valor.

Este script no tiene mucho sentido, pero una manera más útil de usar el bucle for sería
hacer que concordasen sólo ciertos ficheros en el ejemplo anterior.

for tipo-C
Fiesh sugirió añadir esta forma de bucle. Es un bucle for más parecido al for de C/perl...

#!/bin/bash
for i in `seq 1 10`; do
echo $i
done

Ejemplo de while
#!/bin/bash
CONTADOR=0
while [ $CONTADOR -lt 10 ]; do
echo "El contador es $CONTADOR"
CONTADOR=$(($CONTADOR+1))
done

Este script 'emula'la conocida (C, Pascal, perl, etc) estructura `for'.

Ejemplo de until
#!/bin/bash
CONTADOR=20
until [ $CONTADOR -lt 10 ]; do
echo "El contador es $CONTADOR"
CONTADOR=$(($CONTADOR-1))
done

Página 328 de 328 Introducción a Linux