Indicadores de Logros
Otra labor del administrador es buscar, instalar, actualizar y configurar los programas que requiera algún grupo de usuarios (es decir los programas disponibles normalmente en /usr/bin /usr/local/bin y /opt). Eventualmente puede promover el desarrollo de software para la institución.
El formato binario que soportan las distribuciones actuales de Linux es ELF [89] , el cual permite cargar bibliotecas compartidas [90] durante la ejecución ---pueden verse datos del formato de un ejecutable ELF con el programa readelf. En este contexto biblioteca compartida se refiere a un conjunto de servicios que uno o más programas puede emplear y que están agrupados en un archivo ---para ver las bibliotecas compartidas que un programa requiere puede emplear el programa ldd seguido de la ruta del programa (e.g ldd /bin/cat) y para ver los servicios que ofrece una biblioteca puede emplear objdump.
Para ejecutar un programa, el kernel lo transmite del dispositivo de almacenamiento a memoria RAM (después de que el intérprete de comandos lo ha ubicado empleando la variable PATH y ha decidido que no es un script ver Lectura Scripts básicos para bash).
una vez en RAM identifica el tipo de ejecutable y de ser un ELF emplea como intérprete /lib/ld-linux.so.
El programa /lib/ld-linux.so es el encadenador dinámico, que encuentra las bibliotecas compartidas requeridas por el ejecutable, prepara el programa para ejecución y lo ejecuta [91] . Para localizar bibliotecas compartidas /lib/ld-linux.so busca en orden:
Los directorios especificados en la variable de ambiente LD_LIBRARY_PATH que deben separarse unos de otros con el caracter ':'
En el archivo /etc/ld.so.cache
en los directorios /usr/lib y /lib.
El archivo /etc/ld.so.cache es generado por el administrador con el programa ldconfig. Este programa genera /etc/ld.so.cache a partir de las bibliotecas disponibles en /lib y /usr/lib y en las rutas especificadas en /etc/ld.so.conf. Por esto si se instalan nuevas bibliotecas compartidas en rutas estándar es indispensable ejecutar ldconfig ---la gran mayoría de programas de instalación lo harán automáticamente--- y si se instalan en rutas no estándar asegurarse de que la ruta esté en /etc/ld.so.conf antes de ejecutar ldconfig.
Una vez se ejecute el programa, este podría leer algunos archivos de configuración (usualmente de /etc/) y variables de entorno. También podría cargar datos que requiera para operar (e.g mensajes para el locale apropiado, sonidos o imagenes usualmente del directorio /usr/share).
Aunque en los repositorios oficialesAlgunos programas de libre redistribución son liberados al público junto con el código fuente escrito en algún lenguaje de programación (tipicamente C o C++). Antes de usarlos debe compilarlos e instalarlos siguiendo las instrucciones que acompañan el código fuente; y claro antes debe descomprimirlo y/o desempaquetarlo.
El código fuente podría estar comprimido con diversos programas, dos muy comunes son: gzip - extensión .gz, bzip2 - extensión .bz2. Ambos permiten descomprimir con la opción -d seguida del nombre del fichero comprimido. Además de comprimidas, las fuentes podrían estar archivadas con el programa tar (extensión .tar), para desarchivar ficheros creados por este programa se emplea tar xvf archivo (ver Administración de archivos, directorios y enlaces).
Aunque en general debe consultar las instrucciones para lograr la instalación y configuración, varios programas requieren la siguiente secuencia de comandos para compilar (secuencia establecida por autoconf):
./configure make make install
Esta secuencia instalará por defecto en el directorio /usr/local, si desea instalar en otra vía puede cambiar el primer comando por configure --prefix=nueva_via con el directorio destino en lugar de nueva_via. Si las fuentes incluyen mensajes en diversos idiomas (locales) se instalarán los especificados en la variable LINGUAS o todos si tal variable no está definida. La variable LINGUAS debe tener códigos ISO 639 (2 letras como LC_MESSAGE ver Lectura Configuración de una sesión) de los idiomas que se desean, unos separados de otro por espacios.
Cuando busque software, tenga en cuenta que funcione en el computador en el que operará (consulte los requerimientos de hardware y software), y revise la licencia del programa para asegurarse de la posibilidad de usarlo y redistribuirlo sin restricciones (ver Lectura Software de libre redistribución) ---si no lee con detalle la licencia, podría infringir la ley.
Una vez consiga software que solucione una necesidad de su institución, debe instalarlo y configurarlo. Es posible que encuentre las fuentes comprimidas o de un archivo precompilado deb [92] . Por ejemplo para la distribución Debian, hay un inmenso repositorio de archivos precompilados. Cuando busque un programa, ese repositorio es el primer sitio quee puede consultar: http://packages.debian.org/stable/. Para hacerlo, puede emplear el programa dselect, que le permitirá entrar al repositorio principal de Debian o a otros, le permitirá elegir el o los programas que desee, le indicará si el programa es libre o no y le ayudará a resolver conflictos con otros programas o le indicará otros programas que son prerequisitos; tras esto, dselect se encarga de descargarlos a su máquina, instalarlos y configurarlos, todo automáticamente!
Puede darse el caso que el programa que usted busque no esté en ese repositorio, pero que lo logre encontrar en otra parte ya precompilado como deb. En ese caso puede descargarlo y emplear el programa dpkg para instalarlo en su sistema.
Para facilitar el uso de programas, evitando los posibles problemas que se presentan al compilar e instalar se emplean paquetes. Cada paquete es creado y mantenido por un voluntario (normalmente de Debian) e incluye programas precompilados, datos, archivos de configuración, scripts de instalación y desinstalación y datos de control (como nombre, firma digital, descripción, sección, paquetes de los que depende, paquetes con los que entra en conflicto, etc.). Dado que en un computador pueden instalarse muchos paquetes y su administración resulta delicada (porque algunos dependen o entran en conflicto con otros), en Debian se emplean herramientas que evitan conflictos y facilitan la instalación, desinstalación y actualización. La administración del sistema de paquetes (configuración de repositorios), así como las operaciones de paquetes pueden realizarse con el programa dselect que es guiado por menús y ofrece extensa ayuda. Como método de acceso es recomendable apt y especificar los repositorios editando el archivo /etc/apt/sources.list. Si planea emplear varios CDs con paquetes para Debian, al emplear apt-cdrom add el CD quedará registrado en /etc/apt/sources.list y podrá seleccionar e instalar los paquetes con dselect.
En esta sección se presentan detalles del sistema de paquetes de Debian y las herramientas que hay disponibles (las herramientas que usa dselect para automatizar la catalogación, obtención, instalación y desinstalación de paquetes).
Un paquete para Debian (archivo con postfijo .deb) es un archivo de ficheros creado con el programa ar [93] , que sigue diversas convenciones (por ejemplo contiene los datos del programa y datos para controlar instalación y desintalación comprimidos con gzip empleando nombres estándar). La herramienta dpkg-deb permite operar estos paquetes como archivos (no es recomendable instalar paquetes usando dpkg-deb).
Para instalar propiamente un paquete se emplea dpkg -i archivo .... El programa dpkg además de verificar dependencias, eliminar versiones previas del mismo paquete, extraer archivos, ejecutar los scripts de instalación y configurar el paquete, actualiza los archivos con información sobre paquetes instalados y disponibles: /var/lib/dpkg/status y /var/lib/dpkg/available (estos archivos son también llamados caches por apt-cache).
Los caches además del nombre, descripción, versión, arquitectura y espacio en disco de cada paquete incluyen información para organizar y controlar los paquetes: estado, estado de selección, sección, prioridad, paquetes de los que depende, paquetes que reemplaza, con los que entra en conflicto y los que recomienda. Los posibles estados de un paquete son: instalado, instalado a medias, no-instalado, desempaquetado (archivos ubicados pero no configurado), configurado a medias, archivos de configuración [94] (sólo los archivos de configuración estan). Los estados de selección (usados por dselect) son: instalar, desinstalar, limpiar (desinstalar incluso archivos de configuración). Las secciones posibles son main, contrib, non-US y non-free diferenciadas por los términos de las licencias y la posibilidad de redistribuirlos. Los paquetes en main cumplen con los lineamientos de Debian para decidir si un programa es libre o no [95] ---DFSG Debian Free Software Guidelines---, los paquetes en contrib cumplen con esos lineamientos pero requieren paquetes en non-free o non-US, los paquetes en non-free permiten libre redistribución pero no otros requerimientos de DFSG, los paquetes en non-US contienen material criptográfico que no puede exportarse de EUA (estos paquetes pueden ser usados en todo el mundo pero no pueden obtenerse de servidores en EUA). Las secciones se dividen en subsecciones: admin, base, comm, devel, doc, editors, games, graphics, interpreters, libs, mail, misc, net, science, shells, sound, tex, text, utils, web, x11, comm, devel. Las prioridades posibles son: required (mínimo para que el administrador inicie el sistema), important (aplicaciones mínimas encontradas en cualquier sistema Unix), standard (mínimo para tener un sistema en modo texto), optional (aplicación que no requiere ser instalada) y extra.
dpkg cuenta con varios comandos para operar paquetes y los caches, a continuación se presentan algunos:
Configura un paquete cuya configuración esta pendiente. Si en lugar de usar un nombre de paquete se emplea -a configura todos los paquetes cuya configuración esté pendiente. Para reconfigurar un paquete que ya está instalado y que empleaba debconf se usa dpkg-reconfigure paquete.
Desinstala un paquete. Si se emplea -a en lugar del nombre de un paquete desinstala todos los que estén pendientes. La desinstalación de un paquete no elimina archivos de configuración, para eliminarlos puede emplearse --purge en lugar de -r.
Elimina información sobre paquetes disponibles (/var/lib/dpkg).
Agrega al cache de paquetes disponibles, información de todos los paquetes en el directorio especificado y en sus subdirectorios. Pueden emplearse con un propósito análogo las opciones --update-avail y --merge-avail seguidas del nombre de un archivo con descripciones de paquetes (típicamente Packages.gz). Este método NO es el recomendado para actualizar paquetes disponibles, es más flexible emplear apt como se explica más adelante.
Presenta información de los paquetes disponibles que concuerden con la cadena. La cadena puede tener caracteres para expansión de nombres.
Presenta el estado de los paquetes especificados.
Busca paquetes cuya instalación no este completa.
Muestra la ubicación de los ficheros de los paquetes dados.
Busca el paquete que haya instalado el fichero especificado.
Descomprime un paquete en el directorio especificado sin instalarlo.
El inconveniente de usar dpkg -i archivo ... para instalar un paquete es que no resuelve problemas de dependencias (por ejemplo si el paquete que se instala requiere otro que aún no se ha instalado). Para resolver dependencias y obtener e instalar paquetes se requiere uno o más repositorios de paquetes y se usa apt-get install paquete ... [96].
Los repositorios de paquetes contienen un fragmento de los paquetes disponibles para Debian, pueden ser medios de almacenamiento (CD-ROMs, directorios locales o compartidos, disquettes) o sitios en una red a la que su computador está conectado (pueden usarse los protocolos FTP y HTTP). Los posibles repositorios de paquetes se especifican en el archivo /etc/apt/sources.list y normalmente el cache de paquetes disponibles en su sistema (/var/lib/dpkg/available) es extraido de los archivos Packages.gz de cada repositorio de paquetes.
Para actualizar el cache con la información más reciente en los repositorios puede emplear apt-get update, para agregar un CD-ROM como repositorio y actualizar el cache de paquetes disponibles emplee apt-cdrom con la opción add. Para agregar repositorios FTP o HTTP edite el archivo /etc/apt/souces.list y agregue líneas de la forma:
deb ftp://ftp.debian.org/debian stable main contrib non-free
remplazando el URL por el del depósito. A la derecha del URL se especifican las secciones que desea emplear de ese repositorio. La cadena "deb" a la izquierda del URL indica que se trata de un repositorio de paquetes precompilados, puede agregarse un repositorio de fuentes de programas con "deb-src".
Los comandos para apt-get son:
Actualiza caches de paquetes con información de los repositorios especificados en /etc/apt/sources.list. De cada repositorio extrae los paquetes disponibles del archivo Packages.gz. Debe hacerse antes de upgrade o dist-upgrade.
Instala las versiones más recientes de todos los paquetes, mientras para una instalación no requiera reinstalar otro paquete. Emplea los repositorios especificados en /etc/apt/sources.list.
Completa los cambios que un usuario haya especificado (pero no completado) con dselect.
Realiza la misma función de upgrade tratando de resolver conflictos entre nuevas versiones y existentes.
Obtiene el/los paquete(s) especificado(s) de alguna de los repositorios y lo(s) instala, así como los paquetes que sean requeridos. El nombre del paquete no es una ruta, es la identificación del paquete en el cache o una expresión regular de identificaciones de paquetes. Puede marcarse un paquete para su futura desintalación agregandole al nombre el caracter '-' (con '+' se marca para futura instalación).
Desinstala el(los) paquete(s) especificado(s). Sigue convenciones análogas a install.
Obtiene las fuentes de un paquete de un repositorio de fuentes (los especificados en /etc/apt/sources/lists en líneas deb-src). Dejas las fuentes en el directorio de trabajo.
Instala paquetes que satisfacen dependencias de uno o más paquetes.
Limpia el directorio donde se dejan paquetes extraidos de repositorios /var/cache/apt/archives.
Realiza la misma función de clean pero evita eliminar paquetes útiles.
Examina el cache de paquetes buscando posibles problemas en las dependencias.
Entre las opciones que apt-get recibe están:
Intenta solucionar problemas de dependencias.
Descarga todos los paquetes pero no los instala. Una vez descargados para instalarlos se usa el mismo comando de apt-get que los descargo pero sin -d.
Ignora paquetes faltantes.
Evita que se descarguen paquetes de la red (útil junto con -m).
Opción para establecer una opción que tome precedencia sobre las opciones del archivo de configuración. El archivo de configuración es indicado por la variable APT_CONFIG o en su defecto es /etc/apt/apt.conf.
El programa apt-cache le permite operar los caches de paquetes instalados y disponibles simultaneamente, algunas de las operaciones que permite son:
Muestra la información de control del paquete especificado.
Muestra información de dependencias de un paquete. Presenta tanto los paquetes de los cuales depende como los paquetes que dependen de ese (dependencias reversas).
Busca paquetes disponibles e instalados cuyo nombre concuerde con una expresión regular.
Cuando busque software, tenga en cuenta que funcione en el computador en el que operará (consulte los requerimientos de hardware y software), y revise la licencia del programa para asegurarse de la posibilidad de usarlo y redistribuirlo sin restricciones (ver Lectura Software de libre redistribución) ---si no lee con detalle la licencia, podría infringir la ley.
En Internet hay varios sitios que indexan fuentes de software de libre redistribución que funciona en Linux algunos son:
Para la distribución Debian hay varios repositorios de fuentes y precompilados, puede consultar el principal (el repositorio oficial de Debian) en: http://packages.debian.org/stable/.
Para configurar los repositorios que usa apt, puede emplear el programa apt-setup, o agregar líneas a su archivo /etc/apt/sources.list como:
Repositorio principal de Debian. Puede haber un espejo que funcione mejor con la conexión a Internet que tiene, consulte la lista de espejos en http://www.debian.org/misc/README.mirrors
Repositorio non-US de Alemania. Contiene software que no puede exportarse de EUA por restricciones en criptografía.
Repositorio de Ximian Gnome.
Repositorio de KDE para Debian 2.2.
Repositorio con versiones recientes de algunos paquetes (como el navegador Mozilla).
Repositorio de Debian-Jr, con paquetes enfocados a educación en casa (en especial juegos).
Adicionalmente puede encontrar un listado de otras fuentes no oficiales de paquetes debian en http://www.internatif.org/bortzmeyer/debian/apt-sources/ o http://channel.debian.de/faq/DebianDE-15.html.
En una red puede configurarse un computador para mantener los paquetes que se emplean en el resto y para así hacer actualizacioes por ftp o http. La forma más sencilla es copiar los paquetes en un directorio que pueda accederse por http y emplear tal ruta desde los computadores clientes en /etc/apt/sources.list. Por ejemplo si copia paquetes en un directorio que pueda consultarse con el URL http://servidor.micolegio.edu.co/paquetes agregue a /etc/apt/sources.list la línea:
deb http://servidor.micolegio.edu.co/paquetes /
También puede copiar los CDs de instalación de Debian en un directorio de ftp (digamos /debian) y agregar en /etc/apt/sources.list:
deb ftp://servidor.micolegio.edu.co/debian/cd1 stable/non-US main contrib deb ftp://servidor.micolegio.edu.co/debian/cd1 stable main contrib non-free deb ftp://servidor.micolegio.edu.co/debian/cd2 stable/non-US main contrib deb ftp://servidor.micolegio.edu.co/debian/cd2 stable main contrib non-free deb ftp://servidor.micolegio.edu.co/debian/cd3 stable/non-US main contrib deb ftp://servidor.micolegio.edu.co/debian/cd3 stable main contrib non-free
A continuación se explica como puede crear su propio repositorio de paquetes sólo con los paquetes que usted escoja [97].
Un repositorio http (o ftp) puede constar de uno o más directorios, en cada directorio debe haber paquetes .deb y un índice Packages o mejor Packages.gz. El índice contiene la descripción de cada paquete separada por varias líneas en blanco, por ejemplo una entrada de un índice es:
Package: asigna Version: 1.0-1 Priority: optional Section: education Maintainer: Vladimir Tamara <vladimir@tamarapatino.com> Architecture: i386 Filename: ./asigna_1.0-1_i386.deb Size: 18016 MD5sum: fef055d6ed02c211e3234aae34efda61 Description: This program helps to arrange a schedule for a school This program receives information and restrictions on the schedule of a school and tries to create one. The information it receives is: amount and labels for teachers, amount and labels for rooms, amount and labels for hours. The restrictions that can accept are unmovible teachers (at certain hour in certain room). installed-size: 104
Este índice preferiblemente debe generarse automáticamente con el programa dpkg-scanpackage, creando antes un archivo override. El archivo override contiene un mínimo de información de los paquetes, cada línea tiene nombre, prioridad y sección de un paquete separados por espacio. Por ejemplo una línea puede ser:
asigna optional education
Estando en el directorio del repositorio, si el archivo override está allí mismo se genera el índice de paquetes con:
dpkg-scanpackages . override > Packages rm Packages.gz gzip Packages
Para crear sus paquetes Debian, debe contar con las fuentes del programa que desea empaquetar e instalar, con las herramientas requeridas para compilarlo e instalar el paquete task-debian-devel. El nombre del directorio con fuentes debe ser de la forma paquete-version con el nombre del paquete en minúsculas y la versión con digitos, letras, punto y guión. Pase al directorio con las fuentes y ejecute dh_make, por ejemplo:
cd AA_Linux_colegio-1.1 dh_make -e paz@micolegio.edu.co -f ../AA_Linux_colegio-1.1.tar.gz
subdirectorio debian en tales fuentes
Cada vez que necesite regenerar el paquete ejecute desde el directorio con fuentes:
dpkg-buildpackage -rfakeroot
Para conocer más sobre librerías compartidas puede consultar las páginas man de ld.so, ldconfig y ldd. También puede consultar Program Library HOWTO. Sección 3: Shared Libraries. http://www.linuxdoc.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
Otra explicación del sistema de paquetes en Debian, está disponible en: Debian Guide. Removing and Installing Software. http://www.newriders.com/debian/html/noframes/node84.html
Puede aprender más sobre el sistema de paquetes de Debian, consultando las páginas man de dpkg, apt-get, apt-cache, dpkg-reconfigure y apt-cdrom. La guía del usuario de APT en el directorio /usr/doc/apt/guide.text.gz, una guía para actualizar varios computadores en red apoyandose en APT en /usr/doc/apt/offline.text.gz y los lineamientos de Debian sobre software libre (DFSG) en el Contrato Social de Debian /usr/doc/debian/social-contract.txt y en la red en http://www.debian.org/social_contract.
Para aprender más sobre compresión y archivos, consulte las páginas man de zip, unzip, gzip y tar.
El paquete maint-guide es una guía para quienes desean crear paquetes Debian (queda instalada al instalar task-debian-devel). Una vez instalada puede consultar la guía en diversos formatos en /usr/doc/maint-guide, o en Internet en http://www.debian.org/doc/maint-guide/
5.3.1. | Si un usuario instala un programa en el directorio /home/pedro/bin y una biblioteca compartida nueva que ese programa requiere en el directorio /home/pedro/lib, ¿qué debe agregar él a su archivo ~/.bashrc para poder ejecutarlo desde un intérprete de comandos sin especificar la ruta completa? |
5.3.2. | Con respecto al administrador no quiere usar LD_LIBRARY_PATH Con respecto al punto anterior, si el administrador tras acuerdo con el usuario quiere permitir a otros usuarios usar el programa desde un intérprete de comandos (para cargarlo sin especificar la ruta completa), pero quiere además: que el programa se mantenga en el directorio del usuario, que no se deben modificar los archivos de inicialización de los usuarios y que no se use LD_LIBRARY_PATH |
5.3.3. | Hay diversos sitios en Internet donde puede buscarse software para Linux: http://www.freshmeat.net, http://www.linux.org/apps/index.html. Busque otro y compárelos. |
5.3.4. | Puede consultar software enfocado al sector educativo que funciona sobre la plataforma de referencia en el primer apéndice de estas guías (ver Plataforma de referencia) y en Internet en índices especializados: http://ingenieria.sanmartin.edu.co/cgi-bin/slec/slec.cgi/slec.software_librered?style=slec&site=slec&, http://www.ofset.org/freeduc, http://richtech.ca/seul/, http://edvisor.org . Busque las fuentes de un programa de libre redistribución que necesite, instálelo y describa el proceso que siguió. |
5.3.5. | Examine la lista de bibliotecas compartidas que requiere la calculadora gcalc. |
5.3.6. | Algunos programas instalan o usan bibliotecas compartidas. Agregue la vía /opt/lib a la lista de directorios donde el sistema buscará bibliotecas compartidas. |
5.3.7. | Consiga un programa pequeño (que quepa en un disquete) en formato deb, instálelo, úselo y desinstálelo. |
5.3.8. | Cree un archivo .tar.gz de un directorio pequeño (por ejemplo cree uno de prueba con al menos dos archivos). |
[89] También soporta el formato binario aout en todas las arquitecturas, en Sparc soporta el formato iBCS2, con el módulo binfmt_misc puede agregarse soporte para otros formatos dinánicamente.
[90] Biblioteca compartida: en inglés shared library.
[91] En Linux recientes, por defecto todos los programas requieren bibliotecas compartidas ---al menos requieren libc. Aunque esto puede cambiarse durante la compilación del programa con la opción -static del compilador gcc.
[92] deb es la extensión de los archivo precompilados para la distribución Debian, en otras distribuciones el formato y extensión de los archivos precompilados es diferente.
[93] ar se usa para crear archivos con la sintaxis ar -r archivo fichero1 fichero2 ..., y para desempaquetarlos con ar -x archivo.
[94] El estado archivos de configuración es típico tras instalar y desintalar un programa, dpkg no borra archivos de configuración para que en siguientes instalaciones se tomen los valores por defecto de la instalación anterior.
[95] La licencia de cada paquete está en el archivo copyright del directorio /usr/doc/paquete.
[96] El programa apt-get resuelve dependencias y descarga paquetes de repositirios, para la instalación de un paquete ya descargado usa el programa dpkg.
[97] Un ejemplo es el repositorio de paquetes de Structio, donde en particular están estas guías. Si cuenta con acceso a Internet puede accederlo con apt agregando a /etc/apt/sources.list la línea deb http://structio.sourceforge.net/debian/binary-i386 /