Lubuntu sur iMac G3 & eMac G4

Pour les besoins un ami directeur d’une école primaire, ayant récupéré à droite à gauche des iMac G3 & G4 j’ai fait une installation de lubuntu (version plus Light d’ubuntu)

Préambule : la version lubuntu est plus légère dans sont utilisation mais moins pratique à administrer. (moins d’interface prévue pour les tâches peu courante.. normal c’est plus liégé…) il va donc falloir se familiariser avec le terminal…

Boot sur CD

Il faut bien évidemment préalablement avoir téléchargé & gravé lubuntu PowerPC (ppc) dans sa version 12.04 (car c’est la dernière LTS) : lubuntu-12.04-alternate-powerpc.iso

Insérer le CD et maintenez la touche « C » du clavier appuyé

Pour éjecter le CD lors du démarrage laissé le clique sourie enfoncé

Installation

Je vais passer l’étape d’installation qui doit se faire sans problème en suivant les étapes.

[G3] Graphique

Si jamais, comme moi, sur le G3 l’interface graphique ne se lance pas et que vous vous retrouvez avec le terminal « login:  » connectez-vous et configuré l’interface graphique d’une des façons ci-après (non cumulable) :

Avec internet

Taper la commande ci-dessous pour obtenir une adresse IP :

sudo dhclient -v eth0

Puis taper la commande suivante pour télécharger le fichier de configuration de Xorg (trouvé ici)

sudo wget "http://pastebin.com/raw.php?i=RXFdwC80" -O /etc/X11/xorg.conf

Pour finir taper la commande pour redémarrer l’ordinateur

sudo reboot

Avec une clef USB

Depuis un autre ordinateur, créer un fichier sur une clef USB (formaté en FAT32) qui s’appelle xorg.conf à la racine de votre clef et ajouter lui le contenu qui se trouve à cette adresse : http://pastebin.com/RXFdwC80

Ensuite connecter la clef sur le iMac et taper les commandes suivantes :

sudo mount /dev/sdb1 /mnt/
sudo cp /mnt/xorg.conf /etc/X11/xorg.conf
sudo reboot

 A la main

Éditer le fichier à la main :

sudo nano /etc/X11/xorg.conf

Le contenu du fichier est disponible à cette adresse : http://pastebin.com/RXFdwC80 il ne faut faire aucune faute de frappe, bon courage !

[G3] Réseau

Il est possible que le réseau soit directement détecté dans ce cas ne toucher à rien mais si ce n’est pas le cas deux solutions s’offre à vous (non cumulable)

a) Le rc.local

Ouvrer l’application LXterminal et taper la commande

sudo leafpad /etc/rc.local

Et comme sur l’image ci-dessous ajouter avant le « exit 0 » l’instruction suivante :

dhclient eth0

Puis redémarrer l’ordinateur.

rc.local edit leopad

b) Network-manager

La procédure trouvée consiste à éditer le fichier /etc/network/interfaces avec la commande :

sudo leafpad /etc/network/interfaces

Et d’y supprimer toutes les lignes sauf les 2 lignes suivantes :

auto lo

iface lo inet loopback

Connexion automatique

Pour que l’utilisateur se connecte directement sans mot de passe. La procédure trouvée consiste à éditer le fichier /etc/lightdm/lightdm.conf :

sudo leafpad /etc/lightdm/lightdm.conf

Le contenu doit être le suivant :

[SeatDefaults]

autologin-user=votre_nom_d_utilisateur    (pour nous : bourg)

autologin-user-timeout=0

user-session=Lubuntu

greeter-session=lightdm-gtk-greeter

Ajouter un logiciel

De façon graphique vous avez deux possibilités de le faire :

Ces deux programmes se trouve dans Outils système

Imprimante Rico MP 3350

L’imprimante devrait s’installer facilement car un pilote libre est disponible (ci-après) il faut surtout, si elle n’est pas reconnue dans la recherche automatique, déterminer son adresse IP (souvent il est possible d’imprimer la configuration et l’adresse IP se trouve dans la rubrique « réseau ».

Modifier les menus :

La procédure consiste à installer le logiciel alacarte. Vous pouvez l’appeler par Menu / Préférences / Main Men

Optimisation

Désactiver mise à jour

Je conseils de désactiver les mise à jour automatique et de les faire manuellement de temps en temps.

Pour ce faire rendez-vous dans Outil système / Gestion des mises à jour puis dans Paramètres… / Mise à jour / Vérifier automatiquement les mises à jour : Jamais

lubuntu stop safe-upgrade

Paramètre de session

Désactiver un maximum de choses inutiles dans le démarrage afin d’accélérer la vitesse : Préférences / Paramètres de Session

Décocher tout sauf Réseau & file d’attente

Supprimer superflus

Virer de façon graphique (Outil système / Gestionnaire de paquet synaptic) ou via LXterminal : apt-xapi-index

sudo aptitude remove apt-xapian-index

Conclusion

Le G3 est franchement limité en ressource je pense qu’augmenter la RAM et éventuellement opter pour un disque dur plus rapide ne serait pas un mal. (Il y a plein de HowTo sur internet pour ça juste en tapant par exemple : « upgrade RAM imac g3 » dans votre moteur de recherche préféré – d’ailleurs c’est ce que les gens semble faire…

Le G4 beaucoup moins de problèmes et bien plus performant sans aucun doute, ça peut tourner comme ça même si c’est pas non plus une foudre de guerre.

[FredgniX] diff et patch en dix minutes

Je me permets ici de reprendre un article du blog de FredgniX, qui a été fermé (ce que je trouve bien dommage, je revenais souvent sur cet article) je le pose donc ici pour en garder trace… (retrouvé sur webarchive)

Le guide de dix minutes sur diff et patch

[…]

Voici un guide rapide sur diff et patch qui vous aidera dans ces situations en décrivant les outils de la façon la plus communément utilisée. Il vous en dira suffisamment pour commencer de la bonne façon. Plus tard, vous pourrez apprendre les tenants et les aboutissants de diff et patch à votre guise, en utilisant les pages de manuel.

Appliquer des patchs avec patch

Pour appliquer un patch à un seul fichier, mettez vous dans le dossier où se trouve le fichier à modifier, le patch et appelez patch :

patch < foo.patch

Ces instructions assument que le patch est distribué dans un format unifié, qui identifie le fichier sur lequel appliquer le patch. Sinon, vous pouvez le préciser avec la commande :

patch foo.txt < bar.patch

Appliquer des patches à un dossier complet (sûrement le cas le plus commun) est similaire, mais vous devez faire attention en identifiant le « niveau p ». Cela signifie que, dans les fichiers de patch, les fichiers à patcher sont identifiés par des noms de chemins qui peuvent être différents maintenant que les fichiers se trouvent sur votre ordinateur plutôt que sur l’ordinateur où le patch a été créé. Le niveau de profondeur p est fait pour ignorer les parties du nom de chemin afin qu’il puisse identifier les fichiers correctement. Le plus souvent un niveau de 1 fonctionnera, vous utiliserez donc :

patch -p1 < bar.patch

Vous devriez changer le répertoire source de haut niveau avant d’exécuter cette commande. Si un niveau p n’identifie pas correctement les fichiers à patcher, inspecter le patch pour repérer les noms complets d’accès aux fichiers. Si vous voyez un nom comme :

/users/stephen/package/src/net/http.c

Et que vous souhaitez modifier le fichier net/http.c, utilisez :

patch -p5 < baz.patch

En général, compter jusqu’à un pour chaque séparateur de chemin (barre oblique) que vous supprimez à partir du début du chemin, jusqu’à ce que ce que le chemin qui reste existe dans votre répertoire de travail. Le nombre atteint est le niveau p.

Pour effacer les effets d’un patch, utilisez l’option -R, comme ceci :

patch -p5 -R < baz.patch

Créer des patchs avec diff

L’utilisation de diff est simple si vous travaillez avec des fichiers ou des répertoires individuels entiers. Pour créer un patch pour un seul fichier que vous avez copié, renommé puis modifé, utilisez la commande :

diff -u original.c new.c > original.patch

Pour créer un patch pour une arborescence complète des sources, faire une copie de l’arbre :

cp -R original new

Apportez les modifications nécessaires dans le répertoire copié. Ensuite, créez un patch avec la commande suivante :

diff -rupN original/ new/ > original.patch

C’est tout ce dont vous avez besoin pour commencez à travailler avec diff et patch. Pour de plus amples informations, utilisez les pages de manuel :

man diff
man patch

Script de sauvegarde Mysql par base « mysql_dump.sh »

EDIT – 13/05/2013 : v0.3 du script avec prise en compte des suggestions d’améliorations de David M + Trap

EDIT – 06/12/2012 : v0.2 du script avec prise en compte des commentaires de l’article

Un énième script de sauvegarde à plat de bases Mysql sur internet. Celui-ci crée un fichier texte (.sql) par base et compresse le tout ensuite.

J’utilise ce script depuis plus de 3 ans, ça tourne bien et surtout ça dépanne bien !

Attention : ce script est à coupler avec un système de sauvegarde complet et distant…

Préparation

Il faut créer un utilisateur Mysql (appelé dump) avec des droits restreints en lecture sur toutes les bases :

$ mysql -u root -p -e "CREATE USER 'dump'@'localhost' IDENTIFIED BY 'LEMOTDEPASSE';"
$ mysql -u root -p -e "GRANT SELECT , SHOW DATABASES , LOCK TABLES , SHOW VIEW ON * . * TO 'dump'@'localhost' IDENTIFIED BY 'LEMOTDEPASSE' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;"

Le script

Copier le contenu du script dans un fichier mysql_dump.sh puis faite un chmod +x mysql_dump.sh afin de le rendre exécutable. Ajouter ensuite ce script dans vos tâches crons pour qu’il s’exécute toutes les nuits (par exemple).

Note : les remarques sont les bienvenus…

#!/bin/bash 

# Inspiré d'un script trouvé sur phpnews.fr (plus en ligne)
# Version 0.3 13/05/2013

# Script sous licence BEERWARE

set -eu

## Paramètres
USER='dump'
PASS='LEMOTDEPASSE' 
# Répertoire de stockage des sauvegardes
DATADIR="/var/backups/mysql"
# Répertoire de travail (création/compression)
DATATMP=$DATADIR
# Nom du dump
DATANAME="dump_$(date +%d.%m.%y@%Hh%M)"
# Compression
COMPRESSIONCMD="tar -czf" 
COMPRESSIONEXT=".tar.gz"
# Rétention / rotation des sauvegardes
RETENTION=30
# Exclure des bases
EXCLUSIONS='(information_schema|performance_schema)'
# Email pour les erreurs (0 pour désactiver
EMAIL=0
# Log d'erreur
exec 2> ${DATATMP}/error.log

## Début du script

ionice -c3 -p$ &>/dev/null
renice -n 19 -p $ &>/dev/null

function cleanup {
    if [ "`stat --format %s ${DATATMP}/error.log`" != "0" ] && [ "$EMAIL" != "0" ] ; then
        cat ${DATATMP}/error.log | mail -s "Backup MySQL $DATANAME - Log error" ${EMAIL}
    fi
}
trap cleanup EXIT

# On crée sur le disque un répertoire temporaire
mkdir -p ${DATATMP}/${DATANAME}

# On place dans un tableau le nom de toutes les bases de données du serveur 
databases="$(mysql -u $USER -p$PASS -Bse 'show databases' | grep -v -E $EXCLUSIONS)"

# Pour chacune des bases de données trouvées ... 
for database in ${databases[@]} 
do
    echo "dump : $database"
    mysqldump -u $USER -p$PASS --quick --add-locks --lock-tables --extended-insert $database  > ${DATATMP}/${DATANAME}/${database}.sql
done 

# On tar tous
cd ${DATATMP}
${COMPRESSIONCMD} ${DATANAME}${COMPRESSIONEXT} ${DATANAME}/
chmod 600 ${DATANAME}${COMPRESSIONEXT}

# On le déplace dans le répertoire
if [ "$DATATMP" != "$DATADIR" ] ; then
    mv ${DATANAME}${COMPRESSIONEXT} ${DATADIR}
fi

# Lien symbolique sur la dernier version
cd ${DATADIR}
set +eu
unlink last${COMPRESSIONEXT}
set -eu
ln ${DATANAME}${COMPRESSIONEXT} last${COMPRESSIONEXT}

# On supprime le répertoire temporaire 
rm -rf ${DATATMP}/${DATANAME}

echo "Suppression des vieux backup : "
find ${DATADIR} -name "*${COMPRESSIONEXT}" -mtime +${RETENTION} -print -exec rm {} \;

Et voici l’antidote (la restauration)

#!/bin/bash 

# Script sous licence BEERWARE

set -eu

## Paramètres mysql
USER='root'
PASS='xxxxxxxxxx' 
# Répertoire de stockage des sauvegardes (contient des fichier *.sql )
DATADIR="/tmp/dump_11.10.19@02h02"

## Début du script
ionice -c3 -p$$ &>/dev/null
renice -n 19 -p $$ &>/dev/null

dbfiles=`find ${DATADIR} -name "*.sql"`
for dbfile in $dbfiles; do
    db=`echo ${dbfile##*/} | cut -d'.' -f1`
    echo "Restauration de la base : $db avec le fichier $dbfile"
    mysql -u $USER -p$PASS $db < $dbfile
done 

Partage de mon fichier ~/.bash_aliases

Le bash_aliases  grossomodo c’est un fichier qui se trouve dans votre $HOME qui contient des raccourcis de commandes. C’est très pratique quand on passe beaucoup de temps dans sont terminal…

Je partage le mien qui n’est ni plus ni moins qu’une compile de ce qu’on peut trouver ici où là et deux trois petites choses maison dont je ne suis pas peu fier…

# Eliminer les commentaires d'un fichier
alias cgrep="grep -E -v '^(#|$|;)'"
alias nocomment='cgrep'

# Reviens à faire  cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak 
function cpb() { cp $@{,.bak} ;}
# Crée une sauvegarde du fichier passé en paramètre, en rajoutant l'heure et la date
function bak() { cp "$1" "$1_`date +%Y-%m-%d_%H-%M-%S`" ; }
alias bak="bak"
alias back="bak"

# Êtres gentil avec les ressources de son système
function nicecool() {
    if ! [ -z "$1" ] 
    then
        # Prendre en paramètre un pid
        ionice -c3 -p$1 ; renice -n 19 -p $1
    else
        # Si il n'y a pas de paramètre on nice le pid courant (le bash)
        ionice -c3 -p$ ; renice -n 19 -p $
    fi
}
alias niceprod="nicecool"
alias np="niceprod"

function extract() {
    if [ -f $1 ] ; then
        case $1 in
            *.tar.bz2)  tar xjf $1      ;;
            *.tar.gz)   tar xzf $1      ;;
            *.bz2)      bunzip2 $1      ;;
            *.rar)      rar x $1        ;;
            *.gz)       gunzip $1       ;;
            *.tar)      tar xf $1       ;;
            *.tbz2)     tar xjf $1      ;;
            *.tgz)      tar xzf $1      ;;
            *.zip)      unzip $1        ;;
            *.Z)        uncompress $1   ;;
            *)          echo "'$1' cannot be extracted via extract()" ;;
        esac
    else
        echo "'$1' is not a valid file"
    fi
}
alias extract="extract"
alias unall="extract"

