Pacspeed - Pacman con download paralleli e connessioni multiple

Condividi con noi i tuoi progetti e guide personali
Rispondi
Avatar utente
dieghen89
Little John
Messaggi: 1310
Iscritto il: 28 novembre 2008, 17:53
Località: Provincia di Udine
Contatta:

Messaggio da dieghen89 » 28 marzo 2011, 18:11

Premessa, il nome ancora non l'ho deciso, questo è solo provvisorio...

L'idea di questo progetto è nata oggi pomeriggio, da quando ho scoperto che powerpill è stato rimosso da Xyne e pacget è deprecato...
L'obiettivo è quello di dare a pacman la possibilità di parallelizzare i download dei pacchetti, download svolto con più connessioni.
Tutto questo è possibile grazie al download manager aria2c :)

L'implementazione più veloce sarebbe quella tramite XferCommand, come faceva pacget. Ma non c'è nessuna variabile passata da pacman per sapere quanti download ci sono in totale...Quindi non è possibile il download parallelo, ma si possono usare solo n connessioni per download.

La mia idea è quella di scrivere due script:

1) Il primo serve per contare il numero dei pacchetti da scaricare. L'idea è quella di creare qualcosa che sta sopra pacman (un po' come yaourt), e che riesca a redirigere da qualche parte i nomi/link dei pacchetti da scaricare. Questo script lancia pacman che di conseguenza lancia il secondo script:

2) Il secondo, come appena detto, viene invocato da XferCommand. È diviso in due sezioni. Nella prima controlla se il download è di un database (e procede come pacman di default con wget) o di pacchetti. Nella seconda legge la redirezione del primo script e con aria2c trova il metodo migliore per il download, parallelizzando tutto il possibile e usando n connessioni.

Ancora il lavoro è lungo, conosco il bash decentemente (ma non bene!) e sono sicuro che molte cose che io faccio con redirezioni e 1000 altri giri si possano fare con comandi specifici di cui io non ne sono a conoscenza...Quindi sarebbe utile qualcuno che controlli cosa combino :D
Il tempo che ho a disposizione non è mai tanto, è un progetto a fini didattici e poi, chissà, magari tornerà utile a qualcuno :)

Vorrei anche implementare rankmirrors per scegliere dinamicamente ogni aggiornamento il/i server più veloci :)

Come vedete le idee sembrano buone, vediamo cosa viene fuori :D Appena ottengo qualcosa di funzionante lo metto su AUR così potete testarlo e darmi le prime impressioni :D
Ultima modifica di dieghen89 il 28 marzo 2011, 18:16, modificato 1 volta in totale.
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 » 28 marzo 2011, 18:46

Ti faccio due domande da profano :
1- utilizzare due script e anche rankmirros non rallenta tutta la procedura? soprattutto rankmirrors.
2- Ma passare direttamente i parametri di aria2 a pacman cos'ha di così penalizzante rispetto al fu powerpill o alla tua idea?
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: 7813
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 28 marzo 2011, 18:50

Primo, BRAVO!!!!!
Secondo se utilizzasse XferCommand il comando dovrebbe ritornare subito per recepire un secondo URI e lo scaricamento andare in sottofondo. L' ultimo della lista o quando il carico e' al massimo dovrebbe temporeggiare pacman a non procedere.
Se guardi il mio post, all' inizio esiste un riferimento a qualcosa fatto in precedenza da Aleph
che non usa aria2c.
Lasciando a python a chi vuole sperimentarlo :P, la risposta potrebbe anche valere nella peparazione l' input file per aria2c.
Cosa hai scoperto in questa misura?
.
1) Io dico che si posson pompare gli URI dopo la lettura del risultato di rankmirror -n10 per chi vuole avere i mirror piu' veloci. Solo che questo potrebbe esser usato anche sporadicamente. In particolare coloro che son di postazione fissa, lo potrebbero fare solo quando arriva il mirrorlist nuovo.
.
2)Sapendo il nome del pacchetto si elabora degli URI con vari mirror e con le opzioni scelte in pacman.conf. Ovvero se l' utente ha scelto solo [core] non servirebbe aggiungere altri repositori. Che tra l' altro non troverebbe il file.
.
3) si prepara l' input file con accodati le opzioni che l' utente riterra' opportune.
.
Se invece si volesse fare in 2 passate : psedo-code

Codice: Seleziona tutto

pacman -Syup > pcklist.txt
for pck in $(cat pcklist.txt);do
        pack=baseURI($pck)
        elabora($pack) >>input_file_abbottato_di_tutto
done

#Non mi dire come si fa la funzione elabora
cat /etc/pacspeed.option >> input_file_abbottato_di_tutto
aria2c -i input_file_abbottato_di_tutto -d /var/cache/pacman/pkg

pacman -Syu
baseURI estrarrebbe i nome del pacchetto
elabora dovrebbe ripetere il pacchetto per un numero di server della lista dei mirror
Anche se ne dessimo 20 si puo' limitare aria2c ad un certo numero di servers attivi. Poi anche un certo limite dei servers a concedere scaricamenti multipli.
F the saint
12 anni da questo forum ;)

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

Messaggio da TheSaint » 28 marzo 2011, 18:59

veleno77 ha scritto:1- utilizzare due script e anche rankmirros non rallenta tutta la procedura? soprattutto rankmirrors.
rankmirrors, credo meriti un processo a parte w potreebbe esser usato qualche volta. Al limite si prende al posto della lista originale di mirrorlist, potrebbe anche usarsi reflector che e' stato ravvivato.
veleno77 ha scritto:2- Ma passare direttamente i parametri di aria2 a pacman cos'ha di così penalizzante rispetto al fu powerpill o alla tua idea?
pacman e' sequenziale, al limite puoi migliorare lo scaricamento di un file grosso dividendolo in piu' segmenti e/o piu' servers, ma non si mette a scaricare altri files della lista di un aggiornamento, salvo permettere un multitask di download. Alcuni aggiornamenti hanno quote di 2~300 Mb.
F the saint
12 anni da questo forum ;)

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

Messaggio da dieghen89 » 28 marzo 2011, 19:05

@veleno
il problema sono i download paralleli, che pacman con XferCommand non riesce a gestire...

@TheSaint

Allora ancora non ho provato niente, e devo vedere come si comporta pacman...
Il mio obiettivo ora è questo: pacman quando deve iniziare col primo download, lancia il comando in XferCommand, sperando di trovare la variabile %u e passargli il nome del primo pacchetto. Io non gliela do perchè ho già un file in /tmp contenente i miei url da scaricare. Quindi con il lancio del primo download, lo script viene lanciato, scarica già tutto e quando finisce torna la palla a pacman che dovrebbe ancora dargli i nomi gli altri pacchetti...Ora spero che pacman tenti di dare il secondo nome, quindi rilancia il download ma i file ci sono già tutti e così avanti fino all'ultimo.

