domingo, 3 de julio de 2011

Aprende a usar y sacar el máximo partido a tu Linux recién instalado

    * 1. Moviendonos por el disco: archivos y directorios
    * 2. Otros comandos de disco: uso, espacio libre ...
    * 3. Procesos: gestión y control
    * 4. Información del sistema: que máquina tenemos?
    * 5. Las ayudas: donde buscarla?
    * 6. Empaquetadores y Compresores: tar/gzip/bzip
    * 7. Grupos y usuarios (I): gestión
    * 8. Grupos y usuarios (II): permisos
    * 9. Variables de entorno: los PATHs
    * 10. El entorno gráfico: las bases
    * 11. Compilar: por que? para que? con que?
    * 12. paquetes (I): RPM
    * 13. El teclado: funciones avanzadas con el teclado
    * 14. Montando unidades: Floppy, CD, NFS ...

1. Moviendonos por el disco:

Una vez introducido el login y pass nos veremos inmersos en un espectacular sistema basado en linea de comandos, que difiere mucho de la imagen que nos habíamos creado de linux.

La pregunta es: y ahora que?

Vamos por partes:

    * Listando archivos: la orden básica es ls aunque es posible que al escribirlo no pase nada, ya que el directorio donde estamos esta vacío. ls tiene opciones muy interesantes, aunque las mas útiles son -a (para ver los archivos ocultos), -l (para ver los datos de los archivos, tamaño, permisos ...) y --color (para ver los archivos en colores según sean ejecutables, directorios, archivos comprimidos ...)
    * Cambiando de directorio: la orden básica es cd directorio, los directorios se referencian con "/" y no con "\" como pasa en MS-DOS. Existen una serie de palabras clave para acelerar el uso del comando cd: cd ~ nos lleva al directorio raíz de cada usuario, cd .. baja un directorio, cd / te sitúa en el archivo raíz del sistema, cd (sin parámetros) es equivalente a cd ~. La orden pwd nos indica en que directorio estamos actualmente.
    * Creando y eliminado directorios: mkdir directorio crea un directorio, rmdir directorio lo elimina solo si el directorio no contiene nada. Para eliminar directorios enteros se usa el comando rm -rf directorio

    * ATENCIÓN! este es uno de los comandos mas peligrosos para el sistema, piensa bien lo que haces antes de ejecutarlo. Copiar/mover/eliminar archivos: cp archivo destino copia archivo en destino, destino puede ser un directorio u otro archivo. mv archivo destino mueve archivo a destino, el efecto es igual al anterior pero eliminando el archivo de origen. rm archivo elimina archivo. Opciones interesantes para los tres es -i para confirmar siempre, y -f para forzar la acción. Recomiendo el uso de -i siempre.
    * Identificando archivos: estamos acostumbrados a distinguir los archivos por su extensión, pero Linux no impone ninguna restricción a los nombres de los archivos por lo que el archivo pepito podría ser tanto un ejecutanle, como un fichero de texto, como una foto ... para averiguarlo usaremos file, este comando busca cadenas especificas dentro de los archivos que determinan su tipo y por tanto el tratamiento que les vamos a dar. Por ejemplo el archivo:


      -rw-r--r-- 1 root root 6842843 Jan 16 16:20 linux-2.0.34

       no parece tener un formato conocido, aplicamos file:

      [root:/usr/src]# file linux-2.0.34
      linux-2.0.34: gzip compressed data, deflated, last modified: Thu Jun 4 06:44:55 1998, max compression, os: Unix

       Ahora ya sabemos que se trata de un archivo comprimido con gzip y como tratarlo.
    * Links: un link es una imagen de un archivo o directorio en otra parte del disco, la ventaja de esto es tener accesible un mismo archivo o directorio desde diferentes puntos del árbol de directorios, algo parecido a un acceso directo, la orden básica es ln origen destino, se pueden linkar tanto archivos como directorios y principalmente con las opciones -s (solo crea un puntero que apunta al origen) y -h (crea imágenes totales del origen).

    * Por ejemplo, tenemos el directorio /usr/src/linux-2.2.0/ y queremos que el sistema también lo vea como /usr/src/linux/, en este caso el comando seria: ln -s /usr/src/linux-2.2.0 /usr/src/linux Buscar archivos: find -name archivo busca recursivamente el archivo desde el directorio actual. Tiene muchas opciones que pasan por buscar con comodines, por permisos, por fechas de modificación, por propietario ...
    * Viendo archivos: las ordenes básicas son cat archivo, more archivo, less archivo y algunos otros, recomiendo que pruebes los tres y veras cual te gusta mas.
    * Editando archivos: esta es una de las operaciones mas comunes dentro del mundo linux, pues casi todo se configura a partir de archivos de texto modificables por el usuario. Hay muchos editores de texto, el mas extendido es vi aunque recomiendo nano por su facilidad de uso.

2. Otros comandos de disco:

A parte de archivos y directorios, hay mas cosas en el disco que debemos conocer, estado del sistema de archivos, espacio libre ...

    * Espacio disponible: df, nos da información sobre la unidad actual, el nombre de la unidad, la capacidad total, el uso, el espacio libre ... la opción mas importante es -h que hace que la salida sea mas legible (usa unidades fáciles de leer).
    * Espacio usado: du, indica cuanto espacio usa el directorio actual y todos sus subdirectorios. De nuevo una buena opción es -h (mas legible) y -s para hacer solo un sumario y no dar información de todos los subdirectorios.
    * Sistema de archivos: ATENCIÓN! estos comandos son peligrosos, solo puede realizarlos root. fsck /dev/dispositivo chequea la integridad del sistema de archivos del dispositivo. mkfs -t tipo /dev/dispositivo crea un sistema de archivos del tipo especificado en el dispositivo. Por ejemplo: mkfs -t ext2 /dev/fd0 formatea un disket con el sistema de archivos de linux.

3. Procesos:

Un proceso es cualquier programa ejecutandose, son procesos todos los programas que lancemos, las consolas, los demonios de sistema ...
La multitarea real de Linux unido al gran numero de procesos (mas de 20) que pueden estar corriendo a la vez en un sistema "normal" hacen que conocer el control de procesos (o tareas) sea importante.

    * Listando procesos: ps lista procesos. Opciones interesantes son (no llevan "-" delante!) a (muestra todos los procesos, aunque sean de otro usuario), u (información adicional del usuario y del proceso).

    * Ademas de ps, podemos usar la orden top, que nos informa de los procesos actuales y aparte indica los recursos que consumen, la memoria libre, la hora y otros datos de interés. El PID: es el numero con el que el sistema identifica un proceso. Es muy importante conocerlo, pues se usa para referenciar procesos en multitud de comandos. Es la primera columna del comando ps au.
    * Controlando procesos: kill SIGNAL PID o killall SIGNAL nombre_de_proceso envía la señal SIGNAL al proceso, SIGNAL puede ser -9 (matar proceso), -1 (reiniciar proceso) ...

    * Por ejemplo killall -9 sendmail elimina el programa sendmail de la memoria. Interrumpir procesos: Ctrl+c mata el proceso actual que se encuentra en primer plano, Ctrl+z envía el proceso actual a segundo plano y para su ejecución, aunque no lo elimina de la memoria.
    * Moviendo procesos: los procesos lanzados por el usuario pueden moverse de primer a segundo plano, para permitir seguir usando la consola aun cuando el proceso no ha acabado. La manera mas sencilla de lanzar un proceso a segundo plano es lanzandolo como proceso &.

      Para listar los procesos en segundo plano usamos la orden jobs, para devolver un proceso en segundo plano a primer plano se usa la orden fg numero, numero es el primer parámetro que jobs asigna a cada proceso.

4. Información del sistema:

Linux informa de prácticamente todo lo relacionado consigo mismo y con los programas que esta ejecutando, solo hay que saber donde mirar.

    * Información básica sobre nuestra máquina: uname -a, nos informa sobre el sistema operativo, la versión del kernel, el nombre asignado a la máquina, el tipo de procesador instalado ...
    * El arranque: durante el arranque el kernel detecta gran cantidad de hardware de nuestro sistema, aportando información importante, como nombre de las unidades detectadas, puertos, protocolos de red activados, periféricos ... esta información suele salir muy rápido, para verla con mas tranquilidad solo hay que teclear dmesg | more.
    * El entorno: env nos muestra todas las variables de entorno definidas y sus valores.
    * Memoria: free nos da un informe sobre el estado de la RAM física, así como de la swap, el parámetro -m muestra los datos en megas. top ademas indica lo que esta consumiendo cada proceso activo y el estado global de la CPU.
    * El directorio /proc: es una imagen de la memoria, y en ella hay gran cantidad de información valiosa, la mayoría de los archivos que contiene son de texto, muy informativos y su nombre es autodescriptivo, por ejemplo el archivo /prot/interrupts muestra información muy valiosa sobre las IRQs, para ver el contenido de estos archivos basta con usar cat /proc/archivo, por ejemplo este es el aspecto de mi /proc/mounts:


      [root:/proc]# cat mounts
      /dev/root / ext2 rw 0 0
      none /proc proc rw 0 0
      /dev/hda1 /mnt/dos msdos rw 0 0
      /dev/cdrom /mnt/cdrom iso9660 ro 0 0

5. Las ayudas:

Hasta ahora todo parece bastante complicado y si no te lo has tomado con mucha calma seguramente no te has enterado de nada. Vamos a ver que se puede hacer cuando todo parece perdido.

    * Ayudas de comando: muchos comandos incluyen pantallas de ayuda cuando son lanzados sin parámetros (si los requieren) o con la opción -h o --help. Si la pantalla de ayuda es demasiado larga puedes usar Shift+RePag Shift+AvPag para moverte por el buffer de pantalla.

    * Por ejemplo: cp --help El comando help: muestra ayuda sobre el comando que se le pasa como parámetro, para saber que comandos conoce help, lanzalo sin parámetros.

    * Por ejemplo: help jobs El comando man: es la ayuda mas usada, muestra un manual sobre el comando que se le pasa como parámetro, estos manuales son muy completos y es el primer lugar donde se debe acudir para solucionar cualquier problema. Hay una versión para las X un poco mas intuitiva llamada xman.

    * Por ejemplo: man bash El comando info: con una finalidad similar a la de man aunque algo menos estandarizado, teclea info o info comando. Puede leer archivos man, y tiene multitud de opciones.

    * Por ejemplo: info syslog El directorio /usr/doc: contiene documentación sobre la mayoría de paquetes instalados en el sistema. Es una base de datos muy amplia y que puede ser muy útil para aquellas cosas que el man no acaba de aclararnos.
    * Internet: el volumen de información sobre linux en internet es inmenso, solo tenéis que pasaros por SLUG o LUCAS (ambas con información íntegramente en castellano!) para haceros una idea. Podréis encontrar manuales, libros electrónicos, FAQs (respuestas a las preguntas mas comunes), HOWTOs (COMO hacer cualquier cosa), webs, ftp, news, irc ...

6. Empaquetadores y Compresores:

Linux entiende todos los formatos de compresión mas extendidos, como son ZIP, RAR, TAR ... y tiene herramientas para su gestión, pero aquí voy a centrarme en los mas usados: tar, gzip y bzip2.

    * Tar: es el empaquetador estándar de linux, empaquetador significa que no comprime, si no que junta un grupo de archivos en un solo archivo con extensión .tar, que es mas fácil de transportar o intercambiar entre sistemas o por la red. Es la herramienta ideal para las copias de seguridad. Tiene multitud de modificadores aunque los usos mas frecuentes son: tar cvf archivo.tar archivos_a_comprimir (para crear archivos tar) y tar xvf archivo.tar (para desempaquetar un tar).

    * Generalmente se usa junto a gzip con la orden: tar xvfz archivo.tar.gz , (la z indica a tar que use compresión zip). También se puede usar junto a bzip2 con la orden: bzip2 -d archivo.tar.bz2 | tar xfv -. Gzip: es el compresor estándar de linux, en general se usa junto a tar, para comprimir un grupo de archivos empaquetados. La extensión de los archivos comprimidos con gzip es .gz, y la de los empaquetados y comprimidos es .tar.gz o .tgz. Gzip solo puede comprimir los archivos de uno en uno por lo que no es adecuado para compactar grupos de archivos. La orden es gzip -c archivo (para comprimirlo) y gzip -d archivo.gz (para descomprimirlo).
    * Bzip2: es el nuevo compresor sucesor del gzip, con ratios de compresión que lo superan en un 10% aproximadamente. La extensión es .bz2, y los comandos equivalentes al gzip, bzip2 -c archivo y bzip -d archivo.bz2.

7. Grupos y usuarios (I):

Todo sistema linux permite el uso del mismo ordenador por diferentes usuarios. Para mantener una cierta seguridad de los datos de cada uno se asignan una serie de permisos y grupos.

    * que usuarios necesito?: como mínimo 2, root y otro mas, root ya existe y lo usaremos SOLAMENTE! para las tareas de mantenimiento del sistema, nunca para leer documentación, jugar, navegar por internet, experimentar comandos ... para todo esto se usan los demás usuarios.
    * Creando usuarios: hay varios comandos, el mas sencillo es useradd nombre_de_usuario ; passwd nombre_de_usuario, que crea un nuevo usuario con una serie de opciones predefinidas, estas opciones pueden cambiarse manualmente editando el archivo /etc/passwd (ATENCIÓN! un mal uso de este archivo puede llevar a la imposibilidad total de hacer un login en el sistema).
    * Comandos relacionados: users lista los nombres de los usuarios conectados al sistema, w y who lista los usuarios e informa sobre la consola en la que están, el tiempo que llevan conectados y mas, userdel nombre_de_usuario elimina un usuario, su salta de modo usuario a modo root.
    * Usuarios de sistema: ademas de root y los usuarios que hayamos creado, el sistema tiene un grupo de usuarios que son necesarios y no debemos eliminar, son por ejemplo: bin, mail, news, operator, games ...
    * Grupos: los grupos son una forma de dar los mismos permisos a un conjunto de usuarios, de manera que puedan trabajar en grupo. Por defecto se crea un grupo por cada usuario, y esa política es la mejor en la mayoría de los casos, ademas existen grupos de sistema como: lp, mem, ftp ...

8. Grupos y usuarios (II):

Los permisos son necesarios para saber que usuarios pueden hacer ciertas cosas y cuales no. Por ejemplo, no es normal que dejemos entrar alguien por telnet y que nos modifique el /etc/passwd, por ejemplo.
NOTA: el permiso de ejecución para un directorio significa que se puede acceder al contenido de ese directorio.
NOTA: los permisos de un link son los del archivo al que apunta.

    * Viendo y reconociendo permisos: los permisos de un archivo se ven con la orden ls -l, el formato de salida se parece a esto:


      drwx------ 5 nesalpa it 1024 Jan 5 00:54 Desktop
      drwx------ 2 nesalpa it 1024 Jan 2 19:48 Mail
      drwxr-xr-x 2 nesalpa it 1024 Dec 27 16:27 docs

      Lo mas importante son esas primeras letras ilegibles de cada linea. La primera letra indica el tipo de archivo (- archivo normal, d directorio, l link, b dispositivo ...). Las demás letras se leen de tres en tres, des esta manera: d/rwx/r-x/r-x. El primer trío se refiere al propietario del archivo, el segundo a los demás miembros del grupo del propietario y el tercero al resto. Las letras son: r (permiso de lectura), w (permiso de escritura), x (permiso de ejecución).
      Después los dos nombres se refieren al nombre del propietario y nombre del grupo al que pertenece el archivo, de esta manera nuestro archivo docs del ejemplo quedaría así:

      drwxr-xr-x 2 nesalpa it 1024 Dec 27 16:27 docs

      que significa:
      d: se trata de un directorio
      rwx: permiso de lectura/escritura/ejecucion para el propietario
      r-x: permiso de lectura/ejecución para el grupo
      r-x: permiso de lectura/ejecución para el resto
      2: numero de inodos
      nesalpa: nombre del propietario
      it: nombre del grupo
      1024: bytes
      Dec 27 16:27: fecha de creación o de ultima modificación
      docs: nombre
    * Cambiando permisos:el comando es chmod permisos fichero, la forma de indicar los permisos es sencilla, se usa una letra para designar a quien se le quieren cambiar los permisos ("a" todos, "u" propietario, "g" grupo, "o" otros) después se pone un símbolo + (para dar el permiso) o - (para quitarlo) y finalmente se pone el permiso o los permisos que queremos cambiar ("r" lectura, "w" escritura, "x" ejecución).


      Un ejemplo sencillo seria dar permiso de ejecución para todos a un fichero, la orden seria: chmod a+x archivo
    * Cambiando grupo y propietario: las ordenes son chown usuario archivo para cambiar el propietario y chgrp grupo archivo para cambiar el grupo.
    * Permisos especiales: a parte de los permisos básicos existen otros dos permisos, el sticky bit (completamente desfasado) y el SUID o SETUID. El SUID es un permiso que da permisos de root a un proceso aunque haya sido lanzado por un usuario, esto es necesario, por ejemplo para que usuarios normales puedan arrancar el entorno gráfico, puedan conectarse a internet ... este permiso se simboliza con la letra "s" y se aplica así: chmod a+s archivo.

9. Variables de entorno:

En ocasiones es necesario cambiar los parámetros del sistema, ya sea para adecuarlos a nuestro lenguaje, a nuestras necesidades, para acceder a nuevo software, localizar librerías ...

    * que variables tengo definidas?: con el comando env veremos un listado de todas las variables que usa el sistema.
    * Donde se definen?: esto ya no es tan sencillo, hemos de plantearnos si queremos hacer cambios permanentes o temporales, para un usuario o para todos ... los cambios temporales podemos hacerlos directamente en la linea de comandos, los permanentes los haremos en algún archivo de inicio, en uno global si es para todos (por ejemplo en /etc/bashrc) o dentro del directorio del usuario para el que queremos definirla (por en ~/.bashrc)

    * NOTA: los cambios en archivos de inicio no se reflejan hasta que se haga un nuevo login o con la orden source archivo_de_inicio. Como se definen?: tanto si lo ponemos en algún guión de inicio, como desde la linea de comandos la sintaxis es la siguiente: export VARIABLE="valor".
    * Modificando el PATH: si queremos añadir una entrada al PATH no nos basta con la orden export PATH="/home/nesalpa/bin", pues esto elimina del PATH todas las demás entradas como /bin, /usr/bin ... la orden correcta seria: export PATH="$PATH:/home/nesalpa/bin", que indica al sistema que mantenga el PATH y añada la nueva entrada.

10. El entorno gráfico:

El entorno gráfico (también llamado X o X-window) es una potente herramienta que facilita el control de tareas de una manera mucho mas sencilla, a parte de permitirnos ejecutar gran cantidad de software que no se ejecuta en consola. Usarlo no es difícil, los problemas surgen al intentar ponerlo en marcha. No voy a intentar resolver todos los problemas de las X, ni explicar como se usan las X con tal o cual tarjeta, para eso esta la documentación. Tampoco voy a recomendar un gestor de ventanas pues eso queda a elección de cada uno.

    * Requerimientos: sencillo, un ratón bien configurado, una distribución mas o menos reciente de X (en este momento 3.3.3 es la ultima) y una tarjeta gráfica soportada por las X. ATENCIÓN! Este ultimo punto es muy importante, la gran velocidad con la que aparecen nuevos modelos y las dificultades que ponen los fabricantes hacen muy difícil el soporte de nuevo hardware por parte de X, lee toda la documentación disponible en http://www.xfree86.org para saber si tu tarjeta esta soportada.
    * Servidores: el servidor es la parte de las X encargada de comunicarse con la tarjeta, hay muchos y es importante que uses el mas adecuado para tu tarjeta (de nuevo lee toda la documentación para esto). Ademas de los servidores aportados por XFree86 algunas compañias como SUSE o RedHat también tienen los suyos.
    * Configuración: hay varias utilidades para hacer esto, te sugiero que las uses todas y que te quedes con la que de mejores resultados.

      XF86Setup: aplicación gráfica muy intuitiva, viene con las versiones mas modernas de X.
      Xconfigurator: aplicación basada en ncurses, sencilla, pero solo configura video/monitor, viene con las distribuciones que usan paquetes RPM (Red Hat, Eurielec, Caldera y SuSE)
      xf86config: la mas austera, a veces es la mas efectiva, viene con todas las distribuciones de X.
    * Configuración manual: una vez acabado puede ser necesario editar a mano el archivo XF86Config que generan las aplicaciones anteriores para acabar de pulir fallos. Este archivo puede estar en varios sitios del disco, yo recomiendo tener una sola copia y dentro de /etc. El archivo X: Ha de ser un link al servidor X que queramos usar, puede estar en varios sitios del disco, recomiendo tener una sola copia dentro de /usr/X11R6/bin.

    * Por ejemplo, para arrancar las X usando el servidor gráfico SVGA, haremos este link: ln -s /usr/X11R6/bin/XF86_SVGA /usr/X11R6/bin/X. Arrancando las X: el comando base es startx, si surgen problemas es muy importante leer los mensajes de error que dan las X a la hora de pedir ayuda. Si startx no funciona puede ser problema de algún programa y no del propio entorno gráfico, para distinguir esta situación intentaremos arrancar las X con el comando xinit, si el resultado es una pantalla gris con el cursor en forma de cruz en el centro es que las X están bien y lo que falla es algún programa que intenta ejecutarse durante el inicio (seguramente algún fallo en el gestor de ventanas).

11. Compilar:

En pocas palabras compilar es pasar de las fuentes del programa a un fichero ejecutable. Este proceso no es ni sencillo ni fácil, por lo que es frecuente que aparezcan fallos. Por suerte existen algunas herramientas (Makefiles, configures ...) que nos van a facilitar la vida.

    * Requisitos: la verdad es que los requisitos para compilar son bastante altos, hay que tener instalados el gcc, el make, las libc-devel, libg++-devel, libstdc++-devel, todas las versiones de desarrollo de las librerías que usa el programa que vayamos a compilar, las X-devel si el programa va ejecutarse bajo el entorno gráfico, opcionalmente otros paquetes de control, revisión de versiones, comandos especiales ... y todo lo que nos pida la documentación del programa que vayamos a compilar.
    * Como se hace?: después de descomprimir el paquete lo primero que hay que hacer es leer la documentación (casi siempre hay algún README o INSTALL) y asegurarnos de que tenemos todo lo que necesitamos para compilar y que nuestro sistema esta soportado por las fuentes, es decir de nada nos sirve tener las fuentes de un programa que usa unas librerías que no tenemos o que no compila en Linux. Un proceso semi-estandar entre el software mas reciente es tener que poner solo esto para conseguir compilar e instalar el programa:

      ./configure
      make
      make install
    * Todo esto dentro del directorio donde se encuentran las fuentes. Aunque en muchos casos no existe el "configure" y deberemos editar a mano el archivo Makefile para adecuarlo a nuestro sistema (definir PATHs, comandos, opciones especificas de plataforma ...) Compilar un solo archivo (*.c): si lo que queremos compilar es un solo archivo el proceso es mucho mas sencillo, basta con la orden: gcc -O2 -Wall -o nombre_del_ejecutable archivo.c.

12. paquetes (I): RPM

Los paquetes son formas de distribuir software para facilitar su instalación y mantenimiento. En general se distribuyen en forma de binarios por lo que no hace falta compilarlos. Hay Principalmente tres tipos RPM, DEB y TGZ. Es muy recomendable instalarlo todo de esta manera, pues así nos evitaremos preocuparnos por donde dejan los programas cada archivo, ya que el gestor sabe en todo momento donde están facilitando su eliminación o localización.

RPM: Es el tipo de paquetes binarios mas extendido y en el que se basan las distribuciones Red Hat (y Eurielec), Caldera Open Linux y SuSE.
Hay que remarcar que aunque el formato de paquetes sea el mismo, no significa que los paquetes de una distribución vayan a funcionar en otra, hay que tener en cuenta las librerías instaladas, el software adicional, las incompatibilidades ...

Gestión: existen varios programas para la gestión de RPMs, voy a comentar algunos.

    * rpm: este comando es el básico para la gestión de RPMs y es en el que se basan las demás utilidades. La sintaxis es muy sencilla: rpm -i archivo.rpm para instalarlos, rpm -U archivo.rpm para actualizarlos, y rpm -e paquete para eliminarlos (ojo! los paquetes se eliminan por su nombre, no por el nombre de archivo, en general el nombre del paquete es el mismo que el del archivo sin la extensión .rpm)

    * Otras funciones interesantes son: rpm -qa para ver un listado de todos los paquetes instalados, rpm -qlip archivo.rpm para ver información y el listado de archivos de un paquete ... mas información en man rpm y rpm sin parámetros. purp: es un intento de facilitar el uso de rpm, con menús e información gráfica. Para mi es el mejor. Necesita la librería ncurses-4.2 o superior. Funciona en modo consola por lo que no hace falta tener las X instaladas para usarlo.

      Se puede arrancar como purp sin parámetros, para gestionar solo los paquetes instalados en el sistema o purp /directorio_de_rpms para gestionar los paquetes instalados mas los disponibles en el directorio que se le pasa como parámetro (ideal para examinar CDs llenos de RPMs).
    * Lo puedes encontrar en http://www.lysator.liu.se/purp/ glint: es un frontend gráfico para rpm desarrollado por Red Hat, necesita tener instaladas y configuradas las X, a primera vista parece muy bueno e intuitivo, pero rápidamente se echan en falta opciones e información adicional. Recomendado para los que no tienen purp y no se aclaran con las opciones de rpm.
    * grpm: Simple GNOME RPM Tool. Otro frontend para rpm, este de mejor calidad que el glint pero requiere tener instalado GNOME.

Las dependencias: para el usuario novato esta palabra es un dolor de cabeza constante, los paquetes no quieren instalarse por errores de dependencias. que son?
La mayoría de los programas necesitan de otros componentes software para funcionar, en su mayoría son librerías necesarias para el programa, pero también pueden ser otros programas, documentación, la existencia de algún directorio ... los errores de dependencias lejos de ser un problema son una gran ventaja, pues nos evita estar instalando software que luego no funciona y no sabemos por que.
A veces ocurre que el gestor de RPMs da como error de dependencias un paquete que sabemos seguro que tenemos instalado. Esto puede deberse a varias cosas: a que realmente no lo hemos instalado correctamente, a que tenemos una versión diferente a la que necesitamos o que hayamos instalado el programa usando otro método (el gestor es incapaz de saber que paquetes hemos instalado en el sistema si no lo hemos usado a el para hacerlo).
Si estamos seguros de cumplir los requisitos y que el programa funcionara aunque el gestor crea que no, la orden es: rpm -i --nodeps archivo.rpm esto se salta el chequeo de dependencias, si aun así no quiere instalarse podemos usar la orden: rpm -i --nodeps --force archivo.rpm, aunque en este caso lo mas seguro es que el programa acabe por no funcionar.

