Precedente :: Successivo |
Autore |
Messaggio |
dAb Dio minore
Registrato: 21/06/05 23:15 Messaggi: 858 Residenza: montana e piovosa
|
Inviato: 30 Ott 2005 20:30 Oggetto: * [Debian] Creazione di un repository personale |
|
|
Date le continue installazioni di Debian per i server ho deciso di crearmi un comodo repository "casalingo", installato sul file server, in modo da non dover armeggiare ogni volta con cd e dvd.
Materiale necessario:
- i 2 dvd di Debian Sarge R3.1, scaricabili da qui:
DVD1
DVD2
- il cd di installazione netinst, scaricabile da qui. Il server e` situato in Svezia, se trovate un mirror aggiornato vicino a voi meglio ancora.
- una macchina con Debian preinstallato, la versione e` ininfluente
In breve:
Copiare sul file server il contenuto dei due dvd, installare un server ftp, creare il repository, editare il sources.list sui client e aggiornare le fonti.
Nei dettagli:
Chiameremo REP la macchina destinata a fungere da repository.
1) Innanzitutto creiamo su REP una directory destinata a contenere il repository e vi copiamo il contenuto dei due dvd di Sarge:
mkdir /opt/rep
mkdir /opt/rep/debian
cp -d -r /media/dvd/{dists,pool} /opt/rep/debian
L'ultimo comando va dato per entrambi i dvd, il vostro punto di mount potrebbe essere differente.
2) Ora dobbiamo creare i file indice Packages.gz, che verranno scaricati dai client per sapere quali pacchetti sono a disposizione sul repository. Per far questo usiamo il comando dpkg-scanpackages, contenuto nel pacchetto dpkg-multicd:
apt-get install dpkg-multicd
cd /opt/rep/debian
dpkg-scanpackages pool/main /dev/null | gzip -9c > dists/sarge/main/binary-i386/Packages.gz
dpkg-scanpackages pool/contrib /dev/null | gzip -9c > dists/sarge/contrib/binary-i386/Packages.gz
Mettetevi comodi perche` la generazione degli indici impieghera` un sacco di tempo. Su un K6-2/400 con hd ATA66 e` necessaria circa un'ora e mezza.
3) Ora installiamo su REP un server ftp:
apt-get install vsftpd
Apriamo /etc/vsftpd.conf e decommentiamo la riga anonymous_enable=YES
Durante l'installazione di vsftpd viene automaticamente creato un utente di nome ftp. Editiamo il file di informazioni sugli account utente in modo da indicare il repository come directory home dell'utente ftp:
vipw
Nella riga corrispondente all'utente ftp sostituiamo /home/ftp con /opt/rep. Riavviamo il server ftp:
/etc/init.d/vsftpd restart
4) Ora accedendo da un browser a ftp://ip_REP vedremo una directory di nome debian. Sfogliandola vedremo che e` stata costruita una struttura simile a quella visibile qui, con la differenza che il nostro repository avra` a disposizione unicamente l'architettura i386 e le fonti disponibili saranno solo contrib e main, ovvero quelle presenti sui dvd. Sta a voi decidere se scaricare o meno anche i pacchetti delle altre fonti dagli ftp ufficiali di Sarge prima di generare gli indici del vostro repository.
5) Andiamo su un client debian qualsiasi e editiamo /etc/apt/sources.list aggiungendo questa riga:
deb ftp://ip_REP/debian sarge main contrib
Salviamo il file, usciamo dall'editor e lanciamo apt-get update. Ora possiamo installare qualunque pacchetto via lan, a una velocita` inconfrontabile rispetto all'accesso ai repository ufficiali.
6) Evidenziamo il grande vantaggio della disponibilita` di un repository casalingo: prendiamo una macchina di test e avviamo dal cd netinstall. Quando ci viene chiesto di aggiungere delle fonti ad apt rispondiamo di no, terminiamo l'installazione come al solito e al riavvio andiamo a editare il sources.list dopo aver rimosso l'ormai inutile cd di installazione. Cancelliamo tutte le fonti esistenti, lasciamo solo quella riferita al nostro repository e aggiungiamo questa riga:
dep http://security.debian.org/ stable/updates main contrib
Lanciamo apt-get update e siamo pronti per installare qualunque cosa da piu` macchine contemporaneamente senza piu` usare nessun cd all'infuori del cd di avvio per i primi passi di installazione, con in piu` gli aggiornamenti da security.debian.org. Questi ultimi in caso non si disponga di una linea veloce (o addirittura non si disponga di nessun accesso a internet) possono anche essere tralasciati.
Il repository e` anche utilizzabile in locale, per la stessa macchina REP: e` sufficiente editare il suo sources.list sostituendo l'indirizzo dell'ftp con 127.0.0.1. Lo stesso metodo e` utilizzabile se si vuole creare il repository direttamente sul proprio pc.
A chi serve tutto cio`? A chi compie spesso installazioni di debian, a chi vuole creare una macchina nella lan da dove prelevare i pacchetti senza impegnare la linea per l'accesso all'esterno o a chi vuole semplicemente avere a disposizione nella propria azienda un install server costantemente accessibile da qualunque client, totalmente indipendente dalla rete esterna e dai vari cd/dvd sparsi qua e la`.
In questo tutorial viene spiegato come creare il tutto con Sarge ma non vi e` alcuna difficolta` ad aggiungere anche i rami testing e unstable, l'importante e` che vengano ricreati ogni volta gli indici con dpkg-scanpackages.
Addirittura su REP si puo` creare un ramo "fittizio" chiamato UPDATES o simili dove scaricare i pacchetti aggiornati da security.debian.org, per poi renderli disponibili ai vari client. In questo modo gli aggiornamenti vengono scaricati solo una volta su REP per poi distribuirli via lan ai client, con notevole risparmio di tempo e banda. |
|
Top |
|
|
horus Macchinista
Registrato: 22/03/05 09:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 31 Ott 2005 15:33 Oggetto: |
|
|
Bella guida. Ne approfitto e ti chiedo qualche informazione.
1) che differenza c'è a fare dpkg-scanpackages con /dev/null piuttosto che con un file di indice? Quale dei due è migliore?
2) C'è qualche comando/script per creare in automatico il file di indice? Attualmente me lo sono fatto da windows (avevo l'ambiente .net sotto mano), leggo i nomi dei file nella cartella e creo il file mettendo nome_pacchetto priorità sezione ma ovvimente la cartella deve essere raggiungibile da win. Vorrei poter fare la stessa cosa senza dover riavviare tuttte le volte, dici che devo rispolverare il vecchio C e farlo con quello oppure ci sono soluzioni più facili?
3) se creo l'indice la priorità cosa mi rappresenta? Io per ora metto sempre low ma magari sbaglio. |
|
Top |
|
|
The_Noise Eroe in grazia degli dei
Registrato: 27/04/05 15:35 Messaggi: 103
|
Inviato: 31 Ott 2005 16:52 Oggetto: |
|
|
Personalmente non ho mai approfondito, ma, se può interessare, sul wiki guide@debianizzati.org c'è una sezione dedicata proprio alla gestione dei pacchetti lato server con guide riguardo questa ed altre soluzioni più o meno equivalenti:
Gestione_dei_pacchetti_Lato_Server
Bye |
|
Top |
|
|
anyfile Semidio
Registrato: 27/08/05 16:20 Messaggi: 408
|
Inviato: 31 Ott 2005 23:21 Oggetto: scaricarsi un singolo pacchetto sul c ed installarlo |
|
|
Ma e' possibile scaricarsi un singolo pacchetto su un pc ed installarselo?
(e come secondo punto, poi usare lo stesso pacchetto per installarlo su altri pc)
senza dover dire ai pc da che repository proviene?
Io con RedHat ed rpm ci riuscivo ... bastava prelevare (come fosse un file qualsiasi) il file .rpm e poi farglieelo installare. |
|
Top |
|
|
dAb Dio minore
Registrato: 21/06/05 23:15 Messaggi: 858 Residenza: montana e piovosa
|
Inviato: 01 Nov 2005 00:14 Oggetto: |
|
|
horus ha scritto: | Bella guida. Ne approfitto e ti chiedo qualche informazione.
1) che differenza c'è a fare dpkg-scanpackages con /dev/null piuttosto che con un file di indice? Quale dei due è migliore?
|
Spe`, /dev/null non e` al posto di un file indice ma al posto di un ovverride file. man dpkg-scanpackages per i dettagli.
Citazione: |
2) C'è qualche comando/script per creare in automatico il file di indice? Attualmente me lo sono fatto da windows (avevo l'ambiente .net sotto mano), leggo i nomi dei file nella cartella e creo il file mettendo nome_pacchetto priorità sezione ma ovvimente la cartella deve essere raggiungibile da win. Vorrei poter fare la stessa cosa senza dover riavviare tuttte le volte, dici che devo rispolverare il vecchio C e farlo con quello oppure ci sono soluzioni più facili?
|
Ci ho capito niente
Uno script per creare i file indice? E` lo stesso dpkg-scanpackages che ci pensa..
Citazione: |
3) se creo l'indice la priorità cosa mi rappresenta? Io per ora metto sempre low ma magari sbaglio. |
Low?
La priorita` del pacchetto e` selezionabile tra Essential Required, Important, Standard, Optional ed Extra. Serve ai package manager come apt e dselect per ordinarli per categorie. |
|
Top |
|
|
dAb Dio minore
Registrato: 21/06/05 23:15 Messaggi: 858 Residenza: montana e piovosa
|
Inviato: 01 Nov 2005 00:15 Oggetto: Re: scaricarsi un singolo pacchetto sul c ed installarlo |
|
|
anyfile ha scritto: | Ma e' possibile scaricarsi un singolo pacchetto su un pc ed installarselo?
(e come secondo punto, poi usare lo stesso pacchetto per installarlo su altri pc)
senza dover dire ai pc da che repository proviene?
Io con RedHat ed rpm ci riuscivo ... bastava prelevare (come fosse un file qualsiasi) il file .rpm e poi farglieelo installare. |
ftp://ip_REP/percorso_al_pacchetto per scaricarlo, dpkg -i nomepacchetto per installarlo. |
|
Top |
|
|
horus Macchinista
Registrato: 22/03/05 09:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 02 Nov 2005 09:00 Oggetto: |
|
|
In effetti mi sono espresso male. Provo a chiarire. Ho una ubuntu che se non erro si basa sulla debian quindi dovrebbe funzionare quasi allo stesso modo.
Seguendo questa guida ho creato la cartella e ci ho messo i .deb, ho creato l'override file (prima avevo sbagliato a chiamarlo indice) con la struttura consigliata:
Citazione: | Nome Priorità Sezione
dove nome è il nome del pacchetto, ad esempio per il pacchetto acroread-plugin_5.09-0.0_i386.deb il nome sarà acroread-plugin, priorità può assumere un valore low, medium, high, sezione è il nome della sezione nella quale troveremo il pacchetto in Synaptic. |
poi dpkg .... ecc.
Ora con synaptic io i pacchetti li vedo effettivamente nella sezione che io ho chiamato "HDLocale".
Riformulo le domande.
1) che differenza c'è a fare dpkg-scanpackages con /dev/null piuttosto che con un override file? Quale dei due è migliore?
2) C'è qualche comando/script per creare in automatico l'override file? Se nella mia repository locale aggiungo 1 file .deb posso anche aprire l'override file e inserire la riga a mano ma se i .deb sono 10 o 20 o più non mi va di farlo a mano (sai... la pigrizia).
Mi sono fatto un programmino in C# che legge i nomi dei file nella cartella repository e crea l'override file impostandolo come voglio io. Il problema ora è che: avvio windows > copio i .deb in una cartella su una partizione fat > lancio il programmino > riavvio per avere linux > sposto i file nella cartella appropriata > eseguo dpkg-ecc.
Come dicevo prima sono pigro e quindi vorrei sapere se esiste un tool su linux per creare in automatico un override file data una cartella contenente n file .deb. In caso contrario vorrà dire che proverò a rifare il mio programmino in C sotto linux (che editor mi consigli per programmare in C in ubuntu?) |
|
Top |
|
|
The_Noise Eroe in grazia degli dei
Registrato: 27/04/05 15:35 Messaggi: 103
|
Inviato: 02 Nov 2005 10:13 Oggetto: |
|
|
Non c'è bisogno di rispoverare il C. Per questo tipo di operazioni la shell di linux (bash) è lo strumento più adatto. Con una linea del genere, lanciata da una directory che contiene i pacchetti .deb:
Codice: |
for f in *.deb; do echo "sezione priority ${f%%_*deb}" >> overrifefile ; done
|
viene aggiunta alla fine del file chiamato "overridefile", nella dir corrente, la lista che cerchi.
Il ciclo assegna, ad ogni iterazione, alla variabile $f il nome di un file che termina in .deb nella dir corrente. Il trucco è usare l'operatore %% sulla stringa f. Questo %% permettere di togliere dalla fine di una stringa la più lunga sottostringa che soddisfa una espressione regolare. Nel nostro caso la più lunga sottostringa che inizia con _ e termina con deb. Quindi con ${f%%_*deb} otteniamo il nome del pacchetto (quando in $f c'è il nome del file). Il comando echo è una specie di print e >> rappresenta la redirezione in coda ad un file.
Devi sostituire sezione e priority con i valori che vuoi impostare.
Bye |
|
Top |
|
|
horus Macchinista
Registrato: 22/03/05 09:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 03 Nov 2005 08:48 Oggetto: |
|
|
Capperi, grazie, non sapevo che si potessero usare i cicli in quel modo.
Stasera provo.
Già che ci siete, esiste un modo di dire a synaptic di cercare i file prima nella cartella locale e poi nei repository ufficiali? |
|
Top |
|
|
dAb Dio minore
Registrato: 21/06/05 23:15 Messaggi: 858 Residenza: montana e piovosa
|
Inviato: 04 Nov 2005 21:06 Oggetto: |
|
|
Se non vado errato lo fa gia` di suo, nel senso che se due identici pacchetti si trovano sia in locale che in remoto viene scaricato solo quello che viene incontrato per primo in base all'ordine del sources.list, e se sono diversi viene scaricato il piu` recente. Verifichero`. |
|
Top |
|
|
The_Noise Eroe in grazia degli dei
Registrato: 27/04/05 15:35 Messaggi: 103
|
Inviato: 05 Nov 2005 16:34 Oggetto: |
|
|
Si esatto, a meno di non impostare il pinning (ovvero la preferenza sui repository) viene data la precedenza al primo repository incontrato in source.list che contiene il pacchetto, a parità di versione.
Per maggiori informazioni sul pinning: APT_uso_avanzato:_mixare_releases_diverse |
|
Top |
|
|
The_Noise Eroe in grazia degli dei
Registrato: 27/04/05 15:35 Messaggi: 103
|
Inviato: 05 Nov 2005 16:41 Oggetto: |
|
|
horus ha scritto: | Capperi, grazie, non sapevo che si potessero usare i cicli in quel modo.
Stasera provo.
|
Eh eh he! Mai sottovalutare la potenza di bash! I cicli ti tornano utili in un mare di casi e una volta imparati sono facilissimi da usare. Se poi conosci il C è solo una questione di imparare la sintassi.
Avere un linguaggio di scripting integrato nella shell permette di fare davvero la qualunque, ed in maniera immediata .
PS Se ti interessa approfondire (ma proprio fino in fondo) la programmazione di shell puoi guardare l'ottima "Advanced Bash-Scripting Guide".
Bye. |
|
Top |
|
|
|