Загрузите и установите пакеты человечности и зависимости от сервера без интернет-соединения

Я пытаюсь загрузить все пакеты, и необходимые зависимости от сервера с рабочим интернет-соединением и передать их на сервере без интернет-соединения и затем установить их через Кв. - добираются.

У меня есть два решения загрузить пакеты:

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

Бесполезно, потому что это работает только на пакеты и зависимости, которые не загружены и уже установлены на сервере с рабочим интернет-соединением.

  1. aptitude download '?reverse-depends(package)'
    

Это загружает все пакеты и зависимости также, если Вам не нужны они.

Кто-либо знает лучшее решение загрузить пакет, и зависимости должны были быть установлены на новой установке сервера Ubuntu 16.04?

Я хочу создать сценарий, который идет канавка список пакетов и загружает все пакеты и зависимости автоматически.

Затем мне нужно решение использовать, это упаковывает на офлайновом компьютере с Кв. - добираются. Идея состоит в том, чтобы создать локальный способный репозиторий, который позволяет, Вы для использования локальных пакетов через Кв. - добираетесь.

Таким образом, я использую эту команду для создания Packages.gz, который содержит информацию обо всех пакетах, которые были загрузкой в первом шаге.

dpkg-scanpackages . /dev/null | gzip > Packages.gz

Затем я добавляю новый источник к/etc/apt/sources.list.d/и работаю склонный - получают обновление.

deb [trusted=yes] file:///tmp/dpkgs /

Теперь у меня есть проблема, что я могу, например, установить апача (все еще некоторые ошибки). Но если я хочу установить php, я получил следующую ошибку.

root@ubuntu:~# apt-get install php
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 php : Depends: php7.0 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

У кого-либо есть рабочее решение для этой проблемы?Спасибо.

4
задан 25 January 2019 в 06:18

3 ответа

Я никогда не пробовал это, таким образом, YMMV.

Выезд это и способно-в режиме офлайн .

Они утверждают, что сделали точно, что Вы хотите.

0
ответ дан 1 December 2019 в 10:36

Lan Morrison сделал isorespin.sh сценарий, который сделает изображение из команд, которые Вы даете и с добавленной командой, может иметь все обновления того времени на изображении и установить любую способную установку, которую Вы хотите на изображении установки, которое это делает. Я использовал его, и это работает очень хорошее.

Для получения дополнительной информации см.: Настройка Ubuntu ISOs: Документация и примеры того, как использовать isorespin.sh.

1
ответ дан 1 December 2019 в 10:36

Моя рекомендация состоит в том, чтобы сделать туннели ssh, я предполагаю, что Вы регистрируетесь к серверу с соединением SSH от машины, у кого есть интернет-соединение, следовательно можно попытаться использовать обратные туннели, чтобы иметь доступ, по крайней мере, к желаемому repos... Выполните эти шаги:

  1. Войдите в систему своего сервера со следующей командой:

    ssh -R 127.0.0.1:9800:yourrepo.address:80 youruser@ServerWithoutInternetConnectionAddress
    
  2. После того, как вошел в систему, Ваш сервер добавляет следующую строку к/etc/hosts:

    127.0.0.1 yourrepo.adress
    
  3. В Вашем конфигурационном файле репозитория в /etc/apt/sources.list или в /etc/apt/sources.list.d/repofile.list измените свой адрес репозитория путем добавления используемого порта (я использовал 9800, хотя это может быть любой порт выше, чем 1 023):

    deb [arch=amd64] http://yourrepo.address:9800/ubuntu-mirror/ xenial main
    deb [arch=amd64] http://yourrepo.address:9800/ubuntu-mirror/ xenial-updates main
    deb [arch=amd64] http://yourrepo.address:9800/ubuntu-java/ xenial main
    deb [arch=amd64] http://yourrepo.address:9800/ubuntu-production/ xenial multiverse
    

Теперь apt-get update и apt-get install должен работать. Полагайте, что у Вас может быть столько же туннелей сколько репозитории, только необходимо изменить исходный порт.

Например, полагайте, что у Вас есть официальный репозиторий человечности в /etc/apt/sources.list и другой в /etc/apt/sources.list.d/repofile.listЯ могу использовать порт для 9 801 для us.archive.ubuntu.com и порт 9800 для /etc/apt/sources.list.d/repofile.list как следующее:

/etc/apt/sources.list

deb http://us.archive.ubuntu.com:9801/ubuntu/ xenial main restricted universe multiverse
deb-src http://us.archive.ubuntu.com:9801/ubuntu/ xenial main restricted multiverse
deb http://us.archive.ubuntu.com:9801/ubuntu/ xenial-security main restricted universe multiverse
deb http://us.archive.ubuntu.com:9801/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://us.archive.ubuntu.com:9801/ubuntu/ xenial-security main restricted multiverse
deb-src http://us.archive.ubuntu.com:9801/ubuntu/ xenial-updates main restricted multiverse

/etc/apt/sources.list

deb [arch=amd64] http://yourrepo.address:9800/ubuntu-mirror/ xenial main
deb [arch=amd64] http://yourrepo.address:9800/ubuntu-mirror/ xenial-updates main
deb [arch=amd64] http://yourrepo.address:9800/ubuntu-java/ xenial main
deb [arch=amd64] http://yourrepo.address:9800/ubuntu-production/ xenial multiverse

Путем добавления этого к /etc/hosts

127.0.0.1     yourrepo.adress      us.archive.ubuntu.com

И войдите в систему от машины с интернет-соединением как следующее:

ssh -R 127.0.0.1:9800:yourrepo.address:80 -R 127.0.0.1:9801:us.archive.ubuntu.com:80 youruser@ServerWithoutInternetConnectionAddress

PS: Полагайте, что, если Вашему репозиторию нужен ключ, необходимо будет извлечь ключ (от машины, которая имеет ключ apt-key export KEY_ID >> key.asc) и добавьте его с помощью следующей команды:

apt-key add key.asc
0
ответ дан 1 December 2019 в 10:36

Другие вопросы по тегам:

Похожие вопросы: