Logo carnetderootxzz@carnetderoot.net"La simplification est la sophistication suprême" - Léonard De Vinci
mardi 08 mai 2018

:: Procédure de mise à jour Debian ::

Debian 7 Wheezy vers Debian 8 Jessie

Mise à jour du système en dernière version mineure.

$ sudo apt-get update && sudo apt-get upgrade -y

Vérification de l'état des paquets

  • Liste des paquets "Half-installed" ou "Failed-Config"

    $ sudo dpkg --audit
  • Liste des paquets bloqués ("On hold")

    $ sudo dpkg --get-selections | grep 'hold$'

Note : Il est préférable de résoudre les problèmes avec ces paquets avant de procéder à la mise à niveau du système, sous peine de risquer quelques surprises.

Modification des sources de paquets

  • Modifier le fichier /etc/apt/sources.list

    $ sudo cp /etc/apt/sources.list /etc/apt/sources.list.save
    $ sudo sed -i 's/wheezy/jessie/' /etc/apt/sources.list
  • Et pour chaques fichiers présents dans /etc/apt/sources.list.d/ :

    $ sudo sed -i 's/wheezy/jessie/' /etc/apt/sources.list.d/<fichier>

Mise à niveau du système

  • Facultatif : vérification de l'espace disque avant d'effectuer la mise à niveau

    $ sudo apt-get update && sudo apt-get -o APT::Get::Trivial-Only=true dist-upgrade
    [...]
    543 mis à jour, 305 nouvellement installés, 10 à enlever et 0 non mis à jour.
    Il est nécessaire de prendre 382 Mo dans les archives.
    Après cette opération, 503 Mo d'espace disque supplémentaires seront utilisés.

    Si il y a un problème d'espace disque, la commande retourne un avertissement :

    E: Vous n'avez pas assez d'espace disponible dans /var/cache/apt/archives/.
  • Mise à niveau

    $ sudo apt-get update && sudo apt-get dist-upgrade
    $ sudo apt-get upgrade
    $ sudo shutdown -r now

Debian 8 Jessie vers Debian 9 Stretch

Préparation

Mise à jour du système en dernière version mineure.

$ sudo apt-get update && sudo apt-get upgrade -y

Suppression des paquets installés automatiquement et qui ne sont plus nécessaires

$ sudo apt-get autoremove

Suppression des fichiers de configuration obsolètes

$ sudo rm -f /etc/*.dpkg-{new,old} 

Vérification de l'état des paquets

  • Liste des paquets "Half-installed" ou "Failed-Config"

    $ sudo dpkg --audit
  • Liste des paquets bloqués par apt-get

    $ sudo dpkg --get-selections | grep 'hold$'
  • Liste des paquets bloqués par aptitude

    $ aptitude search "~ahold"

Modification des sources de paquets

  • Modifier le fichier /etc/apt/sources.list

    $ sudo cp /etc/apt/sources.list /etc/apt/sources.list.save
    $ sudo sed -i 's/jessie/stretch/' /etc/apt/sources.list
  • Et pour chaques fichiers présents dans /etc/apt/sources.list.d/ :

    $ sudo sed -i 's/jessie/stretch/' /etc/apt/sources.list.d/<fichier>

Références


dimanche 06 mai 2018

:: Git ::

Introduction

Fichiers de configuration

Git utilise une série de fichiers de configuration pour déterminer son comportement. Les emplacements sont lus dans un ordre précis et les valeurs lues en dernier écrasent les précédentes ("C'est le dernier qui parle qui a raison"). Vous pouvez positionner ces valeurs manuellement en éditant ces fichiers, mais je vous recommande d'utiliser la commande git config, ne serait-ce que pour éviter des erreurs de syntaxe.

/etc/gitconfig

Contient des valeurs pour tous les utilisateurs du système et tous leurs dépôts. Pour lire et modifier ce fichier, utiliser l'option --system avec git config.

$ git config --system [...]

~/.gitconfig

Spécifique à chaque utilisateur. Pour lire et modifier ce fichier, utiliser l'option --global.

$ git config --global [...]

.git/config

Le dernier emplacement lu par git est le fichier de configuration du dépôt en cours d'utilisation. Ces valeurs sont spécifiques à un unique dépôt. Pour lire et modifier ce fichier, utiliser l'option --local.

$ git config --local [...]

git-config

Pour modifier le comportement de git, il est nécessaire de spécifier certains paramètres de configuration à l'aide de la commande git-config.

Synopsis

$ git config [<file-option>] [type] [--show-origin] [-z|--null] name [value [value_regex]]
$ git config [<file-option>] [type] --add name value
$ git config [<file-option>] [type] --replace-all name value [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] --get name [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] --get-all name [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
$ git config [<file-option>] [type] [-z|--null] --get-urlmatch name URL
$ git config [<file-option>] --unset name [value_regex]
$ git config [<file-option>] --unset-all name [value_regex]
$ git config [<file-option>] --rename-section old_name new_name
$ git config [<file-option>] --remove-section name
$ git config [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
$ git config [<file-option>] --get-color name [default]
$ git config [<file-option>] --get-colorbool name [stdout-is-tty]
$ git config [<file-option>] -e | --edit

Paramètres de configuration

Identité

Note importante : ces informations sont utilisées par Git de manière indélébile (on ne peut changer l'auteur d'un commit après-coup, ni son adresse email).

$ git config --global user.name "Xzz"
$ git config --global user.email "xzz@carnetderoot.net"

Editeur de texte

A ne pas oublier, mon éditeur de texte préféré (parce que nano par défaut, hein, sérieux...) :

$ git config --global core.editor vi

Colorisation de la sortie de git

Pour faire simple on peut activer la colorisation de plusieurs paramètres en une seule commande :

$ git config --global color.ui auto

Si on préfère agir de manière spécifique, on peut modifier les paramètres un par un

$ git config --global color.branch auto
$ git config --global color.diff auto
$ git config --global color.interactive auto
$ git config --global color.status auto

Pour plus de détails sur les paramètres disponibles et leurs effets, je vous invite à consulter la documentation de référence git-config

Vérification des paramètres

$ git config --list
user.name=Xzz
user.email=xzz@carnetderoot.net
color.ui=auto
core.editor=vi

Utilisation de Git

Utilisation courante

Initialisation d'un projet

$ cd projet
$ git init
Dépôt Git vide initialisé dans /path/to/projet/.git/

Ajout des fichiers au projet

$ git add .

Supprimer des fichiers de l'index (ne plus les suivre)

$ git rm --cached fichier_a_ne_plus_suivre.pm

Attention à ne pas oublier l'option --cached ! Si vous omettez ce commutateur, la commande supprimera aussi le fichier du système de fichier :-)

Commit initial

$ git commit -m "Mon premier commit"
[master (commit racine) 6337a68] Commit initial
 89 files changed, 61074 insertions(+)
 create mode 100644 MANIFEST
 create mode 100644 MANIFEST.SKIP
 ...

Retirer des éléments de la synchronisation

Certains fichiers n'ayant pas besoin d'être synchronisés (fichiers temporaires, fichiers de swap, répertoire de sessions, etc.), on crée un fichier .gitignore contenant la liste des fichiers et répertoires à ignorer.

$ vi .gitignore

Contenu de .gitignore :

# Commentaire
# Ignorer les fichiers journaux
logs/
# Ignorer les fichiers temporaires
tmp/
# Ignorer les fichiers en cours d'edition
*.swp
...

Ajout du fichier au repository

$ git add .gitignore
$ git commit -m "Ajout du fichier .gitignore"
[master 8896d55] Ajout du fichier .gitignore
 1 file changed, 6 insertions(+)
 create mode 100644 .gitignore

Ignorer des fichiers déjà commités

Dans le cas où on ne veut plus synchroniser des fichiers déjà commités, ni avoir un retour lors d'un git status, il est préférable de réindexer l'ensemble des fichiers à synchroniser.

Pour cela, le moyen radical est de supprimer l'index existant, rajouter les fichiers puis faire un commit.

Attention : penser à commiter les dernieres modifications de code avant de lancer les commandes ci-dessous

$ git rm -r --cached
$ git add .
$ git commit -m "Suppression de tous les fichiers de l'index puis re-ajout pour bonne prise en compte du fichier .gitignore"

Vérification

$ git status
Sur la branche master
rien à valider, la copie de travail est propre

Historique des commits

$ git log

Création d'un dépôt distant

Sur le serveur distant

$ cd /opt/git
$ mkdir projet.git
$ cd projet.git/
$ git --bare init
Dépôt Git vide initialisé dans /opt/git/projet.git/

Sur le poste hébergeant le dépôt local

$ cd projet
$ git init
$ git add .
$ git commit -m "Mon premier commit"
$ git remote add nom_depot user@serveur:/opt/git/projet.git
$ git push nom_depot master

Clonage du dépôt sur un autre poste

$ git clone user@serveur:/opt/git/projet.git

Pousser ses modifications

$ git push nom_depot master

Gestion des dépôts

Afficher les dépôts enregistrés

$ git remote
$ git remote -v

Ajouter un dépôt

$ git remote add nom_depot url

Modifier un dépôt

$ git remote set-url nom_depot url

Supprimer un dépôt

$ git remote rm nom_depot

Références