はじめに
上記で公開されている Cloud9のローカル環境インストール手順は、
64bit ARM 環境にインストールしようとするとエラー終了してしまいます。
半無理やり感もありますが、無事インストールできたのでインストール手順~デバッグ環境構築までを書いてみます。
BeagleBoneBlack : Cloud9 もともと入っている
NanoPi NEO : 公式手順で問題なくインストールできた
NanoPi NEO2 : エラーでてインストールできなかった。
Nanohat PCM5102A : 今回関係なし。(右上のNEOにもくっつけている)
なぜインストールに失敗する?
以下の3つの理由のようです
- install.sh でアーキテクチャ判定が非対応
- aarch64 が未サポートなのが原因
- install.sh で nodejs のパッケージが取れない
- arch64 ではなく、arm64 として取得しないといけない
- install.sh で ncurses のビルドに失敗
- config.guess が古く、./configure で失敗する。
- config.guess が aarch64 に対応できていない(模様)。
インストール手順 (2017/06/16 現在)
環境
- ハードウェア : NanoPi NEO2
- CPU : Allwinner H5
- MEM : 512 MB
- OS
- Official ROM image : nanopi-neo2_ubuntu-oled_4.11.2_20170531.img.zip
- kernel : Linux 4.11.2
- distribution : Ubuntu 16.04 LTS
- Official ROM image : nanopi-neo2_ubuntu-oled_4.11.2_20170531.img.zip
Cloud9 のインストール
インストール中 g++が必要になるので、入っていない場合は apt-get install g++で入れておきます。
では、本題のCloud9インストールです。
arm64以外に入れる場合は
apt install g++
cd /usr/local
git clone git://github.com/c9/core.git c9sdk
cd c9sdk
./scripts/install-sdk.sh
で済みます。
が、arm64では途中で失敗しまくります。
ですので、期待する結果になるようスクリプト修正しながら進めていきます
install-sdk.sh そのものと、呼び出される install.sh の2つのファイルを編集していきます。
行頭の+-は追加削除です。
cd /usr/local
git clone git://github.com/c9/core.git c9sdk
cd c9sdk
cp ./scripts/install-sdk.sh ./scripts/install-sdk-aarch64.sh
nano ./scripts/install-sdk-aarch64.sh
・
・
・
installGlobalDeps() {
if ! [[ -f ~/.c9/installed ]]; then
if [[ $os == "windows" ]]; then
URL=https://raw.githubusercontent.com/cloud9ide/sdk-deps-win32
else
URL=https://raw.githubusercontent.com/c9/install
fi
- $DOWNLOAD $URL/master/install.sh | bash
+ cat install.sh | bash
fi
}
・
・
・
wget https://raw.githubusercontent.com/c9/install/master/install.sh
nano install.sh
・
・
・
case "$arch" in
*armv6l*) arch=armv6l ;;
*armv7l*) arch=armv7l ;;
+ *aarch64*) arch=arm64 ;;
*x86_64*) arch=x64 ;;
*i*86*) arch=x86 ;;
*)
echo "Unsupported Architecture: $os $arch" 1>&2
exit 1
;;
esac
・
・
・
cd "$C9_DIR"
echo ":Compiling ncurses..."
tar xzf ncurses-5.9.tar.gz
+ DOWNLOAD https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.0.tar.gz ncurses-6.0.tar.gz
+ tar xzf ncurses-6.0.tar.gz
+ cp ./ncurses-6.0/config.guess ./ncurses-5.9
+ rm -r ncurses-6.0
+ rm ncurses-6.0.tar.gz
rm ncurses-5.9.tar.gz
cd ncurses-5.9
echo ":Configuring Ncurses"
CPPFLAGS=-P ./configure --prefix="$C9_DIR/local" --without-tests --without-cxx
echo ":Compiling Ncurses"
make
echo ":Installing Ncurses"
make install
・
・
・
scripts/install-sdk-aarch64.sh
successでれば成功です!
自動起動
rc.local に起動コマンドを追加。
ディストリビューションによっては、rc.local で自動起動されないので注意。
・
・
・
export HOME=/root
export PATH=$PATH:/root/.c9/node/bin
node /usr/local/c9sdk/server.js -l 0.0.0.0 -a : -w /root/ &
・
・
・
rc.local からcloud9起動するとhome directory must be set になるので、export HOMEも必要になっています。
自動起動自体は上記で動くようになるが、
デバッガ接続等する場合のために node へのパスを通しておく必要がある。
.bash の最終行にでも追加しておく。
nano ~/.bashrc
・
・
・
export PATH=$PATH:/root/.c9/node/bin
これでボードが起動すると自動的にCloud9が立ち上がるようになりました
デバッグ環境を整える
python
デバッガを有効にして実行すると以下が表示されるので、素直に従えばOK
/usr/bin/python2: No module named ikpdb
To use python debugger install ikpdb by running:
sudo apt-get update;
sudo apt-get install python-dev;
sudo pip install ikpdb;
指示通り
apt-get install python-dev
pip install ikpdb
を実行したらOKだった。
C, C++
デバッガを有効にして実行すると以下が表示されるので、
素直に従えうとハマる。かなりハマる。google先生に聞いても対処策が分からなかった。
ERROR while lauching the debugger:
"gdbserver" is not installed
結論は、
apt-get install gdbserver gdb
になるが、gdbserver 入れたのに動かない!って人は、
不適切なエラーログに悩まされている結果かも知れません。
気になる人は以下を直してみてね。
this.proc = spawn('gdb', ['-q', '--interpreter=mi2', BIN], {
detached: false,
cwd: process.cwd()
});
this.proc.on("error", function(e) {
console.error("ERROR while launching the debugger:");
if (e.code == "ENOENT") {
- console.log("\t\"gdbserver\" is not installed");
+ console.log("\t\"gdb\" is not found");
} else {
console.error(e);
}
});
ARM64用のインストールスクリプト (2018/09/09追加)
ARM64環境用のスクリプトを準備してみました。
以下でインストール&自動起動可能になります。
apt install g++
cd /usr/local
git clone git://github.com/blue777/Cloud9_core_arm64.git c9sdk
cd c9sdk
./scripts/install-sdk.sh
nano /etc/rc.local
-----
・・・
export HOME=/root
export PATH=$PATH:/root/.c9/node/bin
node /usr/local/c9sdk/server.js -l 0.0.0.0 -a : -w /root/ &
-----
reboot