Yum вылетел из-за ошибки прерывания клавиатуры

Я установил более новую версию 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

Посоветуйте, как устранить ошибку. Это было бы полезно, так как я не могу обновить или установить какой-либо пакет.


person SSAMEERR    schedule 26.06.2012    source источник
comment
Не заменяйте системный python на компьютере с Fedora. Вы должны были установить python3 как что-то вроде /usr/local/bin/python3.   -  person Wooble    schedule 26.06.2012
comment
В 2019 году, когда python2 практически объявлен устаревшим, не нужно беспокоиться о связывании исполняемого файла python3 с /usr/bin/python. Для пакета невероятно лениво иметь эту проблему, когда исправление буквально добавляет один символ в ваши файлы python2 (например, #!/usr/bin/python2 против #!/usr/bin/python)   -  person ThisGuyCantEven    schedule 19.03.2019


Ответы (7)


Поскольку yum не поддерживает Python3.
Вы можете запустить команду vi /usr/bin/yum, заменив /usr/bin/python на /usr/bin/python2 в первой строке.
Таким образом, вы можете запустить команду yum с помощью Python2 вместо Python3.

Обратите внимание, однако, что это сделает вашу установку неподдерживаемой и, следовательно, непригодной для сопровождения (как и то, что вы сделали). Скорее всего, в будущем у вас возникнут аналогичные проблемы с другими системными пакетами.
Если вы хотите использовать альтернативную установку Python, рассмотрите возможность установки ее в /usr/local, /opt или с помощью pyenv.

person peakmuma    schedule 09.05.2015
comment
Для пользователей AWS Linux 2 AMI: если вы также получаете ошибку OSError даже при обновлении /usr/bin/yum, убедитесь, что начало файла: /usr/libexec/urlgrabber-ext-down также изменено на python2 - person Gorkem; 13.12.2020

Эта проблема возникает, когда пользователь обновляется до 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 по умолчанию)

Спасибо, Даман

person Damanvir Singh    schedule 02.01.2018
comment
Я пробовал все решения, ваше помогло решить проблему. - person Amir Afianian; 22.05.2019
comment
Да, вы тот, кто решил проблему. Хорошая находка. Спасибо - person mahendra rathod; 28.05.2020

Я предполагаю, что вы установили Python 3.2.3 из исходного кода и использовали «make install» в качестве последней команды. У этой команды есть неприятный побочный эффект, заключающийся в замене установленной в системе версии команды «python» новой версией. Использование «make altinstall» не заменяет «python».

Команда «python» — это просто символическая ссылка на «python2», которая, в свою очередь, является символической ссылкой на «python2.7». Вы сможете восстановить «python», выполнив следующую команду:

cd /usr/bin
sudo ln -s python2 python
person casevh    schedule 27.06.2012
comment
Мне удалось сделать немного иначе: sudo ln -s python2.6 python - person yehudahs; 04.11.2014
comment
в 2019 году, когда python2 почти объявлен устаревшим, не нужно беспокоиться о связывании исполняемого файла python3 с /usr/bin/python. Для пакета невероятно лениво иметь эту проблему, когда исправление буквально добавляет один символ в ваши файлы python2 (например, #!/usr/bin/python2 против #!/usr/bin/python) - person ThisGuyCantEven; 19.03.2019
comment
@ThisGuyCantEven ОП упомянул, что это в Fedora 16 который является EOL, поскольку 02.2013. - person ivan_pozdeev; 08.10.2019
comment
Получил ошибку: ln: failed to create symbolic link ‘python’: File exists. Я должен использовать sudo ln -fs /usr/bin/python2 /usr/bin/python, чтобы заставить его работать. - person Searene; 04.03.2021

Спасибо Даманвир! Изменение строки в /usr/bin/yum сработало!

Это немного не по теме и может быть удалено, но это может помочь кому-то.

Это шаги, которые я использовал для установки Python 3.7 на Centos и исправления ошибки yum.

Загрузите с сайта https://www.python.org/.

tar -xvf
./configure --enable-optimizations

make
make install

OR

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

Измените верхнюю строку этого файла с использования python на python2.

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

Ссылка: https://tecadmin.net/install-python-3-7-on-centos/

person Code_Help    schedule 20.10.2018

Реальный ответ — убедиться, что вы вернулись к поддерживаемой версии Python (в случае, если вы ищете это для проблемы с RHEL 7).

cd /usr/bin
sudo unlink python
sudo ln -s python2 python
person TheGreatLuke    schedule 29.07.2020

Это только проблема с бинарной ссылкой. Вы можете скопировать рабочую /usr/bin/python2 из любой системы и скопировать в текущую системную папку /usr/bin/python2.

#cd /usr/bin

#ln -s python2 python
person Vikas Arora    schedule 10.04.2021

Ваш yum ищет python2. Давайте используем «альтернативы» для переключения python2 и python3.

  • запустить --› альтернативы sudo --config python
  • Введите, чтобы сохранить текущий выбор[+], или введите номер выбора:

Если не настроить. Как это сделать?

  • альтернативы sudo --install /usr/bin/python python /usr/local/bin/python3.8 60

  • альтернативы sudo --install /usr/bin/python python /usr/bin/python2 50

person mahesh nanayakkara    schedule 27.07.2021