compilar

  • El kernel es el núcleo del sistema operativo. Es responsable por manejar la memoria, asegurar controles de seguridad, redes, acceso a disco, y más. Tradicionalmente, FreeBSD usaba un kernel monolítico: un gran programa que soportaba una lista fija de dispositivos, donde, para cambiar su comportamiento, era necesario compilarlo para adaptarlo a nuestras necesidades. En la actualidad se trata de un kernel modular. La mayoría de las funcionalidades del kernel FreeBSD están contenidas en módulos que pueden ser cargados en el kernel dinámicamente a medida que sea necesario.

    Pero, a pesar de esta flexibilidad, compilar el kernel tiene muchas ventajas. Por ello en este artículo voy a explicar cómo compilar un kernel personalizado en FreeBSD 10.

  • Este artículo explica brevemente cómo compilar Nginx desde sus fuentes con soporte para SSL (HTTPS) en Debian y derivados.

  • Este artículo explica cómo compilar e instalar la última versión de OpenSSH en un servidor Red Hat. Ya sea para corregir errores de seguridad o incorporar nuevas funcionalidades.

    OpenSSH (Open Secure Shell) es un conjunto de aplicaciones que permiten realizar comunicaciones cifradas a través de una red, usando el protocolo SSH. Fue creado como una alternativa libre y abierta al programa Secure Shell, que es software propietario. Sus desarrolladores aseguran que OpenSSH es más seguro que el original, lo cual es debido a la conocida reputación de los desarrolladores de OpenBSD por crear código limpio y perfectamente auditado, lo que contribuye a que sea más seguro. Su seguridad también es atribuible al hecho de que su código fuente se distribuya libremente con una licencia BSD.

  • Este artículo explica cómo compilar un sistema OpenBSD desde sus fuentes. Existen varios pasos a seguir en el proceso de compilación de un sistema OpenBSD: descargar y actualizar los fuentes; compilar e instalar el kernel; y compilar e instalar userland.

  • Este artículo documenta la instalación de un servidor LDAP en GNU/Linux, the right way: compilando OpenLDAP desde los fuentes con LMDB como backend.

    Anteriormente expliqué cómo instalar y configurar OpenLDAP con PostgreSQL como backend. Aunque luego de un período de pruebas decidí descartar a Postgres y utilizar el backend recomendado y por defecto: LMDB.

    El problema al utilizar Postgres como backend, es que uno debe implementar manualmente (utilizando sentencias SQL) todas las funcionalidades necesarias para dar soporte a los diferentes schemas de LDAP (metadatos para traducir consultas LDAP en consultas SQL), tal como lo explica la guía de administración de LDAP. Es posible ver un ejemplo de programación de un backend SQL en el siguiente enlace: OpenLDAP-POSTGRESQL HOWTO - A live example.

    Mi intención fue utilizar Postgres en un principio debido a la conocida inestabilidad de la librería de bases de datos Berkeley DB (BDB). Sin embargo este problema hace que una instalación de OpenLDAP con Postgres sea prácticamente inmantenible. Por otro lado, las últimas versiones de OpenLDAP ya no utilizan BDB, sino que se recomienda el uso de una versión propia de LDAP: LMDB.

  • Cada vez que se compila un nuevo port en FreeBSD (ya sea ejecutando directamente make en el directorio del port, o a través de portmaster) es probable que sea necesario seleccionar qué opciones de configuración se desean utilizar para el mismo. Estas opciones de configuración se presentan a través del clásico menú con fondo azul:

    Estas opciones quedan guardadas en una base de datos. De esta forma, la siguiente vez que se compile el mismo port, no será necesario volver a indicarlas. Gracias a ello se ahorra mucho tiempo cuando se actualiza un sistema, y es información valiosa respecto a la configuración del sistema. Por ende es muy probable que se desee resguardar al momento de hacer un backup de un servidor FreeBSD.

  • LDAP (Lightweight Directory Access Protocol) es un protocolo estándar abierto para acceder a servicios de directorio X.500. Un directorio es una base de datos específicamente diseñada para la búsqueda y navegación de información. De manera similar a una guía telefónica, más que como una carpeta en un sistema de archivos. Al igual que una guía telefónica o libreta de direcciones/contactos, el directorio almacena información acerca de un ítem, como un doctor: primero se encuentra la guía telefónica, luego se buscan doctores, a continuación se busca la especialidad deseada, y finalmente se decide qué doctor examinar (obtener sus datos como dirección, número de teléfono, horarios, etc.)

    Los servicios de directorio juegan un rol importante en el desarrollo de aplicaciones sobre Internet y redes privadas (intranets) permitiendo compartir información de recursos (usuarios, sistemas, redes, servicios y aplicaciones) a través de la red. Como ejemplo, un servicio de directorio puede proveer un conjunto organizado de registros, generalmente respetando una estructura jerárquica, tal como una libreta de direcciones de correo electrónico dentro de una red corporativa. También son utilizados muy frecuentemente para proveer servicios de autenticación y autorización centralizados (y a su vez distribuidos entre varios servidores) en redes corporativas, tal como es el caso de Active Directory, el popular servicio de directorio implementado por Microsoft.

    El protocolo LDAP opera sobre los protocolos de transporte de Internet (TCP/IP). LDAP es una alternativa liviana al protocolo DAP (Directory Access Protocol) del estándar X.500 para uso en Internet. Liviana porque se basa en la pila TCP/IP en lugar de en la compleja pila OSI. Además tiene simplificaciones como la representación de la mayoría de los valores de atributos e ítems del protocolo como texto plano, lo cual está diseñado para simplificar la implementación de clientes.

    Por defecto, OpenLDAP utiliza una base de datos Bekerley DB como backend. Sin embargo, de acuerdo a experiencias previas con otras aplicaciones, esta librería es propensa a errores, corrupción de datos y es ineficiente en comparación a otras tecnologías similares (por ejemplo SQLite). Por ende, este artículo documenta la instalación de un servidor LDAP con Postgres como backend (un motor de bases de datos muchísimo más eficiente y robusto) lo cual requiere la instalación de un driver ODBC.

  • En distribuciones GNU/Linux estables, las versiones de paquete para ciertas aplicaciones y servicios suelen estar algo desactualizadas (no mucho), con lo cual a veces es deseable instalar la última versión disponible de un paquete a partir de su código fuente. Por ejemplo las versiones de paquete del servidor de bases de datos PostgreSQL en Debian 7 y Debian 8 son 9.1 y 9.4 respectivamente, siendo que la última versión estable de PostgreSQL es la 9.6. Si se desea entonces disponer de la esta última versión estable, será necesario compilarla e instalarla desde los fuentes (postgresql.org/ftp/source/).

  • Me encuentro desarrollando una aplicación Java que utiliza un paquete de clases de un tercero. Este paquete lo he descargado del sitio del desarrollador en formato JAR.

  •  

    Pregunta: ¿Qué pasa si necesitamos compilar un fuente Java y no disponemos de un JDK en la workstation donde estamos trabajando?
    Respuesta: Buscá en Google.


    "En Internet está todo"

  • En los sistemas GNU/Linux, para mejorar el rendimiento y eficiencia (y exprimir al máximo las características del CPU) se recomienda compilar todos los servicios, especialmente aquellos críticos, en lugar de instalar los binarios disponibles en los repositorios. En este artículo voy a explicar cómo compilar e instalar el servidor de bases de datos MySQL desde su código fuente. Es bastante sencillo, pero hay que prestar especial atención a algunos detalles.

  • Recientemente tuve la necesidad de compilar PHP con soporte para LDAP. Sin embargo, al configurar el paquete con la opción --with-ldap, falla al momento del linking pues es necesario indicarle al linker que enlace con la librería -llber.

  • En este artículo voy a explicar detalladamente cómo compilar, instalar y configurar un servidor PHP FastCGI Process Manager (FPM) versión 7, desde sus fuentes. Incluyendo los cambios necesarios en la configuración de un sitio Joomla! para que funcione correctamente con PHP 7.

  • 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.

  • Este artículo explica paso a paso cómo compilar e instalar VirtualBox en FreeBSD. Compilar VirtualBox es simple, solo que antes es necesario instalar el código fuente del kernel para poder compilar el módulo vboxdrv, necesario para que funcionen las máquinas virtuales.

  • Al tratar de compilar con gcc un programa en lenguaje C me encontré con este error.

  • Este artículo explica paso a paso el proceso de compilación e instalación, a partir del código fuente, de los tres componentes principales de la estructura de virtualización en GNU/Linux con KVM: qemu, libvirt y virt-manager.

    Este tutorial está basado en una instalación de Slackware 14.1, aunque aplica para cualquier distribución GNU/Linux, ya que el proceso de compilación es independiente de la distribución que se utilice. Los únicas diferencias ocurren al momento de instalar dependencias (si se opta por instalarlas desde los manejadores de paquetes en lugar de compilarlas), y al momento de instalar servicios (ya que depende del proceso de arranque de cada distribución: SysVinit, systemd o Upstart).

    A pesar de que se explica con gran detalle, requiere que el usuario posea conocimientos básicos acerca del manejo de la línea de comandos en GNU/Linux.

    El punto más importante a la hora de compilar paquetes desde los fuentes consiste en verificar que se respeten las dependencias. Para cada fuente (source) es necesario determinar qué versión de librerías requiere y luego verificar si nuestro sistema operativo las cumple. Que un paquete compile no significa que luego funcione, es por ello que el punto más fuerte de todo manejador de paquetes es su habilidad para resolver dependencias.