[スポンサーリンク]
デフォルトのPythonのバージョンを確認
先日、Python3.Xをインストールしました
現在はPython2.XとPython3.X、共存している状況です
デフォルトのPythonは、Python3.Xをインストールしただけは変更されません
従って、python -versionの結果は、Python2.Xとなります
1 |
python2 --version |
1 2 |
# python2 --version Python 2.7.5 |
1 |
python3 --version |
1 2 |
# python3 --version Python 3.6.8 |
1 |
python --version |
1 2 |
# python --version Python 2.7.5 |
[スポンサーリンク]
Pythonのシンボリックリンクを切り替え
変更前のPythtonのシンボリックリンクを確認
Pythonのシンボリックリンクは、/usr/bin配下にあります
この環境の場合、デフォルトはpython2.Xのままであることが分かります
python -> python2
python2 -> python2.7
python3 -> python3.6
1 |
ls -trl /usr/bin | grep python |
1 2 3 4 5 6 7 8 9 10 11 12 |
# ls -trl /usr/bin | grep python -rwxr-xr-x. 1 root root 7216 8月 7 2019 python2.7 -rwxr-xr-x. 1 root root 3403 8月 8 2019 python3.6m-x86_64-config -rwxr-xr-x. 1 root root 173 8月 8 2019 python3.6m-config -rwxr-xr-x. 2 root root 11408 8月 8 2019 python3.6m -rwxr-xr-x. 2 root root 11408 8月 8 2019 python3.6 -rwxr-xr-x. 1 root root 11232 8月 13 2019 abrt-action-analyze-python lrwxrwxrwx. 1 root root 9 11月 26 23:15 python2 -> python2.7 lrwxrwxrwx. 1 root root 7 11月 26 23:15 python -> python2 lrwxrwxrwx. 1 root root 9 11月 30 15:54 python3 -> python3.6 lrwxrwxrwx. 1 root root 17 11月 30 15:54 python3.6-config -> python3.6m-config lrwxrwxrwx. 1 root root 16 11月 30 15:54 python3-config -> python3.6-config |
Pythtonのシンボリックリンクを切り替える
unlinkコマンド、linkコマンドのsオプションで、pythonのリンクを切り替えます
今回は、python -> python2のリンクを削除後、python -> python3のリンクを作成します
1 |
unlink /usr/bin/python |
1 2 3 4 5 6 7 8 9 10 11 12 |
# unlink /usr/bin/python # ls -trl /usr/bin | grep python -rwxr-xr-x. 1 root root 7216 8月 7 2019 python2.7 -rwxr-xr-x. 1 root root 3403 8月 8 2019 python3.6m-x86_64-config -rwxr-xr-x. 1 root root 173 8月 8 2019 python3.6m-config -rwxr-xr-x. 2 root root 11408 8月 8 2019 python3.6m -rwxr-xr-x. 2 root root 11408 8月 8 2019 python3.6 -rwxr-xr-x. 1 root root 11232 8月 13 2019 abrt-action-analyze-python lrwxrwxrwx. 1 root root 9 11月 26 23:15 python2 -> python2.7 lrwxrwxrwx. 1 root root 9 11月 30 15:54 python3 -> python3.6 lrwxrwxrwx. 1 root root 17 11月 30 15:54 python3.6-config -> python3.6m-config lrwxrwxrwx. 1 root root 16 11月 30 15:54 python3-config -> python3.6-config |
1 |
ln -s /usr/bin/python3 /usr/bin/python |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# ls -trl /usr/bin | grep python -rwxr-xr-x. 1 root root 7216 8月 7 2019 python2.7 -rwxr-xr-x. 1 root root 3403 8月 8 2019 python3.6m-x86_64-config -rwxr-xr-x. 1 root root 173 8月 8 2019 python3.6m-config -rwxr-xr-x. 2 root root 11408 8月 8 2019 python3.6m -rwxr-xr-x. 2 root root 11408 8月 8 2019 python3.6 -rwxr-xr-x. 1 root root 11232 8月 13 2019 abrt-action-analyze-python lrwxrwxrwx. 1 root root 9 11月 26 23:15 python2 -> python2.7 lrwxrwxrwx. 1 root root 9 11月 30 15:54 python3 -> python3.6 lrwxrwxrwx. 1 root root 17 11月 30 15:54 python3.6-config -> python3.6m-config lrwxrwxrwx. 1 root root 16 11月 30 15:54 python3-config -> python3.6-config lrwxrwxrwx. 1 root root 16 4月 19 15:39 python -> /usr/bin/python3 # |
尚、linkコマンド、unlinkコマンドのヘルプは以下の内容となっています
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# ln --help 使用法: ln [OPTION]... [-T] TARGET LINK_NAME (1番目の形式) または: ln [OPTION]... TARGET (2番目の形式) または: ln [OPTION]... TARGET... DIRECTORY (3番目の形式) または: ln [OPTION]... -t DIRECTORY TARGET... (4番目の形式) In the 1st form, create a link to TARGET with the name LINK_NAME. In the 2nd form, create a link to TARGET in the current directory. In the 3rd and 4th forms, create links to each TARGET in DIRECTORY. Create hard links by default, symbolic links with --symbolic. By default, each destination (name of new link) should not already exist. When creating hard links, each TARGET must exist. Symbolic links can hold arbitrary text; if later resolved, a relative link is interpreted in relation to its parent directory. Mandatory arguments to long options are mandatory for short options too. --backup[=CONTROL] 対象ファイルが存在する時にバックアップを作成する -b --backup と同様だが引数を取らない -d, -F, --directory スーパーユーザがディレクトリに対するハードリンク を作成することを許可する。(備考: スーパーユーザ であってもシステムの制限で失敗することがある) -f, --force 対象ファイルが存在する時に削除する -i, --interactive prompt whether to remove destinations -L, --logical dereference TARGETs that are symbolic links -n, --no-dereference treat LINK_NAME as a normal file if it is a symbolic link to a directory -P, --physical make hard links directly to symbolic links -r, --relative create symbolic links relative to link location -s, --symbolic make symbolic links instead of hard links -S, --suffix=SUFFIX override the usual backup suffix -t, --target-directory=DIRECTORY specify the DIRECTORY in which to create the links -T, --no-target-directory treat LINK_NAME as a normal file always -v, --verbose print name of each linked file --help この使い方を表示して終了する --version バージョン情報を表示して終了する The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX. The version control method may be selected via the --backup option or through the VERSION_CONTROL environment variable. Here are the values: none, off バックアップを作成しない (--backup を付けた時でも) numbered, t 番号付きバックアップを作成する existing, nil 番号付きバックアップがあれば番号付き、 そうでなければ、simple で作成する simple, never 常に簡易バックアップを作成 Using -s ignores -L and -P. Otherwise, the last option specified controls behavior when a TARGET is a symbolic link, defaulting to -P. GNU coreutils online help: <http://www.gnu.org/software/coreutils/> ln の翻訳に関するバグは <http://translationproject.org/team/ja.html> に連絡してください。 完全な文書を参照する場合は info coreutils 'ln invocation' を実行してください。 |
1 2 3 4 5 6 7 8 9 10 11 |
# unlink --help 使用法: unlink FILE または: unlink OPTION 指定した FILE を削除するために unlink 関数を呼び出します。 --help この使い方を表示して終了する --version バージョン情報を表示して終了する GNU coreutils online help: <http://www.gnu.org/software/coreutils/> unlink の翻訳に関するバグは <http://translationproject.org/team/ja.html> に連絡してください。 完全な文書を参照する場合は info coreutils 'unlink invocation' を実行してください。 |
変更後のPythtonのシンボリックリンクを確認
python –versionの結果がPython3.Xとなっていることを確認します
これで、pythonコマンドでPython3.Xが起動します
1 2 |
# python2 --version Python 2.7.5 |
1 2 |
# python3 --version Python 3.6.8 |
1 2 |
# python --version Python 3.6.8 |
[スポンサーリンク]
デフォルトをPython3.Xにしてもyumコマンドが使えるようにする
Python3.Xにするとyumコマンドでシンタックスエラーが発生
デフォルトのPythonをPython3.Xに切り替えると、yumコマンドが使えなくなります
これは有名な事象で、インターネット上に情報が沢山あります
この環境ではyumは3.4.3ですが、やはりエラーとなります
試しに、yum list installedを実行しましたが、シンタックスエラーが発生しました
yumはPython2.Xで作られているので仕方がないです
尚、yum自体はPython3.Xで動作する改修はないです
dnfコマンドが次世代yumとして使用されます
dnfコマンドのラッパーとしてyumコマンドは使えるらしいので、あまり気にならないかも知れませんが
1 2 3 4 5 |
# yum list installed File "/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxError: invalid syntax |
yum自身のバージョンは、–versionオプションで確認出来ます
1 |
yum --version |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# yum --version 3.4.3 インストール: rpm-4.11.3-40.el7.x86_64 (日時: 2019-11-26 14:18) 構築 : CentOS BuildSystem <http://bugs.centos.org> (日時: 2019-08-06 22:50) コミット : Pavlina Moravcova Varekova <pmoravco@redhat.com> (日時: 2019-05-26) インストール: yum-3.4.3-163.el7.centos.noarch (日時: 2019-11-26 14:18) 構築 : CentOS BuildSystem <http://bugs.centos.org> (日時: 2019-08-08 11:57) コミット : CentOS Sources <bugs@centos.org> (日時: 2019-08-06) インストール: yum-plugin-fastestmirror-1.1.31-52.el7.noarch (日時: 2019-11-26 14:18) 構築 : CentOS BuildSystem <http://bugs.centos.org> (日時: 2019-08-09 03:26) コミット : Michal Domonkos <mdomonko@redhat.com> (日時: 2019-04-26) |
/usr/bin/yumを編集
/usr/bin/yumを確認すると、1行目にpythonの指定が記載されています
#!/usr/bin/pythonの先が、Python2.XからPython3.Xに変わったのでエラーになっています
なので、Python2.Xを使用するように変更します
今回は、#!/usr/bin/pythonの記載を、#!/usr/bin/python2に変更します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# cat /usr/bin/yum #!/usr/bin/python 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: %s Please install a package which provides this module, or verify that the module is installed correctly. It's possible that the above module doesn't match the current version of Python, which is: %s If you cannot solve this problem yourself, please go to the yum faq at: http://yum.baseurl.org/wiki/Faq """ % (sys.exc_value, sys.version) sys.exit(1) sys.path.insert(0, '/usr/share/yum-cli') try: import yummain yummain.user_main(sys.argv[1:], exit_code=True) except KeyboardInterrupt, e: print >> sys.stderr, "\n\nExiting on user cancel." sys.exit(1) # |
1 2 3 4 5 6 7 8 9 10 |
# cp /usr/bin/yum /usr/bin/yum_old$(date +%Y%m%d%H%M) # ls -trl /usr/bin | grep yum -rwxr-xr-x. 1 root root 801 8月 8 2019 yum -rwxr-xr-x. 1 root root 11115 8月 9 2019 yumdownloader -rwxr-xr-x. 1 root root 11031 8月 9 2019 yum-groups-manager -rwxr-xr-x. 1 root root 7903 8月 9 2019 yum-debug-restore -rwxr-xr-x. 1 root root 8538 8月 9 2019 yum-debug-dump -rwxr-xr-x. 1 root root 9579 8月 9 2019 yum-config-manager -rwxr-xr-x. 1 root root 10189 8月 9 2019 yum-builddep -rwxr-xr-x. 1 root root 801 4月 19 15:53 yum_old202004191553 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# cat /usr/bin/yum #!/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: %s Please install a package which provides this module, or verify that the module is installed correctly. It's possible that the above module doesn't match the current version of Python, which is: %s If you cannot solve this problem yourself, please go to the yum faq at: http://yum.baseurl.org/wiki/Faq """ % (sys.exc_value, sys.version) sys.exit(1) sys.path.insert(0, '/usr/share/yum-cli') try: import yummain yummain.user_main(sys.argv[1:], exit_code=True) except KeyboardInterrupt, e: print >> sys.stderr, "\n\nExiting on user cancel." sys.exit(1) # |
yumコマンドが、Python2.Xで起動するようになったので、問題なく動作します
これで、PythonのデフォルトをPython3.Xに変更出来、yumコマンドも使えるようになりました
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# yum list installed 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: mirrors.aliyun.com * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp インストール済みパッケージ GConf2.x86_64 3.2.6-8.el7 @anaconda GeoIP.x86_64 1.5.0-14.el7 @base ModemManager.x86_64 1.6.10-3.el7_6 @base ModemManager-glib.x86_64 1.6.10-3.el7_6 @base NetworkManager.x86_64 1:1.18.0-5.el7_7.1 @updates 【略】 yum-metadata-parser.x86_64 1.1.4-10.el7 @anaconda yum-plugin-fastestmirror.noarch 1.1.31-52.el7 @base yum-utils.noarch 1.1.31-52.el7 @base zenity.x86_64 3.28.1-1.el7 @base zip.x86_64 3.0-11.el7 @anaconda zlib.x86_64 1.2.7-18.el7 @base |
[スポンサーリンク]
コメント