Registrate y evitaras que te salgan los Popup de publicidad



Páginas: 1 [2] 3   Ir Abajo
  Imprimir  
Autor Tema: [CURSO DESDE CERO] GNU/LINUX  (Leído 6450 veces)
yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #15 : Septiembre 30, 2007, 03:00:19 »

Entrega 15. Reflexiones y mirando hacia delante.

    Cuando ves la luz al final del túnel va y se te cae el techo encima.

Nota de la revisión:

Esta entrega es circunstancial y se ha mantenido como curiosidad y para mantener el número de las entregas, no aporta actualmente nada al curso, por lo que podéis pasar a la siguiente sin problemas.

Se han añadido notas para actualizar lo que se cuenta.

Reflexión.

Hasta el día de hoy, cada semana he ido poniendo una entrega por semana más o menos puntual, pero siempre una por semana, menos cuando empezó que puse tres de golpe y ahora que pongo 2 en una misma semana (En la revisión se están poniendo entre 6 y 7 por semana, hasta que la revisión termine y se publique 1 por semana, cosa que pasará después de la entrega número 30). Y por cierto, tengo que decir que estoy muy contento con la audiencia que está teniendo, que yo la estimo en más de 100 personas que lo siguen fielmente (Como se paró el curso durante mucho tiempo, esto ya puede no ser verdad, pero seguro que lo recuperaremos en cuando Sinuh y Noticias3d se actualicen, ya que hay problemas actualmente y tardarán algo más). La verdad, nunca me esperé tanto, tanto es así que me siento animado a continuar durante mucho más tiempo.

Incluso se me ha pasado por la cabeza hacer otro curso sobre programación en entornos Unix/Linux también desde 0 (Esto es ya una realidad), pero mi tiempo, sobre todo porque quiero terminar ya mi proyecto para acabar la carrera (Actualmente soy programador de sistemas de información geográfica entre otras cosas, vamos, chico para todo), no es excesivamente abundante y no voy a dejar de hacer vida social Wink (curiosamente hay vida después de todo esto XD ). ¿Quizás cuando lo termine? Pues, puede.

También da gusto ver cómo si pones en google “curso GNU/Linux” sale el primero de 70 páginas de resultados (unos 682) con tan poco tiempo de vida, y juro que no he hecho ningún conocido truco (Esto actualmente ya no es cierto).

La participación el foro para el curso se puede decir que es prácticamente nula y curiosamente preguntáis donde está habilitado para hacer comentarios, y claro, esperar respuestas ahí pues como que es un poco difícil. Por cierto, gracias por los ánimos en los comentarios. Espero que la causa por la que no usáis los foros al menos sea porque me explico muy bien o porque aún estamos en lo más básico.

Tampoco he recibido ni un solo e-mail con ninguna petición sobre algún tema, ni ofreciéndose para hacer complementos a las entregas para el que quiera saber más, ni sugerencias, ni comentarios... supongo que lo leído en la entrega 0 os echa para atrás de hacerlo, aprovecho para animaros a que lo hagáis, sobre todo para las sugerencias y peticiones (Actualmente los mails recibidos se pueden contar con los dedos de una mano).

En definitiva, estoy muy contento porque “creo” que os gusta, y esto lo deduzco por las visitas que tiene, espero que siga durante mucho tiempo más (Actualmente se superan las 125000 visitas en suma total de entregas en sólo en Sinuh).

Mirando hacia delante.

Ahora que ya está visto el uso mas básico de la consola empezaremos con cosas un poco más complejas como pueden ser la administración de usuarios, ficheros de configuración, redes ... así que, dependiendo de lo complejo que sea el tema que toque en cuestión, puede que aumente a quincenal la aparición de la entrega, cosa que intentaré ir avisando al igual que avisaré si una semana o una quincena no vaya a salir una entrega, por ejemplo porque me vaya de viaje, cosa que lamentablemente (para mí) no hago mucho, sobre todo por aquellos que siguen puntualmente las entregas.

En lo referente a si seguiremos machacando la línea de comandos, la respuesta es que sí y por una razón muy sencilla que cae por su propio peso: dada la gran cantidad de distribuciones que hay y que no hay una clara “gran mayoritaria”, y que cada una implementa sus herramientas, como por ejemplo la de la próxima entrega “gestión de usuarios”, donde Red-hat tiene una herramienta, Suse otra, Mandrake la suya... , es imposible ver cada una de ellas y lo que siempre vas a tener garantías en toda distribución es que bajo consola en todas se hace igual (excepciones las hay, como en todo), y lo que aprendas en una te servirá para cualquiera, y es más, los conceptos que aprendas te servirán para cualquier herramienta gráfica que encuentres para hacer lo mismo (Esto sigue siendo cierto).

¿Quiere decir eso que no veremos entornos gráficos? En absoluto, a partir de ahora es cuando empezarán las entregas en las que veremos herramientas para ambos entornos, tanto en línea de comandos como bajo entornos gráficos, aunque tenedlo claro: primero será bajo la consola y luego en entorno gráfico en la mayoría de los casos.

Más o menos tengo una idea de por dónde voy a seguir las entregas, pero ahora es cuando más agradecería que hicierais peticiones para saber qué os interesa más. Pero comprended que no por hacer una petición vaya a salir una entrega inmediata o próximamente sobre ese tema por dos motivos: hay que intentar ir aumentando la dificultad y los conocimientos gradualmente, con esto quiero decir que si por ejemplo a día de hoy me pedís una entrega sobre la compilación del kernel pues vais a tener que esperar, porque hay que ver antes cosas mucho más básicas. Y la segunda razón es que yo no lo sé todo, evidentemente, y me considero muy lejos de ser un gurú de GNU/Linux y por extensión de Unix, y hay temas que puede que no domine o que tenga que consultar antes.

También intentaré ya por fin hacer las revisiones de las primeras entregas y publicarlas en breve (Esto es lo que se esta haciendo a día de hoy).
En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #16 : Septiembre 30, 2007, 03:02:28 »

Entrega 16. Gestión de usuarios.

    $ nice man woman

    No manual entry for woman

Introducción.

Aunque tú seas el único usuario dentro de tu sistema, se debe tener una cuenta de root. Sin embargo, no es nada aconsejable usar siempre root como si fuéramos un usuario de Windows, es aconsejable tener también una cuenta de usuario normal. Si optas por usar siempre root por comodidad o porque no quieres adaptarte a un uso más seguro del sistema… tú mismo, pero te arriesgas a cargarte el sistema fácilmente, ya que puedes hacer “todo” y muchas veces el sistema ni te pedirá una confirmación, y ante un ataque darás al atacante más facilidad ya que, si consigue que se ejecute código en tu máquina, ese código tiene vía libre a lo que quiera hacer.

Lo mejor es usar root simplemente cuando te es imprescindible (como cambiar una configuración) y luego vuelve a tu usuario normal, esto ya lo vimos con el comando 'su'. Incluso si te logueas como root en entorno gráfico, cuando termines sal y loguéate como uno normal.

Conceptos de gestión de usuarios.

El sistema guarda unos datos relativos acerca de cada usuario, y dicha información se encuentra en el fichero /etc/passwd. Cada línea contiene información acerca de un usuario en el siguiente formato:

nombre:clave_encriptada:UID:GID:GECOS:directorio_inicial:intérprete

El primer campo “nombre” es el nombre del usuario, seguidamente está la clave encriptada aunque lo que todos encontraréis seguramente es una 'x', y dentro de poco veremos por qué. Los ':' son simplemente un separador entre los campos.

Después nos encontramos con el UID y GID, el primero es el identificador de usuario para el sistema y el segundo el identificador de grupo primario al que el usuario pertenece, puesto que un usuario puede pertenecer a muchos grupos.

GECOS es un campo opcional para guardar información. Normalmente contiene el nombre completo del usuario. GECOS significa General Electric Comprehensive Operating System. En este campo podemos poner lo que queramos ya que el sistema no lo usa para ninguna gestión. Se puede omitir sin poner entre los ':' nada, quedando '::'.

El directorio inicial es donde empezará el usuario una vez logueado, y el intérprete indica cuál interprete de comandos usará (bash, sh, tcsh...). Si en el campo intérprete encontramos '/sbin/nologin' es un usuario que no puede loguearse, esto tiene sentido ya que el propio sistema tiene usuarios con privilegios para dar servicios al sistema como pueden ser 'bin', 'daemon', 'adm'...

El usuario root siempre tiene como UID y como GID un '0', y cualquier usuario que lo tenga tendrá los mismos privilegios que él. Hay que recordar que un usuario sólo puede tener un UID, pero varios usuarios pueden tener el mismo UID, cosa totalmente desaconsejable porque puede provocar agujeros de seguridad importantes. Si ves un usuario con UID=0 que no sea root, lo más seguro es que hayas sido atacado por algún, ¿hacker?, bastante cutre.

Normalmente el sistema guarda los UID bajos (por ejemplo por debajo de 500 o por debajo de 1000) para los usuarios del propio sistema, los que necesita para los servicios que ofrece (por ejemplo, si tienes un servidor de ftp lo normal es tener un usuario en el sistema que se llame 'ftp'), y los UID altos se utilizan para los usuarios normales.

Si donde debiera aparecer la clave aparece '::', esto indica que no hay clave y por supuesto no es nada bueno. Si aparece una 'x' es que las claves o la clave de ese usuario están gestionadas en el archivo /etc/shadow ya que la mayoría de los sistemas usan “claves en sombra”. Esto es debido a que /etc/passwd debe ser visible a todos, porque si no ciertos comandos como puede ser 'ls' dejarían de funcionar, y aunque la clave está encriptada no es bueno que se encuentre a la vista por la existencia de programas de fuerza bruta que se dedican a desencriptarlas (el famoso jhon deriper por ejemplo), y cualquier usuario con acceso a nuestro sistema tendría las claves usando dichos programas. En vez de esto se usa el fichero /etc/shadow, que sólo es visible por root.

Como no es aconsejable para nada tocar estos ficheros manualmente, no continuaremos con la descripción del fichero shadow (quien quiera verlo que use 'man 5 shadow'), en lugar de tocar los ficheros usaremos los comandos que nos permiten manejar todo esto.

Añadir usuarios.

useradd [-c comentario] [-d home] [-e fecha] [-f dias] [-g grupo] [-G lista de grupos] [-m [-k template] | -M] [-n] [-o] [-p passwd] [-r][-s shell] [-u uid] usuario

No os dejéis asustar por el tamaño de este comando, podéis usar 'useradd' o 'adduser' para añadir usuarios al sistema, puesto que es el mismo comando. Primero pasaremos a comentar cada una de las opciones.

[-c comentario] Pondremos el comentario que queremos en el campo GECOS.
[-d home] Directorio home (el de inicio) de la cuenta.
[-e fecha] fecha en formato año-mes-día en que la cuenta caduca y se bloquea.
[-f dias] Número de días en los que la cuenta se bloqueará si no se usa.
[-g grupo] Nombre del grupo primario. Ojo el grupo debe ya existir.
[-G lista de grupos] Listado de grupos al que el usuario pertenecerá.
[-m [-k template] | -M] -m Crea el directorio home de la cuenta si es que no existe ya. Con -k usa el directorio template para crear el directorio home o sea que copia lo de template al home, en caso contrario se copia / etc/skell. Si en vez de -m ponemos -M el directorio no es creado.
[-n] Añade un grupo con el mismo nombre que el usuario.
[-o] Permite crear usuarios con uid duplicada.
[-p passwd] Añade el password al usuario.
[-r] Se usa para crear un usuario del sistema.
[-s shell] Indica que shell
[-u uid] Indicamos que uid queremos.

¿Por qué no asustarse con tanto comando? Pues bien, si no indicamos nada el 'home' del usuario se crea por defecto con el '/etc/skell', será un usuario indefinido y no se bloqueará por no usarse, tendrá la shell por defecto (normalmente bash), se le asigna un uid automaticamente y crea un grupo con el mismo nombre y se lo pone como principal. Por lo que ejecutar 'useradd -m -n -u el_siguiente_uid_no_ocupado -s /bin/bash nuevo_usuario' es lo mismo que 'user_add nuevo_usuario' así que a menos que queramos cambiar el funcionamiento por defecto, no tenemos porqué complicarnos.

[root@fortaleza root]# useradd petardo

[root@fortaleza root]# useradd petardo -p petardeitor

useradd: user petardo exists

[root@fortaleza root]#

Como podemos ver en el ejemplo, no se puede usar useradd para luego añadirle algo que nos falte al usuario que creamos. Nota: Este comando, al igual que el resto, sólo los puede ejecutar 'root' ,y si usáis el entorno gráfico al utilizar 'su' hacerlo con la opción '-l', porque si no entonces no encontrará el comando, esto es así por que 'su' no cambia el path del usuario por el del root, y hay que indicar la opción '-l' para que así sea (realmente lo que hace es que carga todo el entorno del root, pero de momento no os preocupéis si no lo entendéis).

Como veis es mucho más cómodo usar el comando que añadirlo todo a mano usando los ficheros de configuración. Os preguntaréis qué es '/etc/skell', este directorio es como un directorio 'modelo', el cual se copiará al home de los nuevos usuarios creados, y es aquí donde podéis poner todo lo que queráis que tengan todos los usuarios nuevos de vuestro sistema.

Modificando al usuario.

Como visteis antes no se pueden cambiar las características de un usuario con useradd (o adduser), hay que hacerlo con el siguiente comando:

usermod [-c comentario] [-d home] [-e fecha] [-f dias] [-g grupo] [-G lista de grupos] [-m] [-n] [-p passwd] [-s shell] [-u uid [-o] ] usuario [-L | -U] usuario

El significado de los parámetros es el mismo que en el anterior comando, así que no necesitan explicación, salvo dos nuevos:

-L Bloquea la cuenta de usuario.

-U La desbloquea.

Así que vamos a añadirle un password a nuestro usuario petardo y bloquearlo y desbloquearlo:

[root@fortaleza root]# usermod -p petardeitor petardo

[root@fortaleza root]# usermod -L petardo

[root@fortaleza root]# exit

[matados2k@fortaleza curso]$ su petardo

Password:

su: contraseña incorrecta

[matados2k@fortaleza curso]$

Como veis no nos deja loguearnos como petardo, puesto que lo tenemos bloqueado.

¿Yo puedo cambiarme mi contraseña?

Imagínate que no estás en un ordenador tuyo, sino que estás en un sistema en el que tienes una cuenta de usuario, sería una molestia no poder cambiar tu propia contraseña y tener que pedírselo al administrador (aparte de no gustarte que el administrador sepa tu clave). Pues para esto el siguiente comando:

passwd [opciones] [usuario]

No veremos ninguna opción y como podréis probar el único que puede cambiar una contraseña que no sea suya es 'root'.

[matados2k@fortaleza curso]$ su -l

Password:

[root@fortaleza root]# usermod -U petardo

[root@fortaleza root]# exit

[matados2k@fortaleza curso]$ su petardo

Password:

[petardo@fortaleza curso]$ passwd

Changing password for user petardo.

(current) UNIX password:

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

[petardo@fortaleza curso]$

Como veis nos pide el viejo password y 2 veces el nuevo (para no equivocarnos). Puede que no nos deje poner una clave algo sencilla, si quieres hacerlo usa 'passwd' con la opción '-o'.
En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #17 : Septiembre 30, 2007, 03:03:12 »

Entrega 17. Gestión de usuarios (y II).

    $> cd /pub

    $> more beer

Eliminando al petardo, digo… eliminando usuarios.

Como creamos en la anterior entrega un usuario que era petardo, pues ya es hora que lo eliminemos, y para eso existe el siguiente comando:

userdel [-r] usuario

Simplemente elimina al usuario que le indiquemos (mirad qué sencillo esta vez, ya se sabe que destruir es más fácil que crear), y como única opción tenemos '-r', que elimina su directorio home con todos sus ficheros.

Así que ya podemos eliminar todos los petardos de nuestro sistema:

[matados2k@fortaleza curso]$ su -l

Password:

[root@fortaleza root]# userdel -r petardo

[root@fortaleza root]# ls /home/petardo

ls: /home/petardo: No existe el fichero o el directorio

[root@fortaleza root]# exit

[matados2k@fortaleza curso]$

Y con los petardos eliminados sin rastro alguno vamos a pasar a los grupos.

Ahora toca a los grupos.

Como ya vimos en la entrega pasada y en otra anterior (de cabeza no puedo acordarme de todas Tongue ), cada usuario pertenece a uno o más grupos (aunque sólo uno es el principal), y por eso cada fichero tiene un usuario y un “grupo propietario” (el principal del usuario), por decirlo así.

Al igual que hay usuarios del sistema, también existen grupos del sistema tales como grupo root, grupo bin… y por lo general, salvo raras excepciones, los usuarios nunca deben pertenecer a ninguno de esos grupos.

La información de los grupos se guarda en '/etc/group', y al igual que los usuarios también pueden tener y es normal tener las claves bajo shadow, concretamente el fichero de shadow para los grupos es '/etc/gshadow', e igual que en los usuarios solo es accesible por el root. Del mismo modo que con los usuarios solo explicaré el contenido del primero.

El formato de '/etc/group' es el siguiente:

nombre_grupo:clave:GID:lista de usuarios miembros

El primer y el segundo campo no necesitan explicación ya que es igual que en lo de usuarios (acordaos que si hay una x es que la clave está bajo shadow). GID es el identificador de grupo y suele coincidir que el UID del usuario con el mismo nombre, pero no tiene porqué ser así. Y por último tenemos la lista de todos los usuarios que pertenecen a ese grupo.

No es normal que los grupos de usuarios tengan clave, si conocéis cómo es '/etc/gshadow' veréis que el campo de la clave esta vacío (de hecho, aun sin saberlo como root, miradlo y veréis que casi todos los campos están en blanco menos el primero y el último), no se suelen usar nunca las claves en los grupos (la verdad es que sería muy agobiante que te pidiera la clave de grupo también).

Añadiendo grupos.

groupadd [-g gid [-o]] [-r] [-f] group

Como veis esto ya se simplifica con respecto a lo usuarios. Así que pasemos a ver qué es cada opción:

-g indica explícitamente el GID del grupo.

-o no obliga a que el identificador de grupo sea único, cosa totalmente desaconsejable.

-r para crear un grupo del sistema.

-f hace que groupadd no de error si el grupo ya existe.

Así que vamos a crear un grupo llamado, por ejemplo, botijo:

[matados2k@fortaleza curso]$ su -l

Password:

[root@fortaleza root]# groupadd botijo

[root@fortaleza root]# groupadd -f botijo

[root@fortaleza root]# groupadd botijo

groupadd: group botijo exists

[root@fortaleza root]# exit

[matados2k@fortaleza curso]$

Cambiando las características de los grupos.

Hoy estamos caprichosos y queremos modernizarnos, queremos cambiar el grupo botijo por cantimplora que es más portátil XD (No señores, no he fumado cositas de esas raras que se le echan al tabaco). Para eso necesitamos el siguiente comando:

groupmod [-g gid [-o]] [-n group_name ] group

Otra vez vemos que es sencillo y que el significado de las opciones es el mismo, menos '-n' que es para cambiar el nombre, opción que demostraré con el ejemplo:

[matados2k@fortaleza curso]$ su –l

Password:

[root@fortaleza root]# groupmod -n cantimplora botijo

[root@fortaleza root]# groupadd botijo

[root@fortaleza root]# exit

[matados2k@fortaleza curso]$

Como podéis observar podemos volver a crear el grupo botijo, ya que al renombrarlo deja de existir para llamarse cantimplora.

Eliminado los grupos.

Para eliminar los nuevos grupos que hemos creado usamos el sencillo comando:

groupdel group

Con este simple comando que no tiene ni opciones eliminaremos los grupos:

[matados2k@fortaleza curso]$ su -l

Password:

[root@fortaleza root]# groupdel botijo

[root@fortaleza root]# groupdel cantimplora

[root@fortaleza root]# exit

[matados2k@fortaleza curso]$

La guinda.

Para terminar la gestión de usuarios veremos dos comandos que nos pueden ser útiles:

users
groups usuario

El primero indica los usuarios que están accediendo al sistema (acordaos del comando 'w'), y el segundo indica todos los grupos a los que pertenece un usuario. Así que nada más que un ejemplo:

[matados2k@fortaleza curso]$ users

matados2k matados2k matados2k

[matados2k@fortaleza curso]$ groups matados2k

matados2k : matados2k

[matados2k@fortaleza curso]$
En línea

scenespain.net
« Respuesta #17 : Septiembre 30, 2007, 03:03:12 »

 En línea
yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #18 : Septiembre 30, 2007, 03:04:39 »

Entrega 18. Instalando programas (I).

    % alias alias alias

    alias: Too dangerous to alias that.

Cómo va eso de instalar.

En Linux, como en otros Unix, los programas no se suelen instalar con siguiente, siguiente, siguiente, OK... como pasa en Windows, aunque sí existen programas que se instalan de esta forma, como nuestro querido amsn (programa para conectarte a la red Microsoft Messenguer, con una interfaz muy parecida al msn de siempre), con su instalador y muchos de los programas comerciales (incluido juegos). Pero por desgracia son minoría.

Básicamente, descartando lo primero, hay dos formas de instalar los programas bajo Linux, con los fuentes y los binarios. Una de las grandezas del software libre es la posibilidad de disponer del código fuente, el cual siempre podrás modificar según tus necesidades o hacer que terceros lo hagan por ti. Aun siendo la forma más difícil de instalar un programa, y seguramente la que más veces huiréis de ella, es sin duda la que puede traernos mayores beneficios.

¿Pero qué beneficios tiene instalar a partir del código fuente? Uno de los beneficios más inmediatos es la posibilidad de compilarlo en otras arquitecturas, sí señores, hay vida más allá de la arquitectura del pc, y lo que más te puede interesar es que puedes optimizar el programa para tu máquina (hay distribuciones que se basan en esto como Gentoo, por si eres un fan de la optimización). Como en Windows, los programas vienen generalmente compilados para funcionar en la mayoría de ordenadores posibles (generalmente, compiladas desde 386 a Pentium II), lo que hace que no aprovechemos muchas de las capacidades y/o ventajas de nuestros procesadores modernos, aunque también es cierto que muchas veces ni se nota mejoría cuando está un programa compilado específicamente para nuestro procesador. Es como todo, depende, ¿de que depende?, pues de muchas cosas ...

Y la otra forma básica son los binarios, que son el resultado de la compilación anterior y su ventaja es que nos facilita la vida ahorrándonos el paso anterior y hacérnoslo todo un poco más cómodo. Los binarios generalmente vienen empaquetados (es difícil no encontrarlos así), y estos paquetes tienen a día de hoy dos formatos, los paquetes rpm y los paquetes deb. Los primeros son originales de Red Hat y han sido adoptados por multitud de distribuciones, como pueden ser Suse o Mandrake/Mandriva, y el LSB (Linux Standard Base) los define como el estándar de paquetes. Y luego están los paquetes deb, que son igual de buenos o mejores que los rpm y son originales de la distribución de Debian, y la suelen utilizar aparte de ésta todas las distribuciones basadas o descendientes de Debian que, todo hay que decirlo, no son pocas.

Pero no todo queda aquí, dadas las diferencias entre distribuciones muchas veces los paquetes compilados para una distribución no sirven para otra, o hay que hacer chapucillas de por medio y esto es lo que suele pasar con los rpm, por lo que es recomendable instalar solamente paquetes compilados específicamente para tu distribución, si bien es verdad que se pueden instalar de unas a otras sin problemas muchísimas veces. Otros paquetes simplemente no van marcados para ninguna distribución en concreto y funcionan en todas. Al final todo se reduce a prueba y error, si no encuentras un paquete compilado para tu distribución, prueba con la del vecino, que alguna funcionará. Este problema no los suelen tener las distribuciones basadas en Debian, que son más parecidas internamente entre ellas.

Pero ahora vamos a rizar el rizo, porque también hay distribuciones que funcionan con ambos sistemas de paquetes como Yoper, y si tu distribución no es de éstas (que es lo más normal) siempre puedes alienar los paquetes del otro formato, esto es, convertir un rpm en un deb y viceversa, esto se hace con un programa que veremos en otra entrega, llamado alien.

¡Oh, no! Dependencias.

Pero por desgracia aquí no queda todo, y esto es lo que menos os va a gustar. En linux se lleva al máximo la reutilización del código (Si algo funciona y funciona bien ¿para qué volver a reinventar la rueda?), lo que hace que unos programas se apoyen en otros o en librerías, con lo cual se nos devuelve un error de dependencia si intentamos instalar/compilar un programa que dependa de otro u otra librería y no tenemos el susodicho en nuestro sistema.

La solución es bien sencilla, ¿no? ¡Instalemos lo que nos falta! Pero si lo que nos falta depende a la vez de otros, y esos otros de otros, pues acabarán con nuestra paciencia y, por desgracia, esto es más común de lo que parece, así que cuanto más grande es un programa su tendencia a tener dependencias aumenta.

Y lo peor aún y que puede ocurrir es, por ejemplo, que actualizamos a una versión más moderna de un programa que utilicemos y resulta que las dependencias que cumplían antes bien ya no valen, porque como todo, todo evoluciona y van saliendo nuevas versiones, y claro... toca volver a instalar dependencias, con lo cual nuestra tendencia a buscar un martillo aún más gordo para pagar nuestra desesperación con el ordenador aumenta progresivamente.

Al fin, un poco de luz al final del túnel.

Pero tranquilo, vuelve a por los CD's de las distribuciones que acabas de tirar por el balcón y ¡tú! Manolito (los Manolitos que se sientan ofendidos por usar su nombre, pueden cambiarlo por otro XD ), deja ese tenedor donde estaba, no hace falta que crees un nuevo CD de música alternativa.

Todo puede hacerse mucho más fácil con los gestores de paquetes (y no me refiero a rpm para rpm y dkpg para deb), que resuelven las dependencias por nosotros y se descargan (o buscan en los CD's, según el caso) lo necesario para que todo funcione (y de esto saben mucho los de Debian), así sin más, sin trucos, aunque aun así, como bien Murphy sabe, todo puede fallar, porque ya lo puse en una entrega: “cuando ves la luz al final del túnel, va y se te cae el techo encima”, pero esto sólo suele pasar cuando instalamos de donde no debemos, como por ejemplo de repositorios de ramas inestables.

¿Y qué son los repositorios? Pues son “sitios” en Internet donde nuestro maravilloso gestor buscará y descargará los paquetes necesarios o simplemente los CD's de nuestra distribución favorita, ya sea bien para instalar software como para actualizarlo, ¡incluso la distribución entera! Y es que esto de que sea software libre aunque cueste adaptarse tiene sus ventajas, vamos a hacer lo mismo con software propietario a ver qué nos dicen }:D .

Y en este arte de los repositorios los que se llevan la palma son los de Debian, que prácticamente todo lo pueden encontrar en sus repositorios, porque está claro que no siempre vamos a encontrar lo que queríamos de esta forma tan cómoda, y tendremos que buscar e instalar a mano, e incluso a veces sólo tendremos los fuentes y tocará compilar.

¿Por dónde empezamos?

Y con esto anterior ya leído, y como deduciréis, lo veremos todo en el orden que lo he ido comentando, así que empezaremos por tener que compilar, después por la gestión de paquetes rpm, luego la de paquetes deb y terminaremos explicando el uso de un gestor de paquetes y ese es apt-get, sí, el original de Debian, por la sencilla razón de que puede usarse independientemente del tipo de paquetes y porque existen ports (vamos, que se han “portado”) para multitud de distribuciones. Hay más dependiendo de la distribución que uséis, como yum para Red hat , yast (de hecho yast es mucho más que eso) para Suse o urpmi para Mandriva, pero no los veremos porque como siempre intentaremos que esto sirva para el mayor número posible de gente.

Y ya puestos... ¿qué necesito para compilar?

Pues fácil, el compilador. ¿Qué compilador? Pues depende de los fuentes, pero podéis estar seguros de que el 90% de los casos será C o C++, y para eso y mucho más tenemos a los maravillosos compiladores de la GNU que cumplen las 3 b's: bueno, bonito y barato. Para C y C++ será el gcc, y viene en absolutamente todas las distribuciones, así que si no lo tenéis ya podéis meter el CD y me juego la cabeza que está en el CD nº1, e instaladlo con la ayuda del instalador de paquetes propio de vuestra distribución (o tendréis que esperaros a que llegue la entrega del apt-get), y aquí no puedo ayudaros porque cada una tiene el suyo (en una Fedora estará en Menú inicio -> sistema -> Añadir/quitar aplicaciones, en una Mandriva dentro de la herramienta de configuración de Mandriva, y así con cada una).

Si no sabéis si lo tenéis o no, teclead en consola lo siguiente:

[matados2k@fortaleza matados2k]$ cc

cc: no hay ficheros de entrada

[matados2k@fortaleza matados2k]$ gcc

gcc: no hay ficheros de entrada

[matados2k@fortaleza matados2k]$

Si sale algo parecido a esto lo tenéis, con que ejecutéis uno de los dos vale. Si en cambio pasa esto:

[matados2k@fortaleza matados2k]$ cc

bash: cc: command not found

[matados2k@fortaleza matados2k]$ gcc

bash: gcc: command not found

[matados2k@fortaleza matados2k]$

Ya sabéis lo que toca Sad .

Aunque no programéis o no tengáis ni idea de C/C++ conviene que lo instaléis, porque C está tan ligado a Linux como una madre a su hijo, de hecho C se hizo para reescribir Unix y Linux no deja de ser una implementación libre de Unix, y ya veréis como tarde o temprano tendréis que usarlo, aunque sea indirectamente.

Otros compiladores que recomendaría que tuvierais son los de perl, python y java que son también muy usados. Y no os olvidéis del intérprete de tcl, que seguro que también tarde o temprano lo necesitaréis (aunque seguro que muchos por defecto lo tenéis). Y tampoco tenéis que preocuparos por no saber lo que son, simplemente quedaos con sus nombres. Solo un apunte más, en el caso de Java usad mejor el de Sun que el de GNU, ya que evitaréis muchos problemas.

Manos a la obra.

Generalmente, los fuentes vienen empaquetados con extensiones .tar, .tar.gz, gz, bz2, tar.bz2 así que pondré una tabla de cómo descomprimir cada uno de ellos, porque aún no toca entrega de compresores/descompresores (aunque ya creo que va a ser lo próximo después de lo de instalar).

tar (.tar) tar -xvf archivo.tar

gzip (.gz) gzip -d archivo.gz

bzip2 (.bz2) bzip2 -d archivo.bz2

(tar.gz) tar -xvzf archivo.tar.gz

(tar.bz2) bzip2 -dc archivo.tar.bz2 | tar -xv

Y para practicar vamos a compilar un juego muy entretenido llamado supertux, lo podéis encontrar en http://super-tux.sourceforge.net/ , en el momento de escribir esta entrega nos bajamos la versión 0.1.2 en su formato de fuentes supertux-0.1.2.tar.bz2 y descomprimimos:

[matados2k@fortaleza curso]$ bzip2 -dc supertux-0.1.2.tar.bz2 | tar -xv

supertux-0.1.2/

supertux-0.1.2/contrib/

.....

supertux-0.1.2/data/Makefile.in

supertux-0.1.2/data/Makefile.am

[matados2k@fortaleza curso]$ supertux-0.1.2

[matados2k@fortaleza supertux-0.1.2]$

No hay un método fijo por el cual hacerlo, ya que eso depende del programador de la aplicación en cuestión, pero sí que hay una forma muy implantada de hacerlo y suele ser la siguiente:

   1. Si no existe un archivo llamado 'configure' lo creamos con el script 'autogen.sh', si es que éste existe. Y aunque exista 'configure' conviene generarlo de nuevo (a mi se me ha dado el caso de que hasta que no he usado el 'autogen.sh' no era capaz de compilarlo).
   2. Ejecutar 'configure', y es en este punto donde nos dirá si nos falta algo parándose con un error, hasta que no se satisfaga 'configure' no se tendrá una compilación fructífera.
   3. Ejecutamos 'make' (comando que es necesario instalar y que suele venir ya instalado, usa el fichero 'makefile' que se genera despues del 'configure').
   4. Ya como root instalamos la aplicación con 'make install'.
   5. La desinstalación generalmente se suele hacer, dentro del mismo directorio donde se compiló y siendo root con 'make uninstall' o 'make clean' (siendo este último casi siempre para limpiar los rastros de una antigua compilación).

Pero como no hay regla fija para esto, siempre hay que leerse los ficheros tipo LEEME o INSTALL, o la documentación de la página web donde se encontraba el programa, donde nos indicarán todos los pasos exactos y que necesitamos.

En nuestro ejemplo necesitaremos tener instaladas las librerías SDL, SDL_mixer y SDL_image (Opcionalmente OpenGL) que encontraréis seguramente en los CD's de vuestra distribución. Yo como las tengo voy manos a la obra:

[matados2k@fortaleza curso]$ cd supertux-0.1.2

[matados2k@fortaleza supertux-0.1.2]$ ./autogen.sh

[matados2k@fortaleza supertux-0.1.2]$ ./configure

checking build system type... i686-pc-linux-gnu

checking host system type... i686-pc-linux-gnu

checking target system type... i686-pc-linux-gnu

......

configure: creating ./config.status

config.status: creating Makefile

config.status: creating src/Makefile

config.status: creating data/Makefile

config.status: executing depfiles commands



Features:

=========

Profile Mode: no

Debug Mode: yes

OpenGL Support: yes



[matados2k@fortaleza supertux-0.1.2]$

Como veis ya tengo los pasos 1 y 2 hechos, y como resultado me crea los 'makefile' necesarios y me indica que se compilará con OpenGL ya que tengo las librerías necesarias.

[matados2k@fortaleza supertux-0.1.2]$ make

Making all in src

make[1]: Cambiando a directorio `/home/matados2k/curso/supertux-0.1.2/src'

....

make[1]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2/src'

Making all in data

make[1]: Cambiando a directorio `/home/matados2k/curso/supertux-0.1.2/data'

make[1]: No se hace nada para `all'.

make[1]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2/data'

make[1]: Cambiando a directorio `/home/matados2k/curso/supertux-0.1.2'

make[1]: No se hace nada para `all-am'.

make[1]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2'

[matados2k@fortaleza supertux-0.1.2]$

Como veis no me da ningún error, y después de ver volar texto sin parar ya tengo mis binarios, que incluso puedo usar sin instalarlo (entrando en '/src' tenemos el ejecutable 'supertux'). Ahora pasamos a instalarlo.

[matados2k@fortaleza supertux-0.1.2]$ su

Password:

[root@fortaleza supertux-0.1.2]#make install

.....

make[2]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2/data'

make[1]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2/data'

make[1]: Cambiando a directorio `/home/matados2k/curso/supertux-0.1.2'

make[2]: Cambiando a directorio `/home/matados2k/curso/supertux-0.1.2'

make[2]: No se hace nada para `install-exec-am'.

make[2]: No se hace nada para `install-data-am'.

make[2]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2'

make[1]: Saliendo directorio `/home/matados2k/curso/supertux-0.1.2'

[root@fortaleza supertux-0.1.2]#

Y ¡tachán! ya tenemos supertux instalado en el ordenador. Simplemente ejecutando 'supertux' lo podremos usar.
En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #19 : Septiembre 30, 2007, 03:05:41 »

Entrega 19. Instalando programas (II).

    % make love

    Make: Don't know how to make love. Stop.

Qué es eso de 'rpm'.

Las siglas significan RedHat Package Manager, y evidentemente lo crearon los de RedHat para su propia distribución, pero aparecieron otras distribuciones basadas en RedHat, como son por ejemplo Suse o Mandrake (actualmente Mandriva).

Como explicamos en la anterior entrega, es un formato binario que no necesita compilación aunque como veremos más adelante existen paquetes 'rpm' de fuentes que necesitan recompilarse (con extensión .src.rpm), que la única ventaja que trae con respecto a los fuentes de la semana pasada es que 'rpm' se encarga de compilar y crear un paquete 'rpm' binario ('rpm' es el gestor de paquetes y el nombre de la extensión del paquete, por si os estáis liando).

Cómo hacerme de paquetes 'rpm'.

Si tu distribución usa este sistema de paquetes, aparte de los que ya te vienen en tus cd's de la distribución, seguramente necesitarás instalar algo que no venga. El primer sitio donde buscar un 'rpm' para tu distribución es en la propia web del programa o la aplicación en cuestión. En el caso de que no lo den en formato 'rpm', o esos 'rpm' no son específicamente compilados para tu distribución y no quieres probar a ver si suena la campana (cuando uno se pone cabezón tiene que serlo hasta el final XD ), siempre se puede buscar por la red de redes. Y ya puestos, y que os suelo dar todo mascadito, ahí van unas buenas direcciones donde buscar:

    * http://rpmseek.com/
    * http://rpm.pbone.net/
    * http://rpmfind.rediris.es/
    * http://rpmfind.net/

Y, sinceramente, si no encontráis lo que queréis en esas páginas no creo que lo encontréis en ninguna.

Cómo se interpreta normalmente el nombre de los paquetes.

Generalmente nos encontraremos paquetes nombrados más o menos como el de este ejemplo:

pepitoGrillo-3.0.0rc8-i586-rh9.rpm

La primera parte es el nombre, en este caso el nombre del supuesto programa es pepitoGrillo. A continuación tenemos la versión, en este caso tenemos que es 3.0.0rc8 (cuando os encontréis la coletilla 'rc', que significa 'release candidate', estáis delante de una versión 'candidata' a ser la definitiva por lo que pueden aparecer problemas, aunque generalmente suelen funcionar muy bien).

Seguidamente tenemos la arquitectura, en este caso i586 que se corresponde a un Pentium (esto no quiere decir que funcione sólo en Pentium, sino que funciona de ahí para arriba ya sea un P4 o un AMD XP). Hay muchas arquitecturas, así que solo haré una tabla con las más comunes que os encontraréis dentro de las arquitecturas de los PC.

i386 - 386

i486 - 486

i586 - Pentium

i686 - Pentium II

athlon – AMD Athlon

Con esto podéis deducir más o menos cómo van, y no es normal encontrar más de i686, siendo lo normal i386 e i586, tened en cuenta que los binarios se hacen para intentar llegar al máximo posible de gente.

Luego tenemos la distribución, en este caso 'rh9' que es RedHat 9. Cada distribución tiene sus siglas, así que pongo una tabla con algunas comunes:

rhX – RedHat X, siendo X el número de versión

fcX – Fedora Core X (RedHat)

mdkX – Mandrake

SuSe_X - Suse

Evidentemente hay muchas más, pero es para que os quedéis con la idea, lo que tenéis que enteraros es de las siglas de la vuestra.

Y por último la extensión, que puede ser o bien '.rpm', que es el formato binario, o bien '.src.rpm' y en ese caso nos encontraríamos ante fuentes.

Comencemos con el uso básico para 'rpm'.

El uso mas básico que le vamos a dar a los 'rpm' son sin duda instalar, desinstalar y actualizar. Para el ejemplo de hoy instalaremos el 'aMule', que es el clon de eMule más actual a día de escribir esta entrega. Para bajarnos lo necesario iremos a http://amule.sourceforge.net y nos iremos a su zona de descarga, en este caso no usaremos la versión estable del programa por estar totalmente desfasada y nos descargaremos (a día de la primera versión de este documento) la 2.0.0rc5 http://forum.amule.org/board.php?boardid=69&sid= , en mi caso me bajo la etiquetada como fc1 puesto que es la que uso, así que cada uno a la suya o la más parecida a la suya.

La orden básica para instalar es:

rpm -i Paquete.rpm

Ummm, parece fácil 'rpm' con la opción '-i', probemos:

[matados2k@fortaleza curso]$ rpm -i aMule-2.0.0-rc5_fc1.i686.rpm

error: Failed dependencies:

wxGTK >= 2.4.2 is needed by aMule-2.0.0-rc5_fc1

wxBase >= 2.4.2 is needed by aMule-2.0.0-rc5_fc1

libcryptopp >= 5.1 is needed by aMule-2.0.0-rc5_fc1

[matados2k@fortaleza curso]$

Oh no!!! Dependencias, que no cunda el pánico, tendremos que buscar por nuestra cuenta los paquetes y para eso ya os he dicho cómo, antiguamente estaban en la propia página de aMule pero a día de hoy no están esos paquetes o yo no los he encontrado. También puede ser posible que hayan cambiado las dependencias en las nuevas versiones.

Una vez encontrado lo que nos falta, vamos a instalarlo todo:

[matados2k@fortaleza curso]$ rpm -i libcryptopp-5.2.1-1.i586-FC.rpm

error: cannot get exclusive lock on /var/lib/rpm/Packages

error: cannot open Packages index using db3 - Operación no permitida (1)

error: cannot open Packages database in /var/lib/rpm

[matados2k@fortaleza curso]$ su

Password:

[root@fortaleza curso]# rpm -i libcryptopp-5.2.1-1.i586-FC.rpm

[root@fortaleza curso]# rpm -i wxBase-2.4.2-1.i586.rpm

[root@fortaleza curso]# rpm -i wxGTK-2.4.2-1.i386.rpm

[root@fortaleza curso]# rpm -i aMule-2.0.0-rc5_fc1.i686.rpm

[root@fortaleza curso]# exit

exit

[matados2k@fortaleza curso]$

Como veis no se puede instalar sin ser root, así que ya sólo queda teclear 'amule' y ver cómo arranca nuestra aplicación.

Pues ahora damos un paso atrás.

Ahora lo que vamos a hacer es aprender a desinstalar, en este caso sólo desistalaremos aMule-2.0.0-rc5_fc1.i686.rpm para poner la 'rc4' y luego actualizar a 'rc5' para que veáis cómo se hace. Para desinstalar usamos:

rpm -e NombrePaquete

Y para actualizar usaremos la orden:

rpm -U Paquete.rpm

Veamos el ejemplo:

[matados2k@fortaleza curso]$ su

Password:

[root@fortaleza curso]# rpm -e aMule

[root@fortaleza curso]# rpm -i aMule-2.0.0rc4a-1.i686-FC.rpm

[root@fortaleza curso]# rpm -U aMule-2.0.0-rc5_fc1.i686.rpm

[root@fortaleza curso]# exit

exit

[matados2k@fortaleza curso]$

Observaréis que sólo es necesario usar el nombre de la aplicación para desinstalarla. Una buena idea es usar a la vez las opciones '-i' y '-U', ya que si el programa existe te lo actualiza y si no te lo instala Smiley .

Pero ¿Qué tengo y qué no tengo instalado?.

Otra opción útil puede ser saber qué tienes o no instalado, para eso usamos:

rpm -qa

Y nos saldrá una lista seguramente enorme:

[matados2k@fortaleza curso]$ rpm -qa

tzdata-2003d-1

elfutils-libelf-0.89-2

....

mozilla-nss-1.4.1-18

samba-3.0.2-7.FC1

wxGTK-2.4.2-1

[matados2k@fortaleza curso]$

Así que, o bien usas este comando con la redirección a un fichero o una pipe y el comando 'more' para leer lo que salga tranquilamente, o vas a lo que buscas:

rpm -q NombrePaquete

Así que miramos nuestro aMule instalado:

[matados2k@fortaleza curso]$ rpm -q aMule

aMule-2.0.0-rc5_fc1

[matados2k@fortaleza curso]$

Como habéis podido ver se necesita root para instalar, desinstalar y actualizar, pero no para lo demás.

Otras opciones.

Otras opciones que os pueden interesar son '-F' para actualizar pero sólo si hay una versión más antigua, '--force' para 'forzar' la instalación cuando sea necesario (como con algunos drivers de ATI Sad ).
En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #20 : Septiembre 30, 2007, 03:07:34 »

Entrega 20. Instalando programas (III).

    % rm Quayle-brains

    rm: Quayle-brains nonexistent

Qué es eso de 'deb'.

Pues es el sistema de paquetes binarios usados por debian y todas las distribuciones que derivan de ella, que como ya comenté, no son pocas. Personalmente, después de usar rpm durante muchos años y ahora usar deb, me quedo con los deb.

¿Dónde hacerse de paquetes .deb?

Pues nada mejor que ir a la fuente de todo:

http://www.es.debian.org/distrib/packages#search_contents

La que podéis ver viene bastante completa, pudiendo buscar por arquitectura, por versiones (estable, de pruebas e inestable), incluso por cómo los tienen clasificados (sección), pero claro, son sólo los paquetes oficiales (que son muchísimos), personalmente no conozco paginas de búsqueda del estilo rmpfind.net para paquetes 'deb'. Y al igual que pasa con los 'rpm', en la propia web del programa suelen dar paquetes 'deb', aunque no siempre es así.

Pero además, los paquetes de debian están clasificados de la siguiente forma:

    Main

        Los paquetes de esta área son libres en sí mismos

    Contrib

        Los dueños del copyright de los paquetes de esta área les han dado licencia libre, pero dependen de otros programas que no son libres.

    Non-Free (no libre)

        Los paquetes de esta área tienen alguna condición de licencia onerosa que restringe su uso o redistribución.

    Non-US/Main

        Los paquetes de esta área son libres en sí mismos pero no pueden ser exportados desde un servidor en los Estados Unidos.

    Non-US/Non-Free

        Los paquetes de esta área tienen alguna condición de licencia onerosa que restringe su uso o redistribución. No pueden ser exportados de los Estados Unidos porque son paquetes de software de cifrado que no están gestionados por el procedimiento de control de exportación que se usa con los paquetes de Main o no pueden ser almacenados en servidores en los Estados Unidos por estar sujetos a problemas de patentes.

Pero ojo, esta clasificación es sólo de los oficiales. Además, las dos últimas no se usan dado que no existen esas restricciones en Estados Unidos actualmente.

Cada distribución tiene su clasificación, como por ejemplo Ubuntu y derivadas donde los nombres son: Main, Restricted, Universe (Mantenidos por la comunidad) y Multiverse (igual que Non-Free).

Los 'deb' también tienen una nomenclatura más o menos estándar, como puede ser la del ejemplo:

aconnectgui_0.9.0rc2-1-7_i386.deb

Y como veis sigue una estructura similar a lo explicado para 'rpm' en la anterior entrega, por lo que me ahorro explicar de nuevo lo mismo Wink.

Y sólo una cosa más antes de entrar al toro, también existen src.deb, que son paquetes que contienen el código fuente, pero al igual que en la anterior entrega tampoco los trataremos.

Aprendiendo el uso básico.

Si para 'rpm' el gestor de paquetes se llama igual, aquí la cosa cambia y el gestor es 'dpkg', del cual veremos lo básico para manejarnos.
Para el ejemplo de hoy vamos a instalar GetLeft que es un gestor de descargas de páginas webs, para ello nos dirigiremos a:
http://personal1.iddeo.es/andresgarci/getleft/english/
Y concretamente a la zona de descarga:
http://personal1.iddeo.es/andresgarci/getleft/english/download.html de las cuales descargaremos para la entrega de hoy la versión 1.1.2 y la 1.1.1 en formato deb (faltaría menos XD ).

La orden básica para instalar es:

dpkg -i Paquete.deb

Así que vamos a probar a instalar:

matados2k@fortaleza:~/curso$ su

Password:

fortaleza:/home/matados2k/curso# ls *.deb

getleft_1.1.1-2_all.deb getleft_1.1.2-2_all.deb

fortaleza:/home/matados2k/curso# dpkg -i getleft_1.1.2-2_all.deb

Seleccionando el paquete getleft previamente no seleccionado.

(Leyendo la base de datos ...

141269 ficheros y directorios instalados actualmente.)

Desempaquetando getleft (de getleft_1.1.2-2_all.deb) ...

Configurando getleft (1.1.2-2) ...

fortaleza:/home/matados2k/curso#

Como veis, de momento es igual a 'rpm' , pero sólo de momento Wink . En este caso no han salido dependencias, en el caso de que salieran tendríais que resolverlas igual que las resolvimos con los 'rpm', pero en este caso sería diferente porque 'dpkg' sí que nos instala el paquete aunque no se cumplan las dependencias, cosa que también nos puede traer nuestros problemas (a la hora de mantener limpio el sistema si somos muy despistados, por ejemplo). De todas formas, y sin que sirva de precedente, si os pasa esto y no queréis liaros a buscar paquetes tendréis que tener fe en mí y creer que cuando ejecutéis 'apt-get -f instal' se solucionará todo, pero esto es algo que enseñaré en la próxima entrega.

Para ejecutarlo solamente teclead 'Getleft.tcl'. Si no os ejecuta seguro que es porque os falta el paquete 'curl', ya sabéis dónde buscarlo Wink .

Ahora nos arrepentimos y nos va a dar por desinstalarlo para poner la versión mas antigua, para ello vemos las formas que hay para desinstalar:

dpkg -r Nombre_Paquete
dkpg -P Nombre_Paquete

Vaya, esto se complica, ¿para qué dos formas de desinstalar?. Los paquetes 'deb' incluyen una configuración por paquete que optimiza cómo vamos a instalar el software que contiene, por decirlo de algún modo, y esto lo notaréis cuando instaléis mucho y el sistema os haga preguntas al instalar sobre cómo configurar el paquete.

Así que veamos las diferencias, con '-r' lo que hacemos es desinstalar el paquete pero sin desinstalar la configuración, y así si alguna vez reinstalamos no nos preguntara nada y usará la configuración existente. Esto se nos puede volver en nuestra contra en casos como, por ejemplo, que nos hayamos confundido en la configuración (en el caso de que nos la pida, que no es nuestro caso) y no funciona, si eliminamos y volvemos a instalar seguirá fallando.

Para eliminarlo todo optamos por '-P' que también elimina la configuración, así que manos a la obra:

fortaleza:/home/matados2k/curso# dpkg -P getleft

(Leyendo la base de datos ...

141491 ficheros y directorios instalados actualmente.)

Desinstalando getleft ...

Purgando ficheros de configuración de getleft ...

dpkg - atención: al desinstalar getleft, el directorio /usr/local/share'

no está vacío, no se borra.

dpkg - atención: al desinstalar getleft, el directorio /usr/local/lib'

no está vacío, no se borra.

dpkg - atención: al desinstalar getleft, el directorio /usr/local/doc'

no está vacío, no se borra.

dpkg - atención: al desinstalar getleft, el directorio /usr/local/bin'

no está vacío, no se borra.

dpkg - atención: al desinstalar getleft, el directorio /usr/local'

no está vacío, no se borra.

fortaleza:/home/matados2k/curso# dpkg -r getleft

dpkg - atención: el paquete getleft no está instalado.

no se tendrá en cuenta la petición de desinstalarlo

fortaleza:/home/matados2k/curso#

Ya hemos desinstalado, y como podéis observar pasa como con los 'rpm', que sólo necesitamos indicarle el nombre del paquete sin más. Así que pasamos a instalar la versión más antigua:

fortaleza:/home/matados2k/curso# dpkg -i getleft_1.1.1-2_all.deb

Seleccionando el paquete getleft previamente no seleccionado.

(Leyendo la base de datos ...

141355 ficheros y directorios instalados actualmente.)

Desempaquetando getleft (de getleft_1.1.1-2_all.deb) ...

Configurando getleft (1.1.1-2) ...

fortaleza:/home/matados2k/curso#

Y esto lo hicimos solamente para actualizar la versión, que en este caso es simplemente con '-i' y como existe una versión antigua la actualizará.

fortaleza:/home/matados2k/curso# dpkg -i getleft_1.1.2-2_all.deb

(Leyendo la base de datos ...

141475 ficheros y directorios instalados actualmente.)

Preparando para reemplazar getleft 1.1.1-2 (usando getleft_1.1.2-2_all.deb) ...

Desempaquetando el reemplazo de getleft ...

Configurando getleft (1.1.2-2) ...

fortaleza:/home/matados2k/curso#

Fácil y cómodo, ¿verdad?, pero ahora nos queda aprender cómo saber si tenemos o no un paquete instalado:

dpkg -l [Nombre_paquete]

Si ponemos solo 'dpkg -l' nos listará todo lo instalado, cosa que puede no interesarnos, así que buscaremos lo que acabamos de instalar:

matados2k@fortaleza:~/curso$ dpkg -l getleft

Desired=Unknown/Install/Remove/Purge/Hold

| Estado=No/Instalado/Config-files/Unpacked/Failed-config/Half-installed

|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: mayúsc.=malo)

