Supporto di apport per pacchetti non ubuntu


13

Ormai leggo di apport e del suo utilizzo da una settimana. Ma non riuscivo a capire le cose di seguito.

Scenario:

Ho sviluppato un'applicazione e l'ha impacchettata. 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 in modo anomalo, voglio essere in grado di raccogliere core dump.
  2. Ad ogni arresto successivo, deve creare un nuovo arresto, ma non sovrascrivere quello esistente. Qualcosa come rinominare automaticamente il timestamp corrente, ecc. Mi aiuterebbe.
  3. Quando installo la mia applicazione su una macchina del cliente, il mio installatore non deve modificare i suoi parametri di sistema. Ad esempio, non devo cambiare il modello della sua generazione di file core, perché l'utente / cliente potrebbe odiare la mia applicazione in quanto cambierei i suoi parametri di sistema senza il suo consenso.
  4. Sono d'accordo con il percorso della generazione di file core. Directory corrente o/var/crash

Cose che ho esplorato fino ad ora:

Apport è una bella utility che consente generazioni di file core. Usando /proc/sys/kernel/core_patternposso formattare file core. Ciò fornisce flessibilità per reindirizzare i file core a una directory predefinita, denominare i file core con pid, modello di percorso file aggiunto o pre-finito ad esso, ecc. Per i pacchetti non Ubuntu, devo scrivere hook per generare dump core (report) . Apporta dopo aver raccolto il rapporto 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. In quale tipo di pacchetto rientra la mia domanda? Lo chiamo non Ubuntu? 3a parte? che cos'è? Vedo terminologie diverse nei documenti?
  3. Come ho già detto, MyAppviene eseguito /opt/myapplication/bin/MyApp, quindi dove verranno generati i file core? Dir corrente o /var/crash? Apport rileva gli arresti anomali causati da trigerrate /opt? Lo interpreta?
  4. Domanda importante: se ho sviluppato l'applicazione e se Apport carica il report nei repository Ubuntu, non ha senso. Quindi, come posso dire ad Apport di inviarmi il rapporto.
  5. Ottengo questo errore: executable does not belong to a package, ignoring. Quindi cosa sto sbagliando?
  6. Per apport per riconoscere 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 Ubuntu o
    2. Applicazioni Launchpad ma la mia applicazione non è nessuna di queste. In che modo Apport mi aiuta nello scenario attuale?

Una delle limitazioni di Apport in questo momento - Deve essere un pacchetto nel repository di Ubuntu o almeno un progetto su Launchpad. Quest'ultima è un'opzione per te?
jokerdino

Grazie per la risposta tempestiva e la risposta con chiarezza per la mia lunga domanda. A proposito, nel mio post precedente mi è mancato ricordare che la mia applicazione è proprietaria. Stiamo programmando di ospitare la nostra applicazione su repository ubuntu. Ma potrebbero essere tra qualche mese. Fino ad allora devo gestire manualmente i file core.
Sandeep,

In quale lingua è scritta l'applicazione? Controlla anche una classe condotta per scrivere hook del pacchetto Apport .
jokerdino

App scritta in C ++. Le seguenti righe del link mi lasciano confuso "<openweek4> DOMANDA: gli hook aggiunti funzioneranno con applicazioni di terze parti? Openweek4: In realtà non sono davvero sicuro di questa domanda. Se guardi l'uncinetto ubuntuone-client - i bug vengono segnalati su Launchpad ma sul progetto Ubuntuone. Quindi potrebbe benissimo essere possibile. Tuttavia, apport dovrebbe essere in grado di comunicare con l'appropriato sistema di tracciamento dei bug. "
Sandeep,

L'autore afferma che potrebbe essere possibile che le applicazioni di terze parti facciano uso di Appi per ottenere report purché sia ​​stabilita una comunicazione tra Appi e il sistema di tracciamento dei bug delle applicazioni di terze parti. Come si può ottenere questo? Se ciò è possibile, non devo attendere che la mia applicazione venga registrata con repository di Ubuntu o launchpad.
Sandeep,

Risposte:


2
  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, apport è ora installato nell'installazione predefinita di Ubuntu, quindi praticamente tutti quelli che usano Ubuntu hanno già cambiato quel parametro. Inoltre, non sono a conoscenza di alcun modo per dire a Appi di tenere più del crash più recente di una particolare app, ma fintanto che ogni crash viene caricato, non è un problema.
  2. Mi riferisco ad esso come di terze parti.
  3. Apport supporta gli eseguibili installati in / opt. Dovrai fornire un hook in / opt / path / to / your / app / share / apport / package-hooks.
  4. È possibile impostare un database crash personalizzato nel gancio del pacchetto 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 di crash, che non sembra che possa essere fatto senza installare un file Python al di fuori di / opt.
  5. L'eseguibile deve essere installato da dpkg, il che significa che è necessario impacchettarlo in un file .deb.
  6. È necessario creare un pacchetto sorgente per creare un pacchetto binario, poiché i pacchetti binari vengono creati dai pacchetti sorgente. Non è necessario distribuire il pacchetto sorgente.
  7. Apport funziona con qualsiasi pacchetto impacchettato come file .deb.

Sembra che potrebbe essere una risposta molto utile, ma lascia diverse lacune nella spiegazione: cosa comporta "fornire un gancio"? Che cosa significa esattamente "comportarsi come debbugs o launchpad"? Puntatori a refs per favore?
BobDoolittle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.