RPMs en Debian/Slackware: Debian tiene herramientas para la gestión de RPMs por lo que no hay problemas en usarlos. De todas maneras, si no tenemos esas herramientas instaladas o usamos Slackware podemos usar el programa alien para convertir el formato del paquete. Alien es una utilidad que convierte RPM/DEB/TGZ a RPM/DEB/TGZ, y puede hacer todas las transformaciones posibles. De todas maneras este sistema debe usarse con cuidado, pueden aparecer problemas de dependencias y de incompatibilidades entre paquetes de diferentes distribuciones.

13. El teclado: funciones avanzadas con el teclado

Podemos usar el teclado para mucho mas que para escribir, hay funciones complejas que podemos hacer fácilmente pulsando un par de teclas.

    * Cambiando de consola: Una consola es un terminal en el que pueden escribirse ordenes, por defecto la mayoría de distribuciones incluyen 6 consolas (tty) mas todas las sesiones telnet (ttyp) mas todos los emuladores de terminal para las X (xterm, rxvt, eterm ...). Para cambiar de consola en modo local basta con pulsar la combinación Alt+FX donde X es el numero de la consola a la que queremos movernos (FX son las teclas de función!)

      Algunos programas "atrapan" esta combinación de teclas asignandoles otra función, es el caso de las X, el DOSEmu, el DOOM ... la combinación de teclas para cambiar de consola en estos casos es Ctrl+Alt+FX.
    * Nota: la consola en la que se proyectan las X es la primera libre, en la mayoría de los casos la 7. Reiniciar/cerrar: la combinación Ctrl+Alt+Supr provoca un reinicio del ordenador, aunque este comportamiento se puede modificar llegando a realizar cualquier acción tras esta combinación simplemente editando el archivo /etc/inittab, buscaremos unas lineas como estas:


      # Trap CTRL-ALT-DELETE
      ca::ctrlaltdel:/sbin/shutdown -t3 -r now

       El ultimo campo es la acción a realizar. Podemos substituir -r por -h para que cualquier usuario pueda cerrar la máquina.
    * Completado: podemos usar la tecla TAB (tabulador, la tecla sobre el Bloq Mayus) para completar comandos y nombres de archivos, tan solo hay que teclear las primeras letras de la orden y pulsar TAB para que el sistema intente completarla. Por ejemplo, podemos pulsar:


      da'TAB'

       Para que en la linea aparezca:

      date

       Lo mismo pasa con los nombres de archivos, por ejemplo, desde / podemos hacer:

      cd r'TAB'

       El resultado es:

      cd root/

       Si existen coincidencias de nombres, de manera que el sistema no sabe cual queremos completar, nos avisa parándose en el punto en el que las dos o mas ordenes empiezan a diferenciarse y emite un pitido. En este caso si volvemos a pulsar TAB se nos muestra una lista de todas las ordenes que coinciden con el patrón dado.

      Por ejemplo, si pulsamos:

      mak'TAB'

       Veremos en el terminal:

      make

       Si volvemos a pulsar TAB:
      

      make
      makedepend
      makewhatis
      make-ssh-known-hosts
      makeg
      makedb
      makeinfo
    * Editar la linea de comandos: puede editarse la linea de comandos como si de un editor normal se tratase, a diferencia de MS-DOS que borra los caracteres por los que pasa el cursor.
    * Historial: Con las teclas de cursor de Arriba y Abajo podemos movernos por el historial de los últimos comandos tecleados. Muy útil para tareas repetitivas de sintaxis compleja.

14. Montando unidades:

      NOTA: las unidades en linux.
      Las unidades en linux son tratadas como ficheros, concretamente como ficheros de dispositivo y se encuentran dentro del directorio /dev.

      Los nombres son:
      /dev/fd0 -> Primera disketera
      /dev/fd1 -> Segunda disketera ( ... y así con todas las que haya)
      /dev/hda -> Primer disco del primer canal IDE
      /dev/hdb -> Segundo disco del primer canal IDE
      /dev/hdc -> Primer disco del segundo canal IDE
      /dev/hdd -> Segundo disco del segundo canal IDE
      /dev/sda -> Primer disco SCSI
      /dev/sdb -> Segundo disco SCSI ( ... y así con todos los que haya)

      Ademas, los discos duros (tanto IDE como SCSI) tienen particiones, a las que llamamos:
      /dev/hda1 -> Primera partición del primer disco del primer canal IDE
      /dev/hda2 -> Segunda ...
      /dev/hdb1 -> Primera partición del segundo disco ...

      Para saber que unidades i particiones reconoce el sistema haremos dmesg fijandonos especialmente en las lineas que definen las unidades, por ejemplo, en mi sistema:

      [root:/]# dmesg
      ...
      hda: ST33210A, ATA DISK drive
      hdb: ACER CD-910E/JAS, ATAPI CDROM drive
      hda: ST33210A, 3098MB w/256kB Cache, CHS=787/128/63, (U)DMA
      Partición check:
      hda: hda1 hda2 hda3
      ...

      Podemos ver como el sistema reconoce un disco duro (hda) con tres particiones (hda1, hda2 y hda3) y un CD-ROM (hdb)

Vamos a ver como acceder a las unidades de almacenamiento, ya sean floppys, CDs, otros HDDs o unidades de red.
Los comandos son mount y umount para montar y desmontar unidades. La sintaxis general es:
mount -t tipo -o opciones /dev/dispositivo /directorio_de_montaje
umount /directorio_de_montaje

tipo: es el sistema de ficheros que contiene la unidad: MS-DOS, ext2, iso9660 ...
opciones: son parámetros como lectura/escritura, montar automáticamente ...
dispositivo: es el nombre que da linux a la unidad (hda1, hdb, fd0 ...)
directorio_de_montaje: es el directorio desde donde será accesible el sistema de archivos montado, debe existir antes de intentar montarlo y debe estar vacío, ademas ningún usuario debe estar en el momento de montaje en ese directorio.

El comando mount sin parámetros nos da una lista de las unidades montadas.

Las unidades montadas no pueden extraerse (ojo con los diskette!), antes hay que desmontarlas. Y para montar un sistema de archivos antes hay que tener un disco dentro (recordad que se montan los discos, no las unidades lectoras). Mas información en man mount, man umount y man fstab

En todos los casos (menos ext2) es requisito indispensable haber recompilado el kernel con soporte para el sistema de ficheros que queremos montar.

    * Montar un disket: mount -t tipo /dev/fd0 /mnt/floppy, el tipo generalmente es ext2 (disco linux) o vfat (disco DOS/WIN). No requiere mas parámetros.
    * Montar un CD-ROM: mount -t iso9660 /dev/XXX /mnt/cdrom, el dispositivo depende de donde tengamos instalado el CD-ROM, puede ser hda, hdb ... el comando dmesg | grep CD nos informa de eso:


      [root:~]# dmesg | grep CD
      hdb: ACER CD-910E/JAS, ATAPI CDROM drive

       En este caso el CD esta en /dev/hdb.
    * Montar otras unidades de disco: mount -t tipo /dev/XXX /mnt/directorio, de nuevo el tipo y la unidad dependen de nuestro sistema y para el directorio de montaje se suele usar un nombre que identifique el sistema montado, por ejemplo, para montar una unidad Windows que se encuentra en la primera partición del primer disco:


      mount -t vfat /dev/hda1 /mnt/win

       Y para montar un segundo disco con linux instalado en la primera partición:

      mount -t ext2 /dev/hdb1 /mnt/linux
      
      
    * Montar unidades de red: mount -t nfs host:/directorio /mnt/host, este caso es un poco diferente, host es el nombre de la máquina remota y directorio es el nombre del directorio de la máquina remota que queremos (y se nos permite) montar. De manera que para montar el directorio /usr de la máquina Storm en nuestro sistema haremos:


      mount -t nfs Storm:/usr /mnt/Storm

       En este caso puede ser necesario especificar algunas opciones.

Ahora vamos a ver como automatizar la mayoría de estos comandos para no tener que teclearlos cada vez.
El archivo /etc/fstab: este archivo contiene una lista de unidades y todos los parámetros necesarios para su montaje, la sintaxis es sencilla:

# Unidad Punto de montaje Tipo Opciones

Un ejemplo:

/dev/hda1 /mnt/dos vfat defaults 0 0

Para montar una unidad definida en el fstab basta con la orden mount /directorio_de_montaje, para montar a la vez todas las unidades mount -a.
Las unidades definidas en el fstab intentan montarse durante el arranque a menos que pongamos como opción noauto (muy aconsejable en CDs y floppys). Si queremos poner mas de una opción estas se separan por comas sin espacios entre ellas.

No hay comentarios:

Publicar un comentario