Este apéndice describe cómo descargar binarios para \emph{ksh93}, así como cómo descargar el código fuente para \emph{ksh93} y construir una versión funcional. Deberías hacer esto si tu sistema no tiene \emph{ksh93} en absoluto o si necesitas alguna de las características que solo están disponibles en las versiones más recientes. \section{Sitios web de Korn Shell} El punto de partida para todo lo relacionado con el shell Korn es \url{http://www.kornshell.com}, mantenido por David Korn, con enlaces agrupados en las siguientes categorías: \begin{description} \item[Información] Al hacer clic en este enlace, se accede a una descripción general de una página sobre el shell Korn. \item[Software] Al hacer clic en este enlace, se encuentran enlaces al sitio de descargas de AT\&T (ver la siguiente sección), algún código de ejemplo, un artículo en línea para \emph{dtksh} y un enlace para \emph{tksh}. Estos dos últimos se describen en el Apéndice A. \item[Documentación] Este enlace lleva a una página con enlaces a información en línea, incluida información general, páginas de manual tanto para \emph{ksh88} como para \emph{ksh93}, libros y referencias sobre el shell Korn, y documentos sobre el shell Korn de diversas conferencias. \item[Recursos] Una lista de enlaces a otros recursos en la web para \emph{ksh} y muchos de los otros shells descritos en el Apéndice A, como \emph{bash} y \emph{dtksh}. \item[Diversión] David G. Korn, el programador, se encuentra con KoRN, el grupo de rock. Dicho y hecho. \end{description} \section{Lo que puedes descargar} \url{http://www.research.att.com/sw/download} es el punto de partida para descargar el software de \emph{ksh}. El software está cubierto por una licencia de estilo de código abierto. La versión actual de la licencia se encuentra en \url{http://www.research.att.com/sw/license/ast-open.html}. Esta licencia se reproduce en el Apéndice D. Deberías leerla y entenderla primero; si sus términos no son aceptables para ti, no deberías descargar el código fuente o binarios del software desde el sitio web de AT\&T. El software en el sitio web de AT\&T está disponible en diferentes <>, la mayoría de los cuales tienen nombres con el prefijo <>, que significa \emph{Advanced Software Tools} (Herramientas de Software Avanzado). Los paquetes de origen vienen como archivos tar comprimidos con \emph{gzip}, usando el sufijo de nombre de archivo \emph{.tgz}. Elige uno o más de los siguientes paquetes para descargar: \begin{description} \item[ratz] Un programa ejecutable independiente para leer archivos tar comprimidos con \emph{gzip}. Úsalo si no tienes \emph{gzip} en tu sistema y no quieres molestarte en descargar y compilar \emph{gzip} primero. Puedes descargar el código fuente para este paquete o un ejecutable binario para cualquiera de las arquitecturas enumeradas en la Tabla \ref{Tab:C-1}. \item[ksh] Esta es la forma más rápida de obtener un ejecutable de \emph{ksh93}. Hay versiones disponibles para las arquitecturas enumeradas en la Tabla \ref{Tab:C-1}. \item[INIT] Este paquete debe descargarse al construir cualquiera de los siguientes paquetes fuente. Contiene los archivos y estructuras de directorio en los que dependen las herramientas y el sistema de construcción de AST. \item[ast-ksh] Este paquete construye solo la infraestructura de soporte (bibliotecas, programas de prueba de entorno, etc.) para \emph{ksh} y el ejecutable \emph{ksh}. Es lo más sencillo de construir. \item[ast-base] Este paquete construye todo en el paquete \emph{ast-ksh} y algunas herramientas AST básicas adicionales. En particular, incluye \emph{pax}, una herramienta de archivado que combina funciones de \emph{tar(1)} y \emph{cpio(1)}, y \emph{nmake}, una versión significativamente mejorada del programa estándar \emph{make(1)} de Unix. También incluye las bibliotecas \emph{sfio} (Safe Fast I/O) y \emph{ast}, que puedes usar para tus propios programas. \item[ast-open] Este paquete construye todo en el paquete ast-base y muchas herramientas adicionales. Ten en cuenta que \emph{tksh} (ver Apéndice A) está incluido en este paquete. \end{description} Cada uno de los paquetes (excepto \emph{INIT}) también está disponible como binarios precompilados. La Tabla C-1 enumera las arquitecturas disponibles para estos paquetes. También hay traducciones de locales para algunos locales y algunos programas. \begin{table}[h] \center \caption{Arquitecturas admitidas para programas AST} \label{Tab:C-1} \begin{tabular}{|m{3cm}|m{12cm}|} \hline \textbf{Nombre} & \textbf{SO/Arquitectura} \\ \hline darwin.ppc & Apple's MacOS X (también conocido como Darwin) para Motorola Power PC \\\hline hp.pa & Hewlett-Packard HP-UX para HP Precision Architecture \\\hline ibm.risc & AIX de IBM para RS/6000 \\\hline linux.i386 & GNU/Linux en Intel 80386 y superior \\\hline linux.s390 & GNU/Linux en el mainframe IBM S/390 \\\hline mvs.390 & MVS de IBM en el mainframe IBM S/390 \\\hline netbsd.i386 & NetBSD en Intel 80386 y superior (ver \url{http://www.netbsd.org}) \\\hline openbsd.i386 & OpenBSD en Intel 80386 y superior (ver \url{http://www.openbsd.org}) \\\hline osf.alpha & OSF/1 en el procesador Compaq (anteriormente Digital) Alpha \\\hline sgi.mips3 & Silicon Graphics (SGI) Irix en el procesador MIPS \\\hline sol.sun4 & Solaris 5.4 en la arquitectura Sun SPARC \\\hline sol6.sun4 & Solaris 5.6 en la arquitectura Sun SPARC \\\hline sol7.i386 & Solaris 7 en Intel 80386 y superior \\\hline sol7.sun4 & Solaris 7 en la arquitectura Sun SPARC \\\hline sol8.sun4 & Solaris 8 en la arquitectura Sun SPARC \\\hline sun4 & SunOS 4.x en la arquitectura Sun SPARC \\\hline unixware.i386 & UnixWare (la última versión oficial de System V) en Intel 80386 y superior \\\hline \end{tabular} \end{table} \section{Construcción de ksh (Shell Korn)} Construir cualquiera de los paquetes a partir del código fuente es bastante sencillo. Todos los detalles, junto con preguntas frecuentes y notas, se encuentran en el sitio web de AT\&T. Aquí tienes una guía paso a paso de los pasos. Mostramos los pasos para el paquete \emph{ast-open}, pero son idénticos para los demás paquetes de código fuente. \begin{enumerate} \item Asegúrate de tener un compilador de C para tu sistema. Se prefiere un compilador de C ANSI/ISO, pero un compilador K\&R también funcionará. Obtener un compilador de C si no tienes uno está más allá del alcance de este libro; contacta a tu administrador de sistema local. \item Descarga el/los paquete(s) que deseas construir en un directorio vacío. Aquí, construimos el paquete ast-open del 31 de octubre de 2001: \begin{lstlisting}[language=bash] $ ls INIT.2001-10-31.tgz ast-open.2001-10-31.tgz \end{lstlisting} \item Crea el directorio \texttt{lib/package/tgz} y mueve los archivos allí: \begin{lstlisting}[language=bash] $ mkdir lib lib/package lib/package/tgz $ mv *.tgz lib/package/tgz \end{lstlisting} \item Extrae el paquete \emph{INIT} manualmente: \begin{lstlisting}[language=bash] $ gzip -d < lib/package/tgz/INIT.2001-10-31.tgz | tar -xvpf - \r\v\vNOTICE -- LICENSED SOFTWARE -- SEE README FOR DETAILS\r\v\v README src/Makefile src/cmd/Makefile src/lib/Makefile ... \end{lstlisting} Si no tienes \emph{gzip}, usa el programa \emph{ratz}, como se describió anteriormente. \item Inicializa la lista de paquetes disponibles: \begin{lstlisting}[language=bash] $ bin/package read \r\v\vNOTICE -- LICENSED SOFTWARE -- SEE README FOR DETAILS\r\v\v README src/Makefile src/cmd/Makefile src/lib/Makefile src/Mamfile ... \end{lstlisting} \item Inicia la compilación. Este paso es bastante detallado y llevará un tiempo. La duración exacta depende de la velocidad de tu sistema y compilador, y del paquete que estás construyendo: \begin{lstlisting}[language=bash] $ bin/package make package: initialize the /home/arnold/ast-open/arch/linux.i386 view package: update /home/arnold/ast-open/arch/linux.i386/bin/proto package: update /home/arnold/ast-open/arch/linux.i386/bin/mamake package: update /home/arnold/ast-open/arch/linux.i386/bin/ratz package: update /home/arnold/ast-open/arch/linux.i386/bin/release ... \end{lstlisting} \item Instala los archivos creados. Esto se puede hacer con el comando \texttt{bin/package install directory}, donde \emph{directory} es la ubicación para colocar las cosas. Alternativamente, si todo lo que te interesa es el binario de \emph{ksh}, simplemente puedes copiarlo. El binario compilado estará en un directorio llamado \texttt{arch/ARCH/bin}, donde \emph{ARCH} representa tu arquitectura, como \emph{linux.i386}: \begin{lstlisting}[language=bash] cp arch/linux.i386/bin/ksh $HOME/bin/ksh93 \end{lstlisting} \item{¡Disfruta!} \end{enumerate}