PKGBUILDER, interessante script per la creazione di PKGBUILD

Stamattina, girovagando senza meta per la rete, ho deciso di passare su AUR per vedere se c’era qualche bella novità; ebbene, non appena entrato, ho dato un’occhiata alla lista dei PKGBUILD appena aggiornati e ho visto un nome interessante svettare al primo posto, come aggiornamento più recente.

pkgbuilder 1.1-1

Mi sono detto “Chissà cosa sarà”, ed in effetti, incuriosito, ho letto la descrizione del pacchetto. Sono rimasto leggermente stupito, perchè recitava questo:

PKGBUILDER is a simple PKGBUILD creation utility.

Credo non ci abbia mai pensato nessuno, fondamentalmente perchè Arch è pensata per Power User e per chi ama la semplicità, a fare una cosa del genere, tuttavia io la trovo strabiliante, e anche un ottimo esempio di bash scripting combinato con zenity.

Lo script è molto semplice come struttura: appena runnato, chiede il nome del pacchetto che intendiamo creare, quindi crea la directory dove piazzare il PKGBUILD chiamandola con lo stesso nome del pacchetto, indi ci chiede informazioni sul contributor e sul mantainer; fatto questo comincia a creare il PKGBUILD secondo le variabili che immettiamo ad ogni suo prompt, come ad esempio l’architettura o l’url del codice sorgente. Poi si arriva a questo:

Figo eh? C’è proprio tutto!

Quì scegliamo accuratamente gli elementi aggiuntivi da aggiungere al nostro PKGBUILD per maggiore completezza e integrazione con Pacman. Una volta fatte le nostre scelte, dovremo fornire i dati riguardo le variabili che abbiamo scelto di includere.

Concluso l’iter “burocratico”, ci troveremo a dover provvedere a fornire allo script l’ultima parte del PKGBUILD, cioè le istruzioni di compilazione.

E quì, che ci metto? :|

Ovviamente lo script non è in grado di eseguire arcani incantesimi, e per quanto si possa automatizzare la procedura di compilazione, tramite ABS, non è comunque possibile scappare dalla funzione build().

In questo riquadro dunque dovremo fornire le istruzioni per la compilazione dei sorgenti; da questo punto in poi penso che lo script possa migliorare ancora per venire incontro a chi di PKGBUILD non è ancora molto pratico. Bisogna infatti sapere bene che si usa fakeroot, ed io includerei anche qualche riga per consigliare all’utente di leggere le Linee Guida per l’impacchettatore.

Beh, che dire, questo tool mi sembra comunque ottimo per chi non ha voglia (come me) di mettersi a buttare giù un PKGBUILD da zero, e non vuole prendere un modello di PKGBUILD come riferimento.

“Si ma… dove lo scarico?” direte voi, e giustamente; lo trovate ovviamente su AUR!

PKGBUILDER’s PKGBUILD

Post correlati:

