2015-08-23 37 views
14

La domanda originale, Packaging Go application for Debian, è stata presentata più di tre anni fa, quando Go stava collegando staticamente gli eseguibili.Packaging Vai 1.5 applicazioni per sistemi di tipo Debian

Ora, con il nuovo Go 1.5 Release, il cui release note dice,

Changes to the linker enable distributing Go packages as shared libraries to link into Go programs, and building Go packages into archives or shared libraries that may be linked into or loaded by C programs

mi sono diretto al Debian GoPackaging wiki, ma solo per scoprire che non è stato aggiornato per Go 1.5 ancora, forse il wiki non è mantenuto, o forse no, ma,

Voglio solo sapere, se voglio impacchettare uno strumento che non dipende da nient'altro che dai pacchetti Go ufficiali, come dovrei approfittare delle librerie condivise, invece di costruire la mia app in un gigantesco eseguibile collegato staticamente?

So che la risposta ufficiale potrebbe richiedere un po 'di tempo, ma posso aspettare.

Grazie alla risposta di Braiam, mi sono spostato un po 'oltre.

  • ho seguito il blog al passo head -100 debian/**/*, ma la mia uscita è completamente diverso dal blog di. Il mio è solo il seguente. Qualcuno sa perché e come risolvere?

    $ head -100 debian/**/* 
    3.0 (quilt) 
    
  • ho cercato di correre gbp buildpackage --git-pbuilder ma ha urtato errore:

    gbp:info: Building with (cowbuilder) for sid 
    Base directory /var/cache/pbuilder/base.cow does not exist 
    gbp:error: 'git-pbuilder' failed: it exited with 1 
    
  • ho controllato e verificato che ho già cowbuilder & pbuilder installati:

    ii cowbuilder amd64 pbuilder running on cowdancer 
    ii pbuilder all personal package builder for Debian packages 
    

Cosa c'è sbagliato? Questa cosa pbuilder è nuova per me come I build Debian/Ubuntu Package with Docker.

+4

Penso che Debian abbia bisogno di risolvere questo problema: supponendo che passino al collegamento dinamico, immagino che aggiungano un pacchetto Go stdlib e si costruisca contro quella versione di stdlib e si faccia una dipendenza dal proprio .deb. Se hai bisogno di 1.5 per costruire (o semplicemente lo vuoi per qualsiasi ragione) e Debian non lo ha adottato o non ha scritto regole per questo, non sono sicuro di quello che fai. – twotwotwo

+2

Non è chiaro se si può ancora contare su di esso: sembra che Debian unstable sia ancora in 1.4.2. Ubuntu è aggiornato a 1.5rc1 in wily, ma non installa una versione di libreria condivisa della lib standard, quindi probabilmente dovrai dipendere dal collegamento statico ancora per un po '. –

+1

Aggiunge un ulteriore livello ma [godeb] (https://github.com/niemeyer/godeb) funziona abbastanza bene per me. Almeno ti lascia in controllo. – zoliton

risposta

1

Il metodo più semplice è utilizzare dh-make-golang e verificare/correggere i file generati automaticamente. In caso contrario, è necessario seguire Debian Packaging Guide e creare la directory debian/* e modificare il file di controllo e delle regole in match the examples.

+0

@xpt hai già creato un pacchetto debian? dh-golang helper è solo un pezzo di, beh, l'intera procedura di confezionamento. Raccomando invece di utilizzare debuild (aggiungendo il pacchetto dh-golang alle dipendenze di build).Se mi dici cosa stai cercando di creare il pacchetto di, potrei darti un consiglio più preciso. – Braiam

+0

Sarebbe fantastico, grazie mille @ Braiam. Sì, gestisco personalmente molti pacchetti Debian, due dei quali sono nel repository ufficiale di Debian. Iniziamo con https://github.com/suntong/ffcvt/, che non richiede alcuna lib di terze parti o la sua (come https://github.com/suntong/easygen). Grazie! – xpt

+0

@xpt Ho fatto un ramo molto semplice con la directory debian qui https://github.com/braiam/ffcvt/tree/debian, controlleremo easygen ora. – Braiam