TEMA 2: Herramientas Básicas para la Admón. del Sistema Operativo.

Contenido de esta lección

En este capítulo describiremos a grandes rasgos las principales herramientas para la administración del sistema.

 

Objetivos

Al final de la primera lección será capaz de:

Tiempo estimado para esta lección: 5.5 horas

 


2.1 La documentación.

Por lo general, los manuales de los sistemas operativos UNIX se clasifican en Manuales de Usuario y Manuales de Administrador del Sistema.

2.1.1. Los manuales de usuario

Los tres manuales siguientes son de utilidad para los usuarios de un sistema operativo UNIX:

- La sección Commands contiene por orden alfabético todos los comandos a los que pueden acceder todos los usuarios del sistema. Cada entrada empieza con la descripción de la sintaxis de un comando, es decir, qué es lo que tienes que introducir para ejecutar el comando y sus opciones.

- La sección Miscellaneous tiene distintos tipos de entradas, todas en orden alfabético, clasificando desde los comandos de usuario, como puede ser login, hasta las funciones, que son usadas por los programadores para desarrollar aplicaciones. La entrada titulada "Messages" lista todos los mensajes del sistema que pueden aparecer en pantalla. si vas al subapartado "System Services Messages", encontrarás una entrada para este mensaje seguido por una breve descripción de su significado.

- La sección File Formats describe el contenido y significado de los distintos archivos de datos que utiliza el sistema operativo SCO UNIX.

pwd: Prints working directory name .... pwd(C)

En este ejemplo, las palabras clave son directory, name, prints y working.

Después de la segunda vez que aparece el nombre, al final de la entrada del índice, nos encontramos con una letra entre paréntesis, como la (C). Esta letra nos indica en qué sección del manual está la descripción del comando. Por ejemplo, la (C) se refiere a la sección Commands del User's Reference. Las letras entre paréntesis también te conducen a secciones del System Administrator's Reference o al Programmer's Reference.

Las partes tituladas "See Also" al final de la descripción del comando pueden contener referencias cruzadas de otros comandos. Si consultas la sección Commands del User's Reference en pwd verás que la parte "See Also" te remite a la descripción de cd en la sección Commands del User's Reference.

2.1.2. Los manuales del administrador del sistema

Los tres manuales siguientes describen las características, instalación y administración del sistema.

2.1.3 EL MAN

Man es el manual en línea de todos los sistemas operativos tipo UNIX. Este es uno de los temas más importantes que debes aprender a manejar. Uno de los objetivos de este curso es alcanzar cierto grado de autosuficiencia en LINUX. Man no es la única fuente de información pero frecuentemente suele ser el sitio donde se suele mirar. Si haces una consulta en una lista de usuarios de Linux sobre algún tema que podrías haber averiguado tú mismo consultando el manual, alguien te recordará (en tono más o menos amable, dependiendo del día que tenga) que esa información estaba en el manual.

Se pueden explicar muchas cosas sobre man pero es imprescindible que practiques tú. Para ello deberías echar un rápido vistazo a la página man relativa al comando man. Para ello debes teclear:

$ man man

Todos los documentos del man tienen una estructura característica. Las páginas del manual utilizan un formateador de documentos llamado troff. Permite especificar el formato de un documento. (De qué manera se ven los títulos, encabezados, párrafos, donde aparecen los números de página, etc.) Debido a su flexibilidad resulta bastante difícil de usar, nroff y groff sirven para lo mismo, pero no entraremos a explicar sus diferencias.

Cuando no se conoce exactamente la palabra que se desea buscar, se puede buscar por palabra clave. Para ello usaremos la opción -k, y la opción -f. Esta opción no está disponible en muchos sistemas debido a que hay que generar referencias usando el comando catman.

Cuando no conocemos el nombre de un comando y tampoco encontramos nada por palabra clave, pero sabemos que es lo que hace, podemos usar el comando apropos. Compruébalo tecleando los siguientes comandos:

$apropos man

$apropos apropos

$man apropos

Si tienes el sistema Linux correctamente configurado para imprimir documentos en formato PostScript, puedes imprimir una página del manual haciendo:

$man -t man |lpr

Secciones del manual

Para indicar en un documnento una referencia a una página del manual se suele indicar con el comando seguido de la sección entre paréntesis. El título de esta lección "man(1)" es un ejemplo. Para consultar este comando en una sección concreta habría que teclear man < número de sección > <comando o función >.

Veamos un par de ejemplos con printf(1) y printf(3).

$man 1 printf

$man 3 printf

Como habrás podido observar se refieren a cosas distintas. En el primer caso printf es un comando y segundo una función estándar de C con el mismo nombre. Si no se indica la sección la búsqueda se lleva a cabo en todas las secciones de manual disponibles según un orden predeterminado, y sólo se presenta la primera página encontrada, incluso si esa página se encuentra disponibles en el manual. Compruebe esto en los siguientes ejemplos:

$man printf

$man -a printf.

2.2 Lenguajes de control de órdenes

El "shell" es un programa especial usado como interface entre el usario y el corazón del sistema operativo Unix, un programa llamado "kernel".

El Kernel es cargado en la memoria en el momento de arranque (boot-up), y controla el sistema hasta el momento de parar la máquina (shutdown). Crea y controla los procesos y maneja la memoria, los sistemas de ficheros, las comunicaciones y demás. Todos los otros programas, incluidos los programas del shell residen en el disco. El kernel carga estos programas en memoria, los ejecuta y los limpia del sistema cuando han terminado de realizar su función.

El shell es una utilidad que arranca en el momento de entrar en el sistema (log on), permite a los usuarios interactuar con el kernel, interpretando los comandos que son tecleados en la línea de comando o desde algún fichero script.

Cuando entras en el sistema mediante un login, un shell interactivo arranca y te pide que teclees algo. Cuando escribes un comando, es responsabilidad del shell:

  1. interpretar la línea de comando.
  2. Manipular los wildcards, redirecciones, pipes y contralar el job.
  3. Localizar el comando, y si lo encuentra
  4. ejecutar el comando.

Los tres lenguajes de comandos más utilizados en los sistemas UNIX son el Bourne Shell (AT/T Shell), el C Shell (Berkely Shell) y el Korn Shell (Super conjunto del Bourne Shell). Estos tres shell son bastante parecidos cuando se están ejecutando interactivamente, sin embargo existen bastantes diferencias de sintaxis y eficiencia cuando se están utilizando en lenguajes script.

2.2.1 Características generales

El Bourne Shell es el shell estándar de UNIX, y el shell que utiliza el administrador del sistema. La mayoría de los scripts de administración, como por ejemplo el rc start, rc stop y shutdown son scripts de Bourne Shell, y cuando nos encontramos en el sistema en "Single User Mode" este es el shell que utiliza el administrador cuando entra en el sistema como root. Este shell fue desarrollado por A&T y es conocido por Bourne Shell es conocido por ser conciso, compacto y rápido. Por defecto el prompt del Bourne Shell es el $.

El C Shell fue desarrollado por Berkeley e incluye nuevas características como la historia de línea de comando, "aliasing", aritmética built-in, filename completion, y control de jobs. El C shell también tiene la ventaja de que los usuarios lo pueden ejecutar interactivamente pero los administradores prefieren el C Shell por la simplicidad y rapidez de los scripts. Por defecto el prompt del C Shell es el %.

El Korn Shell es un superconjunto del Bourne Shell y fue desarrollado por David Korn y AT&T. Se añadieron nuevas características a este shell, como la historia de comandos editable, alias, funciones, expresiones regulares y comodines, aritmética built-in, control de jobs, coprocesamiento y características especiales de "debugging". El Bourne Shell es casi completamente compatible con el Korn Shell, por eso los programas desarrollados en Bourne Shell funcionan sin problemas en el Korn Shell. El prompt por defecto del Korn Shell es el $.

2.2.2 Tipos de archivos utilizados

El archivo es la unidad básica de cualquier sistema Linux. Dentro del sistema operativo Linux hay cuatro tipos diferentes de archivos: archivos ordinarios, directorios, vínculos simbólicos y archivos especiales. Además los archivos pueden tener más de un nombre, conocidos como vínculos.

Archivos ordinarios.

Como usuarios, la información con la que trabajas se almacena como archivos ordinarios. Los archivos ordinarios son agregados de caracteres tratados como una unidad por el Sistema. Un archivo ordinario puede contener caracteres ASCII normales tales como texto de manuscritos o programas. Los archivos ordinarios pueden crearse, cambiarse, o borrarse cuando tú quieras.

Vínculos.

