Возможно ли, чтобы сценарий предварительной установки пакета Debian выполнял команды apt-get?

Я создаю пакет Debian, который содержит несколько зависимостей, не найденных в официальных репозиториях. Просто указание этих других пакетов в качестве зависимостей не сокращает его, поскольку только их установки включают запуск apt-get update и добавление исходных репозиториев (которые не являются моими) в /etc/apt/sources.list.d.

Подробнее : один из этих пакетов – SDK для Dart, который можно установить только, захватив их deb и используя dpkg или добавив один из репозиториев Google. Моя цель – просто найти баланс между минимизацией количества шагов, связанных с установкой моего пакета и развертыванием чистого пакета.

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

One Solution collect form web for “Возможно ли, чтобы сценарий предварительной установки пакета Debian выполнял команды apt-get?”

Я не думаю, что это возможно напрямую.

Но каким-то образом пользователь получил ваш пакет для установки – и, видимо, не из вашего репозитория, так как он еще не добавлен. Поэтому первым обходным решением, которое я бы предложил, было бы сделать обычным способом: добавьте ли пользователь репозиторий (или предоставите пользователю простой сценарий оболочки), а затем установите свой пакет как обычно. Это было бы моим предпочтительным решением, и запуск сценария оболочки не сложнее, чем установка пакета.

Второй обходной путь: ваш пакет просто будет пакетом установки. Создайте свой репозиторий, а затем сообщите пользователю (например, через заметку debconf или другое приглашение на экране), чтобы установить реальный пакет (который будет создан из вашего репозитория).

Третий метод обхода: тот же пакет установки, но используйте одно и то же имя пакета в вашем репозитории, просто более высокую версию (возможно, используйте эпоху). Таким образом, первоначальная установка будет настраивать репозиторий, а затем apt upgrade или аналогично будет в реальном пакете.

В-четвертых: я не уверен, что это хорошая идея, но … В своем postinst запустите фоновый процесс, который будет ждать блокировки dpkg, а затем закончить установку. Я думаю, что или batch будет работать для этого, или просто обычный /path/to/script & после чего disown . Вероятно, вы хотите сообщить пользователю, что установка пакета закончится в фоновом режиме.

PS: вам, вероятно, также нужно добавить ключ GPG.

  • Debian: в репозитории нет файла Release
  • Резервное копирование и восстановление списка установленных пакетов и источников APT
  • Есть ли он-лайн / веб-интерфейс для поиска и списка пакетов apt-get и см. Резюме и рекомендации?
  • Dpkg - не создает папку при установке пакета deb
  • Проверить версию пакета с помощью apt-get / aptitude?
  • Проверьте и исправьте все файлы из пакетов Debian.
  • Устанавливать параметры apt-get, чтобы переносить безвредные «dpkg -force-conflict» kludge?
  • Система сборки пакетов для Debian (например, Fedora Koji)
  • Как получить все виды зависимостей обратного пакета: зависящий от реверса момент для не-Ubuntu-дистрибутивов
  • Как создать пакет deb, содержащий несколько проектов?
  • Есть ли способ узнать, какие файлы в файле / etc были изменены?
  • Пример /etc/apt/sources.list для Linux Mint 17
  • Linux и Unix - лучшая ОС в мире.