Main menu:

Site search

Categories

mars 2025
L M M J V S D
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Archive

Que faire maintenant ?

Ubuntu 10.10 Maverick Meerkat est sorti aujourd’hui 10/10/10 à 10h10 UTC.
Fort bien! Et puis, que faire ? Voici ce que, moi, j’installe ou désinstalle une fois Ubuntu installé.
Première chose, installer aptitude:

$ sudo apt-get install aptitude

Ensuite, je désinstalle Mono et toutes les applications lièes à Mono. Je désinstalle aussi Evolution dont je n’ai pas l’usage:

$ sudo aptitude purge libmono* cli-common
$ sudo aptitude purge evolution

Après cela, j’installe toutes les applications dont j’ai besoin et qui ne sont pas installées par défaut par Ubuntu (Attention, c’est une longue ligne):

sudo aptitude install acire audacious audacity avidemux avant-window-navigator build-essential bzr ccrypt cdrdao cheese chromium-browser chromium-browser-l10n community-themes conky curl dropbox dvd95 dvdbackup dvdisaster dvdrip dvdrtools easytag encfs eric ettercap ffmpeg flac flashplugin-nonfree flvstreamer fuse-utils g++ gddrescue geany gftp ghex gimp glade gparted gphoto2 grsync gstreamer-tools gthumb gtkterm gweled handbrake hplip hplip-gui hydrogen inkscape java-common jokosher k9copy kid3-qt kpat lame libdvdread4 linux-headers-generic lm-sensors make mencoder mplayer morituri mscore nautilus-gksu nautilus-open-terminal network-manager-vpnc  nmap numlockx partimage phatch putty pyrenamer python-mutagen python-snippets remmina ri-li samba screenlets shotwell sound-juicer soundconverter terminator testdisk thunderbird timidity ttf-liberation ttf-mscorefonts-installer tuxguitar ubuntu-restricted-extras ubuntu-wallpapers-extra vlc vpnc winff wireshark xtightvncviewer zynaddsubfx

Il faut un certain temps pour télécharger tous ces paquets qui équivalent à près d’un demi-gigabytes et à les installer. Une fois fait, il reste à lancer les commandes suivantes pour parfaire l’installation:

$ sudo sensors-detect
$ sudo /usr/share/doc/libdvdread4/install-css.sh

Une fois tout cela fait, j’installe les thèmes pour Gnome qui m’intéressent:

sudo aptitude install community-themes gnome-backgrounds gnome-colors gnome-themes-extras gnome-themes gnome-themes-more metacity-themes shiki-colors

Pour ceux qui en veulent encore plus, on pourrait installer les codecs propriétaires w32codecs à partir du site de medibuntu et acire pour le développement en python.

Modifier le path des photos dans Shotwell

Dans quelques jours sortira la version officielle d’Ubuntu 10.10. Dans cette nouvelle version, Shotwell remplacera F-Spot pour la gestion des photos.
Je ne sais pas ce qu’il en sera de la version qui sera proposée dans Maverick mais jusqu’à présent, il n’est pas possible de changer le chemin des photos une fois que celles-ci ont été importées dans Shotwell. Cela veut dire que si vous changez vos photos de place, que vous les placez dans un autre répertoire, il n’est pas possible de l’indiquer à Shotwell. Vous continuerez à voir les miniatures s’afficher dans Shotwell mais impossible d’afficher la photo à sa taille réelle parce que, forcément, Shotwell ne connait pas le nouveau chemin.

Je me suis trouvé devant ce problème et la seule solution que j’ai trouvée est de modifier le chemin des photos directement dans la base de données utilisée par Shotwell.
Il faut savoir que Shotwell stoque les informations sur les photos dans une base de données sqlite qui se trouve dans le répertoire ~/.shotwell/data/photo.db.
Si vous jeter un oeil au contenu de cette base de données sqlite, vous verrez qu’une des tables s’appelle PhotoTable. Celle-ci contient un numéro d’index unique pour chaque photo, le chemin complet et le nom de fichier de la photo.

Il suffit donc simplement d’écrire un petit script simple pour modifier dans la base de données le chemin des photos. La base de données étant une base de données sqlite, j’ai choisi d’écrire le programme en python puisque celui-ci supporte nativement sqlite. De plus, comme son nom l’indique, sqlite permet de dialoguer avec la base de données au moyen de commandes SQL, ce qui simplifie les choses.

Voici le script que j’ai utilisé:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import sqlite3
    
 # !!! Donnez à oldpath et newpath les bonnes valeurs !!!
oldpath = /ancien/path/des/photos
newpath = /nouveau/path

conn = sqlite3.connect('~/.shotwell/data/photo.db')

# Permet d'accéder aux colonnes en utilisant leur nom
conn.row_factory = sqlite3.Row
c = conn.cursor()

# On utilise l'index le plus élevé comme limite de la boucle
last_rowid = c.execute("""SELECT MAX(id) FROM PhotoTable""").fetchone()[0]

for row in xrange(1, last_rowid+1):
    line = c.execute("""SELECT * FROM PhotoTable where id=?""", (row,)).fetchone()
  # Certaines lignes ont pu être supprimées et donc certains index ne pas exister
    if line:
        newline = line['filename'].replace('oldpath''newpath')
        rowid = line['id']
        c.execute("""UPDATE PhotoTable SET filename=? where id=?""", (newline, rowid))

conn.commit()

c.close()

Si vous utilisez ce script, n’oubliez pas de modifier dans celui-ci les variables oldpath et newpath en y mettant l’ancien chemin et le nouveau.

Python: les fonctions sont des objets

En python, tout est objet. Ceci est valable aussi pour les fonctions. Une fonction en python est un objet et peut donc avoir des attributs.

def ma_fonction():
  pass

Cette foncion simple qui ne fait rien, a par exemple un attribut __name__. La commande suivante affichera le nom de la fonction:

>>> print ma_fonction.__name__
ma_fonction

L’utilisateur peut également définir ses propres attributs à cette fonction:

ma_fonction.description = "Une fonction qui ne fait rien"

>>> print ma_fonction.description
Une fonction qui ne fait rien

Les attributs sont stockés dans un attribut de la fonction appelé __dict__ qui comme son nom l’indique est un dictionnaire contenant seulement les attributs donnés par l’utilisateur. __name__ ne s’y retrouve pas par exemple:

>>> ma_fonction.__dict__
{'description''Une fonction qui ne fait rien'}

On peut aussi faire des choses un peu plus surprenantes:

class MaClasse():
  def ma_fonction(self):
    print "ma fonction est exécutée"

def une_autre_fonction():
  print "une autre fonction est exécutée"

>>> c= MaClasse()
>>> c.ma_fonction()
ma fonction est exécutée

>>> c.ma_fonction = une_autre_fonction
>>> c.ma_fonction()
une autre fonction est exécutée

Autrement dit, j’ai remplacé dans ma classe l’objet ma_fonction par une_autre_fonction. Cela veut dire qu’au runtime, c’est à dire pendant l’exécution du programme, on peut dynamiquement modifier les fonctions. Vous noterez aussi qu’ici, on a assigné à une méthode de classe une fonction normale et ceci avec une aisance que seul python apporte.
A mon avis, ce n’est pas à utiliser trop souvent et même sans doute à éviter absolument sous peine de faire du débuggage du programme un véritable cauchemar.

Unix: No problem

Vu cet après-midi dans le rayon papeterie du supermarché où je faisais mes courses.

unix

Il n’est plus nécessaire de partitionner !

Les raisons invoquées pour avoir son /home séparé de / sont généralement que cela permet d’installer ou de réinstaller Ubuntu sans avoir à toucher aux données personnelles et aux configurations des applications. Vous retrouvez tout de suite un système opérationnel et configuré à votre gout. L’autre raison invoquée généralement est qu’un problème sur la partition /home n’aura pas d’influence sur la partition /. Une partition /home pleine, par exemple, ne bloquera pas le système.

Tout cela était vrai mais ne l’est plus. C’est en tout cas ce que nous rappelle Evan, le développeur qui a écrit l’installeur d’Ubuntu dans un message sur stackexchange en réponse à la quetion What’s your recommendation on drive partitioning schemes for a desktop and home server?:

The Ubuntu installers for both the desktop CD and server/alternate CD have the ability to install over an existing system, preserving your home directory (and the local system driectories: /usr/local, /usr/src, and /var/local). This functionality also reuses the user ID and group ID of an existing user, if it has the same username as the user you’re creating during installation.

En substance, cela signifie que l’installeur Ubuntu est capable de préserver votre /home ainsi que /usr/local et /var/local lors d’une installation ou d’une réinstallation et ceci même si / et /home sont sur la même partition. L’installeur réutilisera aussi le user ID et le group ID de l’utilisateurs existant.

Pour cela, il suffit lors de l’installation, au moment où on doit définir les partitions, de passer en mode avancé. Sous Maverick, il faut choisir l’option Définir les partitions manuellement et cliquer sur le bouton Installation. Ensuite, on choisit la partition où est installé Ubuntu et on clique sur Modifier. Dans la fenêtre qui apparaît, dans le champ Utiliser comme, choisissez ext3 ou ext4 en fonction de votre système de fichiers et veillez à ce que la case Formater soit bien décochée. Choisissez aussi où le chargeur d’amorçage (Grub) doit être installé. Et poursuivez l’installation d’Ubuntu.

L’installation d’Ubuntu est, à mon avis, très simple et un pas dans cette direction a encore été franchi avec Maverick. Pourtant, Evan promet qu’à partir d’Ubuntu 11.04, la détection d’une installation existante d’Ubuntu sera automatique et que l’installeur proposera l’option d’une installation en préservant /home. L’étape ci-dessus sera alors devenue inutile. Il ne sera plus nécessaire de passer en mode partitionnement avancé.

Ubuntu 10.10 Maverick Meerkat

A la date du 10/10/10 sortira officiellement la nouvelle version d’Ubuntu, la 10.10 sous le nom de Maverick Meerkat. Vous pouvez déjà en avoir un aperçu fidèle en installant la version beta qui est sortie début de ce mois.

Pas de révolution dans cette nouvelle version. Des mises à jour de logiciel principalement. On peut noter toutefois que Shotwell remplace F-Spot, que l’installeur est encore plus clair. Surtout la partie qui concerne le partitionnement des disques. Ca devient d’une simplicité stupéfiante. Il paraît aussi que le temps de boot a encore été réduit bien que chez moi, je ne note pas vraiment de différence.
L’installation s’est déroulée sans problème. Le matériel a été reconnu tout de suite et, c’est à noter, le son et flash fonctionnait dès le redémarrage qui a suivi l’installation. Ce n’était pas le cas avec la version 10.04 chez moi en tout cas.

Par contre, ce qui m’a fortement déplu, c’est ce fond d’écran par défaut qui est absolument hideux. Des taches orange sur un fond violet ! Quand est-ce qu’il vont virer les responsables du service design chez Canonical ? Hideux à ce point, c’est de l’icompétence. Je trouve d’ailleurs aussi que l’ensemble de thème est assez banal. A quand de vrais et importants changement au niveau design. On nous le promet depuis plusieurs versions mais rien ne vient !