我看到过类似的帖子索拉里斯并想到了类似的方法。我听说过最近的新闻(截至2013年)通过发行版,我了解到我可以轻松更新我的初始版本印第安纳公开赛151a7 释放到潮人(0.5.11-0.151.1.8.1更准确地说 - 您可以使用链接检查发行版中的各个文件)。在即将发布的版本中,许多内容与旧版本中的解释有所不同打开印第安纳维基或者伊鲁莫斯建造如何和它的“如何仅使用 gcc”部分因为 SunStudio 等的所有权。我很久以前就了解到,设置开发环境,或者只是像我一样编译一些东西,涉及的不仅仅是拥有正确的软件。当您开发软件时,有很多关于配置和信息以及开发技能的内容。
软件
印第安纳公开赛使用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)以及一些在我编译时看起来合适的东西弗瓦姆:
sudo pkg install pkg://openindiana.org/metapackages/[email protected],5.11-0.151.1.8.1:20130803T052718Z
sudo pkg install sunstudio12u1
sudo pkg install pkg:/library/desktop/[email protected]
sudo pkg install pkg:/library/java/[email protected]
sudo pkg install pkg://sfe/library/[email protected],5.11-0.151.1.5:20120805T091919Z
构建必备包含您需要的大部分内容,包括但不限于:
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
是最新可用的嬉皮士分支(pkg://openindiana.org/developer/[电子邮件受保护],5.11-0.151.1.8.1:20130802T223703Z)。
还有gcc-开发和SS-开发元包,但我不确定他们会在多大程度上向我现在拥有的内容添加任何内容。
配置(来自我的 .bashrc 文件的亮点)
在某些情况下,可能需要使用 4.7 以外的其他版本的 gcc,但目前我正在使用最新的可用版本,并且一直依赖于来自两个版本的一些建议配置。印第安纳公开赛和伊鲁莫斯网站,尽我所能:
[...]
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/[电子邮件受保护],5.11-0.151.1.8:20130305T143840Z) 所以我安装了不需要旧 perl 依赖项的那个。仍然远未理解它的含义(我必须阅读眼镜等等)但它就在那里。我看到一些 2013 年的日期线在贡献 SFE 包的邮件列表中以及构建。
问题
- 我能够轻松构建 fvwm 2.6.5,但我的设置看起来像是一个最低可接受的构建环境吗?是否有任何具体内容不符合此处的最佳实践?
参考文献和链接
[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]: https://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
答案1
感谢您发布此内容。对我来说它看起来很完整。
我认为您应该关注主要主题,即如何设置开发主机。诸如区域和 DTrace 之类的东西以及稍微偏离主题的恕我直言。关于区域和 IPS,需要记住的重要一点是,软件包不一定会仅仅因为安装在全局区域中而进入区域。事实上,在标准 Solaris 中,告诉默认情况下从全局区域继承哪些软件包的清单是一个非常短的列表,可能是为了将区域的占用空间保持在最低限度。这意味着有时您必须明确地将软件包安装到本地区域中,即使它已经安装在全局区域中。好消息是,这不需要从本地区域访问 Internet,因为它将使用全局区域中的 IPS 存储库作为中间代理存储库。
也许您还可以进一步阐明开发主机的目标:您希望主机能够构建发行版本身还是“只是”各种 Linux/Unix OSS 软件包?
有另一个帖子关于如何在标准 Solaris 11 上执行相同操作。由于 Solaris 11 和 OpenIndiana 具有相同的传统,因此您可能可以使用该帖子中的某些内容。