【问题标题】:Yum crashed with Keyboard Interrupt errorYum 因键盘中断错误而崩溃
【发布时间】:2012-06-28 03:16:00
【问题描述】:

我安装的 python (3.2.3) 比 Fedora16 (python2.7) 中的版本更新

现在yum 停止工作。它显示以下错误。

[root@localhost yum-3.4.3]# yum
  File "/usr/bin/yum", line 30
   except KeyboardInterrupt, e:
                           ^
SyntaxError: invalid syntax

请告知如何解决该错误。这会很有帮助,因为我无法更新或安装任何软件包。

【问题讨论】:

  • 不要替换 Fedora 机器上的系统 python。您应该已将 python3 安装为 /usr/local/bin/python3 之类的东西。
  • 在 2019 年,python2 几乎被弃用,人们不必担心将 python3 可执行文件链接到 /usr/bin/python。当修复实际上是在您的 python2 文件中添加单个字符(即 #!/usr/bin/python2#!/usr/bin/python)时,出现此问题的包非常懒惰

标签: python-3.x redhat yum fedora16


【解决方案1】:

你的 yum 正在寻找 python2。让我们使用 'alternatives' 来 pythons2python3 之间切换。

  • 运行 --> sudo 替代 --config python
  • Enter 以保留当前选择[+],或输入选择编号:

如果你不配置它。该怎么做?

  • sudo 替代品 --install /usr/bin/python python /usr/local/bin/python3.8 60

  • sudo 替代品 --install /usr/bin/python python /usr/bin/python2 50

【讨论】:

    【解决方案2】:

    这只是一个二进制链接问题。您可以从任何系统复制工作的/usr/bin/python2 并复制到当前系统位置/usr/bin/python2

    #cd /usr/bin
    
    #ln -s python2 python
    

    【讨论】:

      【解决方案3】:

      真正的答案 - 确保您回到可支持的 python 版本(如果您正在查看此问题是否与 RHEL 7 有关)。

      cd /usr/bin
      sudo unlink python
      sudo ln -s python2 python
      

      【讨论】:

        【解决方案4】:

        因为yum不支持Python3
        您可以运行命令vi /usr/bin/yum,将第一行中的/usr/bin/python 更改为/usr/bin/python2
        因此,您可以通过Python2 而不是Python3 运行命令yum

        但是请注意,这将使您的设置不受支持,因此无法维护(就像您所做的那样)。将来您可能会在使用其他系统包时遇到其他类似问题。
        如果您想使用替代 Python 安装,请考虑将其安装到 /usr/local/opt 或使用 pyenv

        【讨论】:

        • 对于 AWS Linux 2 AMI 用户:如果您在更新 /usr/bin/yum 时也遇到 OSError,请确保文件开头:/usr/libexec/urlgrabber-ext-down 也被编辑为 python2
        【解决方案5】:

        感谢达曼维尔!更改 /usr/bin/yum 中的行有效!

        这有点离题,可能会被删除,但它可能会对某人有所帮助。

        这些是我用来在 Centos 上安装 Python 3.7 并修复 yum 错误的步骤。

        https://www.python.org/下载

        tar -xvf
        ./configure --enable-optimizations
        
        make
        make install
        

        make altinstall
        

        make altinstall 用于防止替换默认的python二进制文件/usr/bin/python。

        cd /usr/bin
        

        删除当前符号链接到以前的版本

        rm python
        

        输出:rm:删除符号链接“python”?是的

        找到新版本的位置

        whereis python3.7
         OUTPUT: python3: /usr/local/bin/python3.7
        

        验证这是正确的

          /usr/local/bin/python3.7 --version
          OUTPUT: Python 3.7.0
        

        创建指向新版本位置的符号链接

        ln -s /usr/local/bin/python3.7 python
        
        python --version
        

        输出:Python 3.7.0

        yum 命令会显示如下错误:

          File "/bin/yum", line 30
              except KeyboardInterrupt, e:
        
          SyntaxError: invalid syntax
        

        将此文件的第一行从 using python 更改为 python2

          vi /usr/bin/yum 
            #!/usr/bin/python2
        

        参考:https://tecadmin.net/install-python-3-7-on-centos/

        【讨论】:

          【解决方案6】:

          当用户升级到 python3 时会出现这个问题,只需简单地编辑文件 --> /usr/bin/yum 并将第一行更改为 --> "#!/usr/bin/python2"

          上述解决方案并不能解决所有的 yum 依赖问题,最好运行以下命令。

          sudo ln -s /usr/local/bin/python3 /usr/bin/python3(将最新的python标记为python3)

          sudo ln -sf /usr/bin/python2.7 /usr/bin/python (nake 2.7 作为默认 python)

          谢谢, 达曼

          【讨论】:

          • 我尝试了所有解决方案,您的解决方案是解决问题的方法。
          • 是的,你是解决问题的人。很好的发现。谢谢
          【解决方案7】:

          我猜你是从源代码安装 Python 3.2.3 并使用“make install”作为最后一个命令。该命令具有将系统安装版本命令“python”替换为新版本的不幸副作用。使用“make altinstall”不会取代“python”。

          命令“python”只是一个指向“python2”的符号链接,而后者又是一个指向“python2.7”的符号链接。您应该可以通过执行以下命令来恢复“python”:

          cd /usr/bin
          sudo ln -s python2 python
          

          【讨论】:

          • 我设法做了一些不同的事情:sudo ln -s python2.6 python
          • 在 2019 年,python2 几乎被弃用,人们不必担心将 python3 可执行文件链接到/usr/bin/python。当修复实际上是在您的 python2 文件中添加单个字符(即 #!/usr/bin/python2#!/usr/bin/python)时,出现此问题的包非常懒惰
          • @ThisGuyCant 甚至 OP 都提到这是在 Fedora 16 which is EOL 中,因为 02.2013
          • 遇到错误:ln: failed to create symbolic link ‘python’: File exists。我必须使用sudo ln -fs /usr/bin/python2 /usr/bin/python 才能使其工作。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-04
          • 1970-01-01
          • 1970-01-01
          • 2017-09-28
          • 2017-08-21
          • 2014-01-20
          相关资源
          最近更新 更多