Поиск по сайту:

Загрузите пакеты с зависимостями локально в Ubuntu

Некоторое время назад мы обсуждали, как устанавливать программное обеспечение в Ubuntu в автономном режиме. В этом руководстве мы объяснили, как загрузить пакеты в систему с доступом к Интернету и установить их в другой системе с медленным подключением к Интернету или без него. В этом руководстве мы увидим, как загружать пакеты с зависимостями локально в Ubuntu, Debian, Pop OS и других системах на базе DEB.

Используя этот метод, мы можем загрузить пакет .deb вместе со всеми необходимыми зависимостями, не устанавливая его фактически. Таким образом, мы можем загружать пакеты из одной системы и позже устанавливать их в той же системе или в любой другой системе, не имеющей подключения к Интернету. Мы также можем скачать пакеты для систем с разной архитектурой. Например, можно загрузить 32-битные пакеты из 64-битной системы и наоборот.

Загрузите пакеты с зависимостями локально в Ubuntu

Мы можем сделать это двумя способами. Я тестировал это руководство на настольных версиях Ubuntu 16.04 и 18.04 LTS. Все работало отлично, как описано ниже.

Способ 1: загрузка пакетов, включая зависимости

Это самый простой и понятный метод, чем другие методы, представленные ниже.

Чтобы скачать пакет со всеми зависимостями, не устанавливая их, просто запустите:

sudo apt-get install --download-only <package_name>

Например, загрузим пакет Vim со всеми необходимыми зависимостями, не устанавливая их, с помощью команды:

sudo apt-get install --download-only vim

Пример вывода:

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

Как вы видите в приведенном выше выводе, мы загрузили пакет Vim со всеми зависимостями, но фактически не установили его.

Загрузите пакеты с зависимостями локально в Ubuntu

Все загруженные файлы будут сохранены в каталоге /var/cache/apt/archives.

Просто скопируйте всю папку кэша на любой USB или перенесите их по сети в систему, в которую вы хотели установить пакеты.

Чтобы установить загруженные пакеты, перейдите в папку кэша и установите их, как показано ниже.

sudo dpkg -i *

Видеть? Это так просто!

Однако этот метод работает только в том случае, если в системе, которую вы используете для загрузки пакетов, локально не установлен основной пакет или его зависимости.

Если вы попытаетесь загрузить пакет, который уже установлен в той же системе, вы увидите результат, подобный приведенному ниже.

$ 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.

В таких случаях используйте "apt-rdependents" для загрузки всех пакетов, как описано в следующем разделе.

Способ 2: рекурсивная загрузка пакетов с зависимостями

Предыдущее решение извлекает зависимости только на один уровень. Для рекурсивного решения загрузки пакетов и всех их зависимостей на всех уровнях вы можете использовать инструмент apt-rdependents.

Если apt-rdependents еще не установлен, установите его с помощью команды:

sudo apt install apt-rdepends

А затем загрузите основной пакет (т. е. Vim в нашем случае) вместе со всеми зависимостями, используя команду:

apt download $(apt-rdepends vim | grep -v "^ ")

Эта команда рекурсивно загрузит все необходимые пакеты.

На всякий случай, если вы столкнулись с ошибкой, как показано ниже:

E: Can't select candidate version from package debconf-2.0 as it has no candidate

Вместо этого попробуйте эту команду:

apt-get download $(apt-rdepends vim | grep -v "^ " | sed 's/debconf-2.0/debconf/g')

Эта команда загрузит Vim со всеми необходимыми пакетами и сохранит их в текущем рабочем каталоге.

Чтобы установить все загруженные пакеты, запустите:

sudo dpkg -i *

Способ 3. Загрузите пакеты вместе с их зависимостями.

Сначала загрузите зависимости пакета, который вы хотели загрузить.

Чтобы отобразить список всех зависимостей пакета, например Python, выполните:

sudo apt-cache depends python

Пример вывода:

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

Давайте загрузим пакет Python с его зависимостями на наш локальный диск.

Для этого сначала создайте каталог для сохранения пакетов.

mkdir python

Перейдите в каталог:

cd python

И затем запустите:

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

Приведенная выше команда загрузит пакет Python вместе со всеми необходимыми зависимостями и сохранит их в текущем рабочем каталоге. Эта команда также сохранит все ошибки в файле errors.txt.

Давайте просмотрим загруженные файлы с помощью команды «ls»:

ls

Пример вывода:

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

Список загруженных пакетов

Как вы видите в приведенном выше выводе, пакет Python со всеми его зависимостями был загружен.

Просто скопируйте их на USB-накопитель и установите пакеты Python в любую автономную систему, как показано ниже.

Подключите USB-накопитель, перейдите в место, где вы смонтировали диск, и выполните следующую команду, чтобы установить Python.

sudo dpkg -i *

Рекомендуется прочитать:

  • Как загрузить пакет RPM со всеми зависимостями в CentOS

Загрузка пакетов с зависимостями локально для конкретной архитектуры

Вы можете заметить, что приведенная выше команда загрузила 64-битные пакеты. Это потому, что я загружаю их из 64-битной системы Ubuntu. Что делать, если вы хотите скачать пакеты для 32-битных систем Arch? Это также возможно!

Сначала включите нужную архитектуру в вашей системе Ubuntu с помощью команды:

sudo dpkg --add-architecture i386

Если вы не добавите архитектуру, при попытке загрузки пакетов вы получите следующее сообщение об ошибке.

E: No packages found

После включения выбранной вами архитектуры выполните следующую команду, чтобы загрузить пакеты, связанные с конкретной архитектурой.

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

Как вы видите в приведенном выше выводе, я добавил архитектуру 'i386' с 'apt-cache'. команда.

Пример вывода:

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)

Загрузите пакеты с зависимостями локально для конкретной архитектуры.

Давайте проверим загруженные пакеты.

ls

Пример вывода:

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

Видеть? Приведенная выше команда загружала только 32-битные пакеты.

Теперь вы знаете, как загружать пакеты с зависимостями в системах Ubuntu. Эти методы одинаковы для всех систем на базе DEB.

Связанное чтение:

  • Как загрузить рекурсивные зависимости пакета в Ubuntu
  • Как имитировать команды Linux, ничего не меняя в системе

Статьи по данной тематике