Il mio primo ebuild (link) ha richiesto solo un paio d’ore; provo a descrivere quello che ho fatto.
- Ho sistemato l’header dell’ebuild
[code]
# ==========================================================================
# ***************** Sigmalab Portage Overlay (02/26/07) *****************
# ***************** For more info go to http://sigmalab.net *****************
# ==========================================================================
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $inherit eutilsDESCRIPTION=”Disruption Tolerant Networking (DTN)”
HOMEPAGE=”http://www.dtnrg.org”
SRC_URI=”http://www.dtnrg.org/docs/code/${PN}_${PV}.tgz”LICENSE=”Apache-2.0″
SLOT=”0″
KEYWORDS=”~x86″
[/code]
Le varie Keyword sono ben descritte sulla documentazione di gentoo. Ricordare di mettere ~x86 se lo si vuole ridistribuire in quanto indica l’instabilità dell’ebuild - La seconda parte è data dalle dipendenze e dalle possibili use flag:
[code]
IUSE=”oasys”
DEPEND=”>=dev-lang/tcl-8.0.0
>=sys-libs/db-4.2.52_p4-r2″
[/code]
Anche qui nulla di nuovo, in depend la sintassi è la stessa dei package del portage; nel mio caso ho anche specificato la versione esatta, ma potrebbe non essere necessario. Da notare invece che alcune dipendenze possono essere necessarie solo se una specifica flag è attiva in quel caso guardate questo esempio:
[code]
mysql? ( >=dev-db/mysql-3.23.49 )
[/code] - Passiamo ora alle variabili globali
[code]
INSTALLDIR=”/usr/local/bin/”
S=${WORKDIR}/${PN}_${PV}
[/code]
Attenzione solo alcune variabili sono modificabili, altre sono readonly! (vedi qui) - come compilare il pacchetto
[code]
src_compile() {
cd ${S}
./configure -C –verbose || die “configure problem”
emake || die “compile problem”
}
[/code]
Questo codice è utile se usate gli autotools; - e ora la parte difficile installare tutto secondo logica
[code]
src_install() {
emake DESTDIR={D} install || die “install problem”# il demone
dobin daemon/dtnd
keepdir /etc/dtn
insinto /etc/dtn
doins daemon/dtn.conf dtn/dtn.conf# per salvare i bundles e i db
keepdir /var/tmp/dtn
keepdir /var/tmp/dtn/bundles
keepdir /var/tmp/dtn/db# installo le librerie base
keepdir /usr/include/dtn
insinto /usr/include/dtn
doins applib/*.hif use oasys ; then
keepdir /usr/include/dtn/oasys
insinto /usr/include/dtn/oasys
doins oasys/*.h
fiexeinto /usr/local/bin/
doexe apps/dtnperf/dtnperf-client
doexe apps/dtnperf/dtnperf-server
doexe apps/dtnrecv/dtnrecv.1
doexe apps/dtnsend/dtnsend.1for appsname in $(echo “dtnping dtntest dtncp dtncpd dtnmoteproxy dtntunnel dtnrecv dtnsend”);
do
doexe apps/$appsname/$appsname
donedohtml doc/manual/*
dodoc doc/*.txt}
[/code]
Complesso non è vero? Per comprendere i vari comandi nella bibliografia troverete i link a vari articoli che spiegano dettagliatamente ogni comando. Suggerisco di seguire questo ordine per i comandi : demoni, directory necessarie, librerie, compilati, documenti e manuali. In particolare vorrei far notare che il demone viene installato nella directory di default /usr/bin se avesso voluto cambiare la destinazione avrei dovuto ricorrere a into /usr/local/, tenendo presente che da li in poi i vari comandi do* avrebbero preso come root la nuova /usr/local, quindi occhio a quando lo fate. Altro problema lo avrei avuto se avessi voluto creare una cartella specifica per ragruppare i binari all’interno di /usr/local infatti se avessi creato una cartella al suo interno, quanto chiedo con il tab la completazione del testo avrei come risultato valido anche il nome della cartella. - per finire
[code]
pkg_postinst() {
einfo “”
einfo “……..”
einfo “”
}
[/code]
potete comunicare all’utente le informazioni che ritenete necessarie. Oppure esegure comandi di fix dei permessi o cose simili. - A chi ha buon occhio noterà che ancora non ho inserito nessun init.d e conf.d script. Spero di farlo quanto prima.
Per ottenere questo risultato ho consultato in particolare :
- [bfentry id=1 small]
- [bfentry id=2 small]
- [bfentry id=3 small]
- [bfentry id=4 small]