Я использовал следующую команду для проверки версий Python, как дано этим ответом. Это действительно работает за исключением одной ошибки, показанной ниже. Кто-либо может объяснить почему?
$ 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'
Ошибка:
find: ‘/run/user/1000/gvfs’: Permission denied
Полномочия:
$ stat -c %a /run/user/1000/gvfs
500
Поэтому только владелец имеет, выполняют разрешение (который позволяет каталогам искаться). Но, Вы использовали sudo
, и корень имеет все возможные полномочия, правильно? На самом деле Вы нашли исключение:
Этот ответ Gilles на Unix and Linux SE объясняет, почему разрешение отклонено для корня, что каталог, который является точкой монтирования для FUSE:
Управление доверяет границам файловые системы FUSE, является трудным, потому что драйвер файловой системы работает как непривилегированный пользователь, в противоположность коду ядра для традиционных файловых систем. Для предотвращения сложностей, по умолчанию, файловые системы FUSE только доступны для пользователя, выполняющего процесс драйвера. Даже корень не добирается для обхода этого ограничения.
, Если Вы работаете эти find
команда без sudo
(как Ваш собственный пользователь, UID 1000) Вы не получите ту ошибку, потому что Вы владеете каталогом, но Вы получите другие ошибки разрешения вместо этого, таким образом, используйте sudo
и послушайте совет Gilles:
<час>при поиске файла в локальных файловых системах только передайте-xdev для нахождения.
Самый Легкий способ проверить версии Python:
$ python --version
Python 2.7.12+
$ python3 --version
Python 3.5.2+
Существует несколько способов найти, какую версию Python Вы имеете. Вот два способа, которыми Вы получите и версии Python 2 и Python 3:
Python, Конкретный
Первый просто, работает python
и python3
с опцией --version
$ python --version
Python 2.7.12
$ python3 --version
Python 3.5.2
, Это специфично для Python, но много других программ использует похожий метод.
Общий для любого пакета/программы
А более общий метод состоит в том, чтобы видеть, какой пакет установлен. dpkg -l
перечислит все Ваши пакеты, но можно указать, какие пакеты Вы ищете. Поскольку просто Python и python3 используют следующее:
$ 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
Как дополнительный лакомый кусочек. Если требуется найти все пакеты, который имеет имя, запускающееся с python
, можно использовать подстановочный символ *
как это:
$ dpkg -l 'python*'
, Который распечатает много строк с пакетами.