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

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

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

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

  • Как удалить php7 полностью из centos 6?
  • Список пакетов, исходящих из определенного Codename или Suite (основанные на apt системах)
  • Отключить всплывающее окно java update «Ваша версия Java устарела» на Ubuntu
  • Как гарантируется подлинность пакетов Debian?
  • Yum fail: Требует установленные пакеты
  • В чем разница между apt-get и dpkg?
  • Должен ли я использовать «apt-get remove» или «apt-get purge»?
  • Как возобновить сборку пакетов в debian?
  • One Solution collect form web for “Возможно ли, чтобы сценарий предварительной установки пакета Debian выполнял команды apt-get?”

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

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

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

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

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

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

    Interesting Posts

    Bash, как запустить некоторые фоновые процессы, но ждать других?

    Как перенастроить контент при изменении размера gnome-терминала?

    Отключить выключение экрана в KDE во время просмотра iPlayer

    Xrandr не сохраняет настройки

    Как определить оставшееся пространство на изолированном разделе из командной строки

    Что означает «pollsys»? Производительность «фермы» Solaris

    Постоянная конфигурация гостевой виртуальной машины Virtualbox

    sysctl IPv6 funtional defaults

    безопасно / не опасно для ssh с ключами через открытый прозрачный прокси?

    Как преобразовать рабочие страницы Linux в HTML без использования groff?

    Ограничить использование одного и того же пароля в течение периода времени

    файл зоны сервера подчиненного подчиненного сервера не передан

    Модуль, помеченный (F) в / proc / modules

    Помогите мне, пожалуйста, найти мое недоразумение об этом маленьком фрагменте скрипта

    Ctrl-s эмулятор терминального терминала?

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