CentOS 7にpyenvでPythonをインストール

CentOS 7 には標準で Python がインストールされている。ただちょっと古い。それに pip もない。

[takatoh@aybesea ~]$ python -V
Python 2.7.5
[takatoh@aybesea ~]$ pip list
bash: pip: コマンドが見つかりませんでした...

なので、pyenv を使って Python をインストールすることにした。これはひと月程前にも Ubuntu でやってるから大丈夫だろう。

環境

  • CentOS 7.4.1708 (Core)
  • システムの Python: 2.7.5

参考ページ

依存ライブラリのインストール

これ、なにが必要なんだかいつもよく分からないんだけど、とりあえず参考ページの通りにしてみる。

[takatoh@aybesea ~]$ sudo yum -y install zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel

pyenvとpyenv-virtualenvのインストール

[takatoh@aybesea ~]$ git clone https://github.com/yyuu/pyenv.git .pyenv
[takatoh@aybesea ~]$ git clone https://github.com/yyuu/pyenv-virtualenv.git .pyenv/plugins/pyenv-virtualenv

.bash_profile に追記。

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

.bash_profile を読み直し。

[takatoh@aybesea ~]$ source .bash_profile

Pythonのインストール

2.7.14 と 3.6.4 をインストール。

[takatoh@aybesea ~]$ pyenv install 2.7.14
Downloading Python-2.7.14.tar.xz...
-> https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz
Installing Python-2.7.14...
Installed Python-2.7.14 to /home/takatoh/.pyenv/versions/2.7.14

[takatoh@aybesea ~]$ pyenv install 3.6.4
Downloading Python-3.6.4.tar.xz...
-> https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
Installing Python-3.6.4...
Installed Python-3.6.4 to /home/takatoh/.pyenv/versions/3.6.4

バージョンの切り替え

[takatoh@aybesea ~]$ pyenv versions
* system (set by /home/takatoh/.pyenv/version)
  2.7.14
  3.6.4

とりあえず、常用には 2.7.14。

[takatoh@aybesea ~]$ pyenv global 2.7.14
[takatoh@aybesea ~]$ pyenv versions
  system
* 2.7.14 (set by /home/takatoh/.pyenv/version)
  3.6.4

OK。当面これで運用してみる。

rbenvを使ってRubyをインストールする(ユーザーローカル)→成功

ユーザーローカルにインストールする。まずは rbenv のインストール。

[takatoh@aybesea ~]$ git clone https://github.com/sstephenson/rbenv.git .rbenv

.bash_profile につぎの行を追記。

export RBENV_ROOT=$HOME/.rbenv
export PATH=$RBENV_ROOT/bin:$PATH
eval "$(rbenv init -)"

設定を読み直す。

[takatoh@aybesea ~]$ source .bash_profile

ruby-build をインストール。

[takatoh@aybesea ~]$ git clone git://github.com/sstephenson/ruby-build.git .rbenv/plugins/ruby-build
[takatoh@aybesea ~]$ cd .rbenv/plugins/ruby-build
[takatoh@aybesea ruby-build]$ sudo ./install.sh

これでインストールはOKのはず。

[takatoh@aybesea ~]$ rbenv -v
rbenv 1.1.1-28-gb943955

さあ、Ruby 2.5.0 をインストールしよう。

[takatoh@aybesea ~]$ rbenv install 2.5.0
Downloading ruby-2.5.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2
Installing ruby-2.5.0...
Installed ruby-2.5.0 to /home/takatoh/.rbenv/versions/2.5.0

rbenv rehash を実行。

[takatoh@aybesea ~]$ rbenv rehash

グローバルに使用する Ruby を指定。

[takatoh@aybesea ~]$ rbenv global 2.5.0

インストールできているか確認。

[takatoh@aybesea ~]$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
[takatoh@aybesea ~]$ which ruby
~/.rbenv/shims/ruby
[takatoh@aybesea ~]$ which gem
~/.rbenv/shims/gem

参考ページ

cf. ruby 2.3.1をCentOS7に導入する。 – Qiita

rbenvを使ってRubyをインストールする(システムワイド)→失敗

CentOS 7 には、標準では Ruby がインストールされてない。なのでインストールするんだけど、今回はせっかくなので rbenv を使ってみることにした。それもユーザー単位ではなくシステムワイドにインストールする。

環境

[takatoh@aybesea ~]$ cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)

準備

予め依存するパッケージをインストールしておく。git はインストール済み。

[takatoh@aybesea ~]$ sudo yum install gcc gcc-c++ openssl-devel readline-devel

rbenvのインストールと設定

インストール先を /usr/local/rbenv にする。

[takatoh@aybesea ~]$ sudo git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv

環境変数等の設定。/etc/profile.d の下に rbenv.sh を作って、つぎのようにする。

export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init --no-rehash -)"

rbenv.sh を反映する。

[takatoh@aybesea ~]$ source /etc/profile.d/rbenv.sh
mkdir: ディレクトリ `/usr/local/rbenv/shims' を作成できません: 許可がありません
mkdir: ディレクトリ `/usr/local/rbenv/versions' を作成できません: 許可がありません
[takatoh@aybesea ~]$ sudo source /etc/profile.d/rbenv.sh
sudo: source: コマンドが見つかりません

あれ、困った。ログインし直してみよう。
ログインし直した結果、端末に次のように表示された。

mkdir: ディレクトリ `/usr/local/rbenv/shims' を作成できません: 許可がありません
mkdir: ディレクトリ `/usr/local/rbenv/versions' を作成できません: 許可がありません

先にディレクトリを作ってやったらどうだろう。

[takatoh@aybesea ~]$ sudo mkdir /usr/local/rbenv/shims
[sudo] takatoh のパスワード:
[takatoh@aybesea ~]$ sudo mkdir /usr/local/rbenv/versions
[takatoh@aybesea ~]$ source /etc/profile.d/rbenv.sh

ruby-buildのインストール

[takatoh@aybesea ~]$ sudo mkdir /usr/local/rbenv/plugins
[takatoh@aybesea ~]$ cd /usr/local/rbenv/plugins
[takatoh@aybesea plugins]$ sudo git clone https://github.com/sstephenson/ruby-build.git ruby-build

install.sh を実行。

[takatoh@aybesea plugins]$ cd ruby-build
[takatoh@aybesea ruby-build]$ sudo ./install.sh

Rubyのインストール

さて、これで準備は整ったはずだ。Ruby をインストールしよう。インストールできる Ruby のバージョンは rbenv install --list コマンドで見ることができる。

[takatoh@aybesea ~]$ rbenv install --list

せっかくなので、リリースされたばかりの 2.5.0 をインストールしよう。

[takatoh@aybesea ~]$ rbenv install 2.5.0
Downloading ruby-2.5.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2
Installing ruby-2.5.0...
mkdir: ディレクトリ `/usr/local/rbenv/versions/2.5.0' を作成できません: 許可がありません

BUILD FAILED (CentOS Linux 7 using ruby-build 20171226)

Inspect or clean up the working tree at /tmp/ruby-build.20171231060736.25143
Results logged to /tmp/ruby-build.20171231060736.25143.log

Last 10 log lines:
/tmp/ruby-build.20171231060736.25143 ~
/tmp/ruby-build.20171231060736.25143/ruby-2.5.0 /tmp/ruby-build.20171231060736.25143 ~
[takatoh@aybesea ~]$ sudo rbenv install 2.5.0
[sudo] takatoh のパスワード:
sudo: rbenv: コマンドが見つかりません

あれ、ダメか。さっきの設定が root ユーザーには読み込まれてない様だ。かと言って sudo しないと書き込めないし。フルパスで指定してみるか。

[takatoh@aybesea ~]$ sudo /usr/local/rbenv/bin/rbenv install 2.5.0
rbenv: no such command `install'

ダメかーー!
設定がうまくいってないのかな。参考ページの通りにやってるんだけど。
あきらめてユーザーローカルに変更するか。

参考ページ

cf. CentOS7へのrbenvを用いたrubyの導入(システムワイド版) – Typo

CentOS7: 日本語のディレクトリ名を英語に変更

インストールを日本語で行うと、ホームディレクトリの中にデフォルトで用意されるディレクトリの名前が日本語になっている。

[takatoh@aybesea ~]$ ls
ダウンロード  デスクトップ  ビデオ  画像
テンプレート  ドキュメント  音楽    公開

これは使いにくいので、英語に直す。

[takatoh@aybesea ~]$ LC_ALL=C xdg-user-dirs-update --force
Moving DESKTOP directory from デスクトップ to Desktop
Moving DOWNLOAD directory from ダウンロード to Downloads
Moving TEMPLATES directory from テンプレート to Templates
Moving PUBLICSHARE directory from 公開 to Public
Moving DOCUMENTS directory from ドキュメント to Documents
Moving MUSIC directory from 音楽 to Music
Moving PICTURES directory from 画像 to Pictures
Moving VIDEOS directory from ビデオ to Videos

これでログインしなおすと、「標準フォルダーの名前を現在の言語に合わせて更新しますか?」というダイアログが出るので、「次回から表示しない」にチェックを入れて「古いままにする」をクリックすればOK。
……と思ったら、日本語のディレクトリも残っているので手で消した。

USBの外付けHDDを使ってみる

Windows で使っていた外付け HDD を接続してみる。

[takatoh@aybesea ~]$ sudo blkid
[sudo] takatoh のパスワード:
/dev/mapper/centos_aybesea-root: UUID="0fab0eeb-8886-4fe2-8fa7-3b7c57971adc" TYPE="xfs" 
/dev/sda2: UUID="jpvmX9-58tj-JSee-YCMQ-51fQ-bjl5-RUf6Qi" TYPE="LVM2_member" 
/dev/sda1: UUID="328590dd-13d1-4cf1-a5f3-cefc0a3a6a4d" TYPE="xfs" 
/dev/mapper/centos_aybesea-swap: UUID="63cc2cc0-f798-4afe-a36e-49d28d08ac86" TYPE="swap" 
/dev/mapper/centos_aybesea-home: UUID="4600514f-3f95-4d32-aa0f-4a0b47a5ab9a" TYPE="xfs" 
/dev/sdb1: LABEL="WIWAXIA" UUID="D0EA679CEA677D9A" TYPE="ntfs"

LABEL=”WIWAXIA” となってる /dev/sdb1 が外付け HDD だ。ファイルシステムは当然 NTFS。これをマウントしてみる。

[takatoh@aybesea ~]$ sudo mkdir /mnt/wiwaxia
[takatoh@aybesea ~]$ sudo mount --types ntfs /dev/sdb1 /mnt/wiwaxia
mount: unknown filesystem type 'ntfs'

おや、NTFS はダメみたいだ。ググってみると、CentOS では標準では NTFS に対応していないらしい。Ubuntu ではいけたのに、残念。

気をとり直して。NTFS がダメならフォーマットしてしまおう。CentOS の標準のファイルシステムは xfs だけど、今回はのちのち Ubuntu でも使えるように ext4 にする。
まずはパーティションのきりなおし。

[takatoh@aybesea ~]$ sudo fdisk /dev/sdb1
[sudo] takatoh のパスワード:
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


コマンド (m でヘルプ): p

Disk /dev/sdb1: 1000.0 GB, 1000008056832 bytes, 1953140736 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x73736572

パーティションテーブルに見えません
おそらく間違ったデバイスを選択しています。

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1p1      1920221984  3736432267   908105142   72  不明
/dev/sdb1p2   ?  1936028192  3889681299   976826554   6c  不明
/dev/sdb1p3   ?           0           0           0    0  Empty
/dev/sdb1p4        27722122    27722568         223+   0  Empty

