Выскочке Job (.conf) не удается установить

У меня есть простой пакет (.deb), где главная цель состоит в том, чтобы создать Новомодное задание. Назовите это Foo. Этому не удается создать файл задания /etc/init/Foo.conf.

Определение пакета

Я создал исходное использование пакета dh_make --createorig и добавил Foo.upstart к debian каталог. Я создаю пакет с debuild -us -uc.

Установка

sudo dpkg -i Foo_1.0-1_all.deb

Когда я устанавливаю пакет на одной машине, это идет прекрасное, но другой это перестало работать. (Foo.conf добавляется к /etc/init и сервис запускается). Таким образом, Foo.conf не добавляется к /etc/init. Назад-совместимость сценарий Foo (символьная ссылка на upstart-job) действительно становится добавленным к /etc/init.d, и файлы документа добавляются к /usr/share/doc/Foo. Но, /etc/init/Foo.conf отсутствует.

Править

Первоначально я полагал, что проблема происходила из-за архитектуры. Это было просто, потому что у меня была рабочая установка на amd64, но проблема произошла на i386 машине. Я забыл понимать, что я ранее сделал ручную установку и удаление на i386 машине, в которую dpkg постарался не вмешиваться.

1
задан 18 April 2014 в 19:03

1 ответ

Поиск и устранение неисправностей

, Когда пакету не удается установить Вас, может диагностировать при помощи переключателя Отладки. Это берет битовое поле для определения уровня и темы. Значение D=7777 покажет все. Для этой проблемы мы знаем, что конкретно интересуемся conf файлами, таким образом, мы можем использовать D=220.

sudo dpkg -D=220 -i Foo_1.0-1_all.deb

Ваш вывод может показать что-то как следующее:

D000200: conffderef in='/etc/init/Foo.conf' current working='/etc/init/Foo.conf'
D000200: conffderef nonexistent
D000020: deferred_configure '/etc/init/Foo.conf' (= '/etc/init/Foo.conf') useredited=1 distedited=0 what=2002

ключевая подсказка useredited=1 . Значением по умолчанию dpkg не заменит отредактированные пользователями конфигурационные файлы. Вручную удаление .conf файла рассчитывает как редактирование его, таким образом, может стать неожиданностью, что dpkg не заменит недостающий файл. Это может быть вдвойне удивительно для испытанных с установкой сервисов на другие операционные системы, что Выскочку Job рассматривают как конфигурацию.

Сила, отсутствующая conf установка

, dpkg имеет горстку опций силы. Можно вызвать замену пропавших без вести .conf файл как так:

sudo dpkg -i --force-confmiss Foo_1.0-1_all.deb

существуют другие опции силы для подобных сценариев; проверьте страницу руководства или используйте dpkg --force-help для деталей. Эти опции должны использоваться с осторожностью, специально для сторонних пакетов.

Пакет Цикл Dev/Test

В разработке .deb пакета (например, для Выскочки Job) Вы будете устанавливать и удалять пакет много раз. Вы будете также возможно настраивать .conf файл вручную время от времени. Значением по умолчанию dpkg -r (или apt-get remove) не удалит .conf файл. (Таким образом, удивительно новомодное задание остается, в то время как связанные двоичные файлы могут закончиться.) Для этого необходимо использовать опцию чистки. Поэтому для тестирования полностью удаления и переустановки новомодного задания можно сделать следующее:

sudo dpkg -i Foo_1.0-1_all.deb
# testing...
sudo apt-get purge Foo

И теперь, когда Вы знаете о силе и параметрах отладки, можно применить тех по мере необходимости.

Ссылки

Видят поток Bug#1198: dpkg тихо не удается установить файл :

Удаление файла рассчитывает как 'редактирование' его, потому что для многих конфигурационных файлов отсутствие файла значимо.

Страница руководства для dpkg

1
ответ дан 11 November 2019 в 12:48

Другие вопросы по тегам:

Похожие вопросы: