Использование dpkg для установки пакетов из локального каталога

2621
Matt Green

Я уточняю наш установщик. Как это работает, все наши компоненты превращаются в файлы .deb. Установщик просто вызывает dpkg для всех сразу, вместе с их зависимостями. Это прекрасно работает ... пока вы устанавливаете на Ubuntu Linux 8.04.1. Например, при установке в Ubuntu 8.04.3 версия libc6-dev, которая может быть установлена, больше. Но dpkg по-прежнему устанавливает нашу версию libc6-dev, несмотря на то, что более высокая версия уже установлена. Как и следовало ожидать, это вызывает проблемы.

Как правильно это сделать? Проверить каждый пакет, который мы собираемся установить, с тем, который установлен в системе? Я думал, что dpkg или apt сделали это для нас. Во-вторых, почему это должно быть так больно, как есть? На целевых компьютерах не будет ни доступа в Интернет, ни доступа к зеркалу. Мы должны иметь возможность отправить приложение, чтобы оно было полностью автономным. Пакеты должны были освободить нас от ада зависимости, и похоже, что это не так.

4

2 ответа на вопрос

2
Teddy

Казалось бы, самое чистое решение - поместить все ваши пакеты в локальный репозиторий, такой как компакт-диск с пакетом, и добавить в него файл /etc/apt/sources.list.dдля включения репозитория. Тогда это должно быть простым делом, aptitude update; aptitude install <packages>чтобы автоматически установить точно нужные пакеты.

Файл находится в `/ etc / apt / sources.list` Telemachus 15 лет назад 0
@Telemachus: Спасибо; исправленный. Teddy 15 лет назад 0
Я делаю это для нашего продукта. Я просто добавляю файл в /etc/apt/sources.list.d. Таким образом, мне не нужно изменять установленный файл системы. Работает отлично. Michael Kohne 15 лет назад 2
@Michael Kohne: You're absolutely right, that's a much better way. I've changed my answer accordingly. Teddy 15 лет назад 0
1
Andrew Scagnelli

Я не верю, что dpkgпроверяет номер версии уже установленных пакетов. aptдолжен сделать это, но я не верю, что он будет установлен с диска, если вы не измените sources.list(как правило, находится в /etc/apt/). Если вы добавите ваш исходный каталог в sources.list, вы просто сможете запустить стандартную apt-getкоманду установки и всю проверку, которую она выполняет для вас.

`/ etc / apt`, пожалуйста, а не` \ etc \ apt` Telemachus 15 лет назад 0
Indeed, you are correct. This is what I get for using Windows all day. Fixed. Andrew Scagnelli 15 лет назад 0

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