Un vínculo no es una clase de archivo, sino un segundo nombre para un archivo. Si dos usuarios necesitan compartir la información de un archivo, pueden tener copias separadas de este archivo. Un problema de mantener copias separadas es que las dos copias pueden rápidamente perder la consistencia. Un vínculo proporciona la solución a este problema. Con un vínculo, dos usuarios pueden compartir un único archivo. Ambos usuarios parecen tener copias del archivo, pero sólo existe un archivo con dos nombres. Los cambios que cualquier usuario realiza tienen lugar sobre la versión común. Este vínculo no solamente ahorra espacio al tener una única copia de un archivo, sino que asegura que la copia que cada uno utiliza es la misma.

Vínculos simbólicos.

Los vínculos se pueden utilizar para asignar más de un nombre a un archivo. Pero tienen algunas limitaciones importantes. No se pueden utilizar para asiignar a un directorio más de un nombre. Y no se pueden utilizar para vincular nombres de archivos sobre equipos diferentes. Desde la integración de los sistemas de ficheros NFS que permiten compartir archivos de diferentes equipos se hizo necesario un cambio, y a partir de aquí surgieron los vínculos simbólicos.

Un vínculo simbólico es un archivo que sólo contiene el nombre de otro archivo. Cuando el sistema operativo opera sobre un vínculo simbólico, éste se dirige al archivo al que apunta el vínculo simbólico. Los vínculos simbólicos no sólo se pueden utilizar para asignar más de un nombre a un archivo, sino que también pueden ser utilizados para asignar más de un nombre a un directorio. Los vínculos simbólicos también pueden ser utilizados por vínculos que residen en sistemas de archivos físicos diferentes. Esto hace posible que un árbol de directorio lógico incluya archivos que residen sobre equipos diferentes que están conectados a través de una red. (Estos vínculos también se denominan vínculos duros, "hard links")

Directorios.

Un directorio es un archivo que mantiene otros archivos y contiene información sobre las localizaciones y atributos de éstos. Por ejemplo, un directorio incluye una lista de todos los archivos y subdirectorios que éste contiene, así como sus direcciones, características, tipos de archivos (si son archivos ordinarios, vínculos, directorios o archivos especiales), y otros atributos.

Archivos especiales.

Los archivos especiales constituyen una característica no usual en el sistema de archivos. Un archivo especial representa un dispositivo físico. Puede ser un terminal, un dispositivo de comunicaciones, o una unidad de almacenamiento. Desde la perspectiva del usuario, el sistema Linux trata los archivos especiales como archivos ordinarios, se pueden leer y escribir igual que los archivos ordinarios. El sistema Linux toma estas órdenes de lectura o escritura y produce una activación del hardware conectado al dispositivo.

Esta forma de tratar el hardware del sistema tiene una consecuencia importante, puesto que el Linux trata el casi todo el hardware como si fuera un archivo, no se necesita aprender las particularidades del hardware del equipo, una vez aprendes a manejar los archivos del sistema Linux, serás capaz de manejar todos los objetos relacionados con el sistema Linux.

2.2.3 sentencias de control

Existen una serie de utilidades intrínsecas de UNIX que están siempre disponibles dentro de los sripts utilizados por los shell:

El comando expr se utiliza como comparación matemática y de modelos.

El comando test te permite evaluar una expresión de resultado booleano.

EL comando grep realiza la búsqueda de un patrón en un conjunto de archivos especificados.

 

2.3 Instalación de aplicaciones.

2.3.1 Disciplina.

Durante la mayor parte del proceso de instalación podrás retroceder para hacer cambios en las pantallas anteriores, por ello es importante que anotes toda la información posible acerca de tus acciones en cada paso, esto te permitirá deshacer cualquier error que pudieras cometer.

Ten en cuante que cuando Red Hat te avise de que los paquetes están a punto de grabarse en el disco duro no hay vuelta atrás.

2.3.2 Utilidades.

El programa kudzu es una herramienta de detección automática y configuración de hardware que se ejecuta también, automáticamente cuando el ordenador arranca. También puedes iniciar kudzu mientras Red Hat Linux está en funcionamiento. En ambos casos, esto es lo que kudzu hace:

1° Comprueba el hardware conectado a tu ordenador.

2° Compara el hardware que encuentra con la base de datos de información de hardware almacenada en el fichero /etc/sysconfig/hwconf.

3° Te insta a que cambies la configuración de tu sistema, basándose en el hardware nuevo o eliminando el que se detectó.

El comando tar también suele ser muy util para descomprimir ciertos paquetes de hardware que vienen en este formato.

Por último, tenemos la utilidad rpm, que suele ser la más utilizada para la instalación de software. A continuación se describe que son y cómo funcionan los paquetes RPM.

 

2.4.2.1 Paquetes RPM.

El gestor de paquetes RPM (Red Hat Linux Package Management), es un sistema creado por Red Hat Linux para poder empaquetar sus distribuciones de Linx, facilitando a los usuarios nóveles una herramienta de instalación accesible a sus posibilidades. Es de libre distribución y se ha convertido en un estándar de facto para empaquetar el software de Linux.

Los paquetes RPM consisten en un conjunto de ficheros comprimidos, con una cabecera binaria que contiene cierta información que el comando rpm utiliza para identificar cada paquete y sus contenidos. Esto permite al comando rpm verificar que todos los ficheros necesarios para que un paquete completo funcione correctamente están presentes (Podría haberse borrado algún fichero por error, en este caso rpm detectaría la anomalía y te avisaría de que es necesario reconfigurar ese paquete).

La herramienta Gnome-RPM, es todavía más sencilla de usar que el comando rpm:

FIGURA 2.1 Menú principal de Gnome-RPM

 

Tanto con el comando on-line de rpm, como con la herramienta Gnome-RPM podrás realizar las siguientes tareas:

Instalar nuevos paquetes RPM.

Para instalar un archivo RPM con el comando rpm utiliza:

# rpm -i [opciones] paquete

Paquete es el nombre del fichero de archivo RPM. Este paquete debe estar dentro del directorio actual, en un CD montado, o en un sitio FTP accesible.


Nota: Cuando pongas el nombre de un paquete que está en un sitio FTP, el fichero primero se descarga y después se instala.


Las opciones posibles con la opción -i son las siguientes:

Opción

Descripción

-vv

Te dará la información de depuración durante la instalación. Es una buena forma de ver todo lo que ocurre durante el proceso de instalación.

-h

Nos muestra (mediante almohadillas) el progreso del proceso de desempaquetado.

-percent

Muestra el porcentaje total del paquete que se ha instalado durante el proceso de instalación.

Utilizando la herramienta Gnome-RPM, podrás acceder mediante el entorno gráfico que te irá guiando a través de todo el proceso:

Figura 2.2 Instalando paquetes con Gnome-RPM

 

Desistalar paquetes RPM.

Si ya no quieres usar un paquete (o quieres recuperar espacio en el disco duro), utiliza la opción -e para eliminar un paquete:

# rpm -e paquete

Si no existen dependencias de este paquete, se eliminará sin hacer ruido, sino rpm, comprobará te avisará de que existen otros paquetes que dependen de este. En cualquier caso puedes realizar tu propia verificación utilizando la opción -q.

Con la herramienta Gnome-RPM, la desistalación tendría el siguiente aspecto:

Figura 2.3 - Desinstalando paquetes RPM

Actualizar un paquete RPM ya instalado.

La opción de actualizar (-U) con rpm se comporta de forma muy similar a la opción instalar. La diferencia es que se desinstala el paquete anterior antes de instalar la nueva versión del paquete. El formato es el siguiente:

# rpm -U [opciones] paquete



Truco: Puedes utilizar la opción -U idependientemente de si es una nueva instalación o actualización. Con -U el paquete se instalaráen ambos casos. Así pues, rpm -U siempre funcionará, mientras que rpm -i fallará si el paquete ya está instalado.

Una cosa que debes tener en cuenta a la hora de actualizar, es la posibilidad de tener que volver a la versión anterior de un paquete. Por ejemplo, si instalas alguna versión nueva de un software y no funciona, tendrás que volver a la versión antigua. Para ello puedes utilizar la opción --oldpackage de la siguiente forma:

# rpm -U --oldpackage AnotherLevel-0.7.4-1.noarch.rpm

Si existe un paquete posterior con este nombre, se eliminará y se instalará la versión antigua.

Peticiones de paquetes mediante RPM.

Si utilizas las opciones de petición (-q) de rpm, podrás conseguir información sobre los paquetes RPM. Puedes simplemente enumerar los paquetes que están instalados o imprimir información detallada sobre cada paquete. El formato básico de esta opción sería:

# rpm -q [opciones]

Algunas opciones útiles para el comando rpm on-line serían las siguientes:

Opciones

Descripción de la acción

-qa

