Unterstützung für Nicht-Ubuntu-Pakete hinzufügen

13

Ich lese jetzt seit einer Woche über apport und seine Verwendung. Konnte aber die folgenden Dinge nicht verstehen.

Szenario:

Ich habe eine Anwendung entwickelt und verpackt. Und der Name ist MyApp.deb. Der Name des Binärpakets lautet. MyAppDie Anwendung wird im Pfad installiert /opt/myapplication/bin/MyApp.

Anforderung:

  1. Wenn meine Anwendung abstürzt, möchte ich in der Lage sein, Core Dump zu sammeln.
  2. Bei jedem nachfolgenden Absturz muss ein neuer Absturz erstellt werden, der vorhandene muss jedoch nicht überschrieben werden. Etwas wie automatische Umbenennung mit dem aktuellen Zeitstempel usw. würde mir helfen.
  3. Wenn ich meine Anwendung auf einem Kundencomputer installiere, darf mein Installateur seine systemweiten Parameter nicht ändern. Nehmen wir zum Beispiel an, ich darf das Muster seiner Kerndateigenerierung nicht ändern, weil der Benutzer / Kunde meine Anwendung hassen könnte, da ich seine Systemparameter ohne seine Zustimmung ändern würde.
  4. Ich bin mit dem Pfad der Kerndateigenerierung in Ordnung. Entweder aktuelles Verzeichnis oder/var/crash

Dinge, die ich bis jetzt erforscht habe:

Apport ist ein nettes Dienstprogramm, das die Generierung von Kerndateien ermöglicht. Mit /proc/sys/kernel/core_patternkann ich Core-Dateien formatieren. Dies bietet Flexibilität, um die Core-Dateien in ein vordefiniertes Verzeichnis umzuleiten, Core-Dateien mit pid zu benennen, Dateipfadmuster anzuhängen oder vorab zu beenden usw. Für Nicht-Ubuntu-Pakete muss ich Hooks schreiben, um Core-Dumps (Berichte) zu generieren. . Nach dem Sammeln des hochzuladenden Berichts aufteilen.

Dinge, die ich nicht verstehe:

  1. Ist Apport der, den ich sehen muss? Ich meine, reicht es für meinen Zweck aus? Oder sollte ich mir etwas anderes ansehen?
  2. Unter was für ein Paket fällt meine Bewerbung? Nenne ich es nicht-Ubuntu? 3. Teil? Was ist es? Ich sehe unterschiedliche Terminologien in Dokumenten?
  3. Wie gesagt, MyAppläuft ab /opt/myapplication/bin/MyApp, wo werden dann die Kerndateien generiert? Aktuelle Richtung oder /var/crash? Erkennt Apport Abstürze, die durch Unfälle verursacht wurden /opt? Interpretiert es es?
  4. Wichtige Frage: Wenn ich die Anwendung entwickelt habe und Apport den Bericht in Ubuntu-Repositorys hochlädt, ist dies nicht sinnvoll. Wie kann ich Apport also anweisen, den Bericht an mich zu senden?
  5. Ich bekomme diese Fehlermeldung: executable does not belong to a package, ignoring. Also, was mache ich falsch?
  6. Muss ich ein Quellpaket erstellen, damit apport mein Paket erkennt? Ist es obligatorisch? Ich möchte nur ein Binärpaket erstellen.
  7. Ich habe auch irgendwo in den Dokumenten gesehen, dass Apport erkennt:
    1. Ubuntu-Pakete oder
    2. Launchpad-Anwendungen, aber meine Anwendung ist keine davon. Wie hilft mir Apport im aktuellen Szenario?
Sandeep
quelle
Eine der Einschränkungen des Apports im Moment - Es muss sich um ein Paket im Ubuntu-Repository oder zumindest um ein Projekt auf Launchpad handeln. Ist letzteres eine Option für Sie?
jokerdino
Vielen Dank für die rechtzeitige Antwort und die klare Beantwortung meiner langen Frage. Übrigens habe ich in meinem vorherigen Beitrag versäumt zu erwähnen, dass meine Bewerbung urheberrechtlich geschützt ist. Wir planen, unsere Anwendung auf Ubuntu-Repositories zu hosten. Aber das kann in wenigen Monaten sein. Bis dahin muss ich Kerndateien manuell verwalten.
Sandeep
In welcher Sprache ist die Bewerbung verfasst? Auch Kasse eine Klasse zum Schreiben Apport Paket Haken durchgeführt .
Jokerdino
App in C ++ geschrieben. Die folgenden Zeilen aus dem Link lassen mich verwirrt "<openweek4> FRAGE: Funktionieren Hooks mit Anwendungen von Drittanbietern? Openweek4: Ich bin mir bei dieser Frage eigentlich nicht sicher. Wenn Sie sich den Ubuntuone-Client-Hook ansehen, werden Fehler gemeldet auf Launchpad aber über das Ubuntuone-Projekt. Es könnte also durchaus möglich sein. Allerdings müsste apport in der Lage sein, mit dem entsprechenden Bug-Tracking-System zu kommunizieren. "
Sandeep
Der Autor sagt, dass es für Anwendungen von Drittanbietern möglich sein könnte, apport zu verwenden, um Berichte abzurufen, solange eine Kommunikation zwischen apport und dem Bug-Tracking-System von Drittanbieteranwendungen hergestellt wird. Wie kann das erreicht werden? Wenn dies erreicht werden kann, muss ich nicht darauf warten, dass meine Anwendung bei Ubuntu Repo oder Launchpad registriert wird.
Sandeep

Antworten:

2
  1. Es sieht in der Nähe aus, ist aber möglicherweise nicht das, was Sie brauchen. Automatisch zuweisen changes / proc / sys / kernel / core_pattern. Wenn sich das nicht ändern lässt, hat man ziemlich viel Pech. Andererseits ist apport jetzt in der Ubuntu-Standardinstallation enthalten, sodass praktisch jeder, der Ubuntu verwendet, diesen Parameter bereits geändert hat. Ich kenne auch keine Möglichkeit, apport anzuweisen, mehr als den letzten Absturz einer bestimmten App zu speichern, aber solange jeder Absturz hochgeladen wird, ist dies kein Problem.
  2. Ich würde es als Drittanbieter bezeichnen.
  3. Apport unterstützt ausführbare Dateien, die in / opt installiert sind. Sie müssen einen Hook in / opt / path / to / your / app / share / apport / package-hooks bereitstellen.
  4. Sie können eine benutzerdefinierte Absturzdatenbank im Paket-Hook für Ihr Paket festlegen. Wenn sich Ihre Absturzdatenbank jedoch nicht wie Debbugs oder Launchpad verhält, müssen Sie auch eine benutzerdefinierte Implementierung des Absturzdatenbank-Connectors erstellen. Dies scheint jedoch nicht möglich zu sein, ohne eine Python-Datei außerhalb von / opt zu installieren.
  5. Die ausführbare Datei muss von dpkg installiert werden. Dies bedeutet, dass Sie sie in eine .deb-Datei packen müssen.
  6. Sie müssen ein Quellpaket erstellen, um ein Binärpaket zu erstellen, da Binärpakete aus Quellpaketen erstellt werden. Sie müssen das Quellpaket nicht verteilen.
  7. Apport funktioniert mit allen Dateien, die als .deb-Datei gepackt sind.
Hören Sie auf, der Community Schaden zuzufügen
quelle
Dies scheint eine sehr nützliche Antwort zu sein, lässt jedoch einige Lücken in der Erklärung offen: Was bedeutet "Bereitstellen eines Hakens"? Was bedeutet "Verhalten wie Debbugs oder Launchpad" genau? Hinweise auf Verweise bitte?
BobDoolittle