|
|
第 1 帖 | |
|
|
标题: 翻译:如何写 SlackBuild 脚本 利用周末时间翻译的,当时写的 html 文件,上传到 googlepages 了。
链接:http://cn.fyodor.googlepages.com/SlackBuild.html 原文链接:http://slackwiki.org/Writing_A_SlackBuild_Script 翻译有不当的,望诸位不吝赐教。谢。 edit: 用 firefox 的打印到 pdf 功能,转换成 pdf 文件了,上传。
__________________
Slackware 13.0(2.6.32 customized kernel) on HP nc6400 此帖于 09-03-02 10:51 被 helo_aBiNg 编辑. 原因: 上传 pdf |
|
|
|
|
|
|
|
第 2 帖 | |
|
|
support the good translation.
|
|
|
|
|
|
|
|
第 3 帖 | |
|
|
相当不错的翻译!
对于那个 ./configure --prefix=$PKG/usr 的问题,好像 slackbuilds.org 上出过问题的。就是虽然这样打出来的包结构是对的,但是里面的程序还是有可能去 $PKG/usr 下面找自己的库,安装的过程某种意义上说是 $PKG/usr => /usr 的过程,库的路径变了,安装之后的程序就没法启动了…… 忽然又想到,咱们要不要有一个合作翻译 slackwiki 的计划(或者是项目)?
__________________
DELL 1501; AMD Turion(tm) 64 X2 TL-56; ATI Radeon XPRESS 200M Slackware64-current; http://grissiom.blogspot.com/ http://blog.csdn.net/grissiom/ |
|
|
|
|
|
|
|
第 4 帖 | |
|
|
如何写 SlackBuild 脚本
-- 来自 SlackWiki 介绍 原作者:Florian Mueller (jjdm at jjdm.org) 增删者:Robby Workman (rworkman) 翻译者:aBiNg (cn.fyodor at gmail.com) @ 2009.03.01 如果你把 slackware 作为你的主操作系统,你很可能需要安装一些官方网 (slackware.com) 上所没有的应用程序,或者来自第三方源(例如 linuxpackages.net),或者你不想用第三方包。后一种情况下,你有几个安装应用程序的途径:
我将讨论最后一个选择:写 SlackBuild 脚本,它包含了前述几种方式的所有优点。你可以通过 SlackBuild 脚本自动地完成所有编译任务,并且以后升级或者打补丁也很方便。SlackBuild 脚本也是 Patrick Volkerding 编译 Slackware 所有官方程序包的方式。如果看到不同源代码的大量脚本,你会发现它们通常包括两部分:独立于程序的部分和依赖于程序的部分。 我无法教给你写一个"完美"的脚本,因为达到这个目标需要对 Slackware 系统有较深入的理解。你得综合考虑你所提交的包与发行版的其它包之间的关系,二者必须"亲密无间"。我所能教的是以 "Slackware Way" 编译一个能运行的包。 "But it takes so much time!" 我将用大概 30 分钟讨论这篇指南,用 15 分钟去创建每个文件(实际编译过程略),但相比以后节省的时间,开始花点时间是值得的。 Slackware 包的结构 见 SlackWiki http://www.slackwiki.org/Packages#Sl...Package_Layout 设置编译环境 见 SlackWiki http://www.slackwiki.org/Build_Environment 准备工作 但愿你对 Slackware 包的结构现在已经清楚了,并且你已设置了一个干净的编译环境,我们开始经由 SlackBuild 脚本的编译之旅吧。 我们拿 latex2html 作为创建包的一个例子 -- 我在我的主页上已创建过这个包。 首先,建立文件夹 <build_environment>/latex2html/。获取 latex2html 最新源码包并放到此文件夹中。需要注意的是,下面使用 wget 下载源码的方式是可选的 -- 你完全可以用自己最喜欢的浏览器打开并下载它,然后再放到正确的目录中。 代码:
代码:
代码:
代码:
见 Slackwiki.org 上面的页面 Slack-desc,从中你会学到如何写一个合适的 slack-desc 文件。 写 SlackBuild 脚本 这是最占时间的部分,我将一步步来讨论。当你编译更多包的时候,你只需要复制现有 SlackBuild 脚本,然后再自定义它。首先我得提醒你,你可以用任何一种方式来写你的 SlackBuild 脚本,只要它能创建一个能正常运行包即可。现在所讲述的大概就是 Pat Volkerding 创建包的方式,但是即便是 Pat 本人也有几种写官方 SlackBuild 脚本的方式。因此,倘若你觉得应该以不同方式写,尽情去发挥吧。没有问题。 初始化脚本 用自己喜欢的编译器打开 latex2html.SlackBuild 文件。下面所要做的就是一点点地充实脚本了。你当然可以完全粘贴这些内容,但在笔者看来,自己动手将会使你更加理解其中的意思。 首先,你须设定你的 shell 解释器。这个应该是 /bin/sh,因为所有 Slackware 系统肯定都装有它,它会使脚本移植性更好。同此,你应该特别注意一下其它 shell(bash, zsh等) 的语法与 sh 的兼容性,它们不一定都通用。 代码:
代码:
代码:
代码:
代码:
解包 代码:
代码:
设置文件会到 /etc 目录,状态文件(例如 log 文件)会到 /var 目录,其它都到 /usr 目录。 这就是通常意义上的 Slackware 方式,但你的系统你做主,你完全可以将所有资源装到 /usr/local 或其它目录。详情参见Unix 文件系统的继承标准。 你意识到可能还有别的选项传递给 configure 脚本,对每个要编译的应该程序来说,你必须理解这些选项的意义 -- 这也是之前解压源代码的原因。直接 cd 到源代码目录运行: 代码:
代码:
代码:
顺便提个建议:在你执行 SlackBuild 脚本之前,记得一定要手动以普通用户身份执行一遍 ".configure && make && make install DESTDIR=/somedir"。它会输出程序在安装过程中究竟做了哪些"趣事"。 例如,apcupsd 会试图给 /etc/rc.d/rc.6 打补丁。嗯,这可以经由 configure 脚本选项避免掉,但在你读懂所有 Makefiles(或者检查安装过程) 之前你并不清楚。 不管怎样,如果你以普通用户身份执行这些步骤,安装程序尝试写不被允许的地方时将会有 "Permission Denied" 的提示。 安装帮助文档 代码:
代码:
最后一步 代码:
代码:
代码:
代码:
DESTDIR 变量不可用 正如上面所提到的,有些程序的 Makefiles 文件不支持 DESTDIR 选项。还有一些 DESTDIR 变量在 Makefiles 中用了别的名称。例如,Qt 程序中有些是使用 INSTLL_ROOT 变量代替的。如果你懂 Makefiles,值得你花点时间精读一下它的内容并努力搞懂安装规则中的具体执行操作。糟糕的是,有时根本没有 DESTDIR 类似的变量。最好的办法就是给 Makefile.in 打补丁或类似的操作,并发送给开发者完美代码,但我知道不是所有都有能力这么做。退而求其次的就是写信给开发者,并请求在后来的版本中加入该功能。同时,现在有些变通的方法。 例1 连同别的选项这样执行 configure 脚本: 代码:
代码:
例2 这个例子将使用一种覆盖 Makefile 变量的方法,该方法在 Makefile 词条学中被称为 "macro",只基于命令行,故不必担心为了添加 DESTDIR 宏而给 Makefile 打补丁,而且还给那些不熟悉 Makefiles 语法的人带有便利。 如果 Makefile 文件中 'make install' 命令不带 DESTDIR,你可以改变预定义宏,这样: 代码:
重点:宏名称是分大小写的(至少 GNU make 是这样)。有些 Makefiles 使用 "PREFIX =" 宏替代通常的 "prefix =",因而 'make intall' 命令应该像这样写: 代码:
代码:
你正处理的 Makefile 文件中一旦有未定义的 "PREFIX =",这种情况下就可以使用 /usr(或 /usr/local)了,再 'make PREFIX=$PKG/usr install' 安装到程序的编译位置。 给源代码打补丁 总有一些原因,迟早会让你在编译之前给源代码打补丁,并且你应该能够自动完成它。 获取补丁 大多数情况下,补丁由代码作者提供,所以我们不必在这儿讨论写补丁的问题。下载并将它放到与 SlackBuild 脚本,slack-desc 文件,以及别的相关文件相同的目录(即 $CWD)。 下面的步骤也许不必做,但开发者们通常尽可能地节约空间,故: 代码:
打补丁 现在编译 .SlackBuild 脚本,在 'configure, make, make install' 之前打好补丁。类似这样在 configure 脚本运行之前运行: 代码:
代码:
参考
__________________
Free as in freedom, slack as in Slackware. 欢迎访问 http://slack.linuxsir.org 个人blog:http://blog.tuxfans.com/ RSS:http://feeds.feedburner.com/windroseblog |
|
|
|
|
|
|
|
第 5 帖 | |
|
|
翻译的好!!
__________________
支持所有BSD |
|
|
|
|
|
|
|
第 6 帖 | |
|
|
to grimssion:
开发者不按 configure 规则来,怕是要麻烦包维护者了。 SlackWiki 词条不很多,但是,国内 Slacker 更不是很多,我觉得可以先着手重要部分,合作完成。 话说回来,国内 Slacker 估计不精通英文的怕是不多,我都觉得这篇翻译有点多余了似乎。 to windrose: html 中有用了 <xmp></xmp> tag,论坛不支持吧?代码引用格式有的已乱了。谁熟悉 tex,帮做成 pdf,或者我自己学去吧,还是个未入门者呢。 |
|
|
|
|
|
|
|
第 7 帖 | |
|
|
不错的slackbuild翻译哦
slackbuild是针对slackware构建,所以最好所有包都用slackbuild构建,不然可能会出现grimssion的问题,我觉得是这样的
__________________
做人要知足,做事要知不足,做学问要不知足 http://geekliu.com/ |
|
|
|
|
|
|
|
第 8 帖 | |
|
|
学习了,感谢lz的工作!
__________________
Opera, 好快、好用、好玩。 Slackware 12.0, 12.1, 12,2, 13.0 -> now 13.1(2.6.33.4) HP nx6330(RQ708PA) T5500 1.66GHz/945PM/2G DDR2 667/80G/ATI Mobility Radeon X1300 64M/14.1/3495ABG |
|
|
|
|
|
|
|
第 9 帖 | ||
|
|
引用:
![]() tex 谈不上熟悉但是会用一点~ 我抽空做下看? ![]() |
||
|
|
|
||
|
|
第 10 帖 | |
|
|
非常好的资料,受益了。感谢译者。
|
|
|
|
|
|
|
|
第 11 帖 | |
|
|
多谢,一直都想了解下,这下有用了
__________________
把别人上网和玩游戏的时间都用在工作和学习上 |
|
|
|
|
|
|
|
第 12 帖 | ||
|
|
引用:
使用时基本都不用去改 |
||
|
|
|
||
|
|
第 13 帖 | |
|
|
翻译的很好,还是中文看着亲切。谢谢LZ。
|
|
|
|
|
|
|
|
第 14 帖 | |
|
|
前一段时间貌似 slackwiki.org 的数据库崩掉了…… 虽然最后貌似整回来了,但是页面却没有了…… 楼主还留着英文原版么?要是留着的话再贴回去吧~
|
|
|
|
|
|
|
|
第 15 帖 | |
|
|
# 安装所有文档到包目录,有错退出
make install DESTDIR=$PKG || exit 这个地方是否有误呢?latex2html的Makefile文件好像没有DESTDIR变量,这样的话是否就执行在系统中安装latex2html?请指教 |
|
|
|
|
|