Некоторое время назад мы обсуждали, как устанавливать программное обеспечение в автономном режиме в Ubuntu.
В том руководстве мы объяснили, как можно загружать пакеты в системе с подключением к Интернету и устанавливать их в автономном режиме в другой системе с медленным или отсутствующим подключением к Интернету.
В этом руководстве мы увидим, как загружать пакеты с зависимостями локально в Ubuntu и его производных.
Используя этот метод, мы можем загрузить пакет .DEB вместе со всеми необходимыми зависимостями, фактически не устанавливая его.
Таким образом, мы можем загрузить пакеты из одной системы и установить их позже в той же самой системе или любой другой системе, которая не имеет подключения к Интернету.
Мы также можем скачать пакеты для разных архитектур.
Например, можно загрузить 32-битные пакеты из 64-битной системы и наоборот.
Хорошо, давайте начнем, не так ли?
Скачиваем пакеты с зависимостями локально в Ubuntu
Мы можем сделать это двумя способами.
Я проверил это руководство на настольных версиях Ubuntu 16.04 и 18.04 LTS.
Все работало просто отлично.
Способ 1:
Это самый простой метод.
Чтобы скачать пакет со всеми зависимостями, не устанавливая их, просто запустите:
$ sudo apt-get install --download-only <package_name>
$ 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 со всеми зависимостями, но фактически не установили его.
Все загруженные файлы будут сохранены в каталоге /var/cache/apt/archives.
$ sudo dpkg -i *
Видите?
Это проще, чем вы думали, не так ли?
Однако этот метод работает только в том случае, если в системе, используемой для загрузки пакетов, не установлен основной пакет или его зависимости, установленные локально.
В таких случаях используйте «apt-rdepends» для получения всех пакетов.
Если apt-rdepends еще не установлен, установите его с помощью команды:
$ sudo apt install apt-rdepends
$ 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 *
Способ 2:
Сначала загрузите зависимости пакета, который вы хотите загрузить.
Чтобы отобразить список всех зависимостей пакета, например, 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 в любой автономной системе, как показано ниже.
$ sudo dpkg -i *