Поддержка Apport для не Ubuntu пакетов

13

Я читал об apport и его использовании уже неделю. Но не мог понять нижеприведенные вещи.

Сценарий:

Я разработал приложение и упаковал его. И его зовут MyApp.deb. Имя двоичного пакета MyApp. Приложение установлено в пути /opt/myapplication/bin/MyApp.

Требование:

  1. Когда мое приложение падает, я хочу иметь возможность собирать дамп ядра.
  2. При каждом последующем сбое он должен создавать новый сбой, но не перезаписывать существующий. Мне может помочь что-то вроде автоматического переименования с отметкой текущего времени и т. Д.
  3. Когда я устанавливаю свое приложение на клиентском компьютере, мой установщик не должен изменять общесистемные параметры. Скажем, к примеру, я не должен изменять шаблон генерации его основного файла, потому что пользователь / клиент может ненавидеть мое приложение, поскольку я изменил бы его системные параметры без его согласия.
  4. Я в порядке с путем генерации файла ядра. Либо текущий каталог или/var/crash

Вещи, которые я исследовал до сих пор:

Apport - хорошая утилита, которая позволяет генерировать основные файлы. Используя /proc/sys/kernel/core_patternя могу отформатировать основные файлы. Это обеспечивает гибкость для перенаправления файлов ядра в предопределенный каталог, именования файлов ядра с помощью pid, шаблона пути к файлу, добавленного или подготовленного к нему, и т. Д. Для пакетов, отличных от Ubuntu, я должен написать хуки для создания дампов ядра (отчетов) , Apport после сбора отчета будет загружен.

Вещи, которые я не понимаю

  1. Я должен смотреть на Apport ?? Я имею в виду, достаточно ли моей цели? Или я должен смотреть на что-то еще?
  2. К какой упаковке относится мое приложение? Я называю это не Ubuntu? 3-я часть? что это? Я вижу разные термины в документах?
  3. Как я уже говорил, MyAppзапускается /opt/myapplication/bin/MyApp, так где будут генерироваться файлы ядра? Текущий реж или /var/crash? Обнаруживает ли Apport сбои, вызванные /opt? Это интерпретирует это?
  4. Важный вопрос: если я разработал приложение и если Apport загрузит отчет в репозитории Ubuntu, это не имеет смысла. Так как я могу сказать Apport, чтобы отправить мне отчет.
  5. Я получаю эту ошибку: executable does not belong to a package, ignoring. Так что я делаю не так?
  6. Чтобы приложение распознало мой пакет, нужно ли мне сделать его исходным пакетом? Это обязательно? Я просто хочу создать бинарный пакет?
  7. Я также видел где-то в документах, которые распознает Apport:
    1. Пакеты Ubuntu или
    2. Приложения панели запуска, но мое приложение не относится ни к одному из них. Так как же Apport помогает мне в текущем сценарии?
Sandeep
источник
Одно из ограничений Apport прямо сейчас - это должен быть пакет в репозитории Ubuntu или, по крайней мере, проект на Launchpad. Последний вариант для вас?
Джокердино
Спасибо за своевременный ответ и четкий ответ на мой длинный вопрос. Кстати, я упустил упомянуть в моем предыдущем посте, что мое приложение является собственностью. Мы планируем разместить наше приложение в репозиториях Ubuntu. Но это может быть через несколько месяцев. До этого я должен управлять основными файлами вручную.
Сандип
На каком языке написано приложение? Также ознакомьтесь с классом для написания хуков пакетов Apport .
Джокердино
Приложение написано на C ++. Следующие строки из ссылки оставляют меня в замешательстве: "<openweek4> ВОПРОС: будут ли перехватчики приложений работать со сторонними приложениями? Openweek4: Я действительно не уверен в этом вопросе. Если вы посмотрите на перехват ubuntuone-client - об ошибках сообщают на Launchpad, но о проекте Ubuntuone. Так что это вполне может быть возможным. Тем не менее, apport должен иметь возможность общаться с соответствующей системой отслеживания ошибок ».
Сандип
Автор говорит, что сторонние приложения могут использовать apport для получения отчетов, если между приложением и системой отслеживания ошибок приложений 3-го paty установлена ​​связь. Как этого достичь? Если это может быть достигнуто, тогда мне не нужно ждать, пока мое приложение будет зарегистрировано в Ubuntu Repo или launchpad.
Сандип

Ответы:

2
  1. Это выглядит близко, но может быть не то, что вам нужно. Apport автоматически изменяет / proc / sys / kernel / core_pattern. Так что, если это нельзя изменить, вам не повезло. С другой стороны, apport сейчас находится в стандартной установке Ubuntu, поэтому практически у всех, кто использует Ubuntu, этот параметр уже изменен. Я также не знаю, как сказать apport, чтобы он сохранял больше, чем самый последний сбой в конкретном приложении, но до тех пор, пока каждый сбой загружен, это не проблема.
  2. Я бы назвал это сторонним.
  3. Apport поддерживает исполняемые файлы, установленные в / opt. Вам нужно будет указать хук в / opt / path / to / your / app / share / apport / package-hooks.
  4. Вы можете установить пользовательскую базу данных сбоев в package-hook для вашего пакета. Но если ваша база данных сбоев не работает как debbugs или launchpad, вам также нужно создать собственную реализацию коннектора базы данных сбоев, что не похоже на то, что это можно сделать без установки файла python вне / opt.
  5. Исполняемый файл должен быть установлен dpkg, что означает, что вам нужно упаковать его в файл .deb.
  6. Вы должны создать исходный пакет, чтобы создать двоичный пакет, потому что двоичные пакеты создаются из исходных пакетов. Вам не нужно распространять исходный пакет.
  7. Apport работает со всем, что упаковано как файл .deb.
Прекратите вредить сообществу
источник
Похоже, это мог бы быть очень полезный ответ, но он оставляет несколько пробелов в объяснении: что влечет за собой «предоставление крючка»? Что именно означает «действовать как debbugs или launchpad»? Указатели на рефс, пожалуйста?
BobDoolittle