Demande d'information
Alignement des images
Les balises audio et video foirent
Planète Libre et Micro-blogging
Mis à jour du flux RSS
Partages ?
®om
4LW
Admin-Linux
agatzebluz
Aldevar
Another Pinky Punky
AnTav
Antistress
Antoine Millet
Antonin Moulart
archi02
arNuméral
Artisan Numérique
Asher256
Aternatik
Aurélien Bompard
Bastnic
Benkemoun
Bilbo Planet
Biscotte
Blogmotion
bochecha
botchchikii
bouleetbil
Boutor
Breizh ardente
Cairo-Dock
Cameleon
Capof's Space
Captaine74
Carl Chenet
Cedynamix
champtoussel dominique
ChEza
Chicha
Chimrod
Christophe-Marie
Clapico
Corbier
Costalfy
Creasy
CSM 'illovae' Seldon
CyberSDF
Cyrille BORNE
dada
dahu_fou
Damien Cougar
Damocles
Daria
David Dup
David Larlet
Davromaniak
Ddmdllt
Des nouvelles de Wikilivres
Desidia
Devil505
Dhoko
DigitalSpirit
djibux
Dorian Dd
Duchatelet
E-PhasE
Eddy33
Edouard
Effraie
eMerzh
Emilien Macchi
Emilpoe
Emmanuel Gontcho
Emmanuel Kasper
Equinoxefr
Eric
Exceed
FACIL
Facilinux
Feilong
fgallaire
Finss
florentg
floruby
Fonctionerd
Framablog
François
Franck Archange
FredBezies
Full Circle Magazine
Fuse
Génération Linux
G3L
Gaëtan Tenshu
Gilir
Grégory Gutierez
Gregory Colpart
Guillaume Kulakowski
Hugues
Hyla project
Il Palazzo-sama
inalgnu
Jérémy Verda
Jeff
jeremy2491
jeromeg
jesuislibre
JJL
Johan Cwiklinski
Jonathan Ernst
Jonathan Le Lous
Jopa
Jp Fox
Juky
Julien
Julius
ka.da
Kagou
kamagatos
Kate
Kiddo
KissCoolMan
Labo-Linux
LeDucDuBleuet
Lemarinel
Lenezir
Liberez le tux
Libre Astux
Linalis
Littlewing
Louis Roché
lowje
Luc
Macsim
Manu Absolacom
Marco
Matao
Mathieu Comandon
Maxime Carron
McKey
meepix
Michael Zwyssig
Michauko
Mickaël
Minimumserious
Monitoring-FR
Morot
Motarion
mozillaZine-fr
Mr.Yann
MrTom
Nÿco
Naparuba
Nicofo
Nicolargo
Nicosmos
Nicoz
NiKo
nizarus
Noplay
Olivier Faurax
Olivier Prieur
Omega
Oncle Tom
Op'Aisne Source
openSyd
opossum1er
Osku
OxyRadio
Paquet Fedora du Jour
Pascal Chevrel
pc-kc
Peck
Phil
Pianopenguin
Pingax
PlayOnLinux
Ploum
Pokemon_JOJO
Poupoul2
Rémi Samier
Raphaël Hertzog
Ravomavain
Renaud Littolff
Renault
Respawner
Retouche Libre
Ricard
Robin Millette
Roland Mas
RollsRox
Rydgel
Saïmon
Samuel Martin
Sauthier
SckyzO
Scoffoni
Scurz
Shnoulle
Silvyn
Skhaen
Slobberbone
Splitsch
StandarT
StephZ
Sylvain
System Linux
Taltan
Tbellemb
Tchouvince
theClimber
TheGlu
TheLinuxFr
Thibaut
Thierry Andriamirado
Thom1
Thomas Bassetto
Tigrou Damien
TitaX
toitoinebzh
Toorop
TrouveTonGull.info
Tuxargon
Tuxicoman
U-Classroom
Uggy
Ulrich Diplodocus
Une goutte de blog
Uselink
Vanaryon
VELCS
Vetsel
Warren Dumortier
Wattazoum
Wavemaker
Weedfast
Yannig
yeKcim
Yellowiscool
Yoho
Yves Gesnel
Zanko
Zic
Zippy
ZitrouilleC'est en voulant essayer une nouvelle distribution sur mon laptop que l'idée de redimensionner mes partition m'a pris. C'est une opération que j'ai souvent effectué par le passé mais toujours à partir d'un liveCD. En l'occurence, ce jour là, pour cause de déménagement qui approche, impossible de mettre la main sur un liveCD sans déballer les cartons si durement remplis...
L'idée est donc de quitter la session graphique, de démonter le système de fichier visé, et de lancer la manipulation à la main. Comme la manipulation n'a pas été évidente et m'a même donné quelques sueurs froides, je fais ce billet pour mémoen quelque sorte.
GNU Parted est un outil en ligne de commande qui permet de créer, supprimer, modifier, copier les partitions d'un disque dur. Il est souvent utilisé avec une interface graphique telle que GParted ou QtParted.
Voyons un peu à quoi ressemble l'utilisation de cet outil :
user:/path/$ sudo parted
GNU Parted 1.8.8
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
check NUMBER do a simple check on the file system
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition
help [COMMAND] prints general help, or help on
COMMAND
mklabel LABEL-TYPE create a new disklabel (partition
table)
mkfs NUMBER FS-TYPE make a FS-TYPE file system on
partititon NUMBER
mkpart PART-TYPE [FS-TYPE] START END make a partition
mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
move NUMBER START END move partition NUMBER
name NUMBER NAME name partition NUMBER as NAME
print [free|NUMBER|all] display the partition table, a
partition, or all devices
quit exit program
rescue START END rescue a lost partition near START
and END
resize NUMBER START END resize partition NUMBER and its file
system
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG] ] toggle the state of FLAG on partition
NUMBER
unit UNIT set the default unit to UNIT
version displays the current version of GNU
Parted and copyright information
(parted)
Plus d'infos sur :
Je ne vais parler ici que d'une diminution de l'espace allouée à une partition pour en créer une nouvelle à la suite. Dans le cas inverse, les principes sont les mêmes, mais il faudra commencer les manipulation par un rm et ensuite faire le redimensionnement.
Rien de plus simple :
(parted) print all Disk /dev/sda: 160GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32,3kB 8480MB 8480MB primary ext3 boot 2 8480MB 160GB 152GB extended 5 8480MB 9015MB 535MB logical linux-swap 6 9015MB 160GB 151GB logical ext3
On obtient plusieurs informations intéressantes :
On lance le redimensionnement avec la commande resize de GNU Parted :
(parted) resize 6 9015MB 120GB
Une confirmation OK et le redimensionnement se lance.
Nous avons à présent une partition redimensionnée et donc un espace vide qu'il faut utiliser. Ici nous allon créer une partion en ext3 qui commencera là où s'arrête celle qu'on vient de réduire et s'arrêtera au bout du disque.
mkpartfs logical ext3 120GB 160GB
On vérifie le résultat avec :
(parted) print all
(parted) check 7
Ensuite on s'échappe de parted avec un quit et il ne reste plus qu'à monter la nouvelle partition ou mieux, la vérifier avant avec :
user:/path/$ sudo fsck.ext3 /dev/sdXY
Le précédent article s'était arrêté à présenter l'application Web de principe du gestionnaire de protocoles de Firefox 3. L'article que vous êtes en train de lire va lui s'attacher à vous permettre d'utiliser une application externe pour un protocole donné.
Je vais présenter ici un petit exemple d'application en Python qui permet d'écrire dans un fichier journal (ou 'log') le contenu de la valeur passée via l'appel du protocole. Dans cet exemple le protocole utilisée est "mycall" (l'idée est de simuler la création d'un softphone appelé par une interface de click-to-call).
#!/usr/bin/python #-*- coding: utf-8 -*- # On importe deux bibliothèques utiles pour la suite import sys from datetime import datetime # On met la date dans une variable pour tracer les résultats date = datetime.now() # Ici ça se complique un peu. Comme le gestionnaire de protocole # de firefox donne en argument l'ensemble de la chaine 'href', # nous allons enlever la chaine 'mycall:' pour ne conserver que # la valeur décimale de cette chaine arg = sys.argv[1][7:] # On ouvre en écriture le fichier journal # ('a' pour écrire à la suite) filout = open('/path/to/log/file/calltest.log','a') # On écrit la valeur envoyée précédée de la date filout.write('%d/%d/%d %d:%d - Voici l\'argument donné : ' % (date.day, date.month, date.year, date.hour, date.minute)) filout.write(arg + '\n') # On ferme le fichier filout.close()
On donne les droits d'exécution à ce script :
chmod +x /path/to/ext/app/call.py
Il est maintenant temps de créer l'interface web de 'click-to-call' sur laquelle figurera le lien vers le protocole 'mycall'. Pour ceux qui ont lu l'article précédent, vous remarquerez que c'est encore plus simple.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="en"> <head> <title>Web Protocol Handler Sample - Register</title> </head> <body> <h1>External protocol handler sample</h1> <p>This web page will install an external protocol handler for the <code>mycall:</code> protocol.</p> <p>Hey have you seen <a href="mycall:874781">this</a> before?</p> </body> </html>
Si l'interface web est encore plus simple, il faut toutefois configurer un peu Mozilla Firefox.
Pour accéder au registre de configuration de Firefox, il faut entrer l'adresse suivante dans la barre d'adresse.
about:config
Si vous êtes sur un système qui supporte Bash (Linux, Mac OS, BSD...), vous pouvez lancer un 'tail -f' sur le fichier journal afin d'en suivre l'évolution. Cela nécessite tout de même que le fichier existe avant. Si ce n'est pas le cas, il suffit de le créer avec :
touch /path/to/log/file/calltest.log
On lance la surveillance du fichier :
tail -f /path/to/log/file/calltest.log
On charge la page HTML qui contient le lien 'href' et on suit le lien. Une fenêtre s'affiche alors, vous permettant de choisir l'application à utiliser. Il suffit de choisir celle que vous avez créé plus haut et de cocher (si vous le souhaitez) 'se souvenir' afin de ne plus avoir à le faire ensuite.
À chaque clic, vous ajoutez normalement une ligne dans le fichier journal avec la valeur passée suite à 'mycall:'. À vous d'être imaginatif pour utiliser cette astuce au mieux.
J'initie ici un nouveau couple (ou plus on verra) d'articles concernant la gestion des 'protocol-handlers' avec firefox 3. La première partie présentera cette fonctionnalité ainsi que son application au sein d'une application web. La seconde, conduira à la création d'un petit logiciel externe en python qui utilisera les mêmes astuces pour par exemple proposer à l'utilisateur d'appeler avec son softphone depuis une interface web.
Deux exemples valent mieux qu'une longue explication...
Il est assez courant sur le web de croiser des sites qui proposent des liens pour envoyer un email au webmaster ou à n'importe quelle autre personne. Ces liens si vous regardez le code source de la page sont de type :
mailto:mabelle.adresse@mail.com
Si vous cliquez sur un de ces liens, normalement, votre logiciel de mail favori va s'ouvrir et vous proposer de rédiger un mail pour la personne indiquée (dont le nom est automatiquement placé dans le champ "à :". Vous avez ici une application des protocol handlers.
La documentation d'Ubuntu propose de nombreux liens de la forme suivante :
apt://un-logiciel
Les utilisateurs de cette distribution (comme moi) savent que ce type de lien permet d'installer des paquets (librairies ou logiciels) via un simple clic. Une fois le lien cliqué, une application de votre ordinateur recherche l'application dans les dépôts disponible et l'installe si il est disponible. Vous l'aurez compris par vous même, c'est une autre application de l'utilisation des protocol handlers.
L'exemple suivant vise à proposer au sein d'une page web A un lien de type :
test:CeciEstUnTest
Ce lien redirigera l'utilisateur sur une page B qui utilisera la valeur donnée.
Cet exemple ne vous parle peut être pas trop, mais vous pouvez très bien imaginer qu'il s'agit de liens mail qui pointent vers une application web de lecture/écriture de mail.
Firefox propose depuis sa version 3 une fonction de l'objet "navigator" qui permet à une application web d'enregistrer son propre gestionnaire de protocole :
window.navigator.registerProtocolHandler(protocole, uri, titre);
Voici un exemple concert que vous pouvez essayer chez vous :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Protocol Handler - test:</title> <script type="text/javascript"> navigator.registerProtocolHandler("test", "http://monexemple.com/application.php?value=%s", "Mon gestionnaire de Test"); </script> </head> <body> <h1>Protocol Handler - test:</h1> <p>Dans la partie 'script', cette page va enregistrer un nouveau gestionnaire de code pour les liens en <code>test:</code>.</p> <p>Il sera ensuite possible d'utiliser ce lien : <a href="test:Pouf pastèque">Lien exemple</a>.</p> </body> </html>
Il ne reste plus qu'à créer un handler associé (ici en php pour simplifier) qui utilisera la valeur passée en paramètre :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Protocol Handler - test: - Handler</title> </head> <body> <h1>Protocol Handler - test: - Handler</h1> <h1>Cette page est affichée lorsque vous utilisez un lien de type : <pre>test:</pre></h1> <blockquote> <pre><?php if ( isset ( $_GET["value"] ) ) { echo(urldecode($_GET["value"])); } else { echo("nothing"); } ?></pre> </blockquote> </body> </html>
Ce billet fait suite à celui-ci: Mise en place d'un miroir Apt - Part 1 - Contexte
"Bon super il a installé un mirroir pour ses serveurs et desktop et tout ça planqué derrière sa connexion ADSL. Pas super pratique pour les autres..." Mais c'est maintenant que ça devient intéressant ;-) : Comment installer son propre mirroir pour APT !
Premier point, ce n'est ni long (à configurer) ni compliqué. L'étape la plus longue étant la première synchronisation avec les dépôts externes selon leur taille. Mais pendant ce temps vous pourrez être loin de votre PC.
Rien de plus simple
sudo apt-get install apt-mirror
Tout se passe dans "/etc/apt/mirror.list"
############# config ################## # set base_path /path/to/apt/data set mirror_path $base_path/mirror set skel_path $base_path/skel set var_path $base_path/var set cleanscript $var_path/clean.sh set defaultarch i386 set nthreads 2 set _tilde 0 # ############# end config ############## #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ## Debian SQUEEZE alias TESTING - not used - #deb http://ftp.fr.debian.org/debian testing main contrib non-free ## Debian SID alias UNSTABLE deb http://ftp.fr.debian.org/debian sid main contrib non-free ## Debian LENNY current STABLE deb http://ftp.fr.debian.org/debian stable main contrib non-free ## Debian Security deb http://security.debian.org lenny/updates main contrib non-free #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ## Debian SQUEEZE alias TESTING - not used - #deb-src http://ftp.fr.debian.org/debian testing main contrib non-free ## Debian SID alias UNSTABLE #deb-src http://ftp.fr.debian.org/debian sid main contrib non-free ## Debian LENNY current STABLE #deb-src http://ftp.fr.debian.org/debian stable main contrib non-free ## Debian Security #deb-src http://security.debian.org lenny/updates main contrib non-free #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ## Last stable Ubuntu main, security and updates deb http://fr.archive.ubuntu.com/ubuntu intrepid main deb http://fr.archive.ubuntu.com/ubuntu intrepid-security main deb http://fr.archive.ubuntu.com/ubuntu intrepid-updates main #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ## Cleaning data clean http://security.debian.org/ clean http://ftp.fr.debian.org/ clean http://fr.archive.ubuntu.com/ubuntu
Créer le dossier pour les données si ce n'est pas déjà fait :
sudo mkdir -p /path/to/apt/data
Et lancer la synchro :
sudo apt-mirror
Cette partie est à adapter selon vos besoins et la configuration apache2 existante. Mais si vous êtes arrivé là, vous savez ce que vous faites non? Donc dans le fichier de configuration d'apache2 ajouter :
Alias /apt-debian-security /path/to/apt/data/mirror/security.debian.org <Directory /path/to/apt/data/mirror/security.debian.org> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> Alias /apt-debian-fr /path/to/apt/data/mirror/ftp.fr.debian.org/debian <Directory /path/to/apt/data/mirror/ftp.fr.debian.org/debian> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> Alias /apt-ubuntu-fr /path/to/apt/data/mirror/fr.archive.ubuntu.com/ubuntu <Directory /path/to/apt/data/mirror/fr.archive.ubuntu.com/ubuntu> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory>
Et recharger la configuration d'apache2 :
sudo /etc/init.d/apache2 force-reload
Selon la distribution, il faut prendre ce qui vous intéresse dans ce qui suit et l'ajouter à "/etc/apt/sources.list" :
Pour Debian Lenny (stable) :Pour Debian Sid (unstable) :deb http://host.domain.tld/apt-debian-fr lenny main contrib non-free deb http://host.domain.tld/apt-debian-security lenny/updates main contrib non-free
Pour Ubuntu (dernière version stable) :deb http://host.domain.tld/apt-debian-fr sid main contrib non-free deb http://host.domain.tld/apt-debian-security lenny/updates main contrib non-free
deb http://host.domain.tld/apt-ubuntu-fr intrepid main deb http://host.domain.tld/apt-ubuntu-fr intrepid-security main deb http://host.domain.tld/apt-ubuntu-fr intrepid-updates main
Et enfin de faire une petite mise à jour de la liste des paquets disponibles :
sudo apt-get update