Cómo instalar programas nativos de Linux en FreeBSD

Última actualización: 16/10/2025
Autor: Isaac
  • FreeBSD ofrece paquetes binarios, Ports y compatibilidad Linux para cubrir distintos casos de uso.
  • Compilar desde fuente permite aplicar parches y opciones; los paquetes aportan rapidez y simplicidad.
  • La compatibilidad Linux depende del hardware: glibc moderna exige x86-64‑v2 en binarios recientes.
  • Configurar rc.conf, loader.conf y fstab es clave para drivers, automontaje, impresión y servicios.

Instalar programas Linux en FreeBSD

Cuando vienes de GNU/Linux y aterrizas en FreeBSD es normal preguntarse cómo ejecutar programas nativos de Linux sin perder la cabeza. FreeBSD ofrece varias rutas: paquetes binarios, la célebre Colección de Ports y la capa de compatibilidad Linux (el llamado Linuxulator). Cada método tiene sus ventajas, límites y peculiaridades de configuración.

En esta guía encontrarás una visión práctica y muy completa, con foco en los matices que suelen pasarse por alto: desde razones para compilar desde el código fuente hasta cómo afinar rc.conf, loader.conf o fstab; pasando por drivers gráficos, automontaje, CUPS, fuentes, idioma del sistema y, por supuesto, cómo lidiar con la compatibilidad Linux moderna y sus exigencias de CPU.

Opciones reales en FreeBSD: paquetes, ports y compatibilidad Linux

FreeBSD permite instalar software de tres formas principales: paquetes binarios (packages), la Colección de Ports (construyendo desde código) y la compatibilidad con Linux para ejecutar binarios Linux. Elegir bien depende de tu necesidad de velocidad, personalización y del stack que exijan tus aplicaciones.

Los paquetes binarios son «programas ya hechos» listos para instalar, mientras que los ports compilan desde el código fuente aplicando parches y opciones. Y si necesitas ejecutar una app sin port nativo, FreeBSD puede cargar binarios Linux vía su entorno de compatibilidad (con ciertos requisitos).

Compatibilidad Linux en FreeBSD

Por qué a veces conviene compilar desde el código

Aunque los paquetes binarios son comodísimos, hay razones de peso para tirar de fuente: algunas licencias prohíben distribuir binarios y solo permiten distribuir el código. En esos casos, ports es tu vía natural.

También hay quien no confía en binarios de terceros. Con el código puedes, al menos en teoría, auditar y detectar posibles problemas antes de compilar. Es una capa extra de control que a veces compensa.

Si mantienes parches propios o necesitas activar/desactivar opciones finas de compilación, necesitarás los fuentes para aplicarlos. Ports está precisamente diseñado para eso, con variables y opciones muy granulares.

Y por pura curiosidad técnica: tener el código a mano permite leer, modificar o reutilizar partes (si la licencia lo permite), algo que en el ecosistema BSD siempre ha sido muy apreciado.

Paquetes binarios en FreeBSD: de pkg_add a pkg

Los paquetes binarios en FreeBSD equivalen a los .deb en Debian/Ubuntu o .rpm en Fedora: binarios precompilados con sus ficheros de configuración y docs. Hoy en día se gestiona con la herramienta pkg, que reemplazó a las históricas pkg_add, pkg_delete y pkg_info.

Comandos esenciales con pkg: instalar, buscar, actualizar y limpiar. Por ejemplo:

# pkg update -f
# pkg upgrade
# pkg search libre
# pkg install firefox
# pkg info firefox
# pkg remove firefox
# pkg autoremove
# pkg clean
# du -hs /var/cache/pkg/

Históricamente, con pkg_add -r podías instalar y resolver dependencias automáticamente. En releases concretas, ese comando podía descargar versiones más antiguas del programa; la variable de entorno PACKAGESITE permitía forzar repos más recientes, por ejemplo:

PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/

Si vienes de Linux, notarás que FreeBSD usa extensiones como .tgz o .tbz para paquetes precompilados y que la base de datos local de paquetes vive en /var/db/pkg. Es un detalle útil para auditorías o scripts.

Colección de Ports: compilar con opciones y sin sorpresas

La Colección de Ports es un árbol en /usr/ports con Makefiles, parches y descriptores. Al instalar un port, el sistema descarga fuentes, aplica parches, compila, instala y resuelve dependencias en el mismo proceso, lo cual es muy cómodo.

  Reparar No Puedo Eliminar La Carpeta MountUPP

Para traer o actualizar el árbol puedes usar métodos clásicos como portsnap o csup (hoy en día Git también es habitual, pero el concepto es el mismo: sincronizar el árbol de ports con los servidores de FreeBSD).

Ejemplo típico para compilar e instalar, con limpieza automática:

# cd /usr/ports/www/apache22
# make install clean

Y si tienes requisitos específicos, activa opciones de compilación mediante variables de make. Por ejemplo, habilitar mod_ldap en Apache durante la build:

# cd /usr/ports/www/apache22
# make WITH_LDAP="YES" install clean

Un truco útil: puedes compilar un port a tu gusto y luego generar un package para distribuirlo a otras máquinas, combinando lo mejor de ambos mundos (personalización y despliegue rápido).

Buscar qué instalar y dónde está

Si sabes el nombre exacto, pkg te lo pone fácil con pkg search. En el ecosistema de ports, también puedes buscar desde el propio árbol con herramientas de consulta. Recuerda además que el sistema distingue mayúsculas de minúsculas al buscar rutas o nombres.

Para explorar de forma local en ports, muévete por /usr/ports y usa los objetivos de make de búsqueda o inspecciona los directorios por categorías (www, sysutils, multimedia, etc.). La web oficial lista los ports disponibles con detalle.

Compatibilidad con Linux (Linuxulator): ejecutar binarios Linux

FreeBSD puede ejecutar binarios Linux mediante su capa de compatibilidad. En 2025, el ecosistema de compatibilidad usa repositorios basados en Rocky Linux para los paquetes de usuario, sustituyendo al antiguo CentOS. También es frecuente ver chroots como /compat/ubuntu (por ejemplo, un Ubuntu Focal para ciertas apps).

Para habilitarlo, instala la base de Linux y configura servicios y pseudo-sistemas de ficheros. Un ejemplo clásico con la base C7 (ajusta a lo más reciente disponible con pkg search):

# pkg search linux_base-c
# pkg install linux_base-c7

Activa el runtime en rc.conf, monta linprocfs y linsysfs y asegura fdesc y proc en tu sistema:

# sysrc linux_enable="YES"
# sysrc devfs_system_ruleset="devfsrules_common"

# echo "fdesc /dev/fd fdescfs rw 0 0" >> /etc/fstab
# echo "proc /proc procfs rw 0 0" >> /etc/fstab
# echo "linprocfs /compat/linux/proc linprocfs rw 0 0" >> /etc/fstab
# echo "linsysfs /compat/linux/sys linsysfs rw 0 0" >> /etc/fstab

# mount -t linprocfs linproc /compat/linux/proc
# mount -t linsysfs linsys  /compat/linux/sys

Un detalle importante en hardware antiguo: versiones modernas de glibc exigen la microarquitectura x86-64-v2. En equipos veteranos (como algunos ThinkPad T400) verás errores tipo «fatal error: CPU does not support x86-64-v2» al lanzar binarios Linux recientes. FreeBSD como tal irá fino, pero la compatibilidad con Linux, emulación o virtualización que dependan de glibc moderna quedan fuera de juego si la CPU no cumple.

En ese escenario, chroots como /compat/ubuntu (Focal) pueden instalarse, pero no resolverán el requisito de instrucciones si la biblioteca de C del sistema Linux interno demanda x86-64-v2. Valora alternativas: usar WINE para apps Windows (algunos ejecutan Brave así), o montar un Linux ligero virtualizado en CPUs compatibles; si no lo son, te tocará optar por aplicaciones nativas BSD o soluciones más livianas.

DRM, Brave y contenido protegido

Para reproducir contenido con DRM (como Prime Video) en FreeBSD hay varios atajos. Hay quien instala la versión Linux de navegadores como Brave dentro de la compatibilidad Linux o en un chroot, pero si tu CPU no soporta las extensiones exigidas por glibc moderna, ese plan se cae.

Si todo lo anterior falla por limitación de CPU, considera Firefox nativo con Widevine cuando esté disponible en ports/paquetes, o WINE para Brave (dependerá de tu caso). La decisión final depende del soporte DRM que puedas activar en tu navegador y del hardware con el que cuentes.

  How you can Change or Change WiFi Community On Chromecast

Preparar un escritorio FreeBSD para trabajar cómodo

Si nunca has tocado FreeBSD, empezar con GhostBSD puede ser una buena toma de contacto, pero montar FreeBSD 14 como escritorio es perfectamente factible. Un stack estable y flexible suele ser Xorg + MATE con drivers gráficos adecuados.

Instala los componentes básicos:

# pkg install xorg nano drm-510-kmod gpu-firmware-kmod

Activa servicios y drivers en /etc/rc.conf según tu GPU integrada. Para Intel suele ser:

hald_enable="YES"
dbus_enable="YES"
kld_list="i915kms"

Para AMD Radeon/AMDGPU integrado:

hald_enable="YES"
dbus_enable="YES"
kld_list="/boot/modules/amdgpu.ko"

Reinicia y prueba el servidor gráfico con startx. Si aparece el entorno básico de X con terminales, estás en el buen camino.

Instalar MATE, sudo y preparar sesión gráfica

Con el sistema base listo, instala el entorno MATE y utilidades iniciales:

# pkg install mate mate-desktop firefox sudo

Concede permisos de sudo a tu usuario en /usr/local/etc/sudoers:

TU_USUARIO ALL=(ALL:ALL) ALL

Crea ~/.xinitrc para iniciar MATE correctamente y gestionar sesión/DBus:

exec ck-launch-session dbus-launch mate-session

Desde tu usuario, ejecuta startx para entrar al escritorio. Si prefieres display manager, LightDM con greeter GTK funciona bien:

# pkg install lightdm lightdm-gtk-greeter
# sysrc lightdm_enable="YES"

Impresoras con CUPS e HPLIP

Para impresión, instala CUPS y filtros, habilítalo y añade usuarios al grupo cups. HPLIP facilita mucho las HP:

# pkg install cups foomatic-filters
# sysrc cupsd_enable="YES"
# pw usermod root -G cups
# pw usermod TU_USUARIO -G cups
# pkg install hplip
# hp-setup

Si algo se resiste, entra a la interfaz de CUPS en http://localhost:631. Recuerda desactivar lpd si usas CUPS:

lpd_enable="NO"

Fuentes, localización y Firefox en español

Para que el sistema se vea bien instala URW y otras familias (webfonts, liberation, etc.):

# pkg install urwfonts x11-fonts/webfonts comfortaa-ttf gnu-unifont gofont-ttf inconsolata-ttf liberation-fonts-ttf

Activa español (es_ES.UTF-8) para consola y sesión gráfica. En tu $HOME crea los ficheros adecuados:

$ nano .login_conf
me:\
 :charset=UTF-8:\
 :lang=es_ES.UTF-8:\
 :tc=default:

$ nano .profile
LANG=es_ES.UTF-8; export LANG
MM_CHARSET=UTF-8; export MM_CHARSET

$ nano .xinitrc
LANG=es_ES.UTF-8; export LANG
MM_CHARSET=UTF-8; export MM_CHARSET
exec ck-launch-session dbus-launch mate-session

Para afinar globalmente, añade al /etc/profile (como root):

LANG=es_ES.UTF-8; export LANG
MM_CHARSET=UTF-8; export MM_CHARSET

Si Firefox queda en inglés, instala el language pack desde la web oficial y, en Ajustes > General > Idioma, elige español en «Establecer alternativas». También puedes añadir diccionarios para corrección.

Automontaje, FUSE y permisos de dispositivos

Para montar automáticamente memorias USB y otros medios, instala automount y reinicia devd. FUSE permite NTFS, EXT, etc. Configurar permisos y reglas de devfs es clave:

# pkg install automount fuse fuse-utils fusefs-ext2 e2fsprogs
# service devd restart
# cp /usr/local/etc/automount.conf.sample /usr/local/etc/automount.conf
# sysrc devfs_system_ruleset="devfsrules_common"

En /usr/local/etc/automount.conf, habilita desmontaje por usuario:

USERUMOUNT=YES

Asegura en /etc/fstab los pseudo-fs y habilita el montaje por usuario en sysctl:

# echo "proc /proc procfs rw 0 0" >> /etc/fstab
# echo "fdesc /dev/fd fdescfs rw 0 0" >> /etc/fstab
# sysrc -f /etc/sysctl.conf vfs.usermount=1

Añade tu usuario a wheel y operator, carga FUSE y define permisos de dispositivos en devfs.conf y reglas avanzadas en devfs.rules (ejemplos):

# pw usermod TU_USUARIO -G wheel
# pw usermod TU_USUARIO -G operator
# kldload fuse.ko
/etc/devfs.conf:
perm devstat 0444
own /dev/acd0 root:operator
perm /dev/acd0 0666
perm /dev/cd0 0660
perm /dev/da0 0666
...

/etc/devfs.rules:
[devfsrules_common=7]
add path 'ada[0-9]*' mode 666 group operator
add path 'da[0-9]*' mode 666
add path 'cd[0-9]*' mode 666
add path 'mmcsd[0-9]*' mode 666
add path 'usb/*' mode 666 group operator
add path 'video[0-9]*' mode 666
...

Para Java en navegadores o apps antiguas, establece el shm_allow_removed y añade runtimes como icedtea-web y openjdk8-jre:

# sysrc -f /etc/sysctl.conf kern.ipc.shm_allow_removed=1
# pkg install icedtea-web openjdk8-jre

Drivers gráficos, aceleración y pruebas

En GPUs NVIDIA, instala el driver y cárgalo en el arranque; si X no crea xorg.conf, genera uno con X -configure. NVIDIA es plug and play en muchos casos:

# pkg install nvidia-driver
# kldload nvidia
# sysrc -f /boot/loader.conf nvidia_load="YES"
# X -configure
# cp /root/xorg.conf.new /etc/X11/xorg.conf

En AMD/ATI modernas, usa drm-510-kmod y firmware; activa amdgpu en rc.conf:

# pkg install drm-510-kmod gpu-firmware-kmod
# sysrc kld_list+="amdgpu"

Para verificar aceleración OpenGL, ejecuta glxinfo y comprueba el renderizado:

# pkg install mesa-demos
# glxinfo | grep -i render

Si tu gráfica integrada Intel es soportada, i915kms suele ser la opción correcta cargada desde rc.conf o loader.conf según tu hardware.

  Cómo saber si alguien te ha bloqueado en Snapchat

Wi‑Fi, sonido y webcam: lo esencial

Configura Wi‑Fi con wpa_supplicant y define el clon de interfaz. Para algunos cifrados puedes precargar módulos WLAN en loader.conf, y en rc.conf declaras WPA y DHCP:

# sysrc wpa_supplicant_enable="YES"
# sysrc wlans_ral0="wlan0"
# sysrc ifconfig_wlan0="WPA SYNCDHCP"

En /etc/wpa_supplicant.conf añade tu red:

network {
  ssid="NOMBRE_DE_TU_WIFI"
  psk="CONTRASEÑA"
}

Para audio, revisa dispositivos y fija la tarjeta por defecto si hace falta. Si tu codec es reconocido, puede bastar con snd_driver o un módulo específico (ej. snd_emu10k1):

# cat /dev/sndstat
# sysrc -f /etc/sysctl.conf hw.snd.default_auto=0

Activa webcamd y cuse para soporte de cámaras UVC y prueba con cheese:

# sysrc webcamd_enable="YES"
# sysrc -f /boot/loader.conf cuse_load="YES"
# service webcamd start
# pkg install cheese

Herramientas del sistema y utilidades de escritorio

Para diagnóstico de hardware y particiones, instala usbutils, pciutils, hw-probe y gpart:

# pkg install usbutils pciutils hw-probe gpart
# lsusb
# lspci
# pciconf -lv
# hw-probe -all -upload
# gpart show

Un set de escritorio que suele rendir bien incluye multimedia, ofimática y edición gráfica. Muchos optan por VLC, LibreOffice en español, GIMP, Inkscape, además de navegadores y herramientas de copia/compresión:

# pkg install vlc es-libreoffice es-hunspell gimp inkscape firefox-esr chromium \
  brasero gnome-utils gnome-calculator obs-studio openshot qbittorrent \
  audacity simple-scan pinta krita peazip-gtk2 xarchiver epdfview zsync rsync

Para integrar servicios en la nube sin líos, el binario rclone está en los repos, pero su uso es por terminal; si prefieres sencillez, el acceso vía navegador suele ser suficiente y universal.

Notas prácticas de mantenimiento

Recuerda que BATCH puede acelerar instalaciones no interactivas en entornos con muchos paquetes: establece BATCH=»yes» en rc.conf si lo necesitas. Mantén el sistema al día con pkg update/upgrade y limpia cachés y dependencias huérfanas con pkg clean y pkg autoremove.

Si alguna línea de fstab te impide arrancar, arranca en modo single user y corrige con nano; comenta con «#» las entradas dudosas y vuelve a cargar después desde entorno gráfico, copiando y pegando con calma.

Con todo lo anterior deberías poder instalar paquetes rápidos, compilar desde Ports cuando requieras opciones finas y, si el hardware acompaña, ejecutar binarios Linux desde la compatibilidad del sistema. En equipos con CPUs antiguas, el escollo real lo pone glibc y su baseline x86-64-v2; si te afecta, céntrate en software nativo FreeBSD o en alternativas como WINE. El resto del ecosistema (drivers, automontaje, impresión, fuentes, idioma, Wi‑Fi, sonido, webcam y utilidades) está a tu alcance con un puñado de ajustes bien colocados, y te deja una estación de trabajo BSD realmente sólida y agradable de usar.