Рейтинг:7

Что такое постустановочный скрипт для пакета?

флаг my

Я видел много вопросов на Ask Ubuntu об ошибках, подобных этому:

Постустановочный скрипт foo вернул статус выхода 1

Что такое постустановочный скрипт? Где находятся постустановочные скрипты?

я наткнулся этот вопрос это в некоторой степени связано, но в нем обсуждаются триггеры после установки, а не сценарии после установки.

muru avatar
флаг us
«Расширенный менеджер пакетов обнаруживает сценарий после установки, и Dpkg запускает сценарий». Неа. Dpkg является единственным обработчиком скриптов postinst. Апт не имеет к этому никакого отношения. Помните, что Apt вызывает dpkg для выполнения большинства задач.
Рейтинг:13
флаг my

Само название скрипта говорит о том, что он делает. Это означает, что скрипт содержит команды, которые необходимо выполнить после завершения установки.

Давайте лучше поймем это на примере:

  • Предположим, вы устанавливаете новое ядро. После установки .deb файл завершен, он должен сообщить GRUB, что ядро ​​установлено, чтобы вы могли загрузиться в него. Таким образом, пост-установка пакета сообщит GRUB, что ядро ​​​​установлено, выполнив команды обновление-личность и обновление-initramfs. Для получения дополнительной информации см. раздел часто задаваемых вопросов.

Более общий пример может быть таким:

  • Предположим, вы устанавливаете пакет фу. Предположим теперь, что пакету требуется служба с именем бар быть инвалидом. Как он его отключит? Разработчики добавят команду systemctl отключить bar.service, который отключит службу, в фу сценарий после установки пакета. Таким образом, сценарий после установки пакета состоит из дополнительный команды, обновления и т.д.

    Установка состоит из следующих шагов:

    1. Извлеките управляющие файлы нового пакета.

    2. Если была установлена ​​другая версия того же пакета перед новой установкой выполнить prerm скрипт старый пакет.

    3. Запустите скрипт preinst, если он предусмотрен пакетом.

    4. Распакуйте новые файлы и заодно сделайте резервную копию старые файлы, чтобы, если что-то пойдет не так, их можно было восстановлен.

    5. Если была установлена ​​другая версия того же пакета перед новой установкой выполните скрипт postrm из старый пакет. Обратите внимание, что этот скрипт выполняется после preinst скрипт нового пакета, т.к. новые файлы записываются при удалении старых файлов.

    6. Настройте пакет.

Пост-установка происходит в разделе «Настройка пакета». Это состоит из:

  1. Сообщение другим приложениям об успешной установке пакета.

  2. Уточнение путей к пакету, чтобы пользователи и другие приложения могли его использовать/выполнять.

  3. Найдите ошибки при установке и распечатайте сообщение об ошибке.


Раздел часто задаваемых вопросов


  • Где находятся эти скрипты?

    Эти скрипты находятся в /var/lib/dpkg/информация. Эти скрипты имеют .postinst расширение. Вы можете запустить найти .postinst чтобы найти больше таких скриптов.

    Пример скрипта после установки выглядит так:

    #!/бин/ш
    установить -е
    если [-x /usr/sbin/update-initramfs]; тогда
    /usr/sbin/update-initramfs -u -k все
    фи
    
  • Что значит, если постустановочный скрипт возвращается статус выхода 1?

    Как правило, это означает, что послеустановочный скрипт возвращает выход 1 чтобы указать, что команды внутри скрипта после установки не удались по той или иной причине.

  • Как исправить статус выхода 1?

    Вы можете попробовать погуглить ошибки с командами и исправить их. Если вы столкнулись с ошибками с подходящий и/или дпкг, то вы можете удалить скрипт после установки и безопасно переместить его обратно после того, как исправите команды. Однако это не всегда может быть правильным решением. Вы можете захотеть задать новый вопрос.

    Некоторые полезные команды для исправления распространенных ошибок сценария после установки перечислены в таблице ниже:

    Команда Описание сильный Синтаксис
    меткая очистка Удаляет пакет вместе с его файлами конфигурации. Зависит от ситуации. sudo apt purge <package_name>
    дпкг -р Принудительно удаляет пакет. Предлагает много полезных аргументов. Да, при использовании с определенными аргументами sudo dpkg -r --force-all <имя_пакета>
    дпкг -P Принудительно очищает пакет. Предлагает много полезных аргументов. Да, при использовании с определенными аргументами. sudo dpkg -P --force-all <имя_пакета>
  • Я задаю новый вопрос об ошибках, связанных с этими сценариями, какую информацию я должен предоставить?

    Вы должны предоставить такую ​​информацию, как:

    • Ваша версия Ubuntu (вывод lsb_release -d).
    • Вывод судо подходящее обновление.
    • Полный вывод sudo apt -f установить.
    • Содержимое постустановочного скрипта пакета.

    Другие детали должны быть предоставлены по запросу.

  • Могу ли я изменить/удалить эти скрипты?

    НЕТУ! Избегайте возиться с этими сценариями. Если есть синтаксические ошибки или ошибки с какой-либо командой, подходящий приведет к сбою каждой установки этого пакета. Если случайно есть какие-либо синтаксические ошибки, вам нужно вручную использовать бэкэнд-инструменты, такие как дпкг чтобы все исправить. Могу ли я удалить их? НЕТ! Не удаляйте их без необходимости, удаление этих скриптов может сделать эти пакеты непригодными для использования.

  • Как повторно выполнить эти сценарии?

    Хотите повторно выполнить скрипт после установки пакета? Как я уже говорил ранее, запуск скрипта после установки происходит в разделе «Конфигурация» пакета. Итак, простой запуск:

    sudo dpkg --configure <пакет>
    

    Где <package> — это имя пакета, который вы хотите настроить.


Друзья и родственники этого скрипта.

Попробуйте запустить лс в /var/lib/dpkg/информация и grep вывод с узором способность. Вы найдете множество похожих скриптов по мере его вывода. Некоторые из них .postrm, .preinst, прем и .список вместе с файлом сигнатур. Вот таблица, показывающая функции каждого из этих скриптов:

Скрипт Функция
Удаление поста (.postrm) Этот сценарий состоит из команд, которые необходимо выполнить ПОСЛЕ завершения удаления.
Предварительная установка (.preinst) Этот сценарий состоит из команд, которые необходимо выполнить перед установкой.
Предварительное удаление (.прем) этот сценарий состоит из команд, которые необходимо выполнить перед процессом удаления
Файл списков (.список) Этот файл содержит список каталогов, принадлежащих пакету.

Для получения дополнительной информации см. справочная страница дпкг

Akbarkhon Variskhanov avatar
флаг mx
Я не уверен, что `sudo apt -f install` - хорошая идея. Иногда, когда у вас есть только один пакет для обработки, `apt` не будет запрашивать вас, и, поскольку предыдущие выполнения `sudo` сохраняют аутентификацию пользователя, это может повредить систему. Лучшим решением было бы запустить его без части `sudo` и с включенным режимом `--simulate`.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.