一般的桌面 Linux distro 往往不像是 embedded linux distro 如 busybox/openwrt/Yocto 提供 self-contained 的開發環境,所以編譯某個軟體前需要安裝特定的 toolchain. 如果 distro 版本差異太大,可能會互相衝突。過去在 Debian 的作法是用 pbuilder, dchroot/schroot/mk-sbuild 中解決,這些工具可以造出一個 chroot 環境,編譯的時候裝上相依工具,編譯結束則還原到原始狀態。

近來 Linux Container (LXC) 技術成熟,透過 Docker/LXD 也可以很容易的建立起統一的開發環境給開發者使用。透過 container 的好處是確保每個人手上的開發環境肯定百分之百相容,不會受到 host os 的版本影響,也不會因為上游的 SDK package archive 更新,以至於無意中弄壞開發環境。

Ubuntu SDK 前兩個月發布了新的 Beta 版本[1][2][3],就是藉由 lxc 的技術來發送開發環境,一舉免去設置環境問題。只要裝了 Ubuntu SDK (Qt Creator)[4],就可以透過圖形界面設定編譯環境。你也可以透過 script 來手動建立與進入環境,細節可參考我在 gist 上發布的範例[7]。

另外強者我同事 Vicamo Yang 整理一落 Docker Images[5][6] 供開發者使用。

#lxd #docker #phablet #ubuntu #canonical
[1] 新的Ubuntu SDK IDE开放测试 | Ubuntu developer portal – https://developer.ubuntu.com/en/blog/2016/06/17/calling-testers-new-ubuntu-sdk-ide-pos/
[2] Calling for testers of the new Ubuntu SDK IDE | Ubuntu developer portal – https://developer.ubuntu.com/en/blog/2016/06/14/calling-testers-new-ubuntu-sdk-ide-post/
[3] New Ubuntu SDK Beta Version | Ubuntu developer portal – https://developer.ubuntu.com/en/blog/2016/06/28/new-ubuntu-sdk-beta-release3/
[4] Tools – development : “Ubuntu SDK team” team – https://launchpad.net/~ubuntu-sdk-team/+archive/ubuntu/tools-development
[5] Phablet images – https://hub.docker.com/u/phablet/
[6] phablet/docker_platform-devel: Docker images for Ubuntu Phablet platform development – https://github.com/phablet/docker_platform-devel
[7] How to use LXC/LXD images from Ubuntu SDK for Ubuntu Phone and Snappy – https://gist.github.com/chihchun/30fd95f9f906ab1e7731040eddc840ee