你知道 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
。
是我删除了某些东西还是代码本身失败了?
答案1
事实并非如此。您只能使用apt-get purge
APT 或 dpkg 安装的软件包(Debian .deb 软件包)。如果您从源代码编译软件,APT 将不会跟踪它。
如果你还有源代码文件夹,cd
请进入该文件夹并运行sudo make uninstall
。此命令应删除已编译的软件。
如果您不再有源代码,我建议您再次下载./configure
并在其中运行然后sudo make uninstall
。
是非常小心不要删除默认的 Python 安装。它是 Ubuntu 的一个非常重要的部分,如果删除它,您的系统就会崩溃。
因此,运行后您并没有造成任何损害sudo apt-get purge ./python
,因为找不到该包。
答案2
不会。该命令没有造成任何损害。它什么也没做,只是给你一个错误消息,表示它无法执行任务。
至于尝试清除已安装的版本,您不必清除它,只需创建指向您想要作为默认安装版本的符号链接即可。当然,您也可以通过已安装版本的完整路径名来调用 python。
例子:
$ /usr/bin/python3.7 myprogram.py
正确的卸载命令是将包名称作为删除参数。
删除包的示例:
$ sudo apt-get remove python
您可以通过运行以下命令来了解系统上的当前符号链接:
$ ls -l /usr/bin/python*
上述命令还将显示已安装的其他版本。
当然,许多程序使用 shebang ( #!
) 来指定要运行的程序解释器。您可以通过运行以下命令来查看此示例:
$ egrep python * | egrep "/usr/bin/python"
上述命令的输出将显示要运行的指定版本的各种 Python 应用程序的名称。列表中要运行的程序和命令以冒号分隔。
答案3
为了理解他们apt-get purge ./python
试图做什么,让我们来看一下手册页.一、一般语法:
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 '$' character, or create a more specific regular
expression.
.
匹配每个字符 - 所以每一个包名将满足要求。因此,apt-get
将选择它知道的每个包。
现在,回到目标版本,如果多个存储库提供相同的包,则它用于指定要针对此操作的存储库。 请参阅如何仅安装来自特定存储库的更新?
python
在默认的 Ubuntu 上不是一个有效的版本(而且无论如何也不可能是)。因此,即使apt-get
选择了它所知道的每个包,它找不到匹配的版本,因此失败。