mercredi 16 décembre 2009

II. Compilation de libpod4

Dans le blog précédent, je vous ai montré comment on monte un iPhone/iTouch. Passons maintenant à quelque chose de plus sérieux.

Nous allons installer les paquets nécessaires à la compilation de libpod4. Ce qu'il faut juste savoir c'est que libgpod est une bibliothèque partagée pour accéder au contenu d'un iPod.


4. Installation des différents paquets nécessaires pour la compilation de libgpod4


Commençons par installer l'outil Git, qui est un logicile de gestion de version décentralisée. Par décentralisé, on entend que chaque personne peut développer son propre dépôt.

malagasy@malagasy-laptop:~$ sudo apt-get install git-core
The following extra packages will be installed:
libdigest-sha1-perl liberror-perl
Suggested packages:
git-doc git-arch git-cvs git-svn git-email git-daemon-run git-gui gitk
gitweb

Lors de l'installation du paquet git-core, d'autres paquets ont été suggérés à être installé, que je n'ai pas fait. Dans la suite de mes installations, je n'installe aucun autre paquet, sauf ceux que je vous vais vous indiquer.

Nous avons besoin d'installer les paquets suivant afin de pouvoir compiler le paquet libgpod4.
malagasy@malagasy-laptop:~$ sudo apt-get install autoconf libtool libglib2.0-dev intltool gtk-doc-tools sqlite3 libsqlite3-dev zlib1g-dev libxml2-dev checkinstall
The following extra packages will be installed:
automake autotools-dev cvs docbook docbook-dsssl docbook-to-man
docbook-xsl docbook-xsl-doc-html gettext gnome-common jade libltdl-dev
libruby1.8 libsp1c2 m4 ruby ruby1.8 sp
Suggested packages:
autoconf2.13 autobook autoconf-archive gnu-standards autoconf-doc psgml
docbook-defguide jadetex docbook-dsssl-doc libsaxon-java libxalan2-java
docbook-xsl-saxon fop xalan gettext-doc libtool-doc sqlite3-doc automaken
gfortran fortran95-compiler gcj ruby1.8-examples rdoc1.8 ri1.8
Puis installation du paquet libiphone-dev, puis de deux autres paquets optionnels libgdk-pixbuf2 et libgdk-pixbuf-dev pour pouvoir transférer des images (photos, couvertures d'album …).
malagasy@malagasy-laptop:~$ sudo apt-get install libiphone-dev libgdk-pixbuf2 libgdk-pixbuf-dev
E: Couldn't find package libgdk-pixbuf2
En effectuant quelques recherches sur le net, j'ai noté que “libgdk-pixbuf2″ et “libgdk-pixbuf-dev” sont inclus dans libgtk2.0-dev et libgtk2.0. J'ai effectué l'installation de ces derniers via synaptic puisqu'il m'est impossible des les installer via apt-get install.

Par contre, j'ai oublié d'installer le paquet libiphone-dev suite à cette erreur.


5. Compilation du paquet libgpod4


Pour compiler ligpod4, il faut taper les commandes suivantes :
$ git clone git://gitorious.org/~marcan/libgpod/marcan-sandbox/
$ cd marcan-sandbox/
$ git checkout origin/iphone30
$ CFLAGS="-g -O0" sh autogen.sh -prefix=/usr
En tapant ces commandes, je me suis apperçu par la suite qu'il me manquait des paquets, que j'installerai au fur et à mesure où cela est nécessaire comme vous pouvez le constater ci dessous.
malagasy@malagasy-laptop:~$ git clone git://gitorious.org/~marcan/libgpod/marcan-sandbox/
Initialized empty Git repository in /home/malagasy/marcan-sandbox/.git/
remote: Counting objects: 5282, done.
remote: Compressing objects: 100% (1522/1522), done.
remote: Total 5282 (delta 4015), reused 4925 (delta 3740)
Receiving objects: 100% (5282/5282), 1.66 MiB | 124 KiB/s, done.
Resolving deltas: 100% (4015/4015), done.
malagasy@malagasy-laptop:~$ cd marcan-sandbox/
malagasy@malagasy-laptop:~/marcan-sandbox$ ls
AUTHORS docs Makefile.am tests
autogen.sh gnome-autogen.sh NEWS tools
bindings INSTALL po TROUBLESHOOTING
ChangeLog INSTALL_SVN README
configure.ac libgpod-1.0.pc.in README.SysInfo
COPYING m4 src
malagasy@malagasy-laptop:~/marcan-sandbox$ git checkout origin/iphone30
Note: moving to 'origin/iphone30' which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b
HEAD is now at f324198... Debug SHA1 payload
malagasy@malagasy-laptop:~/marcan-sandbox$ CFLAGS="-g -O0" sh autogen.sh -prefix=/usr

checking for autoconf >= 2.53...
testing autoconf2.50... not found.
testing autoconf... found 2.64
checking for automake >= 1.7...
testing automake-1.11... found 1.11
checking for libtool >= 1.4.3...
testing libtoolize... found 2.2.6
checking for glib-gettext >= 2.2.0...
testing glib-gettextize... found 2.22.2
checking for intltool >= 0.25...
testing intltoolize... found 0.41.0
checking for pkg-config >= 0.14.0...
testing pkg-config... found 0.22
checking for gtk-doc >= 1.0...
testing gtkdocize... found 1.11
Checking for required M4 macros...
Checking for forbidden M4 macros...
Processing ./configure.ac
Running libtoolize...
libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
Running glib-gettextize... Ignore non-fatal messages.
Copying file mkinstalldirs
Copying file po/Makefile.in.in

Please add the files
codeset.m4 gettext.m4 glibc21.m4 iconv.m4 isc-posix.m4 lcmessage.m4
progtest.m4
from the /aclocal directory to your autoconf macro directory
or directly to your aclocal.m4 file.
You will also need config.guess and config.sub, which you can get from
ftp://ftp.gnu.org/pub/gnu/config/.

Running intltoolize...
Running gtkdocize...
Running aclocal-1.11...
Running autoconf...
Running autoheader...
Running automake-1.11...
configure.ac:45: installing `./compile'
configure.ac:52: installing `./config.guess'
configure.ac:52: installing `./config.sub'
configure.ac:36: installing `./install-sh'
configure.ac:36: installing `./missing'
bindings/python/Makefile.am: installing `./depcomp'
bindings/python/Makefile.am:39: installing `./py-compile'
Running ./configure --enable-maintainer-mode -prefix=/usr ...
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking whether gcc and cc understand -c and -o together... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for a sed that does not truncate output... /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for ANSI C header files... (cached) yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for dlfcn.h... yes
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking dependency style of g++... (cached) gcc3
checking how to run the C++ preprocessor... g++ -E
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for ld used by g++... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether ln -s works... yes
checking whether make sets $(MAKE)... (cached) yes
checking whether NLS is requested... yes
checking for intltool >= 0.21... 0.41.0 found
checking for intltool-update... /usr/bin/intltool-update
checking for intltool-merge... /usr/bin/intltool-merge
checking for intltool-extract... /usr/bin/intltool-extract
checking for xgettext... /usr/bin/xgettext
checking for msgmerge... /usr/bin/msgmerge
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for perl... /usr/bin/perl
checking for perl >= 5.8.1... 5.10.0
checking for XML::Parser... ok
checking for localtime_r... yes
checking for struct tm.tm_gmtoff... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for LIBGPOD... yes
checking for GLIB... yes
checking for sg_ll_inquiry in -lsgutils2... no
checking for sg_ll_inquiry in -lsgutils... no
checking for inflate in -lz... yes
checking for HAL... no
checking for LIBIPHONE... no
checking for TAGLIB... no
checking for LIBXML... yes
checking for GDKPIXBUF... yes
checking for PYGOBJECT... no
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking for LC_MESSAGES... yes
checking libintl.h usability... yes
checking libintl.h presence... yes
checking for libintl.h... yes
checking for ngettext in libc... yes
checking for dgettext in libc... yes
checking for bind_textdomain_codeset... yes
checking for msgfmt... (cached) /usr/bin/msgfmt
checking for dcgettext... yes
checking if msgfmt accepts -c... yes
checking for gmsgfmt... (cached) /usr/bin/msgfmt
checking for xgettext... (cached) /usr/bin/xgettext
checking for catalogs to be installed... de es fr he it ja ro sv zh_CN
checking whether to build gtk-doc documentation... no
checking for gtkdoc-check... /usr/bin/gtkdoc-check
checking whether to build python bindings... yes
checking for python... /usr/bin/python
checking whether /usr/bin/python version >= 2.1.1... yes
checking for /usr/bin/python version... 2.6
checking for /usr/bin/python platform... linux2
checking for /usr/bin/python script directory... ${prefix}/lib/python2.6/dist-packages
checking for /usr/bin/python extension module directory... ${exec_prefix}/lib/python2.6/dist-packages
checking for python development headers... not found
checking for more warnings... yes
checking whether gcc understands -Wno-strict-aliasing... yes
checking whether gcc understands -Wno-sign-compare... yes
checking whether gcc understands -Wdeclaration-after-statement... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating bindings/Makefile
config.status: creating bindings/python/gpod.i
config.status: creating bindings/python/Makefile
config.status: creating bindings/python/examples/Makefile
config.status: creating bindings/python/tests/Makefile
config.status: creating docs/Makefile
config.status: creating docs/reference/Makefile
config.status: creating docs/reference/version.xml
config.status: creating m4/Makefile
config.status: creating po/Makefile.in
config.status: creating src/Makefile
config.status: creating tools/Makefile
config.status: creating tests/Makefile
config.status: creating libgpod-1.0.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing default-1 commands
config.status: executing po/stamp-it commands

Configuration for libgpod 0.7.3SVN :
--------------------------------

Host System Type .........: i686-pc-linux-gnu
Install path .............: /usr
Preprocessor .............: gcc
Compiler .................: gcc -Wall -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare -Werror -std=c89 -g -O0 -Wno-strict-aliasing -Wno-sign-compare -Wdeclaration-after-statement -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
Linker ...................: gcc -lgobject-2.0 -lglib-2.0 -lsqlite3 -lxml2 -lgdk_pixbuf-2.0 -lm -lgobject-2.0 -lgmodule-2.0 -lglib-2.0
Artwork support ..........: yes
Python bindings ..........: no
PyGObject support ........: no
iPhone/iPod Touch support.: no

Now type 'make' to build libgpod 0.7.3SVN,
and then 'make install' for installation.

Now type `make' to compile libgpod
Comme vous pouvez vous attendre l'iTouch n'est pas supporté, vu que j'ai oublié d'installer le paquet libiphone-dev, par contre la prise en charge des pochettes est bien supportée.

Dans le prochain billet, je vous vous donnerai les résultats de la manipulation si on essaye de compiler libgpod à ce stade, ie comme indiqué ci dessus "iPhone/iPod Touch support.: no", puis de synchroniser l'iTouch.


6. Compilation du paquet libgpod4 (suite)

Nous allons maintenant installer le paquet libiphone-dev.
malagasy@malagasy-laptop:~/marcan-sandbox$ sudo apt-get install libiphone-dev
The following packages were automatically installed and are no longer required:
media-player-info
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
libgcrypt11-dev libgnutls-dev libgpg-error-dev libplist-dev libplist1
libtasn1-3-dev libusb-1.0-0-dev libusbmux-dev
Suggested packages:
libgcrypt11-doc gnutls-doc gnutls-bin guile-gnutls

malagasy@malagasy-laptop:~/marcan-sandbox$ git checkout origin/iphone30
HEAD is now at f324198... Debug SHA1 payload

malagasy@malagasy-laptop:~/marcan-sandbox$ CFLAGS="-g -O0" sh autogen.sh -prefix=/usr
(...)
Running automake-1.11...
Running ./configure --enable-maintainer-mode -prefix=/usr ...
checking for a BSD-compatible install... /usr/bin/install -c
(...)
checking for LIBIPHONE... yes
checking for iphone_device_new in -liphone... yes
(...)
Configuration for libgpod 0.7.3SVN :
--------------------------------
(...)
Artwork support ..........: yes
Python bindings ..........: no
PyGObject support ........: no
iPhone/iPod Touch support.: yes


7. Installation de paquets supplémentaires, mais pas forcément nécessaires pour la compilation de libgpod4

Le non support de PyGObject m'a perturbé, et donc j'étais allé cherché les paquets nécessaires pour pouvoir le faire, qui sont python-gobject et python-gobject-dev.
malagasy@malagasy-laptop:~/marcan-sandbox$ sudo apt-get install python-gobject python-gobject-dev
The following extra packages will be installed:
libffi-dev python-dev python2.6-dev
malagasy@malagasy-laptop:~/marcan-sandbox$ CFLAGS="-g -O0" sh autogen.sh -prefix=/usr
(...)
checking for python development headers... found
checking for python module mutagen >= 1.8... no
(...)
Configuration for libgpod 0.7.3SVN :
--------------------------------
(...)
Artwork support ..........: yes
Python bindings ..........: no
PyGObject support ........: yes
iPhone/iPod Touch support.: yes
J'ai effectué l'installation du paquet python-mutagen via synaptic. Après quelques recherches, j'ai appris que Mutagène est un module Python pour manipuler des métadonnées audio. Il supporte les formats FLAC,M 4A, MP3, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True Audio, et les fichiers audio WavPack.
malagasy@malagasy-laptop:~/marcan-sandbox$ CFLAGS="-g -O0" sh autogen.sh -prefix=/usr
(...)
checking for python development headers... found
checking for python module mutagen >= 1.8... yes
checking for swig... no
configure: WARNING: cannot find 'swig' program. You should look at http://www.swig.org
(...)
Configuration for libgpod 0.7.3SVN :
--------------------------------
(...)
Artwork support ..........: yes
Python bindings ..........:
PyGObject support ........: yes
iPhone/iPod Touch support.: yes
J'ai ensuite installé les paquets swig & swig1.3 via Synaptique. Swig1.3 étant l'upgrade du paquet swig.
malagasy@malagasy-laptop:~/marcan-sandbox$ CFLAGS="-g -O0" sh autogen.sh -prefix=/usr
(...)
checking for swig... /usr/bin/swig
checking for SWIG version... 1.3.36
(...)
Configuration for libgpod 0.7.3SVN :
--------------------------------
(...)
Artwork support ..........: yes
Python bindings ..........: yes
PyGObject support ........: yes
iPhone/iPod Touch support.: yes

Now type 'make' to build libgpod 0.7.3SVN,
and then 'make install' for installation.

Now type `make' to compile libgpod
Maintenant que tout à l'air bon, on peut lancer la commande 'make'.

La suite dans le prochain billet.

I. Monter un iPod Touch/iPhone sur ubuntu Koala 9.10

Cela fait un petit moment que je cherchais comment synchroniser mon iPod Touch (que je vais racourcir par iTouch) sous linux, et voilà que non seulement je peux synchroniser la musique, mais je peux aussi utiliser mon iTouch comme clé USB.

La version de l'application iPhone de mon iTouch : 3.1.2. Je voudrai préciser que je n'ai pas effectué de Jailbreak de mon iTouch, et que ce n'est pas nécessaire si vous souhaitez utiliser iFuse.


1. Installation d'iFuse

Avand de commencer l'installation, j'aurai juste souhaité préciser ce qu'est iFuse.

iFuse permet de monter un iPhone/iTouch sous linux après l'avoir connecté avec un cable USB à votre ordinateur. Vous serez en mesure de visualiser et d'éditer vos fichiers.

On peut se lancer dans l'installation d'iFuse maintenant. Commençons par ajouter les lignes suivantes dans /etc/apt/sources.list pour karmic Koala :

deb http://ppa.launchpad.net/jonabeck/ppa/ubuntu karmic main
deb-src http://ppa.launchpad.net/jonabeck/ppa/ubuntu karmic main


Ensuite on va installer iFuse après avoir récupérer la clé d'autentification du serveur comme suit :

$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com e20da6af9caee36095d1282ef104610cf0876ac9

Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --recv-keys --keyserver keyserver.ubuntu.com e20da6af9caee36095d1282ef104610cf0876ac9
gpg: requesting key F0876AC9 from hkp server keyserver.ubuntu.com
gpg: key F0876AC9: public key "Launchpad PPA for Jonathan Beck" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)

$ sudo apt-get install ifuse
The following NEW packages will be installed:
ifuse libiphone0 libplist0
$ sudo apt-get install libiphone-utils


Si vous rencontrez un message d'erreur du genre "E: Couldn't find package libiphone-utils", il faut effectuer une update & upgrade de votre système.

Il n'est pas nécessaire d'installer iproxy dans mon cas, puisque mon iTouch n'est pas Jailbreaké.

Maintenant, après avoir branché l'iTouch à l'ordinateur, on peut revérifier qu'usbmuxd est actif. Le paquet usbmuxd est nécessaire pour pouvoir synchroniser vos données de votre ordinateur sous linux vers votre iPhone, et vice versa.
$ ps ax | grep usbmuxd


2. Création d'un point de montage de l'iPhone/iTouch

Créer dans un premier temps un dossier /mnt/ipod avec tous les droits tel que :
sudo mkdir /mnt/ipod
sudo chmod 777 /mnt/ipod/


Dans le fichier de configuration de fuse /etc/fuse.conf, enlevez le # qui est devant user_allow_other , puis sauvegardez.

Après cela, ajoutez vous dans le groupe d'utilisateur fuse.

Pour ce faire, cliquer dans le menu Système > Administration > Utilisateurs et groupes. Cliquez ensuite sur la clé (il est écrit Déverrouillez) et rentrer votre mot de passe. Sélectionnez votre nom, puis cliquez sur Gérer les groupes.

Trouvez le groupe fuse et double cliquez dessus. Cela va faire une marque vers votre nom dans la fenêtre qui apparaît. Cliquez sur OK et fermez toutes les boîtes de dialogues. Vous êtes maintenant dans le groupe fuse.

Redémarrer votre ordinateur pour prendre en charge les dernières modifications.

Vérifier après redémarrage que vous appartenez bien au groupe fuse, en tapant id dans une console.
$ id
uid=1000(malagasy) gid=1000(malagasy) groups=4(adm),20(dialout),24(cdrom),46(plugdev),106(fuse),108(lpadmin),123(admin),124(sambashare),1000(malagasy)


3. Monter l'iPhone/iTouch

Vous pouvez toujours vérifier que usbmuxd est toujours actif quand après avoir branché l'iTouch.

$ ps ax | grep usbmuxd

A partir d'ici, vous pouvez monter l'iTouch avec la commande "ifuse /mnt/ipod/ ".

Voici les messages d'erreur que vous pouvez rencontrer par la suite :
$ ifuse /mnt/ipod/
ifuse: symbol lookup error: ifuse: undefined symbol: iphone_get_device

Ce problème est résolu en effectuant un update&upgrade de votre système. Je m'en suis apperçu en essayant de réinstaller ifuse.

$ sudo apt-get install ifuse
..
The following packages will be upgraded:
ifuse

Un deuxième message d'erreur m'est apparu.
$ ifuse /mnt/ipod/
Failed to connect to lockdownd service on the device.
Try again. If it still fails try rebooting your device.


Ce problème est du au fait que j'ai mis un mot de passe à l'iTouch.

Voici les répertoires que vous devriez avoir dans le dossier /mnt/ipod
$ ls
com.apple.itdbprep.postprocess.lock Downloads PublicStaging Safari
com.apple.itunes.lock_sync iTunes_Control Purchases
DCIM Podcasts Recordings


La suite dans le prochain billet.

mardi 8 décembre 2009

GShutDown - un utilitaire pour éteindre, fermer une session ou redémarrer l'ordinateur

Tout est dit dans le titre, mais je pense que pour mieux expliquer l'utilité de cette application, le texte de l'auteur de cette application résume tout.


Je suis désolé de demander ça, mais quel en est l'intérêt ?

Imaginons que tu es bien au chaud, dans ton lit, en train de regarder un film. Au lieu de "courir le risque" de dormir avant d'éteindre ton ordinateur (tout le monde n'a pas un PC allumé 24h/24 big_smile ), il te suffit de programmer l'arrêt de ton ordinateur avec GShutdown...

Tu te demandes peut-être quel est l'avantage par rapport à la commande "shutdown" ?

* GShutdown t'affiche des notifications visuelles. C'est utile pour te prévenir d'avance que l'ordinateur va être éteint dans les minutes qui viennent, ce qui te laissera le temps d'annuler l'arrêt ou de sauvegarder rapidement ton travail (si tu t'es oublié dans ton travail alors que l'arrêt de l'ordinateur était déjà planifié).
* Comme il n'y a pas que les Geek qui utilisent Linux, GShutdown a l'avantage d'être user-friendly, par rapport à shutdown.
* il est possible d'arrêter ou de redémarrer l'ordinateur sans être root.

Dans un futur proche, quelques fonctionnalités intéressantes sont prévues :
* les "extras" (des actions personnalisées. Par exemple, une action qui permet l'arrêt de la musique de Rhythmbox à une heure précise).
* l'arrêt de l'ordinateur quand l'activité réseau baisse (par exemple, quand un téléchargement est terminé)
* l'hibernation.
* et bien d'autres...


Sinon au niveau de l'utilisation de cette application, il n'y a rien de difficile. Tout le monde peut l'utiliser sans aucune connaissance particulière.

Vous pouvez constater sur l'écran, une notification en forme de pop-up que vous pouvez programmer à votre choix, puis la présence de l’Applet dans la barre du tableau de bord de gnome, dans mon cas en haut à droite, indiquant le temps restant avant l’extinction.


Quelques secondes avant d'effectuer l'action que vous avec demandé à l'application GShutDown, vous avec la fenêtre suivante.



Sources:
- site officiel : http://gshutdown.tuxfamily.org/fr/index.php
- quel en est l'intérêt?
- documentation sur le site d'ubuntu-fr.org
- le site qui m'a fait connaître cette application
- Ubuntu brainstorm: pourquoi ne pas voter pour que cette application soit installé par défaut sur Ubuntu?


gstreamer0.10-plugins-bad dans Update Manager

Lorsqu'un packet n'est pas installable à partir de l'Update Manager, c'est à dire que le paquet est grisé comme sur la photo ci-dessous, il ne vous suffit juste que de l'installer manuellement à partir de Synaptic Package Manager.


Synaptic Update Manager :


Sélection des packets upgradables, de le(s) marquer pour l'upgrade, puis de valider.


Et voilà, le packet est mise à jour.



Source:
- [ubuntu] gstreamer0.10-plugins-bad in Update Manager

dimanche 6 décembre 2009

Backup avec SBackup

Avant d'effectuer l'upgrade vers la version 9.10, mieux vaut commencer par faire une sauvegarde complète de son système. Pour ce faire, j'avais le choix entre plusieurs applications : Partimage, FSArchiver et Sbackup.

Comme mon premier objectif est de sauvegarder les données de mes partitions avant l'upgrade, j'ai opté pour Sbackup pour les raisons suivantes :

Partimage

- la partition à sauvegarder ne doit pas être montée. Seule la partition de sauvegarde (celle où sera stockée votre image) doit l'être.

http://www.framasoft.net/article4833.html

Non merci, puisqu'il me faut une sauvegarde complète de mon OS.
FSArchiver

- pas d'interface graphique : manipulation en ligne de commande.

http://www.fsarchiver.org/QuickStart

Pour l'instant, j'aurai souhaité quelque chose de simple, et de facilement abordable.
Sbackup

+ simple d'utilisation
+ interface graphique
+ sauvegarde complète du système
Un des points négatifs de l'application Sbackup est qu'il n'y a aucune confirmation de la fin de la sauvegarde. Par contre, on peut vérifier facilement dans une console si la sauvegarde est terminée ou non.
L'autre point négatif est que cette application semble ne plus être mise à jour depuis un certain temps.


Dans un premier temps, quand vous lancer Sbackup, il vous indique le numéro du processus. Ici, c'est le 8248.



Ensuite j'ai ouvert une console, puis de taper "screen" sans les guillemets - qui me permet d'avoir plusieurs fenêtre sur la même console.

Dans la première fenêtre de la console, j'ai demandé à avoir la liste de tous les processus et que cette liste soit régulièrement mise à jour, via la commande "top".

Dans la deuxième fenêtre, dans un premier temps j'ai demandé à avoir la liste des processus via la commande "ps -ef", ensuite d'avoir cette liste en arbre via la commande "ps -ejH".

Dans la troisième fenêtre, j'ai vérifié l'état du processus concernant le backup en tapant la commande ps numero_du_processus, dans mon cas ps 8248.



Sur les tableaux ci-dessus, et ci-dessous, on voit bien que les données sont en train de s'archiver.


Une fois l'archivage terminé, vous pouvez vérifier le mot "defunt" quand vous tapez : ps numero_processus. Ce qui signifie que l'archivage est complète.



Sources:
- Ouvrir plusieurs terminaux en même temps avec Screen
- Sbackup : documentation en français
- Sbackup : installation
- Sbackup : english documentation
- Surveiller l'activité du système

mercredi 25 novembre 2009

Vimtutor : un tutoriel pour apprendre à utiliser Vim

Vimtutor est sensé être pré-installé avec votre distributeur linux, mais au moment où je l'ai lancé, voici le message d'erreur

malagasy@malagasy-laptop:~$ vimtutor
The program 'vimtutor' is currently not installed. You can install it by typing:
sudo apt-get install vim-runtime
bash: vimtutor: command not found

Evidement, le premier réflexe est d'installer ce qu'on me demande, c'est à dire vim-runtime. Manque de bol, le tutoriel ne veut toujours pas se lancer. J'ai ensuite essayé d'installer vim-common, mais ce paquet était déjà installé à la base.
malagasy@malagasy-laptop:~$ sudo apt-get install vim-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
vim-common is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
malagasy@malagasy-laptop:~$ vimtutor
bash: /usr/bin/vimtutor: No such file or directory

Du coup, je me suis demandé s'il ne fallait pas supprimer ces deux paquets, puis de n'installer que vim-common.
malagasy@malagasy-laptop:~$ sudo apt-get remove vim-runtime
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
vim-runtime
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 23.4MB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 130108 files and directories currently installed.)
Removing vim-runtime ...
Removing `diversion of /usr/share/vim/vim71/doc/help.txt to /usr/share/vim/vim71/doc/help.txt.vim-tiny by vim-runtime'
Removing `diversion of /usr/share/vim/vim71/doc/tags to /usr/share/vim/vim71/doc/tags.vim-tiny by vim-runtime'
Processing triggers for man-db ...
malagasy@malagasy-laptop:~$ sudo apt-get remove vim-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
ubuntu-minimal vim-common vim-tiny
0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
After this operation, 1343kB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 128681 files and directories currently installed.)
Removing ubuntu-minimal ...
Removing vim-tiny ...
Removing vim-common ...
Processing triggers for man-db ...
malagasy@malagasy-laptop:~$ vimtutor
bash: /usr/bin/vimtutor: No such file or directory
malagasy@malagasy-laptop:~$ sudo apt-get install vim-common
Reading package lists... Done
Building dependency tree
Reading state information... Done

The following extra packages will be installed:
vim vim-runtime

Suggested packages:
ctags vim-doc vim-scripts

The following NEW packages will be installed:
vim vim-common vim-runtime

0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 1046kB/6463kB of archives.
After this operation, 25.6MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://fr.archive.ubuntu.com intrepid-security/main vim-common 1:7.1.314-3ubuntu3.1 [201kB]
Get:2 http://fr.archive.ubuntu.com intrepid-security/main vim 1:7.1.314-3ubuntu3.1 [845kB]
Fetched 1046kB in 14s (70.5kB/s)
Selecting previously deselected package vim-common.
(Reading database ... 128584 files and directories currently installed.)
Unpacking vim-common (from .../vim-common_1%3a7.1.314-3ubuntu3.1_i386.deb) ...
Selecting previously deselected package vim-runtime.
Unpacking vim-runtime (from .../vim-runtime_1%3a7.1.314-3ubuntu3.1_all.deb) ...
Adding `diversion of /usr/share/vim/vim71/doc/help.txt to /usr/share/vim/vim71/doc/help.txt.vim-tiny by vim-runtime'
Adding `diversion of /usr/share/vim/vim71/doc/tags to /usr/share/vim/vim71/doc/tags.vim-tiny by vim-runtime'
Selecting previously deselected package vim.
Unpacking vim (from .../vim_1%3a7.1.314-3ubuntu3.1_i386.deb) ...
Processing triggers for man-db ...
Setting up vim-common (1:7.1.314-3ubuntu3.1) ...

Setting up vim-runtime (1:7.1.314-3ubuntu3.1) ...
Processing /usr/share/vim/addons/doc

Setting up vim (1:7.1.314-3ubuntu3.1) ...


En réinstallant le paquet vim-common, vim et vim-runtime ont été ré-installé automatiquement. Et maintenant, tout va bien.
malagasy@malagasy-laptop:~$ vimtutor



Source :
- Vim l'éditeur de texte du programmeur

Copier-coller - simulation du bouton de milieu sur un pavé tactile

Une petite astuce qui nous simplifie la vie sur une console, si on décide de s'en passer de la souris :

Shift + Ctrl + C : copier
Shift + Ctrl + V : coller

double click sur un mot : sélectionne le mot
triple click sur une ligne : sélectionne la ligne

Vous pouvez aussi déplacer la ligne ou le texte sélectionnée sans lacher la souris vers la console directement.

Par contre, pour copier les données d'une console vers un éditeur de texte, après avoir sélectionné le texte à copier :

click sur le bouton droit et gauche en même temps : pour copier dans l'éditeur de texte


J'espère que cette astuce vous serait utile

Sources :
- http://forum.ubuntu-fr.org/viewtopic.php?id=332429