<sect>Cuestiones de Compatibilidad <label id="Compatibility">
<P>
<sect1>¿Cuán compatible es Debian con otras distribuciones de Linux?
	<label id="other distribs">
<P>
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.

<P>
Debian GNU/Linux se adhiere a la Estructura de Sistema
de Ficheros Linux
<!-- XXX update to FHS when it is ready -->
<url url="http://www.pathname.com/fhs/" name="(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.

<sect1>
¿Cuán compatible es Debian en código fuente con otros sistemas Unix? <label id="other Unices">
<P>

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 &dquot;casi
todos&dquot; los casos.  Por ese motivo, hace algunos años surgió la
<!--
algunos años atrás -> hace algunos años. svd
-->
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.)

<!--
<P>
<bf>(The authors would very much like to
give you a pointer to an on-line document that described that standard,
but the IEEE is another one of those organizations that gets away with
declaring standards and then requiring that people PAY to find out what
they are.  This makes about as much sense as having to find out the
significance of various colored lights on traffic signals.)</bf>
-->

<P>
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.
<!-- Creo que Lasermoon quebró, pero en cualquier caso lo que sigue
es un enlace colgado:
<url url="http://www.lasermoon.co.uk/linux-ft/linux-ft.html"
name="Linux-FT">. En la actualidad, Unifix está aportando sus parches
al núcleo de Linux, gcc y otras herramientas; por lo
tanto, se espera que sus enmiendas que apuntan hacia la conformidad
POSIX.1 estén disponibles en Debian (y otras distribuciones).
-->

<sect1>¿Puedo utilizar los paquetes Debian (los ficheros &dquot;.deb&dquot;) en mi sistema Linux RedHat/Slackware/...? ¿Puedo utilizar los paquetes RedHat (los ficheros &dquot;.rpm&dquot;) en mi sistema Debian GNU/Linux?	<label id="other packages">
<P>
Las diferentes distribuciones de Linux utilizan distintos formatos de
paquete y distintos programas de administración de paquetes.

<!-- stupid tags -->
<descrip>
<tag/Usted probablemente puede:/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
<!--
The converse -> lo contrario. svd
-->
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).
<!--
¿Por qué no "estándar"? svd
-->
<P>
<tag/Usted probablemente no quiera:/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
<!--
¿¿ la falla ?? svd
-->
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.
<P>
<tag/El mejor camino:/La Norma de Sistema de Ficheros Linux
(y por lo tanto Debian GNU/Linux) requiere que los
subdirectorios bajo <tt>/usr/local/</tt> 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.
</descrip>
<P>

<!--
It would be useful to document all the ways in which Debian and RedHat
systems differ.  I believe such a document would do a lot to dispell 
fears of using a Unix system. SGK 
-->

<sect1>¿Es capaz Debian de ejecutar mis viejos programas &dquot;a.out&dquot;?
<label id="a.out">
<P>
¿Todavía tiene un programa así?

Para <em>ejecutar</em> un programa cuyo binario está en formato <tt>a.out</tt>
(i.e., QMAGIC o ZMAGIC), 
<itemize>

  <item>Asegúrese de que su núcleo tenga soporte <tt>a.out</tt>
<!--
Asegúrurese *de* que... svd
-->
  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 <tt>binfmt_aout</tt>.)  
  <P>
  Si su núcleo soporta binarios <tt>a.out</tt> mediante módulos,
  entonces debe asegurarse de que esté cargado el módulo
  <tt>binfmt_aout</tt>.  Puede hacer esto en el momento del arranque si
  tiene una línea que diga <tt>binfmt_aout</tt> en el fichero
  <tt>/etc/modules</tt>.  Puede también hacerlo desde la línea de
  órdenes si ejecuta <tt>insmod NOMBREDIR/binfmt_aout.o</tt> donde
  <tt>NOMBREDIR</tt> 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
  <tt>NOMBREDIR</tt> sea <tt>/lib/modules/2.0.36/fs/</tt>.

  <item>Instale el paquete <tt>libc4</tt>.
<p>
En el momento en el que se salga Debian 2.0, es muy probable que el paquete
<tt>libc4</tt> 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).

<item>Si el programa que desea ejecutar es un cliente X
<tt>a.out</tt>, entonces instale también el paquete <tt>xcompat</tt>.

</itemize>

<P>
Si tiene una aplicación comercial en formato <tt>a.out</tt>, puede ser el
momento de pedir que le envíen una actualización a formato <tt>ELF</tt>.
<P>

<!--
Hoy en día, el interés de esto es muy escaso, así que esto lo comento. svd

<sect1>¿Puede utilizarse Debian para compilar programas &dquot;a.out&dquot;?
<P>
Para <em>compilar</em> programas en el formato binario <tt>a.out</tt>,

<itemize>

  <item>Instale los paquetes de desarrollo Debian para formato
  <tt>a.out</tt>, los cuales son:
    <itemize>
      <item><tt>libc4-dev</tt>
      <item><tt>aout-binutils</tt>
      <item><tt>aout-librl</tt>
      <item><tt>aout-gcc</tt>
    </itemize>

  <item>Coloque las herramientas <tt>a.out</tt> antes que las
  <tt>ELF</tt> en su ruta (PATH).  Esto es, ejecute la orden
  <tt>export PATH=/usr/i486-linuxaout/bin:$PATH</tt>
  (Esto no es esencial, sólo ventajoso.)
  Si sólo lo va a utilizar una vez, sería suficiente con:
  <tt>PATH=/usr/i486-linuxaout/bin:$PATH make [objetivo]</tt>.

</itemize>

-->

<sect1>¿Puede Debian ejecutar mis programas libc5 antiguos?
<P>
Sí. Simplemente, instale las bibliotecas necesarias de la sección
<tt>oldlibs</tt>, que se incluyen en Debian 2.0 para conseguir
compatibilidad con aplicaciones antiguas.

<sect1>¿Puede utilizarse Debian para compilar programas libc5?
<P>
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 <tt>-altdev</tt>
necesarios. El conjunto mínimo de paquetes que necesitará es:
<tt>altgcc</tt>, en la sección <tt>devel</tt> y <tt>libc5-altdev</tt> en
la sección <tt>oldlibs</tt>.

Entonces tiene que colocar las herramientas <tt>libc5</tt>
antes que las normales en el PATH.  Esto es, ejecute
la orden <tt>export PATH=/usr/i486-linuxlibc1/bin:$PATH</tt>
(Esto no es esencial, sólo ventajoso).
Si sólo lo va a utilizar una vez, sería suficiente con:
<tt>PATH=/usr/i486-linuxlibc1/bin:$PATH make [objetivo]</tt>.

<sect1>¿Cómo debería instalar un paquete que no es Debian?
	<label id="non-Debian programs">
<P>
Los ficheros bajo el directorio <tt>/usr/local/</tt> no están bajo el
control del sistema de administración de paquetes de Debian.  Por lo
tanto, es una buena práctica
<!-- XXX /usr/local/src ???
Sí, creo que es correcto. svd
-->
colocar el código fuente de su programa en <tt>/usr/local/src/</tt>.
<!-- Discrepancia con el original: No hay tt en ^^^. svd -->
Por ejemplo, puede extraer los ficheros de un paquete denominado
&dquot;fu.tar&dquot; dentro del directorio
<tt>/usr/local/src/fu</tt>.  Después de compilarlo, coloque los
ejecutables en <tt>/usr/local/bin/</tt>, las bibliotecas en
<tt>/usr/local/lib/</tt>, y los ficheros de configuración en
<tt>/usr/local/etc/</tt>.
<P>
Si sus programas y/o ficheros realmente deben situarse en algún otro
directorio, aún puede colocarlos bajo el directorio
<tt>/usr/local/</tt>, y crear los enlaces simbólicos en los lugares
necesarios que apunten al lugar de instalación en
<tt>/usr/local/</tt>, por ejemplo, puede crear el enlace
<verb>ln -s /usr/local/bin/fu /usr/bin/fu</verb>
<P>
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 <ref id="DebianDocs" name="manual de
normas de Debian">.

<sect1>¿Por qué no puedo compilar programas que requieren libtermcap?
	<label id="termcap">
<P>
Debian usa la base de datos <tt>terminfo</tt> y la biblioteca
<tt>ncurses</tt> para manejar la interfaz del terminal, en lugar de la
base de datos <tt>termcap</tt> y la biblioteca <tt>termcap</tt>.  Los
usuarios que compilen programas que requieran conocimiento de la
interfaz del terminal deben reemplazar las referencias a
<tt>libtermcap</tt> con referencias a <tt>libncurses</tt>.
<P>
Para dar soporte a los ejecutables que hayan sido enlazados con la
biblioteca <tt>termcap</tt>, y de los cuales no tenga el código
fuente, Debian proporciona un paquete denominado
<tt>termcap-compat</tt>.  Éste provee tanto el fichero
<tt>libtermcap.so.2</tt> como <tt>/etc/termcap</tt>.  Instale este
paquete si el programa falla al ejecutarse con el mensaje de error
&dquot;can't load library 'libtermcap.so.2'&dquot;, o se queja de que
no encuentra el fichero <tt>/etc/termcap</tt>.

<sect1>¿Por qué no puedo instalar AccelX?
	<label id="AccelX">
<P>
AccelX usa la biblioteca <tt>termcap</tt> durante su instalación. Vea <ref
id="termcap" name="acerca de termcap"> más arriba.

<sect1>¿Por qué me da el mensaje de error &dquot;Can't find libX11.so.6&dquot; cuando trato de ejecutar <tt>fu</tt>?
<P>
Este mensaje de error puede significar que el programa está enlazado 
con la versión <tt>libc5</tt> de las bibliotecas X11.  En este caso
necesitará instalar el paquete <tt>xlib6</tt>, de la sección
<tt>oldlibs</tt>.

<sect1>¿Puedo instalar y compilar un núcleo sin `retoques' específicos para Debian?
<P>
Sí.  Pero debe comprender antes las reglas que tiene Debian acerca de
los ficheros de encabezado (headers).
<P>
Las bibliotecas C de Debian se construyen con las últimas entregas
<em>estables</em> de los ficheros de encabezado de <tt>gcc</tt>.  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
<tt>/usr/include/linux/include/</tt>.
<P>
Si necesitara compilar un programa con encabezados de núcleo más
nuevos que los provistos por <tt>libc6-dev</tt>, entonces tendrá que
agregar <tt>-I/usr/src/linux/include/</tt> 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)
(<tt>amd</tt>).  Cuando los nuevos núcleos cambian las cuestiones
internas que manejan el NFS, <tt>amd</tt> necesita enterarse de
tales cambios.  Para ello requiere la inclusión de las últimas
versiones de los encabezados del núcleo.
