18 December 2018

さくらインターネット 共用サーバにpipでBeautifulSoupパッケージをインストールする

さくらインターネットの共用サーバに、新たにpip(Pythonパッケージのインストールを行うユーティリティ)を導入し、HTMLスクレイピングを行うBeautifulSoupパッケージをインストールした時のメモ

OpenSSLとpython 2.7をユーザディレクトリにインストール

共用サーバに標準でインストールされているOpenSSLが古く、(piphttpsサイトにアクセスするときにエラー発生の原因となるため、新しいOpenSSLとそれに対応したPython 2.7系をローカルにインストールする。

参考記事として、『 さくらのレンタルサーバでHTTPS (TLS) 対応のPython 2.7をビルドした記録 』をそのまま適用可能だった。

まず、現在のOpenSSLのバージョン、Pythonのバージョンを調べる

$ python -c 'import ssl; print ssl.OPENSSL_VERSION'
OpenSSL 0.9.8zf 19 Mar 2015
 
$ python --version
Python 2.7.6

ローカルのインストールディレクトリを確認し、存在しない場合は作成する

$ mkdir -p ~/.local/lib/python2.7/site-packages

OpenSSLのビルドとインストール

$ wget https://www.openssl.org/source/openssl-1.0.2q.tar.gz
$ tar xvfz openssl-1.0.2q.tar.gz
$ cd openssl-1.0.2q
$ ./config --prefix=${HOME}/.local -fPIC
$ gmake
$ gmake test
$ gmake install

Python 2.7のビルドとインストール。Pythonは2.7系の最新バージョンをhttps://www.python.org/ftp/pythonで調べてダウンロードした

なお、Pythonのgmake testは時間がかかりすぎるため、システム側からkillされてしまった。test実行なしに、いきなりinstallを行ったが特に問題はない

$ wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz
$ tar xvfz Python-2.7.15.tgz
$ cd Python-2.7.15
$ env CXX=/usr/bin/g++ ./configure --prefix=${HOME}/.local --enable-unicode=ucs4
$ gmake
$ gmake install

環境変数の設定

.cshrcを次のように設定する

~/.cshrc
set path = ($HOME/.local/bin /sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin $HOME/bin)
 
setenv PYTHONPATH $HOME/.local/lib/python2.7/site-packages
setenv LD_LIBRARY_PATH $HOME/.local/lib

変更を反映するには、次のコマンドを実行するか、いったんログアウトして再ログインする。

$ source ~/.cshrc

OpenSSLとPythonのインストール状態の確認

$ which python
/home/USER_NAME/.local/bin/python
 
$ python -c 'import ssl; print ssl.OPENSSL_VERSION'
OpenSSL 1.0.2q  20 Nov 2018
 
$ python --version
Python 2.7.15

~/.local/binにインストールされたファイルは

$ ls -la ~/.local/
total 28
drwxr-xr-x   7 tmg1136-inue  users   512 18/12/17 22:47 ./
drwx------  25 tmg1136-inue  users  1024 18/12/17 22:52 ../
drwxr-xr-x   2 tmg1136-inue  users   512 18/12/17 22:56 bin/
drwxr-xr-x   4 tmg1136-inue  users   512 18/12/17 22:47 include/
drwxr-xr-x   5 tmg1136-inue  users   512 18/12/17 22:47 lib/
drwxr-xr-x   3 tmg1136-inue  users   512 18/12/17 22:47 share/
drwxr-xr-x   6 tmg1136-inue  users   512 18/12/17 22:14 ssl/
 
$ ls -la ~/.local/bin/
total 9272
drwxr-xr-x  2 tmg1136-inue  users      512 18/12/17 22:56 ./
drwxr-xr-x  7 tmg1136-inue  users      512 18/12/17 22:47 ../
-rwxr-xr-x  1 tmg1136-inue  users      116 18/12/17 22:22 2to3*
-rwxr-xr-x  1 tmg1136-inue  users     5131 18/12/17 22:14 c_rehash*
-rwxr-xr-x  1 tmg1136-inue  users      245 18/12/17 22:56 chardetect*
-rwxr-xr-x  1 tmg1136-inue  users      254 18/12/17 22:52 easy_install*
-rwxr-xr-x  1 tmg1136-inue  users      254 18/12/17 22:52 easy_install-2.7*
-rwxr-xr-x  1 tmg1136-inue  users      114 18/12/17 22:22 idle*
-rwxr-xr-x  1 tmg1136-inue  users  3020552 18/12/17 22:14 openssl*
-rwxr-xr-x  1 tmg1136-inue  users      236 18/12/17 22:52 pip*
-rwxr-xr-x  1 tmg1136-inue  users      236 18/12/17 22:52 pip2*
-rwxr-xr-x  1 tmg1136-inue  users      236 18/12/17 22:52 pip2.7*
-rwxr-xr-x  1 tmg1136-inue  users       99 18/12/17 22:22 pydoc*
lrwxr-xr-x  1 tmg1136-inue  users        7 18/12/17 22:47 python@ -> python2
lrwxr-xr-x  1 tmg1136-inue  users       14 18/12/17 22:47 python-config@ -> python2-config
lrwxr-xr-x  1 tmg1136-inue  users        9 18/12/17 22:47 python2@ -> python2.7
lrwxr-xr-x  1 tmg1136-inue  users       16 18/12/17 22:47 python2-config@ -> python2.7-config
-rwxr-xr-x  1 tmg1136-inue  users  6261818 18/12/17 22:47 python2.7*
-rwxr-xr-x  1 tmg1136-inue  users     1702 18/12/17 22:47 python2.7-config*
-rwxr-xr-x  1 tmg1136-inue  users    18562 18/12/17 22:22 smtpd.py*
-rwxr-xr-x  1 tmg1136-inue  users      239 18/12/17 22:55 trac-admin*
-rwxr-xr-x  1 tmg1136-inue  users      242 18/12/17 22:55 tracd*
-rwxr-xr-x  1 tmg1136-inue  users      232 18/12/17 22:52 wheel*

pipのインストール

$wget https://bootstrap.pypa.io/get-pip.py
$python get-pip.py

または

$ easy_install --prefix=~/.local pip

BeautifulSoupほか、必要なパッケージをインストール

$ pip install beautifulsoup
$ pip install chardet
$ pip install trac

tracは『【さくらインターネット】 ユーザ権限でSubversionのWebインターフェースを運用』でインストールした後、使わなくて放置していたものだが、とりあえず再インストールした。

インストールされているライブラリ一覧を表示してみる

$ python -m pip freeze
BeautifulSoup==3.2.1
chardet==3.0.4
Genshi==0.7.1
Trac==1.2.3