Pacspeed - Pacman con download paralleli e connessioni multiple

Condividi con noi i tuoi progetti e guide personali
Avatar utente
TheSaint
Robin Hood
Messaggi: 7956
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 16 aprile 2011, 16:01

4javier ha scritto:Ma questo sarebbe un progetto totalmente diverso...si tratterebbe di patchare pacman, mentre noi lo abbiamo impostato solo come un wrapper.
Io non voglio sovvertire il buon lavoro che avete fatto :). Potrebbe esser un progetto diverso.
Tanto da citare la frase non c'e' da patchare pacman. Si usa uno scaricatore diverso da quello di pacman, come esiste(va) pacget oppure wget o curl. Solo il metodo di scaricare i pacchetti dovrebbe esser gestito in multithread e/o tramite aria2c.
Beh, domani provo quale esperimento..... Ma credo che di optare per python. Sebbene bash riesca a dare una buona resa, ma come tanti altri sono agli inizi di programmazione e magari un obbrobrio lo faccio :)
Ultima modifica di TheSaint il 16 aprile 2011, 16:09, modificato 1 volta in totale.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Messaggio da 4javier » 16 aprile 2011, 16:36

Sai che ci stavo pensando giusto poco fa, quando mi sono accorto che pacspeed può essere molto semplificato :/
Tra python e bash per me non c'è molta differenza, sono una pippa con entrambi allo stesso modo...per ora comunque continuerò con pacspeed. Facci sapere come procede :)
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7956
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 16 aprile 2011, 18:20

Xyne e' ritornato. Qui e' tardi, vedo un po' domani
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7956
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 17 aprile 2011, 9:27

Chissa' se possiamo metterlo in packer
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 17 aprile 2011, 11:21

spero non sia tempo perso quello che state facendo.. ma ora a che versione siate arrivati? mi son perso...
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

franz1789
Arciere Provetto
Messaggi: 410
Iscritto il: 23 giugno 2008, 14:58

Messaggio da franz1789 » 17 aprile 2011, 12:27

Magari dico una cretinata, ma non si potrebbe cercare di inserirlo in clyde? lo sviluppo va un po' a rilento ed è davvero ottimo..

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Messaggio da 4javier » 17 aprile 2011, 12:59

@TheSaint
se creiamo un backend di download per pacman, potrà essere usato per qualsiasi progetto, semplicemente inserendolo in pacman.conf.
@veleno
Come versione per ora siamo sempre alla b4, mi sono fermato un po' per fare un minimo di progettazione.
Riguardo al tempo perso: se ti riferisci al fatto che si stia riscrivendo la ruota, non è un timore, è una garanzia! :) Sapevo già che xyne aveva riavviato i suoi progetti, c'ho anche fatto una chiacchierata 4-5 giorni fa in un suo thread sul forum internazionale. Oltretutto, da quando mi sono fermato, sto ragionando su ciò che potrei scremare dall'attuale script, e mi sto sempre più convincendo che alla fine si può arrivare a scrivere un semplice backend, cosa che renderebbe il progetto molto più "robusto". Anche questo c'è già (non so se funzioni ancora, ma credo di si).
Tempo perso per me no, considerando che prima d'ora non avevo mai praticamente usato sed ed awk, e che era un bel po' che non rispolveravo bash, per quello ho continuato. Lo scopo didattico è stato raggiunto. :)
@franz
Vale la stessa risposta data a TheSaint. ;)
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

franz1789
Arciere Provetto
Messaggi: 410
Iscritto il: 23 giugno 2008, 14:58

Messaggio da franz1789 » 17 aprile 2011, 13:04

Credo sia molto interessante la possibilità di far diventare il progetto un backend, renderebbe il progetto molto più interessante dei vari powerpill, bauerbill, packer e altri, dato che potrebbe essere usato al contempo sia in pacman che in un aur-helper..

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Messaggio da 4javier » 17 aprile 2011, 13:17

credo che pomeriggio mi documenterò in base all'output che si aspetta pacman, e vedrò di cambiare tutto il progetto.
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 17 aprile 2011, 14:17

Ok... bene.. aspetterò ulteriori versioni... certo che se si arriva a creare un backend come dici tu da inserire solamente in pacman.conf.... c'è comunque da leccarsi le dita credo...
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

Avatar utente
TheSaint
Robin Hood
Messaggi: 7956
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 17 aprile 2011, 14:59

Potresti adottare airpac :P che e' tutto da ottimizzare.
Ora spiego perche' fare con python:
.
1) riesci ad istruire aria con rpc/xml. Ma forse si riesce anche con bash ad impostare con xinetd
2) La trattazione dei dati di python e' ben evoluto senza la dipendenza di programmi esterni
3)Python c'e' (anche awk e sed, se vogliamo :P )
4) Il riuso degli oggetti, grande articolazione con l' uso di classi.
5) potrebbe utilizzare la propria libreria per scaricare, ma aria e' un bel lavoro ;)
6) ampliare con interfaccia grafica....... Anche con (x|k)dialog si arriva :)

Ritengo anche che bash, ha le carte buone per poter fare le cose, in parte python ha ereditato alcune cose.
Ora senza smontare tutto, abbiamo un attrezzo che svolge i suo lavoro, magari inefficienza, ma e' bello cosi' come si apprezza Yaourt contro Packer.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Messaggio da 4javier » 17 aprile 2011, 15:04

Ok, quello che vorrei fare già lo fa pacget, forse solo non in parallelo. L'idea sarebbe di aggiungere questa funzionalità allo scritpt (non sono sicuro che non lo faccia già), ma sinceramente non ho voglia di andare a spulciare i sorgenti di pacman per capire quali argomenti passa allo script impostato come download manager e quali si aspetta di ricevere dallo stesso. :P Salvo notizie differenti quindi, credo che il progetto muoia qui.
@Veleno
aspetta Dieghen e poi vedi se è il caso di lockare e levare lo sticky.
Grazie a tutti per il supporto :)

EDIT
@TheSaint
Leggo solo ora il tuo ultimo messaggio. Sinceramente dalla descrizione di airpac, non riesco a capire se sia un backend o un wrapper. Se è un wrapper, lo ritengo sbagliato proprio come impostazione: lo stesso errore che stavamo facendo con pacspeed, ci si prende la briga di gestire cose che in realtà già gestisce pacman: lavoro inutile. Se invece (come credo che sia) è un backend...è uguale a pacget ma con meno funzioni...non vedo a che pro la sua presenza :)
Ultima modifica di 4javier il 17 aprile 2011, 15:10, modificato 1 volta in totale.
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

Avatar utente
dieghen89
Little John
Messaggi: 1310
Iscritto il: 28 novembre 2008, 17:53
Località: Provincia di Udine
Contatta:

Messaggio da dieghen89 » 17 aprile 2011, 15:14

@4javier
pacget andrebbe benissimo ma come hai evidenziato tu non scarica in parallelo da più mirror, si limita solo a utilizzare N connessioni per pacchetto ma non lavora in parallelo...
Mi piacerebbe approfondire i sorgenti di pacman, ma vorrebbe dire tornare a spulciare i miei appunti di C :)
XPS 13 Developer Edition i7-4650U/hd5000 + KDE
Eeepc 1015PEM Black + KDE Minimal + kernel-netbook + acpi-eeepc-1015pem --> GUIDA

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Messaggio da 4javier » 17 aprile 2011, 15:18

ma sei sicuro?
# For db files, or when using a custom repo (which most likely doesn't have any mirror),
# use only the URL passed by pacman; Otherwise, extract the list of servers (from the include file of the repo) to download from
io per download parallelo, intendevo che non scaricasse più pacchetti contemporaneamente, ma credo che comunque scarichi da diversi mirror le parti di uno stesso pacchetto.
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

Avatar utente
dieghen89
Little John
Messaggi: 1310
Iscritto il: 28 novembre 2008, 17:53
Località: Provincia di Udine
Contatta:

Messaggio da dieghen89 » 17 aprile 2011, 15:28

Si allora pacget da quanto ho visto, prende un singolo pacchetto, lo divide e ogni parte viene scaricata da un mirror diverso....imho, è più vantaggioso oltre a questo aggiungere anche download paralleli...

E pensare che basterebbe appena qualche decina di righe in C :/
XPS 13 Developer Edition i7-4650U/hd5000 + KDE
Eeepc 1015PEM Black + KDE Minimal + kernel-netbook + acpi-eeepc-1015pem --> GUIDA

Avatar utente
veleno77
Moderatore
Messaggi: 6282
Iscritto il: 25 marzo 2008, 18:26
Architettura: x86 (32Bit)
Località: Torino
Contatta:

Messaggio da veleno77 » 17 aprile 2011, 16:17

emmmm morale della favola?
Se avete risolto il vostro problema, editate il primo post aggiungendo [Risolto] al titolo.
Problemi con Arch ? 1°Metodo-2°Metodo-3°Metodo
ArchWiki Translation Team - Cerchiamo traduttori!

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Messaggio da 4javier » 17 aprile 2011, 16:39

Dando un'occhiata a pacget mi pare di aver capito che le variabili in gioco siano solo due e siano entrambe in input al download manager,
$1=URI remoto del pacchetto es. http://www.mirror1.com/vari/sotto/domin ... pkg.tar.xz
$2=URI locale dove piazzare il file scaricato es. /dir/cache/di/pacman/papparapà.pkg.tar.xz
catturato l'exit0 del download manager, pacman provvede a mandargli $1 e $2 associati al successivo pacchetto.
In bash mi pare un pochino laborioso implementare il download multiplo, ammesso che sia fattibile.
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7956
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 18 aprile 2011, 16:54

Per quello che ho capito di airpac, si mette a pacman.conf, come scaricatore al posto di pacman.
Nel suo script leggo che rileva la lista dei mirror e divide il pacchetto per un certo numero di mirrors.
E' alquanto difficile trovare il pacchetto, anch' io ho solo lo script di python.
Per quello che s'e' fatto con pacspeed e' gia' efficace, basterebbe scrivere all' autore di aria per alcune correzioni sul l' output di aria, sembra che il log-level non funzioni come sperato.
Al limite si potrebbe filtrare, anche con la funzione di airpac :P
@veleno77 la morale si puo' dire fatto ed anche soddisfacente :P
Ultima modifica di TheSaint il 18 aprile 2011, 16:55, modificato 1 volta in totale.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7956
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 2 maggio 2011, 10:11

Ho tolto un po' di verbosita' ad aria2c. La modifica si riferisce alla funzione download()

Codice: Seleziona tutto

download() {
    if [[ $total_size != 0 ]]; then
        while true; do
        read -p "Vuoi eseguire il download? [S/n] " Sn
        case $Sn in

                 ""|[Ss]) aria2c    -i /tmp/addresslist $ariaconf |grep '[#'; break;;
                [Nn]) exit;;
                *) echo "Type S or N"
            esac
        done
    fi

}
Vorrei che rimuovesse anche il ritorno a capo, ma non son sicuro se sia un pipe ad echo -e ...
in pratica e' stato aggiunto solo un grep alla linea aria2c -i /tmp/addresslist $ariaconf
.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Messaggio da 4javier » 2 maggio 2011, 13:01

Grazie del contributo The_saint, anche se in realtà ho abbandonato il progetto, in quanto ritengo che creare un wrapper sia un lavoro inutile. Troppi casi di considerare, con l'unico vantaggio rispetto ad un backend di parallelizzare i download. Credo che allo stato attuale la soluzione migliore sia pacget, che comunque sfrutta il multi-sorgente, anche se solo per un pacchetto alla volta. Per la struttura attuale di pacman, credo sia impossibile implementare il parallelismo in maniera "pulita".
In sintesi, credo che pacget sia lo stato dell'arte.
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

Avatar utente
dieghen89
Little John
Messaggi: 1310
Iscritto il: 28 novembre 2008, 17:53
Località: Provincia di Udine
Contatta:

Messaggio da dieghen89 » 2 maggio 2011, 13:11

A me piacerebbe continuare solo a fini didattici, ma come ho scritto quando ho aperto il progetto, tempo ne ho poco...

Sarebbe veramente una cosa stupenda se qualcuno proponesse (e venisse accettata) una patch per pacman che permette l'esportazione dei nomi di tutti i pacchetti insieme e non solo uno alla volta...In queste condizioni l'implementazione dei download paralleli sarebbe semplicissima...
XPS 13 Developer Edition i7-4650U/hd5000 + KDE
Eeepc 1015PEM Black + KDE Minimal + kernel-netbook + acpi-eeepc-1015pem --> GUIDA

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Messaggio da 4javier » 2 maggio 2011, 13:17

Si, ma a quel punto non avrebbe proprio senso creare un wrapper, il backend avrebbe tutti i vantaggi :)
Per la cronaca, se volete ancora contribuire a pacspeed, mi sono accorto che --ignore non funziona, mi stampa a raffica la parola ignore :/
Comunque appena ho tempo testo la patch di the_saint e magari rilascio un'altra versione.
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

Avatar utente
dieghen89
Little John
Messaggi: 1310
Iscritto il: 28 novembre 2008, 17:53
Località: Provincia di Udine
Contatta:

Messaggio da dieghen89 » 2 maggio 2011, 13:18

Si chiaro, intendevo ad un implementazione in pacget ;)
XPS 13 Developer Edition i7-4650U/hd5000 + KDE
Eeepc 1015PEM Black + KDE Minimal + kernel-netbook + acpi-eeepc-1015pem --> GUIDA

Avatar utente
TheSaint
Robin Hood
Messaggi: 7956
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 2 maggio 2011, 15:12

Io ritengo eccellente perche' mi da download al 400%. Da casa che so che non ho interferenze, mi da banda piena.
Se ci fosse accesso a libalpm, cosa si guadagnerebbe?
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Messaggio da 4javier » 2 maggio 2011, 16:03

non credo che libalpm fornisca binding per linguaggi differenti dal C. Il punto non è che un wrapper sia poco utile, anzi allo stato attuale è il sistema che ti consente d spremere al massimo la tua connessione. Il rovescio della medaglio però, è che si deve occupare di tutte le situazioni, mentre un backend piglia un elenco di indirizzi, li elabora come meglio crede, sputa fuori un elenco di uri locali, e poi se la vede pacman. Considerato che attualmente l'unica mancanza del backend è la non possibilità di avere il download parallelo, penso che questo gioco non valga la candela di impelagarsi nella scrittura di un wrapper, che come abbiamo visto, data la sua complessità, è un meccanismo estremamente fragile.
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

Rispondi