Python3.8 on CentOS8

この記事は[自分のブログで書いた記事](https://erdeserdes.blogspot.com/b/post-preview?token=APq4FmA-Uh-Gkzjo24KzvOMPfhbvK3m83t9QLN6FjGHthsDlx3lJgRtMhZFJ9xQSBf86W-x2Gtazgwn-bLWsUja_TQht183DnAi72vSe8mbrUVvDVpD-_TVdyXqY7dXuWBpwstX75mpW&postId=7614387111940037760&type=POST)をQiita用に書き直したものです。

- Pythonのディレクトリ構造
- VirturalBoxの使い方
- CentOS8に触ってみる

といってことを勉強したかったので、CentOS8にPython3.8をインストールをしてみました。

その時の手順を参考になればと思い記事を書きました。

それなりの枚数の画像が挿入されて記事が長くなると思われるので、この記事の要点を先に述べておきたいと思います。

# この記事で触れること

- CentOS8のインストール手順
- Python3.8のインストール手順(二通り)
- Python3.8をそれぞれの方法でインストールしたとき、ディレクトリはどうなるか


# この記事で触れないこと

- VirturalBox自体のインストールには触れません。他の記事を引用するに留めます。


# 自分の環境

- MacOS 10.15.3 Catalina (今回はVirtualBoxインストール済みのところから話を始めるのであまり関係はないですが。。。)
- VirtualBox 6.0.18





# Python3.8のディレクトリ構造

まず、Python3.8のディレクトリ構造がどうなるか、述べてしまいたいと思います。

## コマンドでインストール

- python3.8の実行ファイル(バイナリファイル)は絶対パスの/usr/binにきます。
- ライブラリなどは絶対パスの/usr/local/lib/Python3.8/site-packagesにきます。


## インストーラーでインストール

CentOSの場合にはインストーラーというものはないようです。公式サイトへいってもダウンロードできるのはソースコードしかないので、結局はそれを自分でビルドしていくことになるので、上記のコマンドを使う方法と同じことになります。


# VirtualBoxのインストール手順

これは調べればたくさん記事が出てくるので、割愛。インストールは済んでいるところから話を始めます。

例えば

- [MacにVirtualBoxをインストールしてみた](https://pc-karuma.net/mac-virtualbox-install/)
- [MacにVirtualBoxをインストールする方法をわかりやすく解説！](https://www.sejuku.net/blog/75279)

などなど。

#CentOS8のイメージファイルのダウンロード

[CentOSの公式ページ](http://isoredirect.centos.org/centos/8/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso) から、まずはCentOS本体のデータをダウンロードします。

この中にあるものであれば、どれも同じなのでどれでもいいのでダウンロードします。

![手順_32のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/97215f88-c5a1-2205-99f4-8cb47117d7fd.png)

# CentOS8のインストール

まずはVirtualBoxを起動します。

下記の画面では、自分が試しに作った別用途のCentOSが表示されてしまっていますが、今回は新規につくるので「新規」をクリックします。

![手順_1のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/c5887403-9a38-30b9-650f-f736ea4b9c18.png)


名前の欄は、「あとから起動する時に区別するため」の名前を適当に決めます。ここでは、わかりやすく「CentOS8」としました。

それ以外の設定は特にいじらず、名前の欄を入力したら、「作成」ボタンを押して先へ進みます。

![手順_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/331971ed-1738-5f0d-3079-b363c67b9874.png)


次に、ファイルの場所を決めます。

これは、今から作る仮想マシン自体も、この今作業しているパソコン上に存在することになるわけですが、その場所やそのファイルの名前をどうするのか、ということです。

これも特別な理由がないのであれば、いじらなくていいです。

ファイルサイズは、デフォルトでは8GBになっています。

あとあと、CentOSをインストールする際に、いくつかバリエーションが選べるのですが、「本当に最小限」のものだけをインストールするのであれば、8GBでもいいのですが、そうでない場合には8GBだと足りないので、うまくいくように11GBにします。

最小限、ただ起動するだけだとしても、そのために必要なファイルなどがあるわけです。それらのファイルにも存在できる場所は必要なので、その合計値よりも多くなければいけないということです。

それ以外は、下記画像と同じようになっているか確認し、「作成」ボタンを押します。

![手順_3X.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/1868484a-acfd-bf50-e8c9-3f890093530f.png)


そうすると、まずはCentOS8をインストールするための場所が確保できました。

![手順_4のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/9cfead94-7336-ea67-0301-11dff4b82153.png)


次に、実際にインストールをしていきます。

今作成したCentOS8のところを右クリックして、「起動」→「通常起動」をクリックします。

![手順_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/cb5b00dd-9d30-06f0-63bc-00926b59c8e9.png)

そうすると、次のような画面になります。

![手順_6のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/e7cc148e-0065-80da-70d7-4898a2b51bec.png)

ここで、ダウンロードしてある、CentOS8のイメージファイルを選択します。

選択したら、「Start」を押します。

![手順_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/8d9f1da0-34ff-856b-7869-b1a3df15fbaf.png)

そうすると、CentOS8のインストール画面が立ち上がります。

いくつか選択肢が表示されていますが、「Install CentOS Linux 8」が選ばれているはずなので、そのまま「Enter」を押します。(まぁなにも押さなくてもカウントダウンが終わればそのまま自動で選択されます。)

![手順_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/67295846-cb90-d9a5-5b7a-e4c88603e1c0.png)

言語の設定をします。

操作に少し注意が必要です。

仮想環境の中と外では、別操作になります。仮想環境の画面上をクリックすれば、操作が仮想環境の中に移りますが、そのままでは今度は仮想環境の外の操作ができないので、(仮想環境の中ではなく)普通のPCの操作をしたい場合には「左のCommand」を押します。

日本語を選んで、「続行」を押します。

![手順_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/c56ebdba-a852-2e2e-59d0-c41f3d0c9677.png)

「続行」を押すと、以下のような画面になります。

画面が途中で見切れてしまっています。これはあとで別途設定することで直すこともできますが、ここでは一旦このまま進めます。

この画面から、

- 時刻と日付
- ソフトウェアの選択
- ネットワークとホスト名

を設定していきます。

![ 手順_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/5b472fd9-87e9-8728-8cd4-56089144d152.png)


日付と時刻を以下のように設定します。

設定したら、左上の「完了」を押します。

![手順_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/4ef58e64-1d78-e468-93b9-f36cc9bc72a6.png)


「完了」を押すと、元の画面に戻るので、今度は「ソフトウェアの選択」を選択し、以下のように設定。

ここで、「最小限のインストール」を選択してもいいのですが、そうすると本当に最小限しかインストールされずGUIとかもなくCUI上でコマンド操作しなくてはいけなくなります。

なので、慣れないうちはある程度その他のツールも込み込みの「ワークステーション」を選ぶとよいと思います。

勉強して詳しくなってきたら、「サーバー」とか「最小限のインストール」とかでチャレンジしてみるのもいいかもしれません。

冒頭のほうでファイルサイズを8GBに設定しました。

仮に「最小限のインストール」をインストールする場合には、それで足りるのですがその他のツールも含めてインストールしようとするとそれでは足りなくなるので、そのために冒頭では11GBに設定したのでした。

右側の「選択した環境用のその他のソフトウェア」の中も、適当にいくつか選びます。

自分の場合は、以下の画像のように選択しました。

![手順_13_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/7c6b4d92-e160-ab1f-35db-4f82202b5b7c.png)


![手順_13_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/c254d364-c6af-cf8c-98af-a484f2a6cefa.png)


選択したら、まだ左上の「完了」を押して元の画面に戻り、今度は「ネットワークとホスト名」を設定します。

右上のEthernet(enp0s3)のところをクリックしてONにします。そうしたら左上の「完了」を押します。

![手順_14のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/93a2936d-ea87-0954-8acf-d9311b3b7c92.png)

元の画面に戻りますので、右下の「インストールの開始」をクリックします。

![手順_15のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/933d879c-ea87-3fea-d4c5-dcd99d26f289.png)

そうすると、インストールが始まります。

それなりの時間がかかるので、その間にrootのパスワードとユーザーの作成をします。

![手順_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/e37aa806-d4bb-0685-5962-1e4109102ecd.png)

「rootのパスワード」を選択し以下の画面を表示させます。

パスワードを二回入力し、左上の「完了」を押します。

![手順_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/f4c8c992-9388-7e55-a757-399df4f07e09.png)

同様に、ユーザーの作成も行います。

ユーザー名とパスワードを入力。

「このユーザーを管理者にする(M)」もチェックをつけておきます。

設定したら左上の「完了」ボタン。

![手順_18のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/f8f5e0d6-af0e-e33e-8271-82b71528f878.png)

あとはインストールが終わるまでしばらく待ちます。

![手順_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/380d3997-a2f1-8055-e0e3-249e96309dba.png)


完了すると以下のような画面になります。そうしたら右下の「再起動」をクリックします。

![手順_20のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/277ea9b2-5361-0dd1-05de-30db349d5b1d.png)


このまま、何も操作をせずに待っているともう一度インストール画面になってしまうので、一旦イメージファイルを外します。

まずは再起動される前に、以下の画面のような元々のVirtualbox起動時の画面で、今作成中のCentOS8を右クリックして、「閉じる」→「電源オフ」で仮想マシンの電源を落とします。

以下のような画面になっていることを確認。

この画面で「設定」を押します。

![手順_21のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/abae4ed8-6452-69f0-2fe6-87b2ca5ca93e.png)


設定の画面が開いたら、下記画面のように選択。

そして「仮想ドライブからディスクを除去」を選択。


![手順_22のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/5b160525-b1c3-d30e-b59d-d26ee70fc305.png)


以下のようになることを確認し、右下の「OK」をクリックし設定画面を閉じます。

![手順_23のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/38ce8573-3692-30b3-ac31-8c04f33175ff.png)

VirtualBox起動時の画面へ戻ったら、CentOS8をダブルクリックして起動します。

少し待つと以下のような画面が表示されます。

License informationをクリックします。

![手順_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/14b1b3bc-aad2-ce82-87c6-baa1e9524417.png)

「ライセンス契約に同意します。(A)」にチェックを入れて、左上の「完了」を押します。

![手順_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/ad21a8c1-8d86-a2f9-e084-b55f15612de6.png)

右下の「設定の完了」を押します。

![手順_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/c8203792-d3df-f878-e184-9567d08c6dd4.png)

そうするとユーザー選択画面が表示されます。

作成したユーザーでログインします。

![手順_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/754a3db5-a2cc-25e3-2cba-f6d2da200691.png)

該当ユーザーのパスワードを入力し「ログイン」をクリックします。

![手順_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/417c2f82-89ee-2579-0da8-3a0f403eb661.png)

無事ログインできれば、以下のような画面が表示されるはずです。

![手順_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/9b0f5fe7-3b0f-2758-94e9-f36442bb6b36.png)

このあと、Pythonをインストールをするにしても、ネットへ繋がってなければなにも始まらないので、ネットが繋がるかどうかも確認しておきます。

これもいろんな方法があるとは思いますが、そのうちの一つ。

Firefoxを起動します。

![手順_30のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/37a54988-7938-5615-3723-8bc95800a824.png)

そして、なんでもいいですが、googleの検索画面が表示できるか確認しましょう。

![手順_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/8c6f1e27-7a7a-bc11-9de8-b383547f4c96.png)


実は、CentOS8のインストール自体はこれでできているのですが、「画面を最大化」したり、「ホストOSからゲストOSへコピペ」とかいったりということがまだできません。

一通り作業が終わったあとにやるつもりですが、行う順番はどちらが先でもいいので、先に設定したい方はこちらの記事を先に読んでください。

[VirtualBoxで画面を最大化する方法、クリップボードを共有する方法](https://qiita.com/erdes/items/cbb17e6c5421d2b1cfb6)



# Python3.8のインストール

## dnfを使用してインストールする場合
CentOS8のトップ画面へ戻り、「端末」を起動します。

これ以降はこの中での作業になります。

![手順_30のコピー2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289786/c2a3d2ec-253b-8c18-247c-7f9fec75a1d8.png)

以下のコマンドを打ちます。

仮想環境の外から仮想環境の中へコピペもする方法はありますが、今この段階ではできないので、頑張って手打ちします。

```
$ sudo dnf groupinstall 'development tools’  
```

何度か、確認を求めれるので全て「y」を押して進みます。

処理が終わったら、続いて次のコマンドを実行します。


```
$sudo dnf install bzip2-devel expat-devel gdbm-devel ncurses-devel openssl-devel readline-devel sqlite-devel tk-devel xz-devel zlib-devel wget
```

```
$VERSION=3.8.2
$wget https://www.python.org/ftp/python/${VERSION}/Python-${VERSION}.tgz
```

ここまで完了すると、/home/name(←いまログインしているユーザーの名前)以下に、.tgzのファイルが入ります。

```
$tar -xf Python-${VERSION}.tgz   // .tgzファイルを解凍
$cd Python-${VERSION}            // 解凍したファイルへ移動
```

```
$./configure --enable-optimizations    
```

```
$nproc

//自分の場合の出力
1

```

```
$sudo make -j 1　(←nprocで出力された数字を入力)
```

```
$sudo make altinstall
```

インストール自体はこれで完了なので、きちんとインストールされているか確認します。これも方法はいくつかあると思いますが、以下のようになれば成功しています。

```
//一例
$python3.8 —-version
Python3.8.2
```
実際に起動してみてもいいでしょう。

```
//一例
$Python3.8
Python3.8.2 (default ,Apr 10 2020, 00:51:32)
[GCC 8.3.1 20190507 (Red Hat 8.3.1-4)] on linux
Type "help","copyright","credits" or "license" for more information.
>>
```

そして、たびたびくどいようであれですが、「画面の最大化の設定」や「ホストOSとゲストOSでクリップボードの共有」などを設定した場合はこのあとに行っても構いません。

[VirtualBoxで画面を最大化する方法、クリップボードを共有する方法](https://qiita.com/erdes/items/cbb17e6c5421d2b1cfb6)

##  補足(万が一ネットにつながらないという場合)

基本、この手順を最初からなぞっていけば、ネットにも繋がっているとは思いますが、万が一つながらない場合には、以下のコマンドを実行してみましょう。

```
$nmcli d    // 接続の状態を確認、
　　　　　　 // enp0s3のところ接続されていない状態になっている可能性がある。
```

```
$nmcli  connection up enp0s3   // 接続を確立
$nmcli d //念のため、もう一度状態が変わったか確認
```



# 参考にした情報

- [CentOS](http://isoredirect.centos.org/centos/8/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso)
- [MacにVirtualBoxをインストールしてみた](https://pc-karuma.net/mac-virtualbox-install/)
- [MacにVirtualBoxをインストールする方法をわかりやすく解説！](https://www.sejuku.net/blog/75279)
- [How to Install Python 3.8 on CentOS 8](https://linuxize.com/post/how-to-install-python-3-8-on-centos-8/)
- [CentOs8にPython 3.8をインストールする手順](https://mebee.info/2020/04/02/post-8517/)
- [VirtualBoxで画面を最大化する方法、クリップボードを共有する方法](https://qiita.com/erdes/items/cbb17e6c5421d2b1cfb6)