《NetBSD Pkgsrc指南》中文版-Chapter 1. 什么是pkgsrc?
发表于 : 2010-05-19 9:59
--------------------------------------------------------------------------------
Chapter 1. 什么是 pkgsrc?
目录
1.1. 介绍
1.1.1. 为什么要用pkgsrc?
1.1.2. 支持的平台
1.2. 概述
1.3. 术语
1.3.1. pkgsrc内的角色
1.4. 术语
1.1. 介绍
基于Unix的系统有很多可自由获取的软件, 这些软件通常以源代码的形式分发. 在使用这样的软件之前, 需要先对其进行配置以适应本地系统、然后编译和安装, 这些工作正是由NetBSD的Packages集合(pkgsrc)完成的。 pkgsrc还有一些处理二进制packages的基本命令, 所以用户不必自己完成构建packages这项很耗时的工作。
pkgsrc当前包含了数千个packages, 包括:
www/apache - Apache网页服务器
www/firefox - Firefox网页浏览器
meta-pkgs/gnome - GNOME桌面环境
meta-pkgs/kde3 - KDE桌面环境
...这里仅仅列出了很小的一部分。
pkgsrc内嵌了变更依赖包的处理支持, 例如pthreads和X11, 和一些外部特性,诸如在一系列平台上对IPV6的支持。
1.1.1. 为什么要用pkgsrc?
pkgsrc具有下列重要特性:
可以很方便地从源代码构建软件并创建和安装二进制packages。 源代码及最新的补丁可以从主力或镜像下载站点获取, 可以通过checksum校验, 然后在你的系统上构建。 无论在本地平台和 NetBSD模拟平台全提供了对仅以二进制形式分发软件的支持。
所有的packages被安装到一个不变的目录树内, 包括二进制文件, 库文件, 用户手册和其它文档。
Package的依赖包, 包括运行的pakcage更新都自动被处理。在更新过程中可自动处理各种packages的配置文件, 所以本地变化被保存下来。
像NetBSD, pkgsrc秉承了可移植性的设计理念并且由高可移植性的代码编写。这样可以最快速地移植到一个新平台上。 这种可移植性也确保了pkgsrc在所有平台间始终不变的特性.
installation prefix可用来书写软件许可、国际通用加密需求, 而build-time选项可以为大量的packages设置一个简单、全局控制的配置文件。
所有的代码(不包括分发的文件) 全可以在BSD许可下自由获取, 所以你可以按自己的需求扩展或改编pkgsrc。 支持本地packages和补丁应用于其它的计算机上, 所以你可以配置它以适应你的环境。
使用pkgsrc有下列基本原则:
只在代码正确时才能正常工作。 这意味着, 如果一个package包含bugs, 你最好找出这些bugs并提交给开发者,而不是先凑合着安装在你的系统上,并指望它可以正确的工作, 在pkgsec内有很多方法用于这类检查: 稳定性分析工具 (pkgtools/pkglint), build-time 检查(可移植的shell脚本), 以及post-installation检查 (安装的文件, 参考的共享库, 脚本翻译)。
如果它可以工作,它就应该可以在任何地方正常工作 就像NetBSD已经被移植到很多硬件构架上, pkgsrc也已被移植到很多操作系统上。packages的表现会在所有的平台上被关注。
1.1.2. 支持的平台
pkgsrc包含了对这些操作系统的源代码分发和二进制分发。获取到所需的源代码或二进制包后, 你可以通过pkgsrc在几分钟内让程序运行起来!
pkgsrc衍生于FreeBSD的ports系统, 而且最初仅为NetBSD开发。从那时起, pkgsrc得到了长足的发展, 目前它支持下列平台:
表 1.1. pkgsrc支持的平台
平台 支持日期
NetBSD Aug 1997
Solaris Mar 1999
Linux Jun 1999
Darwin (Mac OS X) Oct 2001
FreeBSD Nov 2002
OpenBSD Nov 2002
IRIX Dec 2002
BSD/OS Dec 2003
AIX Dec 2003
Interix (Microsoft Windows Services for Unix) Mar 2004
DragonFlyBSD Oct 2004
OSF/1 Nov 2004
HP-UX Apr 2007
1.2. 概述
这篇文档分为三部分。 第一部分, pkgsrc用户指南, 描述了用户如何使用一个软件和其预编译的二进制package, 或者使用NetBSD的package系统构建你自己版本的软件。 第二部分, pkgsrc开发者指南, 解释了如何准备一个package以便可以让其他的NetBSD用户不必掌握package的构建细节就可以轻松地构建它。第三部分, pkgsrc的内部基础结构 是为了满足那些想了解pkgsrc的实施机制的人准备的。
本文档有以下不同的格式: HTML, PDF, PS, TXT.
1.3. 术语
有很多术语是关于ports, packages等等。这里有一个到目前为止本文档内使用术语的描述。
Package
一组文件以及使用pkgsec构建软件特定部分的说明。Packages一般存放于/usr/pkgsrc。
The NetBSD package system
这是pkgsrc的正式名称。它是NetBSD操作系统的一部分,并且可被引导在非NetBSD系统上运行。 它可处理构建(编译)、安装、以及删除packages.
Distfile
这个术语描述了由软件作者提供的一个或多个文件。所有在NetBSD上构建所需的变化都被反映在相应的package上。 通常distfile是压缩的tar文档,但是也有可能是其它类型。Distfiles通常储存在 /usr/pkgsrc/distfiles 下.
Port
FreeBSD和OpenBSD的用户使用术语, port我们称之为一个package. 在NetBSD的术语里, port 指一个不同的构架平台。
Precompiled/binary package
一组用pkgsrc从distfile和构建的二进制文件,将这些文件合并为一个单独的 .tgz文件以便它可以被安装在相同构建的机器上而 无需再次编译。 Packages通常生成在/usr/pkgsrc/packages 目录下; 这里还有一篇文档 ftp://ftp.netbsd.org/pub/NetBSD/packages/.
有时, 这个术语也指术语package , 特别是预编译的packages内容。
Program
被安装的软件,是指由相应的package包含在distfile里的全部文件用定义的动作所构建的。
1.3.1. pkgsrc里的角色
pkgsrc用户
pkgsrc用户是指使用pkgsrc提供的packages的人. 一般来说他们是系统管理员。 使用packages内部软件的用户(也许该称为 end users) 不在本指南讨论的范畴内。
有两类pkgsrc用户: 一类用户只想安装预编译的二进制packages, 另一类从源码构建, 前者细化你直接安装package, 后者喜欢自己构建二进制packages.对于pkgsrc用户,Part I, pkgsrc用户指南 应该提供了所有所需文档。
package维护人员
package维护者如何创建packages在Part II, pkgsrc开发者指南里里有说明。
基础设施开发人员
这些人员参与所有 mk/ 目录下文件的开发工作。只有这些人员应该通读 Part III, pkgsrc基础设施内部开发人员, 尽管其他人可能也有兴趣。
1.4. 印刷
当给出命令实例时, shell提示符用于显示哪些命令应该/必须以root的身份运行, 或者只用 普通 用户的权限就足矣了。 我们用一个 # 表示必须以root身份运行的命令, 而 % 表示仅以普通用户身份就可以运行该命令, 这里假设用户使用的是C-shell或者tcsh。
Chapter 1. 什么是 pkgsrc?
目录
1.1. 介绍
1.1.1. 为什么要用pkgsrc?
1.1.2. 支持的平台
1.2. 概述
1.3. 术语
1.3.1. pkgsrc内的角色
1.4. 术语
1.1. 介绍
基于Unix的系统有很多可自由获取的软件, 这些软件通常以源代码的形式分发. 在使用这样的软件之前, 需要先对其进行配置以适应本地系统、然后编译和安装, 这些工作正是由NetBSD的Packages集合(pkgsrc)完成的。 pkgsrc还有一些处理二进制packages的基本命令, 所以用户不必自己完成构建packages这项很耗时的工作。
pkgsrc当前包含了数千个packages, 包括:
www/apache - Apache网页服务器
www/firefox - Firefox网页浏览器
meta-pkgs/gnome - GNOME桌面环境
meta-pkgs/kde3 - KDE桌面环境
...这里仅仅列出了很小的一部分。
pkgsrc内嵌了变更依赖包的处理支持, 例如pthreads和X11, 和一些外部特性,诸如在一系列平台上对IPV6的支持。
1.1.1. 为什么要用pkgsrc?
pkgsrc具有下列重要特性:
可以很方便地从源代码构建软件并创建和安装二进制packages。 源代码及最新的补丁可以从主力或镜像下载站点获取, 可以通过checksum校验, 然后在你的系统上构建。 无论在本地平台和 NetBSD模拟平台全提供了对仅以二进制形式分发软件的支持。
所有的packages被安装到一个不变的目录树内, 包括二进制文件, 库文件, 用户手册和其它文档。
Package的依赖包, 包括运行的pakcage更新都自动被处理。在更新过程中可自动处理各种packages的配置文件, 所以本地变化被保存下来。
像NetBSD, pkgsrc秉承了可移植性的设计理念并且由高可移植性的代码编写。这样可以最快速地移植到一个新平台上。 这种可移植性也确保了pkgsrc在所有平台间始终不变的特性.
installation prefix可用来书写软件许可、国际通用加密需求, 而build-time选项可以为大量的packages设置一个简单、全局控制的配置文件。
所有的代码(不包括分发的文件) 全可以在BSD许可下自由获取, 所以你可以按自己的需求扩展或改编pkgsrc。 支持本地packages和补丁应用于其它的计算机上, 所以你可以配置它以适应你的环境。
使用pkgsrc有下列基本原则:
只在代码正确时才能正常工作。 这意味着, 如果一个package包含bugs, 你最好找出这些bugs并提交给开发者,而不是先凑合着安装在你的系统上,并指望它可以正确的工作, 在pkgsec内有很多方法用于这类检查: 稳定性分析工具 (pkgtools/pkglint), build-time 检查(可移植的shell脚本), 以及post-installation检查 (安装的文件, 参考的共享库, 脚本翻译)。
如果它可以工作,它就应该可以在任何地方正常工作 就像NetBSD已经被移植到很多硬件构架上, pkgsrc也已被移植到很多操作系统上。packages的表现会在所有的平台上被关注。
1.1.2. 支持的平台
pkgsrc包含了对这些操作系统的源代码分发和二进制分发。获取到所需的源代码或二进制包后, 你可以通过pkgsrc在几分钟内让程序运行起来!
pkgsrc衍生于FreeBSD的ports系统, 而且最初仅为NetBSD开发。从那时起, pkgsrc得到了长足的发展, 目前它支持下列平台:
表 1.1. pkgsrc支持的平台
平台 支持日期
NetBSD Aug 1997
Solaris Mar 1999
Linux Jun 1999
Darwin (Mac OS X) Oct 2001
FreeBSD Nov 2002
OpenBSD Nov 2002
IRIX Dec 2002
BSD/OS Dec 2003
AIX Dec 2003
Interix (Microsoft Windows Services for Unix) Mar 2004
DragonFlyBSD Oct 2004
OSF/1 Nov 2004
HP-UX Apr 2007
1.2. 概述
这篇文档分为三部分。 第一部分, pkgsrc用户指南, 描述了用户如何使用一个软件和其预编译的二进制package, 或者使用NetBSD的package系统构建你自己版本的软件。 第二部分, pkgsrc开发者指南, 解释了如何准备一个package以便可以让其他的NetBSD用户不必掌握package的构建细节就可以轻松地构建它。第三部分, pkgsrc的内部基础结构 是为了满足那些想了解pkgsrc的实施机制的人准备的。
本文档有以下不同的格式: HTML, PDF, PS, TXT.
1.3. 术语
有很多术语是关于ports, packages等等。这里有一个到目前为止本文档内使用术语的描述。
Package
一组文件以及使用pkgsec构建软件特定部分的说明。Packages一般存放于/usr/pkgsrc。
The NetBSD package system
这是pkgsrc的正式名称。它是NetBSD操作系统的一部分,并且可被引导在非NetBSD系统上运行。 它可处理构建(编译)、安装、以及删除packages.
Distfile
这个术语描述了由软件作者提供的一个或多个文件。所有在NetBSD上构建所需的变化都被反映在相应的package上。 通常distfile是压缩的tar文档,但是也有可能是其它类型。Distfiles通常储存在 /usr/pkgsrc/distfiles 下.
Port
FreeBSD和OpenBSD的用户使用术语, port我们称之为一个package. 在NetBSD的术语里, port 指一个不同的构架平台。
Precompiled/binary package
一组用pkgsrc从distfile和构建的二进制文件,将这些文件合并为一个单独的 .tgz文件以便它可以被安装在相同构建的机器上而 无需再次编译。 Packages通常生成在/usr/pkgsrc/packages 目录下; 这里还有一篇文档 ftp://ftp.netbsd.org/pub/NetBSD/packages/.
有时, 这个术语也指术语package , 特别是预编译的packages内容。
Program
被安装的软件,是指由相应的package包含在distfile里的全部文件用定义的动作所构建的。
1.3.1. pkgsrc里的角色
pkgsrc用户
pkgsrc用户是指使用pkgsrc提供的packages的人. 一般来说他们是系统管理员。 使用packages内部软件的用户(也许该称为 end users) 不在本指南讨论的范畴内。
有两类pkgsrc用户: 一类用户只想安装预编译的二进制packages, 另一类从源码构建, 前者细化你直接安装package, 后者喜欢自己构建二进制packages.对于pkgsrc用户,Part I, pkgsrc用户指南 应该提供了所有所需文档。
package维护人员
package维护者如何创建packages在Part II, pkgsrc开发者指南里里有说明。
基础设施开发人员
这些人员参与所有 mk/ 目录下文件的开发工作。只有这些人员应该通读 Part III, pkgsrc基础设施内部开发人员, 尽管其他人可能也有兴趣。
1.4. 印刷
当给出命令实例时, shell提示符用于显示哪些命令应该/必须以root的身份运行, 或者只用 普通 用户的权限就足矣了。 我们用一个 # 表示必须以root身份运行的命令, 而 % 表示仅以普通用户身份就可以运行该命令, 这里假设用户使用的是C-shell或者tcsh。