tl; dr: je recherche un moyen "canonique" ou "recommandé" d'installer des paquets (cli) .deb sur Ubuntu touch
J'utilise Ubuntu sur mon ordinateur de bureau et mon serveur depuis un an et j'en suis très satisfait. Maintenant, j'ai acheté le premier téléphone Ubuntu, le BQ Aquaris e4.5 Ubuntu Edition. Cependant, j'ai découvert que je ne pouvais pas installer les packages .deb
normaux ni installer des choses utilisant apt-get
. Comment puis-je "rooter" mon téléphone afin d'installer des packages "normaux" .deb
?
J'ai essayé moi-même. Je sais que la première chose à faire est de rendre votre système de fichiers accessible en écriture. J'ai suivi les étapes suivantes mais je me suis retrouvé bloqué à cause d'une erreur dpkg.
# Desktop:
Sudo add-apt-repository ppa:phablet-team/tools
Sudo apt-get update
Sudo apt-get install phablet-tools
# Phone:
Security & Privacy: Lock phone: Lock when idle: Never
About this phone: Developer Mode: Developer Mode ON
# connect phone to PC via USB
# Desktop:
adb devices
# no device detected so I've manually added file
touch /home/username/.Android/adb_usb.ini
# with content: 0x2a47
Sudo adb kill-server
Sudo adb start-server
adb devices # now my phone is on the list
# Phone:
Sudo test -w filename && echo "Writable" || echo "Not Writable"
# verified it is writable
Sudo add-apt-repository ppa:phablet-team/ppa
Sudo apt-get update && Sudo apt-get upgrade
Et c'est l'endroit où l'erreur commence à me bloquer:
dpkg: error processing archive /var/cache/apt/archives/powerd_0.16+15.04.20150430-0ubuntu1_armhf.deb (--unpack):
unable to make backup link of `./usr/share/powerd/device_configs/config-default.xml' before installing new version: Invalid cross-device link
Alors j'ai essayé
Sudo apt-get install -f
Mais il est resté bloqué sur "Config principale Bluetooth". J'ai redémarré le téléphone, mais il ne voulait plus s'allumer. J'ai essayé l'option de démarrage Recover
. Ça a marché. J'ai essayé install -f
encore, et cette fois cela a fonctionné. Mais après avoir fait upgrade
j'avais toujours la même erreur.
Créez un chroot dans le répertoire de base:
mkdir -p vivid-chroot cd vivid-chroot wget http://cdimage.ubuntu.com/ubuntu-touch/vivid/daily-preinstalled/current/vivid- preinstalled-touch-armhf.tar.gz Sudo tar -zxvf vivid-preinstalled-touch-armhf.tar.gz
Ensuite, utilisez le chroot et installez tous les outils CLI que vous devez utiliser, au sein de ce chroot:
cd ~/vivid-chroot Sudo chroot. apt-get update apt-get install git
Pour effectuer certaines tâches, il peut être nécessaire de lier certains répertoires au montage. Ce faisant, vous devrez faire très attention si vous souhaitez supprimer le chroot de votre téléphone ou effectuer d'autres actions destructrices.
Sudo mount --bind/proc /home/phablet/vivid-chroot/proc[.____.VENSudo mount --bind/dev /home/phablet/vivid-chroot/dev .Sudo mount --bind/sys /home/phablet/vivid-chroot/sys
Ce n'est pas une liste exhaustive, mais vous pouvez lier d'autres répertoires selon les besoins de la même manière. Vous n'avez pas besoin de créer le chroot dans votre répertoire de base si vous disposez d'un périphérique de stockage externe, tel qu'une carte SD, pour le créer. Cependant, tous les téléphones ne disposent pas de fentes pour cartes SD. Si vous souhaitez créer le chroot sur une carte SD, remplacez simplement le répertoire de base dans les commandes ci-dessus, avec le chemin d'accès à un répertoire de votre autre support de stockage sur lequel vous souhaitez créer le chroot.
Attention: il ne s'agit que d'un hack pour résoudre le problème de liaison inter-périphériques lors de la mise à niveau par apt-get avec le paquet powerd. ce n'est pas une solution certifiée "UBUNTU"
Prérequis: avoir fait de R/W l'installation d'ubuntu avec:
phablet-config writable-image
Copiez le fichier powerd * .deb téléchargé du téléphone vers un PC à partir du chemin:
/ var/cache/apt/archives /
Sur le PC, décompressez le fichier .deb, supprimez le fichier /usr/share/powerd/device_configs/config-default.xml (de mes tests, il n’a pas trouvé de résultats fondamentaux):
su - root
mkdir tmp
dpkg-deb -R powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb tmp
rm tmp/usr/share/powerd/device_configs/config-default.xml
mv powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb old.deb
dpkg-deb -b tmp powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb
Tout doit être fait en tant que root pour conserver les permissions originales des fichiers et des répertoires du paquet. Reconditionnez, recopiez sur le téléphone, puis installez-le avec:
Sudo dpkg -i powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb
Vous obtiendrez toujours l'erreur:
"/usr/share/powerd/device_configs/config-default.xml": périphérique ou ressource occupé
Mais à la fin, le paquet est mis à jour.
Maintenant, si vous faites: Sudo apt-get upgrade
l'erreur a disparu.
Mon téléphone BQ Aquaris semble bien fonctionner et stable.
Comme cela a déjà été souligné, vous devez installer un chroot compatible ARM sur votre appareil et installer tous les packages requis dans ce chroot. Cependant, cela dans votre répertoire personnel gaspille beaucoup d’espace précieux. Au lieu de cela, vous pouvez le faire sur votre carte SD en utilisant un ordinateur fonctionnant sous un système d'exploitation Linux approprié (testé sous Linux Mint 17 et Ubuntu Trusty). N'ayant trouvé aucune information à ce sujet ailleurs, je l'ai mise ici pour répondre à une vieille question.
Les instructions suivantes supposent que vous souhaitiez installer un Debian Jessie Chroot dans le répertoire Jessie.
Pour créer une image de 1 Go appelée IMAGE.img dans le répertoire de travail actuel, procédez comme suit:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Notez que le B en Go est omis. "if" signifie "fichier d'entrée", "of" pour "fichier de sortie" et "bs" pour "taille du bloc".
Il existe des commandes plus efficaces, mais celles-ci ne fonctionnent que sur certains types de systèmes de fichiers, à ma connaissance. Celui-ci fonctionne également sur une carte SD ou une tempfs. Veuillez noter l'utilisation de/dev/zero et non de/dev/random ou/dev/urandom, car cela prendrait beaucoup plus de temps et rendrait beaucoup plus long le transfert de l'image entre les périphériques ultérieurement.
Sans le système de fichiers, le téléphone ne pourrait pas stocker de données sur l'image. Sans système de fichiers, vous ne pouvez pas encore monter l'image dans un répertoire, mais uniquement dans un périphérique en mode bloc.
Cette commande bash affichera le prochain périphérique de boucle vide dans la variable LOOP
name__:
$LOOP=$(Sudo losetup -f)
Ensuite, attribuez l'image à un périphérique bloc:
Sudo losetup $LOOP IMAGE.img
Ensuite, créez le système de fichiers ext4 sur celui-ci:
Sudo mkfs -t ext4 $LOOP
Ensuite, détachez l'image du périphérique en boucle:
Sudo losetup -d $LOOP
Si vous obtenez des erreurs de commande non trouvée, installez simplement les programmes manquants.
Maintenant, créez un répertoire temporaire dans le répertoire de travail:
mkdir jessie
et montez le fichier image IMAGE.img sur celui-ci:
Sudo mount -o loop IMAGE.img $(pwd)/jessie
La commande pwd
veillera à ce que vous donniez à mount un chemin absolu vers votre répertoire de travail actuel.
La prochaine étape consistera à utiliser qemu-debootstrap pour télécharger les fichiers nécessaires. Ceci est facile si qemu-debootstrap est disponible, comme c'est le cas sur Ubuntu et les systèmes d'exploitation dérivés. Si vous obtenez des erreurs de commande non trouvée lors de l'exécution de qemu-debootstrap --help
, essayez d'installer le paquet approprié, ce qui peut être fait sous Ubuntu via:
Sudo apt-get install qemu-user-static
Pour télécharger tous les fichiers requis et préparer le nouveau système d'exploitation, exécutez la commande suivante:
Sudo qemu-debootstrap --Arch=armhf jessie ./jessie http://http.debian.net/debian
Notez que le premier jessie
représente la version du système d'exploitation, tandis que le second jessie
représente le répertoire où les fichiers doivent être installés. Vous pouvez maintenant démonter l'image, le reste du travail devant être effectué sur le téléphone. Faites-le via:
Sudo umount $(pwd)/jessie
Si vous ne pouvez pas installer qemu-debootstrap, reportez-vous à la section suivante.
Veuillez ignorer cette section si vous avez qemu-debootstrap disponible. Vous aurez toujours besoin d'un debootstrap natif pour votre architecture, cependant. Si cela se produit, utilisez simplement la ligne de commande ci-dessus, mais remplacez qemu-debootstrap
par debootstrap
name__. Sinon, suivez cette section.
Pour télécharger tous les fichiers requis pour le nouveau système d'exploitation, exécutez la commande suivante:
Sudo debootstrap --Arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
Vous pouvez maintenant démonter l'image car le reste du travail doit être effectué au téléphone. Faites-le via:
Sudo umount $(pwd)/jessie
Maintenant, créez au mieux une archive tar que vous copiez ensuite sur votre téléphone. Peu importe que l'archive soit placée sur la carte SD ou sur la mémoire de stockage interne. Créez l'archive sur le bureau en utilisant:
tar -cvzf jessie.tar.gz IMAGE.img
Maintenant, sur votre téléphone, activez le support ssh pour copier l’image par dessus. Vous pouvez également le faire en utilisant un câble USB à la place. Comme le serveur ssh est réinitialisé à chaque redémarrage, démarrez le service ssh sur le téléphone via: Sudo service ssh start
Ensuite, copiez l'image via:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
où la variable COPYDIR
contient le répertoire dans lequel l'image doit être stockée. Cette commande suppose que votre nom d'utilisateur sur le téléphone est phablet et que le nom d'hôte du téléphone est ubuntu-phablet. Vous pouvez trouver les deux en émettant respectivement echo $USER
et echo $HOSTNAME
sur le téléphone.
Maintenant, il vous suffit d'extraire l'archive où vous voulez que l'image se trouve. Supposons que le répertoire dans lequel vous souhaitez que l'image soit localisée est stocké dans la variable IMAGEDIR
name__. Extrayez l'image via la commande bash:
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Vous pouvez maintenant supprimer l'archive:
rm $COPYDIR/jessie.tar.gz
Si vous n'avez pas activé le serveur ssh sur le téléphone, faites-le maintenant via:
Sudo service ssh start
Ensuite, montez votre image dans un répertoire de votre choix (dans le cas présent "jessie"):
Sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
Maintenant, entrez votre chroot pour la première fois via:
ssh localhost "Sudo chroot $(pwd)/jessie /bin/bash"
Si vous aviez qemu-debootstrap disponible sur votre ordinateur, vous avez terminé. Utilisez les 2 commandes ci-dessus pour vous connecter à votre chroot. Sinon, vous devez toujours exécuter la commande suivante une fois que vous êtes dans votre chroot, afin de configurer correctement le système d'exploitation:
/debootstrap/debootstrap --second-stage
Si vous avez suivi les étapes ci-dessus, vous devriez pouvoir accéder à votre chroot en utilisant ce script simple sur le téléphone:
#!/bin/bash
Sudo service ssh start
ssh localhost "Sudo chroot jessie /bin/bash"
Vous devez commencer par ssh sur votre propre téléphone à partir du téléphone en raison des restrictions imposées par l'application Terminal. L'application Terminal n'est autorisée qu'à exécuter des fichiers binaires à certains emplacements. Ni votre répertoire personnel, ni la carte SD ne font partie de ceux-ci. Le service SSH, cependant, n'a pas de telles restrictions.
Pour remonter le système de fichiers racine en écriture, exécutez la commande suivante sur votre téléphone (téléchargez application du terminal si ce n'est déjà fait):
Sudo mount -o remount,rw /
Veuillez noter que après le redémarrage de votre téléphone, /
est à nouveau en lecture seule . Si vous voulez que cela soit permanent, changez /etc/fstab
. Cependant, le contact avec Ubuntu sur le BQ n’est pas encore sur le dépôt principal de bras Ubuntu. L'installation d'éléments tels que tree
ou libreoffice
ne fonctionnera pas encore. Ils pourraient être dans la dernière version de développement.
(a plus de goodies dans le repo, comme les outils en ligne de commande et autres)
Comment exécuter la dernière version du développement tactile Ubuntu sur le téléphone bq?
Lorsque vous cassez complètement quelque chose, vous pouvez simplement reflasher votre appareil .