A-TuneのCentOSへの移植
第一.インストール環境
VMware仮想マシン + CentOS 7.9
第二.インストール手順
0.環境準備
システムはネットワークを構成し、外ネットへのpingが可能であることを確認してください。具体的な実装方法は以下のブログを参考にしてください。
https://www.cnblogs.com/silas041301/p/16175861.html
CentOSで使用するyumソースとpipソースに接続問題が発生する場合は、国内のソースに変更してください。
1.システムソフトウェアパッケージの依存関係をインストール
sudo yum install -y golang-bin python3 perf sysstat hwloc-gui
⭐ここでエラーが発生する場合は、主に国外のソースの問題である可能性が高いです。ソースを変更してください。
2.Python依存パッケージのインストール
2.1 A-Tuneサービスの依存パッケージをインストール
以下のコマンドを使用します。
pip3 install dict2xml Flask-RESTful pandas scikit-optimize xgboost scikit-learn pyyaml
このインストール中にいくつかの問題が発生する場合があります。詳細は後述の3.1を参照してください。
2.2 データベース依存パッケージをインストール
以下のコマンドを使用します。
sudo yum install -y python3-sqlalchemy python3-cryptography
または
pip3 install sqlalchemy cryptography
ここで発生するPythonバージョンの問題については3.2を参照してください。
同時に、データベースの依存関係については**PostgreSQL**データベースを例として説明します。
sudo yum install -y python3-psycopg2
または
pip3 install psycopg2
2.3 ソースコードをダウンロード
git clone https://gitee.com/openeuler/A-Tune.git
2.4 コンパイル
cd A-Tune
make
2.5 インストール
sudo make collector-install
sudo make install
第三.発生した問題と解決策
3.1 xgboostのインストール時にエラーが発生
【エラー】:Command "/usr/bin/python3 -u -c "import setuptools, tokenize;**file**='/tmp/pip-build-ktq1dypw/xgboost/setup.py';f=getattr(tokenize, 'open', open)(**file**);code=f.read().replace('\\r\\n', '\\n');f.close();exec(compile(code, **file**, 'exec'))" install --record /tmp/pip-1wala8fx-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-ktq1dypw/xgboost/
【原因】:ツールパッケージをインストールする際に、ウェブページを取得する必要があり、HTTPSを処理するために暗号化アルゴリズム(cryptographyパッケージ)に依存しています。cryptographyはさらにフーリエ変換アルゴリズムおよび対応するコンパイル環境に依存しています。Ubuntu 16.04ではlibffi-devとlibssl-devがデフォルトでインストールされておらず、gccも必ずしもインストールされていません。また、対象のインストールパッケージが関連するソフトウェアパッケージを依存リストに記録していない場合があります。
【解決方法】:sudo pip3 install python3-setuptools
**上記の方法を使用しても問題が解決しない場合**
【エラー】setuptoolsが既にインストールされていると表示されます
【原因】必要な依存パッケージがsetuptools dustで必要とするのはpip 2.xバージョンのsetuptoolsです
【解決方法】
- まずpipの古いバージョンをインストールし、pip2のsetuptoolsをダウンロードします
pip3 install -U pip setuptools - pipを使用して対応する依存パッケージをインストールします
pip install cryptography --force-reinstall pip install paramiko --force-reinstall - 依存パッケージのインストールが成功した後、pipを使用してxgboostをインストールできますが、警告が表示される場合があります
【警告】WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Looking in indexes: http://mirrors.aliyun.com/pypi/simple
【原因】pipが古いスクリプトラッパーによって呼び出されています。これはpipの将来のバージョンで失敗します。
この問題は、システムで新しいバージョンのpipをインストールした後、元のpip3を使用して操作を行った場合に発生します。
【解決方法】
python3 -m pip install --upgrade pip
以下のコマンドを使用してこの新しいpipをアンインストールできます
pip3 uninstall pip
3.2 Pythonバージョンの依存関係および接続問題
【原因】:一般的なLinuxシステムにはデフォルトでPython 2.xがインストールされています。これは一部の内部プログラムがPython 2.xのサポートを必要とするためです。現在、Python 3はすでに主流となっており、明らかにデフォルトのPython 2では私たちの使用するニーズを満たすことができません。そのため、Python 3をインストールすることを考え始めます。
**落とし穴**
サーバーのCentOSシステムの純粋性を保ち、潜在的なPythonバージョンの共存による競合を避けるため、最初にすることはPython 2をアンインストールすることですが、実際には絶対にしないでください。なぜなら、例えばCentOSのyumも一緒に削除されるからです。
【解決方法】
Step 1 Python公式サイトからPython 3インストールパッケージをダウンロードします
コマンドを実行します:
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
Step 2 zlib-develパッケージをインストールします(後でpipをインストールする際に使用します。ここで先にダウンロードしておけば、後で再コンパイルする必要がありません)
yum install zlib-devel
Step 3 解凍コマンド:
tar -xvf Python-3.6.5.tgz
Step 4 解凍したファイルをusr/localディレクトリに移動します
mv Python-3.6.5 /usr/local
Step 5 localディレクトリにpython3ディレクトリを作成します
mkdir /usr/local/python3
Step 6 解凍したフォルダに移動します
cd /usr/local/Python-3.6.5
インストールディレクトリを構成します
./configure --prefix=/usr/local/python
Step 7 ソースコードをコンパイルおよびインストールします
make && make install
Step 8 シンボリックリンクを構成します
- Python3をデフォルトにしない場合:
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 - Python3をデフォルトにする場合:
つまり、yumの構成も変更する必要があります。viを使用して /usr/bin/yumを開きます:
vim /usr/bin/yum最初の行の#! /usr/bin/pythonを#! /usr/bin/python2に変更します
- 同様にvi /usr/libexec/urlgrabber-ext-downでファイル内の
を#! /usr/bin/python
に変更します#! /usr/bin/python2 - 既存のシンボリックリンクを削除するのは慎重に使用してください:
rm -rf /usr/bin/python - 新しいシンボリックリンクを確立します:
ln -s /usr/local/python3/bin/python3 /usr/bin/python - テスト:
結果 Python3はインストールされましたが、実際にはyumも欠かせません。Python2をインストールする必要があります。python
したがって、最も賢明な方法は、元のPython 2をアンインストールせず、Pythonを共存管理する方法です。
本当にアンインストールした場合は問題ありません
wgetを使用してそれぞれPythonおよびyumのrpmパッケージをダウンロードします。必ずシステムのバージョン番号に対応していることを確認してください。
(1)Pythonのrpmパッケージをダウンロードします:
cd /usr/local/src/python
wget http://vault.centos.org/7.2.1511/os/x86_64/Packages/python-2.7.5-34.el7.x86_64.rpm
wget http://vault.centos.org/7.2.1511/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
wget http://vault.centos.org/7.2.1511/os/x86_64/Packages/python-pycurl-7.19.0-17.el7.x86_64.rpm
wget http://vault.centos.org/7.2.1511/os/x86_64/Packages/python-devel-2.7.5-34.el7.x86_64.rpm
wget http://vault.centos.org/7.2.1511/os/x86_64/Packages/python-libs-2.7.5-34.el7.x86_64.rpm
wget http://vault.centos.org/7.2.1511/os/x86_64/Packages/python-urlgrabber-3.10-7.el7.noarch.rpm
wget http://vault.centos.org/7.2.1511/os/x86_64/Packages/rpm-python-4.11.3-17.el7.x86_64.rpm
(2)yumのrpmパッケージをダウンロードします:
cd /usr/local/src/yum
wget http://vault.centos.org/7.2.1511/os/x86_64/Packages/yum-3.4.3-132.el7.centos.0.1.noarch.rpm
wget http://vault.centos.org/7.2.1511/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://vault.centos.org/7.2.1511/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-34.el7.noarch.rpm
5.Pythonおよびyumのrpmパッケージをインストールします
(1)Pythonをインストールします:
cd /usr/local/src/python
rpm -ivh python-* rpm-python-*
インストールパッケージの依存関係の問題が発生した場合は、以下のように解決してください:
rpm -ivh python-* rpm-python-* --nodeps --force
--nodeps --forceは依存パッケージを考慮せず、強制的にインストールします。
インストール後、pythonを実行できます
(2)yumをインストールします:
cd /usr/local/src/yum
rpm -ivh yum-*
依存関係の問題に遭遇した場合は、rpmのインストール順序に注意してください。*を使用してすべてを一度にインストールするのではなく、一つずつインストールすることを検討してください。なぜなら、相互に依存する可能性があるからです。
第四.参考URL
[1] https://gitee.com/openeuler/A-Tune?utm_source=alading&utm_campaign=repo