Paquetes

Slackware Linux se divide en series de paquetes:

  • a: la base del sistema operativo, aplicaciones comunes en un sistema operativo GNU/Linux necesario para que inicie.
  • ap: aplicaciones en modo texto o línea de comandos.
  • d: herramientas de desarrollo (compiladores, interpretes, ensambladores, etc).
  • e: el editor de texto emacs.
  • f: documentación de distintos temas con respecto a la administración y uso de GNU/Linux.
  • k: el kernel Linux.
  • kde: el entorno de escritorio KDE.
  • kdei: soporte de internacionalización de KDE.
  • l: librerías o bibliotecas necesarias por las demás aplicaciones.
  • n: programas relacionados a redes o servicios de red.
  • t: soporte para TeX
  • tcl: el lenguaje de programación Tcl.
  • x: el X Window System (X.Org)
  • xap: aplicaciones en modo gráfico, en contraste con la serie ap.
  • xfce: el entorno de escritorio Xfce.
  • y: juegos en la línea de comandos.

El sistema de paquetes de Slackware Linux es relativamente simple en comparación al de otras distribuciones de GNU/Linux.

Un paquete de Slackware Linux es un archivo comprimido en formato XZ (en la actualidad) con extención txz:

El formato de compresión XZ, creado y mantenido por Lasse Collin, utiliza el algoritmo de compresión LZMA2, a través de la biblioteca liblzma. Es el formato utilizado hoy en día para la compresión de archivos TAR de códigos fuente, aunque GZIP aún es el formato más utilizado a la fecha para distribución de código fuente de Software Libre. - Joel Barrios Dueñas

El directorio /var/log/packages/ contiene archivos en texto plano que llevan por nombre el paquete que se encuentra instalado:

root@servidor:~# ls /var/log/packages/
ConsoleKit2-1.0.0-x86_64-3   tstool-2.0.2-x86_64-1        pth-2.0.7-x86_64-1
Cython-0.23.4-x86_64-1       iw-4.3-x86_64-1              pulseaudio-9.0-x86_64-1
GConf-3.2.6-x86_64-3         asper-1.900.1-x86_64-5       pycairo-1.10.0-x86_64-1
...
...
...
ipw2200-fw-3.1-fw-1          procmail-3.22-x86_64-2       zoo-2.10_22-x86_64-1
irssi-0.8.19-x86_64-1        procps-ng-3.3.11-x86_64-1    zsh-5.2-x86_64-1
iso-codes-3.67-noarch-1      proftpd-1.3.5b-x86_64-1
ispell-3.2.06-x86_64-1       pssh-2.3.1-x86_64-1

El nombre de dichos archivos informa sobre el nombre del paquete, su versión, arquitectura, el número de veces compilado y, opcionalmente, una etiqueta usada para indicar si es una actualización o un paquete creado por otra persona. Por ejemplo:

  • /var/log/packages/bash-4.3.046-x86_64-1
  • /var/log/packages/nano-2.6.0-x86_64-1
  • /var/log/packages/git-2.9.0-x86_64-1
  • /var/log/packages/openssh-7.3p1-x86_64-1_slack14.2
  • /var/log/packages/php-5.6.24-x86_64-1_slack14.2

El contenido de alguno de los archivos mencionados indica que fue instalado, reflejando la estructura jerarquica del sistema de archivos desde la /, entre otra información relacionada al paquete:

root@servidor:~# cat /var/log/packages/nano-2.6.0-x86_64-1 
PACKAGE NAME:     nano-2.6.0-x86_64-1
COMPRESSED PACKAGE SIZE:     454.0K
UNCOMPRESSED PACKAGE SIZE:     2.1M
PACKAGE LOCATION: /var/log/mount/slackware64/ap/nano-2.6.0-x86_64-1.txz
PACKAGE DESCRIPTION:
nano: nano (Nano's ANOther editor, an enhanced free Pico clone)
nano:
nano: nano is a small, free, and friendly editor.  It aims to copy Pico's
nano: look and feel while providing additional (or disabled by default)
nano: features that are missing from Pico, such as "search and replace" or
nano: "go to line and column number".
nano:
nano: Chris Allegretta is Nano's author.
nano:
nano: Homepage:  http://www.nano-editor.org
nano:
FILE LIST:
./
etc/
etc/nanorc.new
install/
install/doinst.sh
install/slack-desc
usr/
usr/bin/
usr/bin/nano
usr/doc/
usr/doc/nano-2.6.0/
usr/doc/nano-2.6.0/ABOUT-NLS
...
...
...
usr/share/nano/python.nanorc
usr/share/nano/ruby.nanorc
usr/share/nano/sh.nanorc
usr/share/nano/spec.nanorc
usr/share/nano/tcl.nanorc
usr/share/nano/tex.nanorc
usr/share/nano/texinfo.nanorc
usr/share/nano/xml.nanorc

De esta forma la instalación de un paquete en Slackware Linux es descomprimir su contenido en la /.

Slackware Linux incorporta las siguientes herramientas para la administración de paquetes:

  • installpkg: para la instalación de un paquete.
  • removepkg: para remover un paquete.
  • upgradepkg: para actualizar un paquete.

slackpkg, previamente visto para la actualización de Slackware Linux, internamente hace uso de las anteriores herramientas.

Otra herramienta, muy importante, es makepkg que permite crear un paquete a partir del contenido de un directorio que incluye los archivos que conformarán el paquete.

La creación de un paquete de forma manual está fuera del alcance de este documento ya que requiere de una mayor familiaridad con el sistema operativo, aún así en las siguientes instrucciones se hará uso de makepkg de forma indirecta.

Extras

Slackware Linux incluye algunos paquetes extras que no son instalados durante su instalación completa, algunos de ellos son: aspell, bash-completion y tigervnc (similar a TightVNC).

Para la instalación de todos estos paquetes ejecuta como usuario root: slackpkg install extra.

SlackBuilds

El proceso de compilar y empaquetar un programa puede ser algo tedioso y propenso a errores al realizarse de forma manual. Por lo anterior los paquetes de Slackware Linux, y de muchas otras distribuciones, se realiza mediante scripts para programar la compilación y creación de paquetes.

Por ejemplo el paquete ntfs-3g es quien permite el acceso de lectura/escritura a dispositivos o particiones con el sistema de archivo NTFS (sistema operativo Windows/DOS). Puedes encontrar en el siguiente URL el SlackBuild que permite su compilación: http://mirrors.slackware.com/slackware/slackware64-14.2/source/a/ntfs-3g/.

Del URL dado encontrarás el archivo ntfs-3g.SlackBuild que es un script de shell de Bash y contiene todas las instrucciones o comandos para compilar y crear un paquete para ntfs-3g mediante makepkg (al final del mismo).

Para contrastar un SlackBuild con lo ofrecido por otras distribuciones de GNU/Linux:

SlackBuilds.org

El proyecto SlackBuilds.org o SBo, independiente a Slackware Linux, lleva varios años ofreciendo un gran repositorio de SlackBuilds para el empaquetado de programas: https://slackbuilds.org/repository/14.2/. Por ejemplo los siguientes servidores web:

sbopkg

sbopkg es un proyecto independiente a Slackware Linux que ofrece una forma comoda para la instalación/actualización de paquetes no oficiales en Slackware Linux haciendo uso de los SlackBuilds ofrecidos por el proyecto SBo.

  1. Descarga la versión más reciente de sbopkg encontrada en https://www.sbopkg.org/downloads.php, 0.38.0 es este momento:

     root@servidor:~# wget https://github.com/sbopkg/sbopkg/releases/download/0.38.0/sbopkg-0.38.0-noarch-1_wsr.tgz
     --2016-08-24 10:01:56--  https://github.com/sbopkg/sbopkg/releases/download/0.38.0/sbopkg-0.38.0-noarch-1_wsr.tgz
     Resolving github.com (github.com)... 192.30.253.113
     Connecting to github.com (github.com)|192.30.253.113|:443... connected.
     HTTP request sent, awaiting response... 302 Found
     ...
     HTTP request sent, awaiting response... 200 OK
     Length: 116062 (113K) [application/octet-stream]
     Saving to: ‘sbopkg-0.38.0-noarch-1_wsr.tgz’
     sbopkg-0.38.0-noarch-1_wsr.tgz               100%[================================>] 113.34K   266KB/s    in 0.4s    
     2016-08-24 10:01:58 (266 KB/s) - ‘sbopkg-0.38.0-noarch-1_wsr.tgz’ saved [116062/116062]
    
  2. Verifica la integridad del paquete descargado:

     root@servidor:~# md5sum sbopkg-0.38.0-noarch-1_wsr.tgz && echo 8b88ddab4f8948a26a759c3492619c33
     8b88ddab4f8948a26a759c3492619c33  sbopkg-0.38.0-noarch-1_wsr.tgz
     8b88ddab4f8948a26a759c3492619c33
     root@servidor:~# echo '8b88ddab4f8948a26a759c3492619c33  sbopkg-0.38.0-noarch-1_wsr.tgz' | md5sum -c -
     sbopkg-0.38.0-noarch-1_wsr.tgz: OK
    
  3. Instala a sbopkg:

     root@servidor:~# installpkg sbopkg-0.38.0-noarch-1_wsr.tgz 
     Verifying package sbopkg-0.38.0-noarch-1_wsr.tgz.
     Installing package sbopkg-0.38.0-noarch-1_wsr.tgz:
     PACKAGE DESCRIPTION:
     # sbopkg  (SlackBuilds.org Package Browser)
     #
     # Sbopkg is a command-line and dialog-based tool to interact with the
     # SlackBuilds.org repository, a collection of third-party SlackBuild
     # scripts to build Slackware packages.
     #
     # Homepage   :  https://www.sbopkg.org
     # Development:  https://github.com/sbopkg/sbopkg
     #
     Executing install script for sbopkg-0.38.0-noarch-1_wsr.tgz.
     Package sbopkg-0.38.0-noarch-1_wsr.tgz installed.
    

    El paquete de sbopkg creará los siguientes archivos, siendo /etc/sbopkg/sbopkg.conf su archivo de configuración:

     root@servidor:~# tree -aF /etc/sbopkg/
     /etc/sbopkg/
     ├── renames.d/
     │   ├── 50-default.renames
     │   └── README -> /usr/doc/sbopkg-0.38.0/README-renames
     ├── repos.d/
     │   ├── 40-sbo.repo
     │   ├── 50-local.repo
     │   ├── 60-SBo-current.repo
     │   ├── 90-SBo-master.repo
     │   └── README -> /usr/doc/sbopkg-0.38.0/README-repos
     └── sbopkg.conf
    
     2 directories, 8 files
    
  4. Descarga la colección de SlackBuilds:

     root@servidor:~# sbopkg -r
    
     The following directories do not exist:
    
     Variable                   Assignment
     --------                   ----------
     REPO_{ROOT,NAME,BRANCH} -> /var/lib/sbopkg/,SBo/,14.2
     LOGFILE directory -------> /var/log/sbopkg
     QUEUEDIR ----------------> /var/lib/sbopkg/queues
     SRCDIR ------------------> /var/cache/sbopkg
     TMP ---------------------> /tmp/SBo
    
     You can have sbopkg create them or, if these values are incorrect, you can
     abort to edit your config files or pass different flags.
    
     (C)reate or (A)bort?:
    

    Ingresa c y aprieta la tecla de Enter:

     (C)reate or (A)bort?: c
     Syncing with the remote repository into /var/lib/sbopkg/SBo/14.2.
     receiving incremental file list
     ./
     CHECKSUMS.md5
     ChangeLog.txt
     README
     SLACKBUILDS.TXT
     ...
     ...
     ...
     sent 809,766 bytes  received 82,955,499 bytes  482,796.92 bytes/sec
     total size is 80,060,236  speedup is 0.96
    
     Rsync with the SBo repository for Slackware 14.2 complete.
    
     Importing SBo repository for Slackware 14.2 GPG Key...
     Import done.
    
     ***SYNC COMPLETE***
    

Sobre el comportamiento de sbopkg

sbopkg administra algunos directorio para poder realizar su trabajo:

  1. /var/lib/sbopkg/SBo/14.2: el repositorio local o directorio con los SlackBuilds mantenidos por el proyecto SBo. Este directorio se actualiza cuando uno ejecuta sbopkg -r.
  2. /var/log/sbopkg: registros o logs sobre la ejecución de un SlackBuild.
  3. /var/cache/sbopkg: directorio donde se mantiene el código fuente o archivos necesarios para compilar-construir un paquete.
  4. /tmp/SBo: directorio temporal usado para compilar-construir un paquete.
  5. /var/lib/sbopkg/queues: directorio con queues. Un queue es un archivo que instruye a sbopkg sobre el orden y las opciones que debe usar para compilar-contruir una cola (colección) de paquete.

Busqueda de SlackBuilds

Para realizar la busqueda de un SlackBuild en base a su nombre se tienen las opciones -g y -s:

  • Buscar SlackBuilds que tengan en su nombre la palabra web:

     root@servidor:~# sbopkg -g web
     Searching for web
     Found the following matches for web:
     desktop/wmwebcam
     development/WebStorm
     development/google-webdesigner
     development/noweb
     graphics/gnome-web-photo
     libraries/WebOb
     libraries/libwebp
     libraries/libwebsocketpp
     libraries/libwebsockets
     libraries/qt5-webkit
     libraries/web.py
     libraries/webkit2gtk
     libraries/webkitgtk
     libraries/webkitgtk3
     network/EarthReader-Web
     network/pidgin-skypeweb
     network/webalizer
     network/webkit-sharp
     network/weboob
     perl/perl-WebService-MusicBrainz
     python/python-twisted-web2
     python/pywebkitgtk
     python/webassets
     python/websocket-client
     system/graphite-web
     system/icinga-web
     system/icingaweb2
     system/webcore-fonts
     system/webmin
    
  • Buscar SlackBuilds que tengan en su nombre la palabra http:

     root@servidor:~# sbopkg -g http
     Searching for http
     Found the following matches for http:
     haskell/haskell-HTTP
     haskell/haskell-http-client
     haskell/haskell-http-client-tls
     haskell/haskell-http-types
     libraries/http-parser
     libraries/libmicrohttpd
     network/bozohttpd
     network/darkhttpd
     network/httpie
     network/httping
     network/httptunnel
     network/lighttpd
     network/lighttpd2
     network/nghttp2
     network/slowhttptest
     network/thttpd
     perl/perl-AnyEvent-HTTP
     perl/perl-HTTP-Cache-Transparent
     perl/perl-HTTP-Proxy
     perl/perl-LWP-Protocol-https
     perl/perl-http-cookies
     perl/perl-http-daemon
     perl/perl-http-date
     perl/perl-http-message
     perl/perl-http-negotiate
     perl/perl-http-response-encoding
     perl/perl-http-server-simple
     perl/perl-net-http
     python/httplib2
     python/ndg_httpsclient
     ruby/rubygem-http_parser.rb
    
  • Buscar SlackBuilds que tengan en su nombre la palabra virt:

     root@servidor:~# sbopkg -g virt
     Searching for virt
     Found the following matches for virt:
     games/virtualjaguar-libretro
     libraries/libvirt
     libraries/libvirt-glib
     libraries/libvirt-python
     python/virtualenv
     python/virtualenv-clone
     python/virtualenvwrapper
     system/virt-manager
     system/virt-viewer
     system/virtualbox
     system/virtualbox-addons
     system/virtualbox-extension-pack
     system/virtualbox-kernel
     system/virtualbox-kernel-addons
    

Instalación de paquetes

La instalación un de paquete consta principalmente de:

  • Reconocer sus dependencias: es uno de los temas más cruciales para las distribuciones de GNU/Linux y sus usuarios.

    Una dependencia es un paquete que debe de estar instalado previa compilación o construcción de un paquete. La dependencia puede ser una biblioteca (o librería) o bien un programa. Por ejemplo: feh es un programa, en la línea de comandos, que permite visualizar imagenes así como colocar una imagen como fondo de pantalla.

    Buscando a feh mediante sbopkg:

     root@servidor:~# sbopkg -g feh
     Searching for feh
     Found the following matches for feh:
     graphics/feh
    

    El contenido de /var/lib/sbopkg/SBo/14.2/graphics/feh/:

     root@servidor:~# tree /var/lib/sbopkg/SBo/14.2/graphics/feh/
     /var/lib/sbopkg/SBo/14.2/graphics/feh/
     ├── README
     ├── feh.SlackBuild
     ├── feh.info
     └── slack-desc
    
     0 directories, 4 files
    
    • El archivo README contiene información sobre el paquete y en ocasiones algunas recomendaciones para su uso.
    • El archivo feh.SlackBuild es un shell script de Bash para compilar y construir el paquete de feh.
    • El archivo feh.info contiene declaración de variables con información necesaria sobre feh.

    El contenido de /var/lib/sbopkg/SBo/14.2/graphics/feh/feh.info:

     PRGNAM="feh"
     VERSION="2.14"
     HOMEPAGE="http://feh.finalrewind.org"
     DOWNLOAD="http://feh.finalrewind.org/feh-2.14.tar.bz2"
     MD5SUM="79c2e287f00071066b2857ade0b03560"
     DOWNLOAD_x86_64=""
     MD5SUM_x86_64=""
     REQUIRES="imlib2"
     MAINTAINER="Luka Novsak"
     EMAIL="lnovsak@gmail.com"
    

    La línea más sobresaliente es REQUIRES="imlib2" la cual indica que feh requiere de imlib2 para su funcionamiento.

    Buscando a imlib2 mediante sbopkg:

     root@servidor:~# sbopkg -g imlib2
     Searching for imlib2
     Found the following matches for imlib2:
     libraries/imlib2
    

    El contenido de /var/lib/sbopkg/SBo/14.2/libraries/imlib2/imlib2.info nos hace ver que imlib2 ya no requiere de algo más, por lo que concluiremos con que feh es instalado después de imlib2:

     root@servidor:~# sbopkg -i imlib2 -i feh
     ###########################################
            New queue process started on:
            Mon Aug 29 21:22:06 CDT 2016
     ###########################################
     +++++++++++++++++++++++++++++++++++++++++++
     PRE-CHECK LOG
     Using the SBo repository for Slackware 14.2
     Queue Process:  Download, build, and install
     imlib2:
       Checking GPG for imlib2.tar.gz ... OK
       Processing imlib2 1.4.9-1
       Using original .info file
       Using original SlackBuild file
       No build options selected.
     feh:
       Checking GPG for feh.tar.gz ... OK
       Processing feh 2.14-1
       Using original .info file
       Using original SlackBuild file
       No build options selected.
     +++++++++++++++++++++++++++++++++++++++++++
     Pre-check complete.
     Do you wish to proceed based on the search results above? Packages not
     found will be skipped during the process.
     (P)roceed or (Q)uit?:
    

    Responde con p para proceder:

     Processing imlib2
     imlib2:
     imlib2 not found in /var/cache/sbopkg.
     --2016-08-29 21:22:51--  http://downloads.sourceforge.net/enlightenment/imlib2-1.4.9.tar.gz
     ...
     ...
     ...
     Slackware package /tmp/sbopkg.n2PGe7/sbopkg-sbooutputdir/imlib2-1.4.9-x86_64-1_SBo.tgz created.
     Done building package for imlib2.
     Built package: imlib2-1.4.9-x86_64-1_SBo.tgz
     +==============================================================================
     | Installing new package /tmp/imlib2-1.4.9-x86_64-1_SBo.tgz
     +==============================================================================
     ...
     ...
     ...
     Processing feh
     feh:
     feh not found in /var/cache/sbopkg.
     --2016-08-29 21:23:33--  http://feh.finalrewind.org/feh-2.14.tar.bz2
     ...
     ...
     ...
     Slackware package /tmp/sbopkg.n2PGe7/sbopkg-sbooutputdir/feh-2.14-x86_64-1_SBo.tgz created.
     Done building package for feh.
     Built package: feh-2.14-x86_64-1_SBo.tgz
     +==============================================================================
     | Installing new package /tmp/feh-2.14-x86_64-1_SBo.tgz
     +==============================================================================
     ...
     ...
     ...
     ###########################################
               Queue process complete!
     ###########################################
    
  • Reconocer sus requerimientos: algunos paquetes requieren no solo la resolución de dependencias si no también algunos cambios en la configuración actual del sistema operativo. Este tema de igual forma diferencia a las distribucionesde GNU/Linux ya que algunas pueden tomar demasiadas decisiones por uno, el administrador.

    Los requerimientos pueden ser:

    • Cambios en la configuración de ejecución del kernel Linux.
    • Creación de cuentas de usuarios o grupos previa compilación, construcción, instalación o ejecución de un paquete.
    • Ejecución de algún programa para permitir la compilación o construcción del paquete en cuestión.

    Como siempre, la mejor opción es leer la documentación sobre el paquete o programa que se quiere integrar o ejecutar al sistema operativo.

    Por ejemplo: PostgreSQL, el sistema gestor de base de datos.

    Buscando a PostgreSQL mediante sbopkg:

     root@servidor:~# sbopkg -g postgresql
     Searching for postgresql
     Found the following matches for postgresql:
     system/postgresql
    

    El contenido de /var/lib/sbopkg/SBo/14.2/system/postgresql/:

     root@servidor:~# tree /var/lib/sbopkg/SBo/14.2/system/postgresql/
     /var/lib/sbopkg/SBo/14.2/system/postgresql/
     ├── README
     ├── README.SBo
     ├── doinst.sh
     ├── postgresql.SlackBuild
     ├── postgresql.info
     ├── postgresql.logrotate
     ├── rc.postgresql.new
     ├── setup.postgresql
     └── slack-desc
    
     0 directories, 9 files
    

    Leyendo el contenido de los archivos README y README.SBo uno podrá informarse de como integrar a PostgreSQL a Slackware Linux:

    • Se necesita el grupo de usuarios postgres para su uso.
    • Se necesita el usuario postgres, siendo propietario del directorio /var/lib/pgsql.
    • Se necesita crear el conjunto de archivos propios de postgresql para su ejecución en /var/lib/pgsql mediante el comando initdb.
    • Se contará con un script de shell para administrar el inicio, la detención y el reinicio de PostgreSQL: /etc/rc.d/rc.postgresql.
    • Si se quiere que el sistema operativo se encargue de ininiciar y detener de forma automatica a PostgreSQL se tiene que modificar el archivo /etc/rc.d/rc.local.
    • Se dan otras opciones para integrar algunas extensiones así como consideraciones para actualizar de versión mayor a PostgreSQL.

Actualización de sbopkg

sbopkg puede actualizado mediante el parámetro -u.

  1. Para obtener la versión instalada de sbopkg:

     root@servidor:~# sbopkg -v
     0.38.0
    

    La versión actualmente instalada es 0.38.0.

  2. Actualizando a sbopkg:

     root@servidor:~# sbopkg -u
     Checking http://www.sbopkg.org for an update...
     Your version of sbopkg: 0.38.0
     Latest version of sbopkg found on sbopkg.org: 0.38.1
     Different versions reported. (D)ownload the remote package or (Q)uit?:
    

    sbopkg indica que existe una nueva versión: 0.38.1. Ingresando Q y apretando la tecla Enter descargará la nueva versión.

     Different versions reported. (D)ownload the remote package or (Q)uit?:d
     --2016-09-03 15:37:24--  https://github.com/sbopkg/sbopkg/releases/download/0.38.1/sbopkg-0.38.1-noarch-1_wsr.tgz
     Resolving github.com (github.com)... 192.30.253.113
     Connecting to github.com (github.com)|192.30.253.113|:443... connected.
     HTTP request sent, awaiting response... 302 Found
     ...
     ...
     ...
     HTTP request sent, awaiting response... 200 OK
     Length: 116676 (114K) [application/octet-stream]
     Saving to: ‘sbopkg-0.38.1-noarch-1_wsr.tgz’
     sbopkg-0.38.1-noarch-1_wsr.tgz               100%[================================>] 113.94K   266KB/s    in 0.4s    
     2016-09-03 15:37:26 (266 KB/s) - ‘sbopkg-0.38.1-noarch-1_wsr.tgz’ saved [116676/116676]
     ...
     ...
     ...
     Download complete. The downloaded file is located at:
    
     /tmp/sbopkg-0.38.1-noarch-1_wsr.tgz
    
     You can now quit sbopkg and upgrade sbopkg manually.
     Once you have upgraded sbopkg, please be sure to check the
     /etc/sbopkg/sbopkg.conf.new file for any changes that may need to be merged
     into your existing /etc/sbopkg/sbopkg.conf file.
     You can also view a complete ChangeLog.txt in the
     /usr/share/doc/sbopkg-0.38.1/ directory or online at:
     http://www.sbopkg.org/changelog
    
  3. Actualizar el paquete de sbopkg:

     root@servidor:~# upgradepkg /tmp/sbopkg-0.38.1-noarch-1_wsr.tgz 
     +==============================================================================
     | Upgrading sbopkg-0.38.0-noarch-1_wsr package using /tmp/sbopkg-0.38.1-noarch-1_wsr.tgz
     +==============================================================================
     Pre-installing package sbopkg-0.38.1-noarch-1_wsr...
     Removing package /var/log/packages/sbopkg-0.38.0-noarch-1_wsr-upgraded-2016-09-03,15:42:09...
       --> Deleting /usr/doc/sbopkg-0.38.0/HACKING
     ...
     ...
     ...
       --> Deleting empty directory /usr/doc/sbopkg-0.38.0/
     Verifying package sbopkg-0.38.1-noarch-1_wsr.tgz.
     Installing package sbopkg-0.38.1-noarch-1_wsr.tgz:
     PACKAGE DESCRIPTION:
     # sbopkg  (SlackBuilds.org Package Browser)
     #
     # Sbopkg is a command-line and dialog-based tool to interact with the
     # SlackBuilds.org repository, a collection of third-party SlackBuild
     # scripts to build Slackware packages.
     #
     # Homepage   :  https://www.sbopkg.org
     # Development:  https://github.com/sbopkg/sbopkg
     #
     Executing install script for sbopkg-0.38.1-noarch-1_wsr.tgz.
     Package sbopkg-0.38.1-noarch-1_wsr.tgz installed.
     Package sbopkg-0.38.0-noarch-1_wsr upgraded with new package /tmp/sbopkg-0.38.1-noarch-1_wsr.tgz
    

Lecturas

Uso de sbopkg

Se darán otros ejemplos en el uso de un SlackBuild, tratando de plantear algunas situaciones que se presentan en la compilación y empaquetado de una aplicación o una librería.

JDK

El JDK (Java Development Kit) ofrecido por Oracle no forma parte oficialmente de Slackware Linux desde que Oracle retiró la licencia para distribuir Java en distribuciones de GNU/Linux (2011).

Existen, al menos, dos SlackBuilds para obtener el JDK:

  • development/jdk: para empaquetar (sin compilar) el JDK de Oracle, la implementación privativa de la plataforma Java.
  • development/openjdk8: para compilar y empaquetar a OpenJDK, la implementación libre y abierta de la plataforma Java.

Se darán los pasos para empaquetar el JDK de Oracle por ser un proceso más rápido de llevar a cabo. OpenJDK requiere de al menos 2 hrs. y 11GB en disco duro (/tmp) para su compilación y empaquetado.

  1. Accede a http://www.oracle.com/technetwork/es/java/javase/downloads/index.html y da clic al botón Download bajo JDK en la sección Java SE 8u101 / 8u121.

  2. En la sección Java SE Development Kit 8u121 da clic a la opción Accept License Agreement y descarga el archivo jdk-8u121-linux-x64.tar.gz.

  3. El archivo jdk-8u121-linux-x64.tar.gz muevelo al directorio /var/cache/sbopkg/ para que sbopkg lo encuentré al iniciar el empaquetado.

    Suponiendo que el archivo jdk-8u121-linux-x64.tar.gz se encuentre en /home/alumno/Downloads:

     root@servidor:~# mv /home/alumno/Downloads/jdk-8u121-linux-x64.tar.gz /var/cache/sbopkg/
    
  4. Ejecuta sbopkg -i jdk para iniciar el empaquetado y en caso de exito realizar la instalación.

     root@servidor:~# sbopkg -i jdk
     ###########################################
            New queue process started on:
            Tue Sep 13 23:04:22 CDT 2016
     ###########################################
     +++++++++++++++++++++++++++++++++++++++++++
     PRE-CHECK LOG
     Using the SBo repository for Slackware 14.2
     Queue Process:  Download, build, and install
     jdk:
       Checking GPG for jdk.tar.gz ... OK
       Processing jdk 8u121-1
       Using original .info file
       Using original SlackBuild file
       No build options selected.
     +++++++++++++++++++++++++++++++++++++++++++
     Pre-check complete.
     Do you wish to proceed based on the search results above? Packages not
     found will be skipped during the process.
     (P)roceed or (Q)uit?: p
     Processing jdk
     jdk:
     Found jdk-8u121-linux-x64.tar.gz in /var/cache/sbopkg.
     Checking MD5SUM:
       MD5SUM check for jdk-8u121-linux-x64.tar.gz ... OK
     Building package for jdk...
     jdk1.8.0_102/
     jdk1.8.0_102/THIRDPARTYLICENSEREADME-JAVAFX.txt
     jdk1.8.0_102/THIRDPARTYLICENSEREADME.txt
     jdk1.8.0_102/lib/
     jdk1.8.0_102/lib/jexec
     jdk1.8.0_102/lib/javafx-mx.jar
     jdk1.8.0_102/lib/packager.jar
     ...
     ...
     ...
     +==============================================================================
     | Installing new package /tmp/jdk-8u121-x86_64-1_SBo.tgz
     +==============================================================================
     ...
     ...
     ...
     Done upgrading/installing package.
     +++++++++++++++++++++++++++++++++++++++++++
     SUMMARY LOG
     Using the SBo repository for Slackware 14.2
     Queue Process:  Download, build, and install
     jdk:
       MD5SUM check for jdk-8u121-linux-x64.tar.gz ... OK
       Building package jdk-8u121-x86_64-1_SBo.tgz ... OK
       Installing package jdk-8u121-x86_64-1_SBo.tgz ... OK
     +++++++++++++++++++++++++++++++++++++++++++
     ###########################################
               Queue process complete!
     ###########################################
    

rxvt-unicode

rxvt-unicode, la terminal virtual, no tiene dependencia alguna por lo que su instalación es con el comando sbopkg -i rxvt-unicode.

PostgreSQL

PostgreSQL, el sistema gestor de base de datos, requiere previa compilación e instalación la creación de un grupo de usuario y una cuenta de usuario en el sistema operativo. Las indicaciones están dadas en https://slackbuilds.org/repository/14.2/system/postgresql/:

root@servidor:~# groupadd -g 209 postgres
root@servidor:~# useradd -u 209 -g 209 -d /var/lib/pgsql postgres

Al momento de ejecutar groupadd el archivo /etc/group será alteratdo, mientras que con el comando useradd el archivo /etc/passwd será alterado:

root@servidor:~# grep 209 /etc/group
postgres:x:209:
root@servidor:~# grep 209 /etc/passwd
postgres:x:209:209::/var/lib/pgsql:/bin/bash

Una vez creado el grupo y usuario se instala a PostgreSQL con el comando sbopkg -i postgresql.

pgAdmin3

pgAdmin3, el cliente gráfico para PostgreSQL, puede ser instalado con el comando sbopkg -i wxPython -i pgadmin3.

wxPython es una dependencia de pgadmin3 para su instalación:

wxPython es un binding de la biblioteca gráfica wxWidgets para el lenguaje de programación Python. La biblioteca wxWidgets se caracteriza por ser multiplataforma, por lo que su uso junto a Python permite el desarrollo rápido de aplicaciones gráficas multiplataforma. - Wikipedia

Debe observarse que, de acuerdo a /var/lib/sbopkg/SBo/14.2/system/pgadmin3/pgadmin3.info, pgAdmin3 requiere también de PostgreSQL para su compilación e instalación.

Python 3

Slackware Linux ya incluye al lenguaje de programación Python pero en su versión 2:

root@servidor:~# which python
/usr/bin/python
root@servidor:~# which python2
/usr/bin/python2
root@servidor:~# file /usr/bin/python
/usr/bin/python: symbolic link to python2.7
root@servidor:~# file /usr/bin/python2
/usr/bin/python: symbolic link to python2.7
root@servidor:~# python --version
Python 2.7.11

Para instalar a Python 3 haciendo uso de sbopkg se ejecuta el comando sbopkg -i python3. Al terminar se podrá verificar la instalación de Python 3:

root@servidor:~# which python3
/usr/bin/python3
root@servidor:~# file /usr/bin/python3
/usr/bin/python3: symbolic link to python3.5
root@servidor:~# python3 --version
Python 3.5.2

Queuefiles

sbopkg incluye la opción de generar queuefiles para la compilación de algunos paquetes complejos en cuanto a la cantidad de dependencias. Un queuefile es un archivo de texto plano que establece las dependencias a instalar de un paquete en base al campo REQUIRES en su archivo *.info (visto previamente).

Para generar los queuefiles se ejecuta el comanto sqg -a (sbopkg queue generator) como usuario root. Este proceso tardará varios minutos...

root@servidor:~# sqg -a
Processing all SlackBuilds in the SBo/14.2 repo.....
....................................................
.................................................... Done

sqg -a deberá ser ejecutado cada vez que se actualice el repositorio local de SlackBuilds (sbopkg -r).

El directorio /var/lib/sbopkg/queues contiene los queuefile generados.

VLC

El reproductor de múltimedia VLC es uno de los paquetes complejos en su instalación ya que depende de varios paquetes para su uso, alrededor de 50 dependencias. Puede encontrarse documentación sobre sus dependencias en https://wiki.videolan.org/Contrib_Status.

Si ya se generaron los queuefile se puede obtener una lista de sus dependencias en el archivo /var/lib/sbopkg/queues/vlc.sqf.

Una de las dependencias de VLC es avahi quien requiere para su compilación e instalación la creación de un usuario y grupo en el sistema operativo. Las instrucciones para la creación de este usuario-grupo están dadas en el archivo /var/lib/sbopkg/SBo/14.2/network/avahi/README.SBo. Crea dicho usuario-grupo previa instalación de VLC.

Para llevar a cabo la instalación de VLC:

root@servidor:~# sbopkg -i vlc
Both a queuefile and a package were found with the name "vlc".
Use (Q)ueuefile, (P)ackage, or (A)bort?:

sbopkg questiona si se quiere hacer uso del queuefile (opción Q) o del paquete (opción P), ingresa Q y aprieta la tecla de Enter.

root@servidor:~# sbopkg -i vlc
Both a queuefile and a package were found with the name "vlc".
Use (Q)ueuefile, (P)ackage, or (A)bort?:
...
...
...
Pre-check complete.
Do you wish to proceed based on the search results above? Packages not
found will be skipped during the process.
(P)roceed or (Q)uit?:

sbopkg cuestiona si se quiere proceder con la instalación de VLC y todas sus dependencias (opción P) o detener (opción Q), ingresa P y aprieta la tecla de Enter.

Dependiendo de la velocidad en el acceso a la Internet así como del CPU/RAM este proceso tardará varios minutos. Al terminar se tendrá instalado a VLC.

GStreamer (libav, plugins-bad y plugins-ugly)

GStreamer forma parte de Slackware Linux por lo que ya se encuentra instalado, sin embargo los complementos (o plugins) necesarios para reproducir algunos formatos de audio/video (MP3 por ejemplo) no: gst-libav, gst-plugins-bad y gst-plugins-ugly.

Para instalar los complementos faltantes:

root@servidor:~# sbopkg -i gst-libav -i gst-plugins-bad -i gst-plugins-ugly
...
...
...
Pre-check complete.
Do you wish to proceed based on the search results above? Packages not
found will be skipped during the process.
(P)roceed or (Q)uit?:

De igual forma, ingresa P y aprieta la tecla de Enter para realizar la instalación.