热门关键字:  ubuntu  分区  linux系统进程  函数  Fedora

当前位置 :| 主页>Linux发行版>Gentoo>

Gentoo Portage Manual

来源: 作者: 时间:2007-02-02 Tag: 点击:
自己一边看一边翻的,有错误还请见谅,嘿嘿。
Portage 手册

内容:1. Portage: An Overview2. Configuring Portage3. Package Management

1.Portage: 概要



概要


Portage 是一个非常强大的高级软件包管理系统。它的灵活性,它具有既能作为简单的编译引擎,又能构建一个 cutting edge (领先、大胆创新)的 Linux 发行版的能力,给它赢得了 Meta-distribution Engine(超发行版引擎) 的美誉。Gentoo Linux 就是围绕着 Portage 来构建的。


Gentoo Linux 自身就经常被称为超发行版。它由 Portage 和大概 1,500 套软件包编译指导脚本(称为 ebuilds)组成。这些 ebuilds 告诉 Portage 引擎如何编译和安装一个软件包。通过使用 profiles 和命令行工具 emerge ,用户和开发者能用 Portage 安装和维护软件包,这些软件包组成了底层的操作系统平台以及在平台上使用的程序。



一个 Gentoo Linux 系统是 "在线即时编译" 的。安装 Gentoo Linux 包括建立一个够用的编译器和编译环境,Portage能在这个环境中从 Internet 上下载源码并编译余下的核心系统及任何你想要的程序。尽管 Portage 的确支持安装编译好的二进制软件包,但这对整个系统是一个危害,除非是在很慢的计算机上,或是开发者系统快速恢复某个软件包,又或者你是在一个速度快的检索上编译,拿到速度慢的计算机上使用时,才应该使用。


由于这一点,再加上 Portage 编译安装软件包的方法是高度可配置的,所以只有很少的 Gentoo Linux 安装是完全一样的。从本质上说,当用户安装 Gentoo Linux 时,Portage 系统根据配置文件和 ebuilds 中指定的参数,编译出的实际上是自定义的系统。


咋看上去,Portage 的思想好像和传统的 BSD ports 系统很相似。它们都可以从源码开始编译软件包,并允许用户安全的在系统中安装和卸载软件,还都能自动处理依赖关系。Portage 的许多思想是从 BSD ports 系统那里借来的,但 Portage 绝不仅仅是又一个"ports 抄袭"。


Portage 系统由 Python 核心和基于 Bash 脚本的 Ebuilds 组成。它并不是处理 Makefiles 和 make 命令,而是将 Python 语言的强大功能和 具备一些面向对象特征的 shell 脚本的易用性相结合,组成了一个唯一的强大系统,我们敢说,Portage 比目前所有 ports 系统都好。


Portage 还提供了一些高级特征:能同时安装同一软件包的不同版本,升级树中的软件包,根据条件来解决依赖性,精炼的包管理,sandboxed(沙漏之意,这里指与原系统隔开)安全安装,配置文件检测,profiles 等等。这些特征中的多数都将在下面来详细讨论。


根据条件来解决依赖性和特性支持


Portage 系统提供个用户的灵活性是最大的。传统的 BSD ports 系统倾向于只支持 ports 树中单个软件包的一次升级。Portage 没有这样的限制,可以多次升级同一个软件包。软件包的依赖性,那些编译其他包需要同时又需要别的包的,可以用名字或名字加上版本范围来指定。这就使在树中可以同时提供多个版本。


依赖性系统还支持条件依赖。Portage 有一个功能强大的概念叫 USE 设置 系统。通过改变 Portage 配置文件中的一个变量,你可以禁止某个特性或库的条件支持(有必要的话),对每个包都可以。这是一个非常灵活和强大的系统, 下一节将详述。


Portage 还支持 SLOT (插槽) 的概念。开发 Gentoo Linux 的过程中,开发者经常感到必须同时装上一个包的不同版本(比如库文件) 来满足其他包的需要。传统的做法是,将这些版本看成是不同的包,名字有一点区别。


我们的开发者不这样做,而是教会 Portage 如何使用 SLOT (插槽) 来处理和维护同一个包的不同版本。一个例子是 freetype,1.x 系列的 freetype 和 2.x 系列不兼容,但两个包都要装,才能满足其他包的依赖性。多数发行版和 ports 系统用 "freetype" 来表示 1.x 系列,用"freetype2" 来表示 2.x 系列。我们认为这是包管理系统的缺陷。我们把 SLOT 1 分配给前一个,把 2 分配给后一个。有了这个信息,Portage 就能同时跟踪两个系统,如果相应的系列有升级,它也能正确的升级它们。


Profiles


Portage 支持 profiles (配置文件)的概念。一个 profile 包含一组软件包和相应版本的列表,并含有指导性的配置参数,供 Portage 使用。profile 告诉 Portage 哪些包的哪个版本的可以安装、禁止安装或视为必需的。用户可以通过改变一个符号链接 (/etc/make.profile) 来切换 profile. 这看起来很简单,但它使 Portage 有能力组成一个发行版的核心,并成为职业级的编译系统。



开发 Gentoo Linux 的所有努力得到的结果是大量的 ebuild 文件和一个 profile. 这个 profile 定义了哪个包是对系统很重要的核心包,还允许开发者对某个包或某个版本注释和取消注释,就能防止有缺陷的包。ebuild 文件只是告诉 Portage 如何具体的编译和安装 profile 要求或允许的包。


2.配置 Portage


概要


下面一节讲了对用户和开发者都很重要的 Portage 配置。Portage 非常灵活,为了对你的系统负责并按你的需要来优化,你需要掌握如何配置 Portage.


请注意,这个文档里说到的"用户",指的是有管理员权限来使用 Portage 和改变系统配置的人。你必须有 root 权限,才能改变 Portage 的配置,merge 和 unmere 软件包。


Portage 配置文件


下面讨论的几乎所有参数都能在 /etc/make.conf, /etc/make.profile/make.defaults 和 /etc/make.global 文件中找到。/etc/make.conf 包含 Portage 使用的多种变量。对于所有设置。Portage 将先检查当前定义的环境变量,如果没有,则检查 /etc/make.conf. 如果还是没有,Portage 就到 /etc/make.profile/make.defaults 中去找。又没有的话,最后就使用 /etc/make.globals 中的缺省设置。请注意,用户的设置应该在环境变量或 /etc/make.conf 中。还有一点,/etc/make.conf 中的设置立刻就会覆盖 /etc/make.global 中的。/etc/make.conf 和 /etc/make.global 中的设置可以看成是整个系统的全局设置,只要使用 Portage.




当检查某个参数是否已经设置时,建议你先查 /etc/make.conf 再查 /etc/make.globals. 除非特别声明,/etc/make.conf 中的设置将覆盖 /etc/make.globals 中的。


USE 设置


USE 设置系统是在编译时改变全部或单个软件包特性的灵活方式。它允许管理员控制如何根据可选的特性来编译软件包,把哪些特性编译到包里面去。比如某个包有可以选择的 GNOME 支持,如果在编译时,禁止 gnome USE 设置,就能禁止这个特性。反之,打开 gnome USE 设置,就打开了这个包的 GNOME 支持特性。


USE 设置对包的影响取决于是否软件包本身和它的 ebuild 支持 USE 选择。如果上面的那个软件包没有 GNOME 支持,相应的 USE 设置很明显就没有作用。同样,很多包的依赖性不被视为可选特性,所以 USE 变量对依赖关系也没有作用。某个包 USE 的关键字列表可以在它 ebuild 文件中的 DEPEND 和 RDEPEND 行找到。


Gentoo Linux 使用的 USE 设置列表可以在 /usr/portage/profiles/use.desc 文件中找到。每行列出一个关键字,后面跟着它作用的简单描述。


Portage 决定某个 USE 设置是打开还是禁止的,要搜索四个不同位置。这些位置以"栈"(译注:后进先出的一个数据结构) 的方式来改变 USE 设置。Portage 搜索过每个位置,并记住是否前一个位置打开或禁止了一个 USE 设置。在这个过程中,USE 设置是可以累加的。


Porage 查看 USE 设置的位置以及查看这几个位置的顺序是由 /etc/make.global 中的 USE_ORDER 来决定。要去掉一个位置,你只要从 USE_ORDER 中把它去掉就行了。


下面是 Portage 中 USE_ORDER i的缺省值,按搜索顺序排列。


Defaults(缺省)


Portage profiles 能定义一组缺省的 USE 关键字。这是在任何一个 Portage 的 profile 中 make.defaults 文件里定义的。由于 /etc/make.profile 是一个到当前使用的 Portage profile 的符号链接,/etc/make.profile/make.defaults 就是起作用的缺省 USE 设置。建议你别改这个文件,因为以后 profile 的变化可能会覆盖你的改动。


Auto(自动)


这是在 Portage profile 的 use.defaults 文件中定义的(/etc/make.profile/use.defaults)。每个条目含有一个 USE 设置和相应的软件包。如果目前系统里有这个软件包,就会使用它的 USE 设置。例如,你安装过 x11-base/xfree,并且没有指明要禁止 X USE 设置,这个 X 关键字就会在以后都管用,只要软件包还没删掉。建议你别改这个文件,因为以后 profile 的变化可能会覆盖你的改动。
最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册