原创翻译:从零开始编译Puppy

英文原文:http://www.puppylinux.com/pfs/index.html

注:本翻译是作者原创翻译,转载请注明出处链接。本文是从英文原文部分的“Getting started with T2 and Puppy”处开始翻译的,因为开到之前在一些网站上有人已经翻译过前面的部分(很少的一部分),但是作者没有坚持翻译完,于是我就利用空间的时间翻译下,算是练习英语了,也是第一次翻译Linux相关的英文原文文章,不足之处敬请斧正。

开始去学习如何用T2的时候,我发现在线学习手册某些地方有些不足,但是我发送问题给邮件列表成员,——rene并且这非常有帮助,这样对以后遇到同样问题的人会变得有帮助(简单)。当我有了s一个提前配置好的T2编译文件包(T2-build-package,就准备好了开始编译puppy包。

第一步:准备好所有的东西

Puppy有一个 devx_xxxsys的文件,从这可以进入puppy的编译环境,其中,“XXX”代表了版本号码,比如:“400”的意思四puppy 版本4.00 。你必须使用“dingo(野狗,版本名称)Puppy 4.0及以上版本。

你需要下载“devx”文件到路径/mnt/home下(跟“pup_save”个人保存文件相同,然后重启,这非常简单,如果你有所有的硬件驱动安装,关于安装“devx”文件的详细步骤可以参考“Hard Puppy”网页)。

第二步:安装 T2 核心编译包(T2 core-build-package

首先我已经有了t2核心安装包,是2007年十月15th,从SVN 获得,这个核心安装包的名字是“t2dingo-core.tar.gz”,它已经提前配置好了puppy。所以,不要从T2网站上下载。想反,你可以从我的 ibiblio.org 文件主机服务器上来下载,

可以通过下面的链接获取下载地址:http://www.puppylinux.com/download/downpage.htm

注意:我现在有一个tarball t2-dingo.tar.gz 。里面包含所有的代码,文件有点大,大概有1GB。你可以在 ibiblio.org 上下载,

直接下载链接地址:ftp://ibiblio.org/pub/linux/distributions/puppylinux/t2-dingo/

你需要把它下载到一个Linux的分区(ext 2ext3 或者reisrefs,必须至少包含10G的空闲空间,如果你需要编译多于默认大小包的内容,给puppy 留下1520G的空闲空间是最好的 .

T2-pkg 扩展开来,你可以看到以下目录:

leedd.com_puppy


target”目录是保存你puppy的安装包选择和特殊配置的目录,我创建了一个叫”piglet”的目录,用来编译Puppy.如果你仔细观察这个目录(原文直译:在这个目录闲逛).主要的注意力在”pkgsel”这个文件,它包含所有即将编译的包的列表.

如果我们想精确的知道在puppy里的软件包(abiword)信息,什么版本,从哪下载的等等.那么我们需要用到”package”目录,你可以这里寻找到每个包的详细说明. 主要是,你可以看到一些以.desc,.conf.cache作为扩展名的文件.你可以在文本编辑下看到他们就能对他们的功能有个基础的了解.

例如, 当我看到 package/gnome2/abiword/abiword.desc. ,我看到版本是2.4.6 并且,原始下载路径也给出, 当然,T2会首先会链接它的在线仓库,然后再从原始路径下载.

下载目录是源代码包下载的保存目录.如果你在线.T2会自动做这些事情,但是要小心,

即使你只下载puppy所必须选择的包,也有大概1.5G大小.如果需要你可以手动的下载他们.但是 T2会做个校验以便于确认这是一个首选的方法去下载他们.

config目录是你创建一个或多个构造”剖面图”.我已经建立了一个”piglet001,你会看到一个关于那个名字的指南,我建立这个轮廓是运行下面的脚本:

# ./scripts/Comfig -cfg piglet001

当我运行这个config脚本,我选择了”piglet”对象.加上各种其他的定制(customization?)

如果你想对”piglet001”做一些修改,你可以自己用下面的代码进行:

# ./scripts/Config -cfg piglet001

你可以获得一个文本模式的”Kconfig”菜单系统以供你做出所有的选择,像是,CPU去编译什么,什么包要被编译按照dietlibc ? .你可以试试以上的例子去看看这些选项,并且不保存退出.

第三步:下载源代码包

去运行并且编译putty包是非常简单的,首先保证你必须在线,以便于T2包能够被请求下载,像下面这样:

# ./scripts/Download -cfg piglet001 -required NOT REQUIRED FOR FULL TARBALL

然后等待1.5Gb 的安装包的下载,注意,‘-required’意思是只有安装包请求‘piglet001’需要的大概(轮廓)才会被下载,(而不是全部的2400个包!)

一个警告:我改变了一些‘package’目录下的.desc文件,例如,我改变了package/www/seamonkey/seamonkey.desc 到新的版本,这是一些改变的行:

[V] 1.1.5
[D] 1889686604 seamonkey-1.1.5.source.tar.bz2 http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/1.0.4/

然后我下载了seamonkey-1.1.5.source.tar.bz2直接(手动的)下载到download/mirror/s/ .注意,数字“1889686604”--T2 用到那个“cksum”程序去做checksum,但是这些在没有编译的文件中完成,所以,自己动手做一下:‘#bunzip2 seamonkey-1.1.5.source.tar.bz2

然后‘#cksum seamonkey-1.1.5.source.tar’然后再用到第一个数字。

注意那个URL链接---这是作者的可靠的下载站点,如果这个包不能在T2仓库中可用。

然而,正确的使用cksum不是必须的,如果你手动的下载了一个最新的包直接保存在“download”文件夹。T2 不会检查它的cksum.你所需要做的是更新“.desc”文件通过输入‘[V]’。

如果T2不能够下载那个包,或是你没有手工下载,下载脚本会在那个点上停顿(打嗝),并且输出一些高亮的红色文字。你必须在解决完以下问题后再次进行重复刚才的运行操作:

# ./scripts/Download -cfg piglet001 -required

T2会后退去尝试获得文件包从原始作者的下载站点,但是这些可以改变,意味着你可以查看.desc文件并改正一些错误的链接--并且让我们知道!

我有一些源仓库链接:http://www.puppylinux.com/download/downpage.htm

我的下载页面也有一些其他源文件包的链接,所以你可以查出所有丢失的包。

第四步:开始编译

build’目录所有的已创建的输出目录,是一个完全的根文件系统。一个虚拟的环境,

用它自己的核心和CPU进行编译,以.tar.gz2形式的二进制包也是在这被创建出来,这些是我们希望我们的puppy做到的。

在下载完所有需要的源文件包后,全部的创建(编译)二进制文件的进程都可以用下面的语句来执行:

# ./scripts/Build-Target -cfg piglet001

经过一天的时间所有的都会完成。

我不是开玩笑,这需要好多时间,并且需要很多硬盘空间,一个2GHzCPU和至少256M的内存是必须的如果你希望编译这些只用一天的时间。

你也可以同时用电脑进行网上冲浪,但是响应会非常迟钝。同时别指望着做一些大型的应用。

第五步:编译失败

T2在编译一个包的时候,源文件压缩包是会扩大的,T2会为它创建一个名为“T2trunk“的目录链接。于是,点击那个链接你就会进入包的编译环境。正常情况下T2会删除包编译环境,除非编译失败它才 会留在那里。所以,完成后你可以去看下并尝试找出哪个地方出错了。

除此之外,T2会保持一个编译日志在 build/piglet001-8.0-trunk-piglet-x86-i486/var/adm/logs/

举例来说,如果Seamonkey编译失败,这个文件会是:build/piglet001-8.0-trunk-piglet-x86-i486/var/adm/logs/5-seamonkey.err

这是个对找出失败原因很有帮助的文件。

许多失败结果在非常大的包编译环境被留下。会很快的减少硬盘的剩余空间,加上一些其他类别的临时文件,你可以用下面的代码清理他们(不会删除成功编译的二进制文件):

# ./scripts/Cleanup

如果你不想删除所有的编译包,并且从起跑线重新开始,可以用下面的代码:

# ./scripts/Cleanup -build -cache

第六步:调试失败问题

一个编译失败可能是因为忽略了一些必要条件,或仅仅是文件打包后的一个必要的编译,或是配置操作步骤出错。

每个文件包有它自己的.conf 配置文件。你可以通过这个来控制编译进程,例如,Seamokey package/www/seamonkey/seamonkey.conf .这个文件可以被编辑,虽然Rene提到说这不仅仅是描述而是能把T2-build-pkg提到更高一级的标准---当T2编译包有更新的时候,通过自定义的这些文件使得其与编译包的同步有点困难。为了解决这个问题,一个“Overarch”的.conf文件在路径targetpigletdirectory下被创建出来—-可以参考T2在线手册来获取更多的帮助信息。

当你觉得自己已经解决了编译失败的问题,或许会再次用到下面的编译目标脚本来进行清理工作:

# ./scripts/Cleanup
# ./scripts/Build-Target -cfg piglet001

第六B 步:安装dingo .00

网络上有许多黑客,所以你需要手动的安装Dingo Puppy4.00包去编译,这是个T2核心的编译包名字叫T2-dingo[-core].tar.gz. 最新的版本解决了以下问题:

  1. Perl 编译,第一阶段,缺失项,为了安装这个,你需要去目录package/database/bdb/ 重命名文件bdb.desc-SECONDbdb,desc,然后做下面的工作:

# ./scripts/Cleanup

# ./scripts/Config -cfg piglet001 (and just exit)

# ./scripts/Build-Target -cfg piglet001

perl成功编译后,恢复原始的bdb.desc文件。

  1. 2. 安装librsvg,阶段5,失败,为了修理这个,用文本编辑器打开文件build/…./var/adm/flists/gtk+ 并重命名文本串“gdk-pixbuf.loaders”为其他的任意字符,例如,“gdk-pixbuf.loaders-HIDE”.然后做下面的操作:
# ./scripts/Cleanup -cache
# ./scripts/Build-Target -cfg piglet001

librsvg安装成功后,编辑gtk+文件并改变那个文本串为原始的内容。

3mplayer编译, 阶段5,失败,为了修理这个,从mplayer源文件中复制文件libavutil/intreadwrite.h build/…./usr/include/ffmpeg/

#./scripts/Cleanup -cache

# ./scripts/Build-Target -cfg piglet001

这是个Mplayer在用附加的ffmpeg包时候所遇到的问题。

第七步:添加更多的软件包

打开文件target/piglet/pkgsel 你会看到一些文件包标记出来,你可以取消他们的标记,然后再次运行Built-Target 脚本。你也可以添加一些更多你需要的软件包,按照下面的来做:

# ./scripts/Build-Target -cfg piglet001

Pupppy会继续编译并添加这些新包到编译系统中。

第八步:输出到释放

那个全新的文件系统在build/piglet001-8.0-trunk-piglet-x86-i486/下建立,当然,所有成功编译的包被制作成.tar.bz2 压缩包,可以在下面的路径找到:

build/piglet001-8.0-trunk-piglet-x86-i486/TOOLCHAIN/pkgs/

你可以复制这些包,并在自己的Puppy上使用。

3 thoughts on “原创翻译:从零开始编译Puppy

  1. Logan

    你好,很高兴你能把这篇文章翻译完,我就是你提到的那个在 minilinux.net 论坛中,翻译同一篇文章却没有完成的那个人。
    一年后的今天,我想起这件事,于是根据电脑里的原稿,完成了翻译。
    http://xorcerer.javaeye.com/admin/blogs/770728

    希望以后能互相交流。

    1. Lee Post author

      @Logan,
      恩 看了你翻译的 ,不过没有你博客的账号没法评论,我也是之前需要资料搜索到的,然后看你没有翻译完就自己动手了,翻译不好之处还请多多指导

Comments are closed.