Поддержка Apport для не Ubuntu пакетов
Я читаю об apport и его использовании уже неделю. Но не мог понять нижеприведенные вещи.
Сценарий:
Я разработал приложение и упаковал его. И его зовут MyApp.deb
, Имя бинарного пакета MyApp
Приложение установлено в пути /opt/myapplication/bin/MyApp
,
Требование:
- Когда мое приложение падает, я хочу иметь возможность собирать дамп памяти.
- При каждом последующем сбое он должен создавать новый сбой, но не перезаписывать существующий. Мне может помочь что-то вроде автоматического переименования с отметкой текущего времени и т. Д.
- Когда я устанавливаю свое приложение на клиентском компьютере, мой установщик не должен изменять общесистемные параметры. Скажем, например, я не должен менять шаблон генерации его основного файла, потому что пользователь / клиент может ненавидеть мое приложение, так как я изменил бы его системные параметры без его согласия.
- Я в порядке с путем генерации файла ядра. Либо текущий каталог или
/var/crash
Вещи, которые я исследовал до сих пор:
Apport - хорошая утилита, которая позволяет генерировать основные файлы. С помощью /proc/sys/kernel/core_pattern
Я могу отформатировать основные файлы. Это обеспечивает гибкость для перенаправления файлов ядра в предопределенный каталог, именования файлов ядра с помощью pid, шаблона пути к файлу, добавленного или подготовленного к нему, и т. Д. Для пакетов, отличных от Ubuntu, я должен написать хуки для создания дампов ядра (отчетов), Apport после сбора отчета будет загружен.
Вещи, которые я не понимаю
- Является ли Apport тем, на кого я должен смотреть?? Я имею в виду, достаточно ли моей цели? Или я должен смотреть на что-то еще?
- К какой упаковке относится мое приложение? Я называю это не Ubuntu? 3-я часть? что это? Я вижу разные термины в документах?
- Как я уже заметил,
MyApp
бежит из/opt/myapplication/bin/MyApp
Так где же будут создаваться файлы ядра? Текущий каталог или/var/crash
? Обнаруживает ли Apport сбои, вызванные/opt
? Это интерпретирует это? - Важный вопрос: если я разработал приложение и если Apport загрузит отчет в репозитории Ubuntu, это не имеет смысла. Так как я могу сказать Apport, чтобы отправить мне отчет.
- Я получаю эту ошибку:
executable does not belong to a package, ignoring
, Так что я делаю не так? - Чтобы apport распознал мой пакет, нужно ли мне сделать его исходным пакетом? Это обязательно? Я просто хочу создать бинарный пакет?
- Я также видел где-то в документах, которые распознает Apport:
- Пакеты Ubuntu или
- Приложения панели запуска, но мое приложение не относится ни к одному из них. Так как же Apport помогает мне в текущем сценарии?
1 ответ
- Это выглядит близко, но может быть не то, что вам нужно. Apport автоматически изменяет / proc / sys / kernel / core_pattern. Так что, если это нельзя изменить, вам не повезло. С другой стороны, apport сейчас находится в стандартной установке Ubuntu, поэтому практически у всех, кто использует Ubuntu, этот параметр уже изменен. Я также не знаю, как сказать apport, чтобы он сохранял больше, чем самый последний сбой в конкретном приложении, но до тех пор, пока загружается каждый сбой, это не проблема.
- Я бы назвал это третьей стороной.
- Apport поддерживает исполняемые файлы, установленные в / opt. Вам нужно будет указать хук в / opt / path / to / your / app / share / apport / package-hooks.
- Вы можете установить пользовательскую базу данных сбоев в package-hook для вашего пакета. Но если ваша база данных о сбоях не работает как debbugs или launchpad, вам также нужно создать собственную реализацию коннектора базы данных о сбоях, что не похоже на то, что это можно сделать без установки файла python вне / opt.
- Исполняемый файл должен быть установлен dpkg, что означает, что вам нужно упаковать его в файл.deb.
- Вы должны создать исходный пакет, чтобы создать двоичный пакет, потому что двоичные пакеты создаются из исходных пакетов. Вам не нужно распространять исходный пакет.
- Apport работает со всем, что упаковано как файл.deb.