建议: 建议一:希望能举一个比较复杂的例子,index.yaml 怎么写,需要哪些脚本?比如编译php的rpm实例,因为依赖包较多,所有一个例子基本就熟悉怎么用multipkg了。 建议二:rpm卸载的时候是不是调用执行脚本preun.sh里面的内容,是不是需要在脚本里面写上 如 rm -f /usr/local/php rm -f /usr/lib/php.so等 建议三:依赖包这些如何做到标准化,如编译php,之前需要安装很多扩展包,这些扩展包就是依赖包? 您在书中说的文件包名不是文件名,文件包名指的是:{name}-{version}-{release} ? (1) rpm 在卸载时是会调用preun或者postun这两个脚本的,但是有一点必须明确,preun和postun并不是用来删除安装的文件, rpm的文件列表在rpm被卸载时会自动删除掉,并不需要在hook脚本中做,一般来说,preun可以做一些停止服务,备份数据日志等操作。 postun在升级时最后执行,可以多一些新旧包对比相关的操作,而postun在卸载时,基本上不需要做任何事情。 (2) 依赖包需要自己心里明确,然后写到index.yaml中,php安装之前要安装的扩展包,指的就是依赖包。 (3) 文件名称不同于包名称,指的就是:"rpm文件的名称和rpm所包含的软件包的名称不一样"。 比如 “multipkg-1.2-1.noarch.rpm ”这个rpm文件,封装的rpm包是“multipkg-1.2-1.noarch ”,当把 multipkg-1.2-1.noarch.rpm 重命名成 123.rpm时,它封装的rpm包还是 “multipkg-1.2-1.noarch” 文件封装的包名,一般可以用 {name}-{version}-{release} 来标示。 cmesoft 发件人: duanjigang1983 发送时间: 2013-11-25 23:29 收件人: lsmd 抄送: xjg2010go; lsmd 主题: [lsmd]回复: multipkg问题 @xjg2010go: 把你发的工程稍微修改下,就可以了: (1): 删掉 scripts/build 中第一行的创建目录的语句即可。添加了日志重定向功能,可以在 multipkg 编译RPM包时 tail -f /tmp/build.log 查看构建日志,也可以直接 multipkg /tmp/rpm/wgt -v 就能看到日志。 (2):把source 中的压缩格式的源码直接提取到和index.yaml一级目录,无需放在source 目录中。 ====================目录结构========= tree rpm rpm └── wget ├── index.yaml ├── root │ └── etc │ └── wget.conf ├── scripts │ ├── build │ ├── post.sh.bak │ └── preun.sh.bak └── wget-1.14.tar.gz ===============build的内容=========== cat rpm/wget/scripts/build #!/bin/sh #mkdir -p /usr/local/bin/ exec 2>&1 >/tmp/build.log ./configure --prefix=/usr/local/wget --with-ssl=openssl make make install ======================= 制作好rpm文件后 rpm -qpl xxx.rpm 就能看到信息了。 言行一致,知行合一 <duanjigang1983@xxxxxxxxx,cmesoft@xxxxxxx> 发件人: xjg2010go 发送时间: 2013-11-25 17:13个, 收件人: duanjigang1983 主题: multipkg问题 这是我的目录 [root@localhost rpm]# pwd /data1/source_create/rpm . 大概意思是找不到解压目录! 建议: 建议一:希望能举一个比较复杂的例子,index.yaml 怎么写,需要哪些脚本?比如编译php的rpm实例,因为依赖包较多,所有一个例子基本就熟悉怎么用multipkg了。 建议二:rpm卸载的时候是不是调用执行脚本preun.sh里面的内容,是不是需要在脚本里面写上 如 rm -f /usr/local/php rm -f /usr/lib/php.so等 建议三:依赖包这些如何做到标准化,如编译php,之前需要安装很多扩展包,这些扩展包就是依赖包? 您在书中说的文件包名不是文件名,文件包名指的是:{name}-{version}-{release} ? xjg2010go