Supporto di Apport per pacchetti non ubuntu

Ho letto di apport e il suo utilizzo per una settimana ormai. Ma non poteva capire le cose di sotto.

Scenario:

Ho sviluppato un’applicazione e l’ho confezionata. E il suo nome è MyApp.deb . Il nome del pacchetto binario è MyApp . L’applicazione è installata nel percorso /opt/myapplication/bin/MyApp .

Requisiti:

  1. Quando la mia applicazione si arresta, voglio essere in grado di raccogliere il core dump.
  2. In ogni crash successivo, deve creare un nuovo crash, ma non sovrascrivere quello esistente. Qualcosa come la rinomina automatica con il timestamp attuale, ecc. Mi aiuterebbe.
  3. Quando installo la mia applicazione su un computer del cliente, il mio installatore non deve modificare i suoi parametri di sistema. Per esempio, non devo cambiare il modello della sua generazione di file di base, perché l’utente / cliente potrebbe odiare la mia applicazione in quanto cambierei i suoi parametri di sistema senza il suo consenso.
  4. Sto bene con il percorso di generazione del file principale. Una directory corrente o /var/crash

Cose che ho esplorato fino ad ora:

Apport è una bella utility che abilita le generazioni di file core. Usando /proc/sys/kernel/core_pattern posso formattare i file core. Ciò fornisce la flessibilità per redirect i file core in una directory predefinita, denominare i core file con pid, il percorso del file aggiunto o prep-ended, ecc. Per i pacchetti non Ubuntu, devo scrivere hook per generare core dump (report) . Apportare dopo aver raccolto il report che verrà caricato.

Cose che non capisco:

  1. Apport è quello che devo guardare? Voglio dire, è sufficiente il mio scopo? O dovrei guardare qualcos’altro?
  2. Che tipo di pacchetto cade sotto la mia domanda? Lo chiamo non-ubuntu? Terza parte? che cos’è? Vedo terminologie diverse nei documenti?
  3. Come accennato, MyApp viene eseguito da /opt/myapplication/bin/MyApp , quindi dove verranno generati i file core? Dir attuale o /var/crash ? Apport rileva gli arresti anomali generati da /opt ? Lo interpreta?
  4. Domanda importante: se ho sviluppato l’applicazione e se Apport carica il rapporto sui repository di Ubuntu, non ha senso. Quindi, come posso dire a Apport di inviarmi il rapporto.
  5. Ottengo questo errore: l’ executable does not belong to a package, ignoring . Quindi cosa sto sbagliando?
  6. Perché il riconoscimento riconosca il mio pacchetto, devo renderlo un pacchetto sorgente? È obbligatorio? Voglio solo creare un pacchetto binario?
  7. Ho anche visto da qualche parte nei documenti che Apport riconosce:
    1. Pacchetti di Ubuntu o
    2. Applicazioni del launchpad ma la mia applicazione non è nessuna di queste. Quindi, come mi aiuta Apport nello scenario attuale?

  1. Sembra vicino, ma potrebbe non essere quello che ti serve. Apport cambia automaticamente / proc / sys / kernel / core_pattern. Quindi se questo non può essere cambiato, sei praticamente sfortunato. D’altra parte, l’apport è nell’installazione di Ubuntu predefinita ora, quindi praticamente chiunque usi Ubuntu ha già quel parametro cambiato da esso. Inoltre, non sono a conoscenza di alcun modo per dire ad apport di mantenere più del crash più recente da una particolare app, ma fino a quando ogni crash viene caricato, non è un problema.
  2. Mi riferirei a terzi.
  3. Apport supporta gli eseguibili installati in / opt. Dovrai fornire un hook in / opt / path / to / your / app / share / apport / package-hooks.
  4. È ansible impostare un database degli arresti anomali personalizzato nel pacchetto-hook per il pacchetto. Ma se il tuo database di crash non si comporta come debbugs o launchpad, dovrai anche creare un’implementazione personalizzata del connettore del database degli arresti anomali, che non sembra possa essere eseguita senza installare un file python al di fuori di / opt.
  5. L’eseguibile deve essere installato da dpkg, il che significa che è necessario comprimerlo in un file .deb.
  6. Devi creare un pacchetto sorgente per creare un pacchetto binario, perché i pacchetti binari vengono creati dai pacchetti sorgente. Non è necessario distribuire il pacchetto sorgente.
  7. Apport funziona con qualsiasi cosa pacchettizzata come un file .deb.