/usr/bin/ld: cannot find -lpython2.7のエラーについて

vagrant(+virtualbox+centos6.4)でpythonが動く程度までの私的記録
 
上記の記事の次に、プロジェクトを作り、MySQLpythonから接続しようとすると
接続するためのモジュールがないと怒られたので(今回の場合MySQLdb)、mysql-pythonを入れた。
 
 
pip経由から

sudo pip install mysql-python

でいけると思ったのだが、エラーが出た。
 
 
エラーの内容は

sudo pip install mysql-python
    ...(略)...
    /usr/bin/ld: cannot find -lpython2.7
    ...(略)...
    error: command 'gcc' failed with exit status 1

で、最初、一番下の行しか見ていなかった私は、gccに失敗?入ってないの?と勘違いしてしまい、
gccを入れようとして、既に入っているよと怒られた。
ああ、失敗ってgccで何かを実行しているときに失敗したと言っているのか。
 
 
よくよく見ると-lpython2.7(python2.7のlib)が見つからないのかと気づき、
PATHの通っている/usr/localにシンボルリンクを貼り事なきを得た。

ln -s /usr/local/python27/lib/libpython2.7.so /usr/local/lib/

 
 

Pythonスタートブック

Pythonスタートブック

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )

CentOS 6で作るネットワークサーバ構築ガイド (Network Server Construction Guide S)

CentOS 6で作るネットワークサーバ構築ガイド (Network Server Construction Guide S)

vagrant(+virtualbox+centos6.4)でpythonが動く程度までの私的記録

macユーザの私はvagrant&virtualbox本家から

Vagrant-1.3.4.dmg
VirtualBox-4.2.18-88780-OSX.dmg

を取得しインストール。
 
 
OSは某有名boxサイトから、取得し立ち上げる。

vagrant box add centos64  CentOS-6.4-x86_64-v20130731.box
mkdir vmCentOS
cd vmCentOS
vagrant init centos64

Vagrantfile

config.vm.network :private_network, ip: "192.168.33.10" //コメントアウト削除
vagrant up //起動

 
 
vagrantのプラグインの一つであるsahara (0.0.15)をインストール

vagrant plugin install sahara
vagrant sandbox on //off commit rollbackなど

 
 
仮想環境に接続

vagrant ssh

 
 
yumを最新状態に変更

yum update

 
 
日本語化

vi /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"

 
 
タイムゾーンをJSTに変更

cp -p /usr/share/zoneinfo/Japan /etc/localtime

 
 
sudoでも/usr/local/binにPATHを通す

visudo
Defaults    secure_path = /usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin #/usr/local/bin追加

 
 
iptablesは使わないのでstop

service iptables stop
chkconfig iptables off

 
 
vimのインストール

yum -y install vim-enhanced
ln -s /vagrant/.vim ~/ #自前で用意したフィアルを適用
ln -s /vagrant/.vimrc ~/ #自前で用意したフィアルを適用

 
 
apacheのインストールから最低限の設定

yum -y install httpd
service httpd start
chkconfig httpd on
mkdir -p /vagrant/www/html #共用フォルダ
rm -rf /var/www
ln -s /vagrant/www /var/www
vim /var/www/html/index.html

vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80 #コメントアウトを削除

 
 
 
MySQLのインストール

sudo yum -y install mysql-server
vim my.cnf #文字コードUTF-8, InnoDB設定
service mysqld start
mysql_secure_installation
chkconfig mysqld on

 
 
pythonを入れる前に入っていなかった必要なものをインストール
(ほとんどデフォルトで入っていたので3つだけ)

sudo yum -y install gdbm-devel
sudo yum -y install bzip2-devel
sudo yum -y install install zip

 
 
python2.7.5のインストール

wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz
tar xvzf Python-2.7.5.tgz 
cd Python-2.7.5
./configure --enable-shared --prefix=/usr/local/python27
make
make test
make install
ln -s /usr/local/python27/bin/python /usr/local/bin/python
sudoedit /etc/ld.so.conf #python/lib追加
ldconfig

 
 
easy_installとpipインストール

/usr/local/bin/python distribute-0.6.49/setup.py
/usr/local/bin/python distribute-0.6.49/setup.py install
ln -s /usr/local/python27/bin/easy_install /usr/local/bin/easy_install
easy_install pip
ln -s /usr/local/python27/bin/pip /usr/local/bin/pip

 
 
今日のところはここまで。
 
 
 

Vagrant入門ガイド

Vagrant入門ガイド

Vagrant: Up and Running

Vagrant: Up and Running

CentOS 6で作るネットワークサーバ構築ガイド (Network Server Construction Guide S)

CentOS 6で作るネットワークサーバ構築ガイド (Network Server Construction Guide S)

sqlite3で追加できないカラムを追加する

基本的にカラムを追加する場合は

ALTER TABLE テーブル ADD COLUMN カラム;

で追加できるのだが、追加できないカラムがある。
 

The column may not have a PRIMARY KEY or UNIQUE constraint.
The column may not have a default value of CURRENT_TIME, CURRENT_DATE, CURRENT_TIMESTAMP, or an expression in parentheses.
If a NOT NULL constraint is specified, then the column must have a default value other than NULL.
If foreign key constraints are enabled and a column with a REFERENCES clause is added, the column must have a default value of NULL.

SQLite Query Language: ALTER TABLE引用

ようするに、PRIMARY KEYやUNIQUE、DEFAULT値にCURRENT_TIME CURRENT_DATE  CURRENT_TIMESTAMPを設定、DEFAULTのないNOT NULLなどは基本的に追加できない。
 
 
そこで、無理矢理カラムを追加してみた。
 
 
たぶん、やり方は2パターン(他にもあるかも)

  • .dumpでデータベースのバックアップファイルを作成し、dumpファイルのCREATE文のところを編集し、.readする。
  • テーブルをリネームし、新しくテーブルを作成したら、リネームしたデータベースから新しいデータベースにデータをINSERTする。

 
 
.dumpはテーブル数が多くなると時間がかかりかねないので、今回は二番目の方法でやってみた。
 
 

ALTER TABLE テーブル RENAME TO TMP;
CREATE TABLE テーブル(ID, NAME, ...); <=新しいカラム追加
INSERT INTO テーブル(ID, NAME, ...) SELECT ID, NAME, ... FROM TMP;
DROP TABLE TMP;
VACUUM;

 
 
もっとスマートにできる方法ないかな。
 
 

SQLite入門 第2版

SQLite入門 第2版


SQLite ポケットリファレンス

SQLite ポケットリファレンス


CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)


Using SQLite

Using SQLite

Macにて、Finderのサイドバーを表示させるショートカットキー

f:id:yufu4:20130630200603p:plain
前の記事でMacのFinderのサイドバーが表示されなくなるバグがあると言う話をしたが、
バグでないケースもある。


そんなときは、ショートカットキーのCommand+option+sでサイドバーの表示/非表示ができる。


結局私の場合はリセットするはめになったのだが。


どうも、サイドバーの表示で困ってこのブログにアクセスする人もいるみたいなので補足しておこう。




Rain Design Rain Design mStand RDMSTND

Rain Design Rain Design mStand RDMSTND


絶対領域(tsundere)

絶対領域(tsundere)

MacにてFinderのサイドバーが表示できない問題

先日いきなり、MacのFinderの左側にあるサイドバーがで表示されなくなってしまった。
f:id:yufu4:20130630200603p:plain


そこで、設定にあるサイドバーとか触ってみたりしたのだが
いっこうに直らない。


どうも、調べてみると、
表示できなくなるバグとか存在してるらしい。
(特にOSをバージョンアップして10.8にしてるとなるユーザがいる)


そこで、設定ファイルを削除する事によって、
デフォルトのFinder+サイドバーの状態にして、
事なきを得た。

$cd /Users/ユーザ名/Library/Preferences
$rm com.apple.finder.plist
$rm com.apple.sidebarlists.plist

(再起動)


サイドバーって以外と必要だ等言うことを、
今回表示できなくなって実感した。




Macを買ったら最初に読む本 OS X Lion対応版

Macを買ったら最初に読む本 OS X Lion対応版


Apple Magic Mouse MB829J/A

Apple Magic Mouse MB829J/A


Apple Magic Trackpad MC380J/A

Apple Magic Trackpad MC380J/A


Apple Keyboard テンキー付き -JIS MB110J/B

Apple Keyboard テンキー付き -JIS MB110J/B


PLANEX Mini Displayport -]VGA端子変換アダプタ (MacBook MacBook Pro MacBook Air) PL-MDPVG02

PLANEX Mini Displayport -]VGA端子変換アダプタ (MacBook MacBook Pro MacBook Air) PL-MDPVG02

pydocのHTML出力を日本語化、UTF-8化

pydocを使ってHTML化したファイルがEN仕様になっている。
文字コードが設定されていないため、文字化けする。
(chrome日本版とかでエンコードを自動検出にしていると、文字コードの指定がないためShift-JISになり、文字化けする)


ブラウザのエンコードUTF-8にしたら解決するのだが
自動検出のままにしておきたかったのでpydocの方を編集した。

vim /opt/local/Library/Frameworks/Python.framework/Version/2.7/lib/python2.7/pydoc.py <=私の環境の場合
    def page(self, title, contents):
        """Format an HTML page."""
        return '''
<!DOCTYPE html> <=書き換え
<html lang="ja"><head><title>Python: %s</title> <=lang追加
<meta charset="UTF-8" /> <=meta追加
</head><body bgcolor="#f0f0f8">
%s
</body></html>''' % (title, contents)


初めてのPython 第3版

初めてのPython 第3版


エキスパートPythonプログラミング

エキスパートPythonプログラミング


Utf-8

Utf-8


Utf-8

Utf-8

  • 作者: Lambert M. Surhone,Mariam T. Tennoe,Susan F. Henssonow
  • 出版社/メーカー: Betascript Publishing
  • 発売日: 2011/03/29
  • メディア: ペーパーバック
  • クリック: 9回
  • この商品を含むブログを見る

UTF-8

UTF-8

  • 作者: Lambert M. Surhone,Miriam T. Timpledon,Susan F. Marseken
  • 出版社/メーカー: Betascript Publishers
  • 発売日: 2009/12
  • メディア: ペーパーバック
  • クリック: 3回
  • この商品を含むブログを見る

Javascript(jQuery)でformを生成して.submit()するとFirefoxだけ動作しないエラー

$('<form/>', {action: '/url', method: 'post'})
    .append($('<input/>', {type: 'hidden', name: 'test1', value: 'data1'}))
    .append($('<input/>', {type: 'hidden', name: 'test2', value: 'data2'}))
    .submit();


と書いて、ChromeとかSafariとかで動いているから満足していたが、
どうも、Firefoxだけ動かないと言うことが発覚して修正した。


submit()する前に一度bodyにFormデータを追加してあげると良いみたい。


ということで修正後

var form = $('<form/>', {action: '/url', method: 'post'})
    .append($('<input/>', {type: 'hidden', name: 'test1', value: 'data1'}))
    .append($('<input/>', {type: 'hidden', name: 'test2', value: 'data2'}));
$('body').append(form);
form.submit();






JavaScript 第6版

JavaScript 第6版

よくわかるJavaScriptの教科書

よくわかるJavaScriptの教科書

Web制作の現場で使う jQueryデザイン入門 (WEB PROFESSIONAL)

Web制作の現場で使う jQueryデザイン入門 (WEB PROFESSIONAL)

10日でおぼえる jQuery入門教室

10日でおぼえる jQuery入門教室