Gestione di un repository con debarchiver: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
m (verificata, parzialmente)
 
(16 versioni intermedie di 9 utenti non mostrate)
Riga 1: Riga 1:
Debian viene generalmente ritenuta una buona distribuzione Linux, con un' ottima gestione dei pacchetti, ma un pessimo sistema di installazione. A ben vedere per�, Debian � molto pi� di questo. In termini strettamente tecnici, non � una distribuzione Linux in senso classico, e pu� risultare difficile far cogliere questa distinzione a chi ha avuto a che fare primariamente con soluzioni commerciali quali [http://www.redhat.com Red Hat], [http://wwwnew.mandriva.com/it Mandriva] e [http://www.suse.com SuSE], dato che Debian supporta anche kernel alternativi come il BSD o l' Hurd.
{{Repository
|precedente=Creare un Repository Debian
|successivo=Introduzione all'APT System
}}
{{Versioni compatibili|Jessie|Stretch|Buster}}
__TOC__
==Introduzione==
[http://packages.debian.org/debarchiver Debarchiver] è uno strumento comodo e potente per poter gestire facilmente un repository Debian ben strutturato e suddiviso. Oltre a questo permette di mantenerlo in ordine (evitando il mantenimento di versioni vecchie) senza richiedere manutenzione da parte dell'amministratore.


Linux di per s� � incentrato sul coinvolgimento comunitario e sull' accessibilit�, concetti che ha mutuato dal [http://www.gnu.org Progetto GNU]. Quando pensiamo alle distribuzioni Linux odierne per�, si tratta in genere di societ� commerciali. Ci� che viene incluso in ciascuna delle distribuzioni commerciali � una decisione presa da impiegati stipendiati, con una politica aziendale precisa da seguire. Questo pu� anche non essere negativo, ma lascia aperta la strada alla possibilit�  di un fallimento commerciale, come si � visto di recente con Mandrake. Se un' organizzazione necessita di produrre reddito per sopravvivere, questo pericolo � sempre presente.
==Installazione==
L'installazione è semplice, in quanto il programma è incluso in Debian; e con [[privilegi di amministrazione]] basta:
<pre>
# apt install debarchiver
</pre>


Debian invece, � diversa. E' un progetto totalmente aperto e cooperativo, coinvolge una gran variet� di persone ciascuna delle quali fa quello che fa perch� le va di farlo o perch� ritiene che ne valga la pena. Debian non esiste realmente in senso puramente legale. Non esiste nessuna Debian S.p.A., non esistono azionisti, n� un bilancio e tantomeno � un' organizzazione no-profit. Esiste invece un' organizzazione chiamata [http://www.spi-inc.org Software nel Pubblico Interesse](SPI), anche se Debian in s� � unicamente un enorme progetto collaborativo. Si tratta probabilmente di uno degli esempi oggi esistenti di pi� larga portata di progetto in stile "bazaar", come descritto da Eric S. Raymond nel suo [http://www.apogeonline.com/openpress/doc/cathedral.html "La Cattedrale ed il Bazaar"]. Non ha necessit� di vendere, non ha bisogno di andare incontro alle aspettative degli investitori: i suoi membri cercano unicamente di fare quello sanno fare meglio: creare una delle migliori raccolte di software open source.
==Configurazione==
Tutta la configurazione di debarchiver è racchiusa in un unico file: <code>'''/etc/debarchiver.conf'''</code>, che analizziamo nel dettaglio:


Questo pu� essere sia un bene che un male. Uno dei recenti problemi, per esempio, � consistito nell' ottenere un prototipo dell' AMD x86-64 per il porting ed il testing. AMD dispone di forniture limitate di questo hardware, e finch� si rester� alla fase di prototipo rilasceranno le loro macchine unicamente a quelle organizzazione che saranno in grado di dimostrare di averne reale necessit� ed anche di poter siglare un accordo di non-divulgazione. Dato che Debian non esiste come entit� legale, non � in grado di siglare un accordo che vincoli tutti i suoi sviluppatori e a causa di questo AMD non � stata in grado di fornire agli sviluppatori Debian l' hardware per effettuare i test.
{{Box|Nota Bene:|le opzioni riportate nel file di configurazione sono inizialmente commentate in quanto i valori riportati sono quelli di default.}}


Ciononostante, problemi come questo sono una minoranza e proprio questa mancanza di struttura rappresenta per Debian il maggior punto di forza. La differenziazione ed inclusivit� hanno portato alla sua capacit� di poter preparare una vastissima selezione di software per pi� piattaforme hardware di qualunque altra distribuzione, se non di qualunque altro sistema operativo.
<pre>
$destdir = "/var/lib/debarchiver/dists";
$inputdir = "/var/lib/debarchiver/incoming";
</pre>
Dove verrà creato il repository (<code>''destdir''</code>) e dove vengono inseriti i pacchetti da aggiungere al repository (<code>''inputdir''</code>)


Qualcosa che molte persone non sanno � che Debian supporta ufficialmente 11 diverse [http://www.debian.org/ports architetture hardware]: x86/IA-32(i386), Motorola 68k, Sparc, Alpha, PowerPC, ARM, MIPS, MIPSel, HP PA-RISC, IA-64 e S/390. Questo non vuol dire che tutto venga prima sviluppato per i386, con le altre architetture in ritardo e trattate come cugini poveri ed i rispettivi rilasci in ritardo di settimane o mesi. Quando una release come Woody (Debian 3.0) viene resa disponibile, � disponibile simultaneamente per tutte le 11 diverse architetture.
<pre>
# $copycmd = "cp -af";
# $movecmd = "mv";
# $rmcmd = "rm -f";
# @vrfycmd = ("dscverify");
</pre>
La lista dei comandi utilizzati nella gestione del repository: quelli di default, normalmente, sono corretti per la maggior parte delle situazioni.


Davvero un concetto che allarga la mente, se considerate che anche "ragazzoni" come Red Hat supportano ufficialmente solo un paio di piattaforme. Gestire lo sviluppo su 11 diversi hardware ha richiesto a Debian di mettere in piedi un sistema davvero sofisticato di auto-costruzione, che permette ad uno sviluppatore di creare un pacchetto software localmente, su una qualsiasi delle piattaforme che ha a propria disposizione e quindi di caricarlo e accodarlo per la costruzione. Una volta che il pacchetto � accodato, ne viene controllata la sanit� e quindi viene distribuito a tutte le macchine che costituiscono la "build farm": un insieme di macchine prestate o donate a Debian e che rappresentano tutte e 11 le architetture. A questo punto il pacchetto viene compilato a partire dal sorgente e qualunque eventuale errore viene comunicato allo sviluppatore. Se tutto � andato a buon fine, il pacchetto sorgente e ed i vari pacchetti compilati vengono spostati sui server master che provvedono a rifornire i vari [http://www.debian.org/mirrors mirrors] dislocati un po' in tutto il mondo. In breve tempo il pacchetto � disponibile per essere scaricato ed installato su ciascuna delle architetture supportate.
<pre>
# $cinstall = "installed";
</pre>
Dove verranno messi i file <code>''.changes''</code>.


Il risultato finale � che un pacchetto pu� essere creato dallo sviluppatore sulla sua macchina locale, come ad esempio un sistema AMD o Intel, accodato per la costruzione in remoto e installato poche ore dopo come pacchetto binario su qualsiasi architettura, da un iBook fino ad un mainframe S/390.
<pre>
# $distinputcriteria = "^linux.*\\.deb\$";
# $inputdir = "/path";
</pre>
Indica il criterio con il quale verranno accettati i pacchetti non aventi un file <code>''.changes''</code> e dove devono essere inseriti per essere ''presi'' dal sistema.


Davvero impressionante.
<pre>
# $verifysignatures = 0;
</pre>
Attiva (<code>1</code>) o disattiva (<code>0</code>) la verifica della firma dei pacchetti inseriti nella <code>''inputdir''</code>.


Distintamente dai suoi conseguimenti tecnici, Debian ha posto le fondamenta per molto dell' ambiente comunitario di cui beneficiano oggi gli sviluppatori Open Source. Pu� essere che siate a conoscenza dell' iniziativa Open Source [http://www.opensource.org/docs/definition_plain.html "Definizione dell' Open Source"] ad esempio, ma potreste non sapere che questa � direttamente derivata dalle [http://www.debian.org/social_contract.html#guidelines Debian Free Software Guidelines]. Debian oltretutto si � dotata di un [http://www.debian.org/social_contract.html Contratto Sociale], un documento che sancisce il modo in cui porsi nei confronti degli utenti e degli sviluppatori. Tutti gli sviluppatori che si aggregano al progetto sono tenuti ad aderire alla Definizione dell' Open Source ed al Contratto Sociale. Si pu� dire che in un certo senso il Contratto Sociale rappresenti la coscienza di Debian, assicurando che gli sviluppatori mantengano una prospettiva corretta e facciano sempre del loro meglio per la comunit� nel suo insieme piuttosto che scendere a compromessi con i propri standard per un risultato a breve termine. Assicura anche che Debian stessa rimarr� libera ed aperta, accessibile al maggior numero di persone senza alcun pregiudizio. Se volete rendervi conto degli ideali e degli standard a cui sono tenuti gli sviluppatori di Debian, vi raccomando caldamente di leggere sia la Definizione Open Source che il Contratto Sociale.
<pre>
# $verifysignaturesdistinput = 0;
</pre>
come sopra, ma riguarda la directory <code>''distinputdirs''</code>.


In base alle ragioni tecniche ed etiche che ho menzionato, Debian raccoglie grande favore e rispetto all' interno della comunit� degli sviluppatori. Sebbene abbia poco riscontro tra gli utenti con minor esperienza, una parte molto grande del nocciolo Open Source la usa come sistema operativo preferito. Leggende del mondo Open Source come Andrew Tridgell (conosciuto per i progetti Samba e Rsync) e Paul "Rusty" Russell (autore di Ipchains, Iptables, e kernel-guru a tutto tondo) sono tra coloro che la usano tutti i giorni. Durante la [http://conf.linux.org.au Australian Linux Technical Conference] tenutasi in Perth nel gennaio 2003 e a cui hanno partecipato Linus Torvalds, Rasmus Lerdorf, Alan Cox, Rusty Russell, Andrew Tridgell e molti altri luminari dell' Open Source, un sondaggio ha mostrato come Debian fosse di gran lunga la distribuzione maggiormente usata, con Red Hat distanziata seconda.
<pre>
# $bzip = 0;
</pre>
Attiva la generazione di file compressi con bz2.


Debian segna la via anche nel campo dell' [http://www.debian.org/international internazionalizzazione], con un team molto attivo che si dedica alla traduzione della documentazione e delle pagine web in molte lingue, e con sviluppatori che lavorano per astrarre il testo dei menu e delle finestre dal software in se, in modo che gli utenti possano usare i programmi nella propria lingua nativa. C'� ancora molto lavoro da svolgere in questo senso, ma Debian � gi� oggi una delle distribuzioni pi� flessibili in termini di accessibilit� per tutti quegli utenti per cui l' inglese non � la prima lingua. I vari team di traduzione e internazionalizzazione sono sempre felici di ricevere offerte di aiuto per cui, se c'� un' area in cui vi sentite di poter dare una mano, saranno contentissimi di avere vostre notizie. Rendere il software accessibile a tutti, senza distinzione di provenienza etnica o circostanze economiche, � uno degli ideali pi� sentiti in Debian.
<pre>
%distinputdirs =
        (
        stable => 'stable',
        testing => 'testing',
        unstable => 'unstable'
        );
</pre>
Permette di indicare i nomi delle directory contenute nella directory <code>''incoming''</code> che provvederanno a raccogliere i pacchetti di una determinata release. In questo caso, nella release ''stable'' verranno inseriti i pacchetti presenti nella directory <code>''/var/lib/debarchiver/incoming/stable/''</code>.


Gli sviluppatori di Debian provengono da ogni angolo del globo, potete rendervi conto della variet� geografica da voi stessi, dato che molte delle localit� in cui risiedono sono state tracciate su una [http://www.debian.org/devel/developers.loc mappa del mondo].
<pre>
@distributions = ('stable', 'testing', 'unstable');
</pre>
Questa lista indica le release presenti nel repository (in questo caso le 3 release ''stable'', ''testing'' e ''unstable'').


Ma allora come pu una cos varia e geograficamente separata raccolta di individui tenersi in contatto o fare in modo di portare avanti il lavoro?


La risposta pi� breve �: tramite le liste di posta. Debian ha oltre 100 [http://www.debian.org/MailingLists liste di posta interne] che smistano giornalmente un enorme volume di traffico, dalle domande dei nuovi utenti per arrivare alle discussioni specialistiche dei sottogruppi interni. Probabilmente la pi� frequentata e movimentata � debian-devel, dove gli sviluppatori Debian discutono di tutto, dalle specifiche della pacchetizzazione software fino agli obiettivi primari. Nel pieno spirito di un progetto realmente aperto, tutte le liste di posta (con un'unica rimarchevole eccezione) sono liste pubbliche a cui chiunque pu� partecipare. L' unica privata � la lista in cui vengono trattati temi molto delicati, come ad esempio il rendere di pubblico dominio problemi e soluzioni legati alla sicurezza.
<pre>
%distmapping =
        (
        stable => 'buster',
        testing => 'bullseye',
        unstable => 'sid'
        );
</pre>
Schema per la creazione di link tra i nomi delle release reali e i nomi dello stato delle release.


Per quanto riguarda i propri membri, Debian ha una struttura prettamente orizzontale e democratica. Il primo livello � costituito dagli utenti, come amministratori di sistema che gestiscono molte macchine, ma anche utenti con un solo PC Debian a casa. Include anche molte persone che contribuiscono fattivamente al progetto, ad esempio proponendo patch o segnalando bachi come anche creando pacchetti Debian. Il livello successivo � costituito da quelle persone conosciute anche come Sviluppatori Debian o DDs. A tutt'oggi ci sono circa 1100 DDs. I DDs hanno privilegi aggiunti: dato che ci si aspetta che creino e mantengano pacchetti software, hanno la possibilit� di caricare direttamente questi pacchetti nella coda di costruzione. I non-DDs che vogliono includere un pacchetto in Debian, devono essere sponsorizzati da un DD, altrimenti il pacchetto non potr� essere caricato nella coda. I DDs hanno anche diritto di voto in caso di cambiamenti di strategia o di elezione a cariche ufficiali, oltre a poter essere eletti a queste cariche. Il livello finale � rappresentato da quei pochi DDs che detengono una carica, come il Debian Project Leader (DPL) annualmente eletto, i membri del Comitato Tecnico, il Responsabile di Rilascio per ciascuna release ed i responsabili dei vari settori dell' infrastruttura come la build farm e i mirrors.
<pre>
# @architectures = ('i386');
</pre>
Permette di indicare la lista di architetture (racchiuse tra apici e separate da una virgola) presenti nel repository.


La comunit� Debian si compiace di essere molto incentrata sui risultati. I dibattiti su debian-devel spesso divagano, ma le persone che all' interno della comunit� si conquistano il rispetto di tutti sono coloro che si accorgono quando qualcosa deve essere fatto e lo fanno piuttosto che perdersi in discussioni senza agire. Uno dei temi sempreverdi che non manca mai di scatenare un' accesa discussione se menzionato su debian-devel � costituito dal lungo e noioso processo che porta dalla condizione di normale utente a quella di Sviluppatore Ufficiale Debian. Questa discussione finisce sempre con la stessa conclusione: l' unico modo per guadagnarsi rispetto ed essere considerati membri della comunit� consiste semplicemente nel coinvolgersi, sia nel caso di DD ufficiali sia in quello di utenti qualsiasi. In un prossimo articolo spero di potervi guidare passo passo nel processo per diventare un nuovo sviluppatore, in modo che possiate rendervi conto di quali fattori entrano in causa; per adesso, se volete contribuire e non siete un DD ufficiale, il mio consiglio � quello di iscrivervi a debian-devel e lasciarvi coinvolgere.
<pre>
@sections = ('main', 'contrib', 'non-free');
</pre>
Indica le sezioni in cui è suddiviso il repository.


Ok, ma come mai questo articolo si intitola "L' Universo Debian" ?
<pre>
@mailtos = ('Maintainer', 'Uploaders', '@knio.it', 'admin@dominio.it');
</pre>
Permette di indicare a chi verrà inviata una email di conferma dell'inserimento del pacchetto; è possibile specificare i seguenti parametri:
; Indirizzo Email : l'email verrà inviata a quel determinato indirizzo email
; Indirizzo email incompleto : l'email verrà inviata all'utente proprietario del file usando l'host specificato dopo il simbolo ''@''. Nel caso riportato, se l'utente proprietario del file è ''maxer'', l'email verrà inviata a ''maxer@knio.it''.
; Stringa senza @ : Verrà usato il valore del campo espresso (nell'esempio vengono utilizzati ''Maintainer'' e ''Uploader'') come indirizzo email.


All' avvio del progetto, era diffuso un concetto generale: Debian sarebbe dovuta diventare una solida base su cui poter costruire altri progetti. Usando Debian come struttura portante, diversi gruppi di persone avrebbero potuto creare il proprio ambiente software personalizzato per andare incontro alle proprie specifiche esigenze, senza dover reinventare tutto da capo ogni volta.
<pre>
%release = (  'origin' => "",
                'label' => "",
                'description' => "");
</pre>
Informazioni aggiuntive da inserire nel file Release.


A questo proposito, il Debian Project Leader Bdale Garbee ha fatto un' osservazione alla recente Australian Linux Technical Conference: piuttosto che rappresentare le fondamenta su cui altri progetti sono costruiti, Debian � divenuta un universo da cui molti sotto-progetti attingono solo alcune porzioni. Ha quindi proseguito dicendo ironicamente che, in base al tasso attuale di crescita, ben presto Debian includer� qualsiasi tipo di software che sia stato necessario a chiunque anche per soli 5 minuti..
<pre>
# $cachedir = '/var/cache/debarchiver';
</pre>
Nel caso venga usato ''apt-ftparchive'', indica la directory di cache da usare.


La sua osservazione � solo per met� scherzosa: data l' enorme quantit� di software oggi disponibile in Debian (la distribuzione in s� � composta di 7 CD, ed al momento in cui scrivo il mirror principale sta per sfondare la soglia degli 80Gb e degli 11.000 pacchetti disponibili!) non esiste praticamente alcuna necessit� di aggiungere qualcosa di esterno a Debian per creare un progetto derivato. La questione diventa piuttosto quella di definire con precisione a quale risultato finale si vuole arrivare e selezionare da Debian solo gli elementi necessari.
<pre>
# $gpgkey = "";
</pre>
Imposta la chiave GPG con cui firmare i pacchetti che vengono inseriti nel database.


Questo approccio � gi� in corso per tutta una serie di sotto-progetti, come [http://www.debian.org/devel/debian-jr/ Debian Jnr], [http://www.debian.org/devel/debian-med/ Debian-Med], [http://wiki.debian.net/DebianEdu Debian-Edu], e [http://www.debian.org/devel/debian-desktop/ Debian Desktop]. Ciascuno di essi sta lavorando per rendere Debian accessibile ed importante per un particolare gruppo di utenti sfruttando la struttura esistente in Debian, piuttosto che costruire nuovi livelli basati su di essa. In questo modo l' intera comunit� pu� trarre benefici dalle migliorie apportate dai singoli sotto-progetti, dato che nessuno di essi rompe i rapporti con la nave madre, ma piuttosto li estende e organizzano per renderli pi� adatti alle necessit� di particolari gruppi di utenti.
<pre>
# $gpgpassfile = "$ENV{HOME}/.gnupg/passphrase";
</pre>
Indica il percorso del file contenente la password per l'utilizzo della chiave GPG citata nella spiegazione alla direttiva precedente. Trattandosi di un dato molto importante, è consigliabile usare dei permessi restrittivi, come ad esempio permettendone la lettura solo all'utente ''debarchiver'' (l'utente usato da debarchiver).


Spero con questo articolo di avervi mostrato che Debian non � solo l' ennesima distribuzione Linux. Si tratta piuttosto di un intero universo di software reso disponibile per il beneficio di tutti, ed a cui capita per giunta di essere presumibilmente la migliore distribuzione Linux oggi disponibile.
<pre>
1;
</pre>
Indica che il file di configurazione deve restituire un valore ''true''.


----
===Permessi===
Copyright 2003-2004 [mailto:jon@ivt.com.au Jonathan Oxer] - all rights reserved.
'''Debarchiver''' è configurato per lavorare correttamente con i server [[FTP]] e web. È impostato, infatti, il permesso di lettura per tutti gli utenti.
Pubblicato originariamente su [http://www.debianuniverse.com/readonline/chapter/01/it Debian Universe]


Versione italiana a cura di [[User:Keltik|Keltik]]
<!-- *PARTE COMMENTATA* : permesso di scrittura non presente nemmeno per il gruppo debarchiver
[[Categoria:Mondo Debian]]
 
Un po' più complessa è, invece, la situazione relativa all'utilizzo della directory <code>''incoming''</code> da parte degli utenti. La directory in questione è di proprietà dell'utente root e del gruppo ''debarchiver''. Per abilitare un utente ad utilizzare il sistema, quindi, è necessario aggiungerlo al gruppo:
<pre>
# adduser nomeutente debarchiver
</pre>
 
*FINE PARTE COMMENTATA* -->
==Utilizzo Reale==
Due esempi relativi alla configurazione di un server web (Apache) e di un server FTP anonimo (vsftpd) per l'accesso al repository.
 
===Server Web===
La configurazione di un server web è molto semplice e la si può ricondurre a due situazioni particolari:
* configurazione come dominio di 3° livello (Es. <nowiki>http://debian.dominio.it</nowiki>)
* configurazione come directory in un dominio esistente (Es. <nowiki>http://www.dominio.it/debian</nowiki>)
 
====Dominio di 3° livello====
La configurazione di un dominio di 3° livello dedicato al repository è una scelta molto comoda, secondo me.
 
È sufficiente, infatti, creare un semplice VirtualHost (Dettagli [http://httpd.apache.org/docs/1.3/vhosts/examples.html Apache1.3] [http://httpd.apache.org/docs/2.0/vhosts/ Apache2.0]) in cui viene indicata come ''DocumentRoot'' la directory <code>'''/var/lib/debarchiver'''</code>.
 
Esempio:
<pre>
NameVirtualHost *:80
 
<VirtualHost *:80>
    ServerName repos.dominio.it
    DocumentRoot /var/lib/debarchiver
    <Directory />
        Options Indexes FollowSymLinks
    </Directory>
</VirtualHost>
</pre>
 
ed abilitarlo (rimando alla documentazione ufficiale del proprio server web).
 
====Directory in un Dominio====
Questa configurazione è senza dubbio la più semplice. Si fa uso della direttiva '''Alias''' (Documentazione Ufficiale [http://httpd.apache.org/docs/1.3/mod/mod_alias.html Apache1.3] - [http://httpd.apache.org/docs/2.0/mod/mod_alias.html Apache2.0]) nel modo seguente:
 
Supponendo di voler rendere accessibile il repository in <nowiki>http://www.dominio.it/debian</nowiki> è sufficiente aggiungere, nella configurazione del VirtualHost in questione
<pre>
Alias /debian /var/lib/debarchiver
</pre>
 
{{Box|Nota:|per rendere ''sfogliabile'' il repository è consigliabile aggiungere, dopo la dichiarazione precedente, un pezzo di codice simile al seguente:
<pre>
<Directory /debian>
    Options Indexes FollowSymLinks
</Directory>
</pre> [http://httpd.apache.org/docs/2.0/mod/core.html#options qui] sono disponibili maggiori dettagli a riguardo}}
 
===Server FTP===
Come server FTP viene preso in considerazione [http://www.proftpd.org proftpd], visto che utilizza una configurazione molto simile a quella di Apache.
 
====Dominio di 3° livello====
Un esempio di configurazione (da inserire all'interno di <code>'''/etc/proftpd.conf'''</code>) per l'accesso al repository tramite il protocollo ftp:
<pre>
<VirtualHost repos.dominio.it>
  ServerName "Repository di dominio.it"
  MaxClients 10
  MaxLoginAttempts 1
 
  DeferWelcome on
 
 
  <Limit LOGIN>
    DenyAll
  </Limit>
 
  <Directory />
    <Limit WRITE DIRS>
      DenyAll
    </Limit>
  </Directory>
</Anonymous>
</VirtualHost>
</pre>
 
==Gestione del Repository==
===Upload dei pacchetti===
È utile ricordare che esistono dei tool per eseguire correttamente l'upload dei pacchetti.
 
È necessario, infatti, seguire una procedura particolare: il sistema utilizza i file con estensione ''changes'' come file di lock. Quando si caricano dei pacchetti, il file <code>.changes</code> deve essere l'ultimo ad essere caricato. L'analisi dei pacchetti, infatti, verrà eseguita solo quando questo file sarà presente.
 
I tool disponibili sono:
* [[Dupload per l'upload dei pacchetti Debian | Dupload ]]
* dput
 
===Rimozione di uno o più pacchetti===
Debarchiver non supporta la rimozione automatizzata di uno o più pacchetti, operazione che dovrà essere compiuta, quindi, a mano.
 
Supponendo di avere un pacchetto di nome ''kpakketto'' dovremo seguire questa procedura:
* eliminazione manuale di tutte le occorrenze di ''kpakketto'': <pre> # find /var/lib/debarchiver/dists/ -iname "kpakketto*" -delete</pre>
* ricostruzione del repository: <pre>$ su - debarchiver -c "debarchiver -so --autoscanall --dl 6" </pre>
 
 
==Conclusione==
'''Debarchiver''' offre un comodo e funzionale strumento per la gestione automatizzata di un repository Debian di tutto rispetto. Inoltre implementa correttamente la struttura di un repository Debian; una scelta obbligata, insomma, quando si devono gestire un numero di pacchetti maggiore di 3-4 senza dover preoccuparsi delle vecchie versioni (che vengono automaticamente rimosse). Inoltre la flessibilità e la possibilità di avere più suddivisioni (oltre alle classiche ''stable'', ''testing'' e ''unstable'') lo rende perfetto per repository particolari (per i backport, ad esempio).
 
{{Autori
|Autore = [[Utente:MaXeR|MaXeR]]
}}
[[Categoria:Creare repository]]

Versione attuale delle 15:47, 12 ott 2019

I repository
Arrow left.png

Introduzione ai repository

Repository ufficiali di Debian

Repository esterni

Extra

Arrow right.png



Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

Introduzione

Debarchiver è uno strumento comodo e potente per poter gestire facilmente un repository Debian ben strutturato e suddiviso. Oltre a questo permette di mantenerlo in ordine (evitando il mantenimento di versioni vecchie) senza richiedere manutenzione da parte dell'amministratore.

Installazione

L'installazione è semplice, in quanto il programma è incluso in Debian; e con privilegi di amministrazione basta:

# apt install debarchiver

Configurazione

Tutta la configurazione di debarchiver è racchiusa in un unico file: /etc/debarchiver.conf, che analizziamo nel dettaglio:

Info.png Nota Bene:
le opzioni riportate nel file di configurazione sono inizialmente commentate in quanto i valori riportati sono quelli di default.


$destdir = "/var/lib/debarchiver/dists";
$inputdir = "/var/lib/debarchiver/incoming";

Dove verrà creato il repository (destdir) e dove vengono inseriti i pacchetti da aggiungere al repository (inputdir)

# $copycmd = "cp -af";
# $movecmd = "mv";
# $rmcmd = "rm -f";
# @vrfycmd = ("dscverify");

La lista dei comandi utilizzati nella gestione del repository: quelli di default, normalmente, sono corretti per la maggior parte delle situazioni.

# $cinstall = "installed";

Dove verranno messi i file .changes.

# $distinputcriteria = "^linux.*\\.deb\$";
# $inputdir = "/path";

Indica il criterio con il quale verranno accettati i pacchetti non aventi un file .changes e dove devono essere inseriti per essere presi dal sistema.

# $verifysignatures = 0;

Attiva (1) o disattiva (0) la verifica della firma dei pacchetti inseriti nella inputdir.

# $verifysignaturesdistinput = 0;

come sopra, ma riguarda la directory distinputdirs.

# $bzip = 0;

Attiva la generazione di file compressi con bz2.

 %distinputdirs =
        (
        stable => 'stable',
        testing => 'testing',
        unstable => 'unstable'
        );

Permette di indicare i nomi delle directory contenute nella directory incoming che provvederanno a raccogliere i pacchetti di una determinata release. In questo caso, nella release stable verranno inseriti i pacchetti presenti nella directory /var/lib/debarchiver/incoming/stable/.

@distributions = ('stable', 'testing', 'unstable');

Questa lista indica le release presenti nel repository (in questo caso le 3 release stable, testing e unstable).


%distmapping =
        (
        stable => 'buster',
        testing => 'bullseye',
        unstable => 'sid'
        );

Schema per la creazione di link tra i nomi delle release reali e i nomi dello stato delle release.

# @architectures = ('i386');

Permette di indicare la lista di architetture (racchiuse tra apici e separate da una virgola) presenti nel repository.

 @sections = ('main', 'contrib', 'non-free');

Indica le sezioni in cui è suddiviso il repository.

 @mailtos = ('Maintainer', 'Uploaders', '@knio.it', 'admin@dominio.it');

Permette di indicare a chi verrà inviata una email di conferma dell'inserimento del pacchetto; è possibile specificare i seguenti parametri:

Indirizzo Email
l'email verrà inviata a quel determinato indirizzo email
Indirizzo email incompleto
l'email verrà inviata all'utente proprietario del file usando l'host specificato dopo il simbolo @. Nel caso riportato, se l'utente proprietario del file è maxer, l'email verrà inviata a maxer@knio.it.
Stringa senza @
Verrà usato il valore del campo espresso (nell'esempio vengono utilizzati Maintainer e Uploader) come indirizzo email.
%release = (   'origin' => "",
                'label' => "",
                'description' => "");

Informazioni aggiuntive da inserire nel file Release.

# $cachedir = '/var/cache/debarchiver';

Nel caso venga usato apt-ftparchive, indica la directory di cache da usare.

# $gpgkey = "";

Imposta la chiave GPG con cui firmare i pacchetti che vengono inseriti nel database.

# $gpgpassfile = "$ENV{HOME}/.gnupg/passphrase";

Indica il percorso del file contenente la password per l'utilizzo della chiave GPG citata nella spiegazione alla direttiva precedente. Trattandosi di un dato molto importante, è consigliabile usare dei permessi restrittivi, come ad esempio permettendone la lettura solo all'utente debarchiver (l'utente usato da debarchiver).

1;

Indica che il file di configurazione deve restituire un valore true.

Permessi

Debarchiver è configurato per lavorare correttamente con i server FTP e web. È impostato, infatti, il permesso di lettura per tutti gli utenti.

Utilizzo Reale

Due esempi relativi alla configurazione di un server web (Apache) e di un server FTP anonimo (vsftpd) per l'accesso al repository.

Server Web

La configurazione di un server web è molto semplice e la si può ricondurre a due situazioni particolari:

  • configurazione come dominio di 3° livello (Es. http://debian.dominio.it)
  • configurazione come directory in un dominio esistente (Es. http://www.dominio.it/debian)

Dominio di 3° livello

La configurazione di un dominio di 3° livello dedicato al repository è una scelta molto comoda, secondo me.

È sufficiente, infatti, creare un semplice VirtualHost (Dettagli Apache1.3 Apache2.0) in cui viene indicata come DocumentRoot la directory /var/lib/debarchiver.

Esempio:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName repos.dominio.it
    DocumentRoot /var/lib/debarchiver
    <Directory />
        Options Indexes FollowSymLinks
    </Directory>
</VirtualHost>

ed abilitarlo (rimando alla documentazione ufficiale del proprio server web).

Directory in un Dominio

Questa configurazione è senza dubbio la più semplice. Si fa uso della direttiva Alias (Documentazione Ufficiale Apache1.3 - Apache2.0) nel modo seguente:

Supponendo di voler rendere accessibile il repository in http://www.dominio.it/debian è sufficiente aggiungere, nella configurazione del VirtualHost in questione

Alias /debian /var/lib/debarchiver
Info.png Nota:
per rendere sfogliabile il repository è consigliabile aggiungere, dopo la dichiarazione precedente, un pezzo di codice simile al seguente:
<Directory /debian>
    Options Indexes FollowSymLinks
</Directory>
qui sono disponibili maggiori dettagli a riguardo


Server FTP

Come server FTP viene preso in considerazione proftpd, visto che utilizza una configurazione molto simile a quella di Apache.

Dominio di 3° livello

Un esempio di configurazione (da inserire all'interno di /etc/proftpd.conf) per l'accesso al repository tramite il protocollo ftp:

<VirtualHost repos.dominio.it>
  ServerName			"Repository di dominio.it"
  MaxClients			10
  MaxLoginAttempts		1

  DeferWelcome			on


  <Limit LOGIN>
    DenyAll
  </Limit>

  <Directory />
    <Limit WRITE DIRS>
      DenyAll
    </Limit>
  </Directory>
 </Anonymous>
</VirtualHost>

Gestione del Repository

Upload dei pacchetti

È utile ricordare che esistono dei tool per eseguire correttamente l'upload dei pacchetti.

È necessario, infatti, seguire una procedura particolare: il sistema utilizza i file con estensione changes come file di lock. Quando si caricano dei pacchetti, il file .changes deve essere l'ultimo ad essere caricato. L'analisi dei pacchetti, infatti, verrà eseguita solo quando questo file sarà presente.

I tool disponibili sono:

Rimozione di uno o più pacchetti

Debarchiver non supporta la rimozione automatizzata di uno o più pacchetti, operazione che dovrà essere compiuta, quindi, a mano.

Supponendo di avere un pacchetto di nome kpakketto dovremo seguire questa procedura:

  • eliminazione manuale di tutte le occorrenze di kpakketto:
     # find /var/lib/debarchiver/dists/ -iname "kpakketto*" -delete
  • ricostruzione del repository:
    $ su - debarchiver -c "debarchiver -so --autoscanall --dl 6" 


Conclusione

Debarchiver offre un comodo e funzionale strumento per la gestione automatizzata di un repository Debian di tutto rispetto. Inoltre implementa correttamente la struttura di un repository Debian; una scelta obbligata, insomma, quando si devono gestire un numero di pacchetti maggiore di 3-4 senza dover preoccuparsi delle vecchie versioni (che vengono automaticamente rimosse). Inoltre la flessibilità e la possibilità di avere più suddivisioni (oltre alle classiche stable, testing e unstable) lo rende perfetto per repository particolari (per i backport, ad esempio).




Guida scritta da: MaXeR Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized