web-dev-qa-db-fra.com

Méthode recommandée pour installer des paquets (cli) .deb normaux sur Ubuntu Phone?

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.

12
jangorecki

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.

17
dobey

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.

4
Ezio Somà

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.

Création et remplissage du fichier image sur un ordinateur de bureau

Création d'un fichier image vide

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.

Création d'un système de fichiers sur l'image

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 LOOPname__:

$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.

Montez le fichier image sur l'ordinateur pour y accéder

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 pwdveillera à ce que vous donniez à mount un chemin absolu vers votre répertoire de travail actuel.

Remplissage de l'image avec le nouveau système d'exploitation avec qemu-debootstrap

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 jessiereprésente la version du système d'exploitation, tandis que le second jessierepré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.

Remplissage de l'image avec le nouveau système d'exploitation sans qemu-debootstrap

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 debootstrapname__. 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

Transférer une image sur le téléphone

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 COPYDIRcontient 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 IMAGEDIRname__. 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

Finalisation et utilisation de l'image sur le téléphone

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

Résumé de l'accès au chroot

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.

3
RaZziel

Rendre le système de fichiers racine sur le téléphone accessible en écriture

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.

Exécution de la dernière version de développement d'Ubuntu

(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?

Réparer des trucs quand on casse tout

Lorsque vous cassez complètement quelque chose, vous pouvez simplement reflasher votre appareil .

1
Galgalesh