Redhat系OS環境(Fedora, CentOS, Redhat等)にコマンドラインツール群をインストールする方法をまとめます。Cisco DevNetの学習を行うには、git, python3, python2あたりをよく使います。Redhat系OSはパッケージ管理システムが優れていますので、コマンド1つで容易にインストールできます。
操作コマンドはCentOS8.2を前提としています。ディストリビューションによって、若干コマンドが変わる可能性がある事をご了承ください。
Git インストール
Cisco CCNA DevNetの学習ではGitをよく使用します。Gitをインストールしておきましょう。
dnf install git
動作確認としてリポジトリのクローンが可能な事も確かめておきましょう。
[root@centos82 ~]# git clone https://github.com/CiscoDevNet/dne-dna-code Cloning into 'dne-dna-code'... remote: Enumerating objects: 1504, done. remote: Total 1504 (delta 0), reused 0 (delta 0), pack-reused 1504 Receiving objects: 100% (1504/1504), 2.49 MiB | 1.98 MiB/s, done. Resolving deltas: 100% (751/751), done.
Python3 インストール
Python3.6 インストール
Python3を導入します。
dnf install python3
Python3が導入された事を確認します。
[root@centos82 ~]# python3 --version Python 3.6.8
Python3.8 インストール
Python3.6ではなく最新のPython3.8系を使用したい方は、以下コマンドでPython3.8も導入可能です。なお、Python3.6とPython3.8は共存可能です。
dnf install python38
Python3.8が導入された事を確認します。
[root@centos82 ~]# python3.8 --version Python 3.8.0
Python3 venvの動作確認
pythonはvenvと呼ばれる機能を使うと、pythonの仮想的な実行環境を作る事ができます。この実行環境を複数作る事ができれば、機能別にpython実行環境を作ったり、段階的なバージョンアップを実現できたりします。
それではvenvが使用できるかどうか動作確認してみましょう。
まずは何らかの名前でvenvの環境を作ります。Python3.6とPython3.8の2つの環境を作成する例を紹介します。以下コマンドは環境名をpy36-sampleとpython38-sampleとしていますが、名前は好きなものにして差支えございません。
python3 -m venv py36-sample python3.8 -m venv py38-sample
py3-sampleというディレクトリが作成された事を確認します。venvは仮想的なpython実行環境ですので、作成だけでなく削除も用意です。この環境が不要になった時はディレクトリごと削除すれば、跡形もなく削除処理が完了します。
[root@centos82 ~]# ls -l 合計 8 -rw-------. 1 root root 1360 8月 30 22:09 anaconda-ks.cfg drwxr-xr-x 15 root root 4096 9月 2 14:13 dne-dna-code drwxr-xr-x 5 root root 74 9月 2 14:23 py36-sample drwxr-xr-x 5 root root 74 9月 2 14:23 py38-sample
venvを使用するには、bin/activateというスクリプトを読み込みます。ターミナルに(py38-sample)と現在有効になっているvenv環境が表示される事にも着目ください。
[root@centos82 ~]# source py38-sample/bin/activate (py38-sample) [root@centos82 ~]# python --version Python 3.8.0 (py38-sample) [root@centos82 ~]#
動作確認のために、いくつかpythonモジュールをインストールしてみましょう。
(py38-sample) [root@centos82 ~]# pip install ansible Collecting ansible Downloading https://files.pythonhosted.org/packages/32/62/eec759cd8ac89a866df1aba91abf785486fed7774188a41f42f5c7326dcb/ansible-2.9.13.tar.gz (14.3MB) |████████████████████████████████| 14.3MB 5.8MB/s Collecting jinja2 (from ansible) Downloading https://files.pythonhosted.org/packages/30/9e/f663a2aa66a09d838042ae1a2c5659828bb9b41ea3a6efa20a20fd92b121/Jinja2-2.11.2-py2.py3-none-any.whl (125kB) |████████████████████████████████| 133kB 4.7MB/s <omitted> Installing collected packages: MarkupSafe, jinja2, PyYAML, pycparser, cffi, six, cryptography, ansible Running setup.py install for PyYAML ... done Running setup.py install for ansible ... done Successfully installed MarkupSafe-1.1.1 PyYAML-5.3.1 ansible-2.9.13 cffi-1.14.2 cryptography-3.1 jinja2-2.11.2 pycparser-2.20 six-1.15.0 WARNING: You are using pip version 19.2.3, however version 20.2.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
インポートしたモジュールが使える事を確認します。
(py38-sample) [root@centos82 ~]# ansible -m ping localhost [WARNING]: No inventory was parsed, only implicit localhost is available localhost | SUCCESS => { "changed": false, "ping": "pong" }
venvの使用を終えるにはdeavtivateというコマンドを入力します。
deactivate
deactivateすると、さきほどvenvに対してインストールしたモジュールが使えなくなっている事が分かります。
[root@centos82 ~]# ansible -m ping localhost -bash: ansible: コマンドが見つかりません
Python2 インストール
Python2 インストール
Python2を導入します。
Redhat7系の頃は「yum install python virtualenv」と入力します。
dnf install python2 python2-virtualenv
Python2が導入された事を確認します。
[root@centos82 ~]# python2 --version Python 2.7.17
Python2 venvの動作確認
Python2もvenvの作成が可能です。若干の注意が必要な点は、Python3で仮想環境を作るモジュールの名前は「venv」であるのに対し、Python2で仮想環境を作るモジュールの名前は「virtualenv」です。Python2からPython3にバージョンアップする時にモジュール名が変わっている事に注意ください。
Python2のvenv環境を作るコマンドの例は以下の通りです。
python2 -m virtualenv py2-sample
venvを使用するには、bin/activateというスクリプトを読み込みます。ターミナルに(py2-sample)と現在有効になっているvenv環境が表示される事にも着目ください。
[root@centos82 ~]# source py2-sample/bin/activate (py2-sample) [root@centos82 ~]# python --version Python 2.7.17 (py2-sample) [root@centos82 ~]#
動作確認のために、いくつかpythonモジュールをインストールしてみましょう。
(py2-sample) [root@centos82 ~]# pip install ansible DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support Collecting ansible Downloading ansible-2.9.13.tar.gz (14.3 MB) |████████████████████████████████| 14.3 MB 5.4 MB/s Collecting jinja2 Downloading Jinja2-2.11.2-py2.py3-none-any.whl (125 kB) |████████████████████████████████| 125 kB 4.6 MB/s <omitted> Installing collected packages: MarkupSafe, jinja2, PyYAML, pycparser, cffi, ipaddress, six, enum34, cryptography, ansible Successfully installed MarkupSafe-1.1.1 PyYAML-5.3.1 ansible-2.9.13 cffi-1.14.2 cryptography-3.1 enum34-1.1.10 ipaddress-1.0.23 jinja2-2.11.2 pycparser-2.20 six-1.15.0
インポートしたモジュールが使える事を確認します。
(py2-sample) [root@centos82 ~]# ansible -m ping localhost /root/py2-sample/lib/python2.7/site-packages/ansible/parsing/vault/__init__.py:44: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in a future release. from cryptography.exceptions import InvalidSignature [WARNING]: No inventory was parsed, only implicit localhost is available localhost | SUCCESS => { "changed": false, "ping": "pong" }