動かざることバグの如し

近づきたいよ 君の理想に

【Raspi】Cronが実行されない場合の対処法

環境

  • Raspberry Pi 2
  • RASPBIAN JESSIE LITE Release date:2016-05-10

cron書いても実行されない

書式間違ってるのと思って何度も確認したけど改善しなかった

原因

ふと/var/log/syslogを見てみると大量の失敗ログがあるではないか!

May 29 22:49:01 raspberrypi CRON[22648]: (pi) CMD (/bin/bash -lc 'cd /home/pi/hoge && bundle exec ruby save.rb')
May 29 22:49:01 raspberrypi CRON[22644]: (CRON) info (No MTA installed, discarding output)

No MTA installed, discarding output

どうもデフォルトでMTAがインストールされていないらしく、postfixをインストールする必要がある

sudo apt-get install postfix

最初っからいれとけよこんなもん>Raspi

【Ruby】bundleコマンド叩くとbad interpreter: No such file or directoryとエラーになる件

発端

rubyで開発する際にbundleコマンド使うじゃないですか、bundle installとかにつかうアレ。

あれをRaspberry Piで使おうとしたら

pi@raspberrypi:~ $ /bin/bash -lc 'cd /home/pi/hoge && bundle exec ruby save.rb'
/bin/bash: /usr/bin/bundle: /usr/bin/ruby: bad interpreter: No such file or directory

ってエラーになって使えない。

インストールしてみる

どうやらRubyはrbenv経由で正しくインストールできてるっぽいけど、bundlerが入ってなかったぽい

gem install bundler

こうすると使える が、 再起動したりSSHだとログアウトするとまた使えなくなる

対処

rbenv global 2.3.0 #各自のバージョン
rbenv rehash

~/.bash_profileに以下追記

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

これで一応ログアウトしてもできるようになったけどもうちょっとこの辺の仕組み理解しないとまずいなぁ

【MariaDB】インストールから外部から接続までの設定

環境

インストール

公式サイト見ればクッソ丁寧に書いてあるからそれ見ような(投

Downloads - MariaDB

初期設定

まずはダルい文字コード問題を解決すべく、すべてのDBをUTF-8にして、外部からの接続を許可する

/etc/mysql/my.cnf の以下を修正

[client]
(追記)
default-character-set=utf8

[mysqld]
(追記)
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

(コメントアウト)
# bind-address = 127.0.0.1

設定反映

service mysql restart

ログインして、ちゃんとエンコード設定できているか確認

show variables like 'character_set%';

以下のように表示されればおk

MariaDB [(none)]> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

ユーザーの作成

GRANT ALL PRIVILEGES ON *.* TO thr3a@'%' IDENTIFIED BY 'パスワード' WITH GRANT OPTION;

Raspberry Pi用RubyをUbuntuでクロスコンパイルしたい人生だった

依存ライブラリのインストール

公式ドキュメントを参考にするといいかも このライブラリたちはクロスコンパイル関係なしにRubyのビルドに必要

sudo apt-get update
sudo apt-get install -y git autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
sudo apt-get build-dep -y ruby2.0 # rubyだけでもおkっぽい?

以下はRaspi向けにクロスコンパイルするときに必要

sudo apt-get install -y  gcc-arm-linux-gnueabihf

Rbenvのインストール

そもそもシステムにRubyが入ってないといけない

まずはrbenvを使ってシステムにRubyをインストール

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
rbenv --version

次にruby-buildをインストール

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

いざコンパイル

rbenv install 2.3.0 --verbose
rbenv global 2.3.0 --verbose

ロスコンパイル

もう一つ用意

git clone https://github.com/sstephenson/ruby-build.git ~/

設定

export RUBY_BUILD_BUILD_PATH=/tmp/ruby-build
export CC=arm-linux-gnueabihf-gcc
export CONFIGURE_OPTS="--host x86_64-linux-gnu --build arm-linux-gnueabihf --disable-install-rdoc --disable-install-ri"
export MAKE_OPTS=-j4

いざコンパイル

ruby-build/bin/ruby-build --verbose 2.3.0 ruby-2.3.0-armhf