ラズパイでThe bug is not reproducible, so it is likely a hardware or OS problemと言われた
Rapbianにpyenvを使ってpython3.4.3をインストールしようとしたらエラーが出てきた。
pi@raspberrypi:~$ pyenv install 3.4.3 Downloading Python-3.4.3.tar.xz... -> https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz Installing Python-3.4.3... BUILD FAILED (Raspbian 8.0 using python-build 1.0.10-16-g30212f0) Inspect or clean up the working tree at /tmp/python-build.20170503005235.1237 Results logged to /tmp/python-build.20170503005235.1237.log Last 10 log lines: Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-4.9/README.Bugs> for instructions. gcc -pthread -c -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -I. -IInclude -I./Include -I/home/pi/.pyenv/versions/3. 4.3/include -I/home/pi/.pyenv/versions/3.4.3/include -DPy_BUILD_CORE -o Python/bltinmodule.o Python/bltinmodule.c gcc -pthread -c -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -I. -IInclude -I./Include -I/home/pi/.pyenv/versions/3. 4.3/include -I/home/pi/.pyenv/versions/3.4.3/include -DPy_BUILD_CORE -o Python/ceval.o Python/ceval.c gcc -pthread -c -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -I. -IInclude -I./Include -I/home/pi/.pyenv/versions/3. 4.3/include -I/home/pi/.pyenv/versions/3.4.3/include -DPy_BUILD_CORE -o Python/compile.o Python/compile.c The bug is not reproducible, so it is likely a hardware or OS problem. Makefile:1487: recipe for target 'Python/Python-ast.o' failed make: *** [Python/Python-ast.o] Error 1 make: *** Waiting for unfinished jobs....
解決策(?)
以下のようにカーネルとファームをアップデートをしたらうまくインストールできるようになった。
sudo apt-get dist-upgrade sudo rpi-update
Pyenvとpyenv-virtualenvの使い方(Raspbian)
pyenvとpyenv-virtualenvのインストールの仕方がMacOSとRaspbianとで違かったのでメモ。
MacOSのインストール方法は以前の記事を参照。
今回参考にしたURL
Raspbianでのインストール
sudo apt-get install git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev # pyenvインストール git clone https://github.com/yyuu/pyenv.git ~/.pyenv # pyenv-virtualenvのインストール git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
さらに~/.bash_profileを修正。
export PYENV_ROOT="${HOME}/.pyenv" if [ -d "${PYENV_ROOT}" ]; then export PATH=${PYENV_ROOT}/bin:$PATH eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" fi
あとの作業はMacOSと同様。
Pyenvとpyenv-virtualenvの使い方
使ったのでメモ
最近使ったのでメモした。
今回はディレクトリごとにpythonの設定を変えられるようにした。
参考URL
今回の環境
mac OSX Sierra
pyenvとpyenv-virtualenvって?
pythonのバージョンやインストールするpackageを作るターゲットごとに変えたい時がある。そんな時に使えるのがpyenvとpyenv-virtualenv!
pyenv
pyenvはpythonのバージョンを管理するツール。
例えば、python 3.4.3と2.7.10をインストールしてディレクトリごとに切り替えたりできる。
pyenv-virtualenv
pyenv-virtualenvはpyenvのプラグインになります。これを導入することでさらにディレクトリ単位でpythonのパージョン とパッケージを管理することができる。 #virtualenvというのも存在しますが、pyenv-virtualenvは違う。
環境の構築
まずはシェルの設定。僕はzshを使っているので、~/.zshrcに記入。 #bashの場合は ~/.bash_profileに記入
# ~/.zshrc export PYENV_ROOT="${HOME}/.pyenv" if [ -d "${PYENV_ROOT}" ]; then export PATH=${PYENV_ROOT}/bin:$PATH eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" fi
次にpythonの環境を構築
# pythonのインストール # VERSIONは例えば3.4.3など $ pyenv install VERSION # 環境構築 # NAMEは好きな名前で $ pyenv virtualenv VERSION NAME # 環境選択 # NAMEを切り替えることで環境を変えられる $ pyenv local NAME (NAME)$ pyenv versions system VERSION * NAME (set by /Users/XXXX/work/pyenv_test/.python-version) # 構築した環境を削除する場合 (NAME)$ pyenv uninstall NAME
パッケージを簡単に引き継ぐ方法
pip freezeを使うことで現環境で利用しているパッケージをリストとして保存ができる。
# インストールしてあるパッケージをリストにするコマンド $ pip freeze > mypckg.list # リストにしたパッケージをインストールするコマンド $ pip install -r mypckg.list
他の環境を立ち上げた後に
(NAME)$ pip install -r mypckg.list
でインストールできる。
Raspbianでapt-get updateをしようとしたらエラーが出た
Raspbianでapt-get updateをしようとしたらエラーが出たのでその時の対処をメモしました。
環境
マシーン:RaspberryPi Zero OS:Raspbian
症状
apt-get updateをしようとしたら以下のようなエラーが出力された。
だけど、家のネットワーク内部ならsshが繋がる。
-> 名前解決がうまくいっていなさそう
対処
1. /etc/network/interfacesを編集
/etc/network/interfacesはネットワークの設定をするためのファイルです。 このファイルに
dns-nameservers 8.8.8.8
を追記。
2. resolveconfをインストール
sudo apt-get install resolvconf
3. ネットーワークの再起動
sudo /etc/init.d/networking restart
これでうちの環境ではうまくいきました。
#魔法の言葉と思ってた8.8.8.8はGoogleのDNSサーバーらしい。
DNS(Domain Name System)とは-インターネット入門ガイド
Linuxでディレクトリ内のファイルの中身を一括変換する方法
任意のディレクトリ内のファイルの中身を一括変換するには以下のコマンドを利用する。
find . -type f | sed -i -e "s/変えたい文字/変換後の文字/g"
scriptやscreenコマンドでログに挿入されたラインフィールドやバックスペースを削除する方法
scriptやscreenコマンドを利用した場合、制御コード(ラインフィールドやバックスペースなど)も一緒にログとして残る。
この際、ラインフィールドやバックスペースは以下のように削除することができる。
col -bv < 変換前ファイル > 変換後ファイル