如您所知,Ubuntu 中已经有了python
。但是,我已经下载了最新的 3.5.1 版本的源代码并使用编译它
./configure
make
make test
sudo make install
Run Code Online (Sandbox Code Playgroud)
我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
.
我删除了什么还是代码只是失败?
Edu*_*ola 15
这不是它的工作原理。您只能使用apt-get purge
由 APT 或 dpkg 安装的软件包(Debian .deb 软件包)。如果您从源代码编译您的软件,APT 将不会跟踪它。
如果你还有你的源代码文件夹,cd
进入它并运行sudo make uninstall
. 这个命令应该删除编译的软件。
如果您不再拥有源代码,我建议您再次下载它,./configure
在其中运行,然后sudo make uninstall
.
要非常小心,不要删除默认的Python安装。它是 Ubuntu 的一个非常重要的部分,如果你删除它,你的系统就会损坏。
所以不,你没有通过运行造成任何损害sudo apt-get purge ./python
,因为找不到包。
不,那个命令没有造成任何损害。它什么也没做,只是给你一条错误消息,表明它无法执行任务。
至于尝试清除已安装的版本,您不必清除它,只需创建一个指向默认安装版本的符号链接即可。当然,您也可以通过已安装版本的完整路径名调用 python。
例子:
$ /usr/bin/python3.7 myprogram.py
Run Code Online (Sandbox Code Playgroud)
正确的卸载命令是将包名称作为 remove 参数。
删除包的示例:
$ sudo apt-get remove python
Run Code Online (Sandbox Code Playgroud)
你可以通过运行来告诉你系统上的当前符号链接:
$ ls -l /usr/bin/python*
Run Code Online (Sandbox Code Playgroud)
上面的命令还将向您显示碰巧安装的其他版本。
当然很多程序使用shebang( #!
)来指定要运行的程序解释器。您可以通过运行以下命令查看此示例:
$ egrep python * | egrep "/usr/bin/python"
Run Code Online (Sandbox Code Playgroud)
上述命令的输出将显示要运行的指定版本的各种 Python 应用程序的名称。要运行的程序和命令在列表中用冒号分隔。
要了解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}]... |
Run Code Online (Sandbox Code Playgroud)
你会看到它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.
Run Code Online (Sandbox Code Playgroud)
.
匹配每个字符 - 所以每个包名都会满足它。因此,apt-get
将选择它知道的每个包。
现在,回到目标版本,如果多个存储库提供相同的包,它用于指定要针对此操作的存储库。请参阅如何仅从特定存储库安装更新?
python
不是默认 Ubuntu 上的有效版本(而且不太可能是一个)。因此,即使apt-get
选择了它知道的每个包,它也找不到匹配的版本,因此失败了。
归档时间: |
|
查看次数: |
3128 次 |
最近记录: |