Enumera todos los paquetes instalados.

-qf:fichero

Indica el paquete al que pertenece el fichero.

-qi paquete

Muestra una gran cantidad de información contenida en el paquete.

-qR paquete

Enumera componentes (como librerías y comandos) de los que depende el paquete.

-ql paquete

Lista los ficheros contenidos en un paquete.

-qp paquete

Lista los ficheros de documentación que vienen en un paquete.

-qc paquete

Lista los ficheros de configuración que vienen en un paquete.

Figura 2.4 - Peticiones de paquetes RPM

 

Verificar paquetes RPM.

Si algo no funciona de forma correcta en un paquete de software, o si sospechas que tu sistema ha sido alterado, la opción de verificación (-V) del comando rpm te puede ayudar a verificar los contenidos de los paquetes de software.

Durante una operación de verificación se llevan a cabo varias pruebas de tamaño de fichero y de permisos. Si todo es correcto, no habrá salida. Sin embargo, se mostarán aquellos componentes que han sido modificados desde que se instalaron, junto con la información del modo en que fueron instalados. Por ejemplo:

# rpm -V ppp

S.5-.T c /etc/ppp/chap-secrets

S.5-.T c /etc/ppp/options

S.5-.T c /etc/pap-secrets

Aquí se puede ver que el paquete ppp (utilizado para llamar a una red TCP/IP, como Internet) ha visto alterado tres de sus ficheros desde que fué instalado. La notación al principio muestra que han cambiado el tamaño del fichero (S), la suma MD5 (5) y el tiempo de modificación (T). La letra c indica que todos estos ficheros son de configuración. Revisando estos fucheros y viendo que estos cambios son sólo lo que se realizaron para hacer funcionar PPP, puedes verificar que el paquete está en perfecto estado.

Los indicadores que puedes ver cuando verificas el estado de un fichero son los siguientes:

Ind

Nombre

Descripción

5

MD5 sum

Una comprobación MD5 indica un cambio en los contenidos del fichero.

S

Tamaño del fichero

El número de caracteres en el fichero ha cambiado.

L

Symlink

El fichero se ha convertido en un enlace simbólico para otro fichero.

T

Mtime

El tiempo de modificación del fichero ha cambiado.

D

Dispositivo

El fichero se ha convertido ahora en un fichero especial de dispositivo.

U

Usuario

El nombre de usuario al que pertenece el fichero ha cambiado

G

Grupo

El grupo asignado al fichero ha cambiado.

M

Modo

Si la propiedad o el permiso del fichero ha cambiado.

Utilizando la herramienta Gnome-RPM, la verificación del paquete mostrará la descripción de los posibles cambios encontrados en una pantalla como esta:

 

Figura 2.5 - Verificando paquetes RPM.

 

 

2.2.4.2 Software en formato gzip/tar.

Puede que no todo el sofware que quieras instalar en tú sistema esté en formato de paquete RPM. Otros tipos de ficheros que puedes encontrar, son los paquetes de Linux gzip/tar.

Para instalar software empaquetado de esta forma puedes hacerlo siguiendo las pautas que se explican a continuación:

Si el fichero está comprimido con un formato gzip. Tendrás que utilizar el comando:

# gzip -d paquete.tar.gz

El resultado es que el fichero se descomprime y desaparece la extensión .gz del nombre del paquete. En este ejemplo el nombre del fichero después de haber sido descomprimido quedaría paquete.tar.

EL archivo tar resultante tendrá que ser desempaquetado de la siguiente forma:

# tar xvf paquete.tar

Este comando extrae todos los ficheros desde el archivo y los copia en un subdirectorio del directorio actual.

Cambia de directorio y vete al nuevo directorio creado en el paso anterior.

# cd nuevo_directorio

Busca un fichero llamado INSTALL o README. Uno de estos ficheros contendrá las instrucciones sobre como debes realizar la instalación de ese software en concreto. El comando make se utiliza en general para instalar el paquete. Dependiendo de los ficheros que se hayan desempaquetado en el directorio, deberás usar este comando de un modo u otro. Generalmente viene explicado en el fichero INSTALL o README, pero para que te hagas una idea:

# ./configure -prefix=/usr

# make all

# xmkmf -a

# make all

# make all

Una vez construido y ejecutado el programa, puede que necesites hacer configuraciones adicionales. Para esto deberás consultar las páginas del man y/o los HOWTO que acompañan al software.