読者です 読者をやめる 読者になる 読者になる

ラズパイで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のインストール方法は以前の記事を参照。

takuocean.hatenablog.com

今回参考にしたURL

qiita.com

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

qiita.com

今回の環境

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をしようとしたら以下のようなエラーが出力された。 f:id:takuocean:20170321220645p:plain

だけど、家のネットワーク内部なら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はGoogleDNSサーバーらしい。
DNS(Domain Name System)とは-インターネット入門ガイド

Kali Linuxのターミナルのショートカット

Kali Linuxは初期設定としてターミナルのショートカットが割り振られていません。
僕は普段Ubuntuを使っていて、Ctrl+Alt+tで慣れているのでその設定にしたいと思います。

  • まずKali Linuxを立ち上げる
    f:id:takuocean:20170227204826j:plain

  • 次に右上のスピーカーマークをクリック
    f:id:takuocean:20170227204952j:plain

  • スパナとドライバがクロスしているマークをクリック
    f:id:takuocean:20170227205041j:plain

  • Keyboardをクリック
    f:id:takuocean:20170227205329j:plain

  • 一番したまでスクロールして+ボタンをクリック
    f:id:takuocean:20170227205400j:plain

  • 好きな設定をする

gnome-terminal:ターミナルを起動するコマンド → つまり、Ctrl+Alt+tでターミナルが起動するという設定

ここはお好みで!

*実際にやってみると
f:id:takuocean:20170227205635j:plain

Linuxでディレクトリ内のファイルの中身を一括変換する方法

任意のディレクトリ内のファイルの中身を一括変換するには以下のコマンドを利用する。

find . -type f | sed -i -e "s/変えたい文字/変換後の文字/g"

scriptやscreenコマンドでログに挿入されたラインフィールドやバックスペースを削除する方法

scriptやscreenコマンドを利用した場合、制御コード(ラインフィールドやバックスペースなど)も一緒にログとして残る。
この際、ラインフィールドやバックスペースは以下のように削除することができる。

col -bv < 変換前ファイル > 変換後ファイル