pycurlを使って通信するスクリプトを使っていると、httpsなURLにつないだ時に
GnuTLS recv error (-9): A TLS packet with unexpected length was received.
というエラーメッセージが出ることがある。これをなんとかしたい。
Ubuntu(Debian)のpython-pycurlパッケージは、libcurl4-gnutls-devに依存して作られている。これを、libcurl4-openssl-devを参照するようにパッケージを作り直せばよい。
$ sudo apt-get install build-essential fakeroot dpkg-dev
$ mkdir ~/python-pycurl-openssl
$ cd ~/python-pycurl-openssl
$ apt-get source python-pycurl
$ sudo apt-get build-dep python-pycurl
$ sudo apt-get install libcurl4-openssl-dev
$ dpkg-source -x pycurl_7.19.0-5ubuntu8.dsc
$ cd pycurl-7.19.0
ここで、 debian/control 内に書いてある "libcurl4-gnutls-dev"を"libcurl4-openssl-dev"に置換する。そのうえで、パッケージの作成&インストール。
$ dpkg-buildpackage -rfakeroot -b
$ sudo dpkg -i ../python-pycurl_7.19.0-5ubuntu8_i386.deb
以下に載っていた方法をそのまま。 http://serverfault.com/q/348815 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=515200