martes, 11 de noviembre de 2014

Instalación de paquetes con dpkg. Forzar dependencias.

Algunas veces nos hemos descargado un paquete que no se encuentra en los repositorios desde la web del desarrollado.
En algunas ocasiones no nos deja instalarlo debido a que no se cumplen las dependencias.
En mi caso quise instalar la última versión de google-chrome.

root@servidorweb:/tmp# dpkg -i google-chrome-stable_current_i386.deb
Seleccionando el paquete google-chrome-stable previamente no seleccionado.
(Leyendo la base de datos ... 431340 ficheros o directorios instalados actualmente.)
Desempaquetando google-chrome-stable (de google-chrome-stable_current_i386.deb) ...
dpkg: problemas de dependencias impiden la configuración de google-chrome-stable:
 google-chrome-stable depende de libnss3 (>= 3.14.3).
 google-chrome-stable depende de xdg-utils (>= 1.0.2).

dpkg: error al procesar google-chrome-stable (--install):
 problemas de dependencias - se deja sin configurar
Procesando disparadores para desktop-file-utils ...
Procesando disparadores para gnome-menus ...
Procesando disparadores para man-db ...
Procesando disparadores para menu ...
Se encontraron errores al procesar:
 google-chrome-stable



 SSin embargo si vemos las versiones de los paquetes que dan dependencias incumplidas:

  dpkg -l libnss3
Deseado=Desconocido/Instalar/Eliminar/Purgar/Retener
| Estado=No/Instalado/Config-files/Desempaquetado/Medio-conf/Medio-inst/espera-disparo/pendiente-disparo
|/ Err?=(ninguno)/Requiere-reinst (Estado,Err: mayúsc.=malo)
||/ Nombre         Versión     Arquitectura Descripción
+++-==============-============-============-=================================
ii  libnss3:amd64  2:3.15.1-1~b amd64        Network Security Service librarie
root@servidorweb:/tmp# dpkg -l xdg-utils
Deseado=Desconocido/Instalar/Eliminar/Purgar/Retener
| Estado=No/Instalado/Config-files/Desempaquetado/Medio-conf/Medio-inst/espera-disparo/pendiente-disparo
|/ Err?=(ninguno)/Requiere-reinst (Estado,Err: mayúsc.=malo)
||/ Nombre         Versión     Arquitectura Descripción
+++-==============-============-============-=================================
ii  xdg-utils      1.1.0~rc1+gi all          desktop integration utilities fro







Por lo tanto puedo probar a forzar la instalación del paquete google-chrome con --force-depends o --force all para ver si funciona.

 root@servidorweb:/tmp# dpkg -i --force depends google-chrome-stable_current_i386.deb
(Leyendo la base de datos ... 431443 ficheros o directorios instalados actualmente.)
Preparando para reemplazar google-chrome-stable 38.0.2125.111-1 (usando google-chrome-stable_current_i386.deb) ...
Desempaquetando el reemplazo de google-chrome-stable ...
dpkg: google-chrome-stable: problemas de dependencias, pero se configurará de todas formas
 tal y como se solicitó:
 google-chrome-stable depende de libnss3 (>= 3.14.3).
 google-chrome-stable depende de xdg-utils (>= 1.0.2).

Configurando google-chrome-stable (38.0.2125.111-1) ...
Procesando disparadores para desktop-file-utils ...
Procesando disparadores para gnome-menus ...
Procesando disparadores para man-db ...
Procesando disparadores para menu ...
root@servidorweb:/tmp#



Si no vemos que una vez instalado no funciona correctamente puedo volver atrás a instalar la versión de los repositorios.

Aquí podemos ver las opciones de dpkg --force:

 dpkg --force-help
opciones de forzado de dpkg - controlan el comportamiento cuando hay problemas:

 avisa pero continúa:      --force-<cosa>,<cosa>,...
 se detiene si hay error:  --refuse-<cosa>,<cosa>,... | --no-force-<cosa>,...
 Cosas que se pueden forzar:
  [!] all                Activa todas las opciones de forzado.
  [*] downgrade          Reemplaza el paquete con una versión menor.
      configure-any      Configura cualquier paquete que pudiera ayudar a éste.
      hold               Procesa paquetes accesorios aunque estén bloqueados
      not-root           Intenta (des)instalar cosas incluso sin ser root.
      bad-path           No se pueden encontrar programas importante en PATH, seguramente cause problemas
      bad-verify         Instala un paquete aunque falle la comprobación de autenticidad
      bad-version        Procesa incluiso paquetes con versiones incorrectas
      overwrite          Sobreescribe un fichero de un paquete con otro.
      overwrite-diverted Sobreescribe un fichero desviado con una versión no desviada.
  [!] overwrite-dir      Sobreescribir el directorio de un paquete con el fichero de otro
  [!] unsafe-io          No utiliza las operaciones seguras de E/S cuando se realiza desempaqueta.
  [!] confnew            Utiliza siempre los archivos de configuración nuevos, no pregunta.
  [!] confold            Utiliza siempre los archivos de configuración antiguos, no pregunta.
  [!] confdef            Utiliza la opción predeterminada para los ficheros de
                configuración nuevo si están disponibles,
                sin preguntar. Si no se encuentra ninguno
                predeterminado preguntará, a menos que se
                utilicen también alguna de las opciones confold
                o confnew.
  [!] confmiss           Instala siempre los ficheros de configuración que faltan.
  [!] confask            Ofrece el reemplazo de ficheros de configuración sin versiones nuevas.
  [!] architecture       Procesa incluso los paquetes con arquitectura errónea o sin arquitectura.
  [!] breaks             Instala aunque pudiera romper otro paquete.
  [!] conflicts          Permite la instalación de paquetes en conflicto.
  [!] depends            Convierte todos los problemas de dependencias en avisos.
  [!] depends-version    Convierte todos los problemas de versiones de dependencias en avisos.
  [!] remove-reinstreq   Elimina los paquetes que precisan instalación.
  [!] remove-essential   Elimina un paquete esencial.

ATENCIÓN - el uso de las opciones marcadas con [!] puede dañar seriamente
su instalación. Las opciones de forzado marcadas con [*] están activas
por omisión.

3 comentarios: