Kali Linux上のPythonのバージョン設定で手こずったのでメモ。
###背景
Virtual Box上にKali Linuxをインストールし、Kali Linux上でsqlmapというツールを利用していた。そこでKali LinuxのPythonのバージョンを変更しようと思ったところドツボにハマった。
####Pythonのバージョンアップ
Kali Linux上のPython系のツール(sqlmap)がうまく動かないため、バージョンが原因と思い、Python2系からPython3系へバージョンアップしようと思い立った。(この浅はかな考えがまずかった)
┌──(root💀kali)-[~/bin]
└─# which python
/usr/bin/python
┌──(root💀kali)-[~/bin]
└─# which python2
/usr/bin/python2
┌──(root💀kali)-[~/bin]
└─# which python3
/usr/bin/python3
┌──(root💀kali)-[/home/kali]
└─# python --version
Python 2.7.18
┌──(root💀kali)-[/home/kali]
└─# python3 -V
Python 3.8.6 //すでにインストール済みであった
┌──(root💀kali)-[/home/kali]
└─# python2 -V
Python 2.7.18
確認したところ、現在はPython2.7.18
が適用されているが、Python3.8.6
もインストール済みであった。
####/usr/bin/python配下のファイルを確認
┌──(root💀kali)-[/home/kali]
└─# ls /usr/bin/python* 2 ⨯
/usr/bin/python /usr/bin/python3-config
/usr/bin/python2 /usr/bin/python3-futurize
/usr/bin/python2.7 /usr/bin/python3-pasteurize
/usr/bin/python3 /usr/bin/python3-qr
/usr/bin/python3.8 /usr/bin/python3-tor-prompt
/usr/bin/python3.8-config /usr/bin/python3-wsdump
/usr/bin/python3.9 /usr/bin/python-faraday
####Pythonバージョン変更
バージョン変更方法はupdate-alternatives
を利用する。Python2.7
とPython3.8
の優先度(Priority)を変更することでバージョンを変更する。
┌──(root💀kali)-[/home/kali]
└─# sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2
update-alternatives: renaming python link from /usr/bin/python3 to /usr/bin/python
//最後を2にする
┌──(root💀kali)-[/home/kali]
└─# sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
//最後を1にする
#update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.8 2 auto mode
* 1 /usr/bin/python2.7 1 manual mode
2 /usr/bin/python3.8 2 manual mode
Press <enter> to keep the current choice[*], or type selection number: 0
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in manual mode
####変更確認
┌──(root💀kali)-[/home/kali]
└─# python --version
Python 3.8.6
###ここで思わぬエラーに遭遇
バージョンアップした目的であったsqlmapを動かそうとすると以下のエラーが出て動かなくなる事態に。。。
┌──(root💀kali)-[/home/kali]
└─# sqlmap --version
zsh: /usr/bin/sqlmap: bad interpreter: /usr/bin/python3: no such file or directory
また、sqlmapはPython3系に対応していないということにここで気づく。(先にしっかり調べるべきだった)
ということで、update-alternatives
を使ってバージョンを元に戻す。
┌──(root💀kali)-[/home/kali]
└─# sudo update-alternatives --config python 127 ⨯
There are 2 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.8 2 auto mode
1 /usr/bin/python2.7 1 manual mode
2 /usr/bin/python3.8 2 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in manual mode
####バージョン確認
┌──(root💀kali)-[/home/kali]
└─# python --version
Python 2.7.18
無事にPython2.7.18
に戻りました。しかし、、、
┌──(root💀kali)-[/home/kali]
└─# sqlmap
zsh: /usr/bin/sqlmap: bad interpreter: /usr/bin/python3: no such file or directory
sqlmapが動かない!!!
Python2.7.18
に戻したのに、bad interpreter: /usr/bin/python3:
と出てくるのが怪しい。。。
####バージョン確認
┌──(root💀kali)-[/home/kali]
└─# which python3
python3 not found
┌──(root💀kali)-[/home/kali]
└─# python3 -V 1 ⨯
zsh: command not found: python3
Python3が見つからないとなるのが原因と思われる。
###解決方法
以下のコマンドを打つことで解決。
┌──(root💀kali)-[~/bin]
└─# ln -s /usr/bin/python /usr/bin/python3 127 ⨯
####確認
もう一度Python2.7.18に戻してから、無事sqlmapが動いた。
┌──(root💀kali)-[~/bin]
└─# sqlmap
___
__H__
___ ___[.]_____ ___ ___ {1.4.11#stable}
|_ -| . ['] | .'| . |
|___|_ ["]_|_|_|__,| _|
|_|V... |_| http://sqlmap.org
Usage: python3 sqlmap [options]
sqlmap: error: missing a mandatory option (-d, -u, -l, -m, -r, -g, -c, --list-tampers, --wizard, --update, --purge or --dependencies). Use -h for basic and -hh for advanced help
参考