It:HOWTO: Community Repository

From Sabayon Wiki
Jump to: navigation, search
i18n: en it


Community Repository - Creare un proprio repository personalizzato

Stop.png
La seguente guida implica l'utilizzo del package manager Portage di Gentoo per l'installazione dei propri pacchetti personalizzati.

La modifica,l'aggiunta o la rimozione delle USEFLAGS nei pacchetti diverse da quelle proposte dai repository ufficiali non sono ufficialmente supportate.

L'utilizzo di Portage è consigliato e rivolto ad utenti esperti o con conoscienze minime sulla compilazione in ambiente Gentoo.


Sabayon permette di installare e gestire localmente o in una rete , interna od esterna ,dei propri repositories indipendenti da quelli ufficiali.

Questo permette all'utente di poter gestire indipendentemente dai canali ufficiali la propria distribuzione di pacchetti con features aggiuntive che non sono presenti nelle versioni ufficiali dei repositories della distribuzione.

La seguente guida fa riferimento ad una installazione minimale di Sabayon , ma è possibile operare anche in un ambiente Gentoo (Entropy deve essere installato). E' possibile operare anche in un ambiente chroot (Sabayon o Gentoo) da una distribuzione qualsiasi (Ubuntu,Debian etc. purchè tutti i tool necessari siano installati (generalmente riconoscibili come build-essentials , fare riferimento alla documentazione della distribuzione in uso)


Configurazione Server

Per la configurazione del nostro Server si necessita del pacchetto sys-apps/entropy-server ; installiamolo

SabayonServer > # equo i entropy-server 
SabayonServer > # cp /etc/entropy/server.conf.example /etc/entropy/server.conf

Ad installazione completata , si editi il file /etc/entropy/server.conf . Il file è ampliamente documentato per ulteriori opzioni, sono necessarie poche modifiche basilari per abilitare il repository

In particolare :

Community Mode

 community-mode = enable


Default Repository

E' il nome del repository dove verranno aggiunti i pacchetti . Può contenere solo caratteri ASCII , punti (.) , trattini (-) e (_)

default-repository = myown


Repository

E' la stringa principale che caraterizza la configurazione del proprio repository.Essa consiste in tre campi

  • Nome Repository - Il nome del repository nella stessa forma presentata in default-repository.
  • Descrizione Repository - Una descrizione del repository la quale verrà visualizzata dai client durante l'aggiornamento.
  • URI(s) - I link del server che ospita il repository. Il tipo di collegamento dipende dal tipo di server.

Nel caso di FTP e HTTP(S) WebDAV , semplicemente : ftp://user:[email protected]/percorso/percorso

Nel caso di collegamento SSH è leggermente diverso : ssh://[email protected]:percorso/percorso .

E' consigliato settare ssh-agent altrimenti entropy-server chiederà la password molte volte.

Nel caso si utilizzi un repository locale , utilizzare file:// o file:///

Nell'esempio il repository myown viene installato nella macchina locale in /home/repo , utilizzando il protocollo file:/// ,

repository = myown|Descrizione Repository|file:///home/repo/

Ecco alcuni esempi :

Accesso al repository locale file:/// e su un server ftp://

repository = myown|Descrizione Repository|ftp://<utente_ftp>:<password_utente_ftp>@mioserver.com/public/myown

Accesso al repo locale file:/// e su un server web con accesso ssh

repository = myown|Descrizione Repository|file:///home/repo/  ssh://<utente>@<server>:~/public_html/myown

E' possibile aggiungere più di un repository semplicemnete aggiungendo ulteriori righe oppure con un unico comando eit :

 eit remote add -h
usage: eit remote add [-h] [--desc <description>]
                      <repository> <uri> [<uri> ...]

positional arguments:
  <repository>          repository id
  <uri>                 repository uri

optional arguments:
  -h, --help            show this help message and exit
  --desc <description>  repository description

eit remote add --desc "Descrizione Repository" myown file:///home/repo/

/etc/entropy/repositories.conf.d

Qui è possibile configurare lato client il repository ; questo permetterà di condividere con altri utenti il file di configurazione per permettere il solo aggiornamento ed il download dei pacchetti . Non verrà inserito alcun pacchetto nel repository.Di default è disabilitato ed è possibile impostarlo anche nel server utilizzato per la compilazione.

Come per i file di configurazione dei repository ufficiali , il file che comincia con _ è considerato come repository inattivo.

Esempio per myown con repository locale per l'aggiornamento e download : /etc/entropy/repositories.conf.d/_entropy_myown

[myown]
desc = MyOwn Sabayon Linux Community Repository
repo = file:///home/repo/myown/#bz2
enabled = true
pkg = file:///home/repo/myown

Esempio per myown con repository per l'aggiornamento e download su ftp: /etc/entropy/repositories.conf.d/_entropy_myown

[myown]
desc = MyOwn Sabayon Linux Community Repository
repo = ftp://server-ftp.com/local/myown/#bz2
enabled = true
pkg = ftp://server-ftp.com/local/myown


Per abilitare nei client l'utilizzo del repository eseguire equo repo enable <nome-repository> :

SabayonServer > # equo repo enable mywon

Inizializzazione Repository

eit è il comando che gestisce il repository e la relativa pacchettizzazione.


SabayonServer > # eit init <repo-name> 

Questo inizializzerà il repository , la relativa struttura del database etc. Tutto il processo potrebbe richiedere un pò di tempo soprattutto per connessioni FTP e la relativa richiesta di elenco directories.

Una volta inizializzato è possibile cominciare ad installare i pacchetti tramite Portage o Paludis, Pkgcore o qualsiasi altro package manager che scriva in /var/db/pkg in modo corretto.

Compilazione

Si consiglia di mantenere per quanto possibile le USEFLAGS globali in /etc/portage/make.conf e di cambiarle per singolo pacchetto per evitare eventuali discrepanze nell'installazione dei vari pacchetti e nella gestione delle dipendenze che ne deriva.

SabayonServer > # emerge -av media-video/vlc 

Aggiungere il pacchetto al repository

Per aggiungere il pacchetto appena compilato al proprio repository , eseguire :

SabayonServer > # eit commit vlc 


Per aggiungere più pacchetti :

SabayonServer > # eit commit 

I pacchetti vengono installati localmente , ora occorre inviarli al server (locale o remoto)

SabayonServer > # eit push ---quick

media-video/vlc è stato inserito nel database del nostro repository ed è disponibile per i client che , opportunamente configurati , saranno abilitati al download del pacchetto.

Altre opzioni per EIT

eit offre altre opzioni di gestione repository,pacchetti etc . Fare riferimento all' --help del comando

SabayonServer > # eit --help
 eit --help
 usage: eit [-h]

Entropy Infrastructure Toolkit

optional arguments:
  -h, --help            show this help message and exit

command:
 available commands

 add                   commit to repository the provided packages
 branch                manage repository branches
 bump                  bump repository revision, force push
 checkout [co]         switch from a repository to another
 cleanup [cn, clean]   clean expired packages from a repository
 commit [ci]           commit changes to repository
 cp                    copy packages from a repository to another
 deps                  edit dependencies for packages in repository
 files [f]             show files owned by packages
 graph                 show dependency graph for packages
 help [-h, --help]     this help
 init                  initialize repository (erasing all its content)
 inject [fit]          inject package files into repository
 key                   manage repository GPG keys
 list                  show repository content (packages)
 lock                  lock repository
 log                   show log for repository
 match                 match packages in repositories
 merge                 merge packages on other branches into current
 mv                    move packages from a repository to another
 notice                manage repository notice-board
 own                   search packages owning paths
 pkgmove               edit automatic package moves for repository
 pull                  pull repository packages and metadata
 push [sync]           push repository packages and metadata
 query [q]             miscellaneous package metadata queries
 remote                manage repositories
 remove [rm]           remove packages from repository
 repack [rp]           rebuild packages in repository
 repo                  manage repositories
 reset                 reset repository to remote status
 revgraph              show reverse dependency graph for packages
 search                search packages in repositories
 status [st]           show repository status
 test                  run QA tests
 unlock                unlock repository
 vacuum                clean expired packages from a repository
http://www.sabayon.org


Esempio di compilazione e gestione pacchetto nel repository

SabayonServer > # emerge cfv 
SabayonServer > # eit commit 
╠  @@ [myown|] mirror bloccato con successo 
╠  @@ [repo:myown|sync] repository già sincronizzate
╠  @@ [myown|repository] indicizzazione repository
╠ Scanning...
╠  @@ These would be added or updated
╠   # app-arch/cfv-1.18.3-r1
Would you like to package them now ? (inside myown) [Si/No]
╠  @@ Compressing packages
╠   #  (1/1) app-arch/cfv-1.18.3-r1
╠  @@  (1/1) [myown] aggiunta pacchetto: app-arch:cfv-1.18.3-r1.tbz2
╠  @@ [myown|repository] sincronizzazione package sets
╠  @@ [myown] pacchetto aggiunto: app-arch/cfv-1.18.3-r1 rev: 1
╠ nessuna libreria runtime mancante trovata
╠  @@ Ricarca di dipendenze inverse non valide...
╠  @@ [myown] Iniezione metadati entropy all'interno dei pacchetti creati:
╠  @@ [myown|11] iniezione completata: app-arch:cfv-1.18.3-r1.6d7803c122ae6f35e39183178b606a6fa3972594~1.tbz2
╠  @@ Esecuzione test dipendenze ...
[....] 
SabayonServer > # eit push 
╠  @@ [myown|sync|5] sincronizzazione paccheti: 
╠  @@ Statistiche locali:
╠  @@ cartella di upload: 1 file pronti
╠  @@ cartella pacchetti: 10 file pronti
╠  @@ Statistiche remote per: 
╠  @@ pacchetti remoti:  15 file immagazzinati
╠  @@ Calcolo code ...
╠  ** Espansione code:
╠     # [5|upload] packages/amd64/5/app-arch/app-arch:cfv-1.18.3-r1.6d7803c122ae6f35e39183178b606a6fa3972594~1.tbz2 [159.9kB]
╠  @@ Pacchetti da rimuovere:  0
╠  @@ Pacchetti da spostare localmente:  0
╠  @@ Packages to be downloaded:  0
╠  @@ Pacchetti da inviare:  1
╠  @@ Dimensione totale rimozione:  0.0b
╠  @@ Dimensione totale upload:  159.9kB
╠  @@ Dimensione totale download:  0.0b
Vuoi eseguire i passi di cui sopra ? [Si/No] 
╠  @@ [|push] connessione al mirror...
╠  @@ [|push] impostazione directory a standard/myown/packages/amd64/5/app-arch...
╠  @@ [|#1|(1/1)] push: app-arch:cfv-1.18.3-r1.6d7803c122ae6f35e39183178b606a6fa3972594~1.tbz2
╠  @@ [|#1|(1/1)] verifica firma: app-arch:cfv-1.18.3-r1.6d7803c122ae6f35e39183178b606a6fa3972594~1.tbz2: molto bene!
╠  @@ [|#1|(1/1)] push sucesso: app-arch:cfv-1.18.3-r1.6d7803c122ae6f35e39183178b606a6fa3972594~1.tbz2
╠  @@ [5] upload completato con successo: 
[...]
╠  * [repo:myown|sync] Comando sync su repository completato
╠  * Entropy Repository Status:
╠     Host: 
╠     Remote: 6
╠     Local: 6
╠  * [myown|] mirror sbloccato con successo
Should I cleanup old packages on mirrors ? [Si/No] 
╠  @@ [myown|pulizia|5] raccolta pacchetti scaduti
╠  @@ [5] raccolta paccheti scaduti nelle branch selezionate
╠  @@ [5] nothing to clean on this branch
SabayonServer > # equo rescue spmsync

Aggiornando un client : equo update oppure equo update myown se si vuole aggiornare solo uno specifico repository :

SabayonServer > # equo update myown
╠  @@ Sincronizzazione repository ...
╠   # Myown Sabayon Linux Community Repository
╠   # URL repository: file:///home/repo/standard/myown/database/amd64/5 [bz2]
╠   # Path locale repository: /var/lib/entropy/client/database/amd64/myown/standard/amd64/5
╠   # API Repository: 2
╠   # URL selezionato: file:///home/repo/standard/myown/database/amd64/5 [bz2]
╠       Scaricamento repository ...
╠       Scaricamento firma packages.db.dumplight.bz2.md5 ...
╠       packages.db.meta: disponibile, miticooou!.
╠         << meta file decompresso: 00-sabayon.package.keywords
╠         << meta file decompresso: 00-sabayon.package.mask
╠         << meta file decompresso: 00-sabayon.package.unmask
╠         << meta file decompresso: 00-sabayon.package.use
╠         << meta file decompresso: cronie
╠         << meta file decompresso: eapi
╠         << meta file decompresso: make.conf
╠         << meta file decompresso: make.profile
╠         << meta file decompresso: packages.db.revision
╠         << meta file decompresso: parent
╠       packages.db.meta.asc: non disponibile, tutto ok.
╠       notice.rss: non disponibile, tutto ok.
╠       Revisione repository: 7
╠       Stato repository scaricata: OK
╠       Scompattamento database in packages.db.dumplight ...
╠       Iniettamento dump scaricato packages.db.dumplight, attendere prego ...
╠       Indicizzazione metadati repository ...

Ricerca in tutte le repository del pacchetto app-arch/cfv

SabayonServer > # equo s cfv
╠  @@ Cercando...
╠      @@ Pacchetto: app-arch/cfv-1.18.3-r1 branch: 5, [sabayonlinux.org] 
╠          Disponibile:   versione: 1.18.3-r1 ~ tag: NoTag ~ revisione: 0
╠          Installato:    versione: 1.18.3-r1 ~ tag: NoTag ~ revisione: 0
╠          Slot:          0
╠          Homepage:      http://cfv.sourceforge.net/ 
╠          Descrizione:   Utility to test and create .sfv, 
╠                         .csv, .crc and md5sum files 
╠          Licenza:       GPL-2
╠      @@ Pacchetto: app-arch/cfv-1.18.3-r1 branch: 5, [myown] 
╠          Disponibile:   versione: 1.18.3-r1 ~ tag: NoTag ~ revisione: 2
╠          Installato:    versione: 1.18.3-r1 ~ tag: NoTag ~ revisione: 0
╠          Slot:          0
╠          Homepage:      http://cfv.sourceforge.net/ 
╠          Descrizione:   Utility to test and create .sfv, 
╠                         .csv, .crc and md5sum files 
╠          Licenza:       GPL-2
╠   Keyword:  cfv
╠   Trovati:  2 voci

Come sopra :

SabayonServer > # equo m cfv
╠  @@ Corrisposti...
╠      @@ Pacchetto: app-arch/cfv-1.18.3-r1 branch: 5, [myown] 
╠          Disponibile:   versione: 1.18.3-r1 ~ tag: NoTag ~ revisione: 2
╠          Installato:    versione: 1.18.3-r1 ~ tag: NoTag ~ revisione: 0
╠          Slot:          0
╠          Homepage:      http://cfv.sourceforge.net/ 
╠          Descrizione:   Utility to test and create .sfv, 
╠                         .csv, .crc and md5sum files 
╠          Licenza:       GPL-2
╠   Keyword:  cfv
╠   Trovati:  1 voce

Pacchetto app-arch/cfv disponibile al download, installiamolo :

SabayonServer > # equo i cfv --ask
╠  @@ calcolo delle dipendenze...
╠  @@ Questi sono i pacchetti che verrebbero installati:
╠  ## [U] [spm-db->myown] app-arch/cfv-1.18.3-r1|2   [1.18.3-r1|0]
╠  @@ Pacchetti che richiedono di essere installati/aggiornati/retrocessi: 1
╠  @@ Pacchetti da rimuovere: 0
╠  @@ Pacchetti da installare: 0
╠  @@ Pacchetti da reinstallare: 0
╠  @@ Pacchetti da aggiornare: 1
╠  @@ Pacchetti da retrocedere: 0
╠  @@ Dimensione download: 62.6kB
╠  @@ Spazio su disco liberato: 0.0b
╠  @@ Hai bisogno di almeno: 125.2kB di spazio libero
     Vuoi continuare ? [Si/No] 

Controlliamo il pacchetto appen installato dal repository :

SabayonServer > # equo m cfv
╠  @@ Corrisposti...
╠      @@ Pacchetto: app-arch/cfv-1.18.3-r1 branch: 5, [myown] 
╠          Disponibile:   versione: 1.18.3-r1 ~ tag: NoTag ~ revisione: 2
╠          Installato:    versione: 1.18.3-r1 ~ tag: NoTag ~ revisione: 2
╠          Slot:          0
╠          Homepage:      http://cfv.sourceforge.net/ 
╠          Descrizione:   Utility to test and create .sfv, 
╠                         .csv, .crc and md5sum files 
╠          Licenza:       GPL-2
╠   Keyword:  cfv
╠   Trovati:  1 voce


Buon Repository :)


Annotazioni

Stop.png
Il comando suggerito di seguito contiene una opzione di cancellazione del contenuto della directory di riferimento .Assicurarsi che percorsi inseriti siano corretti prima di eseguire tale comando previa possibile cancellazione accidentale dei dati !!! . Utilizzare l'opzione --dry-run (-n) per vedere cosa sarà fatto.Nessun cambiamento sarà effettuato.

Per chi riscontrasse problemi a gestire collegamenti o configurazioni ssh / ssh-agent con eit per il trasferimento dei dati del repository ad un server remoto ,può sempre utilizzare il protocollo locale file:/// per la compilazione ed una volta completato l'iter di pacchettizzazione , utilizzare rsync per spostare il contenuto alla macchina remota facendo attenzione a rispettare i percorsi richiesti durante l'aggiornamento del client.

Esempio : sul server remoto il repository è locato in /var/www/htdocs/repo/myown

nella macchina locale il contenuto da sincronizzare si trova in : /var/lib/entropy/server/<repo>

si eseguirà :

SabayonServer > # rsync -av --delete-after /var/lib/entropy/server/myown/ <user>@ip-url-remoto:/var/www/htdocs/repo/myown/

A sincronizzazione terminata , il repository sarà disponibile a tutti i client che avranno accesso al server Web in questione.

Fare riferimento al manuale o all'help di rsync per le varie opzioni disponibili:

SabayonServer > # man rsync
SabayonServer > # rsync --help