Moi aussi je rencontre cette erreur dans GNURoot. J'ai recherché sur Google et j'ai vu votre question postée dans de nombreux forums Stack. Je voulais passer de armel à armhf et j'ai suivi les instructions sur le site de Debian mais je suis tombé sur l'erreur que vous avez mentionnée. Ce que j'ai dû faire était chown u+s /usr/bin/mandb
. L'erreur est encore apparue mais tout fonctionnait comme un charme.
Je pense que vous devez chmodrer dpkg à nouveau et tout fonctionnera bien. Au fait, je suis encore sous KitKat.
Éditer: Après des tests et une utilisation plus poussée de gnuroot, il s'avère que la méthode que j'ai mentionnée pour contourner l'erreur de permission refusée ne résout pas tous les problèmes. Après avoir examiné /etc/fstab
dans l'environnement proot, il n'y a pas de points de montage. Si vous exécutez la commande mount à partir du terminal gnuroot, vous remarquerez qu'elle affichera les points de montage du système hôte. De même, vous remarquerez qu'en exécutant chmod 4777 /
ou chmod u+s /
l'erreur de permission refusée apparaîtra. Si vous exécutez ls -l /acct
, il listera le /acct
du système hôte et non du proot.
Je n'ai pas testé cela mais puisque l'environnement proot a besoin des drapeaux suid, vous devrez décompresser l'image d'amorçage de votre appareil Android, modifier le fstab et modifier les options de montage en supprimant l'option nosuid, recompresser et flasher l'image d'amorçage pour résoudre votre problème. Le remontage dans le terminal en tant que root (et non proot) ne résout pas le problème car même après le remontage, le fichier fstab reste le même.
En passant, c'est juste ma théorie et j'éditerai la réponse si cela fonctionne parfaitement.
Une citation extraite d'une réponse sur reddit
Si vous avez root, chroot. En bref, un chroot générera des processus directement dans l'espace utilisateur Linux tandis qu'un proot le fera à partir de l'environnement Android et sera limité par les limitations des ressources Android. Un chroot peut également fonctionner plus étroitement avec un environnement de bureau; gestionnaires de fenêtres complets, navigateurs, etc. Peut même exécuter Java et Android Studio.
Linux Deploy est différent de Gnuroot car Linux Deploy utilise chroot tandis que gnuroot utilise proot, c'est la raison pour laquelle ils fonctionnent différemment.
Éditer2: Après des tests encore plus poussés, j'ai découvert que je devais exécuter apt-get install fakeroot
puis fakeroot /bin/bash
Après avoir exécuté ces commandes, l'erreur a disparu. Il s'est avéré que le chmoding ne résolvait pas entièrement l'erreur. De plus, si vous rencontrez des erreurs d'installation, essayez d'exécuter fakeroot /bin/sh
ou fakeroot /bin/dash
Preuve que fakeroot fonctionne je suis maintenant sous debian 10 (buster) après des mises à jour patientes.
Gnu root debian est comme Termux mais pour les anciennes versions d'Android. En ce qui concerne la question de l'appel du binaire su depuis l'intérieur de proot, vous devez installer le binaire tsu. Puisque gnuroot n'a pas de pkg
dans termux, le même binaire peut être installé via python2. Alors installez d'abord Python pip puis exécutez pip install tsu
puis exécutez le binaire tsu et peut-être aurez-vous de la chance et obtiendrez des permissions root réelles. Cela ne fonctionnera pas sur la version stock wheezy (je l'ai testée) debian mais essayez de passer à jessie ou stretch et peut-être que vous aurez de la chance.
2 votes
Vous n'avez pas besoin de
proot
si votre appareil est rooté. Et vous n'avez pas besoin d'une application pour exécuter une distribution Linux sur Android. Il vous suffit de télécharger le rootfs et de créer un simple script shell pour démarrer et arrêter l'environnement Linux depuisadb shell
ou n'importe quelle application d'émulateur de terminal. J'utilise Ubuntu, ArchLinux et Void Linux de la même manière sur Termux etssh
depuis des années. Tout ce que vous avez à faire est quelques montages de bind et un chroot. Le montage des namespaces ajoute une isolation supplémentaire. J'ai compilé mon noyau avec le support des namespaces réseau, pid et uts pour isoler davantage les deux environnements.0 votes
Diable j'ai besoin d'un tutoriel là-dessus!!
1 votes
Je ne suis pas sûr pourquoi vous obtenez une autorisation refusée. mais
sudo apt-get
fonctionne correctement ici (j'utilise l'application Linux Deploy via dropbearmulti ssh sur un émulateur de terminal, Android 7, paramètres : espaces de noms globaux dans l'application root, permissif dans l'application SelinuxModeChanger)