# Bannir l'IP d'un méchant rapidement
function ban() {
    if [ "`id -u`" == "0" ] ; then
        iptables -A INPUT -s $1 -j DROP
    else
        sudo iptables -A INPUT -s $1 -j DROP
    fi
}
alias ban="ban"

# Divers petits raccourcis : 
alias q='exit'
alias maj='sudo aptitude update && sudo aptitude safe-upgrade'
alias c='clear'
alias rm='rm --interactive --verbose'
alias wget='wget -c'
alias mv='mv --interactive --verbose'
alias cp='cp --verbose'
alias grepr='grep -r'
alias grep='grep -i --color'
alias tree="find . | sed 's/[^/]*\//|   /g;s/| *\([^| ]\)/+--- \1/'"
alias mkdir='mkdir -pv'
alias pg='ps aux | grep'
alias pl='ps faux | less'
#function mkcd () { mkdir $1 && cd $1 }
function mkcd() { mkdir -p "$@" && cd "$_"; }
alias mkcd="mkcd"

alias rotate-exif='jhead -autorot' # rotate-exif *.JPG
alias 1024="mogrify -resize 1024x1024 *.JPG"

# Sources : 
#  - http://root.abl.es/methods/1504/automatic-unzipuntar-using-correct-tool/
#  - http://forum.ubuntu-fr.org/viewtopic.php?id=20437&p=3

Si aucun de ces raccourcis ne s’applique une fois que vous avez relancé votre terminal vérifier que vous avez une référence au .bash_aliases dans votre fichier ~/.bashrc

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Et si vous avez des alias que vous jugez indispensable n’hésitez pas à les posters en commentaire…

Xsshfs v0.5 – Interface graphique pour Xsshfs (Perl/Glade)

Xsshfs est une interface graphique pour SSHFS développé par mes soins. Ce dernier sert à monter sur son système de fichier, un autre système de fichier distant, à travers une connexion SSH. L’avantage est de manipuler les données distantes avec n’importe quel gestionnaire de fichier.

Vite vite, je veux le tester

Pour les Debian/ubuntu

Graphiquement télécharger le deb ici

Sinon en 4 commandes c’est fini :

meuhwa:~$ sudo apt-get install sshfs ssh-askpass libgtk2-gladexml-perl perl libimage-librsvg-perl liblocale-gettext-perl libconfig-tiny-perl
meuhwa:~$ wget http://xsshfs.zici.fr/files/xsshfs_current.deb
meuhwa:~$ sudo dpkg -i xsshfs_current.deb
meuhwa:~$ rm xsshfs_current.deb

Installation à partir du dépôt source

Il faut préalablement avoir installé les dépendances suivantes :  sshfs, ssh-askpass, perl, libgtk2-gladexml-perl, libimage-librsvg-perl, liblocale-gettext-perl, libconfig-tiny-perl

meuhwa:~$ wget -O xsshfs.zip http://forge.zici.fr/p/xsshfs/source/download/master/
meuhwa:~$ unzip xsshfs.zip
meuhwa:~$ cd xsshfs-master
meuhwa:~$ perl xsshfs.pl

Les nouveauté de la version 0.5

  • Paramétrer les valeurs par défauts des champs de connexions
  • Normalisation FreeDesktop
  • Traduit en 3 langues (c’est toujours 3 fois plus que dans la version 0.4)
  • Possibilité de « reprendre » une connexion enregistré
Sources : http://doc.ubuntu-fr.org/sshfs

Xsshfs v0.4 est de sortie…

Xsshfs est un petit programme Perl écrit par mes soins qui permet d’utiliser la commande SSHFS graphiquement. Celui-ci est maintenant disponible en version 0.4.

Au menu des petits plus :

  • Sélection d’une clef SSH possible
  • Le champs « Autres options » c.f. man sshfs
  • Une petite ré-organisation des champs pour épurer l’interface
  • Ajout de paramètres à la commande xsshfs :  –help | –version | –ficheirConfig | –debug

Les liens du projet

Pour l’installation :

$ wget http://xsshfs.zici.fr/files/xsshfs_current.deb ; sudo dpkg -i xsshfs_current.deb ; sudo apt-get install -f ; rm xsshfs_current.deb </code>