Tanto el método APT de dselect
como apt-get
comparten
la misma interfaz. Es un sistema sencillo que le preguntará generalmente qué
hacer y luego lo hará [2]. Después
de mostrar un resumen sobre qué va a ocurrir, APT imprimirá en pantalla unos
cuantos mensajes de estado informativos, de forma que usted pueda estimar
cuanto se ha realizado ya y cuanto queda por hacer.
Antes de cualquier operación (excepto update) APT realiza una serie de acciones con el fin de preparar su estado interno. También realiza algunas comprobaciones del estado del sistema. Esas operaciones pueden hacerse en cualquier momento ejecutando apt-get check
# apt-get check Reading Package Lists... Done Building Dependancy Tree... Done
La primera acción que se realiza es la lectura en memoria de todos los ficheros
Package. APT usa un esquema de caché de forma que la segunda vez que se
ejecute esta operación será mucho más rápida. Si no se encuentra alguno de los
ficheros Package, será ignorado y se imprimirá un aviso en pantalla cuando
apt-get
termine.
La segunda y última acción realizada es un análisis detallado de las
dependencias del sistema. Comprueba cada dependencia de cada paquete instalado
o desempaquetado, y considera si está correctamente instalado o no. En los
casos en que apt-get
encuentre un problema, informará del mismo y
se negará a seguir ejecutándose.
# apt-get check Reading Package Lists... Done Building Dependancy Tree... Done You might want to run apt-get -f install' to correct these. Sorry, but the following packages have unmet dependencies: 9fonts: Depends: xlib6g but it is not installed uucp: Depends: mailx but it is not installed blast: Depends: xlib6g (>= 3.3-5) but it is not installed adduser: Depends: perl-base but it is not installed aumix: Depends: libgpmg1 but it is not installed debiandoc-sgml: Depends: sgml-base but it is not installed bash-builtins: Depends: bash (>= 2.01) but 2.0-3 is installed cthugha: Depends: svgalibg1 but it is not installed Depends: xlib6g (>= 3.3-5) but it is not installed libreadlineg2: Conflicts:libreadline2 (<< 2.1-2.1)
En este ejemplo el sistema tiene muchos problemas, incluido uno serio con libreadlineg2. Se imprimirá una línea en pantalla por cada uno de los paquetes con dependencias no resueltas, indicando el paquete con el problema y las dependencias que no se han encontrado. También se incluye una pequeña explicación de por qué el paquete tiene un problema de dependencias.
Hay dos vías por las cuales un sistema puede llegar a un estado inconsistente
(`roto') como éste. La primera está causada por la pérdida de algunas sutiles
relaciones entre paquetes por parte del dpkg
cuando se realizan
actualizaciones [3]. La segunda se
origina si la instalación de un paquete falla durante la operación. En esta
situación, un paquete puede haber sido desempaquetado sin que sus
correspondientes dependencias hayan sido instaladas.
La segunda situación es mucho menos seria que la primera porque APT da ciertas
garantías respecto al orden de instalación de los paquetes. En ambos casos
añadir la opción -f a apt-get
forzará a APT a deducir
una posible solución al problema y entonces continuar. El método APT de
dselect
siempre usa la opción -f para permitir a los
scripts de mantenimiento una sencilla recuperación contra fallos.
Sin embargo, si se usa la opción -f para arreglar un sistema
`roto' gravemente, causado por el primero de los casos anteriores, entonces es
posible que falle inmediatamente o que lo haga durante la instalación. En
ambos casos es necesario usar dpkg
a mano (posiblemente con
opciones de `forzar') para corregir lo suficiente la situación como para
permitir que APT continúe la instalación.
Antes de actuar, apt-get
presentará un informe sobre lo que va a
pasar. Generalmente el informe refleja el tipo de operación que se está
realizando, pero hay ciertos elementos comunes. En todos los casos, las listas
reflejan el estado final de las cosas, teniendo en cuenta la opción
-f, y cualquier otra actividad relevante al comando que se está
ejecutando.
The following extra packages will be installed: libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy squake pgp-i python-base debmake ldso perl libreadlineg2 ssh
La lista de paquetes extra muestra todos los paquetes que van a ser instalados o actualizados aparte de los mencionados en la línea de comandos. Sólo la genera un comando install. Con frecuencia los paquetes del listado son el resultado de un Auto Install.
The following packages will be REMOVED: xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid nas xpilot xfig
La lista de los paquetes a eliminar muestra todos los paquetes que serán eliminados del sistema. Puede aparecer por el uso de cualquiera de las operaciones y debería revisarse cuidadosamente para asegurarse que no se va a quitar nada importante. La opción -f es extremadamente propensa a eliminar paquetes, así que tenga un especial cuidado con esta lista en ese caso. La lista puede contener paquetes que van a eliminarse porque anteriormente sólo se eliminaron parcialmente, posiblemente debido a una instalación abortada.
The following NEW packages will installed: zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base
La lista de nuevos paquetes es un simple recordatorio de lo que va a pasar. Los paquetes del listado no están actualmente instalados en el sistemas, pero lo estarán cuando APT termine.
The following packages have been kept back compface man-db tetex-base msql libpaper svgalib1 gs snmp arena lynx xpat2 groff xscreensaver
En el momento en que vaya a ser actualizado el sistema completo, es posible que
algunas versiones de paquetes nuevas no puedan ser instaladas porque requieren
cosas nuevas o tienen conflictos con cosas ya instaladas. En este caso el
paquete aparecerá en la lista de paquetes retenidos. La mejor manera de
convencer a los paquetes del listado de que se instalen es resolviendo sus
problemas con apt-get install o mediante el uso de
dselect
.
The following held packages will be changed: cvs
A veces usted puede pedirle a APT que instale un paquete que está en estado `a mantener'. En tales casos, él muestra en pantalla una advertencia referente a que el paquete `a mantener' va a cambiarse. Solamente debería ocurrir durante un dist-upgrade o un install.
Finalmente, APT mostrará en pantalla un resumen de todos los cambios que van a ocurrir.
206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded. 12 packages not fully installed or removed. Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.
La primera línea del resumen simplemente es una versión reducida de todos los listado de paquetes anteriores e incluye el número de actualizaciones -esto es, de los paquetes ya instalados de los que hay disponibles nuevas versiones-. La segunda línea indica el número de paquetes parcialmente configurados, posiblemente el resultado de una instalación abortada. La línea final muestra los requerimientos de espacio que necesita la instalación. El primer par de números se refieren a tamaños de los archivos. El primer número indica el número de bytes que deben ser obtenidos de lugares remotos y el segundo el tamaño total de todos los ficheros que se necesitan. El siguiente número indica la diferencia en tamaño entre los paquetes instalados actualmente y los nuevos que se instalen. Esto equivale aproximadamente al espacio requerido en /usr despues de que se realice la instalación. Si lo que va a hacerse es eliminar un gran número de paquetes, entonces el valor puede indicar la cantidad de espacio que será liberada.
Se pueden generar algunos otros informes mediante el uso de la opción -u que muestra los paquetes a actualizar. Estos informes son similares a los de los ejemplos anteriores.
Durante la descarga de archivos y ficheros Package, APT muestra en pantalla una serie de mensajes de estado,
# apt-get update Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages Get:2 http://llug.sep.bnl.gov/debian/ frozen/contrib Packages Hit http://llug.sep.bnl.gov/debian/ frozen/main Packages Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages Get:5 http://llug.sep.bnl.gov/debian/ frozen/non-free Packages 11% [5 frozen/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s
Las líneas que comienzan con Get se muestran en pantalla cuando APT empieza a obtener un fichero, mientras que la última línea indica la progresión de la descarga. El primer valor de porcentaje en la línea de progreso indica el tanto por ciento total descargado de todos los ficheros. Desgraciadamente, puesto que el tamaño de los ficheros Package es desconocido, apt-get update estima el porcentaje descargado, lo cual causa algunas inexactitudes.
La siguiente sección de la línea de estado se repite una vez por cada tarea de descarga e indica la operación llevada a cabo y alguna otra información útil sobre lo que está pasando. Algunas veces, en esta sección se leerá simplemente Forking, lo que significa que el sistema operativo está arrancando el módulo de descarga. La primera palabra tras el `[' es el número de descarga, tal y como aparece en las líneas de historia. La siguiente palabra es el nombre en forma breve del objeto que se está descargando. En el caso de los archivos contiene el nombre del paquete que se está obteniendo.
Dentro del entrecomillado simple hay un mensaje informativo que indica el progreso de la fase de negociación de la descarga. Típicamente progresa desde Connecting a Waiting for file a Downloading o a Resuming. El valor final es el número de bytes descargados del sitio remoto. Una vez que se ha iniciado la descarga, ésta se representa como 102/10.2k, indicando que se han obtenido 102 bytes y se esperan 10.2 kilobytes. El tamaño total siempre se muestra en notación `4 caracteres' para ahorrar espacio. Después del tamaño se muestra un medidor porcentual del propio fichero. El penúltimo elemento es la velocidad promedio instantánea. Este valor se actualiza cada 5 segundos y refleja el ratio de datos transferidos durante ese periodo. Finalmente, se muestra el tiempo de transferencia estimado. Este se actualiza regularmente y refleja el tiempo estimado -a partir del ratio de transferencia mostrado- para completar todo el proceso.
El monitor de estado se actualiza cada medio segundo para informar constantemente del progreso de la descarga, mientras que las líneas Get crecen en pantalla cada vez que comienza la descarga de un nuevo fichero. Puesto que el monitor de estado se actualiza constantemente, es inadecuado para ser guardado de un fichero de log. Use la opción -q para eliminar el monitor de estado.
APT usa dpkg
para instalar los archivos y conmutará al interfaz de
dpkg
una vez se haya completado la descarga. dpkg
hará una serie de preguntas mientras procesa los paquetes y los propios
paquetes pueden también preguntar varias cuestiones. Antes de cada pregunta
normalmente habrá una descripción sobre lo que se está preguntando. Las
preguntas son demasiado variadas como para discutirlas aquí en su totalidad.
jgg@debian.org
jcantero@escomposlinux.org