http://blog.csdn.net/junht/article/details/7656540

LTIB 中的包

4.3.1  查看哪些包是使能的,并且可以安装

在配置ltib之前,您可以在一个ltib配置文件上运行bin/listpkgs 。例如,对于mpc8548cds,您可以运行:

# bin/listpkgs config/platform/mpc8548cds/deconfig

这将列出所有可以选择的的包。那些在“Enable”列有一个‘y’将默认编译/安装。

如果您已经配置ltib,您可以得到更精确的(具体)清单通过运行:

# ./ltib -m listpkgs

只选择那些被使能,管道的软件包(y和单引号之间有个空格):

# ./ltib -m listpkgs | grep ' y '

4.3.2  查看包使用许可

使用[[#OptionListpkgs][-m listpkgs]] option

4.3.3  更改包的选择/配置并且立即编译

使用[[#OptionConfigure][--configure]] option

4.3.4  更改包的选择/配置但不编译

使用[[#OptionConfig][-m config]] option

4.3.5  如何编译/安装 不仅仅一个单一的包

# ./ltib -p <package_name>

注意1:当用’-p’指定一个软件包,它将被强制编译,即使它是最新的。

注意2:如果依赖包没有安装,那么编译/安装将失败。

4.3.6  如何更改软件包并且捕获它

默认情况下,rmp将在一个步骤里解压,配置,编译,安装和删除所有来源。这是一个经过充分考虑的特性来确保一个软件包被完全重编译。

显然,如果您正工作于一个包,这个方案是没有帮助的,为了促进这种开发过程,rpm提供short-circuited 编译/安装 的概念。

工作过程的例子

1、  解压源码并应用所有当前补丁

# ./ltib -m prep -p <package>

例如解压uboot 源码,可以使用 # ./ltib –m prep –p u-boot

2、  在“rpm/BUILD/package”下编辑/添加 文件。

3、  编译您改变的软件包。

# ./ltib -m scbuild -p <package>

4、  一旦软件包编译成功,检查安装状态。

# ./ltib -m scinstall -p <package>

5、  提交更改之前测试您的软件包

# ./ltib -m scdeploy -p <package>

6、  重复步骤2 ——> 5直到得到您满意的结果。

7、  生成一个补丁同时更新spec文件(dist/lsf/下)

# ./ltib -m patchmerge -p <package>

8、  手动清理补丁文件(根据需要)

9、  从头编译和安装

# ./ltib -p <package>

4.3.7  添加一个全新的包到根文件系统

怎样添加一个全新的包到我们的根文件系统呢,下面将进行介绍。

第一种是:有一个现有的想使用的srpm。

1、    导入srpm。这将把素材放在rpm子目录下。

# ./ltib –m addsrpms <path_of_the_sprm_to_import>

2、    按要求修改spec 文件(参看dist.lfs-5.1/template/template.spec 的例子)。

3、    确定软件包编译:

# ./ltib –m scbuild –p <new_package>

4、    按需修改rpm/BUILD/new_package目录下的源文件。

5、    生成并合并一个补丁来封装您的改变:

# ./ltib –m patchmerge –p <new_package>

6、    手动清除补丁文件(根据需要)

7、    重头编译和安装

# ./ltib –p <new_package>-x.y

8、    保存您的改变:

a). 将spec文件从临时区域移到一个永久区域并且检查git存储库,例如:

#mkdir dist/lfs-5.1/new_package

#mv rpm/SPECS/new_package.spec  dist/lfs-5.1/new_package/

#cd dist/lfs-5.1/new_package

#git add new_package.spec

#git commit -a -m "added new_package"

b). 拷贝源文件到您的LPP(Local Package Pool)

# rsync  -vptgo --ignore-existing  rpm/SOURCES/* /opt/freescale/pkgs/

c). 现在您需要上传您的源码/补丁 到PPP。

第二种: 没有现成的包,并且希望创建一个全新的包。可以按如下方法进行操作:

1、             首先清理您的源文件(删除所有的.o, .a, .so 后缀的生成文件)然后制作一个”tarball”,例如:

# cd <my_new_package>-x.y

# make clean

# cd ..

# tar zcvf <my_new_package>-x.y.tar.gz <my_new_package>-x.y

2、             移动这个tarball 到 LPP 以便 ‘ltib’能够找到它。

# mv <my_new_package>-x.y.tar.gz /opt/freescale/pkgs/

3、             使用现有的模板创建一个specfile

# mkdir dist/lfs-5.1/<my_new_package>

# cp dist/lfs-5.1/template/template.spec

dist/lfs-5.1/<my_new_package>/<my_new_package>.spec

4、             编辑固定模板来反映您的包,这个文件可能做如下改变(这部分的例子可以参看‘编译新的U-Boot’和‘编译新的Linux内核’等章节):

| *Field*   | *Description* |

| Summary | put in a summary of what the package is/does |

| Name    | put in the name of the packge (usually from the tarball name) |

| Version   | put in the version (usually from the tarball/directory |

| Release   | start at 1 and rev each time you change the spec file |

| License   | e.g GPL/LGPL/BSD, look this up in the package's files |

| Group    | If this exists on an rpm based machine, copy from rpm -qi <package> <br> If not, choose something from /usr/share/doc/rpm-<version>/GROUPS |

| %Build   | often you'll need to add *--host=#CFGHOST --build=%{_build}* to the configure clause |

5、             解压新软件包源码

# ./ltib -m prep -p <my_new_package>

6、             编译您改变的新的软件包

# ./ltib -m scbuild -p <my_new_package>

7、             一旦新软件包编译完成,检查安装状态

# ./ltib -m scinstall -p <my_new_package>

8、             在提交改变之前,如果您想测试您的软件包,可以执行下面的操作

# ./ltib -m scdeploy -p <my_new_package>

9、             一旦您满意新包,提交更新的spec文件。

# git add .

# git commit -a -m "added new_package"

10、         通过http://auslxsc01.mtwk.freescale.net/ltib/index.html. 上传新包包含的源码和补丁到PPP。

注意:

只有批准文件可以释放BSP,所以请遵循流程

1、如果你想与其他人分享,上传文件到PPP

2、检查脚本的运行,那么您将得到twiki之类的页面链接到你的文件

3、发送请求的电子邮件,其中包括twiki之类的页面链接进行审查

4.3.8  如何介绍新软件包来配置系统(略)

这一节再此处省略,您可以参见LtibFaq 文件 的1439行(或者搜索关键字How do I introduce my new package to the config system来查找)

4.4 LTIB 中的源码

软件包的源码在什么地方呢?

如果本地公共缓存区不可用,它们被下载和缓存到一个公共区域。如果您使用的是一个ISO镜像,它们将被预安装进本地公共缓存。

我们能从哪儿得到这些源码呢?主系统使用的是GPP/LPP/PPP。首先我们了解一下什么是LPP/GPP/PPP。

PPP(Private Package Pool),它可以有选择的使用一个存储区域用于私有源码和补丁来私有的访问http服务器。

GPP(Global Package Pool)是一个公共可用的http服务器,被用于为LTIB存储源码和补丁。

LPP(Local Package Pool)是一个本地公共缓存,被用于存储所有源码和补丁。

当ltib 需要编译rpms 时,包的spec文件被解析,解析后,编译器有一个源码和补丁的列表,这个列表在编译包的时候被用到。接着,编译器将顺序完成如下的工作:

1)检查file/symlink(不带任何path/URL前缀)是否存在rpm/SPURCES目录,如果存在,则使用。否则,进行第二步。

2)检查file/symlink(不带任何path/URL前缀)是否存在于LPP目录,如果这个文件存在,一个symlink 被创建到rpm/SOURCE目录,并且链接使用。如果没有,进行第三步。

3)编译器尝试从PPP下载文件(如果被 *%ppp_url* tag in *.ltibrc* to the LPP using *wget*指定)。如果下载成功,一个symlink被创建到rpm/SOURCE,并且链接使用。如果下载失败则进行第四步。

4)编译器尝试从GPP下载文件(由*%gpp_url* tag in *.ltibrc* to the LPP using *wget*指定)。如果下载成功,一个symlink被创建到rpm/SOURCE,并且链接使用。如果下载失败则进行第五步。

5)如果上述步骤都失败了,编译器将给出失败错误信息。

注意:您可以输入您的代理服务器信息到”.ltibrc”源文件,如果您工作于公司VPN环境并且希望在英特网上的外部GPP得到源码,必须这样做。

LTIB常用命令3的更多相关文章

  1. LTIB常用命令2

    LTIB 编译配置选项 根据说明文档,ltib 可以通过以下的命令配置: * <verbatim># ./ltib</verbatim>          安装后第一次运行,采 ...

  2. LTIB常用命令1

    下面再写一点ltib的常用命令参数吧,虽然觉得对其编译内核和文件系统流程有了一定了解,但是对其命令参数用过的还不是很多,可以说是不甚了解,下面介绍一些,希望有用: 首先一个比较有用的命令参数就是hel ...

  3. Linux 常用命令(持续补充)

    常用命令: command &:将进程放在后台执行 ctrl + z:暂停当前进程 并放入后台 jobs:查看当前后台任务 bg( %id):将任务转为后台执行 fg( %id):将任务调回前 ...

  4. LVM基本介绍与常用命令

    一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...

  5. Linux学习笔记(一):常用命令

    经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...

  6. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  7. 【原】npm 常用命令详解

    今年上半年在学习gulp的使用,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令到自己博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块 ...

  8. npm常用命令

    npm常用命令 环境:win7 npm 是什么 NPM(node package manager),通常称为node包管理器.顾名思义,它的主要功能就是管理node包,包括:安装.卸载.更新.查看.搜 ...

  9. Git 常用命令

    一.初始環境配置 git config --global user.name "John Doe"git config --global user.email johndoe@ex ...