This entry was posted in Arch, Desktop Environment, Gnome, Informatica, Linux, Programmare, Recensioni. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.
  • telperion

    Ma fatto cosi è, secondo me, assolutamente inutile.
    Serebbe utile se funzionasse tipo, che so, checkinstall o dh_make di debian,
    cioè monitorizzasse una pseudo installazione, o creasse un semplice pkbuild con dipendende
    e build.
    Altrimenti notepad è più che adeguato e in abs trovi esempi a iosa per make cmake python con script install e quant’altro

  • telperion

    Ma fatto cosi è, secondo me, assolutamente inutile.
    Serebbe utile se funzionasse tipo, che so, checkinstall o dh_make di debian,
    cioè monitorizzasse una pseudo installazione, o creasse un semplice pkbuild con dipendende
    e build.
    Altrimenti notepad è più che adeguato e in abs trovi esempi a iosa per make cmake python con script install e quant’altro

  • http://dottorblaster.it/ Bl@ster

    Infatti ho precisato che è da migliorare, e citandomi da solo:

    Beh, che dire, questo tool mi sembra comunque ottimo per chi non ha voglia (come me) di mettersi a buttare giù un PKGBUILD da zero, e non vuole prendere un modello di PKGBUILD come riferimento.

    :)
    e non dimenticare che in dh_make e checkinstall le istruzioni di compilazione le dai sempre tu, non è mai automatica la procedura. Automatico è semmai il processo di creazione della subdirectory debian, che in arch non è necessaria essendo il pacchetto compilato in fakeroot e compresso.
    Comunque trovo anche io che l’aggiunta delle dipendenze, sia di compilazione che di esecuzione, in automatico sarebbe ottima, anche perchè certi pkgbuild non sono fatti in maniera ortodossa da questo punto di vista.

  • http://blaster.netsons.org Bl@ster

    Infatti ho precisato che è da migliorare, e citandomi da solo:

    Beh, che dire, questo tool mi sembra comunque ottimo per chi non ha voglia (come me) di mettersi a buttare giù un PKGBUILD da zero, e non vuole prendere un modello di PKGBUILD come riferimento.

    :)

    e non dimenticare che in dh_make e checkinstall le istruzioni di compilazione le dai sempre tu, non è mai automatica la procedura. Automatico è semmai il processo di creazione della subdirectory debian, che in arch non è necessaria essendo il pacchetto compilato in fakeroot e compresso.

    Comunque trovo anche io che l’aggiunta delle dipendenze, sia di compilazione che di esecuzione, in automatico sarebbe ottima, anche perchè certi pkgbuild non sono fatti in maniera ortodossa da questo punto di vista.

  • Psykopear

    Anch’io mi ero fatto uno script simile per crearmi i PKGBUILD in modo rapido, anche senza l’utilizzo di zenity, tanto è utilizzabilissimo anche semplicemente da shell, ed in effetti può essere pratico per scrivere (o modificare) velocemente un PKGBUILD, anche se alla fine il build() te lo devi scrivere (ovvimente) da solo.

  • Psykopear

    Anch’io mi ero fatto uno script simile per crearmi i PKGBUILD in modo rapido, anche senza l’utilizzo di zenity, tanto è utilizzabilissimo anche semplicemente da shell, ed in effetti può essere pratico per scrivere (o modificare) velocemente un PKGBUILD, anche se alla fine il build() te lo devi scrivere (ovvimente) da solo.

  • http://dottorblaster.it/ Bl@ster

    @Psykopear: Si, ma zenity da un aspetto grafico al tutto, fa più figo :D

  • http://blaster.netsons.org Bl@ster

    @Psykopear: Si, ma zenity da un aspetto grafico al tutto, fa più figo :D

  • telperion

    “e non dimenticare che in dh_make e checkinstall le istruzioni di compilazione le dai sempre tu, non è mai automatica la procedura. Automatico è semmai il processo di creazione della subdirectory debian, che in arch non è necessaria essendo il pacchetto compilato in fakeroot e compresso”
     
    Io non lo dimentico, forse magari tu non hai ben chiaro come funziona dh_make e debuild binary e a cosa serva la cartella debian.
     
     
     

  • telperion

    “e non dimenticare che in dh_make e checkinstall le istruzioni di compilazione le dai sempre tu, non è mai automatica la procedura. Automatico è semmai il processo di creazione della subdirectory debian, che in arch non è necessaria essendo il pacchetto compilato in fakeroot e compresso”
     
    Io non lo dimentico, forse magari tu non hai ben chiaro come funziona dh_make e debuild binary e a cosa serva la cartella debian.
     
     
     

  • http://dottorblaster.it/ Bl@ster

    No scusa, mi sono espresso male per quanto riguarda la directory debian; comunque ribadisco che in arch una feature così non aderirebbe al kiss :)
    Comunque a volte dh_make può anche toppare sulle dipendenze ;)

  • http://blaster.netsons.org Bl@ster

    No scusa, mi sono espresso male per quanto riguarda la directory debian; comunque ribadisco che in arch una feature così non aderirebbe al kiss :)
    Comunque a volte dh_make può anche toppare sulle dipendenze ;)

  • http://opensource2007.netsons.org LuNa

    @blaster: ah si perchè dh_make da quando mette le dipendenze ? :D
    per quanto riguarda il programmino, quoto telperion … non serve a nulla :D

  • http://opensource2007.netsons.org LuNa

    @blaster: ah si perchè dh_make da quando mette le dipendenze ? :D
    per quanto riguarda il programmino, quoto telperion … non serve a nulla :D

  • http://dottorblaster.it/ Bl@ster

    Strano, mi ricordavo me le avesse messe :|
    Probabilmente le avrò messe io a mano e non me le ricordo :)

  • http://blaster.netsons.org Bl@ster

    Strano, mi ricordavo me le avesse messe :|
    Probabilmente le avrò messe io a mano e non me le ricordo :)

  • LuNa

    dh_make praticamente da un sorgente qualsiasi crea una cartella chiamata debian, con dentro tutti i files di controllo necessari a crearti il pacchettino. Non sa assolutamente quali siano le dipendenze, quelle devi conoscerle tu. Ti confondi sicuramente con un sorgente con già preparata (diversi lo fanno) la cartella debian, dove allora potresti aver trovato già indicate le dipendenze
    :)

  • LuNa

    dh_make praticamente da un sorgente qualsiasi crea una cartella chiamata debian, con dentro tutti i files di controllo necessari a crearti il pacchettino. Non sa assolutamente quali siano le dipendenze, quelle devi conoscerle tu. Ti confondi sicuramente con un sorgente con già preparata (diversi lo fanno) la cartella debian, dove allora potresti aver trovato già indicate le dipendenze
    :)

  • http://dottorblaster.it/ Bl@ster

    @LuNa: Ora che mi ricordo le dipendenze per gtk2-engines le ho settate a mano, copiando quelle del pacchetto originale; me lo ricordo perchè ho tirato giù i santi a causa dell’arduo copia-incolla con mouse mezzo scassato.
    Changelog e Control? Non me ne parlare, il duo malefico :lol:

  • http://blaster.netsons.org Bl@ster

    @LuNa: Ora che mi ricordo le dipendenze per gtk2-engines le ho settate a mano, copiando quelle del pacchetto originale; me lo ricordo perchè ho tirato giù i santi a causa dell’arduo copia-incolla con mouse mezzo scassato.

    Changelog e Control? Non me ne parlare, il duo malefico :lol:

  • LuNa

    pacchettizzare debian è difficile. anche rpm (che non conosco) è arcano. con arch e slackware è veramente roba da poco con gli script di build.

  • LuNa

    pacchettizzare debian è difficile. anche rpm (che non conosco) è arcano. con arch e slackware è veramente roba da poco con gli script di build.

  • http://dottorblaster.it/ Bl@ster

    @LuNa: il KISS si fa sentire parecchio :)

  • http://blaster.netsons.org Bl@ster

    @LuNa: il KISS si fa sentire parecchio :)

  • telperion

    dh_make genera il file control che contiene le variabili
    Depends: ${shlibs:Depends}, ${misc:Depends}
    che vengono riempite automaticamente con tutte le dipendenze necessarie, basandosi sulle versioni installate sulla macchina.
    Esempio il mio pacchetto gimp2.5 ha come dipendenze
    Package: gimp2.5
    Version: 2.5.0~Hardy~telperion
    Architecture: i386
    Maintainer: mauro <mc@unknown>
    Installed-Size: 54172
    Depends: libaa1 (>= 1.4p5), libart-2.0-2 (>= 2.3.18), libasound2 (>> 1.0.14), libatk1.0-0 (>= 1.20.0), libbabl-0.0-0, libc6 (>= 2.4), libcairo2 (>= 1.6.0), libdbus-1-3 (>= 1.1.1), libdbus-glib-1-2 (>= 0.74), libexif12, libexpat1 (>= 1.95.8), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libgegl-0.0-0, libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.12.0), libhal1 (>= 0.5.8.1), libice6 (>= 1:1.0.0), libjpeg62, liblcms1 (>= 1.15-1), libmng1 (>= 1.0.3-1), libpango1.0-0 (>= 1.20.1), libpng12-0 (>= 1.2.13-4), libpoppler-glib2 (>= 0.6), librsvg2-2 (>= 2.18.1), libsm6, libtiff4, libwmf0.2-7 (>= 0.2.8.4), libx11-6, libxext6, libxfixes3 (>= 1:4.0.1), libxmu6, libxpm4, libxt6, zlib1g (>= 1:1.2.3.3.dfsg-1)

    e io non ne ho messa una (sarebbe un’impresa folle), ci pensa debuild a fare il lavoro, e questo è bello.
    Ovviamente fuziona bene solo con tradionali autogen/configure make, non funziona con python e altri sistemi  “esotici”.
    L’inferno inizia se devi mettere le mani su debian/rules, dividere in diversi pacchetti il risultato, fare script pre/post installazione, un vero incubo, lì PKGBUILD è estremamete semplice.
    Manca un tool che monitorizza una normale installazione (magari in fakeroot), calcoli le dipendenze e scriva un PKGBUILD “rozzo” ricavato dalle operazioni monitorate, magari poi da perfezionare a mano, quello si che sarebbe utile.
     
     
     

  • telperion

    dh_make genera il file control che contiene le variabili
    Depends: ${shlibs:Depends}, ${misc:Depends}
    che vengono riempite automaticamente con tutte le dipendenze necessarie, basandosi sulle versioni installate sulla macchina.
    Esempio il mio pacchetto gimp2.5 ha come dipendenze
    Package: gimp2.5
    Version: 2.5.0~Hardy~telperion
    Architecture: i386
    Maintainer: mauro <mc@unknown>
    Installed-Size: 54172
    Depends: libaa1 (>= 1.4p5), libart-2.0-2 (>= 2.3.18), libasound2 (>> 1.0.14), libatk1.0-0 (>= 1.20.0), libbabl-0.0-0, libc6 (>= 2.4), libcairo2 (>= 1.6.0), libdbus-1-3 (>= 1.1.1), libdbus-glib-1-2 (>= 0.74), libexif12, libexpat1 (>= 1.95.8), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libgegl-0.0-0, libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.12.0), libhal1 (>= 0.5.8.1), libice6 (>= 1:1.0.0), libjpeg62, liblcms1 (>= 1.15-1), libmng1 (>= 1.0.3-1), libpango1.0-0 (>= 1.20.1), libpng12-0 (>= 1.2.13-4), libpoppler-glib2 (>= 0.6), librsvg2-2 (>= 2.18.1), libsm6, libtiff4, libwmf0.2-7 (>= 0.2.8.4), libx11-6, libxext6, libxfixes3 (>= 1:4.0.1), libxmu6, libxpm4, libxt6, zlib1g (>= 1:1.2.3.3.dfsg-1)

    e io non ne ho messa una (sarebbe un’impresa folle), ci pensa debuild a fare il lavoro, e questo è bello.
    Ovviamente fuziona bene solo con tradionali autogen/configure make, non funziona con python e altri sistemi  “esotici”.
    L’inferno inizia se devi mettere le mani su debian/rules, dividere in diversi pacchetti il risultato, fare script pre/post installazione, un vero incubo, lì PKGBUILD è estremamete semplice.
    Manca un tool che monitorizza una normale installazione (magari in fakeroot), calcoli le dipendenze e scriva un PKGBUILD “rozzo” ricavato dalle operazioni monitorate, magari poi da perfezionare a mano, quello si che sarebbe utile.
     
     
     

  • http://dottorblaster.it/ Bl@ster

    @telperion: Beh uno script che mi mette le dipendenze in automatico è il mio sogno, ma non so se sarebbe aderente al KISS; molto probabilmente si, perchè non si lancia in cose troppo acrobatica.
    Comunque le dipendenze per gtk2-engines le ho dovute mettere a mano causa impicci vari col file di control :lol:
    Poi non voglio ancora addentrarmi nel mondo del packaging multiplo, perchè so che lì si hanno degli incubi e visioni paurose.

  • http://blaster.netsons.org Bl@ster

    @telperion: Beh uno script che mi mette le dipendenze in automatico è il mio sogno, ma non so se sarebbe aderente al KISS; molto probabilmente si, perchè non si lancia in cose troppo acrobatica.

    Comunque le dipendenze per gtk2-engines le ho dovute mettere a mano causa impicci vari col file di control :lol:

    Poi non voglio ancora addentrarmi nel mondo del packaging multiplo, perchè so che lì si hanno degli incubi e visioni paurose.