目前(2023年)国内能访问SlackBuild脚本的公共仓库,请看下方扩展链接
====== SlackBuild 脚本 ======
SlackBuild脚本本质上是一个shell脚本(通常采用bash shell语法), 它可以自动地配置、编译和创建Slackware包(*.tgz, *.txz, *.tbz 文件)
===== 概述 =====
从源代码创建Slackware包的基本过程可以总结如下,然个别差异应具体问题具体分析
* 解压源码压缩包 (.tar.gz or .tar.bz2 文件) 至安装目录下
* 创建名为''slack-desc'' 文件,并以正确的格式描述该软件
* 如有需要,可自行配置源码或为其打上补丁
* 编译/构建源代码生成可执行二进制文件(binary)
* 将程序安装至某临时目录
这个步骤可能有点棘手,这取决于构建系统的''make-install''(或类似功能)是如何工作的。\\ 在标准GNU Makefile中,传递给''make-install''命令的 ''DESTDIR'' 变量应该足够了。\\ 在不支持该选项的非标准Makefile和构建系统中,这可能涉及修补''Makefile''(或类似文件)或编辑构建系统的构建配置。
* 复制本程序的技术文档或其它必要文件(包括安装后所需脚本)复制到安装目录中的相应子目录中。
这些位置应该遵循Slackware用来存储包管理器安装的应用程序的默认目录结构,即 ''/usr/''目录下。
* 使用临时目录(安装位置)中的''makepkg''实用工具创建一个Slackware软件包,然后可以使用''installpkg''实用工具进行安装。
虽然上面的步骤可以手动完成,但这个过程很繁琐,且需要输入很多命令。通过shell脚本实现自动化安装,用户还可以与整个社区共享流程,使用和修改现有的SlackBuild脚本将同一程序升级到新版本也是很有必要的。
===== 创建SlackBuild脚本 =====
欲求优质的SlackBuild打包教程可访问 [[http://www.slackwiki.com/Writing_A_SlackBuild_Script|此处]], 这里还有些 [[http://slackbuilds.org/templates/|模板]] 可供您参考或使用。
然而不同的软件可能由不同的语言编译或直接解释(解释型语言)而来,因此''安装过程''并无定法,上面概述并不能概括出所有软件的安装方法,仍需按实际情况来更改脚本内容。请不要盲目地复制粘贴其它SlackBuild脚本,其运行结果是未知的(俺寻思可以)。
建议所有SlackBuild作者,在尝试为软件项目编写SlackBuild脚本之前,应先研究并了解其软件的构建系统。 其次,应当熟练掌握shell脚本语法或其它Bash类语法,在Slackware社区中,大多数人常采用Bash语法。理想情况下,使用标准GNU Make系统的简单C项目是开始练习编写SlackBuild脚本的好方法。
于新手而言,在实际编写SlackBuild脚本之前,应达成上述要求以减少了脚本中出现错误和意外行为的几率。
将SlackBuild脚本提交到公共存储库,例如http://www.slackbuilds.org可能另需遵守某些约定和编码标准。 \\ 例如,脚本有必要在运行时(runtime)确定目标体系结构,而不是将其硬编码(hard-code)到脚本中。这些标准试图使SlackBuild脚本尽可能地具有可移植性。
===== SlackBuild 自动生成器=====
这里有些工具也许能辅助你创建SlackBuild脚本,具体如下所示:
* [[http://alien.slackbook.org/AST/ | Alien's SlackBuild Toolkit (AST)]] \\ 基于web实现的“向导性”打包工具 by [[wiki:user:alienbob|Eric Hameleers]]
* [[http://www.dawoodfall.net/slackbuilds/noversion/mkslack/ | mkslack]] \\ SlackBuild生成脚本 by David Woodfall
===== 扩展链接 =====
* SlackBuilds 仓库 - http://www.slackbuilds.org/
* SlackBuild 模板 - http://slackbuilds.org/templates/
国内能访问的SlackBuild公共存储库:
* SlackBuilds荷兰仓库 - https://slackware.nl/slackbuilds.org/
* SlackBuilds英国仓库 - https://www.slackware.uk/slackbuilds.org
* Alienbob的git仓库 - https://git.slackware.nl/slackbuilds
* SlackwareCN社区仓库 - https://github.com/slackwarecn
===== 原著者 =====
* 最初由 [[wiki:user:vharishankar|V.Harishankar]] 为 ''SlackDocs Wiki'' 项目撰写
{{tag>slackware slackbuild}}