На этот вопрос уже есть ответ здесь:
У меня есть пара 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 /
Проблема заключается в здесь
, я комментирую все другие строки, которые пытались указать на различную человечность 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 это поможет.
Если бы 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 и подробное учебное руководство о том, как использовать инструмент.