Diferencia entre revisiones de «Administración de software»
(library != librería, library = biblioteca) |
Sin resumen de edición |
||
(No se muestran 5 ediciones intermedias de otro usuario) | |||
Línea 1: | Línea 1: | ||
En este apartado se mostrarán los principios escenciales para manejar el software de la computadora en un sistema GNU/Linux derivado de Debian. | En este apartado se mostrarán los principios escenciales para manejar el software de la computadora en un sistema GNU/Linux derivado de Debian. | ||
El software de la computadora se maneja en lo que se llaman paquetes que contienen los'''binarios del programa''', es decir el código máquina que le dice a la computadora qué hacer para que el programa funcione. Los programas generalmente se "empaquetan" para hacer más fácil su distribución. | El software de la computadora se maneja en lo que se llaman paquetes que contienen los '''binarios del programa''', es decir el código máquina que le dice a la computadora qué hacer para que el programa funcione. Los programas generalmente se "empaquetan" para hacer más fácil su distribución. | ||
Existen también paquetes de software que contiene el '''código fuente''' del programa, que contiene las instrucciones en lenguajes de programación desde las cuales se construyen los '''binarios del programa '''para que este pueda ejecutarse. | Existen también paquetes de software que contiene el '''código fuente''' del programa, que contiene las instrucciones en lenguajes de programación desde las cuales se construyen los '''binarios del programa '''para que este pueda ejecutarse. | ||
Línea 60: | Línea 60: | ||
<code>dpkg</code> es el programa base del sistema manejador de paquetes Debian, con <code>dpkg</code> se realiza la '''instalación, desinstalación, actualización, etc''' de los paquetes de software <code>.deb</code>. Se maneja vía ''línea de comandos'' por lo que se considera una herramienta de bajo nivel. | <code>dpkg</code> es el programa base del sistema manejador de paquetes Debian, con <code>dpkg</code> se realiza la '''instalación, desinstalación, actualización, etc''' de los paquetes de software <code>.deb</code>. Se maneja vía ''línea de comandos'' por lo que se considera una herramienta de bajo nivel. | ||
dpkg puede abrirse desde una terminal siguiendo la siguiente sintaxis: | dpkg puede abrirse desde una terminal siguiendo la siguiente sintaxis: <source lang="bash">dpkg [opciones] [acción] ["nombre del paquete" ó "nombre de los archivos .deb"] </source> <code>dpkg</code> tiene muchas opciones que no describiremos aquí, pero para verlas basta con escribir en una terminal: <source lang="bash">$ dpkg --help</source> ó <source lang="bash">$ man dpkg</source> <code>dpkg –help</code> mostrará una ayuda rápida con opciones y acciones brevemente explicadas y <code>man dpkg</code> abrirá el manual de dpkg detallado. | ||
< | |||
<code>dpkg</code> tiene muchas opciones que no describiremos aquí, pero para verlas basta con escribir en una terminal: | |||
< | |||
ó | |||
< | |||
<code>dpkg –help</code> mostrará una ayuda rápida con opciones y acciones brevemente explicadas y <code>man dpkg</code> abrirá el manual de dpkg detallado. | |||
Por ejemplo si obtenemos el paquete <code>codeblocks_10.05-2_i386.deb</code> correspondiente al editor codeblocks 10.05 y queremos instalarlo en nuestra PC seguimos los siguientes pasos: | Por ejemplo si obtenemos el paquete <code>codeblocks_10.05-2_i386.deb</code> correspondiente al editor codeblocks 10.05 y queremos instalarlo en nuestra PC seguimos los siguientes pasos: | ||
#<div class="li">Abrimos una terminal y nos “pocisionamos” (cd) en la carpeta donde está este paquete.</div> | #<div class="li">Abrimos una terminal y nos “pocisionamos” (cd) en la carpeta donde está este paquete.</div> | ||
#<div class="li">Escribimos en la terminal:< | #<div class="li">Escribimos en la terminal:</div> | ||
<source lang="bash">$ sudo dpkg --install codeblocks_10.05-2_i386.deb</source> | |||
y escribimos la contraseña de superusuario. | y escribimos la contraseña de superusuario. | ||
Línea 95: | Línea 91: | ||
==== apt-cache<br/> ==== | ==== apt-cache<br/> ==== | ||
<div class="level4"> | <div class="level4"> | ||
si sólo queres información de un paquete a instalar <code>apt-cache esta diseñado para eso</code> por que usa el caché del sistema manejador de paquetes, este programa se abre vía línea de comandos y su sintaxis es: | si sólo queres información de un paquete a instalar <code>apt-cache esta diseñado para eso</code> por que usa el caché del sistema manejador de paquetes, este programa se abre vía línea de comandos y su sintaxis es: <source lang="bash"> apt-cache [opciones] paq1 [paq2 ...] | ||
< | </source> Donde <code>paq</code> es el paquete que pueden ser varios separados por un espacio. Las opciones escenciales de <code>apt-cache</code> son: | ||
Donde <code>paq</code> es el paquete que pueden ser varios separados por un espacio. Las opciones escenciales de <code>apt-cache</code> son: | |||
*<div class="li"><code>showpkg</code> → Muestra información del paquete.</div> | *<div class="li"><code>showpkg</code> → Muestra información del paquete.<br/></div> | ||
*<div class="li"><code>stats</code> → Muestra estadísticas del paquete como cuantas dependencias ya están instaladas y | *<div class="li"><code>stats</code> → Muestra estadísticas del paquete como cuantas dependencias ya están instaladas y otras.<br/></div> | ||
*<div class="li"><code>unmet</code> → Busca y muestra las dependencias faltantes.</div> | *<div class="li"><code>unmet</code> → Busca y muestra las dependencias faltantes.<br/></div> | ||
**<div class="li">Por ejemplo:< | **<div class="li">Por ejemplo:<source lang="bash">$ apt-cache unmet samba </source></div> | ||
que muestra: | que muestra: | ||
Línea 110: | Línea 104: | ||
Reemplaza: samba-common:i386 (<= 2.0.5a-2) | Reemplaza: samba-common:i386 (<= 2.0.5a-2) | ||
</pre></div> | </pre></div> | ||
*<div class="li"><code>pkgnames</code> → Muestra todos los nombres de paquetes, si seguido de <code>pkgnames</code> se escribe un párametro como por ejemplo< | *<div class="li"><code>pkgnames</code> → Muestra todos los nombres de paquetes, si seguido de <code>pkgnames</code> se escribe un párametro como por ejemplo <source lang="bash">$ apt-cache pkgnames recor</source><br/></div> | ||
monstrará todos los paquetes que empiezan con ese parámetro, en este caso mostró: | monstrará todos los paquetes que empiezan con ese parámetro, en este caso mostró: | ||
Línea 125: | Línea 119: | ||
<code>apt-get</code> tiene una larga lista de opciones que se pueden ver rápidamente escribiendo <code>apt-get -h</code> o <code>man apt-get</code>. | <code>apt-get</code> tiene una larga lista de opciones que se pueden ver rápidamente escribiendo <code>apt-get -h</code> o <code>man apt-get</code>. | ||
Si queremos instalar el programa <code>filezilla</code> que es un gestor | Si queremos instalar el programa <code>filezilla</code> que es un gestor FTP usando <code>apt-get</code> deberíamos escribir lo siguiente: <source lang="bash">$ sudo apt-get install filezilla </source> Como a se sabe no se puede instalar o desinstalar progras sin ser superusuario por eso <code>sudo</code>. | ||
< | |||
Como a se sabe no se puede instalar o desinstalar progras sin ser superusuario por eso <code>sudo</code>. | |||
Lo que esta ordén hace es indicarle a <code>apt-get</code> que instale el programa filezilla, pero a diferencia de <code>dpkg</code>, al encontrar dependencias faltantes <code>apt-get</code> las buscará en los repositorios de <code>/etc/apt/sources.list</code>. Una vez las encuentre, procederá a '''descargar''' el paquete junto a todas sus dependencias faltantes. Una vez descargue las dependencias se procederá a la instalación del programa. | Lo que esta ordén hace es indicarle a <code>apt-get</code> que instale el programa filezilla, pero a diferencia de <code>dpkg</code>, al encontrar dependencias faltantes <code>apt-get</code> las buscará en los repositorios de <code>/etc/apt/sources.list</code>. Una vez las encuentre, procederá a '''descargar''' el paquete junto a todas sus dependencias faltantes. Una vez descargue las dependencias se procederá a la instalación del programa. | ||
Línea 133: | Línea 125: | ||
Al terminar todo este proceso, tendremos el programa en este caso <code>filezilla</code> instalado y listo para usar todo con una simple línea. | Al terminar todo este proceso, tendremos el programa en este caso <code>filezilla</code> instalado y listo para usar todo con una simple línea. | ||
Para desinstalar un programa también podemos usar <code>apt</code> con la opción remove así: | Para desinstalar un programa también podemos usar <code>apt</code> con la opción remove así: <source lang="bash">$ sudo apt-get remove filezilla</source> Que desinstalará <code>filezilla</code>. | ||
< | |||
Que desinstalará <code>filezilla</code>. | |||
=== Synaptic<br/> === | === Synaptic<br/> === | ||
Synaptic es un programa GUI (con interfaz gráfica de usuario) al igual que <code>apt</code> resuelve dependencias y facilita el proceso de instalación. Como <code>apt</code>, <code>snynaptic</code> busca los paquetes en la lista de repositorios especificada en <code>/etc/apt/sources.list</code>. Si synaptic no está instalado hay que hacerlo primero con | Synaptic es un programa GUI (con interfaz gráfica de usuario) al igual que <code>apt</code> resuelve dependencias y facilita el proceso de instalación. Como <code>apt</code>, <code>snynaptic</code> busca los paquetes en la lista de repositorios especificada en <code>/etc/apt/sources.list</code>. Si synaptic no está instalado hay que hacerlo primero con <source lang="bash">$ sudo apt-get install synaptic</source> La interfaz de Synaptic es así: | ||
< | |||
La interfaz de Synaptic es así: | |||
[[File:Synaptic1.jpg|none|Synaptic1.jpg]] | [[File:Synaptic1.jpg|none|Synaptic1.jpg]] | ||
Línea 174: | Línea 162: | ||
Se trata de modificar el origen o repositorios oficiales según nuestra necesidad. Puede darse el caso que por ejemplo se este utilizando una una versión no actual de una distribución. Al instalar GNU/Linux el archivo <code>/etc/apt/sources.list</code> viene escrito con una lista de repositorios oficiales por defecto de la versión de la distribución. Si por alguna razón estos repositorios ya no tienen soporte o no se actualizan con la rapidez que buscamos podemos hacer '''añadir''' a <code>/etc/apt/sources.list</code> otra lista de repositorios para que busque determinados paquetes. | Se trata de modificar el origen o repositorios oficiales según nuestra necesidad. Puede darse el caso que por ejemplo se este utilizando una una versión no actual de una distribución. Al instalar GNU/Linux el archivo <code>/etc/apt/sources.list</code> viene escrito con una lista de repositorios oficiales por defecto de la versión de la distribución. Si por alguna razón estos repositorios ya no tienen soporte o no se actualizan con la rapidez que buscamos podemos hacer '''añadir''' a <code>/etc/apt/sources.list</code> otra lista de repositorios para que busque determinados paquetes. | ||
Por ejemplo este es el contenido del archivo <code>sources.list</code> que viene por defecto en la distribución Trisquel mini 6.0: | Por ejemplo este es el contenido del archivo <code>sources.list</code> que viene por defecto en la distribución Trisquel mini 6.0: <source lang="bash"># Trisquel repositories for supported software and updates | ||
< | |||
deb http://us.archive.trisquel.info/trisquel/ toutatis main | deb http://us.archive.trisquel.info/trisquel/ toutatis main | ||
Línea 182: | Línea 169: | ||
deb-src http://us.archive.trisquel.info/trisquel/ toutatis-security main | deb-src http://us.archive.trisquel.info/trisquel/ toutatis-security main | ||
deb http://us.archive.trisquel.info/trisquel/ toutatis-updates main | deb http://us.archive.trisquel.info/trisquel/ toutatis-updates main | ||
deb-src http://us.archive.trisquel.info/trisquel/ toutatis-updates main</ | deb-src http://us.archive.trisquel.info/trisquel/ toutatis-updates main</source> Contiene la lista de repositorios oficiales para el manejo de software por defecto. Pero supongamos que estamos en el caso en que nuestra PC es “antigua” y cierto programas de los repositorios de la version 6.0 de Trisquel no funcionan correctamente en nuestra computadora. Entonces decidimos probar una versión anterior en este caso Trisquel 5.0 para ver si los paquetes de esa versión funcionan correctamente en nuestra computadora. | ||
Contiene la lista de repositorios oficiales para el manejo de software por defecto. Pero supongamos que estamos en el caso en que nuestra PC es “antigua” y cierto programas de los repositorios de la version 6.0 de Trisquel no funcionan correctamente en nuestra computadora. Entonces decidimos probar una versión anterior en este caso Trisquel 5.0 para ver si los paquetes de esa versión funcionan correctamente en nuestra computadora. | |||
Buscando en Internet se puede encontrar repositorios de las versiones anteriores de las distribuciones entonces encontramos que la dirección | Buscando en Internet se puede encontrar repositorios de las versiones anteriores de las distribuciones entonces encontramos que la dirección URL de esos repositorios son: <source lang="bash">deb http://archive.trisquel.info/trisquel dagda main | ||
< | |||
deb-src http://archive.trisquel.info/trisquel dagda main | deb-src http://archive.trisquel.info/trisquel dagda main | ||
deb http://archive.trisquel.info/trisquel dagda-updates main | deb http://archive.trisquel.info/trisquel dagda-updates main | ||
Línea 193: | Línea 178: | ||
deb-src http://archive.trisquel.info/trisquel dagda-security main | deb-src http://archive.trisquel.info/trisquel dagda-security main | ||
deb http://archive.trisquel.info/trisquel dagda-backports main | deb http://archive.trisquel.info/trisquel dagda-backports main | ||
deb-src http://archive.trisquel.info/trisquel dagda-backports main</ | deb-src http://archive.trisquel.info/trisquel dagda-backports main | ||
Correpsondientes a Trisquel 5.0. | </source> Correpsondientes a Trisquel 5.0. | ||
Ahora para indicarle a nuestro sistema manejador de paquetes que busque en los repositorios de Trisquel 5.0 en lugar que en los de la versión 6.0 editamos el archivo <code>/etc/apt/sources.list</code> con privilegios de superusuario y lo dejamos así: | Ahora para indicarle a nuestro sistema manejador de paquetes que busque en los repositorios de Trisquel 5.0 en lugar que en los de la versión 6.0 editamos el archivo <code>/etc/apt/sources.list</code> con privilegios de superusuario y lo dejamos así: <source lang="bash"># Trisquel repositories for supported software and updates | ||
< | |||
#------ Estos son los repositorios de la Versión 6.0 todos van a ser comentados con " # " para que no se tomen en cuenta ----- | #------ Estos son los repositorios de la Versión 6.0 todos van a ser comentados con " # " para que no se tomen en cuenta ----- | ||
#deb http://us.archive.trisquel.info/trisquel/ toutatis main | #deb http://us.archive.trisquel.info/trisquel/ toutatis main | ||
Línea 214: | Línea 198: | ||
deb http://archive.trisquel.info/trisquel dagda-security main | deb http://archive.trisquel.info/trisquel dagda-security main | ||
deb-src http://archive.trisquel.info/trisquel dagda-security main | deb-src http://archive.trisquel.info/trisquel dagda-security main | ||
deb http://archive.trisquel.info/trisquel dagda-backports main | #deb http://archive.trisquel.info/trisquel dagda-backports main | ||
deb-src http://archive.trisquel.info/trisquel dagda-backports main</ | #deb-src http://archive.trisquel.info/trisquel dagda-backports main</source> Lo que hicimos fue ''copiar'' los repositorios de la 5.0 y ''pegar'' en <code>/etc/apt/sources.list</code>, ''comentando'' los originales. Una vez guardado podemos ahora instalar software de la versión 5.0 usando <code>synaptic</code>, <code>apt-get</code> u otra herramienta. | ||
Lo que hicimos fue ''copiar'' los repositorios de la 5.0 y ''pegar'' en <code>/etc/apt/sources.list</code>, ''comentando'' los originales. Una vez guardado podemos ahora instalar software de la versión 5.0 usando <code>synaptic</code>, <code>apt-get</code> u otra herramienta. | |||
Editar <code>/etc/apt/sources.list</code> es muy versátil pudiendo especificar no sólo sitios oficiales. | Editar <code>/etc/apt/sources.list</code> es muy versátil pudiendo especificar no sólo sitios oficiales. | ||
Línea 222: | Línea 205: | ||
*<div class="li">Podemos añadir listas de repositorios de otras distribuciones con paquetes <code>.deb</code>.</div> | *<div class="li">Podemos añadir listas de repositorios de otras distribuciones con paquetes <code>.deb</code>.</div> | ||
*<div class="li">Podemos añadir direcciones locales (de nuestra computadora o medio extraíble como CD/DVD)</div> | *<div class="li">Podemos añadir direcciones locales (de nuestra computadora o medio extraíble como CD/DVD)</div> | ||
<div class="li">Podemos añadir direcciones de una <span style="font-family:courier new,courier,monospace">LAN </span>(Red de área local)<br/></div><blockquote><span style="background-color:yellow"><cite>Hay otras posbilidades, sin embargo es recomendable śolo añadir direcciones confiables como medida de seguridad, ya que al añadir un sitio estamos diciendolé al sistema que confie plenamente en el contenido que este sitio alberga.</cite></span><br/></blockquote></div> | |||
Hay otras posbilidades, sin embargo es recomendable | === Usando repositorios locales (UMSA) === | ||
Como no todos cuentan con internet y más aún con buena conexión a internet como para realizar la descarga de paquetes para instalar programas hemos habilitado en un servidor de la red local de la carrera de informática de la UMSA que contiene los repositorios de las ramas main y contrib de '''Debian 7.2.0''' para arquitecturas <code>i386</code> y <code>amd64</code>. | |||
Este servidor puede usarse como repositorio local para que los estudiantes y docentes de esta institución descarguen programas. La velocidad de descarga no se limita a la de un internet pues se usa la red local de la carrera. | |||
Para instalar programas usando el servidor de la UMSA se necesitan una serie de pasos simples pero teniendo en cuenta que el repositorio de programas y bibliotecas funcionará correctamente sólo en versiones de Debian 7.2.0, otras distribuciones o versiones de esta distribución podrían no funcionar correctamente al instalar programas de este repositorio. | |||
==== Pasos para usar el repositorio local ==== | |||
===== Estar conectado a la red local de la carrera de la UMSA ===== | |||
Conectar la PC o laptop con Debian 7.2.0 a la red local. | |||
===== Editar sources.list ===== | |||
El archivo que contiene las direcciones de repositorios <code>/etc/apt/sources.list</code> para el manejador de paquetes de Debian deberá ser modificado, añadiendo las siguientes líneas a este archivo: | |||
Si la arquitectura de la versión de Debian 7.2.0 es i386: <source lang="bash"> | |||
#repositorio local de la carrera UMSA i386 | |||
deb http://192.168.17.253/dvd32-1/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd32-2/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd32-3/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd32-4/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd32-5/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd32-6/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd32-7/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd32-8/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd32-9/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd32-10/debian wheezy main contrib | |||
</source> | |||
En cambio si la arquitectura fuera amd64: <source lang="bash"> | |||
#repositorio local de la carrera UMSA amd64 | |||
deb http://192.168.17.253/dvd64-1/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd64-2/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd64-3/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd64-4/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd64-5/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd64-6/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd64-7/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd64-8/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd64-9/debian wheezy main contrib | |||
deb http://192.168.17.253/dvd64-10/debian wheezy main contrib | |||
</source> | |||
Guardar los cambios en el archivo. | |||
===== Actualizar los cambios en el sistema manejador de paquetes ===== | |||
Como hemos modificado <code>/etc/apt/sources.list</code>, hace falta informarle al sistema manejador de paquetes de esto: | |||
<source lang="bash"># apt-get update </source> | |||
Esta orden acutalizará la base de datos del sistema manejador de paquetes para que podamos hacer uso del nuevo repositorio. | |||
===== Instalar programas y/o bibliotecas ===== | |||
Hecho todo lo anterior sólo hace falta usar el servidor como repositorio de descarga para instalar programas por cualquiera de los métodos descritos anteriormente. | |||
== Compartición de bibliotecas<br/> == | == Compartición de bibliotecas<br/> == | ||
<div class="level2"> | <div class="level2"> | ||
Línea 245: | Línea 287: | ||
El archivo <code>/etc/ld.so.conf</code> donde se especifican las '''rutas''' donde el sistema debe buscar bibliotecas compartidas y aquí se pueden adicionar rutas de confianza adicionales para la búsqueda de bibliotecas. | El archivo <code>/etc/ld.so.conf</code> donde se especifican las '''rutas''' donde el sistema debe buscar bibliotecas compartidas y aquí se pueden adicionar rutas de confianza adicionales para la búsqueda de bibliotecas. | ||
Las bibliotecas también tienen una utilidad para mostrar dependencias y es el comando <code>ldd</code>. Por ejemplo si tenemos instalado el programa <code>anjuta</code> (IDE de desarrollo) para ver de que bibliotecas depende ejecutamos el comando: | Las bibliotecas también tienen una utilidad para mostrar dependencias y es el comando <code>ldd</code>. Por ejemplo si tenemos instalado el programa <code>anjuta</code> (IDE de desarrollo) para ver de que bibliotecas depende ejecutamos el comando: <source lang="bash">ldd -v /usr/bin/anjuta</source> Qué mostrará en pantalla con detalle las bibliotecas de las que depende <code>anjuta</code> para funcionar y cual es su ubucación. Una ubicación de confianza por defecto es <code>/lib</code>. | ||
< | |||
Qué mostrará en pantalla con detalle las bibliotecas de las que depende <code>anjuta</code> para funcionar y cual es su ubucación. Una ubicación de confianza por defecto es <code>/lib</code>. | |||
Usualmente los problemas con las bibliotecas son a causa de que el sistema no pueda encontrar la ubiación de esta, si la bilbioteca está instalada y aún así un programa no puede encontrarla posiblemente sea un conflicto con el nombre de la biblioteca por ejemplo. Para solucionar esto, se puede actualizar el cache y los links usando <code>ldconfig</code> sin argumentos en con permisos de superusuario. También si esto fallará se puede crear un vínculo simbólico en caso de que haya conflictos con nombres de bibliotecas actualizadas o algo por el estilo. Esto se hace con <code>ln</code> y la opción <code>-s</code> que crea vínculos simbólicos. Así por ejemplo si al ejecutar un programa este espera que este instalada la biblioteca de nombre <code>ld-linux-x86-64.so.2</code> pero el sistema tiene instalada la biblioteca <code>ld-linux-x86-64.so.2.1</code> que por así decirlo representa la misma bilioteca pero el programa espera el primer nombre, entonces para satisfacer las expectativas del programa, abrimos una terminal en la dirección donde esta esta biblioteca y usamos en modo (root o superusuario): | Usualmente los problemas con las bibliotecas son a causa de que el sistema no pueda encontrar la ubiación de esta, si la bilbioteca está instalada y aún así un programa no puede encontrarla posiblemente sea un conflicto con el nombre de la biblioteca por ejemplo. Para solucionar esto, se puede actualizar el cache y los links usando <code>ldconfig</code> sin argumentos en con permisos de superusuario. También si esto fallará se puede crear un vínculo simbólico en caso de que haya conflictos con nombres de bibliotecas actualizadas o algo por el estilo. Esto se hace con <code>ln</code> y la opción <code>-s</code> que crea vínculos simbólicos. Así por ejemplo si al ejecutar un programa este espera que este instalada la biblioteca de nombre <code>ld-linux-x86-64.so.2</code> pero el sistema tiene instalada la biblioteca <code>ld-linux-x86-64.so.2.1</code> que por así decirlo representa la misma bilioteca pero el programa espera el primer nombre, entonces para satisfacer las expectativas del programa, abrimos una terminal en la dirección donde esta esta biblioteca y usamos en modo (root o superusuario): <source lang="bash"># ln -s ld-linux-x86-64.so.2 ld-linux-x86-64.so.2.1</source> Que creará un vínculo simbólico entre <code>ld-linux-x86-64.so.2.1</code> y <code>ld-linux-x86-64.so.2</code>, así el programa se ejecutará utilizando la segunda biblioteca <code>ld-linux-x86-64.so.2.1</code> que tenemos instalada, después sólo debemos ejecutar <source lang="bash"># ldconfig</source> Para actualizar el caché de las bibliotecas y el vínculo que creamos quedará guardado. Ver otros sitios de interés (más abajo) para mayor información. | ||
< | |||
Que creará un vínculo simbólico entre <code>ld-linux-x86-64.so.2.1</code> y <code>ld-linux-x86-64.so.2</code>, así el programa se ejecutará utilizando la segunda biblioteca <code>ld-linux-x86-64.so.2.1</code> que tenemos instalada, después sólo debemos ejecutar | |||
< | |||
Para actualizar el caché de las bibliotecas y el vínculo que creamos quedará guardado. Ver otros sitios de interés (más abajo) para mayor información. | |||
</div> | </div> | ||
== Introducción a la administración de procesos<br/> == | == Introducción a la administración de procesos<br/> == | ||
Línea 261: | Línea 297: | ||
=== Identificar procesos<br/> === | === Identificar procesos<br/> === | ||
<div class="level3"> | <div class="level3"> | ||
El comando <code>ps</code> es una utilidad muy poderosa para esto si abrimos una terminal y lo usamos podemos obtener información importante que nos ayudará a tener mejor idea de como se manejan los procesos en la máquina y su sintaxis es simple pero posee una gran cantiad de opciones y aplicaciones. | El comando <code>ps</code> es una utilidad muy poderosa para esto si abrimos una terminal y lo usamos podemos obtener información importante que nos ayudará a tener mejor idea de como se manejan los procesos en la máquina y su sintaxis es simple pero posee una gran cantiad de opciones y aplicaciones. <source lang="bash">ps [opciones]</source> Aquí algunas opciones: | ||
< | |||
Aquí algunas opciones: | |||
*<div class="li"><code>-A</code>→ Muestra todos los procesos.</div> | *<div class="li"><code>-A</code>→ Muestra todos los procesos.<br/></div> | ||
*<div class="li"><code class="code html4strict">--user [usuario]</code>→ Muestra los procesos del usuario especificado.</div> | *<div class="li"><code class="code html4strict">--user [usuario]</code>→ Muestra los procesos del usuario especificado.</div> | ||
*<div class="li"><code>-f</code>→ Información detallada.</div> | *<div class="li"><code>-f</code>→ Información detallada.</div> | ||
Línea 276: | Línea 310: | ||
Las opciones pueden combinarse según su tipo, donde las opciones con <code>-</code> son opciones UNIX, las que no tienen guión son opciones BSD y las con dos guiones <code class="code html4strict">--</code> son GNU. Sin embargo pueden darse conflictos al combinar opciones que no son del mismo tipo. | Las opciones pueden combinarse según su tipo, donde las opciones con <code>-</code> son opciones UNIX, las que no tienen guión son opciones BSD y las con dos guiones <code class="code html4strict">--</code> son GNU. Sin embargo pueden darse conflictos al combinar opciones que no son del mismo tipo. | ||
por ejemplo si escribimos: | por ejemplo si escribimos: <source lang="bash">$ ps -Af</source> Nos mostrará todos los procesos de todos los usuarios detalladamente. <source lang="bash">$ ps --user gensu --forest</source> Nos mostrará todos los procesos del usuario <code>gensu</code> en forma de árbol de procesos <source lang="bash">$ ps u -A --user root --forest</source> Mostrará todos los procesos del usuario <code>root</code> detallado orientado al usuario que los usa y en forma de árbol. | ||
< | |||
Nos mostrará todos los procesos de todos los usuarios detalladamente. | |||
< | |||
Nos mostrará todos los procesos del usuario <code>gensu</code> en forma de árbol de procesos | |||
< | |||
Mostrará todos los procesos del usuario <code>root</code> detallado orientado al usuario que los usa y en forma de árbol. | |||
La salida de <code>ps</code> se muestra en columnas entonces puede que la pantalla no alcance para ver todo el detalle, para eso conviene guardar esa salida en un archivo y luego revisar el archivo con el editor de textos de preferencia, su puede hacer con: | La salida de <code>ps</code> se muestra en columnas entonces puede que la pantalla no alcance para ver todo el detalle, para eso conviene guardar esa salida en un archivo y luego revisar el archivo con el editor de textos de preferencia, su puede hacer con: <source lang="bash">$ ps -Al --forest > salida.txt </source> Entonces, si revisamos el contenido del archivo <code>salida.txt</code> y en realidad de cualquier salida de <code>ps</code> veremos estas columnas que representan datos importantes sobre los porecesos. | ||
< | |||
Entonces, si revisamos el contenido del archivo <code>salida.txt</code> y en realidad de cualquier salida de <code>ps</code> veremos estas columnas que representan datos importantes sobre los porecesos. | |||
<div class="table sectionedit13"> | <div class="table sectionedit13"> | ||
{| class="inline" | {| class="inline" | ||
Línea 332: | Línea 358: | ||
<code>kill</code> es útil para terminar procesos problemáticos, por ejemplo si la computadora se cuelga o está extrañamente lenta para terminar con el proceso que ocasiona esto seguimos estos pasos: | <code>kill</code> es útil para terminar procesos problemáticos, por ejemplo si la computadora se cuelga o está extrañamente lenta para terminar con el proceso que ocasiona esto seguimos estos pasos: | ||
#<div class="li">Abrimos una ''' | #<div class="li">Abrimos una '''tty''' (aunque puede ser también un emulador de terminal aunque esto no siempre es posible debido al uso del CPU) con <code>ctrl+alt+F1</code> para entrar en la terminal y <code>ctrl+alt+F7</code> o <code>ctrl+alt+F8 </code>para volver a la interfaz gráfica.<br/></div> | ||
#<div class="li">Nos logueamos con nombre de usuario y contraseña (preferiblemente superusuario)<br/></div> | #<div class="li">Nos logueamos con nombre de usuario y contraseña (preferiblemente superusuario)<br/></div> | ||
#<div class="li">Ejecutamos <code>top</code> ó <code>ps</code> como se describe más arriba.<br/></div> | #<div class="li">Ejecutamos <code>top</code> ó <code>ps</code> como se describe más arriba.<br/></div> |
Revisión actual - 13:26 6 sep 2015
En este apartado se mostrarán los principios escenciales para manejar el software de la computadora en un sistema GNU/Linux derivado de Debian.
El software de la computadora se maneja en lo que se llaman paquetes que contienen los binarios del programa, es decir el código máquina que le dice a la computadora qué hacer para que el programa funcione. Los programas generalmente se "empaquetan" para hacer más fácil su distribución.
Existen también paquetes de software que contiene el código fuente del programa, que contiene las instrucciones en lenguajes de programación desde las cuales se construyen los binarios del programa para que este pueda ejecutarse.
En este artículo veremos los paquetes de software que contienen los binarios para ejecutar el programa.
Paquetes de Software
Un paquete de software es un programa que ha sido construido desde su código fuente y ha sido empaquetado de acuerdo a un sistema manejador de paquetes. En GNU/Linux existen dos sistemas manejadores de paquetes principales:
- Paquetes RPM de Red Hat package manager (.rpm es la extensión de archivos empaquetados) de la distribución Red Hat y derivados.
- Paquetes Debian (.deb es la extensión de archivos empaquetados) de la distribucón Debian y derivados.
Un paquete de software contiene uno o varios programas precompilados, además un paquete contiene información adicional (meta-data) del paquete. Esta informacion adicional incluye descripción y versión del paquete y dependencias, que ayudan al sistema manejador de paquetes a organizar todos paquetes de la computadora de forma que sea posible Instalar, Actualizar y Desinstalar programas sin que hayan problemas de dependencias entre paquetes, permitiendo así la reutilización de programas.
Dependencias entre paquetes
La idea es simple, un programa puede necesitar que otros programas y bibliotecas estén instalados para poder funcionar.
Por ejemplo si hay un programa llamado ”Calculadora” que funciona vía línea de comandos y alguién hace un programa con interfaz gráfica de usuario GUI de ”Calculadora” para facilitar su manejo y lo llama ”CalculadoraGUI”, es claro que el programa ”CalculadoraGUI” necesita o depende del programa ”Calculadora” para funcionar por que ”CalculadoraGUI” sólo es una adaptación de ”Calculadora”.
En un SO Windows la típica forma en que un programa se distribuye es que este programa incluye a todos los demás programas de los que depende y se instala con estos, pero esto provoca consecuencias.
- Si un programa se instala sin comprobar que los programas de los que depende ya estén instalados, entonces al instalarlo se instalarán también esos programas, y si estos ya están instalados causará que se utilice más memoria del disco duro y más memoria RAM para ejecutar ese programa, esto último en el caso de las bibliotecas.
Los paquetes .rpm y .deb usados en distribuciones de GNU/Linux incluyen no sólo el programa en sí sino una lista de otros programas de los que depende, gracias a esto los sistemas manejadores de paquetes RPM y Debian pueden fácilmente consultar a su base de datos si esas dependencias están o no instaladas en el sistema. Una vez hecha esta búsqueda el manejador de paquetes sólo instalará las dependencias no satisfechas, es decir, los programas y bibliotecas que faltan. Con esto último se aprovecha cada espacio de memoria en el disco duro y se optimiza el consumo de memoria RAM resultando en un sistema más rápido y con más espacio de almacenamiento.
Paquetes Debian
Se usan en las distribuciones basadas en Debian como Ubuntu, Mint, ver más y al igual que los rpm son paquetes de software.
Los paquetes Debian contienen dos archivos comprimidos .tar
y un archivo con información de control. Los paquetes .deb
son paquetes binarios es decir, contienen el código máquina del programa resultado de la previa construcción de este, por eso son archivos de instalación.
Generalmente un paquete de software Debian lleva el nombre de la siguiente forma:
- Nombre del paquete '→como por ejemplo
emacs23
del editor emacs. - Versión →un número que generalmente lleva puntos aunque no necesariamente, por ejemplo
23_23.
asignada por el autor del programa. - Número de construcción →que viene después de la versión y es colocado por el mantenedor del paquete por ejemplo
3+1-1ubuntu9.
- Arquitectura →Que viene justo antes del
.deb
que indica para que arquitectura de computador fue construido el paquete, por ejemplo para un PC con CPU x86 el código de esta arquitectura esi386
. - extensión →que es .deb
Por ejemplo para el editor Emacs el paquete emacs23_23.3+1-1ubuntu9.2_i386.deb
contiene los binarios del programa Emacs en su versión 23 construido para ubuntu 9.2 y funciona en una aruitectura i386
que significa que es para PCs x86. Pero esta estructura de nombre es una convención para repositorios, y no es obligatoria, si una persona hace un paquete .deb puede nombrarla como le plazca solo con la extensión .deb
al final.
Los dos archivos comprimidos que contiene el paquete son:
control.tar.gz
: que contiene toda la meta-data como la versión del paquete, nombre, dependencias, tamaño que tendrá una vez instalado, etc. Esta información permite al manejador de paquetes Debian (ver más adelante) qué porgramas buscar antes de la instalación y que configurar durante la instalación del programa.data.tar.gz
,data.tar.bz2
,data.tar.lzma
odata.tar.xz
: que contienen los archivos que serán instalados.debian-binary
: la versión de formato deb que actualmente es 2.0.
Los paquetes .deb
son manejados por herramientas de gestión de paquetes que son conjuntamente con una base de datos son el sistema manejador de paquetes de Debian.
Los paquetes .deb
son imcompatibles con los .rpm
pero existen herramientas para convertir entre estos dos sistemas.
Herramientas para gestión de paquetes
dpkg
dpkg
es el programa base del sistema manejador de paquetes Debian, con dpkg
se realiza la instalación, desinstalación, actualización, etc de los paquetes de software .deb
. Se maneja vía línea de comandos por lo que se considera una herramienta de bajo nivel.
dpkg puede abrirse desde una terminal siguiendo la siguiente sintaxis:
dpkg [opciones] [acción] ["nombre del paquete" ó "nombre de los archivos .deb"]
dpkg
tiene muchas opciones que no describiremos aquí, pero para verlas basta con escribir en una terminal:
$ dpkg --help
ó
$ man dpkg
dpkg –help
mostrará una ayuda rápida con opciones y acciones brevemente explicadas y man dpkg
abrirá el manual de dpkg detallado.
Por ejemplo si obtenemos el paquete codeblocks_10.05-2_i386.deb
correspondiente al editor codeblocks 10.05 y queremos instalarlo en nuestra PC seguimos los siguientes pasos:
- Abrimos una terminal y nos “pocisionamos” (cd) en la carpeta donde está este paquete.
- Escribimos en la terminal:
$ sudo dpkg --install codeblocks_10.05-2_i386.deb
y escribimos la contraseña de superusuario.
- Si no tenemos conflictos con dependencias se nos informará de cuanto espacio ocupará el programa una vez instalado y nos preguntará si queremos continuar, aceptamos exribiendo
Y
óS
.
Con estos pasos dpkg
' instalará automáticamente el paquete y una vez terminada la instalación podremos ejecutar el programa codeblocks
. El software que se instala no tiene un directorio fijo por que esto depende del programa o biblioteca que instalamos. Aunque podremos encontrar el ejecutable del programa instalado generalmente en el directorio /usr/bin
.
El proceso para instalar bibliotecas es el mismo con dpkg
ya que las bibliotecas también son empaquetadas en archivos .deb
.
Si existieran problemas de dependencias (programas o bibliotecas que faltan) dpkg
no instalará el programa y nos mostrará un mensaje de error con las dependencias no satisfechas. Si sólo usamos dpkg
tendríamos que buscar esas dependencias manualmente en internet u obtenerlas de alguna forma. Se pueden obtener muchos paquetes de instalación en el repositorio Debian en http://www.debian.org/distrib/packages o http://packages.debian.org/stable/.
Afortunadamente existen otras herramientas de más alto nivel como apt
y synaptic
que se encargan de resolver dependencias simplificando el proceso de instalación.
APT
APT es una suite de herramientas que incluyen el programa apt-cache
que provee información de paquetes y dependencias, apt-get
se encarga de realizar operaciones de instalación, búsqueda de dependencias, actualización, y desinstalación de paquetes de software.
A diferencia de dpkg
, APT
puede resolver dependencias lo que quiere decir que encuentra los programas que no están en el computador pero hacen falta para instalar un paquete.
Esta tarea de búsqueda de dependencias se hace comprobando en una lista de repositorios que se especifíca en el archivo /etc/apt/sources.list
. Si se cuenta con conexión a Internet aceptable, la instalación y actualización de software es muy sencilla, por que APT
utilizará la lista de repositorios en /etc/apt/sources.list
para buscar todos los paquetes y en este archivo se incluye la dirección del sitio oficial de la distribución (en este caso Debian7) que contienen una gran cantidad de paquetes estables y probados.
apt-cache
apt-cache esta diseñado para eso
por que usa el caché del sistema manejador de paquetes, este programa se abre vía línea de comandos y su sintaxis es: apt-cache [opciones] paq1 [paq2 ...]
paq
es el paquete que pueden ser varios separados por un espacio. Las opciones escenciales de apt-cache
son:
showpkg
→ Muestra información del paquete.stats
→ Muestra estadísticas del paquete como cuantas dependencias ya están instaladas y otras.unmet
→ Busca y muestra las dependencias faltantes.- Por ejemplo:
$ apt-cache unmet samba
que muestra:
El paquete samba versión 2:3.6.3-2ubuntu2.9 tiene dependencias incumplidas: Reemplaza: samba-common (<= 2.0.5a-2) Reemplaza: samba-common:i386 (<= 2.0.5a-2)
pkgnames
→ Muestra todos los nombres de paquetes, si seguido depkgnames
se escribe un párametro como por ejemplo$ apt-cache pkgnames recor
monstrará todos los paquetes que empiezan con ese parámetro, en este caso mostró:
recorditnow recordmydesktop
apt-get
Este programa apt-get
permite instalar paquetes rápidamente buscando en /etc/apt/sources.list
y como generalmetne este acrhivo contiene la lista de repositorios accesibles por internet, con una buena conexión a internet es muy fácil realizar esta tarea.
Sin embargo, en /etc/apt/sources.list
se puede especificar otras direcciones como un DVD, redes de área local, etc, esto lo describiremos más adelante.
La sintaxis de apt-get
es:
apt-get [opciones][orden] [nombre(s) de paquete(s)]
apt-get
tiene una larga lista de opciones que se pueden ver rápidamente escribiendo apt-get -h
o man apt-get
.
filezilla
que es un gestor FTP usando apt-get
deberíamos escribir lo siguiente: $ sudo apt-get install filezilla
sudo
.
Lo que esta ordén hace es indicarle a apt-get
que instale el programa filezilla, pero a diferencia de dpkg
, al encontrar dependencias faltantes apt-get
las buscará en los repositorios de /etc/apt/sources.list
. Una vez las encuentre, procederá a descargar el paquete junto a todas sus dependencias faltantes. Una vez descargue las dependencias se procederá a la instalación del programa.
Al terminar todo este proceso, tendremos el programa en este caso filezilla
instalado y listo para usar todo con una simple línea.
apt
con la opción remove así: $ sudo apt-get remove filezilla
filezilla
.
Synaptic
Synaptic es un programa GUI (con interfaz gráfica de usuario) al igual que apt
resuelve dependencias y facilita el proceso de instalación. Como apt
, snynaptic
busca los paquetes en la lista de repositorios especificada en /etc/apt/sources.list
. Si synaptic no está instalado hay que hacerlo primero con $ sudo apt-get install synaptic
Para instalar un programa hay que escribir su nombre o una palabra clave con la que este relacionado en el filtro de búsqueda y aparecerá una lista de paquetes que coinciden.
Por ejemplo para instalar zim
(un programa editor de texto basado en wikis), luego de escribir zim para instalarlo primero se hace click derecho en su nombre y se escoge la opción marcar paquete para instalar. Synaptic buscará automáticamente sus dependencias y nos preguntará si también queremos instalarlas, aceptamos y al final deberá quedar una pantalla similar a esta:
Finalmente se hace click en el botón aplicar, synaptic descargará los paquetes marcados y los instalará. Este software tiene muchas opciones y aprovecharemos otras de estas a lo largo del curso.
Usando el script generador de descargars (cunado no se tiene conexión a Internet)
Si no se cuenta con conexión a Internet y se desea instalar un programa específico, se puede usar synaptic
para ayudarnos a saber que paquetes de software hacen falta, para esto usaremos una funcionalidad que se llama generar script de descarga de paquetes siguiendo estos pasos:
- Escribir el nombre del programa.
- Marcar el porgrama para su instalación.
- Marcar también las dependencias que synaptic encontró automáticamente.
- Ir a Archivo → Generar un Script de descarga de paquetes.
- Guardar el Script en un medio extraíble ().
- Ejecutar el Script en otra computadora con conexión a Internet.
El contenido del script es una serie de comandos con los paquetes faltantes por ejemplo así:
#!/bin/sh
wget -c http://us.archive.trisquel.info/trisquel/pool/main/g/gnome-python-extras/python-gtkspell_2.25.3-11_i386.deb
wget -c http://us.archive.trisquel.info/trisquel/pool/main/z/zim/zim_0.54-1_all.deb
Una vez tengamos los archivos .deb
descargados, los copiamos en una carpeta vacía en nuestra PC, abrimos una terminal y nos poscicionamos en esa carpeta y ejecutamos el siguiente comando:
sudo dpkg --install *.deb
dpkg
instalará todos los paquetes que terminen en .deb
, es decir los paquetes que descargamos. Una vez instalados, el programa que queríamos utilizar ya puede usarse.
Agregando software desde fuentes externas
Se trata de modificar el origen o repositorios oficiales según nuestra necesidad. Puede darse el caso que por ejemplo se este utilizando una una versión no actual de una distribución. Al instalar GNU/Linux el archivo /etc/apt/sources.list
viene escrito con una lista de repositorios oficiales por defecto de la versión de la distribución. Si por alguna razón estos repositorios ya no tienen soporte o no se actualizan con la rapidez que buscamos podemos hacer añadir a /etc/apt/sources.list
otra lista de repositorios para que busque determinados paquetes.
sources.list
que viene por defecto en la distribución Trisquel mini 6.0: # Trisquel repositories for supported software and updates
deb http://us.archive.trisquel.info/trisquel/ toutatis main
deb-src http://us.archive.trisquel.info/trisquel/ toutatis main
deb http://us.archive.trisquel.info/trisquel/ toutatis-security main
deb-src http://us.archive.trisquel.info/trisquel/ toutatis-security main
deb http://us.archive.trisquel.info/trisquel/ toutatis-updates main
deb-src http://us.archive.trisquel.info/trisquel/ toutatis-updates main
deb http://archive.trisquel.info/trisquel dagda main
deb-src http://archive.trisquel.info/trisquel dagda main
deb http://archive.trisquel.info/trisquel dagda-updates main
deb-src http://archive.trisquel.info/trisquel dagda-updates main
deb http://archive.trisquel.info/trisquel dagda-security main
deb-src http://archive.trisquel.info/trisquel dagda-security main
deb http://archive.trisquel.info/trisquel dagda-backports main
deb-src http://archive.trisquel.info/trisquel dagda-backports main
/etc/apt/sources.list
con privilegios de superusuario y lo dejamos así: # Trisquel repositories for supported software and updates
#------ Estos son los repositorios de la Versión 6.0 todos van a ser comentados con " # " para que no se tomen en cuenta -----
#deb http://us.archive.trisquel.info/trisquel/ toutatis main
#deb-src http://us.archive.trisquel.info/trisquel/ toutatis main
#deb http://us.archive.trisquel.info/trisquel/ toutatis-security main
#deb-src http://us.archive.trisquel.info/trisquel/ toutatis-security main
#deb http://us.archive.trisquel.info/trisquel/ toutatis-updates main
#deb-src http://us.archive.trisquel.info/trisquel/ toutatis-updates main
#deb http://us.archive.trisquel.info/trisquel/ toutatis-backports main
#deb-src http://us.archive.trisquel.info/trisquel/ toutatis-backports main
#------------ Estos son los repositorios de la Versión 5.0 los que ahora queremos probar ----------------
deb http://archive.trisquel.info/trisquel dagda main
deb-src http://archive.trisquel.info/trisquel dagda main
deb http://archive.trisquel.info/trisquel dagda-updates main
deb-src http://archive.trisquel.info/trisquel dagda-updates main
deb http://archive.trisquel.info/trisquel dagda-security main
deb-src http://archive.trisquel.info/trisquel dagda-security main
#deb http://archive.trisquel.info/trisquel dagda-backports main
#deb-src http://archive.trisquel.info/trisquel dagda-backports main
/etc/apt/sources.list
, comentando los originales. Una vez guardado podemos ahora instalar software de la versión 5.0 usando synaptic
, apt-get
u otra herramienta.
Editar /etc/apt/sources.list
es muy versátil pudiendo especificar no sólo sitios oficiales.
- Podemos añadir listas de repositorios de otras distribuciones con paquetes
.deb
. - Podemos añadir direcciones locales (de nuestra computadora o medio extraíble como CD/DVD)
Hay otras posbilidades, sin embargo es recomendable śolo añadir direcciones confiables como medida de seguridad, ya que al añadir un sitio estamos diciendolé al sistema que confie plenamente en el contenido que este sitio alberga.
Usando repositorios locales (UMSA)
Como no todos cuentan con internet y más aún con buena conexión a internet como para realizar la descarga de paquetes para instalar programas hemos habilitado en un servidor de la red local de la carrera de informática de la UMSA que contiene los repositorios de las ramas main y contrib de Debian 7.2.0 para arquitecturas i386
y amd64
.
Este servidor puede usarse como repositorio local para que los estudiantes y docentes de esta institución descarguen programas. La velocidad de descarga no se limita a la de un internet pues se usa la red local de la carrera.
Para instalar programas usando el servidor de la UMSA se necesitan una serie de pasos simples pero teniendo en cuenta que el repositorio de programas y bibliotecas funcionará correctamente sólo en versiones de Debian 7.2.0, otras distribuciones o versiones de esta distribución podrían no funcionar correctamente al instalar programas de este repositorio.
Pasos para usar el repositorio local
Estar conectado a la red local de la carrera de la UMSA
Conectar la PC o laptop con Debian 7.2.0 a la red local.
Editar sources.list
El archivo que contiene las direcciones de repositorios /etc/apt/sources.list
para el manejador de paquetes de Debian deberá ser modificado, añadiendo las siguientes líneas a este archivo:
#repositorio local de la carrera UMSA i386
deb http://192.168.17.253/dvd32-1/debian wheezy main contrib
deb http://192.168.17.253/dvd32-2/debian wheezy main contrib
deb http://192.168.17.253/dvd32-3/debian wheezy main contrib
deb http://192.168.17.253/dvd32-4/debian wheezy main contrib
deb http://192.168.17.253/dvd32-5/debian wheezy main contrib
deb http://192.168.17.253/dvd32-6/debian wheezy main contrib
deb http://192.168.17.253/dvd32-7/debian wheezy main contrib
deb http://192.168.17.253/dvd32-8/debian wheezy main contrib
deb http://192.168.17.253/dvd32-9/debian wheezy main contrib
deb http://192.168.17.253/dvd32-10/debian wheezy main contrib
#repositorio local de la carrera UMSA amd64
deb http://192.168.17.253/dvd64-1/debian wheezy main contrib
deb http://192.168.17.253/dvd64-2/debian wheezy main contrib
deb http://192.168.17.253/dvd64-3/debian wheezy main contrib
deb http://192.168.17.253/dvd64-4/debian wheezy main contrib
deb http://192.168.17.253/dvd64-5/debian wheezy main contrib
deb http://192.168.17.253/dvd64-6/debian wheezy main contrib
deb http://192.168.17.253/dvd64-7/debian wheezy main contrib
deb http://192.168.17.253/dvd64-8/debian wheezy main contrib
deb http://192.168.17.253/dvd64-9/debian wheezy main contrib
deb http://192.168.17.253/dvd64-10/debian wheezy main contrib
Guardar los cambios en el archivo.
Actualizar los cambios en el sistema manejador de paquetes
Como hemos modificado /etc/apt/sources.list
, hace falta informarle al sistema manejador de paquetes de esto:
# apt-get update
Esta orden acutalizará la base de datos del sistema manejador de paquetes para que podamos hacer uso del nuevo repositorio.
Instalar programas y/o bibliotecas
Hecho todo lo anterior sólo hace falta usar el servidor como repositorio de descarga para instalar programas por cualquiera de los métodos descritos anteriormente.
Compartición de bibliotecas
Al igual que los programas las bibliotecas en GNU/Linux tambíen se comparten, así logra un menor consumo de recursos, para entender esto mejor se deben entender algunos conceptos:
Lo que se conoce como bibliotecas son colecciones de funciones implementadas que se usan por programas y son llamadas por estos según sea necesario. Los progradores son los que escogen que bibliotecas usar para facilitarse el trabajo de programación en lugar de codificar todo ellos mismos. La biblioteca más usada en GNU/Linux es libc
(C library) y muchos programas utilizan sus funciones lo que facilita el desarollo de nuevo software usando libc
para que haga tareas comunes pero que codificar desde cero sería un esfuerzo colosal.
Casi la totalidad de los paquetes distribuidos en GNU/Linux no incluyen estas bibliotecas, en lugar de eso listan las bibliotecas que usan como dependencias. Al hacer esto se permite reutilizar la biblioteca si otro programa la utiliza en lugar de instalarla multiples veces. Al hacer esto se logra entre otras cosas:
- Reducir el uso de espacio en el disco duro y memoria RAM.
- Si muchos programas usan la misma biblioteca en general se obtienen mejoras de rendimiento, cuando la biblioteca se actualiza.
En windows las bibliotecas dinámicas .dll
son similares a las bibliotecas compartidas pero en GNU/Linux tiene la extensión .so
que viene de shared object (objeto compartido). En cambio una biblioteca que no se comparte se conoce como biblioteca estática y tiene la extensión .a
.
Aunque se obtiene muchas mejoras en rendimiento y uso de memoria al compartir bibliotecas, se pueden tener algunos problemas:
- Cuando se actualiza una biblioteca, algunos programas pueden funcionar de forma incorrecta o dejar de funcionar.
- Si por error se borran las bibliotecas de las que dependián muchos programas esos programas pueden dejar de funcionar.
- En un caso extremo el sistema podría dejar de iniciarse.
El archivo /etc/ld.so.conf
donde se especifican las rutas donde el sistema debe buscar bibliotecas compartidas y aquí se pueden adicionar rutas de confianza adicionales para la búsqueda de bibliotecas.
ldd
. Por ejemplo si tenemos instalado el programa anjuta
(IDE de desarrollo) para ver de que bibliotecas depende ejecutamos el comando: ldd -v /usr/bin/anjuta
anjuta
para funcionar y cual es su ubucación. Una ubicación de confianza por defecto es /lib
.
Usualmente los problemas con las bibliotecas son a causa de que el sistema no pueda encontrar la ubiación de esta, si la bilbioteca está instalada y aún así un programa no puede encontrarla posiblemente sea un conflicto con el nombre de la biblioteca por ejemplo. Para solucionar esto, se puede actualizar el cache y los links usando ldconfig
sin argumentos en con permisos de superusuario. También si esto fallará se puede crear un vínculo simbólico en caso de que haya conflictos con nombres de bibliotecas actualizadas o algo por el estilo. Esto se hace con ln
y la opción -s
que crea vínculos simbólicos. Así por ejemplo si al ejecutar un programa este espera que este instalada la biblioteca de nombre ld-linux-x86-64.so.2
pero el sistema tiene instalada la biblioteca ld-linux-x86-64.so.2.1
que por así decirlo representa la misma bilioteca pero el programa espera el primer nombre, entonces para satisfacer las expectativas del programa, abrimos una terminal en la dirección donde esta esta biblioteca y usamos en modo (root o superusuario): # ln -s ld-linux-x86-64.so.2 ld-linux-x86-64.so.2.1
ld-linux-x86-64.so.2.1
y ld-linux-x86-64.so.2
, así el programa se ejecutará utilizando la segunda biblioteca ld-linux-x86-64.so.2.1
que tenemos instalada, después sólo debemos ejecutar # ldconfig
Introducción a la administración de procesos
Cuando se ejecuta un programa al mismo tiempo se crea un proceso que son genstionados por el SO. En GNU/Linux es posible identificar, manejar procesos en en primer y segundo plano, matar procesos y ajustar prioridades. Este es un tema extenso y en este curso veremos como identificar y matar procesos brevemente.
Identificar procesos
ps
es una utilidad muy poderosa para esto si abrimos una terminal y lo usamos podemos obtener información importante que nos ayudará a tener mejor idea de como se manejan los procesos en la máquina y su sintaxis es simple pero posee una gran cantiad de opciones y aplicaciones. ps [opciones]
-A
→ Muestra todos los procesos.--user [usuario]
→ Muestra los procesos del usuario especificado.-f
→ Información detallada.u
→ Detallado orientado a usuario.--help
→ Información rápida--forest
→ Muestra en forma de árbol de procesosw
→ Se ajusta al ancho de la pantalla-l
→ salida larga con muchos detalles.
Las opciones pueden combinarse según su tipo, donde las opciones con -
son opciones UNIX, las que no tienen guión son opciones BSD y las con dos guiones --
son GNU. Sin embargo pueden darse conflictos al combinar opciones que no son del mismo tipo.
$ ps -Af
$ ps --user gensu --forest
gensu
en forma de árbol de procesos $ ps u -A --user root --forest
root
detallado orientado al usuario que los usa y en forma de árbol.
La salida de ps
se muestra en columnas entonces puede que la pantalla no alcance para ver todo el detalle, para eso conviene guardar esa salida en un archivo y luego revisar el archivo con el editor de textos de preferencia, su puede hacer con: $ ps -Al --forest > salida.txt
salida.txt
y en realidad de cualquier salida de ps
veremos estas columnas que representan datos importantes sobre los porecesos.
Columna |
Función |
---|---|
USER | El nombre del usuario que ejecuta el programa |
PID | Un número que identifica al proceso |
PPID | Un número que identifica al proceso padre de este proceso |
TTY | Terminal bajo la que corre el proceso |
%CPU | Uso del CPU |
%MEM | Uso de la memoria |
NI | Piroridad del proceso (se muestra con -l ) mientras menor el número más prioridad tiene
|
CMD* | El comando usado para abrir el proceso |
El PID es un dato muy importante por que a partir de este se puede manejar el procesos y todos sus derivados ya sea para analizarlos, matarlos, cambiarles la prioridad, etc usando las herramientas adecuadas.
Existe tambíen otro programa llamdo top
que muestra una tabla completa con los procesos del sistema se termina con ctrl+c
.
Matando procesos
Para matar un proceso es bueno saber el PID que le corresponde y usar la herramienta kill
que envía señales para matar a un proceso identificado por su PID. Es importante saber que un usuario normal no puede matar procesos de un superusuario o grupo de administradores, en cambio un superusuario tiene todo el control.
La sintaxis de kill es:
kill -s [señal] pid
Si no se especifica señal por defecto es 15 SIGTERM que sale del proceso pero permite cerrar archivos abiertos, se pueden ver otras señales con man kill
.
kill
es útil para terminar procesos problemáticos, por ejemplo si la computadora se cuelga o está extrañamente lenta para terminar con el proceso que ocasiona esto seguimos estos pasos:
- Abrimos una tty (aunque puede ser también un emulador de terminal aunque esto no siempre es posible debido al uso del CPU) con
ctrl+alt+F1
para entrar en la terminal yctrl+alt+F7
octrl+alt+F8
para volver a la interfaz gráfica. - Nos logueamos con nombre de usuario y contraseña (preferiblemente superusuario)
- Ejecutamos
top
óps
como se describe más arriba. - Revisamos que proceso esta consumiendo la mayor cantidad de CPU o demasiada memoria RAM que puede ser el causante de que la PC haya entrado en ese estado.
- Para rastrear completamente al proceso podemos usar la opción
--forest
en ps y ver a que procesos está asociado el proceso problemático. - Ya detectando ese proceso, será necesario tomar en cuenta su PID.
- Ejecutamos
kill
con una señal para terminarlo poniendo como argumento el PID del proceso. - Una vez terminado el proceso comprobamos que la PC vuleve a funcionar correctamente volviendo a la interfaz gráfica con (ctrl+alt+F7)
Monitor de sistema
Adicionalmente para terminar un proceso por su nombre se puede usar la herramienta killall
en lugar de kill
aunque existen también programas GUI para manejar procesos uno de ellos es gnome-system-monitor
, esta herramienta permite administrar los procesos de manera mas “amigable”.
Construcción de un prorama desde su código fuente
Es la mejor opción para instalar un programa si se trata de obtener el mejor rendimiento y personalización.
Esto es, obtener el código fuente del programa y construir los binarios usando herrameintas de construcción. Los binarios obtenidos estarán de acuerdo a como se configuran las opciones de construcción que uno mismo puede ajustarlas, estos binarios son de mejor calidad para nuestra computadora por que se construyen de acuerdo a sus características y necesidades específicas.
Una herrameinta de construcción quizá la más utilizada es GNU Make o también llamada make.
(continuar)
Otros sitios de ayuda
- www.debian.org/doc/debian-policy/ch-sharedlibs.html
- http://download.savannah.gnu.org/releases/lpi-manuals/ (liros en inglés)
- http://trisquel.info/es/wiki/instalaci%C3%B3n-de-paquetes-sin-conexi%C3%B3n-internet-mediante-keryx-0 (otra guía para instalación sin internet)