Gestire un repository sembra semplice, ma non lo è affatto, o meglio, porta via molto tempo.
Per questo ieri noi di deelab abbiamo iniziato a scrivere un tool per facilitare la gestione del proprio repo: RepoMan.
Con repoman è possibile aggiungere, rimuovere e aggiornare i pacchetti del proprio repo eseguendo un solo script.
Il programma infatti scarica gli archivi direttamente da AUR, gli estrare e chiede se si vogliono fare delle modifiche ai PKGBUILD dopodichè compila i pacchetti e li inserisce/elimina nel database del repository.
Natualmente lo trovate su AUR ;)
Vi allego qualche immagine per capirne meglio il funzionamento:



Io uso (per ora e da molto tempo) yaourt e mi trovo molto bene. lo utilizzo per default, non uso pacman.
Curioso di vedere l’evoluzione di questo strumento :-)
non è nel modo più assoluto uno strumento per sostituire pacman/yaourt o qualsiasi gestore di pacchetti.
è uno script che permette di gestire in modo semplice e veloce un repository personale
Tool interessantissimo :D
E’ anche in grado anche di creare un repo da zero?
@ Stefano
c’ho giusto pensato ieri sera :)
dalla r27 c’è –create va usata così:
repoman –create package1 package2 … packageN
naturalmente prima devi configurare per bene /etc/repoman.conf
Ottimo, sicuramente un ottimo tool ;)
Stasera lo installo e ci “smanetto” un pò :P
funziona anche coi pacchetti che stanno in [community]? mi spiego .. il problema che mi trovo maggiormente ad affrontare con yaourt è la compilazione di programmi che stanno in [community] (e*-svn per esempio), con questo tool è possibile gestire un repo che contiene anche quei pacchetti?
@ furester
in modo indiretto. mi spiego meglio:
puoi copiare il tarball in $workspace/pkgs/
in questo modo lui vede l’archivio, non lo cerca su AUR, ma compila quello
pero` nel caso il PKGBUILD venga aggiornato in AUR io perderei la sincronizzazione, giusto? non e` una cosa gravissima a dire il vero, ma di certo faciliterebbe un po’ la vita.
Oggi sono riuscito a provarlo…. tutto ok :D
Però quando sono andato a cancellare un pacchetto dal repo (repoman -R pacchetto), ha fatto tutto regolarmente, tranne cancellare il pacchetto dal server. E’ giusto così?
@ Stefano
quale revision stai usando? dalla r56 cancella il pacchetto sull’ftp
L’ ho installato ieri sera con yaourt…..
@ Stefano
allora no, reinstallalo :)
Ok, stasera aggiorno ;)
Ti scrivo un paio di idee che mi sono balzate alla mente, magari sono cavolate o magari ci hai già pensato….
1- permettere un aggiornamento “globale” (repoman -A –all)
2- nel changelog segnalare da che versione si è aggiornato (02-09-2008 12:36 root pacchetto 0.1 –> 0.2)
@ Stefano
ok, la prima opzione l’ho già implementata
per la seconda non sono molto convinto…vedremo :)
grazie
Aggiornato alla revisione 71-1 :)
Mi da un errore con l’ aggiornamento globale:
[root@ArchBox stefano]# repoman -A --all
Questa opzione aggiornerà l'intero repository!
errore: impossibile trovare il repository "openmind".
Pacchetti:
Sto scaricando: ChangeLog openmind.db.tar.gz
Sto estraendo: Sto compilando: Sto aggiornando: openmind.db.tar.gz
Sto aggiornando: ChangeLog
cat: /tmp/header: No such file or directory
ChangeLog inviato!
openmind.db.tar.gz inviato!
Vuoi rimuovere la directory di compilazione del pacchetto? (s/N): s
@stefano
probabilmente non hai il re pository openmind in pacman.conf
appena torno a casa lo sistemo comunque
grazie
@stefano
scusa sopra ho detto una cazzata…Ho già il fix ma lo implemento appena torno
Azz devi tornare dalla Norvegia…… :P
Non ti preoccupare, per il resto funziona alla grande. Farà risparmiare un sacco di tempo a chi ha un repo ;)
fixato nella r72
Appena aggiornato alla r77….. con l’ aggiornamento globale ho ancora un errore:
[root@ArchBox stefano]# repoman -A --all
Questa opzione aggiornerà l'intero repository!
Pacchetti:
Sto scaricando: ChangeLog openmind.db.tar.gz
Sto estraendo: Sto compilando: Sto aggiornando: openmind.db.tar.gz
Sto aggiornando: ChangeLog
cat: /tmp/header: No such file or directory
ChangeLog inviato!
openmind.db.tar.gz inviato!
ma è perchè non la usi nel modo giusto…
$ repoman –all
repoman -all non me lo prende…..
repoman (meno) (meno) all
inoltre usa la r81
Con la 77 dava lo stesso errore. Adesso ho aggiornato alla 83 e mi da questo:
[root@ArchBox stefano]# repoman --all
Questa opzione aggiornerà l'intero repository!
You must enable openmind repository in pacman. Exiting.
Se abilito il repo in pacman.conf invece funziona tutto
Devi abilitare il repository openmind in /etc/pacman.conf
quindi pacman -Sy e poi repoman –all
per ora è l’unico modo per ricompilare tutto il repository…comunque stiamo lavorando ad una soluzione migliore
[...] deciso ad aggiornare il mio repository. Ad essere sincero devo ringraziare Bash e il suo ottimo repoman, che in pochi click consente di tenere aggiornato il proprio repository (per Archlinux [...]
Aggiornato alla 96….. che dire, mi sembra perfetto adesso :D
Ottimo lo skip dei pacchetti già aggiornati nell’ aggiornamento globale ;)
Errore con la 122:
[root@ArchBox stefano]# repoman --all...
Sto estraendo: amule-adnza-cvs floola gollage juploadr pando repoman-svn thinliquidfilm
Sto scaricando tutte le versioni dei pacchetti...
Makepkg terminato con errore.
Sto compilando: amule-adnza-cvs (94-4): già aggiornato
gollage (): /usr/bin/repoman: line 132: [: 0: unary operator expected
/usr/bin/repoman: line 135: [: 0: unary operator expected
già aggiornato
risolto nella r124
Aggiornato alla 127: non c’ è più quell’ errore, ma ricompila tutti i pacchetti sistematicamente senza badare alla versione già presente nel repo.
Stesso problema con la 129 ;)
Ciao BaSh,
avrei un problemino..
quando lancio repoman –edit -A pacchetto, tutto viene compilato correttamente, ma alla fine mi restituisce una cosa del tipo:
Compilazione terminata: emesene-svn-linuxbox360 1532-1 x86_64 (dom dic 28 11:59:38 CET 2008)
Nessun pacchetto aggiunto al repository
Nel repoman.conf sotto l’URL del repository ho messo url=”http://linuxbox360.org/arch/x86_64″, i dati e le credenziali FTP sono corrette…
È un problema legato ai dati o ad altro, secondo te?
Scusa l’ignoranza ^^”
Ciao
ciao NitroRabber,
quel messaggio viene restituito quando non trova il pacchetto da inviare e questo potrebbe essere dovuto al fatto che probabilmente cambi il pkgname.
prova senza cambiare il pkgname.
Ciao,
ho provato a non modificare il nome del pkg, però non c’è verso, sempre lo stesso errore:
==> Compilazione terminata: emesene-svn 1532-1 x86_64 (dom dic 28 12:47:05 CET 2008)
Nessun pacchetto aggiunto al repository
Credo di aver risolto, ho dovuto eliminare i686 e lasciare solamente x86_64 nel PKGBUILD.
Ho avuto alcuni problemi con le directory, quando deve entrare nella cartella del repo sull’ftp sembra che cerchi sull’HDD…:
cd: Access failed: 550 Can’t change directory to /arch/x86_64: No such file or directory
Ammettiamo che crei una directory archrepo nella mia home e che si crei la sottodirectory “pkgs”. Dentro ci va tutto, l’ho capito, che poi verrà caricato sul server ftp. Ma se decido di modificare un PKGBUILD di un pacchetto dentro la directory pkgs. Come faccio con repoman a fargli compilare solo quel pacchetto con il PKGBUILD modificato e aggiornare la repo sul server ftp?