随机推荐

  1. Visual Studio + SqlServer

    vs2010: http://pan.baidu.com/s/1eQrlUwU sqlServer2008: http://pan.baidu.com/s/1sjQbyk1

  2. awk用法小结(作者总结)

    http://www.chinaunix.net/old_jh/24/691456.html http://wenku.baidu.com/view/ebac4fc658f5f61fb736664d. ...

  3. JAVA基础知识之JVM-——URLClassLoader

    URLClassLoader是ClassLoader的一个实现类,它既能从本地加载二进制文件类,也可以从远程加载类. 它有两个构造函数, 即 URLClassLoader(URL[] urls),使用 ...

  4. dubbo源码之四——dubbo服务发布

    dubbo版本:2.5.4 服务发布是服务提供方向注册中心注册服务过程,以便服务消费者从注册中心查阅并调用服务. 服务发布方在spring的配置文件中配置如下: <bean id="d ...

  5. C/C++通过WMI和系统API函数获取获取系统硬件配置信息

    转载:http://www.cnblogs.com/renyuan/archive/2012/12/29/2838716.html 转载:http://blog.csdn.net/jhqin/arti ...

  6. iOS静态库和动态库的区别

    一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用 ...

  7. Linux下指定版本编译安装LAMP

    说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...

  8. 高通APQ8074 spi 接口配置

    高通APQ8074 spi 接口配置 8074 平台含有两个BLSP(BAM Low-Speed Peripheral) , 每一个BLSP含有两个QUP, 每一个QUP可以被配置为I2C, SPI, ...

  9. 双4G LTE

    我们即将上市的Xplay3S将支持双4G LTE(TDD-LTE+FDD-LTE),那什么是4G LTE呢,今天来给大家科普下4G LTE网络知识. 什么是TDD-LTE/FDD-LTE? LTE是通 ...

  10. gitlab配置和搭建 ssh

    (1)查看自己之前是否生成过ssh密钥: cat ~/.ssh/id_rsa.pub 如果出现一段ssh-rsa开头的,表示已经生成了,可以跳过此步骤: (2)如果之前没有生成ssh密钥,使用命令: ...