Affichage des articles dont le libellé est Linux. Afficher tous les articles
Affichage des articles dont le libellé est Linux. Afficher tous les articles

vendredi 17 octobre 2008

Quelques bon blogs...

Salut tout le monde,

Un petit post pour faire un récapitulatif de bons blogs sur les logiciels libres et le systèmes GNU/Linux.


Et bien sur, les blogs de quelques grands noms :


Autres sites utiles :

jeudi 16 octobre 2008

Une autre des raisons pour laquelle j'aime GNU/Linux

Salut tout le monde,


Un petit post pour montrer une des choses que j'aime dans Linux > Les informations sont disponibles partout. Regardez par exemple cette image qui montre les différents moyens de voir le morceau de musique joué actuellement par MPD, ma solution de lecture de musique.

On le voit donc par
  • Conky > Mis en arrière plan sur mon bureau
  • NCMPC > Le client qu'on voit dans le terminal à droite, et qui me permet de gérer ma musique dans une interface NCurses
  • Les popups, une spécifique à "GMPC", mon client pour MPD, et l'autre générée automatiquement par libnotify, un système de gestion de popups commun à tout le système
  • MPC > Client basique pour MPD
  • Et le must > Netcat. Netcat n'est pas un client spécifique à MPD. Il est juste capable d'ouvrir un socket de communication vers un serveur et donc de gérer ma musique dans le protocole qui me permet de communiquer directement avec le serveur.

lundi 22 septembre 2008

Version graphique de CP

Salut, voilà juste un petit script pour faires des copies avec cp tout en voyant la progression sur une interface graphique.

#!/bin/sh
set -e
( strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf percent
printf "\n"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0 ) \
| zenity --progress --auto-close --title="Copie de fichiers..." --width=600 --text="Copy of file ${1} ($(file -b ${1}), $(du -h ${1} | awk '{print $1}')) to ${2} ($(file -b ${2}))" 2>&1

Pour l'utiliser, enregistrer ce code dans un fichier

Ensuite, avant de l'utiliser, veillez à le rendre executable (chmod +x mon_script).

Et puis ensuite, faire ./mon_script source destination, pour faire la copie.

Ca fonctionne de la même manière que la commande "cp", mais en version graphique, et qui affiche un pourcentage, la taille, et le type des fichiers. Par exemple en faisant :

./cp_p document.pdf copie_document.png, je vois :

Interface graphique pour scripts sous Linux

Salut,

voilà 2 logiciels très très pratiques pour faire des scripts sous Linux, quelque soit le language, puisqu'ils sont sous formes executables.

  • Zenity (sous Gnome, équivalent de kDialog sous KDE)
  • libnotify-bin, vous connaisssez probablement libnotify, la librairie qui permet d'afficher des notifications sous les systèmes GNU/Linux en général. Pourquoi ne pas afficher une notification dans votre script en utilisant notify-send, disponible dans libnotify-bin.

Il y en a d'autres mais j'ai oublié les noms...

vendredi 5 septembre 2008

Citation de bashfr dans bash

Salut tout le monde,

Certains d'entre vous connaissent peut etre déjà bashfr.org, un site qui est un récueil de citations dites sur le Net (MSN ou IRC), et qui sont pour la plupart assez drôles.

Et bien voilà un moyen de dire à votre ordinateur Linux d'afficher une citation de bashfr.org à chaque ouverture d'un shell.

Nous allons utiliser cette commande :
lynx --dump --display_charset=utf8 http://www.bashfr.org/?sort=random2 | awk '$1~"#" && $0!~"RSS" { getline; while ($1!~"#") { print $0; getline;}; exit}'

Dans cette commande, nous voyons assez bien la puissance de GNU/Linux qui est de pouvoir faire des opérations compliquées en une seule ligne, grâce à pipes et à Awk.

Il suffit d'intégrer cette commande à la fin du fichier de configuration de votre shell. Ici je vais décrire la méthode pour Bash.

Méthode pour Bash
  1. Ouvrez un terminal
  2. Tapez "cd"
  3. Tapez "gedit .bashrc"
  4. Rajoutez la ligne décrite juste avant à la fin de ce fichier
  5. Enregistrez
  6. Fermer
Maintenant, fermez votre terminal, et réouvrez le. Boum, après un léger temps d'attente, la citation apparait.

Si vous trouvez qu'elle est trop longue à apparaitre ou que vous ne voulez pas le voir, entrez "Ctrl +C".

Variante avec cowsay


Cette variante va afficher la citation à partir d'une vache, comme ceci :


Tout d'abord installez le paquet cowsay (Debian : sudo apt-get install cowsay).

Ensuite rajoutez à la ligne que nous avons ajouté dans le .bashrc le texte suivant :
"| cowsay".

Cette ligne deviendra donc :
lynx --dump --display_charset=utf8 http://www.bashfr.org/?sort=random2 | awk '$1~"#" && $0!~"RSS" { getline; while ($1!~"#") { print $0; getline;}; exit}' | cowsay


pistache

Identifiant unique pour les disques durs dans le fstab

Salut all,

récemment j'ai été confronté à un petit problème. J'ai un disque dur USB de 320 Go avec environ 80 Go de Musique dessus. Pour qu'il se monte tout seul, je l'ai mit dans /etc/fstab. J'ai donc indiqué dans le fstab l'adresse de la partition de mon disque dur externe : /dev/sdb3.

Jusque là ça marchait. Mais un jour, je débranche le disque dur un peu brusquement, et évidemment les adresses de disque restent dans "/dev". Donc quand je rebranche mon disque dur, il passe en "/dev/sdc3". Pareil quand je branche une clé USB avant.

J'ai donc cherché une solution. En gros, le noyau Linux créé des liens symboliques dans le répertoire "/dev/disk/". Ces fichiers sont des liens symboliques vers les périphériques dans "/dev" correspondants !

Et voici donc mon fstab tout neuf :
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/sda6
UUID=3db9ba9f-1339-4bd2-9434-881de54e7ccb / ext3 relatime,errors=remount-ro 0 1
# /dev/sda7
UUID=7811eda4-f252-4672-b8e0-46557bf88b04 /home ext3 relatime 0 2
# /dev/sda5
UUID=f8ad669e-bd1b-4a26-9c4a-58c490645d42 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
/dev/disk/by-id/usb-Seagate_FreeAgentDesktop_5QF31RXF-0:0-part3 /media/Musique ntfs user,auto,nodevx 0 0
#tmpfs /home/pistache/RAM Disk tmpfs nosuid,sync,noexec,nodev 0 0

Exemple :
[ (13) bash 3.2.39 in device 0, 09:47:22 ]
pistache@pistache-laptop:~$dir /media/Musique
[ (14) bash 3.2.39 in device 0, 09:47:35 ]
pistache@pistache-laptop:~$sudo mount -a
[ (15) bash 3.2.39 in device 0, 09:47:44 ]
pistache@pistache-laptop:~$dir /media/Musique
mpd_status Musique Musique (à encoder) Musique (DB)

pistache

Binaires MPD 0.14

Bon salut tout le monde, je poste juste un petit message pour insérer ici les binaires pour de la dernière version du Music Player Daemon, disponible dans le .deb suivant :

  • Compilé sous : Ubuntu (CPP 4.2.3)
  • Paquet pour Debian
Et voici le lien : www.cairotes.org/dev/files/mpd-0.14_0.14-1_i386.deb

(Pour tous ceux qui veulent un tuto pour la COMPILATION, poster un commentaire)

lundi 1 septembre 2008

Ajouter un module à GMPC

Ce matin, je viens de terminer l'organisation de ma bibliothéques musicale (60 Go, 10 jours de musique continue, j'ai de quoi faire ^^)

J'ai alors voulu ajouter un module à GMPC (j'en ai parlé dans un post), le client graphique de Gnome pour MPD (Music Player Daemon).

Je télécharge, j'extrait le *.tar.gz.

Ensuite je me lance dans la compilation : donc je fait ./autogen.sh.

J'ai du d'abord installer les dépendances (pour info, généralement il faut chercher un paquet commençant par "lib", avec ensuite le nom de la dépendance manquante, et se terminant par -dev" ou "-devel"). Je relance le script, et là paf... Je n'ai pas la bonne version de GMPC, qui est pourtant la plus récente dans Synaptic.

Bon bah compilation de GMPC, et de par extension sa principale dépendance libmpd.

Pour compiler libmpd aucun problème, faut juste installer quelques dépendances facilements trouvables.
Donc on fait ./configure, make et checkinstall (checkinstall va faire le "make install" à votre place, mais va générer un paquet, ce qui permet une désinstallation plus tard, prenez l'habitude de l'utiliser, si possible. Si vous ne l'avez pas, le paquet est nommé checkinstall). Comme le "make install", "checkinstall" est à lancer en root (sauf si vous utilisez fakeroot, mais là n'est pas le sujet), et synaptic doit être fermé pour installer le paquet.
Seul petit problème, le checkinstall peut ne pas réussir à déplacer un fichier, ça sera marqué dans sa sortie, vous devrez peut etre le faire vous même, il est dans ./src/.libs/, et il faut le placer dans le répertoire que checkinstall vous indique (en cas de problème postez un commentaire).


Par contre GMPC, il me fait des siennes à la compilation... En gros ça va faire une erreur au niveau du make.

Pour la corriger il faut remonter dans le log du make, puis du ./configure. Et le problème est là, le configure nous a dit qu'il faut installer un paquet nommé Gob2, sauf qu'il ne s'est pas arrêté à cette erreur. Attention : dans le make, l'erreur apparait d'une autre manière, ce qui est lié au fait que l'absence de Gob2 ne provoque pas d'erreur directe, mais un enchainement d'événements qui fout le bordel dans le "make".

Donc on installe Gob2, on fait "make clean", et ça marche toujours pas... ou si.

En fait la compilation est à faire en root. J'ai toujours pas compris pourquoi, mais si, en tout cas pour moi.

Ensuite, on fait le checkinstall (checkinstall va faire le "make install" à votre place, mais va générer un paquet, ce qui permet une désinstallation plus tard, prenez l'habitude de l'utiliser, si possible. Si vous ne l'avez pas, le paquet est nommé checkinstall).

Comme le "make install", "checkinstall" est à lancer en root (sauf si vous utilisez fakeroot, mais là n'est pas le sujet) et Synaptic doit être fermé, pour installer le paquet.

Ensuite GMPC est installé, et vous pourez compiler et installer vos paquets !

Pour de l'aide, postez un commentaire !

pistache,

PS: Pour ceux qui n'ont rien compris, si vous ne savez pas ce que c'est qu'une compilation et le fonctionnement de make, c'est normal. En effet, ce post était d'un niveau légérement plus élévé que la moyenne de ce blog ^^.

jeudi 14 août 2008

Un autre petit blog sympa

Salut,

je viens de trouver, en surfant désespérément un moyen de réparer un fichier image disque cassé dont je n'ai plus l'original et que je vais me flinguer parce qu'il n'est pas à moi et que ça m'énerve d'avoir passé l'après-midi à chercher et que j'en ai marre et que... PAN...

Bon reprenons, je viens de trouver, en surfant désespérément [...], un petit blog sympa sur les gnous et les pingouins, le blog de dYp, dont voici l'adresse :

http://yaen.pujol.free.fr/dotclear/index.php


Et encore merci à l'auteur pour la procédure de démontage du Dell, ça m'a bien aidé ^^ (si jamais il voit ce post).

pistache

La musique sous Linux - 1ère partie : MPD

La musique sous Linux - 1ère partie : MPD

Je suis un grand amateur de musique en tout genre, et j'aime avoir à disposition une plate-forme qui me permet d'écouter de la musique de manière simple et souple.

J'ai découvert, il y a peu de temps, l'existence du système MPD, pour Music Player Daemon.

En gros, c'est un serveur qui joue les morceaux dans sa base de données. Les clients indiquent simplement au client quel morceau jouer. MPD est disponible dans les dépôts d'Ubuntu, mais il doit aussi être disponible pour les autres distributions, et de toute façon, on peut toujours compiler le tarball.

Une fois installé, il faut le configurer. Le fichier à éditer est /etc/mpd.conf, vous pouvez l'éditer en tapant :

sudo nano /etc/mpd.conf

Le fichier est assez simple, vous avez surtout besoin de changer les champs suivants :
  • music_directory : Indiquez le répertoire ou il faut chercher les morceaux de musique. MPD suit les liens symboliques, ce qui permet de tout mettre dans une partition dédiée que vous linkez dans votre répertoire Musique (à défaut de pouvoir la monter directement dans Musique)
  • state_file : Indique le fichier qui contient le statut actuel de MPD (quel morceau est en train d'être joué, playlist actuelle). Grâce à ce fichier, MPD continuera automatiquement le morceau joué lors de son arrêt. De cette manière, "killall mpd;mpd" n'arrêtera pas la lecture en cours
  • audio_output : Pour l'instant vous n'êtes pas obligés d'en spécifier une. Si jamais vous voulez le faire, c'est très bien expliqué par les commentaires et il y a des exemples
MPD a besoin, comme la plupart des démons Linux, d'être lancé par root. En effet, MPD va changer d'utilisateur au démarrage pour l'utilisateur spécifié dans le fichier de configuration (par défaut, l'utilisateur MPD, créé à l'installation et spécifié par le champ user), et cette opération nécessite des droits d'administrateurs, sauf si vous le lancez directement à partir d'un shell de l'utilisateur MPD (sudo -s -u mpd).

Pour lancer MPD, il suffit d'executer MPD, qui va se mettre en démon tout seul, sinon la méthode du /etc/init.d/mpd start marche aussi.

Mais quand vous aurez démarré MPD, que faire... Eh oui vous êtes obligé d'utiliser un client pour MPD, qui va vous permettre de le contrôler.


Les clients sont assez nombreux et se ressemblent pour la plupart. Vous pouvez voir la liste du site officiel (liste plus complète sur le wiki)






Personellement, j'utilise GMPC (Gnome Music Player Client, un client pour Gnome), nCMPC (nCurses Music Player Client, un client en ligne de commandes mais avec une interface nCurses évoluée) et MPC (Music Player Client, client très simple en ligne de commande).



Une fois que vous aurez démarré MPD et votre client, vous remarquerez que... vous n'avez pas de morceaux disponibles, malgré que vous avez bien spécifié le répertoire de Musique dans mpd.conf.

C'est tout simple, il faut dire à MPD de recréer la base.
sudo /etc/init.d/mpd stop
killall mpd

sudo mpd --create-db

Et ensuite on redémarre
sudo /etc/init.d/mpd start

Et on s'amuse ;)

Ce mini tutoriel est le début d'un ensemble de 3 tutos, sur le sujet de la musique sous Linux

Pistache

mercredi 13 août 2008

Comment ouvrir rapidement un nouveau TTY ?

Salut,

Bon rapidement une petite astuce pour ouvrir un autre TTY sur son système Linux...

Utilisez juste la commande... open, ou alors openvt, si open est déjà assigné !

Attention, la commande doit etre exécutée à partir d'une console Linux, donc d'un TTY.

Vous pouvez spécifier la commande à exécuter, par défaut openvt ouvre votre shell, pour plus d'informations, man open ^^

pistache

Petite info

Comme je viens de terminer quelque posts (Personnalisation des shells, de Bash, et les niveaux d'éxecutions) je vais me lancer dans mon projet de l'été, que j'avais en tête depuis pas mal de temps.

Le sujet sera assez proche de la MAO, et bien sur sous Linux, mais une petite partie .NET aussi.

Je vous dit pas tout de suite le sujet exact je laisse la surprise ^^.

Les niveaux d'éxecutions de Linux

Vous avez déjà probablement entendu parlé des niveaux d'éxecutions. Mais qu'est-ce que c'est au juste ?

En fait le niveau d'éxecution correspond à un stade du fonctionnement de l'OS.

Il en existe plusieurs, que vous pouvez en fait personnaliser, mais là n'est pas le but de ce post.

  • 0 pour l'arrêt du système
  • 1 pour l'arrêt du système en mode mono-utilisateur
  • S qui permet le passage en mono-utilisateur. Celui-ci n'est pas directement utilisé, il est appelé lors du passage en niveau 1
  • 6 pour le redémarrage du système

Généralement le niveau 2 est utilisé pour l'interface graphique.

Le mode mono-utilisateur est un mode qui ouvre une seule console (/dev/console), connectée en root tout de suite. Quand on démarre en "Recovery Mode", on démarre tout en restant en mode 1 (mono-utilisateur), il faut donc bien protéger le Recovery Mode (le mot de passe sur le recovery mode dans grub est une bonne solution).

Pour changer de mode, il faut utiliser la commande init. En fait quand init est lancé par un utilisateur et non par le kernel, il redirige la commande vers telinit.

En fait init, c'est le processus lancé au début par le kernel, et qui lance touts les autres (dont les ttys, l'interface graphique, les services init.d) en lisant son fichier de configuration :

/etc/inittab

Avec ce fichier on peut rajouter des TTY sur Ctrl+Alt+F8 par exemple, ou encore une deuxième interface graphique, même si c'est plus compliqué.

Si jamais vous voulez passer du mode Multi-Utilisateur au mode Mono-Utilisateur, utilisez juste la commande init (ou telinit) avec comme argument le numéro du niveau d'éxecution de votre choix... Attention, passer en mono-utilisateur ferme le serveurs X et vous perdez vos tâches en cours !

Dernière astuce, pour voir le runlevel (niveau d'execution chez Shakespeare ;) ), entre la commande... runlevel ! Facile, non ?

Personnaliser son bash avec des couleurs

Salut tout le monde,

petit mini-tutoriel sur la personnalisation du Shell de Linux (ou encore de Cygwin), plus précisément de... Bash. C'est le Shell (interface de ligne de commande) par défaut de Linux, donc c'est celui que vous utilisez probablement. De toute façon, les diférences sont minimes dans la plupart des cas. Ce que je vais vous apprendre à faire, c'est tout simplement changer votre "Prompt". Le prompt c'est quoi ?

Eh beh le prompt c'est tout simplement, la partie qui s'affiche à l'écran en permanence dans le shell, juste avant les commandes que vous entrez. Par exemple : pistache@pistache-laptop:~$.

Le prompt par défaut est souvent un peu tristounet, sans couleurs, mais nous allons changer ça. Alors déjà, comment modifier le prompt ? C'est tout simple, il est stocké dans la variable d'environnement PS1.
Essaiez d'entrer "echo $PS1" et vous verrez votre prompt. Le prompt est presque toujours dynamique. C'est à dire que le nom d'utilisateur n'est pas stocké en dur dans le prompt, on met plutot le code \*, ou * est remplacé par une lettre, ce qui formera un code qui sera remplacé par Bash pour mettre la valeur correspondante. Voilà un petit tableau récapitulatif des codes qu'on peut utiliser dans la Bash :

  • \a : an ASCII bell character (07)
  • \d : the date in "Weekday Month Date" format (e.g., "Tue May 26")
  • \D{format} : the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
  • \e : an ASCII escape character (033)
  • \h : the hostname up to the first '.'
  • \H : the hostname
  • \j : the number of jobs currently managed by the shell
  • \l : the basename of the shell’s terminal device name
  • \n : newline
  • \r : carriage return
  • \s : the name of the shell, the basename of $0 (the portion following the final slash)
  • \t : the current time in 24-hour HH:MM:SS format
  • \T : the current time in 12-hour HH:MM:SS format
  • \@ : the current time in 12-hour am/pm format
  • \A : the current time in 24-hour HH:MM format
  • \u : the username of the current user
  • \v : the version of bash (e.g., 2.00)
  • \V : the release of bash, version + patch level (e.g., 2.00.0)
  • \w : the current working directory, with $HOME abbreviated with a tilde
  • \W : the basename of the current working directory, with $HOME abbreviated with a tilde
  • \! : the history number of this command
  • \# : the command number of this command
  • \$ : if the effective UID is 0, a #, otherwise a $
  • \nnn : the character corresponding to the octal number nnn
  • \\ : a backslash
  • \[ : begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
  • \] : end a sequence of non-printing characters

C'est en anglais mais ça devrait pas être dur à comprendre si ?

Le plus dur là dedans, c'est les "non-printing characters", les deux derniers de la liste. Ils sont très utiles (obligatoires en fait) et servent à entourer les autres codes. En fait Bash fait le compte des charactères du prompt en comptant les codes, il faut lui dire explicitement de pas le faire en entourant touts les codes avec \[ et \].

Par exemple un prompt très simple pourrait être : \[\u\]@\[\h\]$, qui donnerait : user@host$.

Pour tester votre prompt, écrivez :PS1="\[\u\]@\[\h\]$"

Et remplacez la valeur de PS1 par votre valeur.

Oui mais ça ne nous dit pas comment changer la couleur tout ça ? Eh bien c'est encore des autres codes :

Pour ouvrir la partie en couleurs :\e[x;ym Pour fermer : \e[m


Et vous remplacez X et Y par votre code de couleur, que vous prenez de ce tableau :
Color Code
Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
Le premier nombre, définit le format d'écriture de la couleur (souligné, gras, transparent, léger, couleur de fond, etc ,etc, essaiez les valeurs pour voir).

N'oubliez pas les non-printing characters (\[ et \]), c'est hyper important, le retour à la ligne ne marchera pas et votre bash sera vraiment foireux.

Après un peu de temps on peut obtenir un bash vraiment à son gout. Perso le mien est :

[ (compte de commandes) version de bash, périphérique, heure ]
utilisateur@hostname:repertoire$

\[\e[3;32m\][\[\e[m\] (\#) \[\e[4;31m\]\s \V\[\e[m\]\[\e[0;31m\] in device \l\[\e[m\]\[\e[3;32m\],\[\e[m\] \[\e[0;33m\]\t\[\e[m\] \[\e[3;32m\]]\[\e[m\]\n\[\e[1;32m\]\u\[\e[m\]\[\e[1;34m\]@\[\e[m\]\[\e[1;32m\]\H\[\e[m\]\[\e[0;36m\]:\[\e[m\]\[\e[1;34m\]\w\[\e[m\]\[\e[0;0m\]$\[\e[m\]

Vous pouvez vous en inspirer sans problème... On copyrighte pas les prompt à ce que je sache (pas encore ?)


Ce qui me donne :


Voilà... Merci à tous !


Sources :
PS: J'ai parlé de Matthieu Aubry et de PhpMyVisites au dernier post. Eh bien PhpMyVisites n'est plus, il a été remplacé par Piwik, beaucoup plus évolué. Son site : piwik.org
 
Pistaaaaaaaaaaaaaaache