该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
首先看下use、mask、keyword、slot之类的概念
1、use:当软件包被安装时,portage系统根据use环境变量中的关键字列表,来确定该软件包的子功能的选择。
use关键字是约定俗成的,只要gentoo维护人员都同意,用gtk实际指代qt也是可以的。指定任何包都用不到的use关键字无害(例如在make.conf USE环境变量中加入你姓名的拼音,是无害的)
use被emerge工具使用的方式是“被动”的,就是说,在软件包安装/升级/查询等过程时,portage系统会利用use关键字设置(未安装的软件包,使用系统use配置,安装后的软件包使用安装时的use设置),软件被使用中,use关键字不起作用(use并不是持续的系统设置特性)
2、mask:简单说就是控制让安装还是不让安装,当某个软件或其某版本被官方portage数据库mask后,不作mask设置修改则无法安装此包,通过手动unmask该包可在解除这个限制
3、keyword:keyword可以设定两个因素:目标(运行)平台、stable/testing分支。前者意义明显(如x86、amd64等)。后者设定方式是,不加~前缀的为stable分支,加前缀的为testing分支
系统中的设定带有禁止/允许安装使用的含义。未作任何设置时,系统只允许安装stable分支的软件,当accept带~的keyword时,则允许安装testing分支软件
4、slot:有些软件的不同版本是被需要共存的,例如python之类的。当存在这个需求时(系统中同时安装多个版本的同一软件),通过为不同版本线指定不同slot管理不同版本的同软件
同一系统中,允许同时安装不同slot中的同软件
单个slot内也有不同版本,但在同一系统中只能安装其中一个版本
5、license:个人认为,是为了让用户在使用一些采用特别license授权的软件时,能自行确认终端用户协议而设(以便gentoo group能免责)
6、env:提供逐包的环境修改途径,例如说,在make.conf配置distcc feature后,需要为某些包关闭distcc功能,则可以为那些包特别指定env,并增加-distcc
7、profile:即上述设置的“预设集”。由gentoo按一些常用的不同使用方式归纳出不同的profiles,允许用户直接用上一些大众化设置,然后作小的细节改动即可满足自己的需求
使用某个profile(如profile1)外加手动自定义设置若干,可能做到完全和使用另一个profile(如profile2)等效。由此,大家不必纠结是不是没有用带“desktop”的profile就会影响桌面软件的使用
ok,然后我们需要了解下emerge系统如何使用这些配置,用典型的“安装某软件包”的过程来举例:
1、首先,profile提供了基本配置(主要关于use和mask,最近加入x32后,还有abi设置等,abi属于“其他环境变量”的一种)
2、在profile的预设基础上,使用/etc/portage/make.conf中提供全局配置的进一步修改当前配置
3、接着,使用package.xxx(xxx为上述提及use、mask等内容)中的配置,根据当前需要安装的包名、版本等信息,作个性化设置修改(可以增加,可以通过前缀-作删除)
package.xxx既可以是文件,也可以是同名目录(目录的话,其中放置任何文件皆会被使用,未验证二级目录是否有效)
其他过程(更新等),使用设置的过程类似:profile为基础,make.conf全局修改,package.xxx特别定制
由此可确定,啥信息需要放在make.conf,啥信息需要逐包配置
个人建议最好不要使用auto-mask之类的参数,配置时也不要对包作类似>= <=之类版本匹配的细节设置,这样反而容易画蛇添足,导致更多麻烦的问题