Non mi piace tanto come cosa ma se il tutto è senza output e senza perdite di tempo si può fare...

L'altra alternativa è quella di scaricare i pacchetti al di fuori di pacman e lanciare solo il -Su al termine, come mi hai scritto nell'altra discussione di powerpill...A dire la verità mi piace già di più questa cosa :)

Riguardo rankmirrors (o reflector) pensavo di creare un file di configurazione dove l'utente decide se perdere quel secondo o due per il ping ai vari server oppure usarne uno predefinito....

Ah si, le opzioni di aria2c per ora le passo inline nello script, ma più avanti le metterò dentro il file di configurazione...
Ultima modifica di dieghen89 il 28 marzo 2011, 19:08, modificato 1 volta in totale.
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 » 28 marzo 2011, 19:30

capito.... ok allora resterò in attesa anche di questo progetto dopo yaourt-gui.. posso dare solo la disponibilità come tester....
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
dieghen89
Little John
Messaggi: 1310
Iscritto il: 28 novembre 2008, 17:53
Località: Provincia di Udine
Contatta:

Messaggio da dieghen89 » 28 marzo 2011, 20:12

Il problema più grande è forse riuscire a capire le mille milla configurazioni che si possono passare al -S...Devo trovare un buon metodo per parsare la command line e agire di conseguenza...

Una primissima anteprima la trovate qua su pastebin...Alla fine è più semplice inglobare tutto in uno script...
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 » 28 marzo 2011, 20:15

Premetto che per partecipare attivamente dovrei leggere per bene tutto il thread che per ora mi è un po' confuso. Comunque faccio due osservazioni:
- Per download parallelo, intendi diversi segmenti dallo stesso server? Se è così non mi piace molto, in quanto i prospettano due scenari:
--il server non ha limitazioni, impostando ad esempio 4 segmenti avrai più o meno 4 parti scaricate ~1/4 di una parte singola, non credo si abbia molto guadagno;
--il server è "cappato" ad un tot di banda per connessione, e se è così avrà i suoi buoni motivi, mi pare poco corretto "imbrogliarlo"

- Riguardo al lancio di rankmirrors, secondo me sarebbe bene impostare una variabile nel file di conf, in modo da far scegliere all'utente se lanciarlo o meno in base al peso del download. Se ho da scaricare 50 Mb di roba, val la pena perdere qualche secondo a selezionare i mirror in quel momento migliori, ma se devo aggiornare pochi pacchetti, ci si mette di più ad aggiornare la lista mirror che a scricare 4-500 Kb. La variabile imposterebbe la soglia.
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 » 28 marzo 2011, 20:21

@4javier
No download parallelo vuol dire più pacchetti insieme contemporaneamente...Poi se sono abbastanza grandi li splitta e usa più connessioni....Come dici tu è già implementabile e ne parla la pagina del wiki su Improve Pacman Performance....

Riguardo rankmirrors sì, ho già scritto che sarà l'utente a decidere via file di conf, ma mi piace la differenza tanti/pochi pacchetti ;)
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 » 29 marzo 2011, 1:12

Premesso che non ho modo di fare tentativi, in quanto ho carenza di output di pacman utili (purtroppo ho il sistema completamente aggiornato, quindi non posso fare test -.-"), se magari postate un output corposo di aggiornamenti di pacman lo copio in un file e lo uso per i test. Riguardo alla tua alpha, Dieghen:
1) --max-connection-per-server=3 /non mi piace, ok che è un attimo a cambiarlo ma metterlo multiplo di default... :/
2) non sfrutti le sorgenti multiple /hai intenzione di risolvere questo problema in seguito? Non mi pare complesso.
3) -Sw) /non sei già nel case -S? la condizione non dovrebbe essere solamente w?
4)

Codice: Seleziona tutto

num_update=$(pacman -Sup | wc -l)
let "num_update -= 1"
# redirigo i link dei pacchetti da scaricare in /tmp
pacman -Sup | tail -n $num_update >> /tmp/pacspeed.link
/questa parte non mi piace granchè, mi pare ridondante e troppo macchinosa. Appena avrò un output su cui fare prove proporrò qualcosa di diverso.
5)--dir=/media/DATI/CACHE_PACMAN /questo ovviamente l'hai "hardcoded" per le esigenze specifiche del tuo sistema, ma poi verrà modificato, giusto?
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 » 29 marzo 2011, 7:23

Idem come te...È tutto ieri che ho solo un aggiornamento e non ho avuto modo di testare niente...

1) Dopo tutti i parametri da passare ad aria2 li metto nel file di conf e qua chiamerò solo le variabili...per ora sta testando questa configurazione
2) --max-concurrent-downloads=5 dovrebbe scaricare 5 file contemporaneamente ma come premesso non ho avuto modo di avere 5 aggiornamenti
3) Sto studiando un modo migliore per parsare i parametri di entrata...sto dando un occhiata a yaourt e devo dire che hanno studiato una bella cosa anche se abbastanza complicata da capire
4) sicuramente si può fare qualcosa di migliore, ma per ora funziona....per pulire il codice, quando avrò implementato già tutto mi serviranno un po' di persone che sappiano il bash meglio di me
5) chiaro :)
XPS 13 Developer Edition i7-4650U/hd5000 + KDE
Eeepc 1015PEM Black + KDE Minimal + kernel-netbook + acpi-eeepc-1015pem --> GUIDA

psykopear
Little John
Messaggi: 800
Iscritto il: 28 ottobre 2007, 22:20

Messaggio da psykopear » 29 marzo 2011, 9:30

E' abbastanza corposo?

Codice: Seleziona tutto

??[root @ Athos -- 09:29:55] 
??[/]> pacman -Su
:: Aggiornamento del sistema in corso...
:: Vuoi sostituire libjpeg con extra/libjpeg-turbo? [S/n] 
:: Vuoi sostituire mailx con core/heirloom-mailx? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-ct2n? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-diagram? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-hunart? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-nlpsolver? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-numbertext? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-oooblogger? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-pdfimport? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-presentation-minimizer? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-presenter-screen? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-report-builder? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-typo? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-watch-window? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-extension-wiki-publisher? [S/n] 
:: Vuoi sostituire openoffice-base con extra/libreoffice-sdk? [S/n] 
:: Vuoi sostituire sdl_perl con extra/perl-sdl? [S/n] 
:: Vuoi sostituire util-linux-ng con core/util-linux? [S/n] 
attenzione: yelp: la versione installata (2.30.2-1) è più recente di quella presente in extra (2.30.1-2)
risoluzione delle dipendenze in corso...
ricerca dei conflitti in corso...

Da rimuovere (5): libjpeg-8.3.0-1  util-linux-ng-2.18-4  mailx-8.1.1-7  openoffice-base-3.3.0-1  sdl_perl-2.2.6-5

Dimensione totale dei pacchetti da rimuovere:   251,72 MB

Pacchetti (507): tzdata-2011d-1  glibc-2.13-4  ncurses-5.8-1  libx11-1.4.2-1  aalib-1.4rc5-8  libgl-7.10.1-1
                 libxt-1.1.1-1  mesa-7.10.1-1  acroread-9.4.2-1  iw-0.9.22-1  aircrack-ng-1.1-5  readline-6.2.001-1
                 bash-4.2.008-1  icu-4.6.1-1  boost-libs-1.46.0-4  libmysqlclient-5.5.10-2  mysql-clients-5.5.10-2
                 mysql-5.5.10-2  akonadi-1.5.1-2  alsa-lib-1.0.24.1-1  alsa-plugins-1.0.24-1  dialog-1.1_20110302-1
                 alsa-utils-1.0.24.2-1  gnutls-2.10.5-1  aria2-1.11.0-1  avahi-0.6.29-1  curl-7.21.4-2
                 libjpeg-turbo-1.1.0-1  gdk-pixbuf2-2.22.1-2  libnotify-0.7.1-1.1  ario-1.5-2  python2-2.7.1-7
                 asciidoc-8.6.4-1  attr-2.4.44-3  audacious-plugins-2.4.4-2  audacious-2.4.4-1  python2-numpy-1.5.1-2
                 avogadro-1.0.1-8  boost-1.46.0-4  bzr-2.3.0-1  cairo-1.10.2-2  chromium-10.0.648.204-1
                 libxi-1.4.2-1  clutter-1.6.6-1  cmus-2.3.4-2  dhcpcd-5.2.11-1  djvulibre-3.5.24-1  idnkit-1.0-1
                 dnsutils-9.8.0-1  dosfstools-3.0.11-1  openjdk6-6.b22_1.10-1  eclipse-3.6.2-1  librsvg-2.32.1-2
                 eina-svn-57387-1  eet-svn-57246-1  evas-svn-57457-1  ecore-svn-57503-1  e_dbus-svn-57317-1
                 embryo-svn-57246-1  edje-svn-57412-1  efreet-svn-57435-1  libsigc++-2.2.9-1  ekiga-3.2.7-4
                 elfutils-0.152-1  pm-utils-1.4.1-3  util-linux-2.19-4  udev-166-2  eeze-svn-57501-1  e-svn-57517-1
                 emprint-svn-57490-1  e-modules-extra-svn-57516-1  empathy-2.32.2-2  epiphany-2.30.6-3
                 poppler-0.16.3-1  poppler-glib-0.16.3-1  evince-2.32.0-8  libpst-0.6.49-2  evolution-2.32.2-4
                 exaile-0.3.2.1-1  exiv2-0.21.1-1  file-5.05-2  flashplugin-10.2.153.1-1  gavl-1.2.0-1
                 frei0r-plugins-1.3-1  ftgl-2.1.3rc5-2  gegl-0.1.6-1  gettext-0.18.1.1-3  gmime-2.4.23-1
                 gnome2-user-docs-2.32.0-2  gnome-applets-2.32.1.1-2  gnome-audio-2.22.2-1
                 gnome-disk-utility-2.32.1-1  gnome-power-manager-2.32.0-2  python2-egg-2.25.3-9  libgda-4.2.3-3
                 python2-gda-2.25.3-9  python2-gdl-2.25.3-9  python2-gksu2-2.25.3-9  python2-gtkhtml2-2.25.3-9
                 python2-gtkmozembed-2.25.3-9  python2-gtkspell-2.25.3-9  gnome-python-extras-2.25.3-9
                 gnome-screensaver-2.30.2-2  gnome-settings-daemon-pulse-2.32.1-4  gparted-0.8.0-2  gtk-doc-1.17-1
                 ibam-0.5.2-4  imagemagick-6.6.8.5-1  initscripts-2011.02.1-1  inkscape-0.48.1-2  intel-dri-7.10.1-1
                 jack-0.120.1-1  kdeaccessibility-colorschemes-4.6.1-1  kdeaccessibility-iconthemes-4.6.1-1
                 qt-4.7.2-5  strigi-git20110107-2  shared-desktop-ontologies-0.6.0-1  libdbusmenu-qt-0.8.1-1
                 phonon-4.5.0-1  kdelibs-4.6.1-3  keyutils-1.4-1  cifs-utils-4.9-1  tdb-1.2.9-1  talloc-2.0.5-1
                 smbclient-3.5.8-2  oxygen-icons-4.6.1-1  xorg-xauth-1.0.5-2  kdebase-runtime-4.6.1-1
                 speech-dispatcher-0.7.1-5  kdeaccessibility-jovie-4.6.1-1  kdeaccessibility-kaccessible-4.6.1-1
                 kdeaccessibility-kmag-4.6.1-1  kdeaccessibility-kmousetool-4.6.1-1  kdeaccessibility-kmouth-4.6.1-1
                 kdeadmin-kcron-4.6.1-1  kdeadmin-ksystemlog-4.6.1-1  kdeadmin-kuser-4.6.1-1  qscintilla-2.4.6-8
                 kdebindings-python-4.6.1-1  pycups-1.9.54-1  system-config-printer-common-1.3.1-1
                 kdeadmin-system-config-printer-kde-4.6.1-1  kdeartwork-aurorae-4.6.1-1
                 kdeartwork-colorschemes-4.6.1-1  kdeartwork-desktopthemes-4.6.1-1  kdeartwork-emoticons-4.6.1-1
                 kdeartwork-iconthemes-4.6.1-1  libraw1394-2.0.7-1  xorg-xprop-1.2.0-2  kdebase-workspace-4.6.1-1
                 v4l-utils-0.8.3-1  sane-1.0.22-1  kdegraphics-libs-4.6.1-1  kdeartwork-kscreensaver-4.6.1-1
                 kdeartwork-sounds-4.6.1-1  kdeartwork-styles-4.6.1-1  kdeartwork-wallpapers-4.6.1-1
                 kdeartwork-weatherwallpapers-4.6.1-1  kdebase-lib-4.6.1-1  kdebase-dolphin-4.6.1-1
                 kdebase-kdepasswd-4.6.1-1  kdebase-kdialog-4.6.1-1  kdebase-keditbookmarks-4.6.1-1
                 kdebase-kfind-4.6.1-1  kdebase-konqueror-4.6.1-1  kdebase-konsole-4.6.1-1  kdebase-kwrite-4.6.1-1
                 kdebase-plasma-4.6.1-1  kdeedu-libkdeedu-4.6.1-2  kdeedu-blinken-4.6.1-2  kdeedu-cantor-4.6.1-2
                 kdeedu-data-4.6.1-2  kdeedu-kalgebra-4.6.1-2  kdeedu-kalzium-4.6.1-2  kdeedu-kanagram-4.6.1-2
                 kdeedu-kbruch-4.6.1-2  kdeedu-kgeography-4.6.1-2  kdeedu-khangman-4.6.1-2  kdeedu-kig-4.6.1-2
                 kdeedu-kiten-4.6.1-2  kdeedu-klettres-4.6.1-2  kdeedu-kmplot-4.6.1-2  kdeedu-kstars-4.6.1-2
                 kdeedu-ktouch-4.6.1-2  kdeedu-kturtle-4.6.1-2  kdeedu-kwordquiz-4.6.1-2  kdeedu-marble-4.6.1-2
                 kdeedu-parley-4.6.1-2  kdeedu-rocs-4.6.1-2  kdeedu-step-4.6.1-2  kdegames-libkdegames-4.6.1-1
                 kdegames-bomber-4.6.1-1  kdegames-bovo-4.6.1-1  kdegames-granatier-4.6.1-1  kdegames-kajongg-4.6.1-1
                 kdegames-kapman-4.6.1-1  kdegames-katomic-4.6.1-1  kdegames-kbattleship-4.6.1-1
                 kdegames-kblackbox-4.6.1-1  kdegames-kblocks-4.6.1-1  kdegames-kbounce-4.6.1-1
                 kdegames-kbreakout-4.6.1-1  kdegames-kdiamond-4.6.1-1  kdegames-kfourinline-4.6.1-1
                 kdegames-kgoldrunner-4.6.1-1  kdegames-kigo-4.6.1-1  kdegames-killbots-4.6.1-1
                 kdegames-kiriki-4.6.1-1  kdegames-kjumpingcube-4.6.1-1  kdegames-klickety-4.6.1-1
                 kdegames-klines-4.6.1-1  kdegames-libkmahjongg-4.6.1-1  kdegames-kmahjongg-4.6.1-1
                 kdegames-kmines-4.6.1-1  kdegames-knetwalk-4.6.1-1  kdegames-kolf-4.6.1-1
                 kdegames-kollision-4.6.1-1  kdegames-konquest-4.6.1-1  kdegames-kpatience-4.6.1-1
                 kdegames-kreversi-4.6.1-1  kdegames-kshisen-4.6.1-1  kdegames-ksirk-4.6.1-1
                 kdegames-kspaceduel-4.6.1-1  kdegames-ksquares-4.6.1-1  kdegames-ksudoku-4.6.1-1
                 kdegames-ktron-4.6.1-1  kdegames-ktuberling-4.6.1-1  kdegames-kubrick-4.6.1-1
                 kdegames-lskat-4.6.1-1  kdegames-palapeli-4.6.1-1  kdegraphics-gwenview-4.6.1-1
                 kdegraphics-kamera-4.6.1-1  kdegraphics-kcolorchooser-4.6.1-1  kdegraphics-kgamma-4.6.1-1
                 kdegraphics-kolourpaint-4.6.1-1  kdegraphics-kruler-4.6.1-1  kdegraphics-ksnapshot-4.6.1-1
                 poppler-qt-0.16.3-1  kdegraphics-okular-4.6.1-1  kdemultimedia-dragonplayer-4.6.1-1
                 kdemultimedia-ffmpegthumbs-4.6.1-1  kdemultimedia-juk-4.6.1-1  kdemultimedia-kioslave-4.6.1-1
                 kdemultimedia-kmix-4.6.1-1  kdemultimedia-kscd-4.6.1-1  xvidcore-1.3.0-1  libvpx-0.9.6-2
                 mplayer-32792-3  kdemultimedia-mplayerthumbs-4.6.1-1  kdenetwork-filesharing-4.6.1-2
                 kdenetwork-kdnssd-4.6.1-2  libktorrent-1.1.0-1  kdenetwork-kget-4.6.1-2  kdepimlibs-4.6.1-1
                 libgadu-1.10.1-1  kdenetwork-kopete-4.6.1-2  ppp-2.4.5-2  kdenetwork-kppp-4.6.1-2
                 kdenetwork-krdc-4.6.1-2  kdenetwork-krfb-4.6.1-2  kdeplasma-addons-applets-bball-4.6.1-1
                 kdeplasma-addons-applets-binary-clock-4.6.1-1  kdeplasma-addons-applets-blackboard-4.6.1-1
                 kdeplasma-addons-applets-bookmarks-4.6.1-1  kdeplasma-addons-applets-bubblemon-4.6.1-1
                 kdeplasma-addons-applets-calculator-4.6.1-1  kdeplasma-addons-applets-charselect-4.6.1-1
                 kdeplasma-addons-libs-4.6.1-1  kdeplasma-addons-applets-comic-4.6.1-1
                 kdeplasma-addons-applets-community-4.6.1-1  kdeplasma-addons-applets-dict-4.6.1-1
                 kdeplasma-addons-applets-eyes-4.6.1-1  kdeplasma-addons-applets-fifteenpuzzle-4.6.1-1
                 kdeplasma-addons-applets-filewatcher-4.6.1-1  kdeplasma-addons-applets-frame-4.6.1-1
                 kdeplasma-addons-applets-fuzzy-clock-4.6.1-1  kdeplasma-addons-applets-incomingmsg-4.6.1-1
                 kdeplasma-addons-applets-kdeobservatory-4.6.1-1  kdeplasma-addons-applets-kimpanel-4.6.1-1
                 kdeplasma-addons-applets-knowledgebase-4.6.1-1  kdeplasma-addons-applets-kolourpicker-4.6.1-1
                 kdeplasma-addons-applets-konqprofiles-4.6.1-1  kdeplasma-addons-applets-konsoleprofiles-4.6.1-1
                 kdeplasma-addons-applets-lancelot-4.6.1-1  kdeplasma-addons-applets-leavenote-4.6.1-1
                 kdeplasma-addons-applets-life-4.6.1-1  kdeplasma-addons-applets-luna-4.6.1-1
                 kdeplasma-addons-applets-magnifique-4.6.1-1  kdeplasma-addons-applets-mediaplayer-4.6.1-1
                 kdeplasma-addons-applets-microblog-4.6.1-1  kdeplasma-addons-applets-news-4.6.1-1
                 kdeplasma-addons-applets-notes-4.6.1-1  kdeplasma-addons-applets-nowplaying-4.6.1-1
                 kdeplasma-addons-applets-paste-4.6.1-1  kdeplasma-addons-applets-pastebin-4.6.1-1
                 kdeplasma-addons-applets-plasmaboard-4.6.1-1  kdeplasma-addons-applets-previewer-4.6.1-1
                 kdeplasma-addons-applets-qalculate-4.6.1-1  kdeplasma-addons-applets-rememberthemilk-4.6.1-1
                 kdeplasma-addons-applets-rssnow-4.6.1-1  kdeplasma-addons-applets-showdashboard-4.6.1-1
                 kdeplasma-addons-applets-showdesktop-4.6.1-1  kdeplasma-addons-applets-social-news-4.6.1-1
                 kdeplasma-addons-applets-spellcheck-4.6.1-1  kdeplasma-addons-applets-systemloadviewer-4.6.1-1
                 kdeplasma-addons-applets-timer-4.6.1-1  kdeplasma-addons-applets-unitconverter-4.6.1-1
                 kdeplasma-addons-applets-weather-4.6.1-1  kdeplasma-addons-applets-weatherstation-4.6.1-1
                 kdeplasma-addons-applets-webslice-4.6.1-1  kdeplasma-addons-containments-4.6.1-1
                 kdeplasma-addons-runners-audioplayercontrol-4.6.1-1  kdeplasma-addons-runners-browserhistory-4.6.1-1
                 kdeplasma-addons-runners-characters-4.6.1-1  kdeplasma-addons-runners-contacts-4.6.1-1
                 kdeplasma-addons-runners-converter-4.6.1-1  kdeplasma-addons-runners-datetime-4.6.1-1
                 kdeplasma-addons-runners-events-4.6.1-1  kdeplasma-addons-runners-katesessions-4.6.1-1
                 kdeplasma-addons-runners-konquerorsessions-4.6.1-1  kdeplasma-addons-runners-konsolesessions-4.6.1-1
                 kdeplasma-addons-runners-kopete-4.6.1-1  kdeplasma-addons-runners-mediawiki-4.6.1-1
                 kdeplasma-addons-runners-spellchecker-4.6.1-1  kdeplasma-addons-wallpapers-mandelbrot-4.6.1-1
                 kdeplasma-addons-wallpapers-marble-4.6.1-1  kdeplasma-addons-wallpapers-pattern-4.6.1-1
                 kdeplasma-addons-wallpapers-virus-4.6.1-1  kdeplasma-addons-wallpapers-weather-4.6.1-1
                 kdesdk-cervisia-4.6.1-1  kdesdk-kompare-4.6.1-1  kdesdk-dolphin-plugins-4.6.1-1
                 kdesdk-kapptemplate-4.6.1-1  kdesdk-kate-4.6.1-1  kdesdk-kcachegrind-4.6.1-1
                 kdesdk-kdeaccounts-plugin-4.6.1-1  kdesdk-kdepalettes-4.6.1-1  kdesdk-kioslave-4.6.1-1
                 kdesdk-kmtrace-4.6.1-1  kdesdk-kpartloader-4.6.1-1  kdesdk-kprofilemethod-4.6.1-1
                 kdesdk-kstartperf-4.6.1-1  kdesdk-kuiviewer-4.6.1-1  kdesdk-lokalize-4.6.1-1  kdesdk-okteta-4.6.1-1
                 kdesdk-poxml-4.6.1-1  kdesdk-scripts-4.6.1-1  kdesdk-strigi-analyzer-4.6.1-1
                 kdesdk-umbrello-4.6.1-1  kdetoys-amor-4.6.1-1  kdetoys-kteatime-4.6.1-1  kdetoys-ktux-4.6.1-1
                 kdeutils-ark-4.6.1-1  kdeutils-filelight-4.6.1-1  kdeutils-kcalc-4.6.1-1
                 kdeutils-kcharselect-4.6.1-1  kdeutils-kdf-4.6.1-1  kdeutils-kfloppy-4.6.1-1  kdeutils-kgpg-4.6.1-1
                 kdeutils-kremotecontrol-4.6.1-1  kdeutils-ktimer-4.6.1-1  kdeutils-kwallet-4.6.1-1
                 kdeutils-printer-applet-4.6.1-1  kdeutils-superkaramba-4.6.1-1  kdeutils-sweeper-4.6.1-1
                 kdewebdev-kfilereplace-4.6.1-1  kdewebdev-kimagemapeditor-4.6.1-1  kdewebdev-klinkstatus-4.6.1-1
                 kdewebdev-kommander-4.6.1-1  linux-firmware-20110227-1  mkinitcpio-0.6.8-2  kernel26-2.6.37.5-1
                 libao-1.1.0-1  libedit-20110227_3.0-1  libfm-0.1.14-4  libgail-gnome-1.20.4-1  libgdiplus-2.10-1
                 libgsf-1.14.20-1  libmpc-0.9-1  libproxy-0.4.6-4  libsndfile-1.0.24-1  licenses-2.8-1  lsof-4.84-3
                 m4-1.4.16-1  heirloom-mailx-12.5-1  zenity-2.32.1-2  metacity-2.30.3-2
                 mobile-broadband-provider-info-20110218-1  mono-2.10.1-2  mpd-0.16.2-1
                 network-manager-applet-0.8.2-4  nvidia-cg-toolkit-3.0-3  ogre-1.7.2-5  openal-1.13-1
                 redland-1.0.12-6  libreoffice-3.3.2-2  libreoffice-extension-ct2n-3.3.2-2
                 libreoffice-extension-diagram-3.3.2-2  libreoffice-extension-hunart-3.3.2-2
                 libreoffice-extension-nlpsolver-3.3.2-2  libreoffice-extension-numbertext-3.3.2-2
                 libreoffice-extension-oooblogger-3.3.2-2  libreoffice-extension-pdfimport-3.3.2-2
                 libreoffice-extension-presentation-minimizer-3.3.2-2  libreoffice-extension-presenter-screen-3.3.2-2
                 libreoffice-extension-report-builder-3.3.2-2  libreoffice-extension-typo-3.3.2-2
                 libreoffice-extension-watch-window-3.3.2-2  libreoffice-extension-wiki-publisher-3.3.2-2
                 libreoffice-sdk-3.3.2-2  p7zip-9.20.1-1  pacman-mirrorlist-20110324-1  paintown-3.4.0-2
                 pcmanfm-0.9.8-5  pcmciautils-017-2  physfs-2.0.2-1  pingus-0.7.3-3  wine-1.3.16-1  xorg-luit-1.1.0-2
                 xterm-269-1  playonlinux-3.8.12-1  ppl-0.11.2-1  python-3.2-1  python-notify-0.1.1-10
                 python-pytz-2011b-2  qt3-3.3.8-19  rtkit-0.10-1  sdlmame-0.141u4-1  perl-class-inspector-1.24-2
                 perl-file-sharedir-1.02-1  perl-capture-tiny-0.08-1  perl-alien-sdl-1.425-1  perl-tie-simple-1.03-1
                 sdl_pango-0.1.2-3  perl-sdl-2.531-1  seahorse-2.32.0-2  seahorse-plugins-2.30.1-3  shadow-4.1.4.3-1
                 sonata-1.6.2.1-5  sound-juicer-2.32.0-2  sudo-1.8.0-4  swig-2.0.2-4  syslinux-4.03-4  tar-1.26-1
                 tint2-svn-624-1  totem-plparser-2.32.3-1  transmission-gtk-2.22-3  unrar-4.0.7-1
                 usb_modeswitch-1.1.7-1  vino-2.32.1-1  vlc-1.1.8-1  wget-1.12-5  winetricks-20110311b-1
                 wpa_supplicant-0.7.3-3  xf86-input-evdev-2.6.0-2  xf86-input-keyboard-1.6.0-1
                 xf86-input-mouse-1.7.0-1  xf86-input-synaptics-1.4.0-1  xf86-video-intel-2.14.0-3
                 xf86-video-vesa-2.3.0-4  xorg-xkbcomp-1.2.1-2  xkeyboard-config-2.1-1  xorg-fonts-encodings-1.0.4-1
                 xorg-bdftopcf-1.0.3-1  xorg-mkfontscale-1.0.8-1  xorg-mkfontdir-1.0.6-2  xorg-font-util-1.2.0-1
                 xorg-font-utils-7.6-2  xorg-iceauth-1.0.4-2  xorg-setxkbmap-1.2.0-2  xorg-server-common-1.9.4.901-1
                 xorg-server-1.9.4.901-1  xorg-sessreg-1.0.6-2  xorg-xcmsdb-1.0.3-2  xorg-xbacklight-1.1.2-2
                 xorg-xgamma-1.0.4-2  xorg-xhost-1.0.4-2  xorg-xinput-1.5.3-2  xorg-xmodmap-1.0.5-2
                 xorg-xrandr-1.3.4-2  xorg-xrdb-1.0.8-2  xorg-xrefresh-1.0.4-2  xorg-xset-1.2.1-2
                 xorg-xsetroot-1.1.0-2  xorg-server-utils-7.6-2  xorg-twm-1.0.6-2  xorg-xdpyinfo-1.2.0-2
                 xorg-xdriinfo-1.0.4-2  xorg-xev-1.1.0-2  xorg-xlsatoms-1.1.0-2  xorg-xlsclients-1.1.1-2
                 xorg-xvinfo-1.1.1-2  xorg-xwininfo-1.1.1-2  xorg-utils-7.6-7  xorg-x11perf-1.5.3-2
                 xorg-xcursorgen-1.0.4-2  xorg-xinit-1.3.0-3  xorg-xkbutils-1.0.3-2  xorg-xkbevd-1.1.2-2
                 xorg-xkb-utils-7.6-1  xorg-xkill-1.0.3-2  xorg-xpr-1.0.3-2  xorg-xwd-1.0.4-2  xorg-xwud-1.0.3-2
                 yaourt-0.10.1-2  youtube-dl-2011.02.25c-1  zope-interface-3.6.1-1

Dimensione totale dei pacchetti da scaricare:    1059,95 MB
Dimensione totale dei pacchetti da installare:   3641,41 MB

Vuoi procedere con l'installazione? [S/n] 
Arch Linux. Ebbasta
"L'utopia è come l'orizzonte: cammino due passi, e si allontana di due passi. Cammino di dieci passi, e si allontana di dieci passi. E allora, a cosa serve l'utopia? A questo: serve per continuare a camminare."

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

Messaggio da 4javier » 29 marzo 2011, 12:45

Purtroppo l'output che ci serve, deve essere quello di pacman -Sup. Anche se in questo modo, che è come dieghen l'ha impostato, secondo me è più complesso poi implementare il download da sorgenti multiple. Secondo me la query ideale da dare a pacman sarebbe pacman -Sup --print-format %r/%n%v che restituisce un output "facilmente" manipolabile per i nostri scopi

Codice: Seleziona tutto

[root@Archbox javier]# pacman -Sup --print-format %r/%n%v
:: Aggiornamento del sistema in corso...
testing/avidemux-cli2.5.4-3
testing/avidemux-gtk2.5.4-3
testing/linux-api-headers2.6.38.1-1
testing/glibc2.13-5
testing/binutils2.21-6
testing/x26420110327-1
testing/ffmpeg20110327-1
testing/isl0.05.1-1
testing/cloog0.16.1-1
testing/gcc4.6.0-1
testing/gcc-libs4.6.0-1
testing/gnutls2.12.0-1
testing/gstreamer0.10-ugly0.10.17-2
testing/gstreamer0.10-ugly-plugins0.10.17-2
testing/mkinitcpio0.6.9-1
testing/kernel262.6.38.1-1
testing/kernel26-headers2.6.38.1-1
testing/libdrm2.4.24-1
testing/libtool2.4-3
testing/make3.82-3
testing/mdadm3.1.5-1
testing/namcap3.0.3-1
testing/ndiswrapper1.56-9
testing/pciutils3.1.7-4
testing/syslog-ng3.2.2-2
testing/usbutils002-1
testing/xextproto7.2.0-1
testing/xf86-input-acecad1.4.99_git20110318-1
testing/xf86-input-aiptek1.3.99_git20110318-1
testing/xf86-input-evdev2.6.0-3
testing/xf86-input-joystick1.5.99_git20110318-1
testing/xf86-input-keyboard1.6.0-2
testing/xf86-input-mouse1.7.0-2
testing/xf86-input-synaptics1.4.0-2
testing/xf86-input-vmmouse12.7.0-2
testing/xf86-input-void1.3.1.99_git20110318-1
testing/xf86-video-ati6.14.1-1
testing/xf86-video-vesa2.3.0-5
testing/xorg-server-common1.10.0-1
testing/xorg-server1.10.0-1
P.S.
ho risolto il problema dell'output da usare per fare i test abilitando il repo testing :P
@dieghen
max-concurrent-downloads scarica sì 5 file contemporaneamente, ma se gli dai una sola fonte, li scarica tutti dallo stesso server: guadagno nullo :/
La mia idea sarebbe di prendere i mirror più veloci da rankmirror (ovviamente bisognerà vede se c'è un modo che garantisca che siano tutti aggiornati allo stesso modo), andare a manipolare il loro indirizzo utilizzando l'output che ho postato sopra con quella query a pacman, in modo da ottenere

Codice: Seleziona tutto

http://www.mirror1.com/altri_livelli_di_dominio_propri_del_mirror/repo_giusto/os/architettura_giusta/pacchetto-versione
http://www.mirror2.com/altri_livelli_di_dominio_propri_del_mirror/repo_giusto/os/architettura_giusta/pacchetto-versione
http://www.mirror3.com/altri_livelli_di_dominio_propri_del_mirror/repo_giusto/os/architettura_giusta/pacchetto-versione
http://www.mirror4.com/altri_livelli_di_dominio_propri_del_mirror/repo_giusto/os/architettura_giusta/pacchetto-versione
http://www.mirror5.com/altri_livelli_di_dominio_propri_del_mirror/repo_giusto/os/architettura_giusta/pacchetto-versione
per ogni pacchetto da aggiornare, e passare tutte queste fonti ad aria2c, in modo da avere un download parallelizzato da più server. :)
L'output di psykopear in realtà solleva un altro annoso problema: gli output non standard! Ma magari a questi penseremo dopo.
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 » 29 marzo 2011, 13:37

