Hace un tiempo, discutimos cómo instalar software sin conexión en Ubuntu . En esa guía, explicamos cómo puede descargar paquetes en un sistema habilitado para Internet e instalarlos en otro sistema que tenga una conexión a Internet lenta o nula. En este tutorial, veremos cómo descargar paquetes con dependencias localmente en Ubuntu, Debian, Pop OS y otros sistemas basados en DEB.
Usando este método, podemos descargar un .deb
paquete junto con todas las dependencias requeridas sin instalarlo realmente. De esta forma podemos descargar paquetes de un sistema e instalarlos posteriormente en el mismo sistema o en cualquier otro sistema que no tenga conexión a Internet. También podemos descargar paquetes para diferentes sistemas de arquitectura. Por ejemplo, es posible descargar los paquetes de 32 bits desde un sistema de 64 bits y viceversa.
Descargar paquetes con dependencias localmente en Ubuntu
Podemos hacer esto en dos métodos. Probé esta guía en las ediciones de escritorio Ubuntu 16.04 y 18.04 LTS. Funcionó bien como se describe a continuación.
Método 1:
Este es el método más simple y directo que otros métodos que se detallan a continuación.
Para descargar un paquete con todas las dependencias, sin instalarlas, simplemente ejecute:
$ sudo apt-get install --download-only <package_name>
Por ejemplo, descarguemos el Vim paquete con todas las dependencias requeridas, sin instalarlas, usando el comando:
$ sudo apt-get install --download-only vim
Salida de muestra:
Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: ctags vim-doc vim-scripts The following NEW packages will be installed: vim 0 upgraded, 1 newly installed, 0 to remove and 82 not upgraded. Need to get 1,152 kB of archives. After this operation, 2,852 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 vim amd64 2:8.0.1453-1ubuntu1.1 [1,152 kB] Fetched 1,152 kB in 3s (372 kB/s) Download complete and in download only mode
Como puede ver en el resultado anterior, hemos descargado el paquete Vim con todas las dependencias, pero en realidad no lo instalamos.
Todos los archivos descargados se guardarán en /var/cache/apt/archives
directorio.
Simplemente copie toda la carpeta de caché en cualquier USB o transfiéralos a través de la red a un sistema en el que desee instalar los paquetes.
Para instalar los paquetes descargados, vaya a la carpeta de caché e instálelos como se muestra a continuación.
$ sudo dpkg -i *
¿Ver? ¡Es así de simple!
Sin embargo, este método solo funciona si el sistema que usa para descargar los paquetes no tiene el paquete principal o sus dependencias instalados localmente.
Si intenta descargar un paquete que ya está instalado en el mismo sistema, verá un resultado como el siguiente.
$ sudo apt-get install --download-only vim Reading package lists... Done Building dependency tree Reading state information... Done vim is already the newest version (2:8.0.1453-1ubuntu1.3). 0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
En tales casos, use "apt-rdepends
" para descargar todos los paquetes. Si apt-rdepends
aún no está instalado, instálelo usando el comando:
$ sudo apt install apt-rdepends
Y luego descargue el paquete principal (es decir, Vim en nuestro caso) junto con todas las dependencias usando el comando:
$ apt download $(apt-rdepends vim | grep -v "^ ")
Este comando descargará recursivamente todos los paquetes requeridos.
Por si acaso, si te encuentras con un error como el siguiente:
E: Can't select candidate version from package debconf-2.0 as it has no candidate
Pruebe este comando en su lugar:
$ apt-get download $(apt-rdepends vim | grep -v "^ " | sed 's/debconf-2.0/debconf/g')
Este comando descargará Vim con todos los paquetes necesarios y los guardará en el directorio de trabajo actual.
Para instalar todos los paquetes descargados, ejecute:
$ sudo dpkg -i *
Método 2:
Primero, descarga las dependencias del paquete que deseas descargar.
Para mostrar una lista de todas las dependencias de un paquete, por ejemplo Python , ejecuta:
$ sudo apt-cache depends python
Salida de muestra:
python PreDepends: python-minimal Depends: python2.7 Depends: libpython-stdlib Conflicts: <python-central> Breaks: update-manager-core Suggests: python-doc Suggests: python-tk Replaces: python-dev
Descarguemos el paquete python con sus dependencias a nuestro disco local.
Para hacerlo, primero cree un directorio para guardar los paquetes.
$ mkdir python
Ir al directorio:
$ cd python
Y luego ejecuta:
$ for i in $(apt-cache depends python | grep -E 'Depends|Recommends|Suggests' | cut -d ':' -f 2,3 | sed -e s/'<'/''/ -e s/'>'/''/); do sudo apt-get download $i 2>>errors.txt; done
El comando anterior descargará el paquete Python junto con todas las dependencias requeridas y las guardará en el directorio de trabajo actual. Este comando también guardará cualquier error en el errors.txt
archivo.
Veamos los archivos descargados usando 'ls
' comando:
$ ls
Salida de muestra:
errors.txt libpython-stdlib_2.7.11-1_amd64.deb python2.7_2.7.11-7ubuntu1_amd64.deb python-doc_2.7.11-1_all.deb python-minimal_2.7.11-1_amd64.deb python-tk_2.7.11-2_amd64.deb
Como puede ver en el resultado anterior, se ha descargado el paquete de Python con todas sus dependencias.
Simplemente cópielos en su unidad USB e instale los paquetes de python en cualquier sistema fuera de línea como se muestra a continuación.
Monte la unidad USB, vaya a la ubicación donde montó la unidad y ejecute el siguiente comando para instalar Python.
$ sudo dpkg -i *
Lectura sugerida:
- Cómo descargar un paquete RPM con todas las dependencias en CentOS
Descargar paquetes con dependencias localmente para una arquitectura específica
Puede notar que el comando anterior ha descargado los paquetes de 64 bits. Es porque los estoy descargando desde el sistema Ubuntu de 64 bits. ¿Qué sucede si desea descargar paquetes para sistemas arch de 32 bits? ¡También es posible!
Primero, habilite la arquitectura que desea en su sistema Ubuntu usando el comando:
$ sudo dpkg --add-architecture i386
Si no agrega la arquitectura, recibirá el siguiente mensaje de error cuando intente descargar los paquetes.
E: No packages found
Después de habilitar la Arquitectura de su elección, ejecute el siguiente comando para descargar paquetes específicos relacionados con la arquitectura.
$ for i in $(apt-cache depends python:i386 | grep -E 'Depends|Recommends|Suggests' | cut -d ':' -f 2,3 | sed -e s/'<'/''/ -e s/'>'/''/); do sudo apt-get download $i 2>>errors.txt; done
Como puede ver en el resultado anterior, agregué la arquitectura 'i386
' con 'apt-cache
' comando.
Salida de muestra:
Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main i386 python-minimal i386 2.7.11-1 [28.2 kB] Fetched 28.2 kB in 1s (25.8 kB/s) Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main i386 python2.7 i386 2.7.11-7ubuntu1 [220 kB] Fetched 220 kB in 1s (116 kB/s) Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main i386 libpython-stdlib i386 2.7.11-1 [7,664 B] Fetched 7,664 B in 0s (13.3 kB/s) Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main i386 python-tk i386 2.7.11-2 [28.0 kB] Fetched 28.0 kB in 1s (24.8 kB/s)
Revisemos los paquetes descargados.
$ ls
Salida de muestra:
errors.txt libpython-stdlib_2.7.11-1_i386.deb python2.7_2.7.11-7ubuntu1_i386.deb python-minimal_2.7.11-1_i386.deb python-tk_2.7.11-2_i386.deb
¿Ver? El comando anterior descargó solo los paquetes de 32 bits.
Ya sabes cómo descargar paquetes con dependencias en sistemas Ubuntu. Estos métodos son los mismos para todos los sistemas basados en DEB.
Lectura relacionada:
- Cómo descargar dependencias recursivas de un paquete en Ubuntu
- Cómo simular comandos de Linux sin cambiar nada en el sistema