Los desarrolladores de Debian se comunican con otros creadores de distribuciones de Linux, en un esfuerzo para mantener la compatibilidad binaria entre las distintas distribuciones. La mayoría de los productos comerciales corren tan bien sobre Debian como lo hacen sobre los sistemas en los cuales se compilaron.
Debian GNU/Linux se adhiere a la Estructura de Sistema de Ficheros Linux (Linux File System Structure) Sin embargo, hay espacio para la interpretación en algunas de las reglas que componen esta norma, por lo cual puede haber diferencias entre un sistema Debian y otros sistemas Linux. La versión más moderna de este estándar FSSTND se llama ahora FHS y tenemos pensado pasarnos a ella en breve.
El código fuente Linux de la mayoría de las aplicaciones es compatible con otros sistemas Unix. Casi todo lo que está disponible en los sistemas Unix System V, y en los sistemas comerciales o libres derivados de BSD, también puede funcionar en Linux. Sin embargo, tal aserción no tiene ningún valor en el mercado comercial de Unix, pues no hay manera de probarla. En el ámbito del desarrollo de software, se requiere una compatibilidad completa, y no sólo en "casi todos" los casos. Por ese motivo, hace algunos años surgió la necesidad de normas, y en la actualidad la POSIX.1 (IEEE Standard 1003.1-1990) es una de las normas más importantes sobre compatibilidad de código fuente en los sistemas operativos al estilo Unix.
Linux está encaminado a adherirse a POSIX.1, pero las normas POSIX cuestan dinero, y la certificación POSIX.1 (y FIPS 151-2) es bastante cara; esto ha hecho más difícil el trabajo de los desarrolladores de Linux para obtener completa conformidad POSIX. Los costes de certificación hacen poco probable que Debian obtenga un certificado de conformidad oficial, aún cuando complete satisfactoriamente el conjunto de pruebas de validación. (El conjunto de pruebas de validación puede obtenerse libremente en la actualidad, así que se espera que más gente trabaje en los temas de POSIX.1.)
Unifix GmbH (Braunschweig, Alemania) desarrolló un sistema Linux que ha sido certificado como conforme a la norma FIPS 151-2 (que es un superconjunto de POSIX.1). Esta tecnología estuvo disponible en la propia distribución de Unifix, denominada Unifix Linux 2.0 y en la distribución Linux-FT de Lasermoon.
Las diferentes distribuciones de Linux utilizan distintos formatos de paquete y distintos programas de administración de paquetes.
Hay disponible un programa que permite desempaquetar un paquete Debian en una máquina que se ha instalado con una distribución `extraña', y generalmente funciona, en el sentido en que desempaquetará los ficheros. Lo contrario posiblemente es cierto también, esto es, un programa que desempaquete un paquete RedHat o Slackware en una máquina basada en Debian Linux probablemente tendrá éxito desempaquetando el paquete y colocando la mayoría de los ficheros en los directorios deseados. La causa de este éxito puede encontrarse mayormente en la existencia de (y la amplia adhesión a) la Norma de Sistema de Ficheros Linux (Linux File System Standard).
La mayoría de los administradores de paquetes escriben ficheros administrativos cuando se utilizan para desempaquetar un archivo. Dichos ficheros administrativos en general no están estandarizados. Por lo tanto, el efecto de desempaquetar un paquete Debian en un entorno `extraño' puede tener efectos impredecibles (ciertamente no muy útiles) sobre el administrador de paquetes de dicho entorno. De la misma manera, las utilidades provenientes de otras distribuciones pueden tener éxito al desempaquetar sus archivos en un sistema Debian, pero probablemente causarán un fallo del sistema de administración de paquetes de Debian cuando llegue el momento de actualizar o borrar algunos paquetes, o incluso si se desea simplemente un informe exacto de los paquetes presentes en el sistema.
La Norma de Sistema de Ficheros Linux
(y por lo tanto Debian GNU/Linux) requiere que los
subdirectorios bajo /usr/local/
se usen enteramente a
discreción del usuario. Así que los usuarios pueden desempaquetar
paquetes `extraños' en este directorio, y luego administrar sus
configuraciones, actualizarlos y borrarlos individualmente.
¿Todavía tiene un programa así?
Para ejecutar un programa cuyo binario está en formato a.out
(i.e., QMAGIC o ZMAGIC),
a.out
incluido, ya sea directamente (CONFIG_BINFMT_AOUT=y) o como
módulo (CONFIG_BINFMT_AOUT=m). (el paquete kernel-image de Debian contiene
el módulo binfmt_aout
.)
Si su núcleo soporta binarios a.out
mediante módulos,
entonces debe asegurarse de que esté cargado el módulo
binfmt_aout
. Puede hacer esto en el momento del arranque si
tiene una línea que diga binfmt_aout
en el fichero
/etc/modules
. Puede también hacerlo desde la línea de
órdenes si ejecuta insmod NOMBREDIR/binfmt_aout.o
donde
NOMBREDIR
es el nombre del directorio donde se almacenan
los módulos construídos para la versión del núcleo que está
corriendo. En un sistema con la versión 2.0.36 del núcleo es probable que
NOMBREDIR
sea /lib/modules/2.0.36/fs/
.
libc4
.
En el momento en el que se salga Debian 2.0, es muy probable que el paquete
libc4
haya sido eliminado de la distribución. Si este es el caso,
usted podría querer buscar un CD-ROM de Debian antiguo (Debian 1.3.1
todavía tenía este paquete).
a.out
, entonces instale también el paquete xcompat
.
Si tiene una aplicación comercial en formato a.out
, puede ser el
momento de pedir que le envíen una actualización a formato ELF
.
Sí. Simplemente, instale las bibliotecas necesarias de la sección
oldlibs
, que se incluyen en Debian 2.0 para conseguir
compatibilidad con aplicaciones antiguas.
Sí. En Debian, el sistema puede estar completamente actualizado a libc6
(incluyendo los paquetes de desarrollo), y aún así es posible desarrollar
programas para libc5. Simplemente instale los paquetes -altdev
necesarios. El conjunto mínimo de paquetes que necesitará es:
altgcc
, en la sección devel
y libc5-altdev
en
la sección oldlibs
.
Entonces tiene que colocar las herramientas libc5
antes que las normales en el PATH. Esto es, ejecute
la orden export PATH=/usr/i486-linuxlibc1/bin:$PATH
(Esto no es esencial, sólo ventajoso).
Si sólo lo va a utilizar una vez, sería suficiente con:
PATH=/usr/i486-linuxlibc1/bin:$PATH make [objetivo]
.
Los ficheros bajo el directorio /usr/local/
no están bajo el
control del sistema de administración de paquetes de Debian. Por lo
tanto, es una buena práctica
colocar el código fuente de su programa en /usr/local/src/
.
Por ejemplo, puede extraer los ficheros de un paquete denominado
"fu.tar" dentro del directorio
/usr/local/src/fu
. Después de compilarlo, coloque los
ejecutables en /usr/local/bin/
, las bibliotecas en
/usr/local/lib/
, y los ficheros de configuración en
/usr/local/etc/
.
Si sus programas y/o ficheros realmente deben situarse en algún otro
directorio, aún puede colocarlos bajo el directorio
/usr/local/
, y crear los enlaces simbólicos en los lugares
necesarios que apunten al lugar de instalación en
/usr/local/
, por ejemplo, puede crear el enlace
ln -s /usr/local/bin/fu /usr/bin/fu
En cualquier caso, si el paquete que obtuvo permite la redistribución en su licencia, debería considerar la posibilidad de construir un paquete Debian de él, y enviarlo para que forme parte del sistema Debian. Las instrucciones para convertirse en desarrollador de paquetes se encuentran en el manual de normas de Debian.
Debian usa la base de datos terminfo
y la biblioteca
ncurses
para manejar la interfaz del terminal, en lugar de la
base de datos termcap
y la biblioteca termcap
. Los
usuarios que compilen programas que requieran conocimiento de la
interfaz del terminal deben reemplazar las referencias a
libtermcap
con referencias a libncurses
.
Para dar soporte a los ejecutables que hayan sido enlazados con la
biblioteca termcap
, y de los cuales no tenga el código
fuente, Debian proporciona un paquete denominado
termcap-compat
. Éste provee tanto el fichero
libtermcap.so.2
como /etc/termcap
. Instale este
paquete si el programa falla al ejecutarse con el mensaje de error
"can't load library 'libtermcap.so.2'", o se queja de que
no encuentra el fichero /etc/termcap
.
AccelX usa la biblioteca termcap
durante su instalación. Vea
acerca de termcap más arriba.
fu
?
Este mensaje de error puede significar que el programa está enlazado
con la versión libc5
de las bibliotecas X11. En este caso
necesitará instalar el paquete xlib6
, de la sección
oldlibs
.
Sí. Pero debe comprender antes las reglas que tiene Debian acerca de los ficheros de encabezado (headers).
Las bibliotecas C de Debian se construyen con las últimas entregas
estables de los ficheros de encabezado de gcc
. Por
ejemplo, la distribución Debian-1.2 usó la versión 5.4.13 de los
ficheros de encabezado. Esta práctica contrasta con los paquetes de fuentes
del núcleo que se archivan en todos los sitios FTP de Linux, que
utilizan versiones aún más nuevas de los ficheros de encabezado. Los
encabezados del núcleo que se distribuyen junto con los fuentes de
dicho núcleo se encuentran alojados en
/usr/include/linux/include/
.
Si necesitara compilar un programa con encabezados de núcleo más
nuevos que los provistos por libc6-dev
, entonces tendrá que
agregar -I/usr/src/linux/include/
a la línea de órdenes al
compilar. Esto sucede en una situación, por ejemplo, con el
paquete del demonio de automontaje (automounter daemon)
(amd
). Cuando los nuevos núcleos cambian las cuestiones
internas que manejan el NFS, amd
necesita enterarse de
tales cambios. Para ello requiere la inclusión de las últimas
versiones de los encabezados del núcleo.