Установка программного обеспечения с его зависимостями из локального репозитория по локальной сети [дубликат]

У меня есть пара Ubuntu 14.04 64-битные боксы. Один из них может разговаривать с Интернетом (скажем, Machine1), а другой не может из-за сетевых ограничений (скажем, Machine2).

На машине 2 необходимо установить определенное программное обеспечение, например, мне может потребоваться установить google-chrome (как пример) на этом компьютере.

Я попытался создать директорию / localrepo / amd64 на Машине 1. Загрузил стабильный пакет .deb и поместил его в этот каталог / localrepo / amd64 . Этот каталог имеет символьную ссылку на / var / www / html, поэтому машина, по крайней мере, по локальной сети может получить доступ к этому каталогу.

Я запустил dpkg-scanpackages amd64 | gzip -9c> amd64 / Packages.gz , создавший файл Packages.gz .

На Machine1 я редактирую файл sources.list, чтобы добавить

http://Machine2FQDN/localrepo amd64/

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

Я выполняю apt-get update , а затем пытаюсь установить пакет, у меня проблема с зависимостью.

Теперь у меня вопрос: хочу ли я, чтобы все зависимости для файла .deb были загружены в каталог localrepo Machine1, как это сделать.

Я видел ответы вроде запуска apt-get install -f, который в моем случае не работает. Я не могу позволить Машине 2 напрямую взаимодействовать с репозиториями Ubuntu и разрешать зависимости через apt-get.Мне не нужно, чтобы каждый пакет из кеша копировался в это локальное репо, мне нужны только определенные связанные пакеты зависимостей, которые должны быть загружены (не установлены), когда я загружаю пакет с помощью одной команды.

У нас есть решение для этого?

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

Примечание: я знаю, что запуск apt-cache зависит от google-chrome-stable перечисляет зависимости, но мне нужно, чтобы эти зависимости были загружены в мою собственную папку / localrepo /

0
задан 6 November 2014 в 19:27

2 ответа

Проблема заключается в здесь

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

, Если Вы комментируете все repo строки от разъединенной машины, Как это заставит другие необходимые .deb файлы удовлетворять запрос, если Ваш локальный репозиторий не может обеспечить тот файл?

, Например, Если Google Chrome требует a.deb и b.deb и Вы установили a.deb в Вашей подключенной машине в некотором моменте времени. Позже Вы загрузили b.deb для Google Chrome и поместили [только 114] в локальный репозиторий, отсутствуя a.deb файл в Вашем локальном repo. В этом случае разъединенная машина, которая может только запросить к Локальному repo, не может не добраться a.deb файл, и это генерирует сообщение об ошибке зависимости.

Постоянное решение

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

Временное решение

Другое решение могло быть, выполнив Живую систему в подключенной машине и загрузить или установить необходимый пакет там. Таким образом можно добраться весь , потребовал пакеты для новой установки Ubuntu. Который был бы достаточен для разъединенной машины. Захватите эти .deb файлы, поместите их в Локальный repo и установку от другой машины.

Hope это поможет.

1
ответ дан 4 August 2019 в 10:17

Если бы machine1 и machine2 были идентичны друг другу, Вы могли бы сделать это на машине 1:

 sudo apt-get install -dy your-package
 scp /var/cache/apt/archives/*.deb machine2:/somewhere
 # create your local repo with all those .debs

Теперь, если Вы начинаете устанавливать программное обеспечение в machine1, это не будет работать, потому что тогда пакет, который уже установлен и удовлетворяет зависимость, не будет загружен снова и таким образом не будет в/var/cache/apt/archives. Это - также проблема, если машины были установлены от чрезвычайно различных версий/разновидностей Ubuntu (скажите, если machine1 является 14,04 рабочими столами, и machine2 является 12,04 серверами).

я записал инструмент, названный dpkg-офлайн, который может помочь, Вы в основном говорите его, который ISO Вы установили machine2 от (у Вас должна быть локальная копия ISO), и какие пакеты Вы хотите загрузить, он произведет tar.gz со всеми зависимостями, должен был установить те пакеты в системе, которая была чисто установлена от того ссылочного ISO.

dpkg-в-режиме-офлайн не работает так хорошо с 12,04 серверами (и более старые серверные версии), но если Ваш machine2 является Рабочим столом Ubuntu (какая-либо версия с тех пор 10.04) или Сервер Ubuntu 12.10 или более новый, это может просто помочь.

https://launchpad.net/dpkg-offline /

для использования его установите bzr и затем bzr branch lp:dpkg-offline. Вы найдете README и подробное учебное руководство о том, как использовать инструмент.

0
ответ дан 4 August 2019 в 10:17

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

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