Une place pour une véritable innovation. Partagez vos propres utilitaires créés avec la communauté Manjaro.
Questions et discussions sur la programmation et le codage.

pamir : réécriture de pacman-mirrors en python

#1Messageil y a 7 ans

Bonjour à tous, :bjr:

J'ai réécrit ce script bash en python pour m'entraîner.

Pour l'utiliser :

1) le télécharger ICI ;

2) le rendre exécutable, et le copier sous root dans /usr/bin (sudo cp pamir.py /usr/bin/pamir).

Au passage, il est possible de le renommer pamir au lieu de pamir.py, c'est plus court à taper.

Avantages :

- trois fois plus rapide que l'ancien, charge moins le CPU ;
- fournit la date de dernière mise à jour d'un miroir ;
- liste des pays possibles dans le help (-h) ;
- permet de sélectionner plusieurs pays sur la ligne de commande ;
- test de validité du paramètre branche ;
- possibilité de créer une liste sans être root.

Inconvénients ;

- pas l'outil officiel.

Exemple d'utilisation :

J'ai mis time devant pour avoir le temps d'exécution.

[pat@xfce ~]$ time sudo pamir -c France,Germany,Netherlands
France
 0.203 http://manjarolinux.polymorf.fr/stable/$repo/$arch
Germany
 0.104 http://ftp.halifax.rwth-aachen.de/manjaro/stable/$repo/$arch
 0.160 http://ftp.tu-chemnitz.de/pub/linux/manjaro/stable/$repo/$arch
 0.149 http://ftp.rz.tu-bs.de/pub/mirror/manjaro.org/repos/stable/$repo/$arch
Netherlands
 0.101 http://ftp.nluug.nl/pub/os/Linux/distr/manjaro/stable/$repo/$arch

real   0m0.864s
user   0m0.117s
sys   0m0.020s
[pat@xfce ~]$ 


ce qui donne comme mirrorlist :

##
## Manjaro Linux repository mirrorlist
## Generated on 28 Jun 2013
##
## Use pacman-mirrors to modify
##


## Location : Netherlands
## Time     : 0.101
## Updated  : 2013-06-28 10:00:36
Server = http://ftp.nluug.nl/pub/os/Linux/distr/manjaro/stable/$repo/$arch

## Location : Germany
## Time     : 0.104
## Updated  : 2013-06-28 06:50:35
Server = http://ftp.halifax.rwth-aachen.de/manjaro/stable/$repo/$arch

## Location : Germany
## Time     : 0.149
## Updated  : 2013-06-28 02:00:34
Server = http://ftp.rz.tu-bs.de/pub/mirror/manjaro.org/repos/stable/$repo/$arch

## Location : Germany
## Time     : 0.160
## Updated  : 2013-06-28 03:40:34
Server = http://ftp.tu-chemnitz.de/pub/linux/manjaro/stable/$repo/$arch

## Location : France
## Time     : 0.203
## Updated  : 2013-06-28 11:10:36
Server = http://manjarolinux.polymorf.fr/stable/$repo/$arch


(edit)

Exemple de help :

$ pamir -h

