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

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

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

  • Ручной тормоз для хриплых?
  • Установка пакетов путем импорта списка с помощью dpkg -set-selection
  • Отладка Open Dylan Debian build
  • Как восстановить initramfs с помощью встроенной оболочки?
  • Как запускается PulseAudio?
  • Клавиатура, запускающая события мыши в Debian на Macbook
  • Поэтому я хотел бы, чтобы сценарий предварительной установки моего пакета добавлял эти источники, а затем запускал обновление apt-get, но основная проблема заключается в том, что когда пакет открыт и устанавливается, он блокирует dpkg. Итак, можно ли добиться того, что мне нужно после, или каких других вариантов / обходных путей?

  • Как подключить wi-fi интерфейс из командной строки?
  • Недокументированная --read-environment в ifup / ifdown / ifquery
  • как определить имя пакета GUI-программы / элемента
  • Получение списка пакетов, установленных вручную по aptitude
  • Нет Wi-Fi-интерфейса на ThinkPad T460P с debian
  • Почему NTP не увеличивает интервал опроса при использовании приемника GPS / PPS и интернет-серверов?
  • One Solution collect form web for “Возможно ли, чтобы сценарий предварительной установки пакета Debian выполнял команды apt-get?”

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

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

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

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

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

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

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