J'ai utilisé la commande suivante pour vérifier les versions de python telles que données par cette réponse . Cela fonctionne sauf pour une erreur, illustrée ci-dessous. Quelqu'un peut-il expliquer pourquoi?
$ Sudo find / -type f -executable -iname 'python*' -exec file -i '{}' \; \
| awk -F: '/x-executable; charset=binary/ {print $1}' \
| xargs readlink -f | sort -u | xargs -I % sh -c 'echo -n "%: "; % -V'
Erreur:
find: ‘/run/user/1000/gvfs’: Permission denied
Les permissions:
$ stat -c %a /run/user/1000/gvfs
500
Ainsi, seul le propriétaire dispose de l'autorisation d'exécution (ce qui permet d'effectuer une recherche dans les répertoires). Mais vous avez utilisé Sudo
et root a toutes les autorisations possibles, non? En fait, vous avez trouvé l'exception:
Cette réponse par Gilles sous Unix et Linux SE explique pourquoi la permission est refusée pour root ce répertoire, qui est un point de montage pour Fuse:
La gestion des limites de confiance avec les systèmes de fichiers Fuse est difficile, car le pilote du système de fichiers s'exécute en tant qu'utilisateur non privilégié, par opposition au code du noyau des systèmes de fichiers traditionnels. Pour éviter les complications, par défaut, les systèmes de fichiers Fuse ne sont accessibles qu’à l’utilisateur exécutant le processus de pilote. Même root ne peut pas contourner cette restriction.
Si vous exécutez la commande find
sans Sudo
(en tant que votre propre utilisateur, UID 1000), vous n'obtiendrez pas cette erreur, car vous êtes propriétaire du répertoire, mais vous obtiendrez d'autres erreurs d'autorisation. Utilisez donc Sudo
et suivez les conseils de Gilles:
Si vous recherchez un fichier sur des systèmes de fichiers locaux uniquement, passez -xdev à rechercher.
Meilleure façon de vérifier les versions de python:
$ python --version
Python 2.7.12+
$ python3 --version
Python 3.5.2+
Il existe plusieurs façons de trouver quelle version de python vous avez. Voici deux manières d'obtenir les versions Python 2 et Python 3:
spécifique à Python
D'abord, lancez simplement python
et python3
avec l'option --version
$ python --version
Python 2.7.12
$ python3 --version
Python 3.5.2
Ceci est spécifique à Python, mais beaucoup d’autres programmes utilisent une méthode similaire.
Général pour tout package/programme
Une méthode plus générale consiste à voir quel paquet est installé. dpkg -l
listera tous vos paquets, mais vous pouvez spécifier les paquets que vous recherchez. Pour pythonuniquement _ et python3, utilisez les éléments suivants:
$ dpkg -l 'python'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=====================-===============-===============-================================================
ii python 2.7.11-1 AMD64 interactive high-level object-oriented language
$ dpkg -l 'python3'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=====================-===============-===============-================================================
ii python3 3.5.1-3 AMD64 interactive high-level object-oriented language
Comme un bonus supplémentaire. Si vous souhaitez rechercher tous les packages dont le nom commence par python
, vous pouvez utiliser le caractère générique *
comme ceci:
$ dpkg -l 'python*'
Cela va imprimer beaucoup de lignes avec des paquets.