コマンド (m でヘルプ): d
パーティション番号 (1-4, default 4): 1
Partition 1 is deleted

コマンド (m でヘルプ): d
パーティション番号 (2-4, default 4): 2
Partition 2 is deleted

コマンド (m でヘルプ): d
パーティション番号 (3,4, default 4): 3
Partition 3 is deleted

コマンド (m でヘルプ): d
Selected partition 4
Partition 4 is deleted

コマンド (m でヘルプ): p

Disk /dev/sdb1: 1000.0 GB, 1000008056832 bytes, 1953140736 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x73736572

デバイス ブート      始点        終点     ブロック   Id  システム

コマンド (m でヘルプ): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-1953140735, 初期値 2048): 
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-1953140735, 初期値 1953140735): 
初期値 1953140735 を使います
Partition 1 of type Linux and of size 931.3 GiB is set

コマンド (m でヘルプ): p

Disk /dev/sdb1: 1000.0 GB, 1000008056832 bytes, 1953140736 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x73736572

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1p1            2048  1953140735   976569344   83  Linux

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

WARNING: Re-reading the partition table failed with error 22: 無効な引数です.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
ディスクを同期しています。

fdisk コマンドは、パーティション管理のコマンドだ。対話形式で操作し、p でパーティションテーブルの表示、d で削除、n で新規作成、w で書き込み。今回は既存のパーティションすべてを削除して新しく1つだけ作成(全部デフォルト設定)した。
つづいて ext4 ファイルシステムの作成。

[takatoh@aybesea ~]$ sudo mkfs -t ext4 /dev/sdb1
[sudo] takatoh のパスワード:
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
61038592 inodes, 244142592 blocks
12207129 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2392850432
7451 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000, 214990848

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

なんかあっさり終わったけど、これでいいのかな?
試してみよう。

[takatoh@aybesea ~]$ sudo blkid
/dev/mapper/centos_aybesea-root: UUID="0fab0eeb-8886-4fe2-8fa7-3b7c57971adc" TYPE="xfs" 
/dev/sda2: UUID="jpvmX9-58tj-JSee-YCMQ-51fQ-bjl5-RUf6Qi" TYPE="LVM2_member" 
/dev/sda1: UUID="328590dd-13d1-4cf1-a5f3-cefc0a3a6a4d" TYPE="xfs" 
/dev/mapper/centos_aybesea-swap: UUID="63cc2cc0-f798-4afe-a36e-49d28d08ac86" TYPE="swap" 
/dev/mapper/centos_aybesea-home: UUID="4600514f-3f95-4d32-aa0f-4a0b47a5ab9a" TYPE="xfs" 
/dev/sdb1: UUID="74c0d342-f2a6-49d3-8aca-62d23f3603e1" TYPE="ext4"
[takatoh@aybesea ~]$ sudo mount --types ext4 /dev/sdb1 /mnt/wiwaxia
[takatoh@aybesea ~]$ touch /mnt/wiwaxia/test
touch: `/mnt/wiwaxia/test' に touch できません: 許可がありません
[takatoh@aybesea ~]$ sudo touch /mnt/wiwaxia/test
[takatoh@aybesea ~]$ ls /mnt/wiwaxia
lost+found  test

うまくいったみたい。

[追記]

HDD を一時的にではなく恒久的にマウントするには /etc/fstab ファイルに次のように追記して再起動する。

# USB HDD WIWAXIA
UUID="74c0d342-f2a6-49d3-8aca-62d23f3603e1" /mnt/wiwaxia ext4 defaults 0 0

一般ユーザーでsudoできるようにする

CentOS では wheel グループが sudo できるグループとして意図されているみたい。これを有効にするには次のようにする。

まず、visudo コマンドで編集。

[root@aybesea ~]# visudo

終わりのほうの次の行を変更して保存。

# %wheel ALL=(ALL) NOPASSWD: ALL
%wheel ALL=(ALL) ALL

それから usermod コマンドでユーザーを wheel グループに追加。

[root@aybesea ~]# usermod -G wheel takatoh

これで再起動すればOK。

CentOS 7で日本語入力できるようにする

アプリケーション → システムツール → 設定 から Region & Language を選択。入力ソースの下の + 印をクリックしてさらに日本語をクリック、リストの中から「日本語(かな漢字)」を選んで追加ボタンをクリック。これで入力ソースに「日本語(かな漢字)」が追加される。
設定を終えると、画面右上のところに ja と表示されるようになる。あとは半角/全角キーで日本語に切り替えられる。

CentOSのアップデート

root でログインする。ログイン画面の、「アカウントが見つかりませんか?」を選ぶとユーザー名を入力できるようになる。この画面で root でログインする。

左上の「アプリケーション」と書いてあるところをクリックして端末を起動。yum update コマンドでアップデート。

[root@aybesea ~]# yum update

300近いパッケージがアップデートされた。

CentOS 7のインストール

というわけで、今日は買い替えた古いほうのマシンに CentOS 7 をインストールする。

まずはインストールメディア(DVD)を作るところから。ダウンロードのページから DVD ISO イメージをダウンロードして、昨日セットアップした Windows マシン(montana)で DVD に焼いた。

さて、DVD を入れて PC を起動するとインストールメニューが出るので、「Test this media & install CentOS 7」を選ぶ。するとメディアのチェックの後、インストールが始まる。
最初は言語の設定から。インストーラは GUI になっててわかりやすい。
つぎに、インストールの概要の画面になったけど、ネットワークが接続されていない。これはちょっと気になる。設定をオンにするとつながるようになった。あと、ここでホスト名も設定する。aybesea にした。インストール先は「自動パーティション設定が選択されました」となっているのでこれはそのまま。ソフトウェアの選択も「最小限のインストール」のままとした。それから SECURITY POLICY もデフォルトのまま。これでインストール開始。

インストール中に、root のパスワードを設定。ユーザーは takatoh を作成した。

しばらくするとインストールが終了して再起動を促される。素直に再起動。ログインの画面になるけど、root でログインしようとしてもできない。なぜだ。パスワードを間違えたか?

仕方がないので、インストールの初めからやり直し。設定はさっきとほぼ一緒だけど、ソフトウェアの選択で「サーバー(GUI使用)」を選んでみたのと、ユーザーの作成をしなかったところが違う。今度はさっきよりだいぶ時間がかかる。

インストールが終わって、再起動すると GUI の画面になる。まずはライセンスに同意。そしてユーザーの作成。takatoh を作成した。設定の完了ボタンをクリック。

画面が切り替わってログイン画面になる。takatoh があるので、パスワードを入力してログイン。root はなかったな。ログインすると簡単な設定があって、デフォルトかスキップで OK。

とりあえずここまで。

[追記]

参考書を買った。

新しいPC(Windows 10)のセットアップをした

昨日の話。Windowsマシン valarie の買い替えの新しい PC のセットアップをした。Windows の更新にすげー時間がかかったせいで1日仕事だった。
セットアップ自体は特に難しいところはないんだけど、途中で Windows の更新をするところで数時間もかかってしまった。特に、「完了の割合」が 99% になってからずっと2時間くらい進まず、結局お祈りしながら強制リブートした。無事リブートしたのでよしとする。更新がどうなったかは分からないけど、今日になってみたら新しい更新がインストールされていたので、結果としては大丈夫だったようだ。
以下、インストールしたアプリケーション。

  • Norton Internet Security
  • iTunes
  • Dropbox
  • Firefox
  • Adobe Reader DC
  • Sublime Text 3
  • 秀丸
  • Git
  • RLogin
  • FFFTP
  • VirtualBox
  • B’s Recoder GOLD
  • Microsoft Office 2013
  • Ruby
  • Python
  • Node.js

とりあえずこんなところ。
あ、ホスト名は montana にした。
あと古いマシンは廃棄する前に CentOS を入れていろいろ実験してみるつもり。