10: Edison上のYocto Linuxで採用されたパッケージマネージャ opkg をいじる
よく訓練されたアップル信者、都元です。昨日のエントリーはこちらです。さてここからは、Edisonに搭載されたYocto Linuxの中で動いていきます。久しぶりのソフトウェアの世界へ! 今回はopkgについてです。
細々とした環境整備
さてその前に。Edisonの中身はさすが組み込み、最低限の環境しかありません。bashが贅沢な世界です。/bin/shはbusyboxに繋がってます。
まぁ本番運用するハードならばそれが理想的かと思いますが、色々遊んでみるためには少しリッチな方向に調節したいものです。
# echo "alias ll='ls -la --color=auto'" >.profile # echo "rm='rm -i'" >>.profile # source .profile
上記を参考に、お好みの設定を書き込んでおきましょう。
opkg
私も初めて使うパッケージマネージャなので、細かいことはよくわかりません。とりあえずパッケージリポジトリの設定が必要なので、下記コマンドで設定ファイルを書き込みます。
# tee /etc/opkg/base-feeds.conf << _EOF_ >/dev/null src/gz all http://repo.opkg.net/edison/repo/all src/gz edison http://repo.opkg.net/edison/repo/edison src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32 _EOF_ # tee /etc/opkg/intel-iotdk.conf << _EOF_ >/dev/null src intel-all http://iotdk.intel.com/repos/1.1/iotdk/all src intel-iotdk http://iotdk.intel.com/repos/1.1/intelgalactic src intel-quark http://iotdk.intel.com/repos/1.1/iotdk/quark src intel-i586 http://iotdk.intel.com/repos/1.1/iotdk/i586 src intel-x86 http://iotdk.intel.com/repos/1.1/iotdk/x86 _EOF_
あとは下記の通りパッケージ一覧のダウンロード、opkg list-installedでインストール済みパッケージの確認、opkg list-upgradableでアップグレード対象のパッケージ確認等、色々やってみましょう。
# opkg update Downloading http://repo.opkg.net/edison/repo/all/Packages.gz. Inflating http://repo.opkg.net/edison/repo/all/Packages.gz. Updated list of available packages in /var/lib/opkg/all. Downloading http://repo.opkg.net/edison/repo/edison/Packages.gz. Inflating http://repo.opkg.net/edison/repo/edison/Packages.gz. Updated list of available packages in /var/lib/opkg/edison. Downloading http://repo.opkg.net/edison/repo/core2-32/Packages.gz. Inflating http://repo.opkg.net/edison/repo/core2-32/Packages.gz. Updated list of available packages in /var/lib/opkg/core2-32. Downloading http://iotdk.intel.com/repos/1.1/iotdk/all/Packages. Updated list of available packages in /var/lib/opkg/intel-all. Downloading http://iotdk.intel.com/repos/1.1/intelgalactic/Packages. Updated list of available packages in /var/lib/opkg/intel-iotdk. Downloading http://iotdk.intel.com/repos/1.1/iotdk/quark/Packages. Updated list of available packages in /var/lib/opkg/intel-quark. Downloading http://iotdk.intel.com/repos/1.1/iotdk/i586/Packages. Updated list of available packages in /var/lib/opkg/intel-i586. Downloading http://iotdk.intel.com/repos/1.1/iotdk/x86/Packages. Updated list of available packages in /var/lib/opkg/intel-x86.
こちらでフルアップグレード。
# opkg upgrade
こんな感じでモノをインストールできます。
# opkg install bash git
せっかくbashをインストールしたので使いましょう。
# chsh -s /bin/bash
easy_installとpipの導入
# wget https://bootstrap.pypa.io/ez_setup.py --no-check-certificate -O - | python # easy_install pip # pip -V pip 1.5.6 from /usr/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg (python 2.7)
簡単ですね。素晴らしい。
aws-cliの導入
pipまで入ってしまえば、これもコレだけ! 簡単すぎますね。
# pip install awscli # aws --version aws-cli/1.6.7 Python/2.7.3 Linux/3.10.17-poky-edison+
Javaの導入
Javaを入れたくなってしまいました。はい、わたくしjava-jaから来ました。
# wget --no-check-certificate --no-cookies - --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u25-b17/jdk-8u25-linux-i586.tar.gz # tar -xvzf jdk-8u25-linux-i586.tar.gz # ln -s /home/root/jdk1.8.0_25 /usr/java # echo 'export PATH=$PATH:/usr/java/bin' >>.profile # source .profile # java -version java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) Client VM (build 25.25-b02, mixed mode)
Javaの利用許諾には別途同意してください :)
うぇっへっへ。ちなみに、/usr/javaに直接展開しようとしたら、disk fullでした…。/homeに大きなディスクがマウントされてるんですねー。
# df -h Filesystem Size Used Available Use% Mounted on /dev/root 463.9M 386.7M 41.4M 90% / devtmpfs 480.2M 0 480.2M 0% /dev tmpfs 480.5M 0 480.5M 0% /dev/shm tmpfs 480.5M 496.0K 480.0M 0% /run tmpfs 480.5M 0 480.5M 0% /sys/fs/cgroup tmpfs 480.5M 496.0K 480.0M 0% /etc/machine-id systemd-1 5.5M 5.1M 454.0K 92% /boot tmpfs 480.5M 4.0K 480.5M 0% /tmp systemd-1 2.2G 473.5M 1.8G 21% /home tmpfs 480.5M 0 480.5M 0% /var/volatile /dev/mmcblk0p5 1003.0K 19.0K 913.0K 2% /factory /dev/mmcblk0p10 2.2G 473.5M 1.8G 21% /home /dev/mmcblk0p7 5.5M 5.1M 454.0K 92% /boot
さて、動作確認。
# tee Hello.java << _EOF_ >/dev/null public class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); } } _EOF_ # javac Hello.java # java Hello Hello, world!
OKです! (Javaだけ確認が念入り)
やっちまった時 〜 リセット
色々いじりすぎて収集がつかなくなってしまったら、reboot otaコマンドを撃ちこめば、configure_edisonを実行する前まで戻ってくれます。OSさえ起動しなくなってしまったら…。USBからどうにかする手段があるようなので、また別の機会にご紹介しますね。
明日のエントリーはこちらです。