GUFICon #5 Milano, 2/3 Ottobre 2004



Documenti analoghi
Manuale utente Volta Control

Licenza per sito Manuale dell amministratore

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Licenza per sito Manuale dell amministratore

CREAZIONE DI UN AZIENDA

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Terza lezione: Directory e File system di Linux

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

ALLEGATO 1. Dichiarazione iniziale per il test e il collaudo della rete telematica: Archivio da consegnare a seguito dell aggiudicazione provvisoria.

Product Shipping Cost Guida d'installazione ed Utilizzo

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

Punto Print Il programma per stampare. Documentazione Tecnica

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

INFO TECNICA SATO Italia

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

Stream EDitor (sed) sed NON modifica l'input 2. L'output viene inviato allo standard output e puo' essere rediretto

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo)

Edizione 1 IT. Nokia e Nokia Connecting People sono marchi registrati di Nokia Corporation

WinRAR: Guida alla compressione dei files

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

Versione 7.0 Taglie e Colori. Negozio Facile

del 30 novembre 2010

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

2 - Modifica Annulla ANNULLA TOPOGRAFICO ANNULLA TOPOGRAFICO MULTIPLO FIGURA 2.1

Esercitazione n. 10: HTML e primo sito web

Il software del PC. Il BIOS

Scuola Superiore Sant Anna. Progetto parte Unix. AA : Distributed File Repository

Di seguito vengono elencati i passi logici che verranno affrontati dalla procedura Comunicazione Unica:

Capitolo 1 Installazione del programma

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

FAQ RISPOSTE A DOMANDE FREQUENTI

I Preferiti. Elenco dei Preferiti

MANUALE UTENTE UTILIZZO MODULO FILE-STORAGE DI ACS - CANALE AMBIENTE PROVINCIA DI TORINO

MANUALE PARCELLA FACILE PLUS INDICE

Eclipse e Subversion

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

SOMMARIO... 3 INTRODUZIONE...

Installazione LINUX 10.0

MANUALE UTENTE Fiscali Free

2010 Ing. Punzenberger COPA-DATA Srl. Tutti i diritti riservati.

e/fiscali - Rel e/fiscali Installazione

FITS UPLOAD. Software di upload automatico file di immagini astronomiche Versione 1.2

ImporterOne Manuale Export Plugin Prestashop

Outlook Plugin per VTECRM

Archivio CD. Fondamenti di Programmazione

Iniziamo la panoramica sul funzionamento dell'svn sulla suite S.A.

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Servizio di backup dei dati mediante sincronizzazione

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Introduzione a Dev-C++

4.1 FAX Sollecito consegne via (Nuova funzione)

Tale attività non è descritta in questa dispensa

Guida Software GestioneSpiaggia.it

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Studi di Settore. Nota Operativa 22/4/2013

BDCC : Guida rapida all utilizzo

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

Acronis License Server. Manuale utente

LA RICLASSIFICAZIONE DEI SALDI CONTABILI CON MICROSOFT ACCESS 2007

2 - Modifica Annulla Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1

Aggiornare applicazioni virtualizzate con App-V

Installazione MS SQL Express e utilizzo con progetti PHMI

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

ISTRUZIONI PER L UTILIZZO DELLA SCHEDA INFORMATIZZATA E MODALITA DI INVIO DEI DATI - L. R. 162/98 PROGRAMMA

Manuale Fornitore E-Vendor

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

6 BILANCI E NOTA INTEGRATIVA

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

Guida Operativa Programma Pestalozzi

MANUALE D USO DELLA PIATTAFORMA ITCMS

Come importare le foto senza utilizzare una fotocamera 2

Scheda operativa Versione rif c00. Libro Inventari

Panoramica: che cosa è necessario

Modalità di recupero dati anagrafici dal programma S.I.S.S.I.

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Guida in linea di Websense Secure Messaging

Pickup in Store v Guida d'installazione ed Utilizzo

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

CONFIGURAZIONE E GESTIONE DEI DATABASE (rev. 1.1)

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

I package: librerie sw in R

Introduzione. Installare EMAS Logo Generator

Il comando Make: : uno strumento per la compilazione ed esecuzione di software applicativo. A. Murli - Cacolo Scientifico a.a.

TNT Pro Guida d'installazione ed Utilizzo

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link:

Gestione dei documenti e delle registrazioni Rev. 00 del

Calendar: pianificazione, inviti, allegati e stampa

Installazione del Software. per lo Sviluppo di Applicazioni Java

JOOMLA & I PROJECT BUILD AUTOMATION

File Server Resource Manager (FSRM)

per interventi strutturali di rafforzamento locale o di miglioramento sismico, - art. 2, comma 1, lettere b) e c) -

BACKUP APPLIANCE. User guide Rev 1.0

DevC++ vers Manuale d uso

Prova Finale Controllo delle versioni

Qui Pago (Key Client/CartaSì) Guida d'installazione ed Utilizzo

Manuale d uso del Gestionale PDD

15 operazioni con winzip 8.1

Transcript:

Creare un port per FreeBSD GUFICon #5 Milano, 2/3 Ottobre 2004 Filippo Natali filippo.natali@widestore.net Creare un port per FreeBSD p.1/20

I ports di FreeBSD Offrono un sistema semplice di gestione dei processi di installazione e aggiornamento delle applicazioni Comprendono oltre 11000 applicazioni suddivise in diverse categorie E possibile installare le applicazioni partendo dal sorgente oppure utilizzando pacchetti precompilati L albero dei ports viene costantemente aggiornato Chiunque puo contribuire creando un port o adottando un port non mantenuto Creare un port per FreeBSD p.2/20

Struttura di un port Makefile Contiene informazioni sul port (maintainer, categoria, commento, etc) e le istruzioni necessarie per lo scaricamento dei sorgenti, la compilazione e l installazione del port distinfo Contiene la dimensione e l hash MD5 dei files da scaricare (DISTFILES) pkg-descr Descrizione sintetica del port, puo contenere un riferimento all autore o alla pagina web dell applicazione pkg-plist Lista dei files e delle directories installati dal port pkg-message Informazioni addizionali sull installazione o utilizzo del port, in genere viene stampato dopo l installazione files Directory che contiene patch o altri files necessari al port* pkg-[de]install Scripts lanciati prima e dopo la [de]installazione del package binario* pkg-req Script lanciato del package per determinare se debba essere [de]installato* *non obbligatori Creare un port per FreeBSD p.3/20

Come si crea un port(1) Individuare un applicazione che non sia compresa nei ports, forse la parte piu difficile :) Scaricare il sorgente e scompattarlo in una directory di prova Tener traccia di ogni modifica effettuata per compilare/installare l applicazione e (se possibile) creare una lista dei files/directory installati Creare la directory del port ed il Makefile, mettendo eventuali patch (create con diff(1)) nella directory files Creare distinfo con "#make makesum" (verranno scaricati i DISTFILES se non presenti) Creare pkg-plist con i dati del punto 2. oppure tramite uno script (semi)automatico Creare un port per FreeBSD p.4/20

Come si crea di un port(2) Creare pkg-descr Testare il port Ri-testare il port, probabilmente ci e sfuggito qualcosa Inviare un problem report per fare includere il port nel tree ufficiale Mantenerlo aggiornato Creare un port per FreeBSD p.5/20

Makefile(1) # New ports collection makefile for: nc6 # Date created: 30 May 2002 # Whom: Filippo Natali <filippo@widestore.net> # # $FreeBSD$ # PORTNAME= nc6 PORTVERSION= 0.5 PORTREVISION= 3 CATEGORIES= net ipv6 MASTER_SITES= ftp://ftp.deepspace6.net/pub/ds6/sources/nc6/ \ http://ftp.deepspace6.net/pub/ds6/sources/nc6/ MAINTAINER= filippo@widestore.net COMMENT= Netcat clone with IPv6 support Creare un port per FreeBSD p.6/20

Makefile(2) MAN1= nc6.1 USE_ICONV= yes GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ LDFLAGS="-L${LOCALBASE}/lib" CONFIGURE_TARGET= --target=${machine_arch}-unknown-freebsd${osrel}.if!defined(without_nls) USE_GETTEXT= yes PLIST_SUB+= NLS="".else CONFIGURE_ARGS+=--disable-nls PLIST_SUB+= NLS="@comment ".endif.include <bsd.port.mk> Creare un port per FreeBSD p.7/20

Makefile - dipendenze LIB RUN BUILD FETCH EXTRACT PATCH Specifica le shared libraries necessarie al programma, ad es: LIB_DEPENDS= jpeg.9:${portsdir}/graphics/jpeg:install Eseguibili o files necessari a runtime: RUN_DEPENDS= ${ZOPEBASEDIR}/${ZOPEPRODUCTDIR}CMFDefault/ init.py: \ ${PORTSDIR}/www/zope-cmf \ pdftohtml:${portsdir}/textproc/pdftohtml Eseguibili o files necessari per il build del port, specificati come in RUN_DEPENDS Eseguibili o files necessari per scaricare i DISTFILES. Eseguibili o files necessari per scompattare i DISTFILES, da utilizzare se il formato dell archivio non e gzip (default), zip (USE_ZIP) o bzip2 (USE_BZIP2) Eseguibili o files necessari per applicare patch. DEPENDS Da utilizzare se la dipendenza non ricade nei casi sopra elencati Creare un port per FreeBSD p.8/20

Makefile - altre variabili(1) DISTNAME Nome del port o del file dell applicazione, utilizzato per generare WRKSRC e DISTFILES (default: ${PORTNAME}-${PORTVERSION}) EXTRACT SUFX Suffisso degli archivi che contengono l applicazione (default:.tar.gz) DISTFILES Nome del file (o dei files) che contengono l applicazione (default: ${DISTNAME}${EXTRACT_SUFX}) WITH[OUT] * Variabili utilizzate per selezionare opzioni di compilazione/installazione, standard (definite in bsd.*.mk) o specifiche del port. Normalmente si controlla solo se le variabili sono definite. Esempi: WITH_OPTIMIZED_CFLAGS, WITHOUT_GUI, WITH_GTK2 In genere vengono controllate con:.if defined(nomevariabile)....endif Creare un port per FreeBSD p.9/20

Makefile - altre variabili(2) OPTIONS Permette di impostare le variabili WITH_* attraverso un menu autogenerato, ad es: OPTIONS= EXAMPLES "install example files" off \ HTMLMAN "install man pages in HTML format" off genera un menu che permette di impostare interattivamente WITH_EXAMPLES e WITH_HTMLMAN (off di default). Le opzioni impostate da menu vengono memorizzate in /var/db/ports/[nomeport]/options per successivi builds e possono essere modificate con "#make config". Le seguenti variabili vengono utilizzate in presenza di licenze restrittive: NO PACKAGE Impedisce la creazione del package NO CDROM Impedisce l inclusione nei CDROMs di FreeBSD RESTRICTED Impedisce il mirroring dei DISTFILES. Creare un port per FreeBSD p.10/20

Targets principali fetch Se i DISTFILES non sono presenti in DESTDIR, verranno scaricati da MASTER_SITES attraverso il comando FETCH e copiati in DESTDIR. Viene eseguito un controllo di integrità (MD5) e dimensione dei DISTFILES (distinfo). extract I files vengono estratti nella sottodirectory WRKDIR (default: work) patch Se sono stati definiti dei PATCHFILES, vengono scaricati ed applicati. Vengono poi applicati (in ordine alfabetico) tutti i files denominati patch-* all interno di PATCHDIR (default: files) configure Se esiste, viene eseguito scripts/configure. Se è definito HAS_CONFIGURE o GNU_CONFIGURE, viene eseguito WRKSRC/configure. Se è definito USE_IMAKE, viene eseguito XMKMF build viene eseguito il build del port all interno di WRKSRC. Se e definito USE_GMAKE, viene utilizzato GNU Make, altrimenti viene utilizzato il Make di sistema. E possibile ridefinire ciascun target (ad es: do-install) e definire azioni da compiere prima o dopo ciascun target (ad es: pre-install, post-install). Prima di eseguire ciascun target, vengono verificate e soddisfatte eventuali dipendenze. Creare un port per FreeBSD p.11/20

pkg-descr Netcat 6 is a netcat clone with IPv6 support. It is designed to be tiny, extensible, and elegant, and it makes use of the new extended BSD socket APIs. Author: Mauro Tortonesi <mauro@deepspace6.net> WWW: http://www.deepspace6.net Creare un port per FreeBSD p.12/20

Creazione di pkg-plist(1) Se i files e le directory create sono molte, e possibile creare pkg-plist con i seguenti comandi: Creare una dir temporanea contenente il tree in cui verranno installato il port e le relative dipendenze: # mkdir /var/tmp/nomeport # mtree -U -f /etc/mtree/bsd.tipo\_di\_port.dist -d -e -p \ /var/tmp/nomeport # make depends PREFIX=/var/tmp/nomeport Creare un file contenente il tree appena installato: # (cd /var/tmp/port-name && find -d * -type d) sort > OLD-DIRS Creare pkg-plist vuoto: # touch pkg-plist Installare il port nella dir temporanea ed aggiungere i files a pkg-plist: # make install PREFIX=/var/tmp/nomeport # (cd /var/tmp/port-name && find -d * \! -type d) sort > pkg-plist Creare un port per FreeBSD p.13/20

Creazione di pkg-plist(2) Aggiungere le directory create dal port: #(cd /var/tmp/port-name && find -d * -type d) sort \ comm -13 OLD-DIRS - sort -r sed -e s#ˆ#@dirrm # >> pkg-plist Se una directory e condivisa di piu ports, potrebbe contenere files che non appartengono al port corrente, quindi per evitare che @dirrm dia errore cercando di rimuovere una dir non vuota si utilizza: @unexec rmdir %D/share/locale/it 2>/dev/null true Alternativamente e possibile utilizzare lo script /usr/ports/tools/scrips/plist. Dopo aver installato il port in una dir temporanea come in precedenza, lanciare: # /usr/ports/tools/scripts/plist -Md -m \ /etc/mtree/bsd.tipo_di_port.dist \ /var/tmp/tipo_di\port > pkg-plist In entrambi i casi pkg-plist deve essere controllato e sistemato "a manina". Creare un port per FreeBSD p.14/20

