見出し画像

Alma Linuxへの道(中編)

3日間ほど続けて、毎週恒例ではない記事を書きます。金曜日はシロクマ文芸部の企画、土曜日は旅論、日曜日は誰にも言えない特別記事になるところ、今回は Alma Linux について語っています。

Alma Linux DVDイメージのダウンロード

何はともあれ、Alma Linux を使うためには、そのDVDイメージを手に入れる必要があります。これは、インターネット上で無料で提供されています。

Alma Linux のサイトに行ってみましょう。日本語のサイトもあります。

https://almalinux.org/ja/

メニューにでかでかと出ているダウンロードのボタンを押して先に進みます。いろいろ出ておりますが、この画面のトップのISOイメージをダウンロードすることにします。この時、選択肢がBoot, DVD, Minimal の3つありますが、インターネットに既につながっている環境であれば、DVD1枚におさまる 約1GBサイズのBootがよいと思います。この画面からもダウンロードできますが、たくさんミラーサイトがありますので、日本国内のそのようなサイトからダウンロードすると素早くできます。ミラーサイトの一覧もこのページからリンクがはられています。

バージョンについては、現在2系統あり、相対的に新しい9系(最新は9.4)と多くの実績がある8系(最新は8.10)があります。どんな目的で何をしたいかという基準で選択するとよいと思います。私は今回は9.4にしました。

起動用DVDの作成

この頃のWindows、DVDなんてめったに出番がないです。新しいノートパソコンにはDVDドライブがついていません。ISOファイルをDVDに焼き付けるためには、DVDドライブが必要です。そこで、一昔前、というか、結構古いパソコンの登場です。実は、ここで落とし穴があるようで、私ははまってしまいました。DVDドライブ、古いものを持ってくると、既に死んでいたか、動かそうとしたときに死ぬのかわかりませんが、使えないパターン、少なからずあります。中途半端に生きていたが、書き込みに失敗するという謎の現象もありました。結果論から言えば、相対的に新しいパソコンを探して、そのDVDドライブを使うようにするのがよいということになります。ライティングソフトウエアもいまではほとんど使いませんが、昔懐かしい、ImgBurnとか、Windows 10 でも動くことがわかりました。

https://www.imgburn.com/

現行Scientific Linuxマシンを再起動

既にScientific Linux 6.10 が入っていて、日常活動に活躍しているマシンを今回、Alma Linux 化することにしました。このマシンのハードディスクに入っていた重要な資源は既に外部にコピーして取り出してあります。

普通に電源をONすると、ハードディスクから起動され、Scientific Linux 6.10がたちあがります。電源ON直後に、ESCキーなど押しますと、その前にブート先の選択も含めた選択ができる画面がでてきます。Alma Linux 9.4 Boot のDVDをドライブにいれておいた状態で、この画面で、ブートをDVDドライブに指定しますと、再起動がされ、いよいよ待望のAlma Linux起動画面が現れます。

もし、ここまで到達できなかった場合は、ISOファイルのダウンロードもしくは、そのファイルをDVDに焼き付けるのに失敗している可能性が考えられます(経験者は語る…)。

ここからしばらく全自動で勝手に作業が続きます。そして、落ち着いたところで、設定画面が現れ、3つの作業をここから手動操作で実行します。

第1は、Alma Linuxのインストール先の指定です。たいていは内蔵ハードディスクを使うのだと思いますが、そこは大部分、Scietntific Linuxで使っていた場所です。そこで、それらを全部削除して、再利用することにします。そんな指定をします。
第2は、ユーザーアカウントの作成とパスワードの設定です。
第3は、管理者(root)アカウントのパスワードの設定です。

新システムへの移行成功

本当にあっけないほど簡単でした。先ほどの設定画面で3つの作業をしたあと、ボタンを押してから後は、完全自動の設定作業が行われるだけです。

次に起動したときは、もうAlma Linux の新システムが動いています。同じハードウエアなのに、新システムは手間がまったくかからないです。Scietntific Linux 6のときのあの苦労は何だったのだろう? と思うほどです。

Pythonも新しいのが入っていますし、あまりやることがないですが、Scietntific Linuxの時と似たような追加インストール作業をしました。

% yum install gcc
% yum install zlib-devel
% yum install bzip2-devel
% yum install openssl-devel
% yum install ncurses-devel
% yum install sqlite-devel
% yum install readline-devel
% yum install libffi-devel
% yum install tk-devel

