Translation(s): English - Castellano - Français - Italiano
Questa pagina descrive come connettere un dispositivo iOS (es., iPhone, iPod Touch, iPad, AppleTV) ad un sistema Debian Squeeze o Debian Wheezy, usando libimobiledevice. Ciò abilita il trasferimento di musica ed altri file tra un iPhone e un computer Debian, così come altre funzionalità (vedere più sotto "Cosa contiene e cosa non contiene questo documento").
I termini "iPod" e "iPhone" sono usati in modo intercambiabile in questo documento, e lo stesso vale per "iPad" e "Apple TV".
Contents
- Cosa contiene e cosa non contiene questo documento
- Iniziare: fare il backup dei propri dati
- Configurare l'iPhone, parte 1
- Connettere l'iPhone
- Configurare l'iPhone, parte 2
- Usare Rhythmbox
- script mount-iphone.sh
- Risoluzione dei problemi di montaggio
- Fare il backport di libimobiledevice 1.1.1 in Squeeze
- Elenco dei programmi
- Elenco degli strumenti
Cosa contiene e cosa non contiene questo documento
iPods più vecchi
Modelli di iPod più datati su cui non è in esecuzione iOS sono ben supportati da una semplice installazione di gtkpod : non è necessario fare tutto questo sforzo per connettere un iPod vecchio modello e trasferire musica.
Sistema operativo Debian sull'iPhone?
* No. Non viene discusso qui. Questa pagina parla di come connettere un iPhone con in esecuzione iOS di Apple ad un computer Debian.
Tethering?
* Qui non si parla di tethering; tuttavia se si desidera fare il tethering via USB può essere richiesta la configurazione di libimobiledevice e perciò parte delle istruzioni qui descritte potrebbe essere utile. Per il tethering via bluetooth libimobiledevice non è utile e perciò neanche questo documento lo è. * Il wiki di Arch Linux ha un ottimo articolo sul Tethering con iPhone. Sarebbe bello debianizzare e integrare tali informazioni in questa pagina oppure suddividere questa pagina in diverse pagine dedicate a Debian e iPhone/iOS.
Dettagli su libimobiledevice
* Dalla pagina web di libimobiledevice:
libimobiledevice è una libreria software multipiattaforma che utilizza i protocolli per supportare dispositivi iPhone, iPod Touch, iPad e Apple TV. A differenza di altri progetti, non dipende dall'uso di alcuna libreria proprietaria esistente e non richiede il jailbreaking. Permette ad altro software di accedere facilmente al file system del dispositivo, recuperare informazioni sul dispositivo e le sue caratteristiche interne, fare il backup/ripristino del dispositivo, gestire le icone SpringBoard, gestire le applicazioni installate, recuperare rubrica/calendari/note e segnalibri e (usando libgpod) sincronizzare musica e video col dispositivo. La libreria è stata sviluppata a partire dall'agosto 2007 con lo scopo di fornire il supporto per questi dispositivi al desktop Linux.
* Gli autori di questo documento desideravano soprattutto copiare musica tra un iPhone e un computer Debian. libimobiledevice però permette molte più funzionalità, ma tali funzionalità non vengono trattate in questo documento che può tuttavia aiutare a impostare libimobiledevice in modo che funzioni e comunichi con il proprio iPhone.
Necessari aggiornamenti?
2018-11-06
uname -a: Linux debian 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) x86_64 GNU/Linux
lsb_release -a: Debian GNU/Linux 9.5 (stretch)
Testato su (iPhone-#-MODELLO):
- iPhone-5c-MGFG2LLA
- iPhone-6-MG642LLA
Istruzioni (vedere https://www.dedoimedo.com/computers/linux-iphone-6s-ios-11.html)
[TERMINAL] apt install ideviceinstaller python-imobiledevice libimobiledevice-utils libimobiledevice6 libplist3 python-plist ifuse usbmuxd libusbmuxd-tools
[TERMINAL] usbmuxd -f -v
- [DEVICE] connect to TERMINAL via USB cable
- [TERMINAL] open new shell window (può non essere necessario)
[TERMINAL] idevicepair pair
- [DEVICE] Trust This Computer? Tap Trust
[TERMINAL] idevicepair pair
[TERMINAL] mkdir /media/iPhone
[TERMINAL] ifuse /media/iPhone
* Questo documento è stato aggiornato in modo significativo l'ultima volta nel febbraio 2012, per libimobiledevice 1.1.1-3 e iOS 5. Da allora è passato un bel po' di tempo e quella versione di libimobiledevice può funzionare, come no, con le versioni più recenti di iOS. Queste istruzioni tuttavia possono comunque essere ancora utili per installare le versioni successive di libimobiledevice e di altro software. (In effetti le istruzioni su come fare il backport possono essere utili come riferimento per configurare software che non ha nulla a che vedere con questo.)
* Aggiornamento: Dicembre 2017
Lo script mount-iphone.sh a cui si fa riferimento in seguito in questa pagina può non essere più necessario; con i pacchetti attualmente in Wheezy, tutto ciò che è necessario è:
- Installare i pacchetti: libimobiledevice6 libimobiledevice-utils libusbmuxd4 ifuse gvfs-fuse
- Connettere il proprip iDevice con un cavo USB
Eseguire: idevicepair pair
- Confermare l'accoppiamento cliccando nel riquadro di dialogo sullo schermo del proprio iDevice
Eseguire: ifuse /proprio/punto-mount/preferito
Il file system dell'iDevice è disponibile in /proprio/punto-mount/preferito
Per smontarlo eseguire fusermount -u /proprio/punto-mount/preferito
Per lavorare con i dispositivi con in esecuzione iOS 11.x è necessario usare i pacchetti libimobiledevice più recenti dal repository sid, cioè 1.2.1~git20171128.5a854327+dfsg-0.1 e dipendenze relative.
Se si hanno comunque problemi, il BTS di libimobiledevice è una risorsa utile: vedere https://github.com/libimobiledevice/libimobiledevice/issues
Iniziare: fare il backup dei propri dati
* Queste istruzioni spiegano come impostare il proprio iPhone in modo da poterlo sincronizzare (copiare musica) da Debian Squeeze o Wheezy usando un programma come gtkpod, Rhythmbox, amarok o banshee. Ciò non dovrebbe disturbare la sincronizzazione con iTunes: anche dopo l'aggiunta di musica, si dovrebbe sempre essere in grado di accedere al dispositivo usando iTunes. Detto questo, tenere a mente che: 1. questo è software libero; 2. viene fornito senza alcuna garanzia e 3. è possibile che vi sia un bug che causi la cancellazione della musica e di altri file. La maggioranza degli utilizzatori non ha avuto tali problemi, ma viene consigliato di fare il backup dei propri dati prima di iniziare.
Configurare l'iPhone, parte 1
* Una volta configurato, l'iPhone dovrebbe funzionare con qualsiasi macchina GNU/Linux, senza la necessità di rifare questa configurazione. (A patto che la macchina GNU/Linux abbia i pacchetti necessari installati.)
* Se l'iPhone ha già della musica sopra, si può saltare al passo successivo
- Creare un database audio iniziale, se non ne esiste già uno.
- Connettere l'iPhone ad un computer MS Windows o Mac OS X
- Far partire iTunes
- Aggiungere almeno una canzone o podcast libero all'iPhone.
* Questo inizializza un database sull'iPhone che è necessario per il corretto funzionamento delle istruzioni seguenti.
[Potrebbe esserci un modo di copiare un file di database iniziale usando solamente Debian; se lo si consosce, modificare questa pagina del wiki.
La pagina web di libimobiledevice parla di un progetto chiamato ideviceactivate.]
Connettere l'iPhone
* Se l'iPhone ha una versione recente di iOS (5 o successiva? Forse 4.3? 4.2.1?) allora sarà necessaria libimobiledevice 1.1.1 o successiva, disponibile in Wheezy. Squeeze ha libimobiledevice 1.0.2, che non funziona con le versioni recenti di iOS. Esiste un backport, descritto in seguito piuttosto complicato. Probabilmente è una buona idea procedere dapprima con l'installazione normale, prima di provare con il backport. Se l'installazione normale non funziona (oggigiorno normalmente per un errore "unhandled lockdown error"), allora si può provare il backport.
- Installare diversi pacchetti:
aptitude install libimobiledevice-utils gvfs-backends gvfs-bin gvfs-fuse
Da root, modificare il file /etc/fuse.conf:
Decommentare (rimuovendo il simbolo # davanti a) #user_allow_other alla fine del file.
Se non si riesce a trovare quella riga, crearne semplicemente un'altra alla fine del file contenente user_allow_other.
Salvare il file! Se non si è l'utente root non si può salvare il file ed è necessario rifare la modifica, come utente root.(Aggiornamento: a partire da Debian 8 (Jessie) non è più necessario un gruppo fuse, perciò si può saltare questo passaggio!) Assicurarsi che il proprio utente sia un membro del gruppo fuse: da utente normale digitare groups e cercare "fuse". Se non appare, allora:
- Aggiungere il proprio utente al gruppo fuse. Verrà usato il nome "mario" come esempio di utente, sostituire "mario" con il proprio nome utente.
usermod -aG fuse mario
[Questo va fatto per ciascun utente nel sistema che deve essere in grado di connettere un iPhone al computer]
[In alternativa si può usare uno strumento con interfaccia grafica come Sistema → Amministrazione → Utenti e gruppi in Gnome] - Dopo aver aggiunto l'utente al gruppo fuse, fare il log out e quindi di nuovo il login. Se la sessione GNOME (o un'altra sessione desktop) è stata avviata prima dell'aggiunta dell'utente al gruppo "fuse", allora l'ambiente utente non contiene ancora il gruppo fuse; perciò non si possono usare i programmi che richiedono i permessi del gruppo "fuse".
- Aggiungere il proprio utente al gruppo fuse. Verrà usato il nome "mario" come esempio di utente, sostituire "mario" con il proprio nome utente.
Pregare. :-) Se il prossimo passo non funziona allora ci si trova davanti ad una sfida difficile.
- Connettere l'iPhone.
Scegliere Annulla se viene chiesto di aprirlo come una fotocamera per l'importazione di fotografie;
- In alternativa, si può ottenere un'opzione per fare un AFC o montare la musica, allora è possibile fare quello.
- Se si è fortunati, l'iPhone appare sul desktop, con il proprio nome (es. "iPhone di Mario").
In modo predefinito, viene montato in ~/.gvfs (es. per mario, /home/mario/.gvfs/iPhone di Mario)
Se non si è così fortunati, cioè se non si vede nulla sul desktop e ~/.gvfs/iPhone non esiste, allora si deve fare un po' di sforzo per identificare il problema.
Può essere possibile che semplicemente non si sta usando un demone per il montaggio automatico, oppure il problema può essere più complesso. Andare alla Sezione sulla risoluzione dei problemi di montaggio.
Suggerimento: se si preferisce montare dalla riga di comando invece che con i demoni di montaggio automatico, vedere lo script di mount.
Configurare l'iPhone, parte 2
* Se si sta usando Wheezy o successive, ciò che è descritto in seguito avviene in modo automatico, e si può passare alla prossima sezione.
* Avviare un terminale: questa sezione prevede l'uso della riga di comando. Si deve essere un utente normale, non root e senza l'uso di sudo.
Dapprima scaricare e impostare lo script di mount e poi tornare a questa sezione.
- Assegnare il numero seriale dell'iPhone ad una variabile chiamata $serial. Notare che serial= è corretto, mentre, $serial= non funziona
serial=$(./mount-iphone.sh echo_serial)
- Verificare che la variabile sia stata assegnata in modo corretto
echo $serial
Se questo comando non mostra il numero seriale, tornare alle istruzioni precedenti altrimenti i passi successivi non funzioneranno.. - usare cd per spostarsi nella propria cartella home. (Se si digita semplicemente "cd", ciò porta alla propria cartella home)
cd
- spostarsi con cd nella cartella del punto di mount dell'iphone
cd .gvfs
cd "iPhone di Mario"
Nota: le virgolette doppie sono importanti se il nome contiene spazi, apostrofi o altri caratteri speciali
Suggerimento: l'autocompletamento con il tasto Tab è uno strumento comodo nel terminale. Digitare cd iP e poi premere il tasto TAB. - procedendo...
cd iTunes_Control
ls Il comando ls mostra una directory chiamata Device?
- Se così non fosse, allora eseguire
mkdir Device
- Se così non fosse, allora eseguire
- Ritornare alla directory superiore (es. "~/.gvfs/iPhone di Mario")
cd ..
- Assicurarsi di essere nella directory base dell'iPhone
pwd
Il comando precedente dovrebbe mostrare in output qualcosa di simile a:
/home/mario/.gvfs/iPhone di Mario
Se così non fosse, allora spostarsi in tale directory. Il prossimo passo dipende da ciò. Usare il comando seguente (da libgpod-common) per creare iTunes_Control/Device/SysInfoExtended:
ipod-read-sysinfo-extended $serial $PWD- Controllare il nuovo file
ls -l iTunes_Control/Device/SysInfoExtended
* L'iPhone è ora pronto per interfacciarsi con libgpod e tutti gli strumenti che lo usano, come gtkpod, rhythmbox, amarok, banshee, ecc.! Questi strumenti possono essere usati su qualsiasi computer Linux moderno per aggiungere e cancellare musica dal proprio iPhone, oltre al computer per la sincronizzazione iTunes, senza distruggere la scaletta.
Usare Rhythmbox
- Come prima cosa, installarlo:
aptitude install rhythmbox rhythmbox-plugins
- Fare il log out e poi di nuovo il login.
(Non è chiaro perché ciò sia necessario, ma potrebbe risolvere il problema se si ottiene, quando si cerca di fare il mount, un errore simile a:
"Error: DBus error org.freedesktop.DBus.Error.ServiceUnknown: The name :1.41 was not provided by any .service files".) - Avviare Rhythmbox:
Applicazioni → Audio e video → Rhythmbox
- Trovare l'iPhone nel pannello a sinistra
- Fare clic sull'iPhone per vedere quale musica contenga
- Si possono quindi trascinare e rilasciare file tra l'iPhone e la propria raccolta musicale di rhythmbox, in modo simile a ciò che si farebbe con iTunes e altri programmi.
* NOTA: Versioni più vecchie di rhythmbox potrebbero avere un po' di problemi a sincronizzare l'iPhone in maniera corretta. Alcuni hanno avuto delle serie difficoltà con musica nel dispositivo che non è mai mostrata. Gtkpod sembra fare la sincronizzazione in modo più affidabile.
* Quanto segue potrebbe aiutare:
- Usare il menu contestuale del tasto destro di rhythmbox per espellere l'iPhone, aspettare un po' mentre si sincronizza
- Connettere l'iPhone al proprio computer iTunes e annullare l'operazione "cancel sync"
- Installare gstreamer1.0-plugins-* (tutti... questo sembra essere stato d'aiuto per alcuni)
- ??? non si sa cos'altro suggerire
script mount-iphone.sh
* Se si ha un'installazione basata su Debian che monta auto-magicamente l'iPhone e presenta una o più interfacce grafiche per accedere ai dati dell'iPhone, questo script sarà di poca utilità. (Alla versione iOS 11.3.1, questo script sembra non necessario per l'accesso a file "DCIM".)
* Alcuni non hanno un demone di montaggio automatico nel proprio ambiente desktop, altri semplicemente preferiscono montare le cose a mano.
* Questo script è molto utile anche per la sezione "Configurare l'iPhone, parte 2"
Lo script è qui: mount-iphone.sh
(facendo clic sul collegamento si ottiene una "Pagina dell'allegato" da cui si può "Scaricare" lo script)- Aprire un terminale
- Spostarsi nella directory in cui è stato salvato lo script
- Impostare il bit di esecuzione:
chmod +x mount-iphone.sh
* Per coloro che preferiscono semplicemente copiare qualche comando, lo script fondamentalmente fa quanto segue:
idVendor=$(lsusb -v 2>/dev/null | awk '/idVendor.*Apple/{print $2; exit}') iSerial=$(lsusb -v -d $idVendor: 2>/dev/null | awk '/iSerial\s+\S+\s+\S/{print $3; exit}') gvfs-mount afc://$iSerial/
or
gvfs-mount -u afc://$iSerial/
or
gvfs-mount -l
or
echo $iSerial
* Ora è arrivato il momento di provare ad eseguire lo script.
- Dapprima eseguirlo senza parametri, per vedere se rileva l'iPhone
./mount-iphone.sh
Se si vede qualcosa di simile a,
fb9961044533cd317cb6f2bce3424c2771ae16d6 is mounted
o
fb9961044533cd317cb6f2bce3424c2771ae16d6 is not mounted
...allora è tutto a posto!
- Se non è stato ancora montato, lo si può fare con:
./mount-iphone.sh mount
- Se tutto va bene, appare un messaggio simile a:
mounted iphone with serial fb9961044533cd317cb6f2bce3424c2771ae16d6
(notare che il numero seriale sarà diverso) - In alternativa si potrebbe vedere un antipatico messaggio di errore come il seguente:
Unhandled lockdown error (-5)
Se si ottiene un errore, andare alla Sezione sulla risoluzione dei problemi di montaggio.
* Se tutto ha funzionato correttamente, si può tornare a Configurare l'iPhone, parte 2.
Ecco il testo dello script, per comodità di consultazione: (saltare alla Sezione successiva)
1 #!/bin/sh
2 #
3 # mount-iphone.sh
4 # This script attempts to mount or unmount the first connected ipod/iphone.
5 # Usage: ./mount-iphone.sh [mount | umount | echo_serial]
6 # It should be dash-friendly
7 #
8 # Written by Mohamed Ahmed, Dec 2010
9 #
10 # Refactored and extended by David Emerson, Feb 2012
11 #
12 # 2017-04-04 DaveSp In case more than one Apple device is attached via USB,
13 # "awk '/iSerial" now only matches when a serial number is
14 # present.
15 #
16 # You can configure send_msg to use either a console echo, or notify-send.
17 # notify-send is part of the debian package, libnotify-bin
18 # The apple pictures in /usr/share/pixmaps are part of the gnome-desktop-data package
19 #
20 # uncomment the following if you want to see the mount command used:
21 # show_mount_cmd=1
22
23 # you can uncomment this line to see all the commands sh executes:
24 # set -x
25
26 show_msg ()
27 {
28 # notify-send -t 4000 -u normal "mount-iphone" "$1" -i "/usr/share/pixmaps/apple-$2.png"
29 echo "$1" >&2
30 }
31
32 get_device_ids ()
33 {
34 # get the Apple vendor id (idVendor) from lsusb
35 idVendor=$(lsusb -v 2>/dev/null | awk '/idVendor.*Apple/{print $2; exit}')
36 [ -z "$idVendor" ] && { show_msg "Cannot find any Apple device" "red"; exit 1; }
37 # get the device serial number (iSerial)
38 iSerial=$(lsusb -v -d $idVendor: 2>/dev/null | awk '/iSerial\s+\S+\s+\S/{print $3; exit}')
39 [ -z "$iSerial" ] && { show_msg "Cannot find serial number of Apple device $idVendor" "red"; exit 1; }
40 }
41
42 is_mounted ()
43 {
44 gvfs-mount -l | grep -i "mount.*$1" >/dev/null
45 }
46
47 mount_iphone ()
48 {
49 [ -z $show_mount_cmd ] || echo gvfs-mount afc://$1/ >&2
50 if gvfs-mount afc://$1/; then
51 show_msg "mounted iphone with serial $1" "green"
52 else
53 show_msg "iphone mount failed" "red"
54 exit 1
55 fi
56 }
57
58 unmount_iphone ()
59 {
60 ## now gvfs unmount the device
61 [ -z $show_mount_cmd ] || echo gvfs-mount -u afc://$1/ >&2
62 if gvfs-mount -u afc://$1/; then
63 show_msg "unmounted iphone with serial $1" "red"
64 else
65 show_msg "iphone umount failed" "red"
66 exit 1
67 fi
68 }
69
70 case $1 in
71 mount)
72 get_device_ids
73 is_mounted && { show_msg "$iSerial is already mounted" 'green'; exit; }
74 mount_iphone $iSerial
75 ;;
76 umount|unmount)
77 get_device_ids
78 is_mounted || { show_msg "$iSerial is not mounted" 'red'; exit; }
79 unmount_iphone $iSerial
80 ;;
81 echo_serial)
82 get_device_ids
83 echo $iSerial
84 ;;
85 '')
86 get_device_ids
87 is_mounted && show_msg "$iSerial is mounted" 'green' || show_msg "$iSerial is not mounted" 'red'
88 ;;
89 *)
90 echo "Usage: $0 [mount | umount | echo_serial]"
91 exit 1
92 ;;
93 esac
94
95 exit 0
Risoluzione dei problemi di montaggio
* Se si sta leggendo questa sezione, allora probabilmente si hanno problemi nel montare il dispositivo. Se non è così, allora non è necessario leggere questa sezione...
La prima cosa da fare per risolvere il problema è impostare lo script di montaggio indicato sopra. Farlo!
- Provare a montare con
./mount-iphone.sh mount
* Se si ottiene un errore Unhandled lockdown error le cause possono essere diverse:
- se si sta usando wheezy, risolvere l'errore lockdown può essere semplice tanto quanto eseguire in un terminale quanto segue:
idevicepair unpair && idevicepair pair
Se si sta cercando di connettersi a un dispositivo con in esecuzione iOS 11.x, è necessario usare i pacchetti libimobiledevice più recenti dal repository sid, vedere la nota nella sezione Necessari aggiornamenti? in alto.
* Se si sta usando squeeze:
- questo errore è causato da un cambiamento nel comportamento di iOS, che ha reso difettosa libimobiledevice (introdotto in iOS 5, fine 2011)
per poter risolvere l'errore in squeeze può essere necessario fare il backport di libimobiledevice 1.1.1. Ciò non è banale, ma le istruzioni sono descritte in seguito!
* Altri errori... contributi al wiki sono i benvenuti!
Fare il backport di libimobiledevice 1.1.1 in Squeeze
Avvertimenti sui backport
* Alla data di marzo 2014 non esiste un backport ufficiale. Sarebbe meraviglioso se esistesse! Si dovrebbe controllare se ne esiste uno prima di fare ciò che segue. Veramente. http://backports.debian.org/Packages/ - cercare libimobiledevice in squeeze-backports e squeeze-backports-sloppy
* Se qualcuno ha fatto il backport di libimobiledevice 1.1.1, allora è invitato ad indicarlo in questa pagina.
* Però non cancellare questa sezione, dato che potrebbe essere comunque utile per qualcuno in futuro, per ragioni al momento sconosciute o inattese.
* Sfortunatamente, dopo aver fatto questo backport, rhythmbox di Squeeze ha sempre qualche problema e non è molto affidabile nel mettere la musica sull'iPod. Notare i problemi indicati nella sezione su rhythmbox. Tuttavia, lo si può decisamente usare per ottenere musica DALL'iPod!
* gtkpod di Squeeze non sembra funzionare per nulla. Tuttavia è relativamente facile compilare gtkpod 2.0.2 da snapshot.debian.org e ciò sembra funzionare piuttosto bene con iOS 5!
* Per poter procedere con la compilazione di questo backport, si deve essere a proprio agio nella:
- manipolazione di /etc/sources.list, facendo diverse modifiche
- modificazione di file sorgenti
- compilazione di pacchetti debian usando dpkg-buildpackage
- installazione di deb
- esecuzione paziente di tutti i passi in ordine
* NOTARE: questo funziona con libimobiledevice 1.1.1-3, disponibile al 16 febbraio 2012. Se, al momento in cui si provano queste istruzioni, wheezy è passata ad una versione successiva di libimobiledevice e non funziona, allora la cosa migliore da fare potrebbe essere ottenere libimobiledevice 1.1.1 da http://snapshot.debian.org; fare riferimento alle istruzioni per gtkpod 2.0.2 di seguito.
* Bene, se si è pronti, si parte...
Istruzioni passo-passo per fare il backport
- Configurare l'ambiente di compilazione
- Diventare root
Come prima cosa è necessario configurare l'ambiente di compilazione:
apt-get update
aptitude install build-essential
- Prepararsi alla compilazione di libimobiledevice
Ora è necessario ottenere la versione per wheezy o sid dei sorgenti di libimobiledevice. In /etc/apt/sources.list, aggiungere:
deb-src http://ftp.us.debian.org/debian/ wheezy main
(assicurarsi che dica deb-src, non deb)
(assicurarsi anche che questa sia l'unica riga deb-src. Si può usare sid invece di wheezy, ma non si deve avere una riga deb-src per squeeze)- aggiornare gli elenchi di apt
apt-get update
- Ottenere le dipendenze di compilazione
aptitude build-dep libimobiledevice
- Potrebbe essere anche desiderabile installare ccache, che mette in cache gli oggetti compilati e velocizza i tempi di compilazione (dopo la prima compilazione)
apt-get install ccache
- Diventare utente normale
- Spostarsi in una directory a propria scelta dove si desiderano compilare questi pacchetti e quindi:
apt-get source libimobiledevice
- Compilare libimobiledevice
Sfortunatamente è probabile che non funzioni senza alcune modifiche. Ci sono un paio di cose che è necessario aggiustare...
In tools/idevicebackup2.c, c'è un'occorrenza di "GStatBuf st" che deve essere modificata in "struct stat st"
(dato cheGStatBuf è un nuovo tipo che non esiste nelle librerie di Squeeze)Spesso si sono verificati problemi nella compilazione della documentazione. Si può provare a compilarla per prima o si può semplicemente saltare la documentazione.
In debian/control commentare (con #) l'intera sezione per Package: libimobiledevice-doc- Bene, ora provare a compilare!
- Andare nella directory libimobiledevice-1.1.1
- Attivare ccache
[[ $PATH = *ccache* ]] || export PATH="/usr/lib/ccache:$PATH"
- compilare!
dpkg-buildpackage -b -us -uc
Se ha successo, allora mette diversi file .deb nella directory genitore.
- Installare la nuova libimobiledevice
- Diventare root
- Andare nella directory dove sono i deb nuovi di zecca
Quelli che vanno installati sono libimobiledevice2, libimobiledevice-dev, libimobiledevice-utils e python-imobiledevice
dpkg -i libimobiledevice2... ...e gli altri...
- Compilare e installare gvfs e libgpod
- gvfs e libgpod elencano libimobiledevice-dev come loro dipendenza di compilazione. Perciò è necessario assicurarsi che la versione 1.1.1 di libimobiledevice-dev sia installata, in modo che gvfs e libgpod abbiano il link ad essa! Se i passi precedenti hanno avuto successo, allora si dovrebbe avere libimobiledevice-dev 1.1.1 installata. Lo si può controllare con:
dpkg -l libimobiledevice\*
- Sempre come root
Ritornare in /etc/apt/sources.list; rimuovere la riga deb-src sid/wheezy e riabilitare la riga deb-src per squeeze.
(Da questo punto in avanti, si devono compilare pacchetti di squeeze con la libimobiledevice-dev di wheezy/sid che è stata compilata)
apt-get update- Ottenere altre dipendenze di compilazione
aptitude build-dep gvfs libgpod gtkpod
- Gtkpod 2.0.2 richiede anche un paio di altre dipendenze di compilazione; queste non vengono richiamate automaticamente perché aptitude prende le dipendenze di compilazione dei pacchetti disponibili attraverso le righe deb-src presenti, che fanno riferimento a gtkpod 0.99.14 di Squeeze. Dato che la versione 2.0.2 ha un paio di requisiti in più rispetto alla 0.99.14, è necessario ottenerli a mano:
aptitude install libanjuta-dev libgdl-1-dev libgstreamer0.10-dev
- Da utente normale
Andare nella cartella di compilazione (se non si è già al suo interno :-)
- Ottenere i sorgenti
apt-get source gvfs
apt-get source libgpod - Se lo si desidera, si può modificare il file debian/changelog e incrementare il numero di versione. L'autore di queste istruzioni inserisce le righe seguenti all'inizio:
gvfs (1.6.4-3+ios501) unstable; urgency=low * Recompile, linking against libimobiledevice 1.1.1 -- mio nome <mia_email@gmail.com> Thu, 16 Feb 2012 11:34:00 -0700
e una cosa simile per libgpod
NOTA: gli spazi bianchi sono molto importanti: se si ottiene un errore error: unable to determine source changed by allora forse ci sono troppi o troppo pochi spazi bianchi prima di * o -- NOTA: Quando l'autore ha provato a fare questo per la prima volta, ha installato queste versioni compilate in modo personalizzato prima di iniziare con gtkpod. aptitude build-dep gtkpod si lamentava che libgpod4 0.7.93-0.3+ios501 non era la versione corretta; è stato necessario ricompilare e installare senza la modifica +ios501 in debian/changelog per poter far funzionare aptitude build-dep. - Attivare ccache
[[ $PATH = *ccache* ]] || export PATH="/usr/lib/ccache:$PATH"
- Spostarsi con cd nella directory gvfs e compilare:
dpkg-buildpackage -b -us -uc
- Fare una cosa simile per libgpod: andare nella directory di libgpod ed eseguire lo stesso comando dpkg-buildpackage
- Diventare root
Installare gvfs, gvfs-backends, gvfs-bin, gvfs-fuse, libgpod4, libgpod-common, libgpod-dev
Si potrebbe voler bloccare questi pacchetti in aptitude, in modo da non "aggiornarli" per sbaglio a quelli ufficiali di Debian successivamente, eliminando quelli compilati in modo personalizzato.
- gvfs e libgpod elencano libimobiledevice-dev come loro dipendenza di compilazione. Perciò è necessario assicurarsi che la versione 1.1.1 di libimobiledevice-dev sia installata, in modo che gvfs e libgpod abbiano il link ad essa! Se i passi precedenti hanno avuto successo, allora si dovrebbe avere libimobiledevice-dev 1.1.1 installata. Lo si può controllare con:
- Compilare e installare un gtkpod più nuovo
Questa è una cosa piuttosto non ortodossa, ma gtkpod di squeeze non funziona proprio con gli iPhone più recenti, mentre la versione di wheezy è compilata con le librerie di gnome3 che rendono difficile farne il backport. Perciò si è cercato in snapshot.debian.org la versione più recente disponibile di gtkpod precedente alla migrazione a gnome3, che è gtkpod 2.0.2-1. Questa viene compilata con solo poche lamentele e funziona bene!
Scaricare i file sorgenti di gtkpod 2.0.2 (.debian.tar.gz, .dsc e .orig.tar.gz) da http://snapshot.debian.org/package/gtkpod/2.0.2-1/.
- Metterli nella directory di compilazione, dove dovrebbero essere presenti molti altri file simili, così come deb compilati di recente.
- Estrarre i sorgenti:
dpkg-source -x gtkpod_2.0.2-1.dsc
- Spostarsi con cd nella directory gtkpod e provare a compilare:
dpkg-buildpackage -b -us -uc
Questo, nel caso dell'autore di questa pagina, è fallito con un messaggio che indicava la necessità di libgpod >= 0.8.
- Dato che 0.7.93 era il precursore di 0.8 (era un salto da 0.7.2 a pre-0.8), la versione 0.7.93 dovrebbe funzionare bene, se si saltano i controlli di dipendenza.
Tuttavia, si dovrebbe eseguire il comando dpkg-buildpackage precedente per assicurarsi che non ci siano altre dipendenze di compilazione mancanti.
Una volta verificato che libgpod è la sola dipendenza di compilazione non soddisfatta, si possono saltare i controlli sulle dipendenze con:
dpkg-buildpackage -b -us -uc -d- Da root
- Installare i nuovi .deb di gtkpod:
dpkg -i gtkpod... gtkpod-data... libgtkpod1...
* Come si può vedere, fare questo backport non è roba da deboli di cuore. Buona fortuna!
- Dopo aver installato tutta questa roba, sarà ancora necessario:
Montare il dispositivo, probabilmente usando lo Script di montaggio indicato in precedenza.
- Avviare gtkpod!
Elenco dei programmi
rhythmbox - riproduttore musicale per GNOME che può riprodurre e trasferire il contenuto dell'iPhone [SID non sembra funzionare con iPhone OS 4]
gthumb - un visualizzatore e navigatore di immagini per GNOME che può importare/mostrare immagini da un iPod
Elenco degli strumenti
Strumenti e programmi utili per gli utenti di iPhone in Debian
libplist-utils - convertitore di liste di proprietà Apple
plutil(1) - strumento di conversione per liste di proprietà Apple XML o binarie
libimobiledevice-utils - libreria per comunicare con dispositivi iPhone e iPod Touch
idevicesyslog(1) - relay per il syslog di un iPhone/iPod Touch connesso
idevice_id(1) - stampa i nomi di device o un elenco dei dispositivi iPhone/iPod Touch connessi
ideviceimagemounter(1) - monta immagini di dischi su iPhone/iPod Touch.
idevicebackup(1) - crea o ripristina backup per i dispositivi iPhone/iPod Touch
ideviceinfo(1) - mostra informazioni sul primo iPhone/iPod Touch connesso
idevicescreenshot(1) - ottiene un'istantanea dall'iPhone/iPod Touch connesso
ipheth-utils - driver per tethering USB per iPhone [utilità di supporto]
ifuse - modulo FUSE per dispositivi iPhone e iPod Touch
ifuse(1) - monta file system di un iPhone/iPod Touch
usbmuxd - demone USB multiplexing per dispositivi iPhone e iPod Touch
iproxy(1) - proxy che stabilisce accesso tcp ai servizi di iPhone/iPod
usbmuxd(1) - demone per server USB multiplex per iPhone/iPod Touch
Orfano:
python-imobiledevice - libreria per comunicare con dispositivi iPhone e iPod Touch