YlmfOS编译系统详YlmfOS编译系统详解.doc_第1页
YlmfOS编译系统详YlmfOS编译系统详解.doc_第2页
YlmfOS编译系统详YlmfOS编译系统详解.doc_第3页
YlmfOS编译系统详YlmfOS编译系统详解.doc_第4页
YlmfOS编译系统详YlmfOS编译系统详解.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Ylmf OS 编译系统详解YLmf OS 编译系统一、YBS 是什么?YBS 指的是 Ylmf OS 的打包系统 (Ylmf OS Build System)。这是一种用于从源代码编译软件的类 ports 系统。在 Ylmf OS 中,yget 专门管理二进制软件包,而 YBS 则专门负责把源代码编译,并打包成可安装的 ypk 软件包。Ports 是 FreeBSD 使用的一种系统,它对源码包进行下载、解压缩、打补丁、编译和安装等一系列操作。一个 port 包含一些文件来指导源码的下载和编译安装,系统会自动完成操作。YBS 由一个目录树构成,位于 /var/ybs/pbslib,它包含许多子目录,每个子目录都属于某一类别,都以相应的可创建的软件包命名。此目录并不包含软件包或源代码,相对的它包含一个 pbs 文件和 files 目录。Package Build Script (简称 pbs)是一个脚本文本文件(包含对编译和打包过程的指示、包含源码包的下载地址等),files 目录则存放额外的一些文件,例如补丁文件等。YBS 最重要的部分就是 pbs 文件。1、获得 YBS 树以 root 身份运行1. #ybs -sync复制代码可以从服务器同步 YBS 树,git 管理。有了 YBS 树,用户可以自己定制,从源代码编译打包软件。YBS 包含以下结构和工具的完整工具箱:YBS 目录树: /var/ybs/pbslib,包含所有软件的 pbs 文件和相关文件ybs 命令: 读取 pbs 文件,编译源代码并创建 ypk 包。pbs 文件: 记录有创建软件包的指示和源代码地址。2、YBS是用来做这些的:从源代码编译 Ylmf OS 官方源里没有的软件,当然首先要编写 pbs 文件。定制现有的软件包以满足你的特定需求,修改已存在的 pbs 文件,通常是开启或禁用相关配置选项用其它编译器的 flags 重新构建整个系统 。干净地编译安装你自己定制的内核,只需要修改内核的 pbs 文件。当然,你也可以按照传统的方式 configure/make/make install 来安装软件,但是 ybs 可以使这个工作实现自动化。3、全局编译环境 /etc/ybs.conf 指明环境变量和编译器的 flags。1. $ cat /etc/ybs.conf 2. CC=gcc3. CXX=g+4. #CFLAGS=-march=native -mtune=native -O2 -fomit-frame-pointer -pipe5. CFLAGS=-march=i686 -mtune=i686 -O2 -pipe # 6. CXXFLAGS=$CFLAGS7. MAKEOPTS=-j6 # make 的进程数8. #YPINST_PREFIX=-prefix=/usr9. YPINST_PREFIX= 10. ACCEPT_REPO=stable # 分支 11. #YP_I18N=en zh_CN # 仅需要的语言,其它语言将会被丢掉12. YPPATH_DIST_URI=/sources # 备用的源代码下载服务器 13. AUTO_INSTALL=yes # 编译打包成功后自动安装到系统14. YPPATH_PACKAGE=/var/ypkg/packages # 打包好的 ypk 包存放地址复制代码二、 pbs 文件介绍:1、pbs 文件的位置和命名规则是固定的。以 leafpad 例, 运行:1. # ybs -w leafpad2. /var/ybs/pbslib/app-editors/leafpad/leafpad_.pbs复制代码app-editors 软件类别leafpad 软件名leafpad_.pbs 软件名_主版本号.pbs leafpad_-ylmf1.pbs 软件名_主版本号-修正版本号.pbs2、简单的 pbs 文件:以 leafpad 例, 运行:1. $ cat /var/ybs/pbslib/app-editors/leafpad/leafpad_.pbs2. #3. # YLmf_OS package build script4. #5.6. DESCRIPTION=GTK+ based simple text editor.7. HOMEPAGE=/leafpad/8. LICENSE=GPL-29. PACKAGER=10.11. SRC_URI=/download/$N/$N-$V$R.tar.gz12.13. RDEPEND=atk cairo expat fontconfig freetype gcc glib2 glibc gtk+ libpng libX11 libXau libxcb libXcomposite libXcursor libXdamage libXdmcp libXext libXfixes libXi libXrandr libXrender pango pixman zlib14. BDEPEND=libpng15.16. pbs_unpack() 17. ypkg_unpack18. 19.20. pbs_config() 21. ypkg_patch desktop-i18n.patch22. YPB_CONFIG+=-disable-print23. ypkg_config24. 25.26. pbs_build() 27. ypkg_make28. 29.30. pbs_install() 31. ypkg_mkinstall32. 复制代码运行:1. #ybs -s leafpad 复制代码就可以查询到运行:1. #ybs -i leafpad 复制代码开始编译和打包 leafpad 2、ybs 可以使编译打包工作自动化,主要原因是 pbs 文件的编译规则。下面学习更为复杂的 pbs 文件。/var/ybs/pbslib/template.pbs 是一个模板,里面有详细的各个规则。1. $ cat /var/ybs/pbslib/template.pbs复制代码#1. # YLmf_OS package build script2. #复制代码# 简单的描述,推荐用英文1. DESCRIPTION= 复制代码# 软件主页1. HOMEPAGE=复制代码# 软件分支,testing 或者 stable, 默认是 stable1. REPO=复制代码# 许可协议1. LICENSE=GPL复制代码# 优先级,设置为 required,则在软件中心无法删除1. PRIORITY=required复制代码# 打包者,写上自己的名字和联系方式1. PACKAGER=Ylmf OS Developers 复制代码# 源代码包下载地址。# $N = 软件名, 例如 leafpad# $V = 主版本号, 例如 0.8.1# $R = 副版本号,例如 0.8.1-rc1 中的 -rc1 支持以下 url:1. SRC_URI=/$N-$V.tar.bz22. SRC_URI=/$N.deb3. SRC_URI=/$N.rpm4. SRC_URI=git://$N.git5. SRC_URI=git://$N复制代码如果已经源代码包是自己手动压缩的,复制到 $YPPATH_SOURCE(/var/ybs/sources), 则可以按照以下方式写:1. SRC_URI= 2. SRC_URI=$N-$V.tar.bz2 复制代码#绝对路径1. SRC_URI=$DIR/$N-$V.tar.bz2 复制代码# 依赖关系 运行时依赖,ybs 会事先安装; yget install 处理二进制包时也会自动安装。1. RDEPEND= 复制代码推荐依赖,ybs 不处理; yget install 处理二进制包时会自动安装。1. RECOMMENDED= 复制代码编译依赖, ybs 会事先安装; yget install-dev 会安装,yget install 不处理1. BDEPEND= 复制代码可选依赖,这里只是起到一个记录的作用。1. OPTIONAL=a: support a 2. b: support b复制代码冲突依赖,ybs 会在编译安装成功之后自动删除冲突包,yget install 处理二进制包时也会自动删除1. CONFLICT= 复制代码# 记录一些注意事项1. NOTES=复制代码# 指定 desktop 和 icon 文件1. DESKTOPFILE=glchess.desktop or /opt/test/test.desktop2. ICONFILE=test.png or /opt/test/test.png复制代码# 拆分包。注意开发包( -dev),包含头文件; 文档包( -doc) 是自动处理的。PROVIDE 支持定制的拆分包,规则由以下的 foo_install 函数来处理1. PROVIDE=foo复制代码# 编译之前调用,例如某些软件需要创建用户等1. pbs_init() 2. #ypkg_useradd -c $C -d $D -s $S -g $G $N3. 复制代码# 自动解压源代码包,并 cd 进入解压目录1. pbs_unpack() 2. ypkg_unpack3. 复制代码# 配置编译选项1. pbs_config() 复制代码# 配置之前 打补丁。$FILES_PATH 是 pbs 文件所在的目录,补丁文件只要放到 $FILES_PATH/files/ 或者 $FILES_PATH/files/patches 会自动被找到。1. ypkg_patch *.patch 复制代码# 编译选项,默认的是:1. #YPB_CONFIG+= -prefix=/usr2. # -sysconfdir=/etc3. # -localstatedir=/var4. # -infodir=/usr/share/info5. # -mandir=/usr/share/man6. # -disable-static7. # -enable-shared 复制代码#需要额外的在这里加:1. YPB_CONFIG+=2. ypkg_config3. 复制代码# 开始编译1. pbs_build() 2. ypkg_make3. 复制代码# 测试,一般不需要1. pbs_check() 2. make check3. 复制代码# 安装到指定目录 $YPPATH_DEST1. pbs_install() 2. ypkg_mkinstall复制代码#ybs 还提供了几个工具:# 复制 systemd 的 service 文件到 $YPPATH_DEST/lib/systemd/system 目录1. #ypkg_dounit N.service 复制代码# 复制 desktop 和 icon 文件到 $YPPATH_DEST/usr/share/applications 目录1. #ypkg_dodesktop *.desktop *.png 复制代码# 复制文档文件到 $YPPATH_DEST/usr/share/doc/$N 目录1. #ypkg_dodoc AUTHORS ChangeLog COPYING INSTALL NEWS README 复制代码# 复制时自动创建目标目录1. #ypkg_docp $FILES_PATH/files/XXXX dirname 复制代码1. #ypkg_domv $FILES_PATH/files/XXXX dirname 2. #ypkg_docp_rename $1 $2 # 3. #ypkg_domv_rename $1 $2复制代码# 链接时自动创建目标1. #ypkg_doln $1 $2 复制代码# 复制 man 文件到指定目录1. #ypkg_doman a.1 b.2 c.3 复制代码#当 SRC_URI 后缀是 deb 或者 rpm 包时,ybs 自动解压所有文件到 data/ 目录下,这个时候只要以下命令。1. #ypkg_docp data/* $YPPATH_DEST复制代码1. 复制代码# 拆分包,函数名必须和 PROVIDE 一致,这个时候的 $N,$YPPATH_DEST 变量已经变成 foo1. foo_install() 2. ypkg_mkinstall3. 复制代码# 安装后执行:1. pbs_postinst() 2. #gnome2_install_schema $13. #gnome2_install_defaut_gconf $1 $2 $34. #gnome2_rarian_sk_update5. #gnome2_desktop_database_update6. #gnome2_icon_cache_update /usr/share/icons/titans|titans $default is /usr/share/icons/hicolor7. #gnome2_gconfd_reload8. #gnome2_gtk_immodules_update9. #gnome2_mime_database_update10. #gnome2_gdk_pixbuf_loaders_update11. #ypkg_dofont /usr/share/fonts/truetype/ttf-dejavu12. 复制代码# 删除软件包之前执行1. pbs_prerm() 2.3. 复制代码#删除软件之后执行1. pbs_postrm() 2.3. 复制代码3、更多的例子请参考 /var/ybs/pbslib三、ybs 常用命令介绍:搜索:1. $ ybs -s leafpad2. * Searching for leafpad .3. I leafpad4. Installed: 2011-06-02,09:43:365. Available: 0.8.17s | s 6. Homepage: url/leafpad/url7. Description: GTK+ based simple text 复制代码I 表示已安装s表示 stable 分支t 表示测试分支定位 pbs 文件,找到可用的最高版本的 pbs 文件1. $ ybs -w leafpad2. /var/ybs/pbslib/app-editors/leafpad/leafpad_.pbs复制代码编译某个包,同时自动编译依赖包,加上 -p 参数,可以模拟执行:1. # ybs -i -p leafpad2. * Calculating dependencies.3. E sys-libs/zlib_1.2.5 4. E dev-util/pkgconfig_0.23 5. E app-admin/gamin_0.1.10 6. E dev-libs/mpfr_2.4.2 7. E dev-libs/gmp_4.3.2 8. E x11-libs/xcb-util_0.3.6 9. E x11-libs/gtk+_2.20.1 10. E app-editors/leafpad_ 复制代码E 表示已安装,而且无须升级或者降级D 表示此包需要降级U 表示此包需要升级已经安装的包,强制编译,加上 -F 参数,如果不加上 -p 参数会开始编译 lea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论