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

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

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

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

  • Является ли xkcd универсальный установочный скрипт хорошей идеей?
  • удаление ядер ядра
  • Как использовать Fedora 20 DVD после установки
  • Как я могу принудительно удалить пакет из Ubuntu вручную?
  • Как установить X11 в мою собственную систему Linux Buildroot?
  • изменить путь кэширования кэша для APT
  • Удалите все пакеты ядра, кроме используемого в данный момент
  • Что означает сообщение apt-get «сломанные пакеты»?
  • One Solution collect form web for “Возможно ли, чтобы сценарий предварительной установки пакета Debian выполнял команды apt-get?”

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

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

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

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

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

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

    Linux и Unix - лучшая ОС в мире.