% Linux Installation and Getting Started    -*- TeX -*-
% upgrade.tex
% Copyright (c) 1992, 1993 by Matt Welsh <mdw@sunsite.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".
%
% Este fichero es de distribuci\'on libre, pero debe mantenerse esta 
% informaci\'on de Copyright en todas las copias, y debe distribuirse solo como
% parte de "Instalaci\'on y Primeros Pasos en Linux". El uso de este fichero esta
% cubierto por el Copyright del documento completo, en el fichero "copyright.tex"
% Copyright (c) 1995 por Gerardo Izquierdo para la versi\'on al Castellano
% $Log: upgrade.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:13  rcamus
% Primera beta publica
%
%


\section{Actualizando e Instalando Nuevo Software}
\label{sec-sysadm-upgrade}

\index{software!actualizando|(}
\index{software!instalando|(}
Otra tarea del administrador de sistemas es la actualizaci\'on e instalaci\'on de
nuevo software.

La comunidad Linux es muy din\'amica. Las versiones nuevas del n\'ucleo aparecen
cada pocas semanas, y otros programas se actualizan casi tan a menudo. Por 
esto, los nuevos usuarios de Linux sienten a menudo la necesidad de 
actualizar sus sistemas constantemente para mantener el paso de los cambios.
No s\'olo \'esto no es necesario, sino que es una p\'erdida de tiempo. Para 
mantenerse al d\'{\i} a de todos los cambios del mundo Linux, deber\'{\i}a 
utilizar todo su tiempo actualizando en vez de usando su sistema.

Pero entonces, ?`cu\'ando se debe actualizar?. Alguna gente piensa que se debe
actualizar cuando se libera una nueva versi\'on de distribuci\'on ---por 
ejemplo, cuando Slackware presenta una nueva versi\'on. Muchos usuarios 
Linux reinstalan completamente sus sistemas con la nueva versi\'on 
Slackware, cada vez. Esto, tambi\'en, es una p\'erdida de tiempo. En 
general, los cambios de las versiones Slackware son peque\~nos. Bajarse y 
reinstalar 30 discos cuando s\'olo ha cambiado un 10\% del software es, 
por supuesto, in\'util.

La mejor forma de actualizar su sistema es haci\'endolo a mano: actualizando
solo aquellos paquetes de software que sepa que hay que actualizar. Esto
asusta a un mont\'on de gente: quieren saber qu\'e actualizar y c\'omo, 
y qu\'e se romper\'a si no actualizan. Para tener \'exito con Linux, es 
importante superar los temores del ``h\'agalo usted mismo'' ---que es lo 
que Linux es, a fin de cuentas. De hecho, una vez que tenga su sistema 
trabajando y todo el software correctamente configurado, la 
reinstalaci\'on de una nueva versi\'on no dudar\'a en limpiar toda la 
configuraci\'on y todo estar\'a roto otra vez, igual que la primera vez 
que instal\'o su sistema. Volver atr\'as de \'esta forma no es necesario 
---todo lo que se necesita es alg\'un conocimiento acerca de c\'omo 
actualizar el sistema y de c\'omo hacerlo bien.

Se encontrar\'a con que cuando actualice un componente de su sistema, no
tienen por que fallar los dem\'as. Por ejemplo, la mayor parte del software
de mi sistema se qued\'o en una instalaci\'on antigua basada en el nivel 0.96 
MCC Interim. Ciertamente, utilizo la versi\'on m\'as reciente del n\'ucleo 
y de las librer\'{\i}as con \'este software sin problemas. Realmente, la 
actualizaci\'on insensata para ``mantenerse en la ola'' no es tan 
importante. Esto no es MS-DOS o Microsoft Windows. No hay ninguna raz\'on 
importante para ejecutar la versi\'on m\'as reciente de todo el software. 
Si encuentra que desea o necesita funciones de una versi\'on nueva, 
entonces actualice. Si no, no lo haga. En otras palabras, actualice 
s\'olo lo que tenga que hacerlo y cuando tenga que hacerlo. No actualice 
s\'olo por el mero hecho de actualizar. Hacerlo s\'olo gastar\'{\i}a un 
mont\'on de tiempo y esfuerzo intentando mantenerse al d\'{\i}a.

El software m\'as importante para actualizar en su sistema es el 
n\'ucleo, las librer\'{\i}as y el compilador {\tt gcc}. Estas son las tres 
partes esenciales de su sistema, y en algunos casos cada uno depende de 
las otras para que todo funcione bien. La mayor parte del resto del 
software de su sistema no necesita ser actualizado peri\'odicamente.

\subsection{Actualizando el n\'ucleo}
\index{n\'ucleo!actualizando}
Actualizar el n\'ucleo es simplemente asunto de coger los fuentes y compilarlos
uno mismo. Debe compilar el n\'ucleo por si mismo para poder activar o
desactivar ciertas funciones, adem\'as de asegurarse de que el n\'ucleo 
estar\'a optimizado para correr en su m\'aquina. El proceso es casi indoloro.

\index{n\'ucleo!fuentes del}
Los fuentes del n\'ucleo pueden obtenerse de cualquiera de los servidores 
FTP de Linux (para una lista, v\'ease Ap\'endice~\ref{app-ftp}). En {\tt 
sunsite.unc.edu}, por ejemplo, los fuentes del n\'ucleo se encuentran en 
{\tt /pub/Linux/kernel}. Las versiones del n\'ucleo se numeran utilizando 
un n\'umero de versi\'on y un nivel de ``parche''. Por ejemplo, la 
versi\'on de n\'ucleo 0.99, nivel de parche 11 es nombrada como {\tt 
0.99.pl11}, o simplemente {\tt 0.99.11}.

Los fuentes del n\'ucleo se presentan en un fichero tar comprimido con 
{\tt gzip}\footnote{A menudo, se suministra un fichero de parches para
la versi\'on actual del n\'ucleo, que permite parchear los fuentes actuales
desde el nivel anterior al actual (utilizando el programa {\tt patch}). En
muchos casos, sin embargo, es normalmente m\'as sencillo el instalar la
nueva versi\'on de los fuentes del n\'ucleo completa.}. Por ejemplo, el fichero
conteniendo los fuentes del n\'ucleo 0.99.pl11 es
{\tt linux-0.99.11.tar.gz}. 

Se desempaqueta este fichero tar desde el directorio {\tt /usr/src}; esto
crea el directorio {\tt /usr/src/linux} que contiene los fuentes del n\'ucleo.
Se debe borrar o cambiar de nombre el directorio {\tt /usr/src/linux} 
existente antes de desempaquetar la nueva versi\'on.

Una vez que se han desempaquetado los fuentes, es necesario asegurarse que 
dos enlaces simb\'olicos son correctos. Para crear estos enlaces, se utilizan
los comandos:
\begin{tscreen}
\# {\em ln -sf /usr/src/linux/include/linux /usr/include/linux} \\
\# {\em ln -sf /usr/src/linux/include/asm /usr/include/asm}
\end{tscreen}
Una vez creados estos enlaces una vez, no hay raz\'on para crearlos de nuevo
cuando se instale la siguiente versi\'on de los fuentes del n\'ucleo. (V\'ease 
secci\'on~\ref{sec-manage-links} para m\'as informaci\'on sobre enlaces 
simb\'olicos.)

\index{n\'ucleo!compilando}
Hay que advertir, que para poder compilar el n\'ucleo, se debe tener {\tt gcc} 
y {\tt g++}, compiladores C y C++, instalados en el sistema. Puede necesitar
tener la versi\'on m\'as reciente de estos compiladores: ver 
secci\'on~\ref{sec-upgrade-gcc}, m\'as adelante, para m\'as informaci\'on.

Para compilar el n\'ucleo, primero cambie de directorio usando {\tt cd} a
{\tt /usr/src/linux}. Ejecute el comando {\tt make config}. Este comando le
ir\'a preguntando por un n\'umero de opciones de configuraci\'on, como puede ser
qu\'e tipos de sistemas de ficheros se desea incluir en el nuevo n\'ucleo.

Despu\'es, edite {\tt /usr/src/linux/Makefile}. Aseg\'urese que la definici\'on
para {\tt ROOT\_DEV} sea correcta ---define el dispositivo utilizado como
sistema de ficheros ra\'{\i}z en tiempo de arranque. La definici\'on normal es
\begin{tscreen}
ROOT\_DEV = CURRENT
\end{tscreen}

A menos que est\'e cambiando el dispositivo ra\'{\i}z del sistema de ficheros, no
hay raz\'on para cambiar esto.

Despu\'es, ejecute el comando {\tt make dep} para asegurar que se cumplen 
todas las dependencias del fuente. Este es un paso muy importante.

\index{n\'ucleo!compilando una imagen comprimida}
Finalmente, se est\'a listo para compilar el n\'ucleo. El comando 
{\tt make Image} compilar\'a el n\'ucleo y dejar\'a la nueva imagen del n\'ucleo en
el fichero {\tt /usr/src/linux/Image}. Alternativamente, el comando 
{\tt make zImage} compilar\'a una imagen comprimida del n\'ucleo, que se 
descomprime a s\'{\i}  misma en tiempo de arranque y utiliza menos espacio 
en el disco.

Una vez que est\'a el n\'ucleo compilado, se necesita, o bien copiarlo a un 
disquete de arranque (con un comando como ``{\tt cp Image /dev/fd0}'') o
bien instalarlo utilizando LILO para arrancar desde el disco duro. Ver
secci\'on~\ref{sec-lilo} para m\'as informaci\'on.

\subsection{Actualizando las librer\'{\i}as}\label{sec-upgrade-libs}
\index{librer\'{\i} as!actualizando}
Como se mencion\'o antes, la mayor parte del software del sistema est\'a 
compilado para que utilice las librer\'{\i}as compartidas, que contienen subrutinas
comunes compartidas entre distintos programas.

Si le aparece el mensaje
\begin{tscreen}
Incompatible library version
\end{tscreen}
cuando se intenta ejecutar un programa, entonces necesita actualizar a la 
versi\'on de las librer\'{\i}as que el programa requiere. Las librer\'{\i}as son 
compatible-ascendentes; esto es, un programa compilado para utilizar una
versi\'on antigua de las librer\'{\i}as, debe trabajar con la nueva versi\'on de
las librer\'{\i}as instalada. Sin embargo, lo contrario no es cierto.

La \'ultima versi\'on de las librer\'{\i}as se puede encontrar en los 
servidores FTP de Linux. En {\tt sunsite.unc.edu}, est\'an disponibles en 
{\tt /pub/Linux/GCC}. Los ficheros de ``versi\'on'' que se encuentran 
ah\'{\i} deben explicar qu\'e ficheros se necesita obtener y c\'omo 
instalarlos. R\'apidamente, se deben coger los ficheros {\tt image-{\em 
versi\'on}.tar.gz} y {\tt inc-{\em versi\'on}.tar.gz} donde {\em 
versi\'on} es la versi\'on de las librer\'{\i}as a instalar, por ejemplo 
{\tt 4.4.1}. Son ficheros tar comprimidos con {\tt gzip}; el fichero {\tt 
image} contiene las im\'agenes de las librer\'{\i}as a instalar en {\tt 
/lib} y {\tt /usr/lib}. El fichero {\tt inc} contiene los ficheros de 
inclusi\'on a instalar en {\tt /usr/include}.

El fichero {\tt release-{\em versi\'on}.tar.gz} debe explicar el m\'etodo de 
instalaci\'on detalladamente (las instrucciones exactas var\'{\i}an para cada 
versi\'on). En general, se necesita instalar los ficheros de librer\'{\i}as 
{\tt .a} y {\tt .sa} en {\tt /usr/lib}. Estas son las librer\'{\i}as utilizadas
en tiempo de compilaci\'on.

Adem\'as, los ficheros imagen de las librer\'{\i}as compartidas 
{\tt libc.so.{\em versi\'on}} se instalan en {\tt /lib}. Estas son las 
im\'agenes de las librer\'{\i}as compartidas que son cargadas en tiempo de 
ejecuci\'on por los programas que utilizan las librer\'{\i}as. Cada 
librer\'{\i}a tiene un enlace simb\'olico utilizando el n\'umero de 
versi\'on mayor de la librer\'{\i}a en {\tt /lib}

Por ejemplo, la versi\'on 4.4.1 de la librer\'{\i}a {\tt libc} tiene un 
n\'umero de versi\'on mayor de {\tt 4}. El fichero que contiene la 
librer\'{\i}a es {\tt libc.so.4.4.1}. Existe un enlace simb\'olico del 
nombre {\tt libc.so.4} en {\tt /lib} apuntando a este fichero. Por 
ejemplo, cuando se actualiza de {\tt libc.so.4.4} a {\tt libc.so.4.4.1}, 
necesita cambiar el enlace simb\'olico para apuntar a la nueva versi\'on.

\blackdiamond Es muy importante que se cambie el enlace simb\'olico en un solo
paso, como se indica m\'as abajo. Si de alguna forma borrase el enlace 
simb\'olico {\tt libc.so.4}, los programas que dependen del enlace (incluyendo 
utilidades b\'asicas como {\tt ls} y {\tt cat}) dejar\'an de funcionar.
Utilice el siguiente comando para actualizar el enlace simb\'olico 
{\tt libc.so.4} para que apunte al fichero {\tt libc.so.4.4.1}:
\begin{tscreen}
\# {\em ln -sf /lib/libc.so.4.4.1 /lib/libc.so.4}
\end{tscreen}
Se necesita tambi\'en cambiar el enlace simb\'olico {\tt libm.so.{\em versi\'on}}
de la misma forma. Si se est\'a actualizando a una versi\'on diferente de las
librer\'{\i}as, sustituya lo anterior con los nombres adecuados. La nota de
la versi\'on de la librer\'{\i}a debe explicar los detalles. (Ver 
secci\'on~\ref{sec-manage-links} para m\'as informaci\'on acerca de los 
enlaces simb\'olicos).

\subsection{Actualizando {\tt gcc}}\label{sec-upgrade-gcc}
\index{gcc@{\tt gcc}!actualizando}
El compilador de C y C++ {\tt gcc} se utiliza para compilar software en su
sistema, siendo el m\'as importante el n\'ucleo. La versi\'on m\'as 
reciente de {\tt gcc} se encuentra en los servidores FTP de Linux. En {\tt 
sunsite.unc.edu} se encuentra en el directorio {\tt /pub/Linux/GCC} 
(junto con las librer\'{\i}as). Debe existir un fichero {\tt release} para 
la distribuci\'on {\tt gcc} detallando qu\'e ficheros se necesitan 
obtener y como instalarlos.
 
\subsection{Actualizando otro software}
La actualizaci\'on de otro software s\'olo suele consistir en obtener los 
ficheros apropiados e instalarlos. Mucho software para Linux se 
distribuye como ficheros tar comprimidos con {\tt gzip}, incluyendo, ya 
sea fuentes, ejecutables o ambos. Si los ejecutables no se incluyen con 
la versi\'on, puede ser necesario recompilarlos uno mismo; normalmente 
esto significa teclear {\tt make} en el directorio que tiene los fuentes.

\index{software!donde encontrar versiones}
Leer el newsgroup de USENET {\tt comp.os.linux.announce} en busca de anuncios
de nuevas versiones de software es la mejor manera de enterarse de la 
aparici\'on de nuevo software. Siempre que busque software en un servidor 
FTP b\'ajese el fichero de \'{\i}ndice {\tt ls-lR} del servidor FTP y 
utilice {\tt grep} para encontrar los ficheros en cuesti\'on, es la forma 
m\'as simple de localizar software. Si tiene la posibilidad de utilizar 
{\tt archie}, \'este puede servirle de ayuda. Si no tiene {\tt archie}, 
puede conectarse con {\tt telnet} a un servidor {\tt archie} como puede 
ser {\tt archie.rutgers.edu}, identificarse como ``{\tt archie}'' y 
utilizar el comando ``{\tt help}''. V\'ease Ap\'endice~\ref{app-info} 
para m\'as detalles.

Una fuente \'util de software para Linux, son las im\'agenes de los 
discos de la distribuci\'on Slackware. Cada disco contiene varios 
ficheros {\tt .tgz} que son simples ficheros tar comprimidos con {\tt 
gzip}. En vez de bajarse los discos, puede bajar s\'olo los ficheros {\tt 
.tgz} deseados de los directorios Slackware del servidor FTP e 
instalarlos directamente. Si puede ejecutar la distribuci\'on Slackware, 
puede utilizar el comando {\tt setup} para cargar e instalar 
autom\'aticamente una serie completa de discos.

Insistimos, normalmente no es una buena idea el actualizar reinstalando
desde cero la versi\'on m\'as reciente de Slackware, u otra distribuci\'on.
Si se reinstala de esta forma, no lo dude, arruinar\'a su instalaci\'on actual.
La mejor forma de actualizar software es por partes; esto es, si hay un 
programa que se usa a menudo y tiene una nueva versi\'on, actual\'{\i}celo. Si no, no se moleste. Regla pr\'actica: Si no tiene nada roto, no 
lo repare. Si su software actual funciona, no hay motivo para actualizar.
\index{software!actualizando|)}
\index{software!instalando|)}
