Los paquetes de software son grupos de programas que tienen una relación y que ya se encuentran debidamente compilados para que sean usados de inmediato. Esto es una gran ventaja, ya que así no tendremos que compilar un tarball y configurarlo. Estos paquetes de software son muy fáciles de instalar, atualizar, examinar y quitar gracias a las utilidades de paquetes que slackware trae consigo, esto es lo que se denomina comunmente como sistema de paquetes.
Primero que nada debo aclarar que el tipo de formato de paquetes que usa SLackware Linux son aquellos con extensión .tgz, que simplemente es un archivo tar(1) comprimido con gzip(1). Gracias a este podemos mantener un orden en nuestro sistema de los paquetes de software que tenemos instalados o no, lo que nos será de gran ayuda a la hora de la mantención del sistema.
Aquí mostraré como es un paquete.tgz a grandes rasgos:
./ |
Como se puede apresiar, lo que ocurre, es que varios archivos serán extraidos a directorios específicos dentro de nuestro arbol de diretorios, con el fin de instalar el software contenido en ese paquete por completo, osea sus manuales, binario, librería y ortros que es variable ( todo depende del paquete a instalar) y un directorio install que posee una descripción del programa contenido en ese paquete ( en el archivo slack-desc) y un archivo llamado doinst.sh ke es el script encargado de crear link y ejecutar otros programas necesarios para el correcto funcionamiento del paquete instalado.
Los directorios o scripts contenidos en un paquete son variables, esto es explicado en sección llamada makepkg.
He aquí el segundo grupo que se compone principalmente de utilidades
que nos permiten crear, explorar y definir archivos para los paquetes que
serán instalados en nuestro sistema.
Estas utilidades son las que nos sirven para instalar, desinstalar,
actualizar, explorar y crear paquetes en nuestro sistema, las cuales escencialmente
son 5 y que podemos dividir en dos grupos:
El primer grupo es compuesto por aquellas utilidades
que nos permiten instalar(installpkg(8)) , eliminar(removepkg(8)) y actualizar(upgradepkg(8))
paquetes en nuestra querida distribución, además de una utilidad
llamada pkgtool que nos permite instalar y eliminar paquetes con una sencilla
interfáz en ncurses la que describiremos a continuación.
pkgtool(8) es un programa que funciona bajo la
consola y que posee una interfáz ncurses ( osea con menús interactivos)
el cual nos permite instalar y eliminar paquetes. Aquí hay una muestra
del menú principal de pkgtool:
Figura16-1. menu principal del pkgtool.
Este menú como pueden observar tiene varias opciones. La primera opcion
es Current ( directorio actual) y consiste en la instalación de paquetes
desde el directorio actual en el cual fué ejecutado el pkgtool. La
otra opción es Other ( otro directorio) en donde instalamos paquetes
desde un directorio distanto al que nos encontramos. Luego nos sigue la opción
FLoppy ( diskett) es para realizar una instalación de packetes desde
disketts. Después tenemos a Remove ( remover, quitar, desinstalar
) para des-instalar un paquete de software. Ahora tenemos a View ( ver )
que nos muestra los paquetes que tenemos instalados en el sistema. En estre
punto nos queda la opción Setup en donde nosotros podemos escoger
los scripts al momento de iniciar el sistema o en ese mismo instante para
modificar alguna configuración del sistema como lo puede se rla configuración
de las fuentes ( fonts), actualización de la base de documentos de
Gnome, la instalación de un kernel desde una unidad de diskett, la
creación de un disco de rescate de linux ( bootdisk), selección
del dispositivo del modem, configuración del hotplug, configuración
de lilo ( liloconfig), configuración del mouse ( mouseconfig), la
red ( netconfig), sendmail, selección de un tipo distinto de fuente,
selección de un tiempo de zona y finalmente la selcción de un
window manager para nuestro entorno X.
installpkg(8) nos permite instalar uno o varios
packetes *.tgz binarios( con la ayuda de comodines ), los que son designados
para ser usados en el sistema de la distribución Slackware Linux.
Su sintáxis es la siguiente:
# [ROOT=<path>] installpkg [opciones] <nombre_del_packete.tgz> |
A continuación podrán apreciar las diferentes opciones
de installpkg(8) en la siguiente tabla:
Tabla 16-1. Opciones del installpkg
Opción |
Descripción de la opción |
-warm nombrel_del_paquete |
Esta opción nos genera un reporte
de la salida estandar sobre que archivos y directorios hemos removido o sobre-escrito
en el caso de que hayamos intalado un paquete, pero no del paquete actualmente
instalado |
-root /otherroot |
Te permite instalar desde una localización diferente de / ( que es la por defecto ) que es donde se encuentra el archivo de sistema de root. En el ejemplo dado, es usado /otherroot en vez de otro. Seteando las variables del ambiente ROOT hace la mima cosa. |
-infobox |
Aquí usamos /bin/dialog para
mostrar el diálogo de información de el paquete que estamos
instalando. Primariamente es usando cuando installpkg(8) es llamado desde
algún otro script. |
-menu |
En esta opción usamos /bin/dialog
para mostrar un menú que nos preguntará si deceamos ono instalar
un(os) paquete(s). Generalmente es usado cuando installpkg(8) es llamado
desde otro script. |
-ask |
Usado en conjunto con el modo -menu.
Cuando seleccionamos un paquete, siempre nos pregunta si el paquete a instalar
regardless of what the package`s priority is. |
-priority ADD|REC|OPT|SKP |
Cuando usamos la opción -menu,
los niveles de prioridad del paquete ( encontrados en el archivo "tagfiles"
en el directorio del paquete) son usados automaticamente para instalar (
ADD) o saltar ( SKP) el paquete, o cuando es sugerido y recomendado (REC)
o opcional (OPT) a el usuario si el menú así lo muestra. Si
la prioridad es seteada desde la línea de comandos, los valores en
el archivo tagfile seran sobre-escritos para la lista entera de paquetes. |
-tagfile /somedir/tagfile |
Especifica un archivo diferente para
que sea usado en las prioridades de los paquetes ( en este ejemplo, /somedir/tagfile
será usado). El archivo "tagfile" usado por defecto es el que se encuentra
en el directorio de los paquetes. |
removepkg(8) quita, remueve o
elimina un paquete que a sido previamente instalado en Slackware. Su sintáxis
es la siguiente:
# [ROOT=<path>] removepkg [opción] <nombre_del_paquete> |
removepkg(8) utiliza las opciones que verémos más abajo
en la siguiente tabla:
Tabla 16-2. Opciones de removepkg
Opción |
Descripción de la opción |
-warn nombre_del_paquete |
Genera un reporte de la salida estandar
informando sobre que archivos y directorios han sido eliminados, pero actualmente
no remueve el paquete. |
-preserve nombre_del_paquete |
Si es especificado, el sub-arbol (
subtree ) completo del paquete es reconstruido en /tmp/preserved_packages/nombrel_del_paquete. |
-copy nombre_del_paquete |
Contruye una copia del paquete bajo
/tmp/preserved_packages/nombre_del_paquete, pero no lo elimina. ( el mismo
efecto que realizan las opciones -warn -preserve) |
-keep |
Guarda the intermediate
archivos creados por removepkg(8) ( delete_list, required_files, uniq_list,
del_link_list, required_links, required_list). Mayormente usadado para el
proposito de depurar software. |
SI ponemos la variable de entorno ROOT antes del comando removepkg(8), este directorio será usdo como directorio raíz. Esto tiene su utilidad cuando deceamos configurar nuevas unidades en nuestro directorio raíz, las que comunmente se montarn en el directorio /mnt/ o algún otro distinto de /.
Lo que removepkg realiza al momento
de ser ejecutado es mirar todos los paquetes que tenemos registrados ennuestro
sistema elimando solamente aquellos que nosotros hemos especificados. Aparte
de esto removepkg mira en el script post-instalación del paquete que
hemos especificado para así saber que link blando fué creado
al momento de la instalación del paquete para así poder eliminarlo
de nuestro sistema.
Mientras se realiza el proceso que describimos, removepkg nos muestra un informe del estado. Posterior a esto el contenido del paquete ( osea toda su base) es movida al directorio /var/log/removed_packages y el script post-instalación es movido hacia /var/log/removed_scripts.
Igualmente que installpkg tenemos la opción de usar comodines para así especificar una variedad de paquetes. upgradepkg(8) nos permite actualizar
Slackware a partir de paquetes binarios .tgz más recientes ( osea
de últimas versiones con bugs parchados etc ).
Su sintaxis es la siguiente:
# [ROOT=<path>] upgradepkg <nombre_del_paquete>... |
o
# [ROOT=<path>] upgradepkg \
Las opciones son descritas en la siguiente tabla:
Opción |
Descripción de la opción |
--install-new |
Normalmente upgradepkg solo
actualiza paquetes que ya se encuentran instalados en el sistema, y se salta
cualquier paquete que no se encuentra anteriormente instalado. Si --install-new
es especificado, the behavior es modificado para instalar el nuevo
paquete en adición de actualizar pquetes existentes. |
--reinstall | Upgradepkg usualmente se salta paquetes
si el paquete es exactamente el mismo ( ya sea qu coincidan en nombre, version,
arquitectura y numero de creación) que ya se encuentra instalado en
el sistema. Usando la opción --reinstall nosotros podremos actualizar
todos los paquetes incluso si la misma versión del paquete a instalar
ya se encuentra instalada en nuestro sistema. |
--verbose |
Nos muestra todos los detalles de
nuestra actualización. |
El proceso que realiza upgradepkg es primeramente instalar el paquete
y posterior a esto eliminar el paquete de version más antigua
de nuestro Slackware. Si ocurre que el nombre del paquete que deceamos actualizar
a cambiado, podemos usar el símbolo de porcentaje ( %) para así
mostrarle a upgradepkg el paquete viejo / que se encuentraen nuestro sistema)
y el nuevo paquete que estamos instalando.
El manejador de paquetes del Red Hat es un sistema de empaquetamiento popular hoy en dia. Muchos distribuidores de software estan ofreciendo sus prodcutos en formato RPM. Ya que este no es nuestro formato nativo, nostros recomendamos a las personas que no se confien de ellos. Sin embargo, algunas cosas solo estan disponibles en RPM(incluso la fuente).
Nosotros proporcionamos un programa que convierte los RPM a nuestro formato .tgz nativo. Esto le permite extraer los paquetes (quizas con el explodepkg) a un directorio temporal y examinar su contenido.
El programa rpm2tgz crea un paquete de Slackware con la extension .tgz, mientra que el rpm2targz crea un archvio con la extension tar.gz.
<old package name>%<new package name>
Para la creación de paquetes para nuestra querida distribución
Slackware Linux tenemos varias alternativas. Sinceramente no hay un modo
fijo de como crear un paquete, pero si creo que hay una especie de modelo
generalizado para crear los archivos. Este modo generalizado como lo denomino
yo, será el que trataré de describirles en las siguientes
líneas. Para aquellos que crean que esta es una tarea dificil pues
no teman, ya que para eso está esta guía aquí.
Comenzaré diciendo que el requisito es que
el paquete a crear sea un archivo .tgz ( osea un tar comprimido con gzip)
y que llegaramos a decear que haya un script de post-instalación,
este debe encontrarce en install/doinst.sh. Algo bueno sería tomar
un paquete que tengamos instalado en el sistema, ya que un paquete en el
sistema es un claro, preciso y simple ejemplo que podemos tomar en cuenta
en algún momento que nos encontremos desorientados.
Ahora mencionaré las utilidades que nos ayudará
con la creación de nuestros paquetes para Slackware Linux.
explodepkg(8) extrao el contenido
de un paquete .tgz ( como un paquete de software de Slackware) en el directorio
que nos encontramos. Sencillamente toma los paquetes y los extrae, pero no
los instala ni guarda en ningún registro de la base de datos de los
archivos instalados.
Su sintaxis es:
explodepkg paquete [ paquete2, paquete3, ...
]
La gracia de este comando esque nos permite explorar,
analizar y mantener cada uno de los archvios y directorios contenidos en
un paquete, ayudandonos así a la creación de parches y también
a la aplicación de actualizaciones al software dandonos así
la facultad de poder crear un archivo actualizado con ayuda de makepkg(8)
makepkg(8) nos permite la creación
de paquetes compatibles con Slackware. La construcción del paquete
se realiza usando el contenido de directorio actual y todos sus subdirectorios.
Si existe algún link simbólico, este es convertido en parte
de un script para poder ser reconstruido cuando estemos instalando el paquete.
Este código será agregado a la escritura primaria del script
( install/doinst.sh ), o en el caso que este script no existiera, este será
creado con el contenido pertinente. Al paquete se le escribirá la
salida a el archivo nombre_del_paquete el cual sera el nombre completo de
este, incluyendo su extensión (que usualmente será -tgz).
makepkg(8) es utilizado una vez que ya tenemos nuestro árbol de directorio listo, el cual será el árbol de directorios del paquete que vamos a crear.
Su sintáxis es:
makepkg [ -l, --linkadd y|n ] [ -c, --chown y|n
] nombre_del_paquete
Sus opciones son explicadas en la siguiente tabla:
Opción |
Descripción de la opción |
-l, --linkadd y|n |
Si y, agrega cualquier link simbólico
encontrado al script de post-instalación (doinst.sh) y lo elimina.
Esta es una acción recomendad. Si esta opción no es usada,
makepkg nos avisará si un link simbólico es encontrado. |
-c, --chown y|n |
Si y, makepkg resetea todos
los directorios con el permiso 755 y dueño a root:root. En general,
usted debe tener los permisos y los propietarios ( o dueños) trabajando
sin usted mismo, al confiar fijar esta opción a y es algo descuidado.
Esto no es por defecto. Si alguna opción no es proveida, makepkg nis
avisará. |
También les diré que los scripts de instalación se dividen en tres tipos soportados en el sistema de paquetes de Slackware.
El primero es el primary ( o primario) script de instalación.
Este lo podemos encontrar en el subdirectorio ./install y este tiene el nombre
de doinst.sh en orden para ser reconocido. Este ( y otros scrips de instalación)
están escritos usando la sintáxis básica Bourne shell
reconocida por la shell ash, puesto que este es el shell utilizado para ejecutar
el script de instalación desde un disco blando ( o diskett) de Slackware.
El segundo topo de script es el configuration (configuración)
script. Este lo podemos encontrar en el subdirectorio ./var/log/setup y debe
tener un nombre que comience con setup. Con el fin de ser reconocido. UN
ejemplo de esto es el srito de timezone ( zona de tiempo): /var/log/setup/setup.timecon-fig.
Este script es ejecutado durante la fase de configuración del setup,
y es vuelto a ejecutar al mismo tiempo que un usuario corre la opción
configure desde el setup.
$ tar zxvf xmms-1.2.2.tar.gz
$ cd xmms-1.2.2
$ ./configure
$ make
Los tags y tagfiles son archivos que le indican al programa de instalación
de Slackware que paquetes deben instalarce, cuales son sus opciones y que
archivos son seleccionados por defecto. Estos los podemos encontrar en el
primer directorio de series de software el cual se llama tagfile, el cual
contiene un listado de todos los paquetes de este tipo de serie con sus respectivos
estados, los cuales pueden ser:
Tabla16-3. Opciones de estado de los tagfiles
Opción | Descripción |
---|---|
ADD | El paquete es requerido por el sistema |
SKP | El paquete puede ser omitido automaticamente |
REC | El paquete no es requerido, pero es recomendado |
OPT | El paquete es opcional |
Su formato es:
<Nombre_del_paquete>: <Estado> |
Solo podemos especificar un paquete por línea. Para cada serie del software se tienen guardado tagfiles originales como tagfile.org lo que nos permite restaurar el original en aso de que hayamos hecho una modificación y no nos haya quedado como esperabamos.
Es recomendable que escribamos nuestros propios tagfiles, ya que así la instalación se realizará de acuerdo a nuestras encesidades y gustos, suprimiendonos muchas veces las tediosas tareas de estar eliminando software innecesario después de termnada la instalación. Como es lógico si utilizamos las opciones REC u OPT, se nos mostrará un cuadro de diálogo durante la instalación de los paquetes para darnos así la posibilidad de incluir o no algún paquete especifico. Para esto solo nos debemos serciorar de que los tagfiles estén en el mismo directorio en donde se ubicaban los tagfiles originales. O sino, también tenemos la alternativa de especificar una ruta diferente ( personalizada ) de la ubicación d enuestro tagfile en el caso que tengamos tagfiles creados o modificados por nosotros. En estos momentos se puede decir que usted ya se encuentra familiarizado
con todo lo que tenga relación a la instalación, eliminación,
actualización y creación de paquetes así como en que
consiste uno para nuestra distribución Slackware Linux. Usted también
a de tener concimiento sobre la creación de tagfiles especificos para
realizar una instalación de software más precisa y dinámica.
Guardando Archivos | Indice | Glosario |