paquetes

  • Los sistemas basados en Debian, como la mayoría de las distribuciones GNU/Linux, se mantienen y distribuyen a través de una colección de paquetes. Debido a que existen miles de paquetes, éstos son divididos en secciones y tienen prioridades para simplificar la gestión de los mismos.

  • Previamente compartí un artículo extenso dedicado a la gestión de paquetes en OpenBSD. En dicho artículo explicaba que, a fin de buscar un paquete por nombre, simplemente debía buscar el port correspondiente en el árbol de ports utilizando el comando make search key=. Sin embargo, si no hemos instalado el árbol de ports en el sistema, será imposible buscar un paquete (al menos desde línea de comandos, claro está). En este artículo entonces voy a demostrar cómo buscar paquetes correctamente en OpenBSD, sin necesidad de recurrir al árbol de ports.

  • El día de hoy tuve la necesidad instalar nmap en uno de mis servidores Debian Wheezy a fin de correr algunas pruebas simples. Pero para mi asombro, al ejecutar apt-get install nmap, el gestor de paquetes APT (Advanced Package Tool) intentó instalar nada más y nada menos que 73 dependencias. 73 paquetes adicionales ¡para una simple herramienta de redes y seguridad de línea de comandos!

    root@wheezy:~# apt-get install nmap
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following extra packages will be installed:
      fonts-droid fonts-liberation ghostscript gnuplot gnuplot-nox groff gsfonts hicolor-icon-theme
      imagemagick imagemagick-common libblas3 libblas3gf libcairo2 libcupsimage2 libdatrie1 libdjvulibre-text
      libdjvulibre21 libexiv2-12 libgd2-noxpm libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgfortran3 libgs9
      libgs9-common libice6 libijs-0.35 libilmbase6 libjasper1 libjbig0 libjbig2dec0 libjpeg8 liblcms1
      liblcms2-2 liblensfun-data liblensfun0 liblinear-tools liblinear1 liblqr-1-0 liblua5.1-0 libmagickcore5
      libmagickcore5-extra libmagickwand5 libnetpbm10 libopenexr6 libpango1.0-0 libpixman-1-0 librsvg2-2
      librsvg2-common libsm6 libsvm-tools libthai-data libthai0 libtiff4 libwmf0.2-7 libx11-6 libx11-data
      libxau6 libxaw7 libxcb-render0 libxcb-shm0 libxcb1 libxdmcp6 libxext6 libxft2 libxmu6 libxpm4
      libxrender1 libxt6 netpbm poppler-data ufraw-batch x11-common
    Suggested packages:
      ghostscript-cups ghostscript-x hpijs gnuplot-doc imagemagick-doc autotrace cups-bsd lpr lprng curl
      enscript ffmpeg gimp grads hp2xx html2ps libwmf-bin mplayer povray radiance sane-utils texlive-base-bin
      transfig xdg-utils exiv2 libgd-tools libjasper-runtime liblcms-utils liblcms2-utils liblinear-dev
      ttf-baekmuk ttf-arphic-gbsn00lp ttf-arphic-bsmi00lp ttf-arphic-gkai00mp ttf-arphic-bkai00mp
      librsvg2-bin poppler-utils fonts-japanese-mincho fonts-ipafont-mincho fonts-japanese-gothic
      fonts-ipafont-gothic fonts-arphic-ukai fonts-arphic-uming fonts-unfonts-core ufraw
    

    Debian tú antes molabas...

  • Este artículo explica cómo administrar/manejar/gestionar paquetes en [inserte nombre de distribución GNU/Linux aquí]. Navegando por DistroWatch me encontré con este excelente material, el cual me tomé el trabajo de traducir al español. Se trata de un cheatsheet o tarjeta de referencia de manejo de paquetes en distribuciones GNU/Linux. Algo que todo distro-hopper debe tener. Si se preguntan qué es un distro-hopper, se trata de una persona que tiene a DistroWatch como página de inicio en su navegador. Recomiendo una leída a los artículos de Enrique Bravo, un célebre distro-hopper y gran bloguero.

    El manejo, administración o gestión de paquetes es probablemente una de las características más distintivas de toda distribución GNU/Linux. Mientras que la tendencia es ofrecer una herramienta gráfica donde los usuarios puedan administrar sus paquetes con el click del mouse, estos programas son front-ends a las utilidades de bajo nivel que manejan las tareas asociadas a la instalación de paquetes en cualquier sistema Linux. A pesar de que a muchos usuarios GNU/Linux les puedan resultar atractivas las herramientas gráficas de alto nivel, no se pueden negar las características que ofrecen las herramientas de línea de comandos: poder, flexibilidad y velocidad. Por otro lado, en un servidor sin interfaz gráfica (¿existen servidores GNU/Linux con interfaz gráfica?) la única alternativa es utilizar las herramientas de línea de comandos.

  • FreeBSD, al igual que muchas distribuciones GNU/Linux, guarda los paquetes que ha compilado desde los fuentes (o descargado desde Internet) a modo de backup en un directorio de nuestro sistema de archivos. Con el tiempo estos paquetes (probablemente obsoletos si se ha actualizado el sistema en reitereadas oportunidades) suman un espacio en disco considerable, por esta razón tal vez sea deseable eliminarlos para recuperar el espacio.

  • Inspirado por un post del excelente blog rm-fr.es de Alejandro García: Comprobar el changelog de un paquete instalado (o a instalar) (RPM|YUM), se me ocurrió demostrar cómo realizar la misma tarea en Debian y derivados.

  • El día de hoy tuve la necesidad de convertir un archivo de audio a formato MP3 utilizando ffmpeg en FreeBSD:

    emi@hal9000:~ $ ffmpeg -i song.ogg song.mp3
    

    Sin embargo, me encontré con que el codec lame para mp3 no está habilitado por defecto debido a implicancias legales respecto a la redistribución de paquetes pre-compilados con audio/lame:

    Automatic encoder selection failed for output stream #0:0. Default encoder for format mp3 (codec mp3) is probably disabled. Please choose an encoder manually.
    Error selecting an encoder for stream 0:0
    

    Entonces, en lugar de compilar el port (multimedia/ffmpeg) me dispuse a crear mi propia versión personalizada de dicho paquete, a fin de instalar (y luego bloquear) con pkg.

  • En el artículo anterior expliqué cómo montar una caché centralizada para paquetes de Debian implementando un proxy en Nginx. En este artículo voy a explicar cómo hacerlo para CentOS (utilizando el mismo servidor que cumple el rol de cache). La configuración de Nginx es casi idéntica, sólo que hay diferencias en la configuración de los clientes, al tratarse de un gestor de paquetes diferente.

  • Se me ocurrió crear una caché de paquetes de Debian centralizada, desde donde todos mis servidores actualicen su software. La cuestión es que, teniendo cientos de servidores y sin contar con un proxy HTTP (que haga las veces de caché), al momento de actualizar los sistemas operativos se descargan una y otra vez los mismos paquetes.

  • Todavía hay muchas cuestiones en Debian que están pobremente documentadas, o directamente no documentadas. Un caso típico es conocer con exactitud desde qué repositorio proviene un paquete específico. Una pregunta muy lógica, especialmente cuando el sistema operativo en cuestión cuenta con paquetes provenientes de múltiples repositorios. Cierto paquete está causando problemas y quisiéramos saber desde qué repositorio provino.

  • Este artículo explica cómo buscar paquetes para distribuciones que desde hace largo tiempo no poseen soporte, desde una fuente de confianza.

  • Hace un tiempo tuve que compilar manualmente el port ffmpeg con soporte para lame, ya que la versión de paquete de FreeBSD no incluye dicho codec (por cuestiones de patente). Pero luego de actualizar el sistema en reiteradas oportunidades, pkg trajo una versión superior a la compilada por mí, con lo cual perdí el soporte para lame y debí volver a compilar el port con las opciones personalizadas. Veamos entonces cómo indicarle al gestor de paquetes pkg que no actualice un port que ha sido compilado con opciones personalizadas, con el objetivo de mantener la funcionalidad deseada.

  • En el artículo Trabajando con ports en OpenBSD expliqué cómo gestionar software en OpenBSD a través del sistema de ports. Claro está que la instalación de software a través de ports implica, para el caso de aplicaciones grandes y complejas, compilar una gran cantidad de paquetes, lo que puede llegar a insumir una gran cantidad de tiempo y recursos y además dificultar el mantenimiento del sistema.

    Por supuesto instalar desde el sistema de ports tiene sus ventajas. Principalmente, la flexibilidad de disponer de diferentes versiones para un mismo paquete. Por ejemplo, para el caso de PHP se dispone de las versiones 5.4, 5.5, 5.6 y 7.0:

    # ls -l /usr/ports/lang/php/
    total 68
    drwxr-xr-x  5 root  wheel    512 Feb 25 19:59 5.4
    drwxr-xr-x  5 root  wheel    512 Feb 25 19:59 5.5
    drwxr-xr-x  5 root  wheel    512 May 24 15:11 5.6
    drwxr-xr-x  5 root  wheel    512 Feb 25 19:59 7.0
    drwxr-xr-x  2 root  wheel    512 May 24 15:11 CVS
    -rw-r--r--  1 root  wheel    196 Mar 21  2015 Makefile
    -rw-r--r--  1 root  wheel  13759 Feb  1 18:53 Makefile.inc
    drwxr-xr-x  3 root  wheel   1024 Feb 25 19:59 files
    drwxr-xr-x  3 root  wheel    512 Feb 25 19:59 pecl
    -rw-r--r--  1 root  wheel   2102 Feb  1 18:53 php.port.mk
    

    Esto es una gran ventaja cuando se requiere instalar una aplicación ligada a una versión específica de PHP, ya que se puede contar con la versión necesaria mantenida por la comunidad. De esta forma se evita preocuparse por compilar manualmente una versión no disponible desde paquete, verificando sus dependencias y requisitos.

    Sin embargo, en este artículo voy a explicar brevemente cómo trabajar con paquetes, lo cual es recomendable para la mayoría de los casos, y puede ahorrar gran tiempo de compilación y mantenimiento.

  • ¿Qué sucede si en nuestra organización tenemos en producción un viejo servidor Red Hat sin soporte? Debido a que RHEL (Red Hat Enterprise Linux) es un producto comercial, es necesario contratar soporte oficial para disponer de actualizaciones. Pero, como muchos sabrán, CentOS es un clon a nivel binario de RHEL. Por lo tanto es posible instalar un paquete de CentOS en un servidor RHEL, siempre que coincidan las versiones.

    Ayer se descubrió una grave vulnerabilidad en Bash que permite inyectar comandos en variables de entorno.

    Se encontró una falla en la forma en que Bash evalúa ciertas variables de entorno especialmente diseñadas. Un atacante puede utilizar esta falla para evitar restricciones de entorno y lograr ejecutar comandos. Ciertos servicios y aplicaciones permiten que atacantes remotos sin autenticación provean variables de entorno, permitiendo que exploten esta vulnerabilidad.

  • ¿Instalar un gestor de paquetes en Windows? Así es, aunque parezca una broma del día de los inocentes. Chocolatey es un gestor de paquetes para Windows similar a APT para Debian o yum en CentOS. Este sistema de gestión de software y automatización está basado en PowerShell y es capaz de trabajar con diferentes instaladores de software para sistemas Windows como MSI, NSIS, InnoSetup, binarios de instalación y archivos comprimidos (ZIP). Como cualquier gestor de paquetes permite manejar de forma simple todos los aspectos de la administración de software como instalación, configuración, actualización y desinstalación.

    ¿Alguna vez imaginaron instalar software en Windows al igual que en GNU/Linux ejecutando algo como apt install gimp de manera rápida y desatendida? Gracias a Chocolatey es posible y tan simple como ejecutar:

    choco install gimp
    

    Nunca más siguiente, siguiente, siguiente...

  • pip es una herramienta que permite instalar y gestionar paquetes de Python. Es la herramienta recomendada para instalar paquetes de Python que no están disponibles directamente en el archivo de Debian (o cualquiera sea la distribución GNU/Linux utilizada). En Debian y derivados, pip es el gestor de paquetes para Python 2, mientras que pip3 es el gestor para Python 3.

  • Este artículo explica cómo lograr que las últimas versiones de paquetes liberadas estén disponibles para actualizar en nuestro sistema FreeBSD. La idea es disponer de lo último de lo último (en cuanto a versiones de paquetes se refiere) lo antes posible, para que nuestro sistema quede siempre en un estado bleeding edge.

  • Este artículo repasa algunos conceptos básicos respecto al versionado de paquetes en los sistemas operativos basados en Debian y Devuan.