Script allservers.sh : Rankmirrors, Synchroniser la base de données Pacman

From Manjaro Linux
Jump to: navigation, search

Retour à l'accueil

Le Script Allservers.sh :

Voici une liste de ce que le contenu de cette page tente de faire.

Tout d'abord le script allservers.sh effectue les opérations suivantes pour vous :

1. Télécharge la liste la plus récente des miroirs Manjaro dans /etc/pacman.d/allservers ;

2. Met en forme /etc/pacman.d/allservers ;

3. Rankmirrors les teste et met à jour /etc/pacman.d/mirrorlist ;

4. Synchronise votre machine avec les miroirs ;

5. Ensuite affiche un menu vous offrant deux options de mise à jour : La première va mettre à jour votre système via la commande pacman -Syu. La seconde va mettre à jour votre système y compris les paquets venant de AUR via la commande yaourt -Syu --aur. Vous pouvez aussi quitter ce menu dès son affichage en appuyant sur la clé Entrée.


Les ajouts suivant sont destinés à rendre l'utilisation de ce script aussi simple que possible :

6. Je montre aussi comment ajouter un alias ~ /.bashrc qui vous permettra d'appeler ce script en tapant seulement deux lettres dans le terminal ;

7. Et enfin, comment modifier les chemins de recherche par défaut pour les comptes root et utilisateur, de sorte que le système trouve automatiquement votre ou vos scripts peu importe où ils sont stockés. Cette information est évidemment utile pour n'importe quel répertoire de stockage personnalisé auquel on veut accéder sans avoir à entrer le chemin complet, pour une raison ou une autre.



Historique :

Phil nous a expliqué ce qu'il faisait pour construire une nouvelle liste de miroirs, donc j'ai mis ça dans un script, en ajoutant rankmirrors pour trouver les trois meilleurs miroirs du moment et pacman-Syy pour synchroniser les bases de données.

Puis Phil a ajouté sa touche à mon script de base, lui donnant meilleure allure et nous informant un peu de sa progression lorsqu'il est exécuté.

Depuis, j'ai ajouté un menu (le rendant plus agréable à voir) qui permet la mise à niveau du système via les commandes pacman -Syu ou yaourt -Syu --aur.

J'en suis ensuite venu à une ligne de commande - sudo su -c allservers.sh - qu'il va être un plaisir de faire fonctionner via la frappe de deux lettres dans le terminal grâce à un alias .bashrc, et fait quelques autres choses (voir plus bas) pour rendre aussi simple et pratique que possible l'utilisation du script allservers.sh.


Le script lui---même:

#!/bin/bash

# allservers.sh - inspired by Manjaro's Carl & Phil, initially hung together 
# by handy, the script's display prettied up & progress information added by Phil, 
# the menu & wiki page added by handy: 
# http://wiki.manjaro.org/index.php/Allservers.sh_Script:-_Rankmirrors,_Synchronise_Pacman_Database

# allservers.menu.sh MUST doit être lancé en tant que root = après sudo su
# 1. Télécharge la liste la plus récente de miroirs Manjaro vers /etc/pacman.d/allservers
# 2. Met en forme /etc/pacman.d/allservers
# 3. Les test par Rankmirrors et met ensuite à jour /etc/pacman.d/mirrorlist avec les 3 les plus rapides
# 4. Synchronise la liste de miroirs avec votre machine
# 5. Un menu ensuite vous demande comment vous voulez mettre à jour votre machine:
#    Choix 1. taper s ou S pour appeler pacman -Syu
#    Choix 2. taper a ou A pour appeler yaourt -Syu --aur
#    Appuyez sur Entrée pour quitter le script.
###########################################################

err() {
    ALL_OFF="\e[1;0m"
    BOLD="\e[1;1m"
    RED="${BOLD}\e[1;31m"
	local mesg=$1; shift
	printf "${RED}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}

msg() {
    ALL_OFF="\e[1;0m"
    BOLD="\e[1;1m"
    GREEN="${BOLD}\e[1;32m"
	local mesg=$1; shift
	printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}


if [[ `whoami` != "root" ]];
then
  err "Must use 'sudo su' before you run this script."
  exit
fi

echo
msg "Downloading latest mirrorlist"
wget http://git.manjaro.org/packages-sources/basis/blobs/raw/master/pacman-mirrorlist/mirrorlist -O /etc/pacman.d/allservers >& /dev/null
msg "Editing allservers file"
sed -ie s'/# Server/Server/'g /etc/pacman.d/allservers
msg "Running rankmirrors"
rankmirrors -n 3 /etc/pacman.d/allservers > /etc/pacman.d/mirrorlist
msg "Updating your pacman databases"
echo
pacman -Syy


# menu options to upgrade system & upgrade system plus AUR:

clear # Clear the screen.

echo
echo -e "\033[1m                 allservers.sh \033[0m"
echo
echo -e "\e[1;32m    Choose how you want to upgrade Manjaro?"
echo  "    Choose the S/s or A/a key - or -->" 
echo  "    Hit the Return/Enter key to Exit the script."
echo
echo
echo  "    [S]ystem Only --> pacman -Syu"
echo
echo -e "    [A]UR & System --> yaourt -Syu --aur  \e[1;0m"
echo
echo

read option

case "$option" in
# Note variable is quoted.

  "S" | "s" )
  # Accept upper or lowercase input.
  echo
  msg "Upgrading System:"
  echo
  pacman -Syu
  echo
  msg "System update complete."
  ;;
# Note double semicolon to terminate each option.

  "A" | "a" )
  # Accept upper or lowercase input.
  echo
  msg "Upgrading System & AUR:"
  echo
  yaourt -Syu --aur
  echo
  msg "System including AUR packages are up to date."
  ;;

esac

echo

exit 0


Installation et exécution :

Pour installer ce script sur ​​votre ordinateur, vous devez copier le texte du script depuis de cette page dans un nouveau fichier par votre éditeur de texte favori.

Si vous utilisez gedit, lorsque vous l'ouvrez, vous êtes face à une page vierge qui permet de créer un nouveau fichier, ce qui est exactement ce que nous voulons.

Tout d'abord utilisez votre souris pour sélectionner tout le contenu du script allservers.sh dans la zone de texte ci-dessus. Ensuite, sélectionnez le texte en surbrillance avec le bouton droit de la souris et choisissez l'option copier dans le menu déroulant, puis coller dans la nouvelle ébauche de page de gedit, ou utilisez le menu Edit de l'éditeur & choisissez l'option Coller.

Lorsque vous avez le texte de allservers.sh dans votre éditeur de texte enregistrez-le dans votre répertoire /home/<nom utilisateur> sous le nom allservers.sh ainsi :

/home/<nom utilisateur>/allservers.sh . 

Après avoir fait cela, vous ne serez pas en mesure d'exécuter le script car il doit d'abord être rendu exécutable (des information à ce sujet suivent).

Dès que le script allservers.sh a été rendu exécutable, il peut être lancé en tapant ce qui suit dans le terminal :

sudo su

et, après avoir donné votre mot de passe suite à la commande ci-dessus, vous pouvez entrer ce qui suit pour lancer le script allserver.sh :

allservers.sh 

Nous allons rendre le processus ci-dessus d'appel et de lancement du script beaucoup plus simple, alors continuez votre lecture svp.


Rendre exécutable le script allservers.sh :

Le script allservers.sh doit être rendu exécutable ou il ne va pas fonctionner. Pour ce faire, tapez ce qui suit dans le terminal :

chmod +x <chemin vers>/allservers.sh


Appeler sudo su allservers.sh avec deux lettres seulement :

Afin de simplifier l'utilisation du script allservers.sh, j'ai passé un peu de temps à envisager de mettre sudo su à l'intérieur du script allservers.sh. J'ai découvert que c'est difficile à faire et que c'est également considéré comme une pratique déconseillée.

J'ai finalement trouvé une solution très simple qui fonctionne vraiment bien grâce à l'utilisation d'un alias ~/.bashrc :

alias as="sudo su -c allservers.sh"

Donc maintenant, pour le faire fonctionner, vous n'avez qu'à entrer as dans le terminal, ce qui amène à une demande de mot de passe, et ensuite le script se lance correctement en faisant ce qui lui était demandé.

Quand il se termine, vous avez un /etc/pacman.d/mirrorlist contenant la liste des trois miroirs les plus rapides et votre base de données pacman est synchronisée avec ces miroirs. Si vous avez choisi d'ajouter tout ce qui a été précédemment mentionné au script, alors vous allez avoir un système complètement à jour, y compris pour les fichiers de AUR (à nouveau, si vous l'avez choisi).


Comment éditer votre ~/.bashrc :

Pour ajouter l'alias dans votre /home/<nom utilisateur>/.bashrc, vous devrez ouvrir le fichier .bashrc dans votre éditeur de texte favori.

Puisque le fichier que nous voulons est un fichier caché, comme on peut le voir par le <.point> situé au début de son nom, il va en général être invisible dans le gestionnaire de fichiers qui est appelé lorsque vous utilisez l'option du menu de votre éditeur Fichier -> Ouvrir.

Voici comment nous trouvons le fichier .bashrc dans gedit, les autres éditeurs graphiques de texte fonctionnant de manière similaire :

Sélectionnez le bouton Ouvrir situé en haut et à gauche de la barre d'outils de gedit, puis sélectionnez votre nom d'utilisateur dans la colonne de gauche, et maintenant dans le champ Emplacement situé vers le haut de la zone de recherche de fichier tapez .bashrc et appuyez sur Entrée. Ceci va ouvrir le fichier .bashrc dans gedit.

Une fois le .bashrc ouvert, nous pouvons ajouter l'alias en mettant en surbrillance le texte suivant - par un triple clic gauche de la souris, ou en maintenant le bouton gauche de la souris enfoncé et en la déplaçant tout le long de lla ligne :

alias as="sudo su -c allservers.sh"

Dès que vous avez mis en surbrillance la ligne ci-dessus, sélectionnez-la avec le bouton droite de votre souris. Un menu déroulant va apparaître, dans lequel vous allez sélectionner l'option Copier. Allez ensuite dans votre éditeur de texte qui contient votre .bashrc ouvert, faites un peu de place avec la touche Entrée, et copiez ça à la fin du fichier si vous voulez.

Où il est mis n'a pas d'importance, il fonctionnera tout aussi bien (ne le mettez pas au milieu de quelque chose qui est déjà là, quand même). N'ayez pas peur du .bashrc. Si vous craignez d'y casser quelque chose, vous pouvez en faire une copie avant de le modifier (ce qui est toujours une bonne précaution lorsque vous modifiez des fichiers de configuration).

Une façon facile de le faire, c'est, dès l'ouverture du fichier .bashrc dans votre éditeur de texte, de choisir l'option Enregistrer sous du menu Fichier, et de sauver .bashrc sous un nouveau nom, par exemple .bashrc_BAK.

Ceci créera un nouveau fichier dans votre répertoire /home/<nom d'utilisateur>, juste à côté de l'ancien .bashrc. Cela vous donne la possibilité de récupérer d'une erreur en ouvrant .bashrc_BAK, en le renommant et en l'enregistrant sous son nom d'origine .bashrc.


Modification des chemins de recherche :

Dans une note associée, j'ai mes scripts stockés dans ~/ data/scripts. Lors de l'appel d'un script qui s'y trouve, j'obtiens une erreur commande inconnue parce que ce chemin ne figure pas dans les chemins de recherche par défaut du système.

Pour remédier à cela, j'ai ajouté ce chemin à la fois aux chemins de recherche de root et à ceux de mon unique utilisateur (ce chemin va être utilisé pour d'autres scripts).

La méthode décrite ici à la suite peut être utilisée pour tous les répertoires que vous souhaitez voir figurer dans vos chemins de recherche par défaut. Habituellement, c'est fait pour le compte utilisateur et rarement pour le compte root (administrateur).


Modification des chemins de recherche de root :

Pour éditer des fichiers pour root, vous allez devoir utiliser votre éditeur de texte favori en tant qu'utilisateur root.

Cela se fait de façon différente selon le type d'éditeur. Les éditeurs console (ceux qui opèrent dans le terminal sans interface utilisateur graphique - GUI) sont appelés avec le chemin d'accès au fichier et son nom, et, que vous ouvriez un fichier existant ou cherchiez à en créer un nouveau, ce sera fait, comme par exemple ici en utilisant nano:

sudo nano <chemin/vers/nom-fichier>

gedit et les autres éditeurs graphiques vont utiliser la même méthode que ceux basés console, mais vous pouvez y utiliser un menu d'ouverture de fichiers.

L'exemple suivant ouvre gedit en tant qu'utilisateur root (administrateur) :

sudo gedit

Le fait d'ajouter /home/handy/data/scripts m'évite d'avoir à taper ce chemin à chaque appel d'un de mes scripts. Pour faire ceci pour root, j'ai modifié /etc/profile et j'ai ajouté mon chemin à la fin de la ligne PATH=. C'est tout ce que j'ai eu à faire :

# Set our default path
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/handy/data/scripts"
export PATH


Modification des chemins de recherche de l'utilisateur

Il est beaucoup plus fréquent que quelqu'un veuille modifier le chemin d'un seul compte utilisateur (dans mon cas, c'est très pratique), ce qui se fait dans son fichier ~/.profile, en ajoutant ce qui suit à ce fichier :

PATH=$PATH:</votre/chemin>
export PATH


Récapitulatif :

Après tout ça (pas vraiment dur, en réalité), taper as dans le terminal nous donne les trois miroirs les plus rapides du moment et synchronise notre base de données pacman avec les serveurs.

En tirant parti du menu incorporé, vous pouvez choisir de mettre à jour votre système en choisissant S ou s dans le menu, ce qui appelle la commande pacman -Syu, OU vous pouvez choisir de mettre à jour votre système et les paquets de AUR en choisissant A ou a dans le menu, ce qui appelle la commande yaourt -Syu --aur.

Si, pour le moment, vos besoins sont de mettre à jour votre liste de miroirs et synchroniser vos bases de données de paquets alors vous pouvez quitter le script en cliquant sur la touche Entrée de votre clavier.

Retour à l'accueil