LTIB常用命令3

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得到源码,必须这样做。

时间: 2024-11-07 12:54:25

LTIB常用命令3的相关文章

LTIB常用命令1

下面再写一点ltib的常用命令参数吧,虽然觉得对其编译内核和文件系统流程有了一定了解,但是对其命令参数用过的还不是很多,可以说是不甚了解,下面介绍一些,希望有用: 首先一个比较有用的命令参数就是help,一个人忘记命令参数很常见,何况刚开始熟悉这个工具.下面这个命令行可以查看ltib命令的使用帮助:$ ./ltib --help ## 这个等同于 ./ltib -h 在编译内核和文件系统时,有时忘了我们选了哪些程序包来进行编译操作,我们可以用下面的命令来查看当前安装模式下所有可用的程序包,是否被

LTIB常用命令2

LTIB 编译配置选项 根据说明文档,ltib 可以通过以下的命令配置: * <verbatim># ./ltib</verbatim>          安装后第一次运行,采用默认配置 * <verbatim># ./ltib -m config</verbatim>  仅配置 * <verbatim># ./ltib --configure</verbatim> 配置和编译 执行./ltib是LTIB的默认配置,事实上可以通过./

linux常用命令--netstat

简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接等等. 常用参数 -a (all)显示所有选项,提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字.-l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立相关链接的程序名-r 显示路由信息,路由

Linux常用命令(echo、date、ls、cd、history、cat)

一.linux常用命令有很多今天我们来总结一下常用的入门命令: 1.linux下关机命令:poweroff.init 0.halt.shutdown -h now 2.linux下重启命令:reboot.init 6.shutdown -r now 3.shutdown命令: 格式:shutdown  options TIME 其中options有以下几个: -r:执行重启 -c:取消shutdown命令 -h:执行关机 其中TIME有以下几个: now:表示现在 +m:相对时间表示法,从命令提

用xshell操作linux系统的常用命令

(1)命令ls——列出文件 ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件 ls a* 列出当前目录下以字母a开头的所有文件 ls -l *.doc 给出当前目录下以.doc结尾的所有文件 (2)命令cp——复制文件 cp afile afile.bak 把文件复制为新文件afile.bak cp afile /home/bible/ 把文件afile从当前目录复制到/home/bible/目录下 cp * /tmp 把当前目录下的所有未隐藏文件复制到/tmp/目

分布式缓存技术redis学习系列(二)——详细讲解redis数据结构(内存模型)以及常用命令

Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sorted Set. Redis数据类型内存结构分析 Redis内部使用一个redisObject对象来表示所有的key和value.redisObject主要的信息包括数据类型(type).编码方式(encoding).数据指针(ptr).虚拟内存(vm)等.type代表一个value对象具体是何种数

ceph集群常用命令

结合网络.官网.手动查询等多方渠道,整理ceph维护管理常用命令,并且梳理常规命令在使用过程中的逻辑顺序.另外整理期间发现ceph 集群的命令体系有点乱,详细情况各自体验. 一:ceph集群启动.重启.停止 1:ceph 命令的选项如下: 选项简写描述 --verbose-v详细的日志. --valgrindN/A(只适合开发者和质检人员)用 Valgrind 调试. --allhosts-a在 ceph.conf 里配置的所有主机上执行,否 则它只在本机执行. --restartN/A核心转储

Linux系统的常用命令

常用命令 1.日期时间 date:查看.设置当前系统时间 hwclock显示硬件时钟时间 cal查看日历 uptime查看系统运行时间 2.输出.查看命令 echo:用以显示输入的内容 cat:用以显示文件夹内容 head:用以显示文件的头几行(默认10行) 参数:-n指定显示的行数 命令tail:用以显示文件的末尾几行(默认10行) 数:-n指定显示的行数 -f追踪显示文件更新(一般用于查看日志,命令不会退出,而是持续显示新加入的内容) 命令more:用于翻页显示文件内容(只能向下翻页) 命令

Linux常用命令学习

补充: 管道符号:   | 含义: 命令1 的正确输出作为命令2的输出对象. 格式: 命令1   |  命令2 举例: ls -ctrl |  more 常用命令: netstat   -an    |  grep    ESTABLISHED         查看正在连接的端口 netstat   -an    |   grep   LISTEN find   .    -name   test.txt    |     cat    -n          在当前目录下找到文件名为test.