Creazione di pkg-plist(3) A volte e necessario includere elementi in pkg-plist in base alle opzioni con cui e stato compilato il port. Per farlo basta utilizzare %%VAR%%, dove VAR e il nome della variabile. Alcune variabili sono standard, come ad esempio %%OSREL%%, %%PERL_VER%%, %%PORTDOCS%%. Altre possono essere specificate nel Makefile tramite PLIST_SUB= VAR=VALUE. Ad esempio per rendere opzionale il native language support si puo utilizzare: Nel Makefile:.if!defined(WITHOUT_NLS)... PLIST_SUB+= NLS="".else... PLIST_SUB+= NLS="@comment ".endif in pkg-plist: %%NLS%%share/locale/de/LC_MESSAGES/whois.mo %%NLS%%share/locale/el/LC_MESSAGES/whois.mo... Creare un port per FreeBSD p.15/20

Package naming convention I nomi dei packages devono rispettare la seguente forma: [language[ region]]-name[[-]compiled.specifics]-version.numbers Il nome del package e definito da alcune variabili (ridefinibile nel Makefile) nel seguente modo: ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION} In particolare devono essere rispettate le seguenti regole: L identificativo del linguaggio deve essere di due lettere e impostato in PKGNAMEPREFIX La prima lettera del nome deve essere minuscola, il resto puo contenere lettere maiuscole Se il port puo essere compilato con impostazioni di default hardcoded, devono essere specificati come -compiled.specifics in PKGNAMESUFFIX La versione puo essere composta da caratteri alfanumerici separati da punti e non puo contenere il carattere - Altre variabili che (se definite) fanno parte del nome del package sono PORTREVISION e PORTEPOCH, ad esempio: Applicazione PORTNAME PORTVERSION PORTREVISION PACKAGE nc6-0.5 nc6 0.5 3 nc6-0.5_3 Creare un port per FreeBSD p.16/20

Testare il port Una volta creato il port, e bene testarlo prima di inviare un pr per l inclusione nel tree. Supposto che il port venga compilato e installato correttamente, verificare: che pkg-plist contenga tutti i files installati dal port e solamente quelli. che vengano rimosse tutte le directories create dal port che il port possa essere reinstallato piu volte con make reinstall La sequenza raccomandata per testare un port e la seguente: 1 make install 2 make package 3 make deinstall 4 pkg_add nomepacchetto 5 make deinstall 6 make reinstall 7 make package devel/portlint e il tool solitamente utilizzato per testare la correttezza del port. Creare un port per FreeBSD p.17/20

Il problem report I nuovi ports (o le modifiche a quelli esistenti) devono essere sottoposti ai committers affinche vengano inclusi nel tree ufficiale. A tale scopo e necessario creare un problem report ed inviarlo al Problem Report Management System (GNATS). Di tutto questo si occupa l utility send-pr(1): Synopsis: [NEW PORT] categoria/nomeport Priority: low Category: ports Class: change-request Description: descrizione breve del port Fix: <risultato di shar find portdirectory > Nel caso si debba aggiornare un port esistente: Synopsis: [MAINTAINER UPDATE] categoria/nomeport Class: maintainer-update Fix: <diff e/o files da includere/cancellare> Se i files da allegare superano i 20k, devono essere compressi e codificati con uuencode(1) NON allegare la directory work, i distfiles o il package!!!! Creare un port per FreeBSD p.18/20

Alcuni suggerimenti Utilizzare il piu possibile macro e variabili di bsd.port.mk Lavorare sempre all interno di WRKDIR Non aggiungere nulla dopo.include <bsd.port.mk>, se necessario utilizzare bsd.port.pre.mk/bsd.port.post.mk Usare tab per indentare Rispettare il filesystem, in particolare il sistema base Rispettare variabili importanti (CC, CXX, CFLAGS, LDFLAGS) evitando di ridefinirle Eliminare tutto quello che non serve e solamente quello (attenzione ai files di configurazione!) Creare un port per FreeBSD p.19/20

Riferimenti FreeBSD Porter s Handbook http://www.freebsd.org/doc/en_us.iso8859-1/books/porters-handbook /usr/ports/mk/*, in particolare bsd.port.mk Ogni port e un esempio... http://www.freshports.org Le mailing lists di FreeBSD (freebsd-ports@, cvs-ports@...) The FreeBSD Port Building Cluster: http://pointyhat.freebsd.org The FreeBSD Port Distfile Survey: http://people.freebsd.org/ fenner/portsurvey The FreeBSD Ports Monitoring System: http://portsmon.firepipe.net Current FreeBSD problem reports: http://www.freebsd.org/cgi/query-pr-summary.cgi Creare un port per FreeBSD p.20/20