CentOSにEPELやRepoForge(旧RPMForge)リポジトリを追加する

CentOSには結構な数のパッケージが標準で用意されていますが、それでも足りないパッケージはあります。
ソースを持ってきてコンパイルするのも面倒って時は、EPEL(Extra Packages for Enterprise Linux)RepoForgeのリポジトリを追加すると便利です。

追加方法は簡単で、次のコマンドで追加できます。

CentOS6の場合

$ sudo yum install http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
$ sudo yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86\_64.rpm

※CentOS6以外は上記の公式HPにOS毎の*-releaseファイルへのリンクがあるので、そちらを参照してください。

これでEPELやRepoForgeからパッケージをyumコマンドで追加できるようになりましたが、このままだと標準のパッケージを追加したいのに不用意にパッケージを追加してしまう可能性があります。
このため、

$ sudo vi /etc/yum.repos.d/epel.repo
$ sudo vi /etc/yum.repos.d/rpmforge.repo

上記のファイルをそれぞれ開いて

enabled=1

となっている箇所を

enabled=0

に変更しておきます。
これで、yumを使っても勝手にインストールされることは無くなりました。

もし、EPELやRepoForgeからパッケージを追加したくなった時は、

$ sudo yum install パッケージ名 –enablerepo=epel,rpmforge

とenablerepoを付ければ一時的に指定したリポジトリが有効になります。

SSHでPermission Deniedになる場合

sshでサーバへ接続しようとすると、

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

このようなエラーが表示されて接続できない時がある。

偉い人がこちらで対策を纏めてくれてるけど、パーミッションを見直しても間違っていない。

これで、結構悩みました。

ssh -v(もしくは-vvvなど)を実行してみましたが、

略
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/hogehoge/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
略

となるはずが、

略
debug1: Offering RSA public key: /Users/hogehoge/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Trying private key: /Users/hogehoge/.ssh/id_dsa
debug1: Trying private key: /Users/hogehoge/.ssh/id_ecdsa
debug1: Trying private key: /Users/hogehoge/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

となって、接続できない。

この場合、サーバCent OS6系だと/etc/sshもしくは、~/.sshなどをls -lしてみてください。

# ls -l /etc/ssh/
-rw-r–r–. 1 root root 2047 8月 13 18:58 2015 ssh_config
略
-rw——- 1 root root 3870 2月 13 17:37 2016 sshd_config

パーミッションの後に「.」があるファイルとないファイルがある場合があります。
これは、ファイルがSELinuxで管理されていることを示しています。

私の場合、元のサーバから設定ファイルをコピーしてきたので、サーバのSELinuxが有効なまま、適切に設定されていないファイルが混じってしまい、sshdがファイルを読めなくなっていました。

対策としては、いろいろのあると思うのですが、

# vi /etc/sysconfig/selinux
SELINUX=disabled

などとして、SELinuxを無効にすると接続できるようになると思います。
もしくはls -lして.がついてるファイルに対して適切に設定してください。

pyenvのインストール

pythonのバージョンを簡単に使い分けられるように、まずはpyenvをインストールします。

pyenvのインストール


Macの場合

pyenvのインストールはMacの場合はHomebrewを使うと簡単にインストールできるので、それを利用します。
Homebrewについてはこちらをご覧ください。

brew install pyenv

また、pyenvに加えて、複数の環境をパッケージ構築できるvirtualenvもインストールしておきます。

brew install pyenv-virtualenv

Linuxの場合

以下のコマンドでGithubからダウンロードします。

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

インストール後の設定

インストールが完了したら、以下の内容を.profile(もしくは.bashrc等)に追加します。

# for pyenv
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

以下のコマンドでシェルを再起動すればpyenvコマンドが使えるようになっていると思います。

exec "$SHELL"

pythonのインストールのためのパッケージを追加

Ubuntuの場合、pythonのインストールのためには次のコマンドで開発用パッケージをインストールします。

$ sudo apt install build-essential gdb lcov pkg-config \
libbz2-dev libffi-dev libgdbm-dev  libgdbm-compat-dev liblzma-dev \
libncurses5-dev libreadline6-dev libsqlite3-dev libssl-dev \
lzma lzma-dev tk-dev uuid-dev zlib1g-dev

pyenvによるpythonのインストール

pyenvを使ってpythonをインストールするには、先にpyenvを最新にアップデートしておきます。

$ pyenv update

これによりインストールできるpythonのバージョンなどが最新になります。

インストールできるバージョンを確認するには

$ pyenv install -l
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4.0
  2.4.1
  略

とすることでインストールできるバージョンが一覧表示されます。
この中からインストールしたいバージョンを見つけたら、

$ pyenv install 3.9.13

の様に実行すると指定されたバージョンがインストールされます。

Pythonインストール時にオプションを指定する

pyinstallerなどを使おうと思ったら、

$ pyinstaller cmd.py --onefile
84 INFO: PyInstaller: 5.1
84 INFO: Python: 3.9.7
98 INFO: Platform: Linux-4.4.0-22000-Microsoft-x86_64-with-glibc2.31
略
OSError: Python library not found: libpython3.9mu.so.1.0, libpython3.9m.so, libpython3.9m.so.1.0, libpython3.9.so, libpython3.9.so.1.0
    This means your Python installation does not come with proper shared library files.
    This usually happens due to missing development package, or unsuitable build parameters of the Python installation.

    * On Debian/Ubuntu, you need to install Python development packages:
      * apt-get install python3-dev
      * apt-get install python-dev
    * If you are building Python by yourself, rebuild with `--enable-shared` (or, `--enable-framework` on macOS).

といった感じオプションつけて再構築しろと言われました。
この場合は、上記のように単にinstallするだけじゃなく、

env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.13

といった感じで実行するとオプションを指定してインストールすることが出来ます。