71388


## はじめに

### 環境

  * OS: Amazon Linux version 2018.03  
(Vagrant/VirtualBoxによってMacOS上に用意した仮想環境、[mvbcoding/awslinux](https://app.vagrantup.com/mvbcoding/boxes/awslinux)を使用)

  * Python: 2.7.12 (AWSに最初から入っていたPython)

### 問題点

上記環境にpyenvを用いてPython2.6.9をインストールして動作確認テストしようとしました。

まず下記のようなコマンドを打ってpyenvをインストールした。

[code]

    $ yum install git
    $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    
[/code]

※この後、[pyenvを用いたpython環境構築手順（CentOS7.1）](https://qiita.com/ksugawara61/items/ba9a51ebfdaf8d1a1b48)
を参考に `.bash_profile` も編集した

[code]

    $ pyenv --version
    pyenv 1.2.21
    
[/code]

その後、pyenvを使ってPython2.6.9をインストールするためrootユーザーに入った上で `pyenv install 2.6.9`
と打ったところ下記のエラーが出た。(`pyenv install --list`で2.6.9があるのは確認済。)

[code]

    [root@localhost ~]# pyenv install 2.6.9
    Downloading Python-2.6.9.tgz...
    -> https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz
    Installing Python-2.6.9...
    /root/.pyenv/plugins/python-build/bin/python-build: line 1539: patch: command not found
    
    BUILD FAILED (Amazon Linux AMI 2017.03 using python-build 1.2.21)
    
    Inspect or clean up the working tree at /tmp/python-build.20201021084730.4215
    Results logged to /tmp/python-build.20201021084730.4215.log
    
    Last 10 log lines:
    /tmp/python-build.20201021084730.4215 ~
    /tmp/python-build.20201021084730.4215/Python-2.6.9 /tmp/python-build.20201021084730.4215 ~
    
[/code]

その後に[pyenvのTroubleshooting](https://github.com/pyenv/pyenv/wiki)を参考に、「CentOS/Fedora
21 and below:」と書かれている`yum install`を実行したが結果は下記のようだった。

[code]

    [root@localhost ~]# pyenv install 2.6.9
    Downloading Python-2.6.9.tgz...
    -> https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz
    Installing Python-2.6.9...
    /root/.pyenv/plugins/python-build/bin/python-build: line 1539: patch: command not found
    
    BUILD FAILED (Amazon Linux AMI 2017.03 using python-build 1.2.21)
    
    Inspect or clean up the working tree at /tmp/python-build.20201021084900.4387
    Results logged to /tmp/python-build.20201021084900.4387.log
    
    Last 10 log lines:
    /tmp/python-build.20201021084900.4387 ~
    /tmp/python-build.20201021084900.4387/Python-2.6.9 /tmp/python-build.20201021084900.4387 ~
    
[/code]

/tmpの中は下記のようになっていた。

[code]

    python-build.20201021084730.4215      python-build.20201021084900.4387.log  vagrant-shell
    python-build.20201021084730.4215.log  python-patch.mfYkoj                   vboxguest-Module.symvers
    python-build.20201021084900.4387      python-patch.ZdyBkC
    
[/code]

### 質問

  * 上記現象の原因は何でしょうか？  
※logの中身を見ても原因が掴めません...

  * 上記の解決方法はあるでしょうか？

以上、宜しくお願いします！


CC BY-SA 4.0
2020-10-21T08:51:31.527
71385
2020-10-22T04:33:20.850
2020-10-21T11:49:10.260
3060
40683
question
python vagrant python2 pyenv amazon-linux
Amazon LinuxにpyenvでPython2.6.9を入れようとするとBUILD ERRORになる


`pyenv install` の実行結果の出力に、

> /root/.pyenv/plugins/python-build/bin/python-build: line 1539: patch:
> command not found

と表示されていますので、`patch` コマンドがインストールされていないと思われます。

おそらく yum コマンドで `patch` パッケージをインストールすれば解決するかと思われます。


CC BY-SA 4.0
2020-10-21T09:38:13.047
71388
2020-10-21T09:38:13.047
71385
answer


metropolis さんの回答、およびコメントに対する補足です。

Amazon Linux で使用する `yum`
コマンドは基本的に個別のパッケージ単位で指定しますが、オプションを使用することで関連するパッケージを「グループ」という単位で管理することができます。

具体的には `yum groupinstall` に続けてグループ名を指定します。

今回のようにソースコードのコンパイルが必要になるときには、"Development Tools" というグループを指定してインストールしておくと便利です。

**実行例:**

[code]

    $ sudo yum groupinstall "Development Tools"
    
[/code]

[Amazon Linux インスタンスでソフトウェアのコンパイルを準備する - Amazon Elastic Compute
Cloud](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/compile-
software.html)

> システムでソフトウェアのコンパイルを可能にするには、make、gcc、autoconf など、いくつかの開発ツールをインストールする必要があります。
>
> ソフトウェアのコンパイルはすべての Amazon EC2
> インスタンスで必要なタスクではないため、そのようなツールはデフォルトでインストールされていません。ただし、「Development
> Tools」という名前のパッケージグループで利用でき、yum groupinstall コマンドでインスタンスに簡単に追加されます。

なお、どんなパッケージがインストールされるのかは、`yum groupinfo <GROUPNAME>` で一覧が確認できます。

**CentOS 7 での実行結果 (参考):**

[code]

    $ sudo yum groupinfo "Development Tools"
    
    グループ: 開発ツール
     グループ ID: development
     説明: 基本的な開発環境
     強制的なパッケージ:
        autoconf
        automake
        binutils
        bison
        flex
        gcc
        gcc-c++
        gettext
        libtool
        make
        patch
        pkgconfig
        redhat-rpm-config
        rpm-build
        rpm-sign
     標準パッケージ:
        byacc
        cscope
        ctags
        diffstat
        doxygen
        elfutils
        gcc-gfortran
        git
        indent
        intltool
        patchutils
        rcs
        subversion
        swig
        systemtap
    
     ～(以下略)～
    
[/code]

**参考:**

[yumで関連パッケージをまとめて追加／削除するには -
@IT](https://www.atmarkit.co.jp/flinux/rensai/linuxtips/678yumgroup.html)


CC BY-SA 4.0
2020-10-21T12:01:20.247
71392
2020-10-22T04:33:20.850
2020-10-22T04:33:20.850
3060
3060
71385
answer