Sì in effetti è molto comodo il parametro --print-format...Ho pensato anche io a scaricare da più server, ma come hai sollevato tu può capitare che i server siano sfasati di anche di qualche decina di minuti e può capitare che il file aggiornato ancora non esista...
Infatti per ora ho messo da parte questa cosa, e mi concentro a scaricare 5 file contemporaneamente da un server solo...Poi basta poco per adattarlo a più server, una volta che abbiamo il nome completo del pacchetto...

Quello dei cambiamenti di nome è veramente un grosso problema :/ Ma ci penserò più avanti...Stasera vediamo a che ora torno a casa, se riesco ad approfondire il parsing della cmdline, è la cosa più importante ora...
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 » 29 marzo 2011, 14:17

Forse, se siamo fortunati e non ho frainteso questa parte del man, possiamo ragionare direttamente in termini di sorgenti multiple
-s, --split=N
Download a file using N connections. If more than N URIs are given,
first N URIs are used and remaining URIs are used for backup
. If
less than N URIs are given, those URIs are used more than once so
that N connections total are made simultaneously.
In pratica potremmo estrapolare da rankmirror i 10 mirror più veloci, passarli tutti ad aria2c, ma limitare lo split a 4. In questo modo, se ho capito bene quello che spiega il man, il download fallirebbe solo nel caso sui 10 mirror passati, non ve ne fossero almeno 4 aggiornati. :)

http://sourceforge.net/apps/trac/aria2/ ... ageExample
Download a file using 2 connections

aria2c -s2 http://host/image.iso http://mirror1/image.iso http://mirror2/image.iso

Note: If you specify URIs more than the value of -s option, for this example, 2, first 2 URIs are used and 3rd URI is used for backup, which means if one of first 2 URIs are failed then 3rd is kicked in.
Scusami se insisto su questa feature, ma per come la vedo io sarebbe questa la vera "svolta" dello script, in quanto come già detto in precedenza, il download multiplo da singola fonte non lo vedo in grado di incrementare le prestazioni più di tanto.
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 » 29 marzo 2011, 14:21

Hai più che ragione! e grazie per la spiegazione, così ha tutto un senso...Ora vado a lezione vedo cosa combino in corriera durante il ritorno a casa :)
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 » 29 marzo 2011, 15:10

Appena testato, pare funzionare proprio come pensavo. Ho simulato una situazione tipica nel nostro uso con pacman tramite questo comando

Codice: Seleziona tutto

aria2c -s2 http://mirror.aarnet.edu.au/pub/archlinux/iso/2010.05/archlinux-2010.05-core-i686.iso http://www.google.com/archlinux-2010.05-core-i686.iso ftp://mirror.internode.on.net/pub/archlinux/iso/2010.05/archlinux-2010.05-core-i686.iso --log=/home/javier/dati/arlog.log
iso di arch splittata in 2: primo mirror http valido, secondo non valido (google), terzo ftp valido (così ho verificato anche che non ci fossero problemi a mescolare http e ftp. Posto la parte interessante estrapolata dal log
.........................
FeedbackURISelector.cc:97] FeedbackURISelector selected http://mirror.aarnet.edu.au/pub/archlin ... e-i686.iso
........................
HTTP/1.1 200 OK
....................
....................
2011-03-29 15:00:59.350075 DEBUG - [FeedbackURISelector.cc:97] FeedbackURISelector selected http://www.google.com/archlinux-2010.05-core-i686.iso
....................
HTTP/1.1 404 Not Found
.....................
.....................
2011-03-29 15:00:59.581583 DEBUG - [FeedbackURISelector.cc:97] FeedbackURISelector selected ftp://mirror.internode.on.net/pub/archl ... e-i686.iso
.....................
Response received:
150 Opening BINARY mode data connection for archlinux-2010.05-core-i686.iso (169869312 bytes)
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: 7813
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 29 marzo 2011, 16:34

Aria2c e' molto potente e flessibile, basta dargli la lista dei pacchetti e dei mirror, poi con le opzioni si puo' dosare quanti mirror, split e larghezza di banda si vorra' fargli fare.
Quello che non e' carino e' l' output che fa in stdout, che si potrebbe zittire e vedere che errori spara fuori aria2c se non va a buon fine.
@dieghen

Codice: Seleziona tutto

        max-concurrent-downloads=5
continue
split=10
max-connection-per-server=3
max-tries=2
min-split-size=3M
allow-overwrite=true
log-level=error
no-conf
remote-time=true
timeout=5
dir=/media/DATI/CACHE_PACMAN
Questa parte potrebbe esser aggiunto alla lista di /tmp/pacspeed.link che verra' interpretato come configurazione. Inoltre come sopra esposto si potrebbe mettere in /etc/pacspeed.conf ed appendato alla lista dei files da scaricare.
SE pacman trova i pacchetti in cache, non rifara' il download, quindi la seconda mossa e' mettere i pacchetti ricevuti e verificati in /var/cache/pacman/pkg
Non ho capito la seconda mossa di pacman -Swp che significherebbe di scaricare ma non installare i pacchetti con la stampa della lista dei medesimi.
F the saint
12 anni da questo forum ;)

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

Messaggio da 4javier » 29 marzo 2011, 18:32

Io sto vedendo di manipolare gli output di rankmirror e di pacman -Sup --print-format %r/%n%v per ottenere un file già formattato da dare in pasto ad aria2c senza ulteriori modifiche. Concordo sulla soppressione dello stdout di aria che è veramente osceno. Ho visto che mette a disposizione una caterva di exit status, quindi si potranno gestire abbastanza agevolmente eventuali situazioni inattese.
Boccio la scelta di eseguire rankmirrors ad ogni avvio dello script, visto che sul mio sistema impiega 30-40 secondi a generare la lista. Eseguirlo in base alla mole di update diventa un po' un casino visto che la query che uso per ottenere la lista degli aggiornamenti da pacman non fornisce una misura della dimensione totale dell'aggiornamento. Io direi di lasciarla come opzione da lanciare a discrezione dell'utente, salvo il primo avvio ovviamente, in linea di massima i mirror migliori saranno sempre gli stessi, a meno che uno non faccia frequenti spostamenti continentali :P .
Riguardo i file di configurazione, io proporrei di creare una directory apposita /etc/pacspeed, visto che oltre al file di conf ci metterei anche la lista con gli indirizzi dei server, per evitare di far processare ogni volta tramite sed la mirrorlist.
@The saint
credo che dieghen voglia fornire la possibilità di download parallelo anche per l'opzione -Sw di pacman, mi pare una buona idea che non richiede molto lavoro. Riguardo alla cache, suppongo abbia usato quel percorso perchè è probabilmente lì che lui tiene la sua cache. Secondo me si può far direttamente scaricare ad aria i pacchetti nella dir della cache di pacman effettuando il source da /etc/pacman.conf.
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 » 29 marzo 2011, 18:45

@4javier
grazie per il test! non vedo l'ora di implementare il tutto :D

@TheSaint
si l'output è orribile...magari più avanti vediamo se riesco a zittirlo e stampare solo eventuali errori e/o messaggi tipo: pacchetto X download finito, nel file di conf l'utente deciderà se usare un output normale di aria2 o un output ridotto...Meglio puntualizzare su queste cose così rileggendo tutti i messaggi più avanti non me ne dimenticherò :)

Riguardo i parametri da passare ad aria2 preferisco passarglieli all'interno dello script, è più sensato secondo me...

@tutti
visto che vi vedo particolarmente attivi vi posto un anteprima per il parsing della cmdline...Ancora devo capire cosa fa la funzione program_arg e vedere se riesco a fare qualcosa di meno elaborato di yaourt...
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 » 29 marzo 2011, 18:52

Prego, figurati. Io ora mi sto concentrando sulla generazione della lista da passare ad aria2c, e sto già sbroccando su quella, quindi evito di obiettare alcunchè sul parsing della cmd, perchè rischio di dire castronerie.
Faccio invece un appunto su altro: io sarei d'accordo con theSaint a mettere i parametri nel file di conf, in modo da consentire all'utente di impostarlo come preferisce senza andare a toccare direttamente il codice dello script.
Per generare una lista utilizzabile inoltre, ho bisogno di dichiarare una variabile $arch, non voglio usare quella all'interno do /etc/pacman.conf visto che può assumere anche il valore "auto" che viene gestito internamente da pacman, mentre a me serve una mera stringa. A questo punto direi di ripetere nel file di conf anche la dir di cache, così evitiamo proprio di fare il source di /etc/pacman.conf.
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 » 29 marzo 2011, 18:59

Mmmh mi sono spiegato male...Io sto passando ad aria2 dei parametri miei, poi più avanti quando lo script sarà completato i valori dei parametri saranno presi da un file source in /etc/pacspeed.conf...
Stessa cosa per $arch, la quale può essere sistemata dal .install del pacchetto...quindi se fai delle prove per ora dichiarala direttamente nello script, poi verrà messa nel file di conf...

Stessa cosa per la directory di cache...l'obiettivo è di mettere nel .install qualcosa che vada a prendere il valore dal file pacman.conf e lo mette già nel pacspeed.conf, così l'utente nella maggior parte dei casi lo trova già a posto...se vuole cambiare manualmente è libero di farlo...
XPS 13 Developer Edition i7-4650U/hd5000 + KDE
Eeepc 1015PEM Black + KDE Minimal + kernel-netbook + acpi-eeepc-1015pem --> GUIDA

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

Messaggio da dieghen89 » 29 marzo 2011, 19:12

@4javier
mi ero perso la tua risposta #19...L'idea è di dare un output minimale anche se sarebbe bello sapere almeno a che percentuale di download (anche totale) si è arrivati e la velocità di download...ma la vedo dura...

L'altro giorno avevo provato rankmirrors su soli 3 server e ci ha messo giusto qualche secondo...Su più server è un'altro discorso...

Riguardo la directory /etc/pacspeed mi trovi pienamente d'accordo :)

E sì, riguardo alla cartella di cache hai ragione, la tengo in una partizione separata dalla / così evita di riempirmela visto che solitamente tengo anche svariati GB di cache :) E hai ragione anche sul -Sw, visto che ci siamo parallelizziamo anche quelli...
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: 7813
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Messaggio da TheSaint » 30 marzo 2011, 17:25

Credo che un server non permetterà tanti collegamenti simultanei. Forse 2, magari altri con diversi files.
Esiste anche una opzione di aria2c di mettere tanti mirror in parentesi graffe, separati da due punti e fuori il file da scaricare. Si evita la ripetizione di composizione degli URI
Se i mirror non son sincroni, il md5sum non mente. Anche powerpill dava alcuni errori in scaricamento
Ultima modifica di TheSaint il 30 marzo 2011, 17:28, modificato 1 volta in totale.
F the saint
12 anni da questo forum ;)

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

Messaggio da 4javier » 30 marzo 2011, 17:39

Più che altro non mente il nome file :lol:
Per indicargli il pacchetto da scaricare bisogna indicare il nome preciso, che è nella forma nome-numero_versione-numero_release.pkg.tar.xz, quindi il checksum non interviene nemmeno, se non al momento del pacman -Su.
Io sto ancora lavorando proprio sul multi-sorgente, ed eventualmente prenderò in considerazione anche quest'altra forma di file di input. Ora però sono arenato su un problema: come utilizzare una variabile all'internodel blocco replace dell'operazione di sostituzione tramite sed. I metodi proposti in rete, double quoting ed interruzione e ripresa del quoting singolo attorno alla variabile non funzionano, mi restituiscono sempre lo stesso errore "comando `s' non terminato". Mi pare di capire che sed vari di molto la sua sintassi ad ogni nuova versione (ma è solo una mia impressione da quanto letto in rete), se qualcuno ha notizie risolutive faccia un fischio.
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