Usage : /usr/bin/pamir [-b branch] [-c country[,country...] [-h] [-o output]

 -b branch                     stable, testing, or unstable
 -c country[,country...]       use only mirrors from country(ies)
( Africa Bangladesh Belgium Brasil China Denmark France Germany Greece Indonesia Ireland Italy Japan Netherlands Philippines Romania Russia South_Korea Sweden Taiwan United_Kingdom United_States )
 -h                            show help
 -o output                     specify output file
Dernière modification par Esclapionil y a 7 ans, modifié au total 6 fois.
Raison :se rapprocher de paman-mirrors

pamir : réécriture de pacman-mirrors en python

#2Messageil y a 7 ans

Juste un complément sur l'aide siouplaît M'sieur Esclapion et ce sera parfait :bien

pamir : réécriture de pacman-mirrors en python

#3Messageil y a 7 ans

:bjr:

J'ai amélioré le help (-h), et j'y ai rajouté la liste des pays. J'édite mon 1er message. Tu me dis si ça va.

pamir : réécriture de pacman-mirrors en python

#4Messageil y a 7 ans

Bonsoir Patrice,
Testé pamir, aucun message d'erreur, miroirs testés à toute vitesse avec l'indication du temps de connexion.
Bravo!
À intégrer dans la distribution, car comme il a été dit par ailleurs, avec la notoriété et l'augmentation du nombre de miroirs...
: je te suggère d'ajouter dans le help: si plusieurs pays, les séparer par une virgule (coma)
(et j'ai rajouté dans mon .bashrc:
alias pm=' sudo pamir -c Belgium,Denmark,France,Germany,Ireland,Italy,Netherlands,Sweden,United_Kingdom')
Je réédite, j'ai corrigé mon alias:
alias pm=' sudo pamir -c Belgium,Denmark,France,Germany,Ireland,Italy,Netherlands,Sweden,United_Kingdom && sudo pacman -Syy && yaourt -Syy'
Dernière modification par waitnseail y a 7 ans, modifié au total 2 fois.

pamir : réécriture de pacman-mirrors en python

#5Messageil y a 7 ans

L'ajout de code pour l'aide est Tip Top / parfait (au choix ! ) :bien
PS:
Egalement chez moi inclus dans mon .bashrc

pamir : réécriture de pacman-mirrors en python

#6Messageil y a 7 ans

Salut,

Autre chose ceci -c France,Germany,Netherlands
serait un bon hack pour pacman-mirrors aussi.

pamir : réécriture de pacman-mirrors en python

#7Messageil y a 7 ans

:bjr:

Oui, mais je ne suis pas maître de pacman-mirrors. De pamir, si. :clindoeil:

pamir : réécriture de pacman-mirrors en python

#8Messageil y a 7 ans

:bjr:

Nouvelle version de pamir, qui élimine tous les serveurs non synchronisés durant les 4 dernières heures.

Cf le repo Manjaro pour plus de détails (je ne prends que les jaunes).

pamir : réécriture de pacman-mirrors en python

#9Messageil y a 7 ans

Merci beaucoup,
Sérieusement, il faut que cette version remplace le pacman-mirror, rien à voir au niveau de la rapidité !

pamir : réécriture de pacman-mirrors en python

#10Messageil y a 7 ans

Salut,
Voir comment pamir a rétabli une situation étrange :
viewtopic.php?f=8&t=1840&p=20118#p20118

Comme déjà dit il faudrait que pamir remplace ou complète pacman-mirrors trop simpliste.
Merci Esclapion :)

pamir : réécriture de pacman-mirrors en python

#11Messageil y a 7 ans

Content pour toi, et merci pour le "retour". Je suis en train d'essayer de le leur vendre. :gsourire:

pamir : réécriture de pacman-mirrors en python

#12Messageil y a 7 ans

:bjr:

Nouvelle version ressemblant beaucoup plus à pacman-mirrors : mêmes options, même présentation.

Ajout d'une possibilité de régler la durée du time-out.

pamir : réécriture de pacman-mirrors en python

#13Messageil y a 7 ans

:clap:bien

pamir : réécriture de pacman-mirrors en python

#14Messageil y a 7 ans

ça donne quoi avec les devs, tu leur as proposé ? ils en pensent quoi ?

pamir : réécriture de pacman-mirrors en python

#15Messageil y a 7 ans

Ils m'ont demandé d'avoir les mêmes options que pacman-mirrors, d'où cette nouvelle version.

Maintenant, ils vont voir, mais il n'y a que PhilM présent, Roland est en vacances, et c'est lui qui a écrit pacman-mirrors -> wait & see.

PhilM semble intéressé, et Guinux m'avait renvoyé sur lui.

pamir : réécriture de pacman-mirrors en python

#16Messageil y a 7 ans

je m'en suis douté que c'était pour ça les nouvelles options (ils ne veulent pas ré-écrire les scripts de mise à jour), d'où ma question...

ils devraient d'ailleurs y penser, à refaire leurs scripts en Python, c'est plus adapté pour ajouter un GUI par la suite (sur du Bash, on est vite limité); en plus l'interpréteur Python a bien progressé et ça fait des softs rapides; le bash rame dès que le script est un peu gros (ex: Yaourt).

pamir : réécriture de pacman-mirrors en python

#17Messageil y a 7 ans

Dans Python, eu n'as en gros qu'un processus. En Bash, dès que tu fais un pipe avec sed ou autre, tu en crées un autre.

Là, je gagne peu car il y a beaucoup de lecture Web, mais sinon, il y a facile un facteur 10.

Si tu regardes ce que donnent les deux avec l'option -m rank, c'est bluffant.

pamir : réécriture de pacman-mirrors en python

#18Messageil y a 7 ans

Nouvelle version adoptée. RAS. Merci.

Tu n'as pas un dropbox ou similaire pour y mettre le programme dans la partie publique ?
Ainsi fini la phrase publicitaire à recopier en code :)

Le problème de python c'est qu'il faut suivre ses mises à jour pour adapter suivant le cas son code. C'est plus souple en bash car moins de changements et de risques d'incompatibilités.

pamir : réécriture de pacman-mirrors en python

#19Messageil y a 7 ans

Petit bug :

--> sudo pamir -c Custom
:: Querying servers, this may take some time...
-> 0.145 http://manjarolinux.polymorf.fr/stable/$repo/$arch
-> 0.135 http://ftp.nluug.nl/pub/os/Linux/distr/ ... repo/$arch
-> 0.124 http://www.mirrorservice.org/sites/repo ... repo/$arch
-> 0.130 http://mirror.catn.com/pub/manjaro/stable/$repo/$arch
-> 0.124 http://manjaro.mirrors.uk2.net/stable/$repo/$arch
-> 0.138 http://repo.manjaro.org.uk/stable/$repo/$arch
:: Generated and saved '/etc/pacman.d/mirrorlist' mirrorlist.

et en effet le mirrorlist est créé alors qu'il n'y a pas l'option -g
Même comportement avec l'option -m, la liste est tout de même créée dans /etc/pacman.d

De même autre curiosité :
--> sudo pamir -c Custom -o listepamir
:: Querying servers, this may take some time...
-> 0.146 http://manjarolinux.polymorf.fr/stable/$repo/$arch
-> 0.136 http://ftp.nluug.nl/pub/os/Linux/distr/ ... repo/$arch
-> Error!http://www.mirrorservice.org/sites/repo.manjaro.org/repos/stable/$repo/$arch
-> 0.129 http://mirror.catn.com/pub/manjaro/stable/$repo/$arch
-> 0.123 http://manjaro.mirrors.uk2.net/stable/$repo/$arch
-> 0.131 http://repo.manjaro.org.uk/stable/$repo/$arch
:: Generated and saved 'listepamir' mirrorlist.

--> ls -l /etc/pacman.d/mirrors/listepamir
-rw-r--r-- 1 root root 614 8 juil. 08:19 /etc/pacman.d/mirrors/listepamir

La liste est créée dans /etc/pacman.d/ et non dans le répertoire courant.

pamir : réécriture de pacman-mirrors en python

#20Messageil y a 7 ans

Salut cep, :bjr:

Merci du "retour". :merci:

Ce n'est pas vraiment un bug. J'avais carrément supprimé l'option -g, car si on lance l'outil, c'est quand même pour créer une liste.

C'est une option que je ne comprenais pas, car dans l'outil original, à part tester l'existence du dossier mirrors, elle ne faisait rien -> ???

J'ai fini par comprendre : si tu lances pacman-mirrors seul, tu as le help, et si tu mets au moins une option, non. Alors que pamir, lancé sans argument ne produisait pas l'aide. J'ai rajouté un test sur le nombre d'argument pour le contrer.

Mais en soi, l'option -g du pacman-mirrors actuel ne sert à *rien* (du moins, je pense, cf. Roland).

Pour le pb N°2, je change de répertoire pour aller dans mirrors, c'est plus simple ensuite pour exploiter les fichiers de pays. Là, effectivement, ça pourrait être mieux :rougir: -> s'il y a une V2 de pamir, je regarderai. Mais si tu mets la sortie dans /tmp/toto, ça marche.

Au passage, il n'est plus nécessaire de lancer l'outil en root, sauf s'il faut l'être pour créer le fichier de sortie. Un petite finesse discrète, ça me cassait les pieds de taper sudo durant mes essais.

Si tu veux voir la différence de vitesse, fais un time sur les deux avec l'opion -m random, c'est bluffant. A noter, là encore, que je ne vois pas à quoi elle sert : elle permet de créer une mirrorlist, même sans être connecté à Internet, et ensuite ???

S'il y a une V2, d'ailleurs, je voudrais que le principe change complètement et que le travail fait pour repo.manjaro.org puisse servir à décharger l'utilisateur. J'en ai déjà parlé à PhilM.

(edit)
Python, je ne connais pas bien. J'ai commencé à l'étudier pour la 1ère fois le mois dernier, et pamir est mon premier outil fait avec. C'était à la base uniquement pour m'entraîner.
Par contre, pamac est en Python Gtk, donc même si ça me passe très au-dessus de la tête comme niveau, ça sera maintenu, je pense.
Et sous Manjaro, ça ne demande aucune installation complémentaire. J'avais sinon hésité entre Python et Perl.
Répondre