如何配置 OpenIndiana(151a8 aka ‘hipster’) 進行開發?
我看到了一篇關於Solaris的類似文章,並想到了類似的方法。我聽說過有關該發行版的最新消息(如 2013 年),我了解到我可以輕鬆地將我最初的OpenIndiana 151a7 版本更新為時髦(更準確地說是0.5.11-0.151.1.8.1 - 您可以在帶有連結的分佈)。在這個即將發布的版本中,許多事情與舊OpenIndiana wiki或Illumos建構方法及其“如何僅使用 gcc”中的解釋有所不同部分,因為 SunStudio 等的所有權。我很久以前就了解到,設置開發環境,或者只是像我一樣編譯一些東西,不僅僅是擁有正確的軟體。當您開發軟體時,配置和資訊以及開發技能非常重要。
軟體
OpenIndiana像 Solaris 一樣使用IPS 。
pkg install pkgname
/pkg search -r keyword
並且pkg info -r keyword
非常有用,因為 GUI 前端打包程序在 151a8 中暫時被破壞了。需要配置額外的儲存庫以訪問額外的包:
$ pkg set-publisher -p http://pkg.openindiana.org/sfe
和受阻人(如適用)
pkg set-publisher -p http://pkg.openindiana.org/sfe-encumbered
在全新安裝時,我已經選擇了這 2 個大型元包(總共大約 600mb 的下載量,安裝了一些 GB)和一些在我編譯fvwm時看起來合適的東西:
sudo pkg install pkg://openindiana.org/metapackages/build-essential@1.0,5.11-0.151.1.8.1:20130803T052718Z sudo pkg install sunstudio12u1 sudo pkg install pkg:/library/desktop/gtk1@1.2.10-0.151.1.8 sudo pkg install pkg:/library/java/java-gnome@2.30.0-0.151.1.8 sudo pkg install pkg://sfe/library/fribidi@0.19.2,5.11-0.151.1.5:20120805T091919Z
Build-essential 主要包含您需要的一切,包括但不限於:
pkg install -v pkg:/archiver/gnu-tar pkg:/compress/p7zip pkg:/compress/unzip \ pkg:/developer/build/ant pkg:/developer/build/autoconf pkg:/developer/build/automake-110 \ pkg:/developer/build/gnu-make pkg:/developer/build/libtool pkg:/developer/build/make \ pkg:/developer/gnome/gettext pkg:/developer/java/jdk \ pkg:/developer/java/junit pkg:/developer/lexer/flex pkg:/developer/macro/cpp \ pkg:/developer/macro/gnu-m4 pkg:/developer/object-file pkg:/developer/parser/bison \ pkg:/file/gnu-coreutils pkg:/file/gnu-findutils \ pkg:/library/libtool/libltdl pkg:/library/libxslt pkg:/library/pcre \ pkg:/system/library/math/header-math pkg:/text/gawk \ pkg:/text/gnu-diffutils pkg:/text/gnu-gettext pkg:/text/gnu-grep \ pkg:/text/gnu-patch pkg:/text/gnu-sed pkg:/text/groff \ pkg:/text/texinfo pkg:/library/neon pkg:/library/apr-util-13 \ pkg:/developer/library/lint pkg:/system/header pkg:/developer/build/onbld \ pkg:/data/docbook \ pkg:/library/glib2 \ pkg:/library/libxml2 \ pkg:/library/libxslt \ pkg:/library/nspr/header-nspr \ pkg:/library/perl-5/xml-parser \ pkg:/system/library/install \ pkg:/system/library/dbus \ pkg:/system/library/libdbus \ pkg:/system/library/libdbus-glib \ pkg:/library/python-2/python-extra-26 \ pkg:/system/library/mozilla-nss/header-nss
gcc 4.7.3
是hipter分支中的最新版本 (pkg://openindiana.org/developer/gcc-47@4.7.3,5.11-0.151.1.8.1:20130802T223703Z)。還有gcc-dev和ss-dev元包,但我不確定它們會在多大程度上增加我現在擁有的東西。
配置(我的 .bashrc 文件中的亮點)
在某些情況下,可能需要使用 4.7 以外的其他版本的 gcc,但現在我使用的是最新的可用版本,並且一直依賴OpenIndiana和Illumos站點的一些建議配置,盡我所能:
[...] CW_GCC_DIR="/usr/gcc/4.7/bin/"; export CW_GCC_DIR GCC_ROOT="/usr/gcc/4.7"; export GCC_ROOT ONBLD_TOOLS="/opt/onbld"; export ONBLD_TOOLS ONLY_LINT_DEFS="-I/sunstudio12.1/prod/include/lint"; export ONLY_LINT_DEFS __GNUC=""; export __GNUC amd64_LINT="/opt/sunstudio12.1/bin/lint"; export amd64_LINT i386_LINT="/opt/sunstudio12.1/bin/lint"; export i386_LINT PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/opt/onbld/bin:/opt/onbld/bin/i386:/opt/sfw/bin:/usr/sfw/bin:/usr/dt/bin:/usr/openwin/bin:/usr/sbin:/usr/gnu/bin/:/usr/sbin/:/sbin:/usr/local/bin:/usr/bin:/usr/ccs/bin:/usr/dt/bin:/usr/gnu/bin/"; export PATH
挑戰
挑戰可能很大,即使對於我不是的開發人員也是如此。配置完我的環境後,我嘗試編譯fvwm 2.6.5,因為它是標準的,它很小,並且是我感興趣的具有里程碑意義的軟體……看看有什麼好處。為了改進配置提供的功能,我認為我遇到了問題,不得不從原始碼編譯 glib。所以我從這個顯然非常有知識的人那裡發現了這個驚人的帳戶,他實際上在 OI 上編譯了這個。我意識到我不需要安裝任何進一步的 glib 包,但是這個人維護了一個移植編譯軟體的儲存庫,考慮到一些複雜性,這可能非常有用……
此外,作為一般規則,應注意平台上的錯誤跟踪以及郵件列表(尤其是 oi-dev)。
通用建構環境
在關於正確建構 OI OS 的 wiki舊部分中,引用了這個名為 CBE 1.7.0 的工具。此時無法安裝它,因為它需要 SUNWperl510core,並且根據我的經驗,強制安裝它會破壞您的 acl。當我成功安裝它時,我承認對如何使用它一無所知,因為它超出了我的想像,我希望我知道這是否可以在編譯使用者空間的東西時簡化一些事情。我所知道的是,在最新版本中,你有一個迷你版 1.8.0 (pkg://openindiana.org/developer/build/cbe@1.8.0,5.11-0.151.1.8:20130305T143840Z) 所以我安裝了不需要舊的 perl 依賴項。仍然遠遠沒有掌握它的含義(我將不得不閱讀規格等等)但它就在那裡。在貢獻 SFE 包和pkgbuild的上下文中,我在郵件列表中看到了一些 2013 年過時的執行緒。
問題
- 我能夠輕鬆建構 fvwm 2.6.5,但我的設置看起來像是最低限度可接受的建構環境嗎?這裡有什麼不符合最佳實踐的具體內容嗎?
參考和連結
SunOS 新手的基本管理命令備忘單(PDF)
[1]: http://openindiana.org/pipermail/oi-dev/2013-May/002109.html [2]: http://pkg.openindiana.org/hipster/en/index.shtml [3]: http://wiki.openindiana.org/oi/Compiler+Migration [4]: http://wiki.illumos.org/display/illumos/How+To+Build+illumos [5]: http://wiki.illumos.org/display/illumos/How+To+Build+illumos#HowToBuildillumos-BuildingwithGCC-444iewithoutSunStudio [6]: http://docs.oracle.com/cd/E23824_01/html/E21802/ips_intro.html#scrolltoc [7]: http://docs.oracle.com/cd/E19963-01/html/820-6572/managepkgs.html [8]: http://wiki.openindiana.org/oi/Spec+Files+Extra+Repository [9]: http://www.fvwm.org/download/ [10]: http://www.openindiana.co.uk/tags/c-standards [11]: http://www.openindiana.co.uk/content/repository-update-73-new-packs [12]: https://www.illumos.org/projects/openindiana/issues?page=1 [13]: http://openindiana.org/mailman/listinfo [14]: http://wiki.openindiana.org/oi/Setting+up+the+recommended+build+environment [15]: http://comments.gmane.org/gmane.os.openindiana.devel/1887 [16]: http://sourceforge.net/apps/mediawiki/pkgbuild/index.php?title=Pkgbuild_on_OpenSolaris [17]: http://i.stack.imgur.com/xSB2n.png [18]: https://blogs.oracle.com/JeffV/entry/comparing_solaris_11_zones_to [19]: http://ptribble.blogspot.ca/2013/05/sparse-root-zones-in-tribblix.html [20]: http://tribblix.blogspot.co.uk/ [21]: http://unixed.com/blog/2013/02/the-solaris-11-immutable-zone/ [22]: http://www.logiqwest.com/dataCenter/Demos/RunBooks/Zones/createBasicZone.html [23]: http://www.oracle.com/technetwork/server-storage/solaris/solaris-dtrace-wp-167895.pdf [24]: http://www.oracle.com/technetwork/server-storage/solaris11/documentation/solaris-11-cheat-sheet-1556378.pdf
感謝您發布此資訊。對我來說它看起來很完整。
我認為您應該專注於如何設置開發主機的主要主題。諸如區域和 DTrace 之類的東西以及稍微偏離主題的恕我直言。要記住 wrt 區域和 IPS 的重要一點是,軟體包不一定會因為它們安裝在全域區域中而進入區域。事實上,在標準 Solaris 中,說明預設情況下從全域區域繼承哪些包的清單是一個非常短的列表,可能是為了將區域的佔用空間保持在最低限度。這意味著有時您必須明確地將軟體包安裝到本地區域中,即使它已經安裝在全域區域中。好消息是這不需要從本地區域訪問 Internet,因為它將使用全域區域中的 IPS 儲存庫作為中間代理儲存庫。
也許您還可以進一步闡明您的開發主機的目標:您希望主機能夠建構發行版本身還是“只是”各種 Linux/Unix OSS 包?
還有一篇關於如何在標準 Solaris 11 上進行等效操作的文章。由於 Solaris 11 和 OpenIndiana 共享相同的傳統,因此您可以使用該文章中的某些內容。