Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* [Debian] Creazione di un repository personale
Nuovo argomento   Rispondi    Indice del forum -> Linux
Precedente :: Successivo  
Autore Messaggio
dAb
Dio minore
Dio minore


Registrato: 21/06/05 23:15
Messaggi: 858
Residenza: montana e piovosa

MessaggioInviato: 30 Ott 2005 20:30    Oggetto: * [Debian] Creazione di un repository personale Rispondi citando

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
Profilo Invia messaggio privato HomePage MSN
horus
Macchinista
Macchinista


Registrato: 22/03/05 09:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 31 Ott 2005 15:33    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
The_Noise
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 27/04/05 15:35
Messaggi: 103

MessaggioInviato: 31 Ott 2005 16:52    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
anyfile
Semidio
Semidio


Registrato: 27/08/05 16:20
Messaggi: 408

MessaggioInviato: 31 Ott 2005 23:21    Oggetto: scaricarsi un singolo pacchetto sul c ed installarlo Rispondi citando

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
Profilo Invia messaggio privato
dAb
Dio minore
Dio minore


Registrato: 21/06/05 23:15
Messaggi: 858
Residenza: montana e piovosa

MessaggioInviato: 01 Nov 2005 00:14    Oggetto: Rispondi citando

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 Mr. Green

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? Question

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
Profilo Invia messaggio privato HomePage MSN
dAb
Dio minore
Dio minore


Registrato: 21/06/05 23:15
Messaggi: 858
Residenza: montana e piovosa

MessaggioInviato: 01 Nov 2005 00:15    Oggetto: Re: scaricarsi un singolo pacchetto sul c ed installarlo Rispondi citando

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
Profilo Invia messaggio privato HomePage MSN
horus
Macchinista
Macchinista


Registrato: 22/03/05 09:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 02 Nov 2005 09:00    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
The_Noise
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 27/04/05 15:35
Messaggi: 103

MessaggioInviato: 02 Nov 2005 10:13    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 09:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 03 Nov 2005 08:48    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
dAb
Dio minore
Dio minore


Registrato: 21/06/05 23:15
Messaggi: 858
Residenza: montana e piovosa

MessaggioInviato: 04 Nov 2005 21:06    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato HomePage MSN
The_Noise
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 27/04/05 15:35
Messaggi: 103

MessaggioInviato: 05 Nov 2005 16:34    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
The_Noise
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 27/04/05 15:35
Messaggi: 103

MessaggioInviato: 05 Nov 2005 16:41    Oggetto: Rispondi

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 Wink.

PS Se ti interessa approfondire (ma proprio fino in fondo) la programmazione di shell puoi guardare l'ottima "Advanced Bash-Scripting Guide".


Bye.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linux Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi