Life in a Nutshell

Gentoo Portage使用技巧

本文章记录一些使用Gentoo Portage的技巧。

指定Slot安装软件

Slot是在Gentoo的包管理的一个重要功能,当一个软件有多个分支的时候Portage能够 保证不同的版本并存。例如,Python一般有多个版本

$ eix dev-lang/python
[I] dev-lang/python
     Available versions:  
        (2.5)   2.5.4-r4 ~2.5.4-r5
        (2.6)   2.6.8 ~2.6.8-r1
        (2.7)   2.7.3-r2 ~2.7.3-r3
        (3.1)   3.1.5 ~3.1.5-r1
        (3.2)   3.2.3 ~3.2.3-r1 ~3.2.3-r2
        (3.3)   **3.3.0 **3.3.0-r1

上面的搜索出来的记过中括号中的就是slot号码,那么如何根据slot安装不同的软件呢, 下面将会解释这一点。

$ emerge -pv dev-lang/python:3.3

通过上面的方式就可以安装Python3.3。

emerge特定版本的软件

使用emerge搜索gitolite,出现的结果很多,如果我们不想安装默认的版本那么就得 用特定的命令。

tom@nextzone ~ $ eix dev-vcs/gitolite
* dev-vcs/gitolite
     Available versions:  2.3.1 ~3.1 ~3.2 ~3.3 ~3.4 ~3.5 ~3.5.1 ~3.5.2 {contrib tools vim-syntax}
     Homepage:            http://github.com/sitaramc/gitolite
     Description:         Highly flexible server for git directory version tracker

安装3.5.2的方法如下:

emerge --ask =dev-vcs/gitolite-3.5.2

emerge的正则搜索

emerge --search "package name"是一个正常使用方法,如果待搜索的名字是以%开头 那么代表这个是一个正则表达式。例如,emerge --search "%^kde"会搜索出全部以 kde开头的包,但是要注意的是,这样子搜索的时候不匹配软件包所在的类别,如果要匹 配类别,那么就需要加上@:就可以搜索dev-java这个类别下含有jdk关键词的软件 包。

guohuawu@cist-tux ~ $ emerge --search "%@^dev-java.*jdk"
Searching...    
[ Results for search key : ^dev-java.*jdk ]
[ Applications found : 11 ]

*  dev-java/apple-jdk-bin [ Masked ]
      Latest version available: 1.6.0
      Latest version installed: [ Not Installed ]
      Size of files: 0 kB
      Homepage:      http://java.sun.com/j2se/1.6.0/
      Description:   Links to Apple's version of Sun's J2SE Development Kit
      License:       public-domain

*  dev-java/db4o-jdk11
      Latest version available: 7.4
      Latest version installed: [ Not Installed ]
      Size of files: 312 kB
      Homepage:      http://www.db4o.com
      Description:   Core files for the object database for java
      License:       GPL-2

eix

上面提到用emerge来搜索软件包,但是这个方法遇到的一个最大问题就是搜索非常慢, 用eix可以解决这个问题。

root # emerge --ask eix

这样以来同步Portage就变得非常简单:

root # eix-sync

通用eix也支持正则搜索,而且搜索速度非常快

guohuawu@cist-dell ~ $ eix ^ack$
[I] sys-apps/ack
     Available versions:  1.96 2.12 {test}
     Installed versions:  2.12(06:48:04 PM 05/24/2014)(-test)
     Homepage:            http://betterthangrep.com/ http://search.cpan.org/dist/ack/
     Description:         ack is a tool like grep, aimed at programmers with large trees of heterogeneous source code

下面举出一些常用的例子

  • eix kernel:搜索含有kernel关键词的包
  • eix -I kernel:从已经安装的包里面搜索
  • eix -S -c corba:搜索包的描述,并且用紧凑模式输出
  • eix -C -c app-officeext:搜索一个类别的包,,并且用紧凑模式输出

更多的请参考Gentoo Wiki

Comments