运行“sudo apt-get purge ./python”会造成任何损害吗?

运行“sudo apt-get purge ./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

是我删除了某些东西还是代码本身失败了?

答案1

事实并非如此。您只能使用apt-get purgeAPT 或 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。因此,在中./pythonapt-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选择了它所知道的每个包,它找不到匹配的版本,因此失败。

相关内容