Gentoo的精髓——Portage
虽然其实这是一个标题党式的title…portage来自于BSD上大名鼎鼎的ports
比较全面系统的介绍请参考portage的官方介绍。
按照官方的说法,portage是gentoo在软件管理上最值得称道的革新功能。
由于portage相关的内容非常的多,也可以说是gentoo的精髓所在,所以涉及篇幅也会比较长,打算分篇来写。将会包含以下一些部分
emerge
的介绍make.conf
和portage的一些配置文件和其他杂项USE flag
详解slot
、virtual
、meta
等包- 常用portage工具
- 使用二进制包
- 日常维护系统的经验和技巧
- 有趣的社会化编译
gentwoo
- 打包格式
ebuild
- 使用第三方仓库的工具
layman
可能的话还想来介绍分析一下portage的实现分析等等。
认识包管理器emerge
对于大部分情况来说,用户和portage打交道最常用的就是emerge
这个命令了,你可以认为它就是gentoo下的包管理器,不过准确来说是portage啦。
对于刚刚安装完gentoo的用户来说,由于stage3只提供了最基本的toolchains和必要的lib外几乎没其他工具和软件,所以第一时间想了解的就是如何安装软件,这一节我们先介绍一下emerge的常用方法。
更加全面完整的信息请认真man emerge
安装软件
emerge pkg_name
不出意外的话你会看到emerge开始拉取源代码包、自动进行configure
和make
等操作,顺利的话在执行完毕后,软件便已安装上去了。大体上和其他二进制的发行版似乎没多大区别,和ports
一样,它会自动获取源代码、配置后安装。
注意,emerge直接安装的包都会进入一个叫做world
的集合里,以便批量操作,下面会使用到。
同步软件信息
emerge --sync
gentoo把软件信息叫做portage tree
,这条命令会让emerge从配置好的地址去rsync
同步最新的信息。
如果是首次同步,或者距离上次同步很久再进行操作,可以使用emerge-websync
,它采用下载器直接通过http获取portage tree
的压缩包,速度上比rsync
更快。
搜索包
emerge --search kernel # 搜索包名含有`kernel`
emerge --searchdesc kernel # 搜索包描述信息含有`kernel`
常用参数,要注意大小写哦XD
[ -1 | --oneshot ] 安装,并不计入`world`集合里
[ -a | --ask ] 在执行emerge操作前询问
[ -c | --depclean ] 自动检查、清理不再被依赖的包
[ -f | --fetchonly ] 仅下载源代码,不进行安装
[ -j | --jobs ] 相当于`make -j`参数,并行编译进程数量;可以覆盖`make.conf`里的配置
[ -p | --pretend ] 模拟安装,显示会安装哪些包,一般用来确认依赖和配置情况
[ -t | --tree ] 让emerge显示依赖的缩进过的树形结构,配合`-e`或者`-Du`使用
[ -u | --update ] 让emerge检查目标的版本是否更新,若无更新则无操作
[ -v | --verbose ] 显示详细的USE flag信息
[ -C | --unmerge ] 不检查依赖,直接删除
[ -D | --deep ] 查询被目标直接依赖以外的包,会获取更多、更准确的信息
[ -N | --newuse ] 让emerge检查目标和依赖的USE flag是否更新,若有更新也一并emerge
[ --with-bdeps=y|n ] 一并emerge本来不严格依赖的编译依赖
根据以上这些选项,我们可以得出一些常用的例子。
# 检查包安装的USE flag详细情况
emerge -pv
# 因为有时候检查会时间比较长,可以用这个组合先检查是否有问题,OK就直接确认
emerge -av
# 一次性升级整个系统的包,包括system集合和world集合
emerge -DNuav --with-bdeps=y @system @world
# 自动清理不再需要的依赖
emerge -ac
portage的主要配置make.conf
从名字上可以看出,portage差不多就可以替代原来人肉编译安装软件的自动化工具make,代为处理软件包的管理工作。
比较新的版本都已经建议把make.conf
的位置放到/etc/portage
里去;比较早的版本是在/etc/
里。
记得在安装与启动里在安装前需要配置这个文件。比较全面的配置说明依然可以在man make.conf
里找到。我们看看一些比较关键和有趣的选项吧。
CHOST # gcc编译时的参数,和主机的架构有关
CFLAGS # C编译时的优化参数,比如常见的`-march`,`-O`等,可以参考gentoo safe cflags里的条目
CXXFLAGS # C++编译时的优化参数,同理,一般设置的和CFLAGS一致
MAKEOPTS # make的参数,一般可以在这里指定`-j`等
SYNC # portage tree同步的地址,格式一般是`rsync://example.com/path/to/gentoo-portage`
GENTOO_MIRRORS # 获取distfiles,也就是源代码和补丁的tarball时下载的地址,可以指定多个哦,用空格分开
FEATURES # 指定porage一些操作时的默认动作,比如利用distcc、ccache,打包二进制文件、不安装文档等
USE # 全局的USE flag设置,一些设置还来自于系统profile的设定
# 比较有趣的设置...让portage把一些警告信息关闭掉...嗯,我知道自己在干吗啦,不用你多嘴XDDD
I_KNOW_WHAT_I_AM_DOING=yes
至此,相信大家已经会使用emerge来安装、管理软件包了,安装完系统更多的请阅读手册哦XD
下期将为带来portage最重要的功能之一——USE flag和相关配置文件。
__END__