4

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

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

2 ответа2

2

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

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .