Изменить чужие файлы с помощью пакета debian
Я создаю пакет Debian. Это придется изменить /etc/inittab
переключать tty1
от /sbin/getty
в /sbin/rungetty
,
Конечно, я могу изменить строку с sed
в постинст. Это лучший способ сделать это или есть какой-нибудь дебианский способ сделать это?
заранее спасибо
1 ответ
Способ решения этой проблемы в Debian описан в Руководстве по политике Debian в разделе 10.7.4"Совместное использование файлов конфигурации". Сложность состоит в том, что политика Debian диктует, что ни один пакет не должен напрямую изменять файл конфигурации из другого пакета. Вместо этого пакет-владелец должен предоставлять помощников, которые другие пакеты могут использовать для изменения конфигурации.
На большинстве систем /etc/inittab
будет предоставлен пакетом sysvinit, поэтому, чтобы соответствовать политике Debian, sysvinit
пакет должен быть изменен, чтобы дать вашему пакету механизм для изменения inittab. sysvinit - не единственный пакет, который может предоставлять /etc/inittab
Это также может произойти от выскочки, поэтому выскочка тоже должна будет измениться. другие могут не иметь /etc/inittab
, Если ваше программное обеспечение зависит от одной конкретной реализации, или будет работать со сбоями без каких-либо /etc/inittab
В настоящее время вам нужен ваш пакет, чтобы явно зависеть от предоставления пакета /etc/inittab
,
Это вряд ли что-то случится. Другие вещи, которые следует принять во внимание, это то, что изменения, внесенные в файлы конфигурации системным администратором, никогда не должны перезаписываться пакетом, поэтому, если вы сделаете какое-то изменение, администратор отменит или изменит то, что вы изменили, вы не должны изменять его снова. его, если ваш пакет реконфигурирован или обновлен (возможно, без запроса разрешения администратора).
Помимо этих правил о том, когда вы можете изменять файлы, в политике или соглашении нет ничего, что указывало бы, какие инструменты использовать для этого. sed
это один из многих широко используемых инструментов.