そうそう、emacs エディタもほしい。

% yum install emacs 

gnuplotもほしい。

% cd /usr/lcoal/src
% wget http://ftp.cstug.cz/pub/CTAN/graphics/gnuplot/5.2.6/gnuplot-5.2.6.tar.gz
% tar -xzvf gnuplot-5.2.6.tar.gz
% cd gnuplot-5.2.6
% ./configure
% make
% make install

計算機速度や能力をチェックするためのUnixBench もほしい

https://github.com/kdlucas/byte-unixbench

% cd /usr/local/src/ 
% curl -O https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz
% tar -xzvf UnixBench5.1.3.tgz
% cd UnixBench
% ./Run

ところが、この最後のところ、実行時にエラーが出ます。これは、次のインストール操作であっさり解決できました。

% yum install perl-Time-HiRes

Python 機械学習環境の再構築

Python のバージョンは、3.9.18でした。機械学習環境については、再構築というほど、難しいことは全くありませんでした。まずは、Scietntific Linux時代と同じように、venvを使えるようにします。自分のホームディレクトリで次のようにします。

% python -m venv sklearn-venv
% source sklearn-venv/bin/activate

Scientific Linuxで使っていたすべてのツールを導入しました。こんな感じです。***のところをどんどん変えるだけです。

% python -m pip install ***

機械学習ツールscikit-learnも同じ要領で導入します。画像認識のPytorchも同様です。

そうしますと、こんな感じになります。

(sklearn-venv) [kenji@localhost]$ pip list
Package Version

alabaster 0.7.16
attrs 23.2.0
Babel 2.15.0
black 24.4.2
certifi 2024.6.2
charset-normalizer 3.3.2
click 8.1.7
contourpy 1.2.1
coverage 7.5.4
cycler 0.12.1
docutils 0.21.2
exceptiongroup 1.2.1
filelock 3.13.1
flake8 7.1.0
fonttools 4.53.0
fsspec 2024.2.0
idna 3.7
imageio 2.34.2
imagesize 1.4.1
importlib_metadata 8.0.0
importlib_resources 6.4.0
iniconfig 2.0.0
Jinja2 3.1.4
joblib 1.4.2
kiwisolver 1.4.5
lazy_loader 0.4
MarkupSafe 2.1.5
matplotlib 3.9.0
mccabe 0.7.0
memory-profiler 0.61.0
mpmath 1.3.0
mypy 1.10.1
mypy-extensions 1.0.0
networkx 3.2.1
novas 3.1.1.6
numpy 2.0.0
numpydoc 1.7.0
nvidia-cublas-cu11 11.11.3.6
nvidia-cuda-nvrtc-cu11 11.8.89
nvidia-cuda-runtime-cu11 11.8.89
nvidia-cudnn-cu11 9.1.1.17
packaging 24.1
pandas 2.2.2
pathspec 0.12.1
pillow 10.3.0
pip 24.1.1
platformdirs 4.2.2
pluggy 1.5.0
protobuf 3.20.0
psutil 6.0.0
py 1.11.0
pycodestyle 2.12.0
pyflakes 3.2.0
Pygments 2.18.0
pyparsing 3.1.2
pytest 8.2.2
pytest-cov 5.0.0
python-dateutil 2.9.0.post0
pytz 2024.1
PyWavelets 1.6.0
PyYAML 6.0.1
requests 2.32.3
scikit-image 0.24.0
scikit-learn 1.5.0
scipy 1.13.1
seaborn 0.13.2
setuptools 70.1.1
six 1.16.0
snowballstemmer 2.2.0
Sphinx 7.3.7
sphinx-gallery 0.16.0
sphinx-prompt 1.8.0
sphinxcontrib-applehelp 1.0.8
sphinxcontrib-devhelp 1.0.6
sphinxcontrib-htmlhelp 2.0.5
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.7
sphinxcontrib-serializinghtml 1.1.10
sphinxext-opengraph 0.9.1
sympy 1.12
tabulate 0.9.0
tensorboardX 2.6.2.2
threadpoolctl 3.5.0
tifffile 2024.6.18
tomli 2.0.1
torch 2.3.1+cpu
torchaudio 2.3.1+cpu
torchvision 0.18.1+cpu
tqdm 4.66.4
typing_extensions 4.12.2
tzdata 2024.1
urllib3 2.2.2
wheel 0.43.0
zipp 3.19.2

いまの環境で以前と同じことができているか、確認します。以下のようなものを打ち込んで、iris2.pyという名前で保存しておきます。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.decomposition import PCA
from sklearn import datasets
import pprint
import re
def main():
np.random.seed(2021)

# データロード
centers = [[1, 1], [-1, -1], [1, -1]]
iris = datasets.load_iris()
X = iris.data
y = iris.target
pprint.pprint(iris)

# 主成分分析(PCA)
pca = PCA(n_components=4)
pca.fit(X)
X = pca.transform(X)
print('寄与率 explained_variance_ratio_:')
print(pca.explained_variance_ratio_)

# 寄与率でソート 昇順にソートしてから反転させて降順とする。
c_index = np.argsort(pca.explained_variance_ratio_)
c_index = np.flipud(c_index)

# データ反転
feature_names = []
for i in c_index:
feature_names.append(iris.feature_names[i])

# グラフプロット
plt.cla()
fig = plt.figure(1, figsize=(4, 4)) plt.clf()
ax = Axes3D(fig, rect=[0, 0, .95, 1], elev=48, azim=134)
offset = 1.5

# クラス名称のラベルテキスト描画
# ['setosa', 'versicolor', 'virginica']
for label,name, in enumerate(iris.target_names):
px = X[y == label, c_index[0]].mean()
py = X[y == label, c_index[1]].mean()
pz = X[y == label, c_index[2]].mean()
ax.text3D(px, py + offset, pz, name.capitalize(),
horizontalalignment='center',
bbox=dict(alpha=.5, edgecolor='w', facecolor='w'))

# クラスターの結果と一致する色になるようにラベルを並べ替えます
y = np.choose(y, [1, 2, 0]).astype(float)
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y, cmap=plt.cm.jet, edgecolor='k')

# グラフ軸ラベル '(cm)'の単位文字列を削除
ax.set_xlabel(re.sub(r'\(cm\)', '', feature_names[0]))
ax.set_ylabel(re.sub(r'\(cm\)', '', feature_names[1]))
ax.set_zlabel(re.sub(r'\(cm\)', '', feature_names[2]))
plt.show()

if name == 'main':
main()

実行しますと、当然ですが、Scientific Linuxでやっていたのと同じように処理してくれます。

% python iris2.py

ただ、GUI環境に互換性がないのか、グラフが出てきません。

UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
plt.show() 


初めての皆様へ

皆様には、桜井健次のエッセイのマガジン「群盲評象」をお薦めしております。どんな記事が出ているか、代表的なものを「群盲評象ショーケース(無料)」に収めております。もし、こういうものを毎日お読みになりたいという方は、1年分ずっと読める「群盲評象2024」を、また、お試しで1か月だけ読んでみようかという方は「月刊群盲評象」をどうぞ。毎日、マガジンご購読の皆様にむけて、ぜひシェアしたいと思うことを語っております。

御礼とご挨拶

親愛なるマガジンご購読の皆様、いつもご愛読頂きありがとうございます。おかげさまで毎日連続1600投稿の節目を無事に通過することができました。

毎週6回、マガジンご購読の皆様限定の記事をお送りします。土曜と日曜は完全限定記事です。土曜日は旅と人生のテーマを語ります。日曜日は世間でタブーになるかもしれないことも躊躇なく書いてゆきます。火曜日と木曜日は音声配信で語ったテーマに補筆・追記したもの、また水曜日と金曜日は画像生成・漢詩づくりをテーマに生成系AI活用の舞台裏をお届けします。

マガジンご購読の皆様とシェアできる記事を書くことが日々の楽しみであります。また、皆様にとってもどこかでお役に立てるコンテンツをご提供できるようでありたいとも願っております。微力ながら、日々精進してまいります。今後もよろしくお願い致します。

マガジンご購読の皆様へのプレゼント

ここから先は

1,067字

本マガジンでは、桜井健次の記事をとりあえず、お試しで読んでみたい方を歓迎します。毎日ほぼ1記事以上を寄稿いたします。とりあえず、1カ月でもお試しになりませんか。

現代は科学が進歩した時代だとよく言われます。知識を獲得するほど新たな謎が深まり、広大な未知の世界が広がります。知は無知とセットになっていま…

いつもお読みくださり、ありがとうございます。もし私の記事にご興味をお持ちいただけるようでしたら、ぜひマガジンをご検討いただけないでしょうか。毎日書いております。見本は「群盲評象ショーケース(無料)」をご覧になってください。