2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[memo] Cloud9 を NanoPi NEO2 にインストールする

Last updated at Posted at 2017-06-16

はじめに

https://github.com/c9/install

上記で公開されている Cloud9のローカル環境インストール手順は、
64bit ARM 環境にインストールしようとするとエラー終了してしまいます。
半無理やり感もありますが、無事インストールできたのでインストール手順~デバッグ環境構築までを書いてみます。

_72D8784.PNG

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 現在)

環境

Cloud9 のインストール

インストール中 g++が必要になるので、入っていない場合は apt-get install g++で入れておきます。

では、本題のCloud9インストールです。
arm64以外に入れる場合は

NanoPi-NEO
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つのファイルを編集していきます。
行頭の+-は追加削除です。

NanoPi-NEO2
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
./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
}
	・
	・
	・
NanoPi-NEO2
wget https://raw.githubusercontent.com/c9/install/master/install.sh
nano install.sh
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
	・
	・
	・
NanoPi-NEO2
scripts/install-sdk-aarch64.sh

successでれば成功です!

スクリーンショット (3).jpg

自動起動

rc.local に起動コマンドを追加。
ディストリビューションによっては、rc.local で自動起動されないので注意。

/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/ &
	・
	・
	・

rc.local からcloud9起動するとhome directory must be set になるので、export HOMEも必要になっています。

自動起動自体は上記で動くようになるが、
デバッガ接続等する場合のために node へのパスを通しておく必要がある。
.bash の最終行にでも追加しておく。

nano ~/.bashrc

~/.bashrc
	・
	・
	・
export PATH=$PATH:/root/.c9/node/bin

これでボードが起動すると自動的にCloud9が立ち上がるようになりました

スクリーンショット (5).png

デバッグ環境を整える

python

デバッガを有効にして実行すると以下が表示されるので、素直に従えばOK

stderr
/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先生に聞いても対処策が分からなかった。

srderr
ERROR while lauching the debugger:
     "gdbserver" is not installed

結論は、

apt-get install gdbserver gdb

になるが、gdbserver 入れたのに動かない!って人は、
不適切なエラーログに悩まされている結果かも知れません。
気になる人は以下を直してみてね。

~/.c9\bin\c9gdbshim.js
        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
2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?