nodejs logo

Dependencias incumplidas en Ubuntu 18 («usted ha retenido paquetes rotos»)

Download PDF

En alguna oportunidad vamos a instalar alguna aplicación en Debian y derivados (acá Ubuntu 18) y recibimos el siguiente mensaje:

E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.

Hoy tocaremos este tema.

Tabla de contenido:

apt-get

El programa apt-get es el indicado, clásico y de facto el encargado de mantener el paquete de programas. Si hacemos una consulta al respecto en el buscador DuckDuckGo devuelve muchas respuestas cuyo esquema es muy parecido, así que elegimos los comandos más generalmente aceptados:

sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get update
sudo apt-get -f install aplicación

npm (Node Package Manager)

Sí, la aplicación que queremos instalar o en realidad actualizar es el programa encargado de manejar los paquetes de Node, un intérprete muy popular para JavaScript. Es necesario tenerlo porque existen muchísimos entornos de programación o «frameworks» que llaman nuestra atención hacia cómo resuelven los mismos problemas típicos de interacciones con nosotros los usuarios. Por como van las cosas muy probablemente terminemos desarrollando uno nosotros mismos, pero justo ahora le estamos echando un vistazo a Reakit, desarrollado por el brasileño Diego Haz. Los resaltados en colores son nuestros para denotar claramente nuestros escollos:

jimmy@KEVIN:~$ sudo apt-get -f install npm
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
No se pudieron instalar algunos paquetes. Esto puede significar que
usted pidió una situación imposible o, si está usando la distribución
inestable, que algunos paquetes necesarios aún no se han creado o se
han sacado de «Incoming».
La siguiente información puede ayudar a resolver la situación:

Los siguientes paquetes tienen dependencias incumplidas:
npm : Depende: node-gyp (>= 0.10.9) pero no va a instalarse
E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.

Como vemos, sigue apareciendo el dichoso mensaje «usted ha retenido paquetes rotos»… Pero notamos que, al parecer, la librería que nos hace falta es node-gyp así que vamos por ella:

jimmy@KEVIN:~$ sudo apt-get -f install node-gyp
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
No se pudieron instalar algunos paquetes. Esto puede significar que
usted pidió una situación imposible o, si está usando la distribución
inestable, que algunos paquetes necesarios aún no se han creado o se
han sacado de «Incoming».
La siguiente información puede ayudar a resolver la situación:

Los siguientes paquetes tienen dependencias incumplidas:
node-gyp : Depende: nodejs-dev pero no va a instalarse
E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.

¡Y vaya, de nuevo lo mismo! Vamos entonces con nodejs-dev:

jimmy@KEVIN:~$ sudo apt-get -f install nodejs-dev
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
No se pudieron instalar algunos paquetes. Esto puede significar que
usted pidió una situación imposible o, si está usando la distribución
inestable, que algunos paquetes necesarios aún no se han creado o se
han sacado de «Incoming».
La siguiente información puede ayudar a resolver la situación:

Los siguientes paquetes tienen dependencias incumplidas:
nodejs-dev : Depende: libssl1.0-dev (>= 1.0.2) pero no va a instalarse
E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.

¿En serio o es una «mamadera de gallo» (broma pesada)?🤔🤔🤔

Vayamos entonces a por libssl1.0-dev cuya versión debe ser posterior a 1.02:

jimmy@KEVIN:~$ sudo apt-get -f install libssl1.0-dev
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
gir1.2-spiceclientglib-2.0 gir1.2-spiceclientgtk-3.0 libspice-protocol-dev libssl-doc
Utilice «sudo apt autoremove» para eliminarlos.
Los siguientes paquetes se ELIMINARÁN:
libspice-client-glib-2.0-dev libspice-client-gtk-3.0-dev libssl-dev
Se instalarán los siguientes paquetes NUEVOS:
libssl1.0-dev
0 actualizados, 1 nuevos se instalarán, 3 para eliminar y 0 no actualizados.
Se necesita descargar 1.365 kB de archivos.
Se liberarán 1.299 kB después de esta operación.
¿Desea continuar? [S/n] S

¡Por fin nos estamos entendiendo!

Ahora retrocedemos sobre nuestros pasos e ignoramos la sugerencia de «autoremove» (la dejamos para el final):

jimmy@KEVIN:~$ sudo apt-get -f install nodejs-dev
[sudo] contraseña para jimmy:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
gir1.2-spiceclientglib-2.0 gir1.2-spiceclientgtk-3.0 libspice-protocol-dev libssl-doc
Utilice «sudo apt autoremove» para eliminarlos.
Se instalarán los siguientes paquetes adicionales:
libuv1-dev
Se instalarán los siguientes paquetes NUEVOS:
libuv1-dev nodejs-dev
0 actualizados, 2 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 433 kB de archivos.
Se utilizarán 1.812 kB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n] s

En este punto agradecemos de sobremanera que haya puesto en práctica el seguimiento de dependencias y que de manera automática instale libuv1-dev, ya estamos en la recta final, solo falta uno:

jimmy@KEVIN:~$ sudo apt-get -f install node-gyp
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
gir1.2-spiceclientglib-2.0 gir1.2-spiceclientgtk-3.0 libspice-protocol-dev libssl-doc
Utilice «sudo apt autoremove» para eliminarlos.
Se instalarán los siguientes paquetes adicionales:
gyp libjs-async libjs-inherits libjs-node-uuid node-abbrev node-ansi node-async node-balanced-match
node-block-stream node-brace-expansion node-combined-stream node-concat-map node-cookie-jar
node-delayed-stream node-forever-agent node-form-data node-fs.realpath node-fstream node-glob
node-graceful-fs node-inflight node-inherits node-isexe node-json-stringify-safe node-mime node-minimatch
node-mkdirp node-node-uuid node-nopt node-npmlog node-once node-osenv node-path-is-absolute node-qs
node-request node-rimraf node-semver node-tar node-tunnel-agent node-which node-wrappy
Paquetes sugeridos:
node-hawk node-aws-sign node-oauth-sign node-http-signature
Se instalarán los siguientes paquetes NUEVOS:
gyp libjs-async libjs-inherits libjs-node-uuid node-abbrev node-ansi node-async node-balanced-match
node-block-stream node-brace-expansion node-combined-stream node-concat-map node-cookie-jar
node-delayed-stream node-forever-agent node-form-data node-fs.realpath node-fstream node-glob
node-graceful-fs node-gyp node-inflight node-inherits node-isexe node-json-stringify-safe node-mime
node-minimatch node-mkdirp node-node-uuid node-nopt node-npmlog node-once node-osenv node-path-is-absolute
node-qs node-request node-rimraf node-semver node-tar node-tunnel-agent node-which node-wrappy
0 actualizados, 42 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 599 kB de archivos.
Se utilizarán 2.790 kB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n]

¡Casi nada, pedimos instalar uno e instal 41 paquetes adicionales! ¡Ea, venga ya!

Por favor, lea también   Midiendo la velocidad de conexión con iperf

¡Al grano!

Sí, ya tenemos las librearías instaladas, ahora vamos por el premio mayor:

jimmy@KEVIN:~$ sudo apt-get -f install npm
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
gir1.2-spiceclientglib-2.0 gir1.2-spiceclientgtk-3.0 libspice-protocol-dev libssl-doc
Utilice «sudo apt autoremove» para eliminarlos.
Se instalarán los siguientes paquetes adicionales:
node-ansi-color-table node-archy node-builtin-modules node-fstream-ignore node-github-url-from-git
node-hosted-git-info node-ini node-is-builtin-module node-lockfile node-lru-cache node-mute-stream
node-normalize-package-data node-pseudomap node-read node-read-package-json node-retry node-sha node-slide
node-spdx-correct node-spdx-expression-parse node-spdx-license-ids node-underscore
node-validate-npm-package-license node-yallist
Se instalarán los siguientes paquetes NUEVOS:
node-ansi-color-table node-archy node-builtin-modules node-fstream-ignore node-github-url-from-git
node-hosted-git-info node-ini node-is-builtin-module node-lockfile node-lru-cache node-mute-stream
node-normalize-package-data node-pseudomap node-read node-read-package-json node-retry node-sha node-slide
node-spdx-correct node-spdx-expression-parse node-spdx-license-ids node-underscore
node-validate-npm-package-license node-yallist npm
0 actualizados, 25 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 1.719 kB de archivos.
Se utilizarán 11,5 MB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n]

Va bajando la marcha, pedimos instalar 1 e instala 24 adicionales, bien. Hagamos una limpieza:

jimmy@KEVIN:~$ sudo apt autoremove
[sudo] contraseña para jimmy:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Los siguientes paquetes se ELIMINARÁN:
gir1.2-spiceclientglib-2.0 gir1.2-spiceclientgtk-3.0 libspice-protocol-dev libssl-doc
0 actualizados, 0 nuevos se instalarán, 4 para eliminar y 0 no actualizados.
Se liberarán 4.848 kB después de esta operación.
¿Desea continuar? [S/n] s

Victoria

jimmy@KEVIN:~$ npm version
{ npm: '3.5.2',
ares: '1.14.0',
cldr: '32.0.1',
http_parser: '2.7.1',
icu: '60.2',
modules: '57',
nghttp2: '1.30.0',
node: '8.10.0',
openssl: '1.0.2n',
tz: '2017c',
unicode: '10.0',
uv: '1.18.0',
v8: '6.2.414.50',
zlib: '1.2.11' }
jimmy@KEVIN:~$

Instalando react

sudo npm install react

Increíble, parece que hoy no vamos a terminar nunca… Ojalá esto sirva, a futuro, a cualquier otro usuario que se decante por JavaScript… Seguimos luchando entonces:

sudo npm cache clean
sudo npm install -g npm
sudo npm install

La segunda línea es graciosa, algo así como «instalate a ti mismo», como vemos que descarga e instala, continuamos:

npm install react react-dom
npm install reakit

¡Ahora así podemos utilizar el nuevo entorno de progamación!

Nota: otra manera de instalar node está descrita en:

https://github.com/nodesource/distributions/blob/master/README.md

Fuentes consultadas

En idioma castellano

En idioma inglés

Download PDF