Gentoo大冒险3:Portage之使用emerge管理软件包

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里找到。我们看看一些比较关键和有趣的选项吧

# 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把一些警告信息关闭掉...嗯,我知道自己在干吗啦,不用你多嘴XDDDI_KNOW_WHAT_I_AM_DOING=yes

至此,相信大家已经会使用emerge来安装、管理软件包了,安装完系统更多的请阅读手册哦XD

下期将为带来portage最重要的功能之一——USE flag和相关配置文件。

__END__

转自http://weblog.areverie.org/2013/05/gentoo-portage-emerge-introduction/


本文链接:https://www.starduster.me/2014/05/13/gentoo-portage/
本站基于 Creactive Commons BY-NC-SA 4.0 License 允许并欢迎您在注明来源和非商业使用前提下自由地对本文进行复制、分享或基于本文进行创作。
请注意:受限于笔者水平,本站内容可能存在主观臆断或事实错误,文中信息也可能因时间推移而不再准确,在此提醒读者结合自身判断谨慎地采纳。

一条评论


  1. 这个菊苣天天换域名还不做跳转这个让我很是为难,现在原作者的域名似乎是 momoka.net ,谷歌搜标题我都在他前面了(汗)还没被打真是荣幸啊

Comments are closed, but trackbacks and pingbacks are open.