||/ Nombre Versión Descripción

+++-==============-==============-============

ii getleft 1.1.2-2 Tcl/Tk WWW site grabber powered by curl

matados2k@fortaleza:~/curso$

Como veis nos da mucha información y nos las explica. ¿Alguien no la ve? (fijaos bien y convertid esos '|' en flechas mentalmente).

Y para terminar, ya que este es el uso más básico de 'dpkg', os dejo con una tabla de opciones, sacada directamente de 'man dpkg', que os puede resultar útil:

dpkg -b | --build directorio [fichero]
Construye un paquete Debian GNU/Linux.

dpkg -c | --contents fichero
Muestra el contenidos de un paquete Debian GNU/Linux.

dpkg -e | --control fichero [directorio]
Extrae la información de control de un paquete.

dpkg -x | --extract fichero directorio
Extrae los ficheros contenidos en el paquete.

dpkg -f | --field fichero [campo-control] ...
Muestra el/los campo(s) de control de un paquete.

dpkg --fsys-tarfile fichero
Muestra el fichero tar contenido en el paquete Debian.

dpkg -I | --info fichero [fichero-control]
Muestra información sobre el paquete.

dpkg -X | --vextract fichero directorio
Extrae y muestra los nombres de ficheros contenidos en un paquete.

dpkg -l | --list patrón-nombre-paquete ...
Lista los paquetes cuyo nombre encaja en el patrón dado.

dpkg -s | --status nombre-paquete ...
Informa del estado del paquete especificado.

dpkg -L | --listfiles paquete ...
Lista los ficheros instalados en el sistema, que pertenecen apaquete.

dpkg -S | --search patrón-búsqueda-ficheros ...
Busca un fichero en los paquetes instalados.

dpkg -p | --print-avail paquete ...
Imprime información sobre el paquete, sacada de /var/lib/dpkg_

/available.
En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #21 : Septiembre 30, 2007, 03:08:46 »

Entrega 21. Instalando programas (IV).

    In a world without barriers, who needs Gates and Windows?

Qué es eso de 'apt'.

Apt es un sistema de gestión de paquetes de software (utilizar este tipo de herramientas es la forma más indolora de instalar paquetes). Es originaria de Debian y está portada a distintas distribuciones no descendientes de ésta, como Red hat, Fedora, Mandrake/Mandriva, Suse y multitud de ellas. Así que éste será el único que veamos, ni urpmi ni yast ...

La propia página del 'man' indica que no hay aún interfaces amigables para este sistema ya que está aún en desarrollo, pero esto no es del todo cierto como veremos en la próxima entrega. Seguiremos vía línea de comandos para instalar.

La gran ventaja de apt, al igual que aplicaciones similares, es que tú le dices qué instalar y él solo te lo instala, además te resuelve e instala todas las dependencias, así que adiós a las instalaciones difíciles y bienvenido a instalaciones más sencillas, ordenadas y limpias que el siguiente, siguiente, siguiente de Windows. ¿No es una maravilla?

En cualquier caso, apt es un interfaz sencillo de 'dpkg' (o 'rpm' según el caso).

¿De dónde obtengo lo necesario para el conjunto de herramientas de apt?

Los que usen Debian o derivadas de ella como Knoppix, Linex, Guadalinex, Ubuntu y un puñado grande de ellas más, no tendrán problemas porque ya les viene de serie. Para los que no, ya pueden hacer búsquedas en www.google.es con las palabras apt-get y la distribución que quieres, aunque es posible que no lo encuentren para la suya.

¿Cómo, que no sabes cómo buscar? Me parece que si es así este curso no lo estás aprovechando bien.

Bueno, ya está instalado, pero no corras. Necesitamos saber algo más.

Bien, en este punto ya deberías tener instalado apt, pero aún nos quedan cosas antes de empezar. Apt en sí no es un comando, sino un conjunto de herramientas de las cuales veremos básicamente apt-get y apt-cache, que son las que normalmente cubrirán todas nuestras necesidades.

Apt, para manejar los paquetes, le da igual que sean deb o rpm, de ahí que esté portado a tantísimas distribuciones. Lo que apt necesita es que le indiques dónde tiene los repositorios de paquetes, los repositorios son los “lugares”, por así decirlo, donde se encuentran los paquetes de los cuales queremos disponer, y puede ser cualquier fuente: cdrom, un ftp o vía http.

Nosotros de momento vamos a optar por instalar y actualizar con apt vía ftp o http, porque conseguiremos el software más actual ya que los repositorios suelen actualizarse frecuentemente. Para configurar esto debemos editar (como root) /etc/apt/sources.list y tendrá un aspecto como este:

#deb file:///cdrom/ sarge main



#deb cdrom:[Debian GNU/Linux testing _Sarge_ - Official Snapshot i386 Binary-3 (20040919)]/ unstable contrib main

#deb cdrom:[Debian GNU/Linux testing _Sarge_ - Official Snapshot i386 Binary-2 (20040919)]/ unstable contrib main

#deb cdrom:[Debian GNU/Linux testing _Sarge_ - Official Snapshot i386 Binary-1 (20040919)]/ unstable contrib main

#testing ETCH

deb http://ftp://ftp.fr.debian.org/debian/ testing main non-free contrib

#deb-src http://ftp://ftp.fr.debian.org/debian/ testing main non-free contrib



#inestable SID

#deb http://ftp://ftp.fr.debian.org/debian/ unstable main non-free contrib

#deb-src http://ftp://ftp.fr.debian.org/debian/ unstable main non-free contrib

Este es un sources.list ya configurado para una Debian Etch, y puede que el vuestro esté ya configurado o no, pero nos servirá para explicar qué significa cada cosa.

1º) Todo lo que se encuentre después de # se considera un comentario y será ignorado, como podéis ver yo tengo comentadas muchas líneas.

2º) El formato de las líneas es el siguiente:

    tipo_de_paquete fuente distribución [componente1] [componente2] [...]

En “tipo de paquete” va o bien 'deb', 'deb-src' o bien 'rpm', 'rpm-src' dependiendo del tipo de paquetes que usemos. En “fuente” indicamos dónde está el repositorio, que suele ser o bien algo como:

cdrom:[Debian GNU/Linux testing _Sarge_ - Official Snapshot i386 Binary-3 (20040919)]/ lo que nos indica que es un cd y en este caso concreto el de instalación.

O bien es una dirección http o ftp, como podéis ver en el ejemplo. Lo siguiente es la distribución, en mi caso al usar Debian aparecen unstable y testing, que son 2 de las 3 ramas que tiene Debian (stable, testing y unstable con los nombres de Sarge, Etch y Sid respectivamente). Y por último, los componentes que pueden existir o no, en mi caso se corresponden con la forma de organizar los paquetes de Debian. En cada distribución estas cosas cambian, depende de cómo se estructuren internamente.

Pero tranquilos, que aunque como veis es fácil, no tendréis que crear las líneas vosotros mismos (pero os lo explico porque es bueno que sepáis qué significan), ni nada parecido a investigar cómo es internamente vuestra distribución. Nosotros sólo nos limitaremos a buscar por internet cuáles son las líneas que tenemos que añadir. ¿A que es fácil?Así que sólo os queda buscar esas líneas, preferiblemente cogiendo siempre de las fuentes oficiales. Tranquilos, es muy fácil y la red está llena de ellas Wink y dependiendo de qué programas o aplicaciones necesitéis, necesitaréis más o menos repositorios.

Sin duda alguna, en esto de repositorios y número de paquetes gana por goleada Debian, que es una de las grandes virtudes de esta distribución, aunque no sea precisamente la más fácil de instalar y poner en marcha. Sabiendo buscar bien repositorios es posible que nunca necesitéis compilar nada para esta distribución. Mi experiencia con otras distribuciones como Fedora es que sus repositorios y paquetes disponibles en ellos son realmente pobres.

Ya lo tengo todo, que empiece la fiesta.

Ya hemos llegado a lo interesante, y no me digáis que os ha sido difícil llegar hasta aquí porque no me lo creo. Para empezar con nuestro sources.list ya configurado, lo que tenemos que hacer es sincronizar el índice de paquetes respecto a las fuentes (los repositorios apuntados por nuestro sources.list):

apt-get update

Nada más fácil que ejecutar esto cada vez que cambiemos las fuentes del sources.list. Como los repositorios suelen actualizarse muy a menudo, sobre todo los de Debian, es conveniente que ejecutéis esto con frecuencia para no encontrar problemas a la hora de instalar. Veamos un ejemplo:

matados2k@fortaleza:~$ suPassword:

fortaleza:/home/matados2k# apt-get update

Obj http://non-us.debian.org testing/non-US/main Packages

Des:1 http://debian.tu-bs.de unstable/main Packages [17,6kB]

Obj http://non-us.debian.org testing/non-US/main Release

Obj http://non-us.debian.org testing/non-US/contrib Packages

Obj http://non-us.debian.org testing/non-US/contrib Release

Obj http://non-us.debian.org testing/non-US/non-free Packages

Obj http://non-us.debian.org testing/non-US/non-free Release

Des:2 http://debian.tu-bs.de unstable/main Release [112B]

Des:3 http://ftp://ftp.fr.debian.org testing/main Packages [3151kB]

Des:4 http://ftp://ftp.fr.debian.org testing/main Release [81B]

Des:5 http://ftp://ftp.fr.debian.org testing/non-free Packages [58,6kB]

Des:6 http://ftp://ftp.fr.debian.org testing/non-free Release [85B]

Des:7 http://ftp://ftp.fr.debian.org testing/contrib Packages [55,8kB]

Des:8 http://ftp://ftp.fr.debian.org testing/contrib Release [84B]

Descargados 3284kB en 3m32s (15,5kB/s)

Leyendo lista de paquetes... Hecho

fortaleza:/home/matados2k#

Veis qué fácil, no tenéis que hacer nada por vuestra parte, sólo esperar.

Siempre que hagáis un 'apt-get update' es bueno hacer:

apt-get check

que no es más que una herramienta de diagnóstico. Actualiza la caché de paquetes , vuelve a crear un nuevo árbol de dependencias y busca dependencias imposibles de resolver, aunque si no entendéis nada de esto no importa, simplemente sabed que es bueno realizarlo, sobre todo para saber si todo ha salido bien:

fortaleza:/home/matados2k# apt-get check

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

fortaleza:/home/matados2k#

Instalar y actualizar, 2 en 1.

Apt, si está un paquete ya instalado, lo actualiza a la última versión, y en caso contrario lo instala. Lo mismo con todas sus dependencias, que se resuelven automáticamente. Qué más podemos pedir cuando es especial para cómodos Smiley :

apt-get install lista_de_paquetes

Para ver un ejemplo de esto vamos a instalar hoy un pequeño editor de texto compatible en gran medida con los '.doc' de Windows, Abiword (aunque si queréis un buen paquete ofimático ya sabéis, OpenOffice.org):

fortaleza:/home/matados2k# apt-get install abiword

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

Se instalarán los siguientes paquetes extras:

gnome-core gnome-desktop-environment

Paquetes sugeridos:

gnome-audio

Paquetes recomendados

dasher gnome-mag gnopernicus gok gnome-accessibility-themes

Los siguientes paquetes se ELIMINARÁN:

abiword-gnome gnome gnome-office

Se instalarán los siguientes paquetes NUEVOS:

abiword

Se actualizarán los siguientes paquetes:

gnome-core gnome-desktop-environment

2 actualizados, 1 se instalarán, 3 para eliminar y 22 no actualizados.

Necesito descargar 1905kB de archivos.

Se liberarán 213kB después de desempaquetar.

¿Desea continuar? [S/n] s

Des:1 http://ftp://ftp.fr.debian.org testing/main abiword 2.0.14-1 [1885kB]

Des:2 http://ftp://ftp.fr.debian.org testing/main gnome-desktop-environment 61 [9960B]

Des:3 http://ftp://ftp.fr.debian.org testing/main gnome-core 61 [9782B]

Descargados 1905kB en 1m28s (21,4kB/s)

(Leyendo la base de datos ...

...

...

Desempaquetando el reemplazo de gnome-core ...

Configurando abiword (2.0.14-1) ...

Configurando gnome-core (61) ...

Configurando gnome-desktop-environment (61) ...

fortaleza:/home/matados2k#

Podéis comprobar que 'apt-get' con su opción 'install' se ha ocupado de todo, incluso de eliminarme paquetes que ya no serán necesarios, cosa que no comenté antes. Como veis es lo mejor para mantener limpio el sistema.

Desinstalar tiene también 2 formas.

Desinstalar tiene 2 formas, aunque sólo para los que usan paquetes 'deb', y para eso no hay más que acordarse de la entrega pasada de que los paquetes 'deb' llevan también archivos de configuración de paquetes.

apt-get remove lista_de_paquetes
apt-get --purge remove lista_de_paquetes

El primero es el que elimina el paquete que le indicas, y el segundo el que además elimina los ficheros de configuración de paquete que nos serán necesarios cuando instalemos de forma errónea y desinstalemos e instalemos de nuevo. Para ello, como siempre, un ejemplo:

fortaleza:/home/matados2k# apt-get remove abiwordLeyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

Los siguientes paquetes se ELIMINARÁN:

abiword abiword-common

0 actualizados, 0 se instalarán, 2 para eliminar y 22 no actualizados.

Necesito descargar 0B de archivos.

Se liberarán 11,0MB después de desempaquetar.

¿Desea continuar? [S/n] s

(Leyendo la base de datos ...

146960 ficheros y directorios instalados actualmente.)Desinstalando abiword-common ...

Desinstalando abiword ...

fortaleza:/home/matados2k# apt-get --purge remove abiword

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

El paquete abiword no esta instalado, no se eliminará

0 actualizados, 0 se instalarán, 0 para eliminar y 22 no actualizados.

fortaleza:/home/matados2k# apt-get install abiword

.....

fortaleza:/home/matados2k# apt-get --purge remove abiword

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

Los siguientes paquetes se ELIMINARÁN:

abiword* abiword-common*

0 actualizados, 0 se instalarán, 2 para eliminar y 22 no actualizados.

Necesito descargar 0B de archivos.

Se liberarán 11,0MB después de desempaquetar.

¿Desea continuar? [S/n] s

(Leyendo la base de datos ...

146960 ficheros y directorios instalados actualmente.)

Desinstalando abiword-common ...

Desinstalando abiword ...

fortaleza:/home/matados2k#

Como veis 'apt-get remove' también elimina todo lo que ya no necesitemos, incluidas las dependencias, que ya no son usadas por ningún otro paquete.

¡Oh no! Tenemos un problema.

Muchas veces si no hacemos 'apt-get update' de forma habitual nos podemos encontrar con el problema de que no pueden instalarse los paquetes porque ya no se encuentran, o bien has instalado algo que no venía en los repositorios y trastes de 'dkpg' y ocurrieron dependencias, en cualquier caso siempre que se encuentren dependencias rotas. Como podréis suponer si seguís el curso este problema es más probable que se dé con los que usan 'deb' que con los que usan 'rmp', ya que 'dpkg' instala aunque encuentre dependencias y a 'rpm' en cambio hay que decirle que fuerce la instalación ya que si encuentra dependencias por defecto no instalaría.

Pero gracias a Dios este es un problema de lo más sencillo de solucionar. En el caso de que sea por no sincronizar con 'apt-get update', realizamos este paso. En cualquier otro caso, realizar:

apt-get -f install

Lo que hace es intentar arreglar un sistema con dependencias actualmente rotas, y generalmente con un buen fichero 'sources.list' nuestro problema desaparecerá. En un sistema sin dependencias rotas como el mío, la ejecución de esta orden daría el siguiente resultado:

fortaleza:/home/matados2k# apt-get -f install

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

0 actualizados, 0 se instalarán, 0 para eliminar y 22 no actualizados.

fortaleza:/home/matados2k#

Cortamos aquí, despedida y cierre.

Como esta entrega se me ha hecho increíblemente larga en comparación con el resto, he tenido que cortar y hacerla en dos.
En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #22 : Septiembre 30, 2007, 03:10:16 »

Entrega 22. Instalando programas (V).

    % "How would you rate Bush's incompetence?

    Unmatched ".

Ponte a la última y actualiza tu sistema completo, sé más chulo que un 8 verde pistacho Wink .

Si lees bien, con apt es posible actualizar el sistema completo e incluso la distribución completa a la última versión, con lo que con un buen sistema administrado sólo necesitarás una instalación.

Y ahora que lo pienso, ¿cómo actualizas un sistema Windows?, ah sí, haces copia de seguridad de tus datos, casi seguro que te conviene formatear tu partición e incluso dependiendo del caso cambiar el formato de sistema de archivos y luego empiezas a instalar el nuevo Windows (en la mayoría de los casos pirata XD ), y luego a instalar de nuevo los programas desde 0. Si está claro... con Windows son todo facilidades XD sobre todo para mantener una limpieza, un orden y sobre todo para pasar por caja XD. Bill, tontorrón, no te enfades que Windows tiene muchos... esto... colorines.

Hay dos formas de actualizar, cada una de ellas con sus peculiaridades, y ambas dos son absurdas si antes no se realiza un 'apt-get update'. Veamos cuáles son y qué matices tiene cada una de ellas:

apt-get upgrade

apt-get dist-upgrade

La primera se puede decir que es la más respetuosa, ya que se usa para instalar la versión más nueva de todos los paquetes instalados en el sistema provenientes de alguna de las fuentes listadas el 'sources.list'. Los paquetes instalados con una nueva versión disponible son descargados y actualizados, bajo ninguna circunstancia se desinstalarán paquetes, o se instalarán paquetes nuevos. Las nuevas versiones de programas instalados que no puedan ser actualizados sin cambiar el estado de instalación de otros paquetes no se instalarán, manteniéndose la versión actual.

Y la segunda, además de realizar las acciones de la primera, maneja inteligentemente los cambios de dependencias debidos a nuevas versiones de paquetes, apt-get tiene un sofisticado sistema de resolución de conflictos, si es necesario tratará de actualizar los paquetes más importantes a costa de los menos importantes.

Normalmente, si se hace la segunda no se necesitará realizar la primera, pero si se hace la primera entonces la segunda hará aún más actualizaciones. Veamos un ejemplo de ambas:

fortaleza:/home/matados2k# apt-get upgrade

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

Se actualizarán los siguientes paquetes:

docbook-dsssl exim4 exim4-base exim4-config exim4-daemon-light fwbuilder

fwbuilder-common fwbuilder-linux gallery gftp gftp-common gftp-gtk gftp-text

groff-base klogd lha libfwbuilder6 libmysqlclient12 libsensors3 libssl0.9.6

libtag1 libxine1 manpages menu mysql-client mysql-common mysql-server

sysklogd tasksel xprt-common xprt-xprintorg zlib1g zlib1g-dev

33 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados.

Necesito descargar 23,9MB de archivos.

Se utilizarán 408kB de espacio de disco adicional después de desempaquetar.

¿Desea continuar? [S/n] s

Des:1 http://ftp://ftp.fr.debian.org testing/main zlib1g-dev 1:1.2.2-3 [488kB]

....

Des:33 http://ftp://ftp.fr.debian.org testing/main libssl0.9.6 0.9.6m-1 [1755kB]

Descargados 23,9MB en 18m31s (21,5kB/s)

Preconfiguring packages ...

....

Configurando exim4-base (4.34-7) ...

....

fortaleza:/home/matados2k# apt-get dist-upgrade

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

Calculando la actualización... Listo

0 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados.

fortaleza:/home/matados2k#

En este caso 'apt-get dist-upgrade' no hizo nada porque no fue necesario, ya que 'apt-get upgrade' realizó todo lo imprescindible.

Para actualizar tu distribución lo normal es cambiar los repositorios de la que usas por la que deseas, por ejemplo, para pasar de Debian Etch a Debian Sid cambiamos en sources.list las fuentes de una por la de la otra y nos lanzamos con 'apt-get update','apt-get check' y 'apt-get dist-upgrade'. Aunque esto funciona bien en Debian, ojo, puede que en otras distribuciones no sea así y podáis tener problemas.

Limpia la caché del apt.

Apt lo que hace es bajar los paquetes y luego hacer lo que sea necesario con ellos. Para ello usa un directorio como caché situado en /var/cache/apt/archives y éste nunca se vacía, a menos que se haga manualmente borrando los archivos, cosa que no recomiendo (aunque a mí nunca me dio problemas) o bien mediante otras dos opciones del apt con sus pequeñas diferencias.

Si no lo borras puede llegar a convertirse con el paso del tiempo en un problema de espacio, por ejemplo, yo que suelo ser descuidado lo tengo al tamaño de 1.4 GB, aunque es conveniente también no tenerla siempre vacía, sobre todo cuando instalas y vuelves a instalar un mismo paquete, ya que lo que encuentre en la caché no lo bajará.

Las dos formas son:

apt-get clean

apt-get autoclean

La primera borra totalmente el repositorio local que contiene los ficheros descargados, y la segunda sólo borrará aquellos paquetes que ya no pueden ser descargados, o son claramente inservibles. Esto permite mantener la caché durante largos periodos de tiempo sin que aumente su tamaño sin control.

Vamos a ver un ejemplo de ambas, aunque esta vez empezaremos por la segunda:

fortaleza:/home/matados2k# apt-get autoclean

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

Del a2ps 1:4.13b-4 [715kB]

Del alsa-base 1.0.5a-3 [47,5kB]

...

Del gftp 2.0.17-6 [34,6kB]

Del manpages-dev 1.67-2 [1044kB]

Del mysql-server 4.0.21-6 [0B]

fortaleza:/home/matados2k#

Con esto he pasado de una caché de 1.4GB a una de 776.7 MB.

fortaleza:/home/matados2k# apt-get clean

fortaleza:/home/matados2k#

Y con esto la caché esta vacía.

Yo sólo quiero que se descarguen los paquetes.

Puede que nos interese que al instalar o actualizar sólo descargue los paquetes a la caché y no haga nada más con ellos. Para eso usamos la opción '-d' quedando las ordenes así:

apt-get -d install lista_de_paquetes

apt-get -d upgrade

apt-get -d dist-upgrade

Esto puede ser muy útil si vas a instalar y no vas a estar presente como en el caso de los 'deb', que muchas veces lanzan preguntas sobre cómo se tienen que configurar los paquetes, o también si vamos a instalar algo y como tenemos una conexión lenta queremos copiar los paquetes de la caché a un directorio para no volverlos a bajar nunca más Smiley

Veamos el ejemplo sólo con la instalación:

fortaleza:/home/matados2k# apt-get -d install abiword

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

Se instalarán los siguientes paquetes extras:

abiword-common

Paquetes sugeridos:

abiword-plugins abiword-plugins-gnome abiword-doc

Paquetes recomendados

abiword-help

Se instalarán los siguientes paquetes NUEVOS:

abiword abiword-common

0 actualizados, 2 se instalarán, 0 para eliminar y 0 no actualizados.

Necesito descargar 3371kB de archivos.

Se utilizarán 11,0MB de espacio de disco adicional después de desempaquetar.

¿Desea continuar? [S/n] s

Des:1 http://ftp://ftp.fr.debian.org testing/main abiword-common 2.0.14-1 [1486kB]

Des:2 http://ftp://ftp.fr.debian.org testing/main abiword 2.0.14-1 [1885kB]

Descargados 3371kB en 2m42s (20,7kB/s)

Descarga completa y en modo de sólo descarga

fortaleza:/home/matados2k# apt-get install abiword

Leyendo lista de paquetes... Hecho

...

Se utilizarán 11,0MB de espacio de disco adicional después de desempaquetar.

¿Desea continuar? [S/n] s

Seleccionando el paquete abiword-common previamente no seleccionado.

(Leyendo la base de datos ...

...

Configurando abiword-common (2.0.14-1) ...

fortaleza:/home/matados2k#

Podéis observar cómo simplemente se lo baja y para. Al ejecutar la misma orden sin '-d', como los encuentra en caché, ya no baja nada y en este caso se instala.

Pero si quiero reinstalar algo ya instalado..

Imaginemos que se nos ha corrompido el ejecutable o ficheros de algo que ya tenemos instalado, nuestra primera ocurrencia sería:

fortaleza:/home/matados2k# apt-get install abiword

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

abiword ya está en su versión más reciente.

0 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados.

fortaleza:/home/matados2k#

Uhmm... realmente un problema, ya que por defecto si está instalado ya no reinstala encima, pero esto lo podemos solucionar fácilmente con la opción '--reinstall'. Veamos el ejemplo:

fortaleza:/home/matados2k# apt-get --reinstall install abiword

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

0 actualizados, 0 se instalarán, 1 reinstalados, 0 para eliminar y 0 no actualizados.

Se necesita descargar 0B/1885kB de archivos.

Se utilizarán 0B de espacio de disco adicional después de desempaquetar.

¿Desea continuar? [S/n] s

(Leyendo la base de datos ...

146924 ficheros y directorios instalados actualmente.)

Preparando para reemplazar abiword 2.0.14-1 (usando .../abiword_2.0.14-1_i386.deb) ...

Desempaquetando el reemplazo de abiword ...

Configurando abiword (2.0.14-1) ...

fortaleza:/home/matados2k#

Como veis es fácil ganar el pulso si se conocen las herramientas necesarias.

Ya ya, todo está bien pero falta algo, ¿Y si no conozco el nombre de lo que quiero instalar?

Pues también tenemos un nuevo comando dentro de las utilidades de apt del cual sólo veremos una opción, y es la siguiente:

apt-cache search lista_de_palabras

Simplemente realiza una búsqueda de la expresión regular dada en todo el texto de todos los paquetes disponibles. Busca la expresión regular tanto en el nombre de los paquetes como en su descripción, y muestra el nombre del paquete y una pequeña descripción de éste. Así que vamos sin más a buscar juegos que sean como el Bubble:

fortaleza:/home/matados2k# apt-cache search bubble

bubblefishymon - system load dockapp with a duck

bubblemon - Bubbling Load Monitoring GNOME Applet

emacs-goodies-el - Miscellaneous add-ons for Emacs

fb-music-high - High quality, large music files for Frozen-Bubble

fb-music-low - Lower quality, small music files for Frozen-Bubble

frozen-bubble - Pop out the bubbles !

frozen-bubble-data - Data files for Frozen-Bubble

gdesklets-data - displays and sensors for gdesklets

gkrellm-bfm - system load plugin for gkrellm with a duck

junior-puzzle - Debian Jr. Puzzles

wmbubble - A system-load meter for Window Maker that features a duck

wmfishtime - Dockable clock app for WMaker, BlackBox, E, SawFish etc

xbubble - A nice Puzzle Bubble clone

xbubble-data - Data files for XBubble, a nice Puzzle Bubble clone

fortaleza:/home/matados2k#

¿Hace falta a estas alturas deciros cómo instalar alguno de la lista?

No me funcionan cosas de las que explicas.

Es posible, ya que si usas un port del apt (originario de Debian) puedes encontrarte con el problema de que hay opciones inexistentes por ser inútiles para el tipo de paquetes que vas a manejar, o que aún esa parte no está implementada.

En cualquier caso siempre hay que consultar 'man apt' , 'man apt-get' y 'man apt-cache' de tu sistema, que aparte de ver las diferencias verás las múltiples opciones que existen que yo no explico, y algunos comandos más dentro de apt que tampoco hemos aprendido.

En cualquier caso creo que con lo aquí visto tenéis la mayor parte de vuestras necesidades cubiertas, y los cambios si es que existen son mínimos.

Despedida y cierre.

Espero que estas dos últimas entregas te sean de utilidad y sean tan digeribles como intento que sean todas mis entregas. En la próxima veremos ya un par de herramientas gráficas para la instalación de paquetes y daremos por terminada esta serie de entregas. Un saludo y hasta la próxima.

Agradecimientos:
· Revisión del documento: karuchi (Carolina García).

Página oficial y dominio de mi propiedad http://matados2k.es
Matados'2k Usuario y moderador de foro.noticias3d.com
Matados'2k Usuario y moderador de www.sinuh.org

matados2k (arroba) gmail (punto) com

Este documento está sometido a la licencia de creative commons en su variante "Reconocimiento-NoComercial-SinObraDerivada 2.1 España". Es de agradecer que se comunique al autor el uso de este documento en otro medio y se debe incluir de forma obligatoria este recuadro y los agradecimientos.

Limpia la caché del apt.

Apt lo que hace es bajar los paquetes y luego hacer lo que sea necesario con ellos. Para ello usa un directorio como caché situado en /var/cache/apt/archives y éste nunca se vacía, a menos que se haga manualmente borrando los archivos, cosa que no recomiendo (aunque a mí nunca me dio problemas) o bien mediante otras dos opciones del apt con sus pequeñas diferencias.

Si no lo borras puede llegar a convertirse con el paso del tiempo en un problema de espacio, por ejemplo, yo que suelo ser descuidado lo tengo al tamaño de 1.4 GB, aunque es conveniente también no tenerla siempre vacía, sobre todo cuando instalas y vuelves a instalar un mismo paquete, ya que lo que encuentre en la caché no lo bajará.

Las dos formas son:

apt-get clean

apt-get autoclean

La primera borra totalmente el repositorio local que contiene los ficheros descargados, y la segunda sólo borrará aquellos paquetes que ya no pueden ser descargados, o son claramente inservibles. Esto permite mantener la caché durante largos periodos de tiempo sin que aumente su tamaño sin control.

Vamos a ver un ejemplo de ambas, aunque esta vez empezaremos por la segunda:

fortaleza:/home/matados2k# apt-get autoclean

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

Del a2ps 1:4.13b-4 [715kB]

Del alsa-base 1.0.5a-3 [47,5kB]

...

Del gftp 2.0.17-6 [34,6kB]

Del manpages-dev 1.67-2 [1044kB]

Del mysql-server 4.0.21-6 [0B]

fortaleza:/home/matados2k#

Con esto he pasado de una caché de 1.4GB a una de 776.7 MB.

fortaleza:/home/matados2k# apt-get clean

fortaleza:/home/matados2k#

Y con esto la caché esta vacía.

Yo sólo quiero que se descarguen los paquetes.

Puede que nos interese que al instalar o actualizar sólo descargue los paquetes a la caché y no haga nada más con ellos. Para eso usamos la opción '-d' quedando las ordenes así:

apt-get -d install lista_de_paquetes

apt-get -d upgrade

apt-get -d dist-upgrade

Esto puede ser muy útil si vas a instalar y no vas a estar presente como en el caso de los 'deb', que muchas veces lanzan preguntas sobre cómo se tienen que configurar los paquetes, o también si vamos a instalar algo y como tenemos una conexión lenta queremos copiar los paquetes de la caché a un directorio para no volverlos a bajar nunca más Smiley

Veamos el ejemplo sólo con la instalación:

fortaleza:/home/matados2k# apt-get -d install abiword

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

Se instalarán los siguientes paquetes extras:

abiword-common

Paquetes sugeridos:

abiword-plugins abiword-plugins-gnome abiword-doc

Paquetes recomendados

abiword-help

Se instalarán los siguientes paquetes NUEVOS:

abiword abiword-common

0 actualizados, 2 se instalarán, 0 para eliminar y 0 no actualizados.

Necesito descargar 3371kB de archivos.

Se utilizarán 11,0MB de espacio de disco adicional después de desempaquetar.

¿Desea continuar? [S/n] s

Des:1 http://ftp://ftp.fr.debian.org testing/main abiword-common 2.0.14-1 [1486kB]

Des:2 http://ftp://ftp.fr.debian.org testing/main abiword 2.0.14-1 [1885kB]

Descargados 3371kB en 2m42s (20,7kB/s)

Descarga completa y en modo de sólo descarga

fortaleza:/home/matados2k# apt-get install abiword

Leyendo lista de paquetes... Hecho

...

Se utilizarán 11,0MB de espacio de disco adicional después de desempaquetar.

¿Desea continuar? [S/n] s

Seleccionando el paquete abiword-common previamente no seleccionado.

(Leyendo la base de datos ...

...

Configurando abiword-common (2.0.14-1) ...

fortaleza:/home/matados2k#

Podéis observar cómo simplemente se lo baja y para. Al ejecutar la misma orden sin '-d', como los encuentra en caché, ya no baja nada y en este caso se instala.

Pero si quiero reinstalar algo ya instalado..

Imaginemos que se nos ha corrompido el ejecutable o ficheros de algo que ya tenemos instalado, nuestra primera ocurrencia sería:

fortaleza:/home/matados2k# apt-get install abiword

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

abiword ya está en su versión más reciente.

0 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados.

fortaleza:/home/matados2k#

Uhmm... realmente un problema, ya que por defecto si está instalado ya no reinstala encima, pero esto lo podemos solucionar fácilmente con la opción '--reinstall'. Veamos el ejemplo:

fortaleza:/home/matados2k# apt-get --reinstall install abiword

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

0 actualizados, 0 se instalarán, 1 reinstalados, 0 para eliminar y 0 no actualizados.

Se necesita descargar 0B/1885kB de archivos.

Se utilizarán 0B de espacio de disco adicional después de desempaquetar.

¿Desea continuar? [S/n] s

(Leyendo la base de datos ...

146924 ficheros y directorios instalados actualmente.)

Preparando para reemplazar abiword 2.0.14-1 (usando .../abiword_2.0.14-1_i386.deb) ...

Desempaquetando el reemplazo de abiword ...

Configurando abiword (2.0.14-1) ...

fortaleza:/home/matados2k#

Como veis es fácil ganar el pulso si se conocen las herramientas necesarias.

Ya ya, todo está bien pero falta algo, ¿Y si no conozco el nombre de lo que quiero instalar?

Pues también tenemos un nuevo comando dentro de las utilidades de apt del cual sólo veremos una opción, y es la siguiente:

apt-cache search lista_de_palabras

Simplemente realiza una búsqueda de la expresión regular dada en todo el texto de todos los paquetes disponibles. Busca la expresión regular tanto en el nombre de los paquetes como en su descripción, y muestra el nombre del paquete y una pequeña descripción de éste. Así que vamos sin más a buscar juegos que sean como el Bubble:

fortaleza:/home/matados2k# apt-cache search bubble

bubblefishymon - system load dockapp with a duck

bubblemon - Bubbling Load Monitoring GNOME Applet

emacs-goodies-el - Miscellaneous add-ons for Emacs

fb-music-high - High quality, large music files for Frozen-Bubble

fb-music-low - Lower quality, small music files for Frozen-Bubble

frozen-bubble - Pop out the bubbles !

frozen-bubble-data - Data files for Frozen-Bubble

gdesklets-data - displays and sensors for gdesklets

gkrellm-bfm - system load plugin for gkrellm with a duck

junior-puzzle - Debian Jr. Puzzles

wmbubble - A system-load meter for Window Maker that features a duck

wmfishtime - Dockable clock app for WMaker, BlackBox, E, SawFish etc

xbubble - A nice Puzzle Bubble clone

xbubble-data - Data files for XBubble, a nice Puzzle Bubble clone

fortaleza:/home/matados2k#

¿Hace falta a estas alturas deciros cómo instalar alguno de la lista?

No me funcionan cosas de las que explicas.

Es posible, ya que si usas un port del apt (originario de Debian) puedes encontrarte con el problema de que hay opciones inexistentes por ser inútiles para el tipo de paquetes que vas a manejar, o que aún esa parte no está implementada.

En cualquier caso siempre hay que consultar 'man apt' , 'man apt-get' y 'man apt-cache' de tu sistema, que aparte de ver las diferencias verás las múltiples opciones que existen que yo no explico, y algunos comandos más dentro de apt que tampoco hemos aprendido.

En cualquier caso creo que con lo aquí visto tenéis la mayor parte de vuestras necesidades cubiertas, y los cambios si es que existen son mínimos.
En línea

scenespain.net
« Respuesta #22 : Septiembre 30, 2007, 03:10:16 »

 En línea
yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #23 : Septiembre 30, 2007, 03:16:40 »

Entrega 23. Instalando programas (VI).

    % cat catfood

    cat: cannot open catfood

Por fin, instaladores gráficos.

Como ya comenté vamos a ir viendo ya aplicaciones gráficas para instalar los paquetes, de entre ellas hay que destacar dos, una perteneciente a los escritorios KDE como es Kpackage y otro (que es el que veremos) llamado Synaptic, aunque ambos nos ofrecen los mismo. Seguro que en tu distribución hay un paquete para Synaptic así que si no lo tienes instalado es hora de hacerlo.

La forma en la que vamos a ver la aplicación es sencilla, ya que Synaptic es un front-end gráfico de apt, como ya sabemos el uso de apt no vamos a explicar de nuevo el funcionamiento, sino ver cómo haríamos gráficamente lo que aprendimos en las dos entregas anteriores

Podéis ver su pagina Web para más información.

Arrancando la aplicación.

Si no encontráis en el menú de vuestro escritorio favorito Synaptic (cosa rara, buscad bien) podéis arrancarlo desde una consola (siendo root) con el comando 'synaptic'. Si arrancáis desde el menú y suponiendo, como debería ser, que estáis desde un usuario normal os pedirá la clave de root, la introducimos y tendremos algo parecido a esto:



Manejando las fuentes

Lo primero que vamos a aprender es a manejar las fuentes (acordaos de /etc/apt/sources.list que es lo que realmente vamos a tocar pero de forma gráfica), nos dirigimos al menú 'Configuración' y dentro de éste elegimos 'Repositorios', con lo que obtenemos la siguiente ventana:



Si recordamos cuando lo hacíamos manualmente, para comentar una línea y ésta no tenga efecto usábamos un '#'. Ahora simplemente desmarcamos una línea y listo, con lo que las fuentes efectivas son las que tenemos en negrita.

Para modificar una línea la seleccionamos y podremos editar su contenido en la parte inferior:

Para eliminarlas simplemente seleccionas la que quieres y pulsamos sobre 'borrar', así que si quieres probar puedes pulsar sobre 'Nuevo' para crear una nueva entrada y probar a editarla y luego borrarla.



Ya tengo a mi gusto las fuentes ¿Y ahora, qué?

Una vez terminado el paso anterior tendremos que hacer el equivalente a 'apt-get update' para sincronizar el índice de paquetes respecto a las fuentes, así que sin más pulsamos en el botón 'Recargar' de la pantalla principal del programa, con lo que se nos abre un cuadro de diálogo de progreso tal que así:



Instalar, desinstalar, reinstalar y actualizar. Todo al alcance de un simple click.

Lo primero es saber qué queremos instalar, porque en la pantalla principal aparecen todos los paquetes disponibles y la verdad, así no hay quien se aclare (imaginaos mi caso con una lista de 22.206 paquetes entre Debian Etch y Debian Sarge). Lo primero que vamos a hacer es que se ordenen de alguna forma más lógica.

Para empezar, nos fijamos arriba a la izquierda donde pone “Histórico de búsqueda” (o cualquier otra cosa del siguiente recuadro) y pulsamos:



Vemos las posibilidades de ordenación que se nos dan, de las cuales la más interesante a mi modo de ver es por Secciones y quizás por orden Alfabético, la cosa es que investigues por tu cuenta, de momento para la explicación elegiremos Secciones.

Estupendo, así sí que da gusto, vemos en la parte izquierda muchas secciones muy ordenadas por temas, así que vamos a picar por ejemplo en... juegos y entretenimiento (según el sistema que tengáis tendréis uno u otros o unos muy parecidos). Ahora vamos a buscar el frozen-bubble en la lista superior derecha y lo seleccionamos (no marcarlo) y vemos que nos aparece en la parte inferior izquierda la descripción del paquete, estupendo Smiley no sólo buscamos visualmente sino que además podemos saber de qué se trata.



En la columna 'E' podéis ver un cuadradito que nos indica en qué estado están estos paquetes (instalado, sin instalar ...), los posibles estados los podemos ver en el menú ayuda y son los siguientes:



Pues bien, nos lo ponen todo en bandeja, sabiendo esto sólo tenemos que marcar el paquete con lo que queremos hacer seleccionándolo y pulsando el botón secundario del ratón:



Estupendo, tenemos un todo en 1, desde aquí según el estado del paquete aparecerán activas las opciones posibles a realizar, desmarcar (si estaba marcada) para no hacer nada, reinstalar un paquete, actualizarlo, eliminarlo y eliminarlo completamente (acordaos de que los paquetes 'deb' contenían ficheros de configuración que sólo se eliminaban con la opción --purge del 'apt-get').

Pues ya está, lo marco para instalar y automáticamente se me marcarán todas sus dependencias para instalarse Smiley



Ya sabemos cómo realizar todas las órdenes, pero pulsamos y no lo hace, sino que 'lo marca'. Esto nos da la posibilidad de indicar todo tipo de acciones para luego pulsar en 'Aplicar' y ver cómo nuestros deseos se hacen realidad:



Vemos la información de lo que se realizará y nos da la opción de 'Sólo descargar los paquetes' como el '-d' de 'apt-get', 1,2,3.. YA



Y después de comprobar lo malo que es tener un P2P activo si eres impaciente:



¿Y si tenemos un problema, qué?

Os acordáis de la entrega 21 donde hablábamos de problemas como el “problema de que no pueden instalarse los paquetes porque ya no se encuentran, o bien has instalado algo que no venía en los repositorios y trastes de 'dkpg' y ocurrieron dependencias, en cualquier caso siempre que se encuentren dependencias rotas.”

Pues la forma de solucionarlo es primero pulsando en 'Recargar' y luego ir al menú 'Editar' y seleccionar 'Reparar paquetes rotos' (equivalente del 'apt-get -f install').

Y ahora queremos actualizar nuestro sistema.

Para actualizar el sistema también es bien sencillo, pulsamos en 'Marcar todas las actualizaciones':



Y nos aparecen los 2 modos que explicamos en la entrega anterior, así que elegid la que os convenga sabiendo que 'Modernización predeterminada' equivale al 'apt-get upgrade' y 'Actualización inteligente' equivale a 'apt-get dist-upgrade'. Luego pulsáis 'Aplicar' y todo resuelto.

Y la cache, pero ¿qué pasa con la cache?.

Pues lo de la cache está más escondido pero también está, nos dirigimos al menú 'Configuración' , elegimos 'Preferencias' y vamos a la pestaña de 'Ficheros temporales':



Simplemente dejamos marcada la opción que deseamos, la segunda corresponde a 'apt-get clean' y la tercera a 'apt-get autoclean'.

Estupendo, ya sólo me queda realizar búsquedas.

Esto es fácil, y seguro que si no os lo digo también veréis ese enorme botón que pone 'Buscar':



Ya sólo os queda seleccionar dónde buscar y todos nuestros problemas solucionados.
« Última modificación: Septiembre 30, 2007, 03:24:22 por yako » En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #24 : Septiembre 30, 2007, 03:24:47 »

Entrega 24. Montando unidades.

    % ^What is saccharine?

    Bad substitute.

Preámbulo.

Según mi experiencia por los foros (sobre todo en los de www.noticias3d.com que no son precisamente específicos de Linux), hay 3 cosas que realmente se llevan la palma en cuanto a generación de dudas puesto que se repiten con mucha frecuencia. Son las siguientes: la instalación y/o compilación de programas, cómo montar dispositivos (entiéndase discos duros, pen usb, grabadoras, multilectores...), y las referentes a la configuración de las X (entorno gráfico) y conseguir la aceleración por Hardware de la tarjeta de vídeo.

La primera más o menos está ya vista o se han visto las nociones para defenderse. La segunda es lo que vamos a ver en esta entrega, cosa que aunque puede llegar a ser compleja lo intentaremos ver de una forma sencilla y práctica. Y la tercera puede ser un tema bastante avanzado que creo conveniente ver aún más adelante, sobre todo por lo extenso que puede llegar a ser.

¿Qué necesitamos saber y repasar?

Para la presente entrega es necesario saber cómo se nombran los dispositivos en Linux, cosa que ya vimos en la entrega 2 y si a estas alturas no lo sabes debes repasar la entrega 2, teniendo en cuenta que hay una errata ya que los ratones usb se referencian generalmente por '/dev/input/mice', pero concretamente dentro de /dev/usb veremos los dispositivos para esos puertos como el ratón, escáner e impresoras entre otros.

En cuanto a las unidades de almacenamiento como son discos duros, disqueteras, unidades ópticas, pen usb y demás, ya sean locales o de forma remota (a través de la red por ejemplo), saber que no se accede directamente a ellas por su dispositivo.

En los sistemas Unix no existen las unidades como en Windows (A:, B:, C: ...). Existe, como ya comentábamos en las primeras entregas, un directorio '/' a partir del cual cuelga todo. Para acceder a una unidad (como una partición) hay que montarla en un directorio dentro de nuestro árbol de directorios. Con esto conseguimos un 'todo' uniforme y accedemos a todo de la misma manera, ya sean particiones FAT (las propias de Linux) o una tarjeta de memoria o la memoria de una cámara digital, esté dentro de tu ordenador o en la China. Es importante entender esto y el por qué se montan y se desmontan unidades, que no es más que enlazar y desenlazar con el árbol de directorios, para no escuchar cosas tan absurdas como que “Linux está muy atrasado porque hay que montar unidades”.

Por convenio, consenso o costumbre, los dispositivos son montados en un directorio dentro '/mnt', y en muchas distribuciones los dispositivos removibles como disqueteras y dispositivos ópticos dentro de '/media'. Aunque realmente podemos montarlos en cualquier otro directorio que no sea '/', si bien es completamente absurdo montar unidades en sitios del sistema como '/boot' , '/bin', '/usr' y similares.

Y por último, 1 dispositivo se monta en un único directorio para él solito, nada de montar todo en el mismo sitio. Si se os ocurre montar en un directorio que no esté vacío observaréis que lo anterior desaparece, realmente lo que sucede es que queda oculto e inaccesible hasta que se desmonte el dispositivo.

Tanto monto, monto tanto...

Para montar unidades tenemos un comando muy interesante y útil:

mount [-o Opciones] [-t tipo] [dispositivo] [directorio]

Evidentemente esta no es la única forma de utilizar mount ya que existen más opciones y parámetros, pero sí la que nos será de utilidad para nosotros que estamos aprendiendo. Lo primero que vamos a ver es el uso de mount sin parámetros:

matados2k@fortaleza:~$ mount

/dev/hda11 on / type ext3 (rw,errors=remount-ro)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/hda10 on /boot type ext3 (rw)

/dev/hda6 on /home type ext3 (rw)

/dev/hda12 on /usr type ext3 (rw)

/dev/hda9 on /mnt/auxi2 type vfat (rw,noexec,nosuid,nodev,umask=0)

/dev/hda8 on /mnt/auxi1 type vfat (rw,noexec,nosuid,nodev,umask=0)

/dev/hda7 on /mnt/juegos type vfat (rw,noexec,nosuid,nodev,umask=0)

/dev/hda1 on /mnt/win_xp type ntfs (ro,noexec,nosuid,nodev,umask=0)

usbfs on /proc/bus/usb type usbfs (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

matados2k@fortaleza:~$

Lo que aquí se nos muestra es lo que tenemos montado actualmente en nuestro sistema, de la forma:

Dispositivo on Directorio type Tipo Opciones

donde el Tipo indica el sistema de ficheros que usa, y Opciones nos indica las opciones con las que fue montado, más adelante veremos qué significan.

Si estáis atentos os daréis cuenta de que existen Directorios a los que no hay asignados un dispositivo real, como por ejemplo “proc on /proc type proc (rw)”:

matados2k@fortaleza:~$ ls /dev/proc

ls: /dev/proc: No existe el fichero o el directorio

matados2k@fortaleza:~$

Esto es debido a que existen sistemas de ficheros que no están asociados a un dispositivo real, es más, en el caso '/proc' de este ejemplo ni siquiera existe físicamente, es una representación en memoria de los procesos que corren por el sistema y más información útil que nos proporciona el kernel. Pero de momento daremos de lado esto y nos centraremos en lo que nos interesa.

El kernel de Linux es capaz de reconocer muchos sistemas de ficheros, y entre ellos los que más nos interesan son los siguientes:

http://img394.imageshack.us/img394/228/linuxsd8.jpg
[CURSO DESDE CERO] GNU/LINUX


Pero hay más como pueden ser minix, ext, xiafs, hpfs, msdos, umsdos, proc, nfs, smbfs, ncpfs, affs, ufs, romfs, sysv, xenix, coherent ... Como veis, una gran cantidad de posibilidades imposibles de conseguir con un Windows.

Y ahora queda la gran prueba: montar un dispositivo, y aunque la mayoría de vosotros tendréis ya facilitado la forma de montarlo vamos a hacerlo manualmente. Para ello usaremos la opción '-t' que sirve para indicar el tipo de sistema a usar, yo para referenciar al cd-rom lo haré como /dev/hdXY, aunque puedes usar /dev/cdrom:

matados2k@fortaleza:~$ cd curso

matados2k@fortaleza:~/curso$ mk cdrom

bash: mk: command not found

matados2k@fortaleza:~/curso$ mkdir cdrom

matados2k@fortaleza:~/curso$ su

Password:

fortaleza:/home/matados2k/curso# mount -t iso9660 /dev/hdc /home/matados2k/curso/cdrom/

mount: dispositivo de bloques /dev/hdc está protegido contra escritura; se monta como sólo lectura

fortaleza:/home/matados2k/curso#

Como veis sólo root puede montar unidades, y ahora podremos ver el contenido:

fortaleza:/home/matados2k/curso# cd cdrom/

fortaleza:/home/matados2k/curso/cdrom# ls

autorun.bat autorun.pif cdrom.ico index.html

autorun.inf boot change-log.txt KNOPPIX

fortaleza:/home/matados2k/curso/cdrom#

Y ahora cómo saco mi CD, no me deja.

Una unidad montada nunca debe desconectarse o retirarse sin antes desmontarse, y esto muy importante ya que Linux usa un sistema de buffers (memoria intermedia entre el dispositivo y el procesador, ya que los sistemas de almacenamiento son muchísimo más lentos que la memoria principal) en memoria que puede no estar actualizado con respecto a la unidad (aunque en este caso sea de sólo lectura), cada cierto tiempo el contenido de esos buffers es sincronizado con el dispositivo y al desmontarse lo que se hace es descargar todos esos buffers para poder retirar de forma segura el dispositivo (o apagar la máquina sin perder datos).

¿Por qué esto es así? Por razones de eficiencia, aunque esto suponga pérdida de facilidad (cosa que actualmente no es así, ya que las distribuciones más amigables están preparadas para no tener que montar y desmontar, tal como una Mandriva por poner un ejemplo).

El comando que necesitamos es:

umount dispositivo|directorio

Y este comando es bien sencillo, para desmontarlo simplemente ejecutamos 'umount' y le indicamos o bien el dispositivo que queremos desmontar o bien el directorio.

fortaleza:/home/matados2k/curso/cdrom# umount /dev/hdc

fortaleza:/home/matados2k/curso/cdrom#

No me desmonta la unidades, ¿qué hago?

Algunas veces nos ocurre que no se desmontan las unidades, cosa que puede llegar a desesperarnos, lo primero que hay que mirar es que no esté ejecutándose nada que use lo que tenemos montado, la mayor parte de las veces lo solucionamos con esto (es evidente que si algo está en uso no lo vamos a poder quitar). Otro problema y más gordo es que un proceso ande por ahí bloqueado y no libere el dispositivo (este problema es más complicado, ya veremos en sucesivas entregas cómo ver y eliminar procesos).

Si aparece este problema contamos con un comando bastante útil que nos puede solucionar la papeleta, y su uso básico es:

eject [dispositivo|directorio]

No es necesario en este caso ser root, por defecto si no se le indica nada se referirá a '/dev/cdrom' así que vamos a ejecutarlo para nuestro ejemplo:

fortaleza:/home/matados2k/curso# mount -t iso9660 /dev/hdc /home/matados2k/curso/cdrom/

mount: dispositivo de bloques /dev/hdc está protegido contra escritura; se monta como sólo lectura

fortaleza:/home/matados2k/curso#

fortaleza:/home/matados2k/curso/cdrom# exit

exit

matados2k@fortaleza:~$ eject hdc

matados2k@fortaleza:~$

Como veis es tan amable que hasta nos expulsa el CD, y no es necesario poner antes '/dev/'. Por cierto, no seáis ilusos y esperéis que os expulse un disquete Wink.

Despedida y cierre.

Con el uso básico de mount y umont nos vamos a despedir de esta entrega, pero en las siguientes ya veremos cómo montar discos duros, un pen usb, un móvil (tsm 100v, pero es lo mismo que montar un pen, otro móvil y/o una cámara de fotos), una tarjeta compact flash y una tarjeta SD. Veremos las opciones más interesantes y la forma de hacernos la vida más fácil y automática con el uso de /etc/fstab y olvidarnos de tanta opción y parafernalia. Incluso por el camino veremos cómo hacer una imágenes de nuestros dispositivos y montarlas Wink.

Estaremos unas cuantas entregas más tocando este tema, y posteriormente se van a tratar los siguientes:

    * Monitorización y eliminación de procesos.
    * Comprimir y descomprimir.
    * Arranque y Parada en Linux.
    * Sonido en Linux.
    * Programar script.

Más o menos seguiré ese orden aunque es probable que meta temas de por medio y adelante, atrase y añada temas según me lo pidáis. Así que ya sabéis, mandadme vuestras sugerencias al foro y a mi correo.

Otra cosa importante NO RESPONDERÉ NI UNA SOLA DUDA VÍA MAIL, para eso USAD LOS FOROS que encontrareis en mi propia página, en www.sinuh.org en la sección de comunidad, también podéis encontrarme en los foros de www.noticias3d.com donde soy moderador de la sección GNU/Linux y Software Libre. De hecho ignoraré como de costumbre (salvo alguna excepción) los e-mail con dudas, por el simple hecho de que: a) ya lo avisé en la entrega 0, y b) las preguntas suelen ser muy repetitivas, y las soluciones útiles para más de una persona. El mejor sitio para poder utilizar la misma solución para más de una persona son los foros, y si lo preguntan 50 veces con responderla 1 sobra. Tampoco ESPERÉIS RESPUESTA EN LOS COMENTARIOS, ya que tampoco es el sitio indicado. Espero que sepáis comprender que estar resolviendo las mismas dudas una y otra vez vía e-mail no es nada agradable y poco útil salvo para la persona que pregunta.
« Última modificación: Septiembre 30, 2007, 03:27:44 por yako » En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #25 : Septiembre 30, 2007, 11:46:27 »

Entrega 25. Montando unidades (II).

    % ^What is saccharine?

    Bad substitute.

Continuando.

Antes de nada, vamos a ver cómo desaparecen los archivos dentro de un directorio que usamos para montar una unidad y cómo especificar que intente adivinar qué tipo de sistema de ficheros usa Smiley.

matados2k@fortaleza:~$ cd curso

matados2k@fortaleza:~/curso$ ls -l > ./cdrom/desaparezco.txt

matados2k@fortaleza:~/curso$ su

Password:

fortaleza:/home/matados2k/curso# cd cdrom/

fortaleza:/home/matados2k/curso/cdrom# ls

desaparezco.txt

fortaleza:/home/matados2k/curso/cdrom# mount -t auto /dev/hdc /home/matados2k/curso/cdrom/

mount: dispositivo de bloques /dev/hdc está protegido contra escritura; se monta como sólo lectura

fortaleza:/home/matados2k/curso/cdrom#

fortaleza:/home/matados2k/curso/cdrom# ls

desaparezco.txt

fortaleza:/home/matados2k/curso/cdrom# cd ..

fortaleza:/home/matados2k/curso# cd cdrom

fortaleza:/home/matados2k/curso/cdrom# ls

autorun.bat autorun.inf cdrom.ico info isolinux META

fortaleza:/home/matados2k/curso/cdrom#

Como vemos en el ejemplo, creamos un archivo de texto dentro del directorio donde vamos a montar el cdrom, pero en este caso usamos 'auto' con lo que le indicamos que autodetecte el formato, ¡bien! esto se empieza a facilitar, aunque no siempre funciona. Como ya estábamos dentro del directorio antes de montarlo, aún es visible el archivo, pero es salir y entrar y ¡oops! ya no está. Que no cunda el cúnico, esto tiene fácil solución Wink

fortaleza:/home/matados2k/curso/cdrom# umount /dev/hdc

umount: /home/matados2k/curso/cdrom: dispositivo ocupado

umount: /home/matados2k/curso/cdrom: dispositivo ocupado

fortaleza:/home/matados2k/curso/cdrom# cd ..

fortaleza:/home/matados2k/curso# umount /dev/hdc

fortaleza:/home/matados2k/curso# cd cdrom

fortaleza:/home/matados2k/curso/cdrom# ls

desaparezco.txt

fortaleza:/home/matados2k/curso/cdrom#

Como veis, es imposible desmontar si estamos dentro, puesto que evidentemente está en uso. Simplemente desmontando ya volveremos a tener los ficheros originales.

Opcionalmente las Opciones.

Muchas veces nos puede resultar necesario usar opciones para el tipo de sistema de archivos que vamos a montar, y opciones válidas para todos.

En nuestro ejemplo en particular, lo ideal sería no ver: 'mount: dispositivo de bloques /dev/hdc está protegido contra escritura; se monta como sólo lectura' diciéndole que lo monte directamente en modo de sólo lectura:

fortaleza:/home/matados2k/curso/cdrom# mount -o ro -t auto /dev/hdc /home/matados2k/curso/cdrom/

fortaleza:/home/matados2k/curso/cdrom# umount /dev/hdc

fortaleza:/home/matados2k/curso/cdrom#

La opción 'ro' significa 'read only', o lo que es lo mismo, montar en modo sólo lectura. Ahora veremos qué tipos de opciones interesantes tenemos:

NOTA: Algunas opciones no tienen sentido fuera del fichero de configuración '/etc/fstab', que veremos más adelante en esta serie de entregas.
Válidas para todos los sistemas:
auto   Puede montarse con la opción -a (no confundir con indicar en el sistema de archivos 'auto'). Más adelante veremos para qué sirve la opción '-a'.
defaults   Emplear las opciones predeterminadas.
exec   Permitir la ejecución de binarios.
noatime   No actualizar los tiempos de acceso a nodo -í en este sistema de ficheros. A cambio de no actualizar los tiempos de acceso de un fichero podemos ganar velocidad.
noauto   Sólo puede montarse explícitamente (esto es, la opción -a no hará que el sistema de ficheros se monte).
noexec   No permitir la ejecución de ningún binario en el sistema de ficheros montado.
nosuid   No permitir el efecto de los bits SUID ni SGID.
nouser   Prohibir a un usuario ordinario (esto es, distinto de root) montar el sistema de ficheros. Esto es lo predeterminado.
remount   Intentar re-montar un sistema de ficheros ya montado. Esto se emplea comúnmente para cambiar las opciones de montaje en un sistema de ficheros, especialmente para que se pueda escribir en un sistema de ficheros que estaba de lectura exclusiva.
ro   Montar el sistema de ficheros de lectura exclusiva.
rw   Montar el sistema de ficheros de lectura y escritura.
suid   Permitir el efecto de los bits SUID y SGID.
user   Permitir a un usuario ordinario montar el sistema de ficheros.

Estas son las que normalmente podéis usar (y me quedo unas cuantas en el tintero), pero veremos algunas más que os pueden interesar:
Válida para Ext2
check / check=normal / check=strict   Establece el nivel de comprobaciones. Esto hace que la integridad de los datos se comprueben cuando se monta la partición, más información 'man mount'
Válida para tipo FAT
uid=valor   Establece el propietario de todos los ficheros
gid=valor   Establece el grupo de todos los ficheros.
umask=valor   Establece la umask (la máscara de bits de los permisos que no están presentes).

Con estas opciones tendremos más que suficiente para saber movernos montando y desmontado particiones. Como podéis intuir, esta cantidad de opciones nos da una flexibilidad que un sistema Windows por ejemplo no podría imaginar.

Montando discos duros.

Ahora veremos cómo montar las particiones típicas de Windows que muchos de nosotros tenemos, para empezar las más fáciles: las fat16 (en extinción) y fat32. Muchos de vosotros ya las tendréis montadas, así que para las pruebas desmontadlas antes:

fortaleza:/home/matados2k/curso# umount /mnt/win_xp

fortaleza:/home/matados2k/curso# umount /dev/hda7

fortaleza:/home/matados2k/curso#

La primera que desmonta es una partición ntfs mediante el directorio donde estaba montada, y la segunda es una fat32 mediante su dispositivo.

Vamos a montar seguidamente la partición fat32 en modo lectura y escritura, y hacer que todos la puedan utilizar poniendo la máscara de permisos a 0.

fortaleza:/home/matados2k/curso# mount -o rw,umask=0 -t vfat /dev/hda7 /mnt/juegos

fortaleza:/home/matados2k/curso#

Fácil, ¿verdad? Para poner más de una opción ya sabéis, poned una coma. Ahora lo complicamos: la vamos a remontar con las mismas características, que no permita la ejecución de binarios, que autodetecte qué tipo de partición es y en sólo lectura:

fortaleza:/home/matados2k/curso# mount -o remount,ro,umask=0,noexec -t auto /dev/hda7 /mnt/juegos

fortaleza:/home/matados2k/curso#

Podéis complicarlo tanto como queráis. Ahora veremos cómo montar una partición ntfs típica de los Windows NT/200X/XP. Éstas son más problemáticas, ya que el núcleo de Linux muchas veces no está compilado con soporte para ellas (depende de la distribución que uséis), y oficialmente no hay soporte para la escritura (por mucho que os digan que sí, sólo hay que leer la documentación del kernel para verlo), así que montadlas en modo sólo lectura para evitaros problemas. Para aquellos que vuestro kernel no venga con soporte ntfs lo siento, pero no podemos ver a estas alturas cómo conseguirlo. Actualmente se puede acceder a las particiones NTFS en modo escritura de forma bastante segura con el driver ntfs-3g, pero tampoco vamos a ver cómo usarlo.

fortaleza:/home/matados2k/curso# mount -o ro,umask=0 -t ntfs /dev/hda1 /mnt/win_xp

fortaleza:/home/matados2k/curso# mount -o remount,ro,umask=0 -t auto /dev/hda1 /mnt/win_xp

fortaleza:/home/matados2k/curso#

Ahí tenéis el ejemplo de cómo las monta sin mayor problema. Y como nota, las particiones tipo Ext2 y Ext3 montadlas sólo con la opción 'default', que os funcionarán sin problemas.

Montando unidades externas por usb.

Las unidades externas por usb como son pen drives, lectores de tarjetas de memoria, cámaras digitales (no todas, pero sí la mayoría) y demás tienen un trato un tanto especial, ya que Linux las monta como dispositivos scsi ('/dev/sdXY', donde X e Y tienen el mismo significado que para '/dev/hdXY').

Según vas pinchando se les va asignando un dispositivo '/dev/sdX' que se corresponde al primero que esté libre (yo no tengo nada scsi, ni discos duros sata reconocidos como scsi, así que yo empiezo por '/dev/sda'), en mi caso particular tengo un lector de tarjetas de memoria de estos que van en el hueco de la disquetera, concretamente con 4 ranuras para 6 tipos de tarjetas, entonces como es el primer dispositivo usb que encuentra el ordenador al arrancar me coge desde '/dev/sda' a '/dev/sdd', uno por cada ranura. Lo siguiente que conecte irá a partir de '/dev/sde'.

Como todos los dispositivos usb de almacenamiento del tipo que comento son internamente de tipo FAT, todos se montan de igual manera, la misma que los discos duros. ¡Pero! (ya empezamos, si es que no puede ser tan bonito) al igual que los discos duros la mayoría de éstos tienen una partición, generalmente sólo una, con lo que por ejemplo si es '/dev/sda' al montarlo le indicamos '/dev/sda1' para indicarle la primera partición primaria de '/dev/sda', esto será lo mas normal y raramente nos encontraremos (al igual que con los disquetes) con unidades que no tengan particiones con lo cual nos olvidemos del número y tan contentos Smiley.

Así que primero pasaremos a montar un pen usb, como yo ya sé que me lo asignará sobre /dev/sde lo tengo más fácil, pero claro... y los demás qué, ¿prueba y error? Pues es una solución, pero mejor usemos un comando muy útil llamado:

dmesg

Este es un comando que muestra el 'ring buffer' (no se bien cómo traducirlo, así que lo dejo tal cual y que cada uno haga su traducción). Y de momento lo vamos a usar para lo que nos interesa, que es ver dónde asigna Linux nuestro pen. Para esto lo pinchamos e inmediatamente ejecutamos este comando:

matados2k@fortaleza:~$ dmesg

...

usb-storage: device found at 5

usb-storage: waiting for device to settle before scanning

Vendor: Model: USB DISK Pro Rev: PMAP

Type: Direct-Access ANSI SCSI revision: 00

SCSI device sde: 489472 512-byte hdwr sectors (251 MB)

sde: assuming Write Enabled

sde: assuming drive cache: write through

SCSI device sde: 489472 512-byte hdwr sectors (251 MB)

sde: assuming Write Enabled

sde: assuming drive cache: write through

/dev/scsi/host2/bus0/target0/lun0: p1

Attached scsi removable disk sde at scsi2, channel 0, id 0, lun 0

usb-storage: device scan complete

matados2k@fortaleza:~$

Si somos observadores nos daremos cuenta de que estos son todos los mensajes que Linux nos daba al arrancar, y en lo último de todo aparece lo que acabamos de pinchar, nuestro pen usb. Nos fijamos en esta línea:'SCSI device sde: 489472 512-byte hdwr sectors (251 MB)' que es precisamente la que nos ha chivado dónde esta Smiley. Así que sin más:

matados2k@fortaleza:~$ cd curso/

matados2k@fortaleza:~/curso$ mkdir usb

matados2k@fortaleza:~/curso$ su

Password:

fortaleza:/home/matados2k/curso# fortaleza:/home/matados2k/curso# mount -t vfat -o rw,umask=0 /dev/sde ./usb

mount: wrong fs type, bad option, bad superblock on /dev/sde,

missing codepage or other error

In some cases useful info is found in syslog - try

dmesg | tail or so



fortaleza:/home/matados2k/curso# mount -t vfat -o rw,umask=0 /dev/sde1 ./usb

fortaleza:/home/matados2k/curso#cd usb

fortaleza:/home/matados2k/curso/usb# ls

cd seguridad

fortaleza:/home/matados2k/curso/usb#

Como veis mi pen usb tiene una partición y accedo por /dev/sde1. Pues es así con todos los dispositivos de almacenamiento por usb, como mi lector de tarjetas con una SD:

fortaleza:/home/matados2k/curso/usb#dmesg

...

sdc: Spinning up disk....ready

SCSI device sdc: 499712 512-byte hdwr sectors (256 MB)

...

fortaleza:/home/matados2k/curso/usb#cd ..

fortaleza:/home/matados2k/curso# umount ./usb

fortaleza:/home/matados2k/curso# mount -t vfat -o rw,umask=0 /dev/sdc1 ./usb

fortaleza:/home/matados2k/curso# cd usb

fortaleza:/home/matados2k/curso/usb#

O como un móvil, una cámara digital (la mayoría)... con todos es exactamente igual, por lo que más ejemplos sobran Wink.
En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #26 : Septiembre 30, 2007, 11:47:46 »

Entrega 26. Montando unidades (III).

    % [Where is my brain?

    Missing ].

El fichero /etc/fstab.

Este es un fichero de configuración que nos interesa muchísimo, ya que guarda información estática sobre los sistemas de ficheros. Cuando nuestro sistema arranque leerá este fichero de configuración y actuará en consecuencia, montando todo aquello que le indiquemos o guardando datos para simplificar el montado posterior.

Sin más, abrimos el que tengamos cada uno en nuestro sistema, el mío es tal que así:

# /etc/fstab: static file system information.

#

#

proc /proc proc defaults 0 0

/dev/hda11 / ext3 defaults,errors=remount-ro 0 1

/dev/hda10 /boot ext3 defaults 0 2

/dev/hda6 /home ext3 defaults 0 2

/dev/hda12 /usr ext3 defaults 0 2

/dev/hda5 none swap sw 0 0

/dev/hdc /media/cdrom0 iso9660 ro,user,noauto 0 0

/dev/hdd /media/cdrom1 iso9660 ro,user,noauto 0 0

/dev/hdb1 /mnt/m2kaux vfat rw,user,umask=0 0 0

/dev/hda1 /mnt/winxp ntfs ro,user,umask=0 0 0

/dev/hda7 /mnt/juegos vfat rw,user,umask=0 0 0

/dev/hda8 /mnt/auxi1 vfat rw,user,umask=0 0 0

/dev/hda9 /mnt/auxi2 vfat rw,user,umask=0 0 0

/dev/sda1 /mnt/cfmd vfat rw,user,umask=0 0 0

/dev/sdc1 /mnt/sdmmc vfat rw,user,umask=0 0 0

/dev/sde1 /mnt/usb vfat rw,user,umask=0 0 0

Todo lo que veamos detrás de un carácter '#' son líneas comentadas y no tendrán efecto alguno, con lo que tenemos que en la 3ª línea de mi fichero (no tiene por qué ser así en el del resto) está comentado el formato que veremos a continuación:

Significado
“File system”, o sea sistema de fichero, se corresponde con el dispositivo que usábamos en el comando mount (ver entrega 24).
“Mount point”, punto de montaje, es el directorio donde queremos montar el dispositivo.“Type”, tipo, se corresponde a la opción -t del comando mount.
“options”, opciones, se corresponde con lo que poníamos para la opción -o de mount.
“dump”, sólo es necesario si usamos el comando 'dump' para determinar qué sistemas necesitan ser volcados, siendo dump una herramienta de backup. Lo normal es dejarlo a 0 si no lo tenemos instalado o no vamos a hacer uso de él, que suele ser lo normal.
“pass”, lo usa el programa fsck (este ya si que es más importante). Este programa realiza un chequeo al arrancar de los sistemas de ficheros, y el número indica en qué orden deben comprobarse, teniendo en cuenta que los que tengan el mismo número se comprueban de forma secuencial a como han sido definidos.

Hay que tener en cuenta que si los sistemas se encuentran en distintos dispositivos se hace una comprobación concurrente, aprovechando así el paralelismo del sistema. Si este número es un 0 (lo normal) se entiende que no hay que comprobarlo.

El manual (comando 'man') recomienda en caso de que se comprueben, que a la partición raíz ('/') se le asigne un 1 y al resto un 2.

Visto esto y sabiendo manejar el comando mount, ya es cosa trivial saber cómo usar este fichero, para ayudarnos podemos usar la tabla de la entrega 25 y ya nada se nos debe resistir.

Con esto ya sabemos configurar este fichero, y ya sabemos que todo lo que definamos en él se monta automáticamente al iniciar el sistema, salvo que le digamos lo contrario como en las líneas 10 y 11 de mi fichero, donde si os fijáis en las opciones aparece 'noauto' (una de las que aparece en las tablas de la entrega 25, y que no tiene sentido fuera de este fichero). ¿Entonces, de qué nos vale? Pues muy sencillo, puesto que todo se simplifica a la hora de montar unidades. Ejemplos:

matados2k@fortaleza:~$ mount /dev/cdrom1

matados2k@fortaleza:~$ ls /media/cdrom1/

autorun.inf devel dyne.png isolinux logo.png

ChangeLog dyne extras LICENSE.TXT README.TXT

CLICK_ME.HTM dynebolic-manual.pdf floppy linuxboot.cfg

default.xbe dynebol.ico gnulinux.png loadlin

matados2k@fortaleza:~$

No he tenido nada más que indicarle el dispositivo, y no sólo eso, sino que además he podido hacerlo como usuario normal ya que definí la opción 'user' para este dispositivo en mi fichero, permitiendo que cualquier usuario pueda montar la unidad (todas las opciones fueron ya explicadas en las entrega 25).

matados2k@fortaleza:~$ umount /media/cdrom1

matados2k@fortaleza:~$ mount /mnt/usb

matados2k@fortaleza:~$ ls /mnt/usb/

instalador Modserver2.sxw test1.jpg test3.jpg test5.jpg test7.jpg

Modserver2.pdf modserver.sxi test2.jpg test4.jpg test6.jpg test8.jpg

matados2k@fortaleza:~$ umount /dev/sde1

matados2k@fortaleza:~$

Podemos observar entonces que podemos montar y desmontar todo lo definido en /etc/fstab con sólo indicar su dispositivo o el directorio a montar. ¿No es estupendo? Y que desmontar sí sabíamos que se podía de ambas formas. Y además hemos visto que se puede hacer que otros usuarios monten unidades además de root, ya nos vamos acercando a una configuración ideal Wink.

Y si os fijáis, las 3 últimas líneas de mi fichero son las que montan las cosas que conecto al usb y al lector de tarjetas. ¿No sería lógico entonces añadirles la opción 'noauto' para que no intente añadirlas al principio? Pues sí, pero... podemos ver otra ventaja:

matados2k@fortaleza:~$ su

Password:

fortaleza:/home/matados2k# mount -a

mount: el dispositivo especial /dev/sda1 no existe

mount: el dispositivo especial /dev/sdc1 no existe

mount: el dispositivo especial /dev/sde1 no existe

fortaleza:/home/matados2k# mount -a

mount: el dispositivo especial /dev/sda1 no existe

mount: el dispositivo especial /dev/sdc1 no existe

fortaleza:/home/matados2k#

Vemos aquí una nueva opción de mount que es '-a', que intenta montar automáticamente todo lo definido en /etc/fstab si no lo estaba ya o no se le indica lo contrario con 'noauto', y como veis los 3 errores primeros son debidos a que no hay nada conectado (ya que los ha intentado montar por no tener puesto 'noauto'). Pero voy y pincho un pen usb, y mira por donde, no he tenido que preocuparme de más.

¡OJO!: La opción '-a' también existe para 'umount' y os podéis imaginar qué pasa ¿no?:

fortaleza:/home/matados2k# umount -a

umount: /dev: dispositivo ocupado

umount: /mnt/auxi1: dispositivo ocupado

umount: /usr: dispositivo ocupado

umount: /home: dispositivo ocupado

umount: /boot: dispositivo ocupado

umount: /: dispositivo ocupado

fortaleza:/home/matados2k# mount -a

mount: el dispositivo especial /dev/sda1 no existe

mount: el dispositivo especial /dev/sdc1 no existe

mount: el dispositivo especial /dev/sde1 no existe

fortaleza:/home/matados2k#

Pues sí, lo intenta desmontar todo, y gracias a Dios si algo está en uso no se desmonta y podemos volver a poner en funcionamiento todo con 'mount -a'.

Sigo con problemas, ni 'eject' hace que se me desmonte algo.

Pues si el dispositivo sabéis de sobra que no está ocupado, como ya explicamos en las entregas anteriores, sí que es un problema y es que algo pasa. Pero si para algo es bueno Linux es para encontrar la solución para todo. Por desgracia, los usuarios de KDE solíamos tener este problema más frecuentemente de lo que desearíamos, veamos cómo combatirlo:

matados2k@fortaleza:~$ umount /mnt/usb/

umount: /mnt/usb: dispositivo ocupado

umount: /mnt/usb: dispositivo ocupado

matados2k@fortaleza:~$

Esto es un problema, porque yo sé que no tengo ninguna aplicación abierta que lo use y que está inactivo, ya que mi pen usb tiene una lucecita que ahora está apagada. Algún proceso debe haberse quedado atontado mientras lo usaba, vamos a buscarlo:

matados2k@fortaleza:~$ su

Password:

fortaleza:/home/matados2k# lsof +D /mnt/usb

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

famd 7818 matados2k 89r DIR 8,65 16384 1 /mnt/usb

famd 7818 matados2k 92r DIR 8,65 4096 609 /mnt/usb/instalador

fortaleza:/home/matados2k#

Aquí tenemos nuestro culpable, sí señor, podéis señalarle con el dedo. Este comando no vamos a explicarlo ahora ni los siguientes que veamos, ya que son para una próxima serie de entregas, así que tenéis que hacer un acto de fe, ya sabéis que para encontrar el culpable es 'lsof +D aquí_dispositivo_o_directorio”.

Sólo puede quedar uno, forastero.

Ahora tendríamos que eliminar ese proceso, lo normal es que el que ahí sale sea el culpable, o sea 'famd', pero yo ya sé por experiencia que no lo es. Si lo eliminamos solucionaríamos el problema, y será así normalmente, pero eliminar un servicio como 'famd' ('man famd') puede traer otros problemas.

Así que como norma general el que nos muestre ese comando es el que tenemos que eliminar, pero hay casos como éste en que no es el verdadero culpable. ¿Eso quién te lo da? Pues simplemente la experiencia. Como sé que es problema de KDE y en concreto de un proceso llamado ' konqueror' que se ha quedado atontado (aunque ya lo haya cerrado), lo paso a eliminar buscándolo primero con otro comando del que también tendréis que hacer acto de fe:

fortaleza:/home/matados2k# ps aux

....

1000 8869 15.8 4.2 35996 21896 ? S 19:37 0:00 konqueror [kdei

1000 8870 0.2 2.0 24688 10404 ? S 19:37 0:00 kio_file [kdein

1000 8871 0.0 1.9 24320 10208 ? S 19:37 0:00 kio_devices [kd

root 8872 0.0 0.1 2780 912 pts/3 R+ 19:37 0:00 ps -aux

fortaleza:/home/matados2k#

De hecho yo sé que puede ser uno de estos 3 (ya me ha pasado muchas veces y la experiencia así me lo dice). Así que lo eliminamos (otro acto de fe):

fortaleza:/home/matados2k# kill 8869

fortaleza:/home/matados2k# umount /mnt/usb

fortaleza:/home/matados2k#

El número pasado a kill es el PID del proceso y nos lo indica tanto 'lsof +D' como 'ps aux' si os fijáis bien, tanto si hubiéramos matado 'famd' como este último solucionaríamos el problema y podríamos desmontar con seguridad nuestro pen usb.

Una es una forma más automática, y otra la dicta la experiencia de verse muchas veces con el problema, así que esto queda simplemente como ejemplo. Y una vez terminada esta serie de montado de unidades veremos con detalle estos comandos (mejor esto y poder intentar solucionar el problema que esperar a más adelante ¿no?).

A Dios pongo por testigo que si todo fallo, no me rendiré. A la desesperada.

Murphy es muy puñetero y aún así puede que la cosa se resista a desmontarse como Dios manda, si algo puede fallar ya se sabe que fallará y antes que volver a reiniciar nos queda un último intento:

umount -l [dispositivo|directorio]

Esta opción '-l' es que lo desmonte por narices y eso puede tener su riesgo, de hecho (por lo menos a mí) no viene documentado en 'man umount', pero siempre es un último recurso que nos puede solucionar la papeleta:

matados2k@fortaleza:~$ umount /mnt/usb/

umount: /mnt/usb: dispositivo ocupado

umount: /mnt/usb: dispositivo ocupado

matados2k@fortaleza:~$ umount -l /mnt/usb/

matados2k@fortaleza:~$

Con esto ya hemos visto todas las soluciones que yo conozco, siempre mejores que simplemente desconectar, con lo que damos por terminada esta espesa entrega.
En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #27 : Septiembre 30, 2007, 11:48:34 »

Entrega 27. Montando unidades (y IV).

    % sleep with me

    bad character

Automatizando.

Ahora llega el momento de saber cómo montar y desmontar de forma más cómoda y automática, esto para los puristas suele ser un problema de seguridad, pero en un ordenador para uso propio esto se traduce en facilidad.

Para conseguir automatizar nuestro montaje de unidades tenemos dos opciones importantes que son supermount y automount. El primero lo vamos a descartar por la sencilla razón de que hay que parchear el kernel y compilarlo (según estuve viendo, si me equivoco hacédmelo saber) en el caso de que no nos venga por defecto en nuestra distribución, con lo que queda un poco lejos del nivel del curso actualmente, mientras que el segundo lo podemos usar simplemente instalando un paquete.

Ya que con ambos vamos a conseguir lo que necesitamos, nos preparamos para usar automount.

Y antes de instalar, verificamos...

Ahora vamos a comprobar que nuestro kernel tiene soporte para automount de la siguiente forma:

fortaleza:/home/matados2k# cat /proc/filesystems

nodev sysfs

...

nodev mqueue

ext3

vfat

ntfs

nodev usbfs

nodev autofs

nodev binfmt_misc

fortaleza:/home/matados2k#

Con esto obtenemos un listado más o menos amplio de todos los sistemas de ficheros soportados en nuestro kernel, y buscaremos 'nodev autofs' , si lo tenemos pues estupendo, si no intentaremos lo siguiente:

fortaleza:/home/matados2k# modprobe autofs

FATAL: Error inserting autofs (/lib/modules/2.6.10-1-k7/kernel/fs/autofs/autofs.ko): Device or resource busy

fortaleza:/home/matados2k#

Modprobe es un comando para cargar módulos en el kernel, pero este es un tema que no tocaremos ahora. En mi caso fallo porque yo sí tengo ya autofs, si aún así seguís sin tenerlo lo mismo al instalar el paquete 'autofs' en el siguiente punto lo consigáis, en caso contrario deberíais compilar el kernel, con lo que tendréis que dejar esta entrega para un futuro.

Instalando.

En el caso de distribuciones basadas en Debian o con un port de apt-get simplemente necesitamos lo siguiente:

matados2k@fortaleza:~$ su

Password:

fortaleza:/home/matados2k# apt-get install autofs

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias... Hecho

0 actualizados, 1 se instalarán, 0 reinstalados, 0 para eliminar y 0 no actualizados.

Se necesita descargar 0B/106kB de archivos.

Se utilizarán 0B de espacio de disco adicional después de desempaquetar.

¿Desea continuar? [S/n] s

....

fortaleza:/home/matados2k#

En caso de usar rpm y no tengamos un port de apt-get, buscamos el paquete necesario en los cd's de nuestra distribución, llamado 'autofs' con alguna coletilla de versión, y en caso de no encontrarlo siempre podemos recurrir a la lista de direcciones que dimos en la entrega 19.

Ya estoy preparado, ¿y ahora qué?

Ya tenemos todo listo, y ahora veremos qué hay que configurar. Dependiendo de nuestra distribución de GNU/Linux se nos pueden haber instalado más o menos ficheros y directorios como pudiera ser '/misc', que en este caso si no vais a utilizarlo podéis eliminarlo (en mi caso no se ha creado).

Se nos hayan instalado unos u otros hay un fichero que es el que vamos a usar y el que configura lo que necesitamos: '/etc/auto.master'. En mi caso, su contenido por defecto es el siguiente:

#

# $Id: auto.master,v 1.4 2005/01/04 14:36:54 raven Exp $

#

# Sample auto.master file

# This is an automounter map and it has the following format

# key [ -mount-options-separated-by-comma ] location

# For details of the format look at autofs(5).

#/misc/etc/auto.misc --timeout=60

#/smb/etc/auto.smb

#/misc/etc/auto.misc

#/net/etc/auto.net

No hay definido nada, es más, está todo comentado (todo lo que aparezca detrás de una '#' es un comentario, por lo cual no tendrá efecto alguno). En este fichero definiremos todos los directorios que queramos que tengan sistemas de ficheros automontados, de la siguiente forma:

Directorio Fichero_De_Configuración [--timeout X]

En 'Directorio' añadimos el directorio que vamos a gestionar con automount, y mucho cuidado, porque todos los subdirectorios definidos dentro ya no serán visibles, más que nada por si se os ocurre decir /mnt y queréis tener sistemas que no montara automount.

En 'Fichero_De_Configuración' le indicamos en qué fichero de configuración definiremos las opciones con las que debe ser montado.

Y por último y opcionalmente '--timeout X', donde X será el tiempo en segundos que pasará un sistema sin usarse antes de ser desmontado automáticamente. Por defecto, si no se indica nada creo que está definido para 5 minutos.

Pero, ¿qué es conveniente y no conveniente que se automonte? Pues yo os aconsejaría que sólo los dispositivos removibles como disquetes, cd-roms, dvd, pen usb ... pero podéis poner lo que queráis. Sin embargo, si hay una partición que se mira de higos a brevas puede ser una buena idea que se automonte cuando se necesite (un dispositivo se monta en el momento que se intenta acceder a él) en vez de estar montado siempre. Así liberaríamos recursos.

En mi caso voy a preparar mi grabadora de cd's ,mi dvd y mi pen usb, y usaré mi directorio /media para ello, así que me defino lo siguiente:

/media/cdrom0 /etc/auto.cdrom0 --timeout 15

/media/cdrom1 /etc/auto.cdrom1 --timeout 15

/media/usb /etc/auto.usb –-timeout 5

o bien

/media /etc/auto.media --timeout 5

En la primera opción defino los directorios por separado con un fichero de configuración para cada uno, y en el segundo defino un directorio base y en el fichero de configuración 'auto.media' definiré los directorios. Para quienes quieran montar bajo '/mnt' sin cargarse el resto de los sistemas no gestionados por autofs mejor que usen la primera opción, yo optaré por la segunda.

Ahora debemos crear los ficheros de configuración definidos, como he optado por la segunda sólo deberé crear uno '/etc/auto.media', en él definiremos cada directorio dentro de '/media', y cómo será montada y su dispositivo (para la primera opción el nombre del directorio sin la ruta, cómo será montada y su dispositivo).

El formato de la línea es el siguiente:

Directorio [-opciones] :dispositivo

En mi caso queda de la siguiente forma:

cdrom0 -fstype=auto,ro,user,noauto :/dev/hdc

cdrom1 -fstype=auto,ro,user,noauto :/dev/hdd

usb -fstype=vfat,rw,user,umask=0 :/dev/sde1

Con lo que observamos que no hace falta la ruta, para indicar el tipo de fichero usamos '-fstype=' y el resto de opciones separadas por comas son las mismas que el comando mount, estupendo.

Y para finalizar...

Ya sólo nos queda comentar las líneas de nuestro '/etc/fstab' referentes a lo definido para autofs, y reiniciar autofs de la siguiente forma:

fortaleza:/home/matados2k# /etc/init.d/autofs restart

Stopping automounter: done.

Starting automounter: done.

fortaleza:/home/matados2k#

Esto lo veremos próximamente por lo que no explicaré ahora qué es lo que realmente he hecho. Y a probarlo Cheesy

fortaleza:/home/matados2k# exit

exit

matados2k@fortaleza:~$ cd /media/usb

matados2k@fortaleza:/media/usb$ ls

Archivo de texto

Archivo de texto~

...

matados2k@fortaleza:/media/usb$ cd /media/cdrom1

matados2k@fortaleza:/media/cdrom1$ ls

autorun.inf devel dyne.png isolinux logo.png

ChangeLog dyne extras LICENSE.TXT README.TXT

CLICK_ME.HTM dynebolic-manual.pdf floppy linuxboot.cfg

default.xbe dynebol.ico gnulinux.png loadlin

matados2k@fortaleza:/media/cdrom1$

Perfecto Smiley. Pero tened en cuenta que si no definís tiempo de desmontado, tendréis que esperar el tiempo por defecto o desmontar a mano desde root. Si teníais en vuestro escritorio accesos directos a vuestros dispositivos mediante el '/etc/fstab' (como en KDE ) debéis sustituirlos por accesos a los directorios y si ponéis un tiempo bajo como 5 seg de desmontado tendréis que esperar muy poco para sacar el dispositivo sin riesgo. Chúpate esa, 'Desconectar con seguridad' (Windows).

Pero aún tengo una píldora más para vosotros, montemos imágenes *.iso

Ya hemos visto todo lo necesario de esta serie para el montado y desmontado de unidades, pero por qué no aprovechar y aprender a montar esas imágenes que nos bajamos o creamos nosotros mismos en formato 'iso' sin herramientas auxiliares y con el comando 'mount' (anda, esto creo que Windows no lo hace por sí mismo).

Para ello necesitamos tener en el kernel una cosa llamada “soporte loopback” activada (normalmente estará), así que si no os funciona ya sabéis que no podréis por este motivo, hasta que aprendamos a compilarnos nuestro propio kernel.

Empezamos creándonos una imagen '.iso' de un cd nuestro, sin anticopia, por supuesto (más que nada porque se os puede quedar la unidad leyendo indefinidamente, y al cabo de un tiempo sacar el cd/dvd tan caliente que podréis moldearlo y crear arte contemporáneo).

matados2k@fortaleza:~$ cat /dev/hdd > mycd.iso

matados2k@fortaleza:~$

¿Cómo? ¿Con un simple cat a un dispositivo óptico redirecconado a un fichero, obtenemos una imagen iso? Esto es la leche.

Pues bien, ahora ya sólo nos queda usar el comando 'mount' de la siguiente forma:

mount -t iso9660 -o loop fichero.iso /ruta/montaje

Y veamos cómo me funcionó a mí:

matados2k@fortaleza:~$ cd curso

matados2k@fortaleza:~/curso$ mkdir iso

matados2k@fortaleza:~/curso$ su

Password:

fortaleza:/home/matados2k/curso# mount -t iso9660 -o loop ../mycd.iso ./iso

fortaleza:/home/matados2k/curso# cd iso

fortaleza:/home/matados2k/curso/iso# ls

autorun.inf devel dyne.png isolinux logo.png

ChangeLog dyne extras LICENSE.TXT README.TXT

CLICK_ME.HTM dynebolic-manual.pdf floppy linuxboot.cfg

default.xbe dynebol.ico gnulinux.png loadlin

fortaleza:/home/matados2k/curso/iso#
En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #28 : Septiembre 30, 2007, 11:49:24 »

Entrega 28. Monitorización y eliminación de procesos.

    % rm God

    rm: God nonexistent

Introducción.

Ya vimos en las entregas 8 y 9 el control de tareas, ahora aprenderemos más sobre cómo monitorizarlas, saber en qué estado se encuentran, cuáles consumen más y cómo eliminarlas.

Cuando ejecutamos una aplicación, lo que hace el sistema es arrancar un proceso que es el que va a usar cpu y los recursos como la memoria, y que en definitiva, compone la aplicación. Una aplicación puede ejecutar muchos procesos distintos, por lo que podríamos decir para simplificarlo que la aplicación es lo que nosotros vemos y los procesos lo que hace posible la aplicación.

Muchas veces la correspondencia es una aplicación = un proceso, pero no tiene por qué ser así, como por ejemplo grandes servidores como apache que pueden tener varios procesos prestando servicio. Empezaremos como siempre por la consola y terminaremos en las siguientes entregas con las distintas posibilidades gráficas para hacer lo mismo.

Echemos un vistazo.

Lo primero que necesitamos es una herramienta para ver qué procesos están corriendo en nuestro sistema, y para ello qué herramienta mejor que:

ps [opciones]

Este comando informa del estado de los procesos en nuestra máquina, que como casi siempre pasa con otros comandos, tiene más opciones que las que vemos y formas de usarlo, así que pasamos a usarlo sin opciones:

matados2k@fortaleza:~$ ps

PID TTY TIME CMD

9951 pts/4 00:00:00 bash

9955 pts/4 00:00:00 ps

matados2k@fortaleza:~$

Vemos que nos muestra información sólo de los procesos propios que se están controlados por algún terminal, y uno es bash, que no es más que el intérprete de comandos, y 'ps', que se ve a sí mismo y se muestra. Vemos también varias columnas, la más importante es PID, que nos muestra el identificador de proceso (este es único), TTY indica en qué terminal se está ejecutando, pts indica que es una consola virtual y el número (tengo unas 5 abiertas ahora mismo), TIME es el tiempo que están consumiendo, y CMD indica a qué ejecutable pertenece y cómo fue invocado.

Pero esto sabe a poco y quiero saber los procesos de los otros usuarios, no solo los míos, y para eso necesito la opción 'a':

matados2k@fortaleza:~$ ps a

PID TTY STAT TIME COMMAND

8014 tty1 Ss+ 0:00 /sbin/getty 38400 tty1

8015 tty2 Ss+ 0:00 /sbin/getty 38400 tty2

8016 tty3 Ss+ 0:00 /sbin/getty 38400 tty3

8017 tty4 Ss+ 0:00 /sbin/getty 38400 tty4

8018 tty5 Ss+ 0:00 /sbin/getty 38400 tty5

8019 tty6 Ss+ 0:00 /sbin/getty 38400 tty6

8713 pts/2 Ss+ 0:00 /usr/bin/kdesu_stub -

9826 pts/3 Ss 0:00 /bin/bash

9830 pts/3 S+ 0:00 man ps

9837 pts/3 S+ 0:00 sh -c /usr/bin/zsoelim /tmp/zmantCBzr4 | /usr/bin/tbl

9842 pts/3 S+ 0:00 /usr/bin/pager -s

10187 pts/5 Ss 0:00 /bin/bash

10442 pts/5 R+ 0:00 ps a

matados2k@fortaleza:~$

Ya ahora en TTY nos aparece tty, que no es más que los terminales que no están bajo X que tenemos en nuestro ordenador, y STAT nos indica en qué estado se encuentra el proceso, pudiendo ser los siguientes:

R para preparado para ejecución (runnable)

S para durmiendo (sleeping)

D para indicar letargo ininterrumpible (uninterruptible sleep)

T para parado o trazado (traced)

Z para un proceso zombie.

La letra pequeña de STAT se muestra si hay páginas residentes en memoria, que de momento no nos interesa, y un signo que indica si un proceso tiene prioridad positiva o negativa. Un proceso duerme cuando está esperando algo (vamos a explicarlo todo de forma muy simplificada), si está con D es porque está dormido y no se le puede interrumpir, parado cuando por ejemplo se esta depurando un programa, o zombie cuando ha muerto pero otro proceso tiene que recoger datos que generó.

Ahora sabemos más cosas, pero no sabemos a quién leches pertenecen esos procesos, y eso no puede ser, opción 'u':

matados2k@fortaleza:~$ ps au

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 8014 0.0 0.0 1500 484 tty1 Ss+ 17:06 0:00 /sbin/getty 384

root 8015 0.0 0.0 1500 484 tty2 Ss+ 17:06 0:00 /sbin/getty 384

root 8016 0.0 0.0 1500 484 tty3 Ss+ 17:06 0:00 /sbin/getty 384

root 8017 0.0 0.0 1500 484 tty4 Ss+ 17:06 0:00 /sbin/getty 384

root 8018 0.0 0.0 1500 484 tty5 Ss+ 17:06 0:00 /sbin/getty 384

root 8019 0.0 0.0 1500 484 tty6 Ss+ 17:06 0:00 /sbin/getty 384

root 8713 0.0 0.1 1692 572 pts/2 Ss+ 17:19 0:00 /usr/bin/kdesu_

1000 9826 0.0 0.3 3132 1756 pts/3 Ss 17:39 0:00 /bin/bash

1000 9830 0.0 0.2 2436 1408 pts/3 S+ 17:39 0:00 man ps

1000 9837 0.0 0.2 2756 1236 pts/3 S+ 17:39 0:00 sh -c /usr/bin/

1000 9842 0.0 0.1 1848 652 pts/3 S+ 17:39 0:00 /usr/bin/pager

1000 10187 0.0 0.3 3132 1756 pts/5 Ss 17:49 0:00 /bin/bash

1000 10979 0.0 0.1 2784 904 pts/5 R+ 18:12 0:00 ps au

matados2k@fortaleza:~$

Ya lo tenemos, pero ahora vemos más información: %CPU que nos indica qué porcentaje de procesador está usando, %MEM lo mismo pero con la memoria, VSZ que nada tiene que ver con las siglas de un nuevo deportivo sino del tamaño virtual del proceso en kbytes , RSS el tamaño que ocupa en memoria en kbytes y START la hora en la que comenzó.

Perfecto, nos estamos haciendo unos pequeños expertos, pero seguro que hay algo que se nos escapa, seguro que hay mucho más procesos que no están bajo la supervisión de ningún terminal. Usemos la opción 'x':

matados2k@fortaleza:~$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 1504 512 ? S 17:05 0:00 init [2]

root 2 0.0 0.0 0 0 ? SN 17:05 0:00 [ksoftirqd/0]

.....

1000 10187 0.0 0.3 3132 1756 pts/5 Ss 17:49 0:00 /bin/bash

1000 11442 0.0 0.0 0 0 ? Z 18:27 0:00 [pla]

1000 11784 0.0 0.1 2784 904 pts/5 R+ 18:37 0:00 ps aux

matados2k@fortaleza:~$

La hemos acortado porque suele ser larguísima, así que ya podéis hacer uso de las pipes y combinarla con 'more' o 'less' para poderla leer tranquilamente.

La lista de los que más consumen.

Si nuestra intención es saber qué procesos son los que más consumen, el comando 'ps aux' se nos hace muy largo y pesado para ir comprobando uno a uno, para esto tenemos comandos mejores:

top [d intervalo]

Este comando nos muestra de forma interactiva los procesos que más consumen, refrescando la lista cada 5 segundos normalmente, y tiene opciones que no veremos. Pasemos a ejecutarlo entonces:

matados2k@fortaleza:~$ top

top - 18:55:38 up 1:50, 1 user, load average: 0.14, 0.15, 0.12

Tasks: 102 total, 2 running, 97 sleeping, 1 stopped, 2 zombie

Cpu(s): 4.9% us, 1.0% sy, 0.0% ni, 93.1% id, 0.9% wa, 0.0% hi, 0.0% si

Mem: 516352k total, 491352k used, 25000k free, 29788k buffers

Swap: 530100k total, 2236k used, 527864k free, 212980k cached



PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

8027 root 15 0 94596 16m 3436 S 5.9 3.2 2:02.48 XFree86

9129 matados2 15 0 26864 14m 3828 S 2.0 2.9 0:39.40 wish

1 root 16 0 1504 512 452 S 0.0 0.1 0:00.47 init

2 root 34 19 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/0

3 root 5 -10 0 0 0 S 0.0 0.0 0:00.16 events/0

4 root 9 -10 0 0 0 S 0.0 0.0 0:00.01 khelper

16 root 15 -10 0 0 0 S 0.0 0.0 0:00.00 kacpid

97 root 5 -10 0 0 0 S 0.0 0.0 0:00.09 kblockd/0

131 root 15 0 0 0 0 S 0.0 0.0 0:00.00 pdflush

132 root 15 0 0 0 0 S 0.0 0.0 0:00.00 pdflush

134 root 14 -10 0 0 0 S 0.0 0.0 0:00.00 aio/0

133 root 15 0 0 0 0 S 0.0 0.0 0:00.03 kswapd0

721 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kseriod

1023 root 15 0 0 0 0 S 0.0 0.0 0:00.02 kjournald

1074 root 14 -4 1492 460 400 S 0.0 0.1 0:00.12 udevd

2728 root 19 0 0 0 0 S 0.0 0.0 0:00.00 kjournald

2729 root 15 0 0 0 0 S 0.0 0.0 0:00.01 kjournald

matados2k@fortaleza:~$

Para salir de 'top' pulsamos la tecla 'q' o Ctrl+C . Vemos ahora nueva información que os dejo como tarea para que la averigüéis vosotros.

Vamos a eliminar.

Ya vimos en las entregas 8 y 9 cómo usar el comando kill, ya sea por PID o el número de tarea. Realmente 'kill' lo que hace es enviar una señal a un proceso y de momento sólo nos interesan las de eliminación, como son la señal número 9 (SIGKILL) y la 15 (SIGTERM). La primera hace que un proceso termine inmediatamente, y la segunda le da oportunidad de terminar ordenadamente, esta ultima puede ser ignorada por el proceso.

Nosotros usaremos kill de la siguiente forma:

kill [-NUMERO|NOMBRE SEÑAL] NºTAREA | PID

Con lo cual podemos especificar la señal, ya sea por su número o su nombre y luego el proceso de 1 de las 2 formas, normalmente usaremos su PID para evitar confusiones, normalmente sacados con 'ps'.

Veamos un simple ejemplo:

matados2k@fortaleza:~$ yes > /dev/null&

[1] 10073

matados2k@fortaleza:~$ ps aux | grep yes

1000 10073 95.2 0.0 1784 436 pts/4 R 20:31 0:14 yes

1000 10082 0.0 0.1 2044 764 pts/4 R+ 20:32 0:00 grep yes

matados2k@fortaleza:~$ kill -15 10073

matados2k@fortaleza:~$

Preferiremos matar antes con 15, y si no respondiera a esa señal usaríamos 9. Como esto ya es algo que estaba visto por encima, lo damos por repasado.

Voy a matarlos a todos.

Imaginemos que una aplicación crea muchos procesos con el mismo nombre, ir PID por PID para eliminarlos puede ser una larga y dura tarea, necesitamos una herramienta para 'matar' en masa y para ello tenemos lo siguiente, usándolo de la siguiente forma:

killall [-NUMERO|NOMBRE SEÑAL] nombre

Vamos a crearnos muchos procesos del maravilloso e inútil comando 'yes', y como son muchos y cobardes y nosotros perezosos e ingeniosos, los eliminaremos de una sola vez:

matados2k@fortaleza:~$ yes > /dev/null&

[1] 10539

....

matados2k@fortaleza:~$ yes > /dev/null&

[20] 10561

matados2k@fortaleza:~$ killall -15 yes

matados2k@fortaleza:~$ ps aux | grep yes

1000 10578 0.0 0.1 2044 768 pts/4 S+ 20:44 0:00 grep yes

[1] Terminado yes >/dev/null

[2] Terminado yes >/dev/null

....

[20]+ Terminado yes >/dev/null

matados2k@fortaleza:~$ ps aux | grep yes

1000 10588 0.0 0.1 2044 764 pts/4 R+ 20:45 0:00 grep yes

matados2k@fortaleza:~$

Como vemos, nos hemos cargado 20 procesos de 'yes' de forma ordenada, simplemente con su nombre Smiley, somos unos fieros sanguinarios.

En línea

yako
Ole Ole
Administrador
Top Level
*

Reputacion 1080
Sexo: Masculino
Mensajes: 3805
Registro: 08/10/05

Gracias
-Dadas: 33
-Recibidas: 1625



WWW Email
« Respuesta #29 : Septiembre 30, 2007, 11:52:13 »

Entrega 29. Monitorización y eliminación de procesos (y II).

    % man you

    No manual entry for you

Continuando.

En esta última entrega de la serie de monitorización vamos a ver qué opciones gráficas tenemos para monitorizar y eliminar procesos, como ya dije en la anterior entrega.

Veamos de qué podemos disponer:

    * Guardián del Sistema KDE (ksysguard)
    * Monitor del sistema (GNOME) (gnome-system-monitor)

Vamos a ver solamente estas dos, ya que son las de los principales escritorios, si bien es posible usar la de GNOME en KDE y viceversa, incluso desde otro entornos. Podéis buscarlo en el menú de vuestra distribución favorita, pues aunque puede cambiar de unas a otras suelen estar en los menús referentes a la administración o al sistema. En el caso de Debian, que es la que yo uso, las encontramos desde KDE dentro de menú Sistema y en GNOME seguramente estarán en Debian>Aplicaciones>Sistema. En caso de que no las encontréis probad a ejecutarlas en consola con el nombre que os puse entre paréntesis.

Guardián del sistema KDE.

Este es el primero que vamos a ver, y su aspecto es el siguiente:



Tenemos en la pestaña “Tabla de procesos” todo lo que conseguimos con el comando 'ps' de la entrega anterior, y además podemos ordenarla por correspondencia padre->hijo, marcando la casilla de árbol.



Os acordáis de las opciones de 'ps', 'a','u' y 'x', pues las tenemos en el desplegable de al lado:



Y para eliminar un proceso fácilmente, hacemos una selección como si fueran ficheros y pulsamos en matar, o si quisiéramos mandarle cualquier otra señal seleccionamos y pulsamos el botón derecho del ratón:



Monitor del sistema.

Ahora nos centraremos en nuestra otra opción, también igual de sencilla y útil que la ya vista. Nada más arrancar nos encontramos con lo siguiente:



Como observamos, ya por defecto nos sale en forma de árbol, por lo que para quitar esto debemos irnos al menú ver y deseleccionar “Dependencias del proceso”:





Las opciones similares al comando 'ps' las tenemos en el botón desplegable de arriba a la derecha:



Al igual que con la aplicación anterior, podemos matar uno o varios procesos realizando una selección, pero en este caso nuestro botón se llama “Finalizar proceso”. En este caso no podemos mandarle cualquier otro tipo de señal, y para ver más información de los procesos debemos hacerlo explícitamente activando el botón “Más info” y seleccionando un proceso:


En línea

Páginas: 1 [2] 3   Ir Arriba
  Imprimir  
 
Ir a:  



Scenespain.net © 2006-2010
Powered by SMF 1.1.15 | SMF © 2006-2009, Simple Machines
SimplePortal 2.3.1 © 2008-2009, SimplePortal
  • carberator
  • awareness
  • cheap ativan pharmacy online
  • raul
  • ultram ultram a a href
  • spoken
  • bactrim and symptom relief from uti
  • beckham
  • compare generic price viagra
  • jorge
  • augmentin sinusitis
  • prozac and strattera
  • novedex versus nolvadex
  • doxycycline treatment for rheumatoid arthritis
  • cut cialis 20mg
  • what does levitra looks like
  • canine medications anxiety ativan
  • lasix does what
  • side effectives of lipitor
  • recovered
  • orthostatic hypotension and norvasc
  • peripheral neuropathy from flagyl
  • inject ativan
  • cialis compare levitra viagra good
  • zoloft norvasc interaction
  • dose of zithromax for tinnitus media
  • severe headache when taking bactrim
  • lasix lisinopril
  • buspar with zoloft awesome
  • dui charges dropped valium
  • drug generic propecia
  • online overnight phentermine tenuate
  • flagyl mechanism of action
  • kirkland
  • lorazepam vs ativan
  • how does vicodin react with seraquel
  • nolvadex women
  • norvasc metallic taste in mouth
  • lasix and potassium level
  • impulse female viagra
  • slow pulse rate norvasc
  • papoose
  • cialis and diabetes
  • can i give dog augmentin
  • phentermine next day ship
  • doxycycline in pregnancy risks
  • arena
  • order zithromax
  • zoloft causing fatigue
  • bactrim antibiotic dosage
  • action augmentin class
  • discount us propecia
  • inheritance
  • enzyte compared to viagra
  • centerpiece
  • does lasix interact with digoxin
  • pharmacy purchase zithromax
  • is viagra effective for hypertension
  • hollywood cialis
  • jambalaya
  • beginner
  • xanax dont take with
  • buy soma online free shipping
  • phentermine aciphex imitrex
  • duke
  • ultram 65 90 white pill
  • quart
  • prozac for peri menopause
  • wellness
  • prednisone and stopping it to soon
  • elavil effexor and alcohol
  • agitation and prednisone
  • 3 levitra linktrim
  • bosnia
  • cialis viagra levitra pump
  • generic viagra drugstore india
  • doxycycline side effect mental
  • tramadol cod
  • medications with similar effect to bactrim
  • viagra or other substitute
  • diverticulitis augmentin clindamycin
  • neuromuscular degeneration and lipitor
  • zoloft lightheadedness
  • cialis recomendation
  • survey 2c 240 42 ultram
  • prednisone selegaline
  • directions on using cialis
  • nolvadex what it smells like
  • sloan
  • effects prevacid prilosec side
  • oswego
  • biology
  • phentermine with no precription
  • take prilosec zantac time
  • bongs
  • prozac and dxm
  • vicodin addiction online help
  • elavil faq zeneca