|
|
虽然我们能够使用autoconf、automake、make等工具实现自动化编译,但这种针对单个软件包的编译系统,在编译多个软件时仍然十分繁琐
假设需要编译emacs和vim,使用xft字体、图形界面支持,并去掉调试符号,需要分别作如下配置
emacs
./configure --prefix=/usr/local/ \
--no-debug \
--with-xft --with-x-toolkit=gtk \
--with-freetype
vim
./configure --prefix=/usr/local/ \
--no-debug \
--with-xft --with-x-toolkit=gtk
这就像点菜时,你必须告诉厨师:鱼香肉丝(多放辣椒、不放蒜)、宫保鸡丁(多放辣椒、不放蒜)、麻婆豆腐(多放辣椒、不放蒜)……
实际上,大多数人这样点菜:鱼香肉丝、宫保鸡丁、麻婆豆腐……多放辣椒、不放蒜
emerge就是这样一种点菜方式,它是gentoo的包管理系统,提供了更为现代化的编译方式
可以通过指定USE标记xft、gtk、-debug来确定所有软件的编译方式
设置USE标记
以下方法按优先级由低到高排列:
在make.defaults文件中设置[15]:
/usr/portage/profile/base/make.defaults
/usr/portage/profile/default-linux/make.defaults
/usr/portage/profile/default-linux/x86/make.defaults
/usr/portage/profile/default-linux/x86/2007.0/make.defaults
在/etc/make.conf文件中声明永久USE标记(推荐)
USE="nptl nptlonly nls cjk php mysql -kde -qt3 -qt4"
* 带-的USE标记,表示排除
在/etc/portage/package.use文件中为单个包声明USE标记
app-editors/emacs-cvs xft
www-servers/lighttpd fastcgi
dev-lang/php mysqli cgi gd ctype pcre session unicode pic posix
dev-db/phpmyadmin vhosts
app-shells/zsh doc
net-ftp/pure-ftpd -ldap mysql pam ssl vchroot
使用环境变量声明临时USE标记
USE="-java"
emerge seamonkey
查看使用的USE标记:
merge --pretend --verbose seamonkey
Calculating dependencies ...done!
[ebuild R ] www-client/seamonkey-1.0.7 USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB
编译参数
/etc/make.conf
CFLAGS="-O2 -march=i686 -pipe" 1
CXXFLAGS="-O2 -march=i686 -pipe" 2
CHOST="i686-pc-linux-gnu" 3
MAKEOPTS="-j2" 4
FEATURES="parallel-fetch ccache" 5
CCACHE_DIR="/var/tmp/ccache" 6
CCACHE_SIZE="2G" 7
ACCEPT_KEYWORDS="x86" 8
USE="nptl nptlonly nls cjk php mysql" 9
FETCHCOMMAND="/usr/bin/axel -a -n4 \${URI} -o \${DISTDIR}" 10
RESUMECOMMAND="/usr/bin/axel -a -n4 \${URI} -o \${DISTDIR}"
1
针对C语言的优化选项,-march=设置目标架构
2
针对C++语言的优化选项
3
进行编译工作的机器架构
4
编译选项
5
emerge特性。并行下载、使用ccache缓冲编译结果
6
ccache缓存目录
7
ccache缓存大小
8
通过关键字选择分支。x86表示x86架构的稳定分支,~x86表示x86架构的不稳定分支
9
USE标记
10
使用axel加速下载
gentoo支持多种架构:x86、 sparc、 amd64、 ppc、 ppc64、 alpha、 hppa、 mips、 ia64、 arm,我们使用的PC多为x86架构
假设你主要使用x86稳定分支,但少数软件要使用最新版本,在/etc/portage/package.keywords文件中为单个包设置关键字
app-editors/emacs-cvs ~x86
x11-misc/emacs-desktop ~x86
app-i18n/fcitx ~x86
app-editors/vim x86
app-editors/vim-core x86
media-video/mplayer ~x86
media-libs/win32codecs ~x86
app-i18n/man-pages-zh_CN ~x86
微调
在/etc/portage/目标下包含一些文件,可以在软件包级别上进行调节。前面已经介绍了package.use和package.keywords
package.keywords
还未被确认适合你的系统或架构,但是你希望能安装的软件包
package.use
特定软件包而不是整个系统使用的USE标记
package.provided
屏蔽的软件包(需要指明版本号)
package.mask
永远不希望Portage安装的软件包。
package.unmask
被Gentoo开发者屏蔽的软件包,但是你希望能安装的软件包。
软件包可能由于以下原因被屏蔽
~架构 keyword 意味着这个软件没有经过充分的测试,不能进入稳定分支,请等待一段时间后在尝试使用它
-架构 keyword或-* keyword 意味着这个软件不能工作在您机器的体系结构中
missing keyword 意味着这个软件还没有在您机器的体系结构中进行过测试
package.mask 意味着这个软件被认为是损坏的,不稳定的或者有更严重的问题,它被故意标识为“不应使用”
profile 意味着这个软件不适用于您的profile。安装这样的应用软件可能会破坏您的系统,或者只是不能与您使用的profile相兼容
例如:
gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
dev-util/cvsd-1.0.2 (masked by: missing keyword)
games-fps/unreal-tournament-451 (masked by: package.mask)
sys-libs/glibc-2.3.2-r11 (masked by: profile)
使用emerge
查找.
查找名字包含pdf的软件包
emerge --search pdf
查找与pdf相关的软件包
emerge --searchdesc pdf
emerge -S pdf
查看软件拥有的USE标记
emerge -vp 软件包名称
管理.
安装软件包
emerge 软件包名称
模拟安装软件包
emerge --pretend 软件包名称
下载软件包的源代码包
emerge --fetchonly 软件包名称
从系统中删除软件包
emerge --unmerge 软件包名称
更新.
更新系统
emerge --update --ask world
emerge -ua world
更新整个系统
emerge --update --deep world
emerge -uD world
使用新的USE标记重新构建系统
emerge --update --deep --newuse world
emerge -uDN world
移除孤立依赖的软件包
emerge --update --deep --newuse world1
emerge --depclean2
revdep-rebuild3
1
重新构建系统
2
清除孤立依赖包
3
重新构建依赖关系
revdep-rebuild工具由gentoolkit包提供;使用前别忘了首先emerge它:
emerge gentoolkit
[15] 在升级Portage的时候,这个文件将会被覆盖
但问题是,我现在并没有安装gentoo,我不知道现在的gentoo系统中make.defaults是哪些文件^_^!!/usr/portage/profile/base/make.defaults
/usr/portage/profile/default-linux/make.defaults
/usr/portage/profile/default-linux/x86/make.defaults
/usr/portage/profile/default-linux/x86/2007.0/make.defaults |
|