2017/02/27

Alpine Linux sys mode 安裝及自訂套件編譯

再試了一陣子, 1GB ram 跑 'data' mode 後, 根目錄裝了 firefox 後就剩下 39MB, 所以,我還是改用 'sys' mode, 也就是傳統的 Linux 硬碟安裝法. 看看是否可以編譯 Alpine Linux 套件...(2017/02/28更新)
安裝歷程
  1. 以原本的'data'模式隨身碟開機後,用setup-alpine 安裝到另一支目的隨身碟
  2. 重開機後, 其實就相當於之前設定的 'data'模式內容, 但是之前為了避免佔用根目錄記憶體空間, 採用 symbolic link 指到隨身碟的空間就必須改回原本的設定, 再copy資料過去(例如:/home/xxx, /var/lib/docker, /etc/apk/cache)
    1. rm /etc/apk/cache ; ln -s /var/cache/apk /etc/apk/cache  # cache 不需要 copy
  3. 調整 /boot/extlinux.cfg 把 TIMEOUT 從 30 改成 1 加速開機(單位0.1秒,改為0代表永遠等待)
加上開發環境
  1. sudo apk add alpine-sdk git-email autoconf automake libtool coreutils
  2. sudo addgroup xxx abuild # 將 xxx 加入開發群組
  3. sudo vim /etc/abuild.conf # 修改 MAINTAINER, 將 ERROR_CLEANUP=""
  4. sudo chown xxx /var/cache/distfiles
  5. abuild-keygen -a -i
取得 Alpine Linux 全部的編譯 scripts
  1. 官方建議用 git://dev.alpinelinux.org/aports , 但事實上github比較好用
  2. 例如: https://github.com/dlintw/aports, 這樣未來可以用 pull request 來要求併入
移植 gmock 到 alpine (build synergy 要先準備)
  1. 取得 Arch Linux 的 synergy build script 
  2. cd aports/testing
  3. newapkbuild gmock
  4. cd gmock
  5. vim APKBUILD # 將 Arch 的 PKGBUILD 改寫成 Alpine 的 APKBUILD
  6. abuild -r -i
  7. 產生的檔案會放在 ~/packages 底下, 再使用 sudo apk add ... 安裝即可
移植 synergy 到 alpine
  1. 取得 Arch Linux 的 synergy build script 
  2. cd aports/testing
  3. newapkbuild synergy
  4. cd synergy
  5. vim APKBUILD # 將 Arch 的 PKGBUILD 改寫成 Alpine 的 APKBUILD
    1. Arch 的 PKGBUILD 是採用 bash 執行, 而 Alpine 是採用 busybox 的 sh 執行, 因此不支援 arch=(i686 x86_64), 要改寫成 arch="x86 x86_64"
    2. 套件名稱差異(gcc-libs/libgcc, libxkbcommon-x11/libxkbcomm,qt5-base/qt5-qtbase,gmock/gtest)
    3. 相依性套件(例如:curl)要在makedepend寫開發套件(例如:curl-dev)
    4. PKGBUILD build()函數裏面寫 qmake, 在 APKBUILD 要改成 qmake-qt5
  6. apkbuild checksum # 產生檢查碼
  7. abuild -r
    1. 問題: 發現找不到 qmake
      1. 解答: 到官網查詢套件名稱, 原來是要裝 qt5-qtbase-dev
移植 gcin 到 alpine
  1. 待續

沒有留言: