Я наносил, ущерб путем выполнения “sudo склонный - получает чистку./python”?

Поскольку Вы знаете, что Ubuntu уже имеет python в нем. Однако я загрузил исходный код последних 3.5.1 версий и скомпилировал его использование

./configure
make
make test
sudo make install

Мой pwd в данный момент /home/SarpSTA/Downloads/Python-3.5.1

Я хотел работать purge на этой новой установке.

sudo apt-get purge python не сделал бы, так как его путь выполнял старую версию не новая установка. Так, в то время как все еще был в папке, я работал sudo apt-get purge ./python. Это создало очень длинный вывод, который был похож:

E: Release 'python' for 'package-name' was not found

для каждого пакета я установил на своем компьютере вместо package-name.

Я удалял что-то, или код был просто отказом?

6
задан 21 February 2016 в 06:22

3 ответа

Это не то, как это работает. Можно только использовать apt-get purge с пакетами, установленными APT или dpkg (пакеты Debian .deb). При компиляции программного обеспечения из источника, APT не будет отслеживать его.

, Если Вы все еще имеете свою папку исходного кода, cd в него и работаете sudo make uninstall. Эта команда должна удалить скомпилированное программное обеспечение.

, Если у Вас больше нет источника, я рекомендую Вам загрузить его снова, работать ./configure внутренняя часть он и затем sudo make uninstall.

Быть очень осторожны для не удаления установки Python по умолчанию . Это - очень важная часть Ubuntu, и у Вас будет поврежденная система при удалении его.

Так не, Вы не наносили ущерба путем выполнения sudo apt-get purge ./python, потому что пакет не мог быть найден.

15
ответ дан 23 November 2019 в 07:14

Нет. Эта команда не нанесла никакого ущерба. Он ничего не делал, но выдает сообщение об ошибке, указывающее, что не может выполнить задачу.

Что касается попытки удалить установленную версию, вам не нужно очищать ее, просто сделайте символическую ссылку на установленную версию, которую вы хотите использовать по умолчанию. Конечно, вы также можете вызвать python по полному пути установленной версии.

Пример:

$ /usr/bin/python3.7 myprogram.py

Подходящей командой для удаления будет присвоение имени пакета в качестве параметра удаления.

Пример удаления пакета:

$ sudo apt-get remove python

Вы можете узнать текущую символическую ссылку в вашей системе, выполнив:

$ ls -l /usr/bin/python*

Приведенная выше команда также покажет вам другие версии, которые случается быть установленным.

Конечно, многие программы используют шебанг (#!) для указания интерпретатора программы для запуска. Вы можете увидеть пример этого, выполнив эту команду:

$ egrep python * | egrep "/usr/bin/python"

Выходные данные вышеупомянутой команды покажут вам названия различных приложений Python с указанной версией для запуска. Программа и команда для запуска разделены двоеточием в списке.

7
ответ дан 23 November 2019 в 07:14

Чтобы понять, что apt-get purge ./python пытался сделать, давайте перейдем к man-странице . Во-первых, общий синтаксис:

apt-get [-asqdyfmubV] [-o=config_string] [-c=config_file]
        [-t=target_release] [-a=architecture] {update | upgrade |
        dselect-upgrade | dist-upgrade |
        install pkg [{=pkg_version_number | /target_release}]...  |
        remove pkg...  | purge pkg...  |
        source pkg [{=pkg_version_number | /target_release}]...  |

Вы увидите, что apt-get поддерживает указание целевого выпуска через /foo. Так, в ./python, apt-get интерпретируется python как целевой выпуск. Мы вернемся к этому через минуту.

А как насчет .? apt-get поддерживает регулярные выражения, и если имя пакета содержит ., * и т. Д., Оно будет обрабатывать его как регулярное выражение. И apt-get проверяет частичные совпадения - если данное выражение совпадает с частью имени пакета, этот пакет выбирается:

If no package matches the given expression and the expression
contains one of '.', '?' or '*' then it is assumed to be a POSIX
regular expression, and it is applied to all package names in the
database. Any matches are then installed (or removed). Note that
matching is done by substring so 'lo.*' matches 'how-lo' and
'lowest'. If this is undesired, anchor the regular expression with
a '^' or ' 

. соответствует каждому символу - так каждый [ 1119] имя пакета удовлетворит его. Поэтому apt-get выберет каждый пакет, о котором он знает.

Теперь, возвращаясь к целевому выпуску, он используется для указания, какой репозиторий вы хотите использовать для этой операции, если один и тот же пакет предоставляется несколькими репозиториями. См. Как устанавливать обновления только из определенного репозитория?

python не является допустимым выпуском в Ubuntu по умолчанию (и вряд ли будет таковым в любом случае). Таким образом, даже несмотря на то, что apt-get выбрал каждый пакет, о котором он знал , он не смог найти соответствующий релиз и, следовательно, потерпел неудачу.

character, or create a more specific regular expression.

. соответствует каждому символу - так каждый [ 1119] имя пакета удовлетворит его. Поэтому apt-get выберет каждый пакет, о котором он знает.

Теперь, возвращаясь к целевому выпуску, он используется для указания, какой репозиторий вы хотите использовать для этой операции, если один и тот же пакет предоставляется несколькими репозиториями. См. Как устанавливать обновления только из определенного репозитория?

python не является допустимым выпуском в Ubuntu по умолчанию (и вряд ли будет таковым в любом случае). Таким образом, даже несмотря на то, что apt-get выбрал каждый пакет, о котором он знал , он не смог найти соответствующий релиз и, следовательно, потерпел неудачу.

7
ответ дан 23 November 2019 в 07:14

Другие вопросы по тегам:

Похожие вопросы: