システム(CentOS 7)をPython 3.7にアップグレードしましたが、多くの問題が発生しているようです。特に、yumアップグレードを実行できません...
[myuser@server ~]$ Sudo yum upgrade
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.us-midwest-1.nexcess.net
* epel: mirror.layeronline.com
* extras: mirror.us-midwest-1.nexcess.net
* updates: mirror.us-midwest-1.nexcess.net
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
^
SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
^
SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
^
SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
^
SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
^
SyntaxError: invalid syntax
Exiting on user cancel
ここで痛みを癒す方法はありますか?
この問題を修正するには、CentOS 7に付属するPython 2.7を再インストールする必要があります。
(再インストールする必要がある理由、およびCentOSなどのディストリビューションでソフトウェアの新しいバージョンを管理する方法については、以下を参照してください。)
yum
は機能しないため、パッケージをダウンロードし、rpm
を直接使用して再インストールすることにより、ほとんどの作業を手動で行う必要があります。
たとえば、Python 2.7 RPMここにあります(x86_64上のCentOS 7の場合):
http://mirror.centos.org/centos/7/os/x86_64/Packages/python-2.7.5-76.el7.x86_64.rpm
wget
またはcurl
を使用してフェッチできます。
次に、ディレクトリをパッケージをダウンロードしたディレクトリに変更し、次を使用してインストールします。
$ Sudo rpm -Fvh --oldpackage python-*.rpm
(rpm -F
コマンド、-F
for "freshen"は、すでにインストールされているパッケージを更新します。--oldpackage
を使用すると、同じバージョンを再インストールしたり、古いバージョンをインストールしたりできます。ダウンロードしたバージョンよりも新しいパッケージのアップデートを入手した可能性があるため、可能です。)
多くのサブパッケージ(python-*
は明白なケースの1つですが、他にもある可能性があるため、これが必要なパッケージはこれだけではない可能性があります。python-libs
で始まるすべてのパッケージを確認することをお勧めします。 )も上書きされた可能性があります。それらは 同じ場所 からダウンロードできます(警告:ここに長いディレクトリリストがあるため、リスト全体を取得するには時間がかかる場合があります)。
--force
や--nodeps
などの追加オプションが必要になる場合がありますが、パッケージを再インストールしてPythonパッケージを上書きして2.7( CetnOSのわずかに古いバージョンの場合、すべての更新が含まれているわけではありません)。
python-*
に一致するすべてのパッケージを一覧表示するには、次を使用できます。
$ rpm -qa 'python-*'
特定のパッケージのファイルが以下で上書きされているかどうかを確認することもできます。
$ rpm -V python-libs
これにより、少なくとも1つの属性が変更されたパッケージ内のファイルが一覧表示されます。 5
としてリストされている属性は、ファイルのMD5チェックサムです。つまり、そのファイルの内容が変更されています。
十分なパッケージを復元したら、yum
をもう一度実行してみてください。パッケージが再度アップグレードされる可能性があります。
CentOSやそのアップストリームRHEL(Red Hat Enterprise Linux)などのオペレーティングシステムは、安定性と信頼性のために構築されています。もちろん、パッケージのバージョンが古くなることもありますが、すべてが動作するようにテストされていることを意味します。
ご覧のように、PythonはCentOS/RHELのかなり中心であり、他の多くのパッケージがそれに依存しています。まあ、パッケージ管理ソフトウェアもそうです。したがって、Pythonあなたが見たように、バージョンは確かにOSを壊します。
最新のPythonが同梱されているディストリビューションが必要な場合は、CentOS/RHELは必要ありません。 Fedora(CentOS/RHELに最も近いが6か月ごとにリリースされる)、Arch Linux(ローリングリリース)、または頻繁にリリースされる(通常6か月ごと)、またはローリングリリースディストリビューション(新しいパッケージが常にローリングされる)のいずれかを試してください。 。)
しかし、CentOSが本当に必要/必要であり(それには多くの正当な理由がある)、Python 3.7(または他のソフトウェアの最新バージョン))が必要な場合は、インストールを検討してください。 OSによって出荷されたバージョンに干渉しない方法で、そのバージョンをそのまま残します。
Python 3.7の特定の例では、/usr/local
、/opt/python-3.7
または同様のディレクトリにインストールします。ユーザーの$PATH
を設定して、そのバージョンを選択します= Pythonシステムの前にあります。/usr/bin/python
シンボリックリンクを微調整しないでください。代わりに、新しいバージョンではpython3
を使用してください。
CentOSまたは同様のLinuxディストリビューションでシステムにデプロイされたバージョンと並行してインストールする他のほとんどのソフトウェアにも同じアドバイスを使用できます。
注:誰かがまだそれを必要とする場合。
最後にMINEリンクではない
これがyum install <package-name>
(base) [root@localhost rstudio]# yum install shiny-server-1.5.9.923-x86_64.rpm
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax
原因分析yumはデフォルトでpython2をサポートしているため、python3にアップグレードするとエラーが発生します。 python2をビルドしてpython2に入ることができる場合
(base) [root@localhost rstudio]# python2
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
次に、yumコードpython to pythonを実装するように変更できます。
それを解決しましょう...
vi /usr/bin/yum
1行目の#!/ usr/bin/pythonを#!/ usr/bin/python2に変更します。
#!/usr/bin/python2
import sys
try:
import yum
except ImportError:
print >> sys.stderr, """\
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
インストールされているソフトウェアに関係なく、yumがエラーであることがわかりました。タイプは次のとおりです。
base) [root@localhost ~]# yum install yum-fastestmirror
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.huaweicloud.com
* updates: mirror.jdcloud.com
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
^
SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
^
SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
^
SyntaxError: invalid syntax
File "/usr/libexec/urlgrabber-ext-down", line 28
except OSError, e:
^
SyntaxError: invalid syntax
1, enter the edit urlgrabber-ext-down
2, change python to python2
#vi /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python >--Replace with -->#!/usr/bin/python2
追伸 Solution から、ほぼWordにコピーされます