Подтвердить что ты не робот

Как загрузить все зависимости и пакеты в каталог

Я пытаюсь установить пакет на компьютере без подключения к Интернету. То, что я хочу сделать, это загрузить все пакеты и зависимости на машине с подключением к Интернету, а затем скрыть все сетевые компьютеры.

Я играл с apt-get и apt-cache, но я не вычислил быстрый и простой способ загрузки пакета и зависимостей одним махом в каталог по своему выбору. Как мне это сделать? Правильно ли я делаю эту проблему? Как установить автономные пакеты с большим количеством зависимостей?

4b9b3361

Ответ 1

# aptitude clean
# aptitude --download-only install <your_package_here>
# cp /var/cache/apt/archives/*.deb <your_directory_here>

Ответ 2

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

Чтобы избежать этого и получить все зависимости, используйте следующее:

apt-get download $(apt-rdepends <package>|grep -v "^ ")

Некоторые пакеты, возвращенные из apt-rdepends, не существуют с точным именем для apt-get download для загрузки (например, libc-dev). В этих случаях отфильтруйте эти точные имена (обязательно используйте ^<NAME>$, чтобы другие связанные имена, например libc-dev-bin, которые существуют, не пропускались).

apt-get download $(apt-rdepends <package>|grep -v "^ " |grep -v "^libc-dev$")

После загрузки вы можете переместить файлы .deb на компьютер без Интернета и установить их:

sudo dpkg -i *.deb

Ответ 4

Подход aptitude --download-only ... работает, только если у вас есть дистрибутив Debian с подключением к Интернету.

Если вы этого не сделаете, я думаю, что лучше запустить следующий скрипт на отключенном компьютере с Debian:

apt-get --print-uris --yes install <my_package_name> | grep ^\' | cut -d\' -f2 >downloads.list

переместите файл downloads.list на подключенный компьютер linux (или не linux) и запустите:

wget --input-file myurilist

при этом все ваши файлы загружаются в текущий каталог. После этого вы можете скопировать их на USB-ключ и установить на отключенный компьютер Debian.

кредиты: http://www.tuxradar.com/answers/517

PS Я в основном скопировал сообщение в блоге, потому что оно было не очень читабельным, и в случае, если сообщение исчезнет.

Ответ 5

Несколько упрощен (и то, что сработало для меня), который работал у меня (на основе всего вышеизложенного)
Обратите внимание, что иерархия зависимостей может идти глубже, чем один уровень

Получить зависимости вашего пакета

$ apt-cache depends mongodb | grep Depends:
  Depends: mongodb-dev
  Depends: mongodb-server

Получить URL-адреса:

sudo apt-get --print-uris --yes -d --reinstall install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-tools | grep "http://" |  awk '{print$1}' | xargs -I'{}' echo {} | tee files.list
wget --input-file files.list

Ответ 6

Это загрузит все Debs в текущий каталог и не сработает, если не сможет найти кандидата.

Также НЕ требуется sudo для запуска sript!

nano getdebs.sh && chmod +x getdebs.sh && ./getdebs.sh

#!/bin/bash

package=ssmtp

apt-cache depends "$package" | grep Depends: >> deb.list

sed -i -e 's/[<>|:]//g' deb.list

sed -i -e 's/Depends//g' deb.list

sed -i -e 's/ //g' deb.list

filename="deb.list"

while read -r line
do
    name="$line"
    apt-get download "$name"
done < "$filename"

apt-get download "$package"

Примечание. Я использовал это в качестве своего примера, потому что на самом деле я пытался DL Deps для SSMTP, и он не работал на debconf-2.0, но этот script получил мне то, что мне нужно! Надеюсь, что это поможет.

Ответ 7

Я использовал apt-cache depends package , чтобы получить все необходимые пакеты в любом случае, если уже установлены в системе или нет. Так что это будет работать всегда правильно.
Поскольку команда apt-cache работает по-разному, в зависимости от языка, вы должны попробовать эту команду в своей системе и адаптировать команду. apt-cache зависит от вашего пакета В системе englisch вы получаете:

$ apt-cache depends yourpackage
node
  Depends: libax25
  Depends: libc6


По немецкой системе вы получаете: node

  Hängt ab von: libax25
  Hängt ab von: libc6


Версия Englisch со словом:
"Depends:"
Вы должны изменить термин "yourpackage" на свое желание дважды в этой команде, позаботьтесь об этом!

$ sudo apt-get --print-uris --yes -d --reinstall install yourpackage $(apt-cache depends yourpackage | grep "  Depends:" |  sed 's/  Depends://' | sed ':a;N;$!ba;s/\n//g') | grep ^\' | cut -d\' -f2 >downloads.list


И немецкая версия с термином:
"Hängt ab von:"
Вы должны изменить термин "yourpackage" на свое желание дважды в этой команде, позаботьтесь об этом!
Этот текст используется дважды в этой команде, если вы хотите адаптировать его к своему языку, позаботьтесь об этом!

$ sudo apt-get --print-uris --yes -d --reinstall install yourpackage $(apt-cache depends yourpackage | grep "Hängt ab von:" |  sed 's/  Hängt ab von://' | sed ':a;N;$!ba;s/\n//g') | grep ^\' | cut -d\' -f2 >downloads.list


Вы получаете список ссылок в файлах downloads.list
Проверьте список, перейдите в свою папку и запустите список:

$ cd yourpathToYourFolder

$ wget --input-file downloads.list


Все необходимые пакеты находятся в:

$ ls yourpathToYourFolder

Ответ 8

Я предполагаю, что у вас хороший жирный USB HD и хорошее соединение с сетью. Вы можете использовать apt-mirror, чтобы создать собственное зеркальное отражение.

http://apt-mirror.sourceforge.net/

Ответ 9

Это загрузит все пакеты и зависимости (еще не установлены) в каталог по вашему выбору:

sudo apt-get install -d -o Dir::Cache=/path-to/directory/apt/cache -o Dir::State::Lists=/path-to/directory/apt/lists packages

Убедитесь, что /path-to/directory/apt/cache и /path-to/directory/apt/lists существуют. Если вы не установите -o Dir::Cache, он указывает на /var/cache/apt, Dir::State::Lists указывает на /var/lib/apt/lists (который хранит индексные файлы доступных пакетов)

Обе опции -o можно использовать с обновлением и обновлением вместо установки.

На другом компьютере выполните одну и ту же команду без '-d'