Это команда dpkg-maintscript-helper, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
dpkg-maintscript-helper - обходит известные ограничения dpkg в сценариях сопровождающего
СИНТАКСИС
dpkg-maintscript-помощник команду [параметр...] -- maint-script-параметр...
КОМАНДЫ И ПАРАМЕТРЫ
поддерживает команду
rm_conffile Conffile [предыдущая версия [пакет]]
mv_conffile Old-Conffile New-Conffile [предыдущая версия [пакет]]
symlink_to_dir пути старая цель [предыдущая версия [пакет]]
dir_to_symlink пути новая цель [предыдущая версия [пакет]]
ОПИСАНИЕ
Эта программа предназначена для запуска в сценариях сопровождающего для выполнения некоторых задач, которые
Dpkg не может (пока) обрабатывать изначально либо из-за проектных решений, либо из-за текущих
ограничения.
Многие из этих задач требуют согласованных действий нескольких сценариев сопровождающего (преинст,
постинста, прем, Postrm). Чтобы избежать ошибок, просто нужно поместить один и тот же вызов во все
скрипты, и программа автоматически адаптирует свое поведение в зависимости от среды.
переменная DPKG_MAINTSCRIPT_NAME и аргументы сценариев сопровождающего, которые вы должны
вперед после двойного дефиса.
ОБЩИЙ ПАРАМЕТРЫ
предыдущая версия
Определяет последнюю версию пакета, обновление которой должно вызывать
операция. Важно рассчитать предыдущая версия правильно, чтобы
операции выполняются правильно, даже если пользователь пересобирал пакет с
локальная версия. Если предыдущая версия пусто или опущено, выполняется попытка операции
при каждом обновлении (примечание: безопаснее указать версию и опробовать операцию
только один раз).
Если файл conffile не был поставлен для нескольких версий, и теперь вы
изменение сценариев сопровождающего для очистки устаревшего файла, предыдущая версия
должен основываться на версии пакета, который вы сейчас готовите, а не на
первая версия пакета без файла conffile. Это относится ко всем остальным
действия аналогичным образом.
Например, для файла, удаленного в версии 2.0-1 пакета, предыдущая версия
должен быть установлен на 2.0-1 ~. Это приведет к удалению файла conffile, даже если
пользователь восстановил предыдущую версию 1.0-1 as 1.0-1локальный1. Или пакет, переключающий
путь от символической ссылки (поставляется в версии 1.0-1) в каталог (поставляется в версии
2.0-1), но выполняет только фактическое переключение в сценариях сопровождающего в версии
3.0-1, следует установить предыдущая версия в 3.0-1 ~.
пакет
Имя пакета. Если для пакета установлено значение «Multi-Arch: same», этот параметр должен
включить квалификатор архитектуры, иначе он должен обычно включают
квалификатор архитектуры (поскольку он запрещает перекрестные оценки или переключение с
архитектура, специфичная для архитектуры ВСЕ или наоборот). Если параметр
пусто или опущено, DPKG_MAINTSCRIPT_PACKAGE и DPKG_MAINTSCRIPT_ARCH
переменные среды (как установлено Dpkg) будет использоваться для создания квалифицированного архива
имя пакета.
-- Все параметры сценариев сопровождающего должны быть переданы программе.
после --.
КОНФФИЛЬ В СВЯЗИ ЗАДАЧИ
При обновлении пакета Dpkg не удаляет автоматически файл конфигурации (конфигурация
файл для которого Dpkg следует сохранить изменения пользователя), если его нет в более новой версии
версия. Для этого есть две основные причины; во-первых, это то, что кондитерская могла
был удален случайно, и следующая версия может восстановить его, пользователи не захотят, чтобы их
изменения выброшены. Второй - разрешить пакетам передавать файлы из
файл, поддерживаемый dpkg, в файл, поддерживаемый сценариями сопровождающего пакета, обычно
с помощью таких инструментов, как debconf или ucf.
Это означает, что если пакет предназначен для переименования или удаления файла, он должен
явно сделать это и dpkg-maintscript-помощник может использоваться для реализации постепенного удаления
и перемещение файлов конфигурации в сценариях сопровождающего.
Удаление a Conffile
Если файл полностью удален, он должен быть удален с диска, если пользователь не
модифицировал его. Если есть локальные изменения, их следует сохранить. Если пакет
апгрейды прерываются, недавно устаревший конфайл не должен исчезнуть.
Все это реализуется путем помещения следующего фрагмента оболочки в преинст, постинста
и Postrm сценарии сопровождающего:
dpkg-maintscript-помощник rm_conffile \
Conffile предыдущая версия пакет - "$ @"
Conffile это имя файла, который нужно удалить.
Текущая реализация: в преинст, он проверяет, был ли изменен файл conffile и переименовывает
это либо к Conffile.dpkg-удалить (если не изменено) или в Conffile.dpkg-резервная копия (если
изменено). в постинста, последний файл переименовывается в Conffile.dpkg-бак и сохранен для
ссылка, поскольку она содержит пользовательские изменения, но первая будет удалена. Если пакет
обновление прерывается, Postrm переустанавливает исходный файл conffile. Во время продувки Postrm предусматривает
также удалите .dpkg-бак файл сохранен до сих пор.
Переименование a Conffile
Если файл conffile перемещается из одного места в другое, вам необходимо убедиться, что вы перемещаетесь через
любые изменения, внесенные пользователем. Это может показаться простым изменением преинст сценарий в
сначала, однако, это приведет к тому, что пользователю будет предложено Dpkg одобрить conffile
правки, даже если они не несут за них ответственности.
Изящное переименование можно реализовать, поместив следующий фрагмент оболочки в
преинст, постинста и Postrm сценарии сопровождающего:
dpkg-maintscript-помощник mv_conffile \
Old-Conffile New-Conffile предыдущая версия пакет - "$ @"
Old-Conffile и New-Conffile - это старое и новое имя файла, который нужно переименовать.
Текущая реализация: преинст проверяет, был ли изменен файл conffile, если да, то
остался на месте, иначе он переименован в Old-Conffile.dpkg-удалить. В конфигурации
постинста удаляет Old-Conffile.dpkg-удалить и переименовывает Old-Conffile в New-Conffile if Староновая
Conffile все еще доступен. При прерывании-обновлении / прерывании-установке Postrm переименовывает Староновая
Conffile.dpkg-удалить назад к Old-Conffile если необходимо.
СИМВОЛКА И СПРАВОЧНИК ВЫКЛЮЧАТЕЛИ
При обновлении пакета Dpkg не будет автоматически переключать символическую ссылку на каталог или
наоборот. Переход на более раннюю версию не поддерживается, и путь останется прежним.
Переключение a символическая в каталог
Если символическая ссылка переключена на реальный каталог, перед распаковкой необходимо убедиться, что
символическая ссылка удалена. Это может показаться простым изменением преинст сценарий сначала,
однако это приведет к некоторым проблемам в случае локальной настройки администратора
символическая ссылка или при понижении версии пакета.
Изящное переименование можно реализовать, поместив следующий фрагмент оболочки в
преинст, постинста и Postrm сценарии сопровождающего:
dpkg-maintscript-helper symlink_to_dir \
пути старая цель предыдущая версия пакет - "$ @"
пути это абсолютное имя старой символической ссылки (путь будет каталогом в конце
установки) и старая цель это целевое имя бывшей символической ссылки на пути.
Он может быть абсолютным или относительным по отношению к каталогу, содержащему пути.
Текущая реализация: преинст проверяет, существует ли символическая ссылка и указывает на старая цель,
в противном случае его оставляют на месте, в противном случае его переименовывают в пути.dpkg-резервная копия, На
конфигурация, постинста удаляет пути.dpkg-резервная копия if пути.dpkg-резервная копия по-прежнему
символическая ссылка. При прерывании-обновлении / прерывании-установке Postrm переименовывает пути.dpkg-резервная копия назад к
пути если необходимо.
Переключение a каталог в символическая
Если реальный каталог переключается на символическую ссылку, перед распаковкой необходимо убедиться, что
каталог удален. Это может показаться простым изменением преинст сценарий сначала,
однако это приведет к некоторым проблемам, если каталог содержит файлы conffiles,
путевые имена, принадлежащие другим пакетам, локально созданные путевые имена или при понижении
пакет.
Изящное переключение можно реализовать, поместив следующий фрагмент оболочки в
преинст, постинста и Postrm сценарии сопровождающего:
dpkg-maintscript-helper dir_to_symlink \
пути новая цель предыдущая версия пакет - "$ @"
пути это абсолютное имя старого каталога (путь будет символической ссылкой в конце
установки) и новая цель является целью новой символической ссылки на пути. Он может
либо быть абсолютным, либо относительным к каталогу, содержащему пути.
Текущая реализация: преинст проверяет, существует ли каталог, не содержит
conffiles, пути, принадлежащие другим пакетам, или локально созданные пути, если нет, то
он остается на месте, иначе он переименован в пути.dpkg-резервная копия, и пустая постановка
каталог с именем пути создается, помечается файлом, чтобы dpkg мог его отслеживать. На
конфигурация, постинста заканчивает переключение, если пути.dpkg-резервная копия все еще
каталог и пути это промежуточный каталог; он удаляет метку промежуточного каталога
файл, перемещает вновь созданные файлы внутри промежуточного каталога в цель символической ссылки
новая цель/, заменяет теперь пустой промежуточный каталог пути с символической ссылкой на новый-
цель, и удаляет пути.dpkg-резервная копия. При прерывании-обновлении / прерывании-установке Postrm
переименовывает пути.dpkg-резервная копия назад к пути если необходимо.
ИНТЕГРАЦИЯ IN Пакеты
При использовании помощника по упаковке проверьте, есть ли у него собственный dpkg-maintscript-помощник
интеграция, которая может облегчить вашу жизнь. См. Например dh_installdeb(1).
При условии dpkg-maintscript-помощник используется в преинст, используя его безоговорочно
требует предварительной зависимости, чтобы гарантировать, что требуемая версия Dpkg был распакован
до. Требуемая версия зависит от используемой команды, для rm_conffile и mv_conffile
это 1.15.7.2, для symlink_to_dir и dir_to_symlink это 1.17.14:
Предварительно зависит: dpkg (> = 1.17.14)
Но во многих случаях операция, выполняемая программой, не критична для пакета, и
вместо использования предварительной зависимости мы можем вызывать программу, только если знаем, что
требуемая команда поддерживается установленным в данный момент Dpkg:
если dpkg-maintscript-helper поддерживает командуа метаболическая активность
dpkg-maintscript-помощник команду ...
fi
Команда поддерживает вернет 0 в случае успеха, 1 в противном случае. В поддерживает команда будет
проверьте, присутствуют ли переменные среды, установленные dpkg и требуемые скриптом,
и будет считать это неудачей, если окружающая среда окажется недостаточной.
Используйте dpkg-maintscript-helper онлайн с помощью сервисов onworks.net