A partire dall'agosto 2007, un gruppo di sviluppatori ha iniziato un progetto per insegnare al pinguino a parlare la lingua della frutta, o almeno questo è il motto (Teaching penguins to talk to fruits) di libimobiledevice di cui vi ho già riportato le mie prime impressione in un post precedente.
Questa libreria è in grado di gestire completamente il vostro iCoso, dall'attivazione al backup, dalla sincronizzazione delle vostre canzoni alla gestione delle applicazioni che avete acquistato. Inoltre, cosa non trascurabile, linux riconosce l'iPhone come un'interfaccia di rete e quindi lo potete utilizzare facilmente come modem (tethering) e collegarvi ad internet attraverso il piano dati che avete sottoscritto con il vostro gestore. Nella mia recensione precedente vi avevo annunciato qualche problemino di compatibilità con l'ambiente KDE, così per poter effettuare un test più approfondito mi sono installato Ubuntu 10.10 (Maverick). In realtà dovrebbe funzionare ugualmente con ogni altra distribuzione basata su Gnome.
Sommario
- Introduzione e prerequisiti
- Aggiornamento dei pacchetti
- Primi passi
- Facciamo un backup
- Gestione della musica
- Gestione delle fotografie
- Gestione delle applicazioni
- Altre ed eventuali
Introduzione e prerequisiti
Dopo una normale installazione di Ubuntu 10.10 vi ritroverete già installata la libreria in questione e tutte le sue dipendenze. Qui di seguito trovate una lista di cosa vi serve necessariamente (e ripeto dovrebbe essere già installato) e cosa opzionalmente potete aggiungere.
- libimobiledevice1 (versione 1.0.1-1). Il cuore della libreria. Non è la versione stabile più recente (1.0.4) che vi serve necessariamente se il vostro iCoso ha una versione del firmware pari o superiore a 4.2.1. (Vedi capitolo Aggiornamento nel seguito).
- libplist1 (1.3-1). Si tratta di una libreria in grado di gestire i file di preferenze e di configurazione (plist) di Apple. Viene utilizzata da libimobiledevice per la sincronizzazione dei contenuti. E' già aggiornata alla versione più recente disponibile.
- usbmuxd (1.0.4-1) e la sua libreria. Si tratta del demone che permette al sistema operativo di riconoscere l'iPhone come tale. E' ovviamente necessario. Non è l'ultima versione disponibile (1.0.6), se volete vedere il capitolo Aggiornamento.
- libimobiledevice-utils (non installato) [opzionale]. Questo pacchetto contiene alcuni programmi da eseguire da linea di comando e che permettono di verificare le informazioni del vostro iCoso. Di default non viene installato, ma io lo consiglio specie perché credo sia necessario se volete eseguire il backup del vostro dispositivo.
- ifuse (non installato) [opzionale]. Questo pacchetto contiene il modulo Fuse per iCosi, ovvero vi permette di montare manualmente l'iPhone in una directory specifica del vostro file system. A parer mio non vi serve a niente.
- nautilus-ideviceinfo (non installato) [opzionale]. Niente di fondamentale, questo pacchetto vi permette di visualizzare le informazioni del vostro iCoso direttamente in Nautilus senza andare via terminale. Come ho già detto, niente di fondamentale, ma lo installerei.
La situazione per KDE
E' necessario aggiungere una precisazione per gli utenti KDE. Vi accennavo ad alcuni problemi per quanto riguarda questo desktop environment e principalmente sono legati alla gestione della comunicazione verso l'iCoso. Gvfs è il servizio di Gnome che si occupa di montare automaticamente l'iDevice e di stabilire la comunicazione attraverso l'AFC (Apple File Connection). Ovviamente gvfs non c'è in KDE dove per fare la stessa si deve ricorrere ad un wrapper per kio (kio_afc) di cui al momento ne esiste un'implementazione molto basica ancora non impacchettata. Ci sono istruzioni abbastanza dettagliate su come compilarlo sul proprio computer a questo link. Io sono riuscito ad installarlo senza problemi, nel caso voi ne troviate, basta lasciare un messaggio qui sotto.
Una volta installato il kio_afc non aspettatevi che il vostro iPhone appaia automaticamente sul desktop come succede in Gnome, ma potrete esplorare il file system del vostro iphone aprendo una finestra di Konqueror o Dolphin e digitando nella barra degli indirizzi afc://. Purtroppo il wrapper afc è ad uno stadio di sviluppo che definirei embrionale e quindi a parte guardare cosa c'è nell'iphone potrete fare molto poco.
Un'altra cosa che potete provare a fare è installare ifuse. Vi avevo detto essere inutile sotto Gnome, ma magari vi può servire su KDE. Dopo averlo installato create un mounting point (ovvero una directory) da assegnare al vostro iPhone, diciamo $HOME/iphone e poi da terminale digitate questo comando:
A questo punto nella cartella specificata troverete il contenuto del vostro dispositivo.
Nel mio caso specifico - che però potrebbe essere solo il mio - non sono riuscito a gestire la musica con Amarok (2.3), anzi quando Amarok è in funzione e connetto l'iPhone, il demone usbmuxd non riesce a prenderne il controllo e così nemmeno ideviceinfo riesce a funzionare. C'è un caveat per questo: sul sito ufficiale di Amarak è messo ben in evidenza che bisogna aspettare la versione 2.4 (che per il momento è disponibile solo in beta) per avere una gestione come si deve dei dispositivi con la mela morsicata. E' un peccato perché io personalmente preferisco di gran lunga Amarok a Rhythmbox, ma questa è la vita.
La mia opinione personale è che gli sviluppatori di libimobiledevice siano gnome-centrici (e non c'è niente di male nell'esserlo), il che non vuol dire che la libreria e tutti i suoi tools non funzioneranno mai su KDE, ma che ci vorrà un po' più di tempo.
Aggiornamento dei pacchetti
Come già precedentemente accennato la versione della libreria distribuita con Ubuntu 10.10 non è l'ultima disponibile e potreste incontrare problemi di compatibilità con le ultime versioni di iOS. Vi consiglio di aggiornare dunque. A questo indirizzo trovate il PPA di uno degli sviluppatori da dove recupare il software aggiornato. La stringa apt per aggiungere il repositorio è quella riportata nel box qui sotto.
Primi passi
Come prima cosa, dopo aver controllato di avere tutti i pacchetti obbligatori e magari anche quelli che vi ho consigliato, possiamo collegare l'iDevice al PC attraverso il cavo USB in dotazione. Se come me state usando una virtual machine, assicuratevi che il controllo della periferica passi dall'host al guest, se siete in dubbio chiedete nei commenti che vi spiego nel dettaglio. Appena collegato, il vostro gingillo Apple potrebbe vibrare un paio di volte, per segnalarvi l'avvenuta connessione al Pc. Questione di istanti e sullo schermo vi dovrebbero comparire una dopo l'altra queste due finestre di dialogo.
L'icona dell'iCoso vi appare sul desktop |
Informazioni sul dispositivo direttamente disponibili in Nautilus. |
Facciamo un backup
Come dice il vecchio saggio: better safe than sorry. Così prima di cominciare a smanettare, vi consiglio vivamente di fare un bel backup. Magari l'avrete già fatto da iTunes l'ultima volta che l'avete usato, quindi perché non farlo anche la prima volta che usate linux per gestire l'iPhone. Per quanto ne so, non esiste ancora uno strumento con interfaccia grafica in grado di fare questa operazione, quindi dobbiamo ricorrere al buon vecchio terminale. Il comando che dobbiamo utilizzare è idevicebackup e nella finestra qui sotto vedete l'output del suo help.
Usage: idevicebackup [OPTIONS] CMD [DIRECTORY]
Create or restore backup from the current or specified directory.
commands:
backup Saves a device backup into DIRECTORY
restore Restores a device backup from DIRECTORY.
options:
-d, --debug enable communication debugging
-u, --uuid UUID target specific device by its 40-digit device UUID
-h, --help prints usage information
Vedete che lo stesso comando può essere utilizzato sia per effettuare una copia di backup sia per ripristinare una copia eseguita in precedenza. L'argomento facoltativo [DIRECTORY] rappresenta il percorso dove volete salvare / recuperare il vostro backup. La cosa interessante è che idevicebackup è in grado di fare backup incrementali, cioè la prima volta che lo lanciate, eseguirà un backup completo, mentre le volte successive copierà solo quanto è stato modificato.
Backup con iOS 4.x
Se stai leggendo questo paragrafo è perché sei molto coraggioso e anche molto impaziente. Hai un iDevice con fw >= a 4 e vorresti farne il backup. Il motivo per cui la versione stabile che avevate già installato non funziona, lo trovate ben spiegato in questo bug report dallo sviluppatore in persona; anche se il titolo si riferisce ad iPhone 4, in realtà è valido per tutti gli iOS 4.x. Visto che questa versione non è ancora stata giudicata stabile e affidabile dagli sviluppatori, utilizzatela a vostro rischio e pericolo.
Per poter compilare questo codice sorgente dovete installare alcuni pacchetti che di default potrebbero non esserci. Il modo più rapido è attraverso il seguente comando da terminale:
libgnutls-dev libglib2.0-dev libxml2-dev libreadline5-dev \
python-dev swig libusbmuxd-dev libplist-dev libplist++ \
libplist++-dev
cd libimobiledevice
git checkout mobilebackup2
E adesso cominciamo a compilare. Per farlo dovete digitare i comandi che seguono, ma prima di farlo forse vi conviene leggere sotto il box che cosa fatto.
./configure --prefix=$HOME/test
make
make install
- Il primo comando serve per analizzare il vostro sistema e per produrre lo script di configurazione. La sua esecuzione si interrompe quando viene individuata la mancanza di una libreria o di un pacchetto mancante. In quel caso dovete installare il pacchetto e ripetere la procedura.
- Il secondo comando esegue la vera configurazione della sorgente. In realtà viene eseguito in automatico da autogen.sh se questo termina con successo, ma in tal caso la variabile --prefix viene lasciata al valore di default (/usr/local). Io personalmente preferire mettere il tutto in una directory di test per evitare di fare confusione con le altre librerie installate e perché quando non volete più usarlo basta rimuovere l'intera cartella.
- Compila il codice. Potreste vedere dei warning, non preoccupatevi. Si riferiscono al codice e non alla vostra compilazione. Se la procedura va a buon fine arrivate alla fine senza errori, altrimenti vi compare la scritta Error... In quel caso, o sapete cosa e come fare o altrimenti provate a chiedere nei commenti qui sotto.
- L'ultimo comando installa quanto avete appena prodotto nella directory indicata da prefix. Se avete scelto un "prefix" al di fuori della vostra home, allora dovrete premettere sudo al comando e digitare la vostra password.
toto@toto-VirtualBox:~/test$ bin/idevicebackup4 backup $HOME/Documents/iphone-backup/
Notate che prima di eseguire il comando mi sono spostato nella directory $HOME/test e che ho specificato il percorso (bin/) perché questa cartella non appartiene al vostro path di esecuzione e notate anche il 4 alla fine del comando. Se tutto va come dovrebbe andare, nel giro di qualche minuto vi troverete nella cartella specificata un backup completo del vostro iDevice.
Musica maestro
Gestione della libreria musicale di iPhone da Rhythmbox |
Aprendo Rhythmbox, l'iDevice vi dovrebbe comparire nella colonna di sinistra sotto la voce dispositivi. Cliccandoci sopra vedrete comparire le vostre playlist e i vostri brani. Li potete ascoltare direttamente sul Pc, schiacciando il tasto play, oppure potete trasferirli nella vostra libreria locale. Per trasferire musica in entrambe le direzioni dovete fare semplicemente quello che il vostro intuito vi dice di fare: ovvero selezionate il brano o i brani che volete copiare e trascinateli dal Pc all'iPhone o viceversa. Dite la verità che iTunes non vi manca nemmeno un po'!
Finestra di dialogo per la sincronizzazione |
Se cliccate su sincronizza il dispositivo, inizierete il trasferimento dei brani, che potrebbe impiegare anche qualche minuto a seconda della quantità. Durante la sincronizzazione, il display del vostro iCoso si accenderà e spegnerà più volte mostrando la tipica schermata con la scritta "Sincronizzazione in corso". E' tutto normale e non scollegate, mi raccomando!
Si possono fare le suonerie?
Certo che si possono fare, come no! La procedura è un po' macchinosa e quindi richiede una guida a sé stante che però trovate già bella pronta sull'unico-lab.
Gestire i video
Grazie al suggerimento di un nostro lettore, mi sono interessato del problema della gestione dei video, che sono sincronizzati contestualmente alla musica, ma che richiedono un po' di attenzione. Iniziamo con il chiarire che libimobiledevice si occupa di gestire la comunicazione tra il vostro iDevice e il programma che utilizzate per la gestione dei contenuti multimediali. Altro punto importante da tenere a mente è che iPhone richiede che il vostro video sia in un formato particolare, sia in termini di codifica sia in termini di risoluzione.
Per questo motivo abbiamo preparato un'altra guida ad-hoc che trovate a questo link!
Fotografie e immagini
La gestione delle fotografie è talmente banale che non serve nemmeno avere libimobiledevice. Se volete potete utilizzare il vostro programma preferito per la gestione della vostra libreria fotografica, oppure potete aprire Nautilus, entrare nella cartella DCIM e scaricare le foto dove meglio credete. Non credo serva aggiungere altro, vero?
Gestione delle applicazioni
Il prossimo passo è gestire le applicazioni che avete installato sul vostro dispositivo. Personalmente mi piacerebbe poterle archiviare sul mio computer in modo da poterle reinstallare in un secondo momento o in caso di una ripristino totale dell'iCoso. Se questo è anche il vostro desiderio, allora ideviceinstaller è il programma che vi serve. Purtroppo non esiste già impacchettato e bisogna compilarselo a mano, ma tranquilli perché sto per dirvi passo passo cosa fare.
Iniziamo con installare un po' di pacchetti utili, il modo più rapido è via terminale, quindi apritene uno e digitate quanto riportato nella finestra qui sotto.
libgnutls-dev libglib2.0-dev libxml2-dev libreadline5-dev \
libusbmuxd-dev libplist-dev libplist++ libplist++-dev libzip libzip-dev
A questo punto dobbiamo scaricarci il codice da compilare; usiamo il comando seguente:
cd ideviceinstaller
Adesso possiamo partire con la compilazione vera e propria che si compone di 4 passaggi
./configure --prefix=$HOME/test
make
make install
Se avete compilato l'ultima versione di libimobiledevice seguendo le mie istruzioni, allora noterete che il processo è del tutto identico. Vi consiglio di andare a leggervi gli avvertimenti che vi avevo dato in precedenza. Anche in questo caso, sarei propenso ad utilizzare per l'istallazione un prefix diverso da quello di sistema, perché credo che nel giro di pochi mesi, se non settimane, verrà reso disponibile un pacchetto precompilato presso lo stesso repositorio da dove avete già ottenuto gli aggiornamenti. In questo modo, prima di installare il pacchetto rimuovete la directory test e vi siete tolti tutti i problemi.
Una volta terminata la compilazione, nella cartella $HOME/test/bin troverete il comando ideviceinstaller che diventerà il vostro miglior amico nella gestione delle applicazioni. Andiamo a vedere un piccolo help.
toto@toto-VirtualBox:~/test$ bin/ideviceinstaller --help
Usage: ideviceinstaller OPTIONS
-U|--uuid UUID Target specific device by its 40-digit device UUID.
-l|--list-apps List apps, possible options:
-o list_user - list user apps only (this is the default)
-o list_system - list system apps only
-o list_all - list all types of apps
-o xml - print full output as xml plist
-i|--install ARCHIVE Install app from package file specified by ARCHIVE.
-u|--uninstall APPID Uninstall app specified by APPID.
-g|--upgrade APPID Upgrade app specified by APPID.
-L|--list-archives List archived applications, possible options:
-o xml - print full output as xml plist
-a|--archive APPID Archive app specified by APPID, possible options:
-o uninstall - uninstall the package after making an archive
-o app_only - archive application data only
-o copy=PATH - copy the app archive to directory PATH when done
-o remove - only valid when copy=PATH is used: remove after copy
-r|--restore APPID Restore archived app specified by APPID
-R|--remove-archive APPID Remove app archive specified by APPID
-o|--options Pass additional options to the specified command.
-h|--help prints usage information
-D|--debug enable communication debugging
Probabilmente la prima cosa che vorrete fare sarà vedere quali sono le applicazioni che avete installato, per dovete usare l'opzione -l e potete scegliere se visualizzare tutte le applicazioni (-o list_all), quelle di sistema (-o list_system) o solo quelle installate da voi (-o list_all). In pratica utilizzate uno di questi comandi:
toto@toto-VirtualBox:~/test$ bin/ideviceinstaller -l -o list_system
toto@toto-VirtualBox:~/test$ bin/ideviceinstaller -l -o list_user
Digitando uno di quei comandi, vi apparirà sul terminale una lista con a sinistra una stringa che rappresenta il codice dell'applicazione (APPID) e nella colonna di destra il nome dell'applicazione stessa.
Il prossimo passo è l'archiviazione delle applicazioni; per farlo abbiamo due opzioni:
- archiviarle e lasciarle nella cartella ApplicationArchives sull'iPhone,
- archiviarle e trasferirle sul pc
toto@toto-VirtualBox:~/test$ bin/ideviceinstaller -a pippo.pluto.paperino -o copy=$HOME/Documents/archivio-app -o remove
In questo esempio pippo.pluto.paperino è l'APPID che avete ricavato dal comando list e $HOME/Documents/archivio-app è la cartella sul vostro computer dove andrete a mettere l'applicazione. Attenzione che dovete creare la cartella di destinazione prima di eseguire i comando.
A questo punto, volendo potete installare un applicazione che avete archiviato sul PC e rimosso dal dispositivo digitando il comando seguente:
Ricordatevi di sostituire a $HOME/Documents/archivio-app/pippo.pluto.paperino.ipa il percorso completo all'applicazione che avete precedentemente archiviato su Pc.
Volete archiviare tutte le applicazioni con un solo comando? Eccovi serviti:
Posso trasferire applicazioni da un iPhone ad un altro?
Bella domanda. Una volta che avete archiviato le vostre applicazioni con il comando sopra citato, la domanda: posso installarle anche su un altro iCoso usando l'opzione -i del comando ideviceinstaller? La risposta è tecnicamente sì, ho provato ad installare un'applicazione gratuita originariamente presa dal cellulare di mia moglia su quello di mio cognato, ma nonostante l'installazione fosse terminata con successo, l'applicazione non era in grado di funzionare.
Il motivo è da ricercarsi nel fatto che all'interno del file .ipa, che altro non è che un archivio zippato e di cui quindi potete facilmente vedere il contenuto, ci sono delle informazioni che riguardano il vostro Apple Store account e che quindi vi identificano univocamente.
Magari un giorno un qualche hacker troverà il modo per farlo in tutta sicurezza, ma questo argomento esula dallo scopo di questa guida.
Cosa manca?
Per farmi veramente felice fino in fondo, vorrei provare ad attivare un dispositivo, aggiornarne il firmware, usare il tethering e sincronizzare i contatti. Tutto questo dovrebbe essere possibile usando libimobiledevice, ma non ho ancora avuto modo di provarlo.
Se questa guida vi è piaciuta mi fa piacere e vi ringrazio in anticipo se la diffondete. Se avete trovato delle inesattezze, lasciatemi un messaggio e sarò felice di correggerle. Se non vi è piaciuta, me ne rammarico, ma ci posso fare ben poco.
La domanda è: per me sarà più facile passare a linux o imparare a usare bene iTunes? Fare una virtual machine solo per gestire l'iPhone mi sembra esagerato, certo però che iTunes proprio non lo sopporto.
RispondiEliminaBene, allora adesso che non devi più usare iTunes ti preparo una lista di canzoni che mi devi caricare sull'iPhone. E le suonerie? Come facciamo a mettere le suonerie?
RispondiEliminaPoi guarda che mi dovresti pagare il noleggio del telefono altrimenti come facevi a fare tutti i tuoi esperimenti e scrivere questa guida.
@fabio, come mio papà ha già dimostrato, passare a linux non è un'utopia e tanto meno impossibile. Io se fossi in te non avrei dubbi, però capisco che si tratta di un grande passo
RispondiElimina@tata, ok per nuovi brani. li mettiamo su tutti bene ordinati, con tutti gli id3 giusti e le copertine. Poi magari diamo una sistemata anche al mio vecchio iPod (non touch). Per quello però credo convenga aspettare Amarok 2.4
Per le suonerie ho già in un'idea. Adesso appena ho un attimo di tempo faccio una prova e poi scrivo una bella guida.
Complimenti per la guida, lavoro certosino Toto. ;)
RispondiEliminaSalvata e linkata via mail ad amici che di Linux ne fanno una ragione di vita. :)
Appena ho tempo ci metto mano pure io.
Ciao. :)))
Toto, ti ho linkato da me... La guida merita veramente. Bravo. :)
RispondiEliminaCiao.
Grazie per i complimenti, per la diffusione e per il link. Ne sono onorato.
RispondiEliminaHo appena finito di creare la nuova libreria musicale per l'iphone di mia moglie e sto sincronizzando 342 brani. Per il momento l'unico aspetto negativo è che utilizzando ubuntu su una virtual machine, le prestazioni sono quello che sono.
Non appena ho tempo vado ad aggiungere una sezione sulle suonerie, che mia moglie mi sta stressando l'anima e poi vorrei provare ad aggiornare/ripristinare un iDevice, ma per quello ci vuole molto coraggio.
L'ultima mia curiosità è relativa alla gestione delle applicazioni. Domanda: se salvo le applicazioni sull'hd, come ho già fatto (1.7 Giga), poi posso trasferirle anche su un altro cellulare? Questa mi tocca proprio provarla...
Complimenti per la guida!!! Ti dico che è l'unica che ho letto fino in fondo!! continua così!
RispondiEliminaGrazie Roberto! Probabilmente l'aggiornerò con qualche novità appena avrò tempo. A presto...
RispondiEliminaOttima guida l'ho seguita e su ubuntu in effetti funziona. L'ho provata su Opensuse (KDE)ma ci sono effettive difficoltà nell'installare i pacchetti.
RispondiEliminaNon è che potresti descrivere la stessa procedura anche per ambienti KDE?
Ciao Vincenzo, grazie per i complimenti.
RispondiEliminaPassiamo ora alle note negative perché anch'io sono principalmente un utente KDE su Fedora. Aggiungo una sezione all'introduzione spiegando cosa serve fare per gli utenti KDE. Ok?
Ciao Vincenzo, ho aggiunto un paragrafo su KDE che spero ti possa essere utile.
RispondiEliminaA presto!
Sto provando a compilare idevicebackup2
RispondiEliminaquando lancio "make" mi escono degli errori:
[code]make
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /home/enzo/libimobiledevice/missing --run autoheader)
rm -f stamp-h1
touch config.h.in
cd . && /bin/sh ./config.status config.h
config.status: creating config.h
config.status: config.h is unchanged
make all-recursive
make[1]: Entering directory `/home/enzo/libimobiledevice'
Making all in src
make[2]: Entering directory `/home/enzo/libimobiledevice/src'
CC idevice.lo
CC debug.lo
debug.c:49:13: warning: ‘debug_print_line’ defined but not used
CC userpref.lo
CC property_list_service.lo
CC device_link_service.lo
CC lockdown.lo
CC afc.lo
CC file_relay.lo
CC notification_proxy.lo
CC installation_proxy.lo
CC sbservices.lo
CC mobile_image_mounter.lo
CC screenshotr.lo
CC mobilesync.lo
CC mobilebackup.lo
CC house_arrest.lo
CC mobilebackup2.lo
CC restore.lo
CCLD libimobiledevice.la
make[2]: Leaving directory `/home/enzo/libimobiledevice/src'
Making all in include
make[2]: Entering directory `/home/enzo/libimobiledevice/include'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/enzo/libimobiledevice/include'
Making all in swig
make[2]: Entering directory `/home/enzo/libimobiledevice/swig'
/usr/bin/swig -c++ -python -I../include -I/usr/include/python2.6 -I/usr/include -I../src -o imobiledevice_wrap.cxx imobiledevice.i
make all-am
make[3]: Entering directory `/home/enzo/libimobiledevice/swig'
CXX imobiledevice_wrap.lo
In file included from imobiledevice_wrap.cxx:2846:0:
../include/libimobiledevice/mobilesync.h:32:18: fatal error: glib.h: No such file or directory
compilation terminated.
make[3]: *** [imobiledevice_wrap.lo] Error 1
make[3]: Leaving directory `/home/enzo/libimobiledevice/swig'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/enzo/libimobiledevice/swig'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/enzo/libimobiledevice'
make: *** [all] Error 2
[/code]
Cosa potrebbe essere?
Ciao Vincenzo, l'errore è questo:
RispondiEliminaglib.h: No such file or directory
apparentemente non hai installato glib-dev, ma la cosa puzza perché dovrebbe lamentarsi già "configure" di questa mancanza.
Domanda, stai compilando su Ubuntu o OpenSuse?
Potresti mettere da qualche parte (per es. www.box.net) l'output di configure e poi mettere qui il link?
Sto compilando su Opensuse, su Ubuntu ho già fatto e funziona.
RispondiEliminaGlib è installato e in "configure" non c'è errore.
Comunque questo è il file:
http://www.box.net/shared/lc7u0u7a54
Dici bene, configure non da errori, ma in realtà lui cerca solo la libreria (libglib2) non l'include (glib.h).
RispondiEliminaPrima cosa verificherei che glib.h veramente non ci sia. Prova con "locate glib.h". Su Fedora si trova in "/usr/include/glib-2.0/glib.h", su OpenSuse sarà qualcosa di simile.
Il pacchetto RPM che lo contiene dovrebbe essere glib2-devel. Potresti verificare di averlo installato, per esempio digitando come root "rpm -aq | grep glib2"
Fammi sapere. ciao
Allora ti confermo che si trova in "/usr/include/glib-2.0/glib.h".
RispondiEliminaIl pacchetto risulta installato:
rpm -aq | grep glib2
glib2-devel-2.24.1-2.5.x86_64
libpackagekit-glib2-14-0.6.3-5.4.x86_64
glib2-branding-openSUSE-2.16-53.1.noarch
glib2-2.24.1-2.5.x86_64
Perfetto. Allora apri Makefile con un editor di testo e cerca la stringa "libglib2_CFLAGS".
RispondiEliminaQuesta variabile dovrebbe essere "-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include". Se non lo è, prova a metterlo a mano e ricompilare.
Attendo...
Rieccomi, la stringa è così:
RispondiElimina-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include
modifico?
Se stai usando (come credo) una distribuzione x86_64 allora direi di no.
RispondiEliminaPerò di chiederei di aspettare un secondo perché su Fedora anch'io sto avendo dei problemi di compilazione, sempre legati a glib, ma non alla mancanza del file. Dammi un sec, ok?
ok trovato! Per lo meno su fedora sono riuscito a farlo compilare, ma modificando a mano /usr/include/glib2-0/glib/gstdio.h cosa che non consiglierei a nessuno di fare. In pratica ho copiato la definizione di GStatBuf da gstdio.h di Ubuntu incollandola in quello di Fedora. Non so se e quali possano essere le ripercussioni per il resto del sistema.
RispondiEliminaSu Fedora il problema è che hanno usato GStatBuf che è definito in quel file include ma solo a partire dalla versione 2.26 di glib2. Tu (su Suse) ed io (fedora) invece stiamo ancora usando 2.24. Invece su Ubuntu c'è 2.26.
Come te la cavi con l'inglese? Io ho appena aggiunto una nota ad un bug report già aperto (questo). io sono hilbert.
Aggiungi anche tu che con OpenSuse non compila ugualmente. Non escludo che il tuo problema potrebbe essere differente, ma sicuramente correlato. Purtroppo stando così le cose, non è un problema che possiamo risolvere noi.
Confermo la versione di glib2 2.24 anche su OpenSuse, domani appena trovo 5 minuti aggiungo anch'io una nota al bug report.
RispondiEliminaComunque speriamo che si riesca a risolvere perchè mi da lo stesso problema anche con ideviceinstaller. Sigh!!
Ciao
Vincenzo ci sei ancora?
RispondiEliminaPiù penso al tuo problema e più credo che sia indipendente da libimobiledevice, specie perché mi hai detto che succede anche con ideviceinstaller.
Ti consiglierei di fare una prova semplicissima. Ho caricato su box.net un semplicissimo programma che carica glib.h e scrive Hello. Scaricalo e per compilarlo usa il seguente comando:
gcc -o test.exe `pkg-config --cflags --libs glib-2.0` test.c
Fai attenzione ai backthick, ovvero gli apici inversi.
Fammi sapere, ciao
Link boxnet?
RispondiEliminascusa colpa mia... questo è il risultato di scrivere i commenti dalla macchina:
RispondiEliminahttp://www.box.net/shared/5947pbjapk
scusa ancora
Ecco il risultato:
RispondiEliminagcc -o test.exe 'pkg-config --cflags --libs glib-2.0' test.c
gcc: pkg-config --cflags --libs glib-2.0: No such file or directory
test.c:1:18: fatal error: glib.h: No such file or directory
compilation terminated.
attento che hai messo, o almeno hai copiato qui, gli apici sbagliati. Devi usare questi ` è molto importante.
RispondiEliminaresto in attesa
Va alla riga successiva ma non esce nulla.
RispondiEliminaPerfetto allora ha funzionato. Dovresti avere un file test.exe e se scrivi ./test.exe dovresti vedere Hello World.
RispondiEliminaQuesto significa che glib-2.0 e' ben configurato e glib.h e' stata trovata. Adesso dobbiamo capire perche' il makefile di libimobiledevice non la trova.
Domani torno a lavorarci sopra, ok?
./test.exe
RispondiEliminaHello
Perfetto, come ti dicevo glib-2.0 funziona bene. Allora dobbiamo capire cosa non funziona nel makefile di libimobiledevice.
RispondiEliminaTi chiederei di fare la i seguenti passi:
./configure --disable-silent-rules
make
Il primo comando rifarà la configurazione e preparerà il makefile in modo "verboso". Poi mi copi in un file l'output del make, ok?
resto in attesa
http://www.box.net/shared/bbhd66f7cg
RispondiEliminaops... scusa non avevo visto che avevi aggiunto un commento... guardo subito e ti faccio sapere!
RispondiEliminaAllora stiamo facendo passi aventi nella comprensione.
RispondiEliminaProva a fare
./configure --disable-silent-rules --without-swig
make
E poi mi posti l'output verboso del make. Se riesci mettimi in un tar.gz anche tutta la cartella che voglio guardare bene i makefile, ok?
Ecco i file:
RispondiEliminahttp://www.box.net/shared/kvypkjt8n9
http://www.box.net/shared/0xnqr7e4lo
Inoltre ho un problema anche nella compilazione di Kio_afc
ti posto l'outpot di cmake
http://www.box.net/shared/qr7fisi57c
Se continua così passo a ubuntu....
Allora, l'output che ottieni adesso è esattamente quello che ho io con Fedora e per risolverlo apri con un editor
RispondiEliminatools/idevicebackup4.c
e prima del primo static copia questo codice:
[code]
#if defined (_MSC_VER) && !defined(_WIN64)
/* Make it clear that we mean the struct with 32-bit st_size and
* 32-bit st_*time fields as that is how the 32-bit GLib DLL normally
* has been compiled. If you get a compiler warning when calling
* g_stat(), do take it seriously and make sure that the type of
* struct stat the code in GLib fills in matches the struct the type
* of struct stat you pass to g_stat(). To avoid hassle, to get file
* attributes just use the GIO API instead which doesn't use struct
* stat.
*
* Sure, it would be nicer to use a struct with 64-bit st_size and
* 64-bit st_*time fields, but changing that now would break ABI. And
* in MinGW, a plain "struct stat" is the one with 32-bit st_size and
* st_*time fields.
*/
typedef struct _stat32 GStatBuf;
#else
typedef struct stat GStatBuf;
#endif
[/code]
adesso guardo kio_afc, ma tu fammi sapere l'esito di libimobiledevice, ok?
Il problema con cmake (questo lo conosco molto meglio di autotools) è che non ha trovato uno dei suoi moduli. Hai installato cmake usando un rpm?
RispondiEliminaProvare a digitare:
locate FindKDE
e postami l'output, ok?
Funziona!
RispondiEliminaEcco i passaggi:
git clone http://git.sukimashita.com/libimobiledevice.git
cd libimobiledevice
git checkout mobilebackup2
Modificare il file tools/idevicebackup4.c prima del primo static copiare questo codice:
#if defined (_MSC_VER) && !defined(_WIN64)
/* Make it clear that we mean the struct with 32-bit st_size and
* 32-bit st_*time fields as that is how the 32-bit GLib DLL normally
* has been compiled. If you get a compiler warning when calling
* g_stat(), do take it seriously and make sure that the type of
* struct stat the code in GLib fills in matches the struct the type
* of struct stat you pass to g_stat(). To avoid hassle, to get file
* attributes just use the GIO API instead which doesn't use struct
* stat.
*
* Sure, it would be nicer to use a struct with 64-bit st_size and
* 64-bit st_*time fields, but changing that now would break ABI. And
* in MinGW, a plain "struct stat" is the one with 32-bit st_size and
* st_*time fields.
*/
typedef struct _stat32 GStatBuf;
#else
typedef struct stat GStatBuf;
#endif
./autogen.sh
./configure --disable-silent-rules --without-swig
make
su
make install
et voilà ecco
idevicebackup4
No command specified.
Usage: idevicebackup4 [OPTIONS] CMD [DIRECTORY]
Create or restore backup from the current or specified directory.
commands:
backup Saves a device backup into DIRECTORY
restore Restores a device backup from DIRECTORY.
options:
-d, --debug enable communication debugging
-u, --uuid UUID target specific device by its 40-digit device UUID
-h, --help prints usage information
Grazie Antonio, sei un grande!!
Ma vieni! Facevo il tifo per te ovviamente! Devo aggiungere che la patch da aggiungere a idevicebackup4.c è necessaria solo per chi ha glib-2.0 vecchia versione.
RispondiEliminaUltima precisazione: io sto avendo dei problemi con il "restore" come avrai visto sul ticket aperto. Non so se anche tu succederà - spero di no - però in caso fammi sapere e aggiungi anche il tuo contributo al bug report.
Ti chiederei una cortesia, visto che questa guida è stata quasi interamente basata su Ubuntu, mi faresti un breve resoconto di come funziona il tutto su OpenSuse? Grazie
cmake l'ho installato dai repo tramite Yast
RispondiEliminalocate FindKDE
/usr/share/cmake/Modules/FindKDE3.cmake
/usr/share/cmake/Modules/FindKDE4.cmake
Allora cmake ha ragione di lamentarsi, perché gli mancano i file che cerca. In particolare cerca /usr/share/kde4/apps/cmake/modules/FindKDE4Internal.cmake che su Fedora è incluso in kdelibs-devel e onestamente non so dove sia in OpenSuse. Ho dato un'occhiata al repositorio OpenSuse e non ho trovato un pacchetto con lo stesso nome.
RispondiEliminaPerò non molliamo proprio ora... adesso scrivo uno scrippettino che lo cerca, ok?
Trovato: devi installare libkde4-devel!
RispondiEliminaFammi sapere
Vincenzo ci sei ancora?
RispondiEliminaAggiornamenti:
RispondiEliminaAllora kio_afc sono riuscito ad installarlo ma sia da dolphin che konqueror mi dice "protocollo non supportato".
Mah!!
Con ifuse funziona ma in modo limitato mentre tramite ssh vedo molte più cartelle all'interno.
Alla prossima puntata
kio_afc temo sia ancora troppo embrionale per poter essere usato.
RispondiEliminail fatto che con ssh vedi più cartelle (hai fatto il jailbreak con linux) è normale, perché con afc non puoi accedere alla parte privata del FS.
Torna quando vuoi, è stato un piacere
Non penserai mica di esserti liberato già di me.
RispondiElimina:-)
C'è ancora la pratica "ideviceinstaller" da risolvere.
Prossimamente cominciamo.
Ciao
Installato anche ideviceinstaller
RispondiElimina[code]git clone http://git.sukimashita.com/ideviceinstaller.git
cd ideviceinstaller[/code]
[code]./autogen.sh
./configure
make
su
make install[/code]
[code]ideviceinstaller
Usage: ideviceinstaller OPTIONS
-U|--uuid UUID Target specific device by its 40-digit device UUID.
-l|--list-apps List apps, possible options:
-o list_user - list user apps only (this is the default)
-o list_system - list system apps only
-o list_all - list all types of apps
-o xml - print full output as xml plist
-i|--install ARCHIVE Install app from package file specified by ARCHIVE.
-u|--uninstall APPID Uninstall app specified by APPID.
-g|--upgrade APPID Upgrade app specified by APPID.
-L|--list-archives List archived applications, possible options:
-o xml - print full output as xml plist
-a|--archive APPID Archive app specified by APPID, possible options:
-o uninstall - uninstall the package after making an archive
-o app_only - archive application data only
-o copy=PATH - copy the app archive to directory PATH when done
-o remove - only valid when copy=PATH is used: remove after copy
-r|--restore APPID Restore archived app specified by APPID
-R|--remove-archive APPID Remove app archive specified by APPID
-o|--options Pass additional options to the specified command.
-h|--help prints usage information
-D|--debug enable communication debugging
[/code]
Prossimamente vi farò sapere se funziona.
;-)
Sembra proprio un buon inizio, almeno compila fino in fondo senza problemi.
RispondiEliminaA presto allora!
Installato libirecovery e idevicerestore.
RispondiEliminaTutte le librerie sono installate adesso inizia la fase di test.
Confermo che ideviceinstaller, per l'installazione delle applicazioni in *.ipa, funziona.
stay tuned
molto interessante. Potresti elaborare un po' su ideviceinstaller?
RispondiEliminaMi spiego: hai un iPhone jailbroken? hai installato una ipa che avevi backuppato dal tuo telefono e che avevi acquistato su iTunes oppure da altra fonte?
Grazie
l'iphone è JB ed ho installato un'app .ipa che avevo salvato tempo fa quando usavo ancora windows (C:\Documents and Settings\"USERNAME"\Documenti\Musica\iTunes\Mobile Applications) ma credo che funzioni anche con apps di dubbia ( o certa?) provenienza. Anzi ti confermo che funzia anche con quest'ultime.
RispondiElimina;-)
mi domando cosa succede se uno con un telefono non JB prova ad installare con ideviceinstaller apps dubbie.
RispondiEliminaIo ho verificato che le apps salvate da un iphone non JB possono essere installate anche su un altro iphone (non-JB) ma poi non funzionano.
Immagino che avendo (avuto o anche) windows, tu abbia fatto il jailbreak da lì. Lo sai che in teoria è possibile farlo anche con linux?
Non ho mai provato né devicerestore né recovery, perché in caso di problemi, non avendo windows a portata di mano, sarei fregato. Se tu le provi, poi aggiungiamo un capitoletto nella guida.
Grazie per le info.
Ho provato a fare l'aggiornamento firmware (4.0 -> 4.1) ma ci sono alcuni errori. Devo googlare, non vorrei che idevicerestore sia incompatibile con ios 4.x
RispondiEliminaidevicerestore -c *.ipsw
Found device in Recovery mode
Identified device as iPhone2,1
Extracting BuildManifest from IPSW
ERROR: zip_name_locate: BuildManifesto.plist
Product Version: 4.1
Product Build: 8B117
Variant: Customer Upgrade Install (IPSW)
This restore will update your device without loosing data.
Extracting filesystem from IPSW
[==================================================] 100.0%
Resetting recovery mode connection...
Extracting iBEC.n88ap.RELEASE.dfu
Sending iBEC (104836 bytes)...
[==================================================] 100.0%
ERROR: Unable to execute iBEC
ERROR: Unable to send iBEC
ERROR: Unable to place device into restore mode
Ciao Vincenzo, ho letto il tuo commento... complimenti per il coraggio!
RispondiEliminaLeggendo il comando che hai digitato e il suo output vedo che ci sono almeno due errori. Domanda prova a specificare il file ipsw senza usare l'*.
Consiglio: iscriviti alla mailing list degli sviluppatori di libimobiledevice e posta lì l'output del tuo problema. Sono sicuro che otterrai una risposta in tempi rapidi. Se ti serve una mano per l'inglese, basta chiedere.
Tienici infomarti!
Ecco cosa hanno risposto dal sito ufficiale di idevicerestore:
RispondiEliminaNot worked for ages. Needs worked on. Known issue
Non resta che aspettare. Sigh!!
Mi tocca ancora usare win... per aggiornare il nostro icoso.
P.S.: Ho provato gtkpod per sincronizzare la musica e funziona montando il device con ifuse, amarok mi crasha se provo ad aprire la cartella musica locale, qualche idea?
Peccato! L'idea di poter fare aggiornamenti di fw e ripristinare l'iOS direttamente da Linux era proprio un bel modo per dire addio ad iTunes. Staremo a vedere come evolve la situazione... Speriamo che sia in tempi rapidi...
RispondiEliminaIo con gtkpod ho una storia di amore e odio. Anni fa quando avevo appena acquistato il mio iPod Video 30 Giga (sembra di tornare indietro al medioevo...), gtkpod era di fatto l'unica alternativa per gli utenti linux e diciamo che funzionava anche piuttosto bene.
Poi è arrivato Amarok 1.x che integrava libpod e che faceva le stesse cose di gtkpod, ma in un ambiente più bello. Nel passaggio da gtkpod a amarok mi si è corrotto il db itunes.db sull'ipod perdendo tutte le cover art e simili.
Poi è arrvato Amarok 2.x che fino ad oggi (2.3) ha un pessimo supporto - se non nullo - per gli icosi e così sono ritornato nelle braccia di gtkpod.
In conclusione: uso gtkpod per ipod da Fedora KDE e rhythmbox per iphone da ubuntu. Un bel casino...
Per quanto riguarda il tuo problema con Amarok, io ne avevo uno simile che addirittura mi impediva di avviarlo. Era legato al db MySQL di cui io avevo una versione troppo nuova. Prova ad avviarlo da linea di comando e vedere cosa ti dice quando muore...
Ma vuoi vedere che....
RispondiEliminahttp://www.ispazio.net/147512/la-prossima-versione-di-tinyumbrella-permettera-il-ripristino-degli-idevices-anche-senza-itunes
(basata sul codice di idevicerestore)
c'è anche per linux.
E' da approfondire!!
Sapevo esistesse una versione di TinyUmbrella anche per linux perché l'avevo considerato insieme a greenpois0n per fare il jailbreak senza bisogno di windows; però questa mi è nuova...
RispondiEliminaGrazie per la news!
ciao...grandissima guida :)
RispondiEliminauna domanda...ma per i video? si possono caricare?
esiste una procedura a parte?
grazie in anticipo
Ciao MasCir, ottima osservazione.
RispondiEliminaA dire la verità avevo notato che Rhythombox non era riuscito a scaricare i video dall'iPhone di mia moglie dicendomi che il formato non era supportato. E non ho mai provato a caricare nessun video dal Pc al telefono.
Quindi per il momento direi che la risposta è no, però mi devo informare meglio.
Resta sintonizzato che ti faccio sapere qualcosa...
@Vincenzo, sperando che leggi questi commenti.
RispondiEliminaOggi cercando info per MasCir, ho ritrovato i tuoi bug-report di cui parlavi in un commento precedente. In particolare il bug 201 oltre ad indicarti il vero e proprio tracker per idevicerestore ti suggerisce di non utilizzare l'opzione "-c". Immagino che tu ci abbia provato, vero?
@MasCir, ci sei ancora?
RispondiEliminaAllora ho cercato sulla mailinglist di libimobiledevice e come pensavo la gestione della musica e dei video è lasciata al programma specifico (rhythombox, gtkpod, amarok...) mentre la libreria si occupa solamente della comunicazione tra il programma e il dispositivo.
Ho trovato questo messaggio che è molto simile alla tua richiesta e soprattutto ho trovato anche una risposta in cui si dice che gtkpod riesce a gestire anche i video, mentre per rhythombox ci potrebbe essere qualche problemino.
Ho appena sequestrato l'iphone a mia moglie, tu intanto prova a seguire i consigli nel link che ti ho postato.
@MasCir, ho aggiunto una sezione Video e un'intera guida. Buon divertimento e torna presto a trovarci!
RispondiEliminaottima guida, vorrei solo contribuire.... se si connette il telefono via ssh e semplicissimo installare app anche per chi non ha confidenza con il terminale: basta copiare l'app in private>var>mobile>Documents>Installous>Downloads,una volta copiato il file .ipa aspettare che venga caricato su installous nella sezione download (controllate che la dimensione sia quella del file originario, altrimenti significa che sta finendo di caricarlo), a mio avviso e il modo piu semplice e veloce.
RispondiEliminachiaramante telefono jailbreackato e open ssh sia nel device che nel pc
ciao,volevo chiederti se questo programma funziona anche con ipad e se e' semplice da usare,grazie mille ciao!
RispondiEliminaciao anonimo, in teoria a detta degli sviluppatori dovrebbe funzionare anche con ipad. la semplicità è relativa, io non l'ho trovato particolarmente complicato, ma ho la tendenza a non scoraggiarmi alla prima difficoltà.
RispondiEliminaCi sono degli aspetti che sicuramente possono essere migliorati e semplificati, altri che già sono abbastanza buoni. Io lo uso perché non ho windows e iTunes non lo sopporto proprio.
Tu prova ad usarlo, non ci sono controindicazioni, e se vuoi una mano passa da queste parti.
ps. in questi giorni sono stati rilasciati parecchi aggiornamenti dei pacchetti e credo che la guida andrebbe aggiornata. Prometto di farlo appena ho tempo!
Ciao,
RispondiEliminadirei che una cosa manca (ed è quella che a me serve, guardacaso :)
come importare immagini su ipad da linux.
Tra l'altro l'importazione di mp3 tramite rhythmbox non va (Impossibile inviare il file al dispositivo MTP: PTP Layer error 02ff: get_storage_freespace(): could not get storage info) ... peccato ;(
ciao
davide
ciao Davide, quando attacchi l'ipad non ti dice se vuoi gestire le foto con qualche programma tipo shotwell?
RispondiEliminaper quanto riguarda gli mp3, hai provato a compilarti l'ultima versione disponibile di libimobiledevice?
Questo commento è stato eliminato da un amministratore del blog.
RispondiEliminaQuesto commento è stato eliminato da un amministratore del blog.
RispondiEliminaQuesto commento è stato eliminato da un amministratore del blog.
RispondiEliminaQuesto commento è stato eliminato da un amministratore del blog.
RispondiEliminaQuesto commento è stato eliminato da un amministratore del blog.
RispondiEliminaQuesto commento è stato eliminato da un amministratore del blog.
RispondiEliminaa me da ipad bloccato anche se non ho codice bah mentre me lo fa caricare
RispondiElimina