在163.com镜像站点的时候,os下有个目录SRPMS,就下个src.rpm来安装学习。
以下是我的一些理解,不一定对,希望大虾们指正啊。
1、 下载释放rpm包
[fukeyun@heliy yumcentos]$ wget http://mirrors.163.com/centos/6.0/os/SRPMS/Packages/media-player-info-6-1.el6.src.rpm
释放:
[fukeyun@heliy yumcentos]$ $ rpm -i media-player-info-6-1.el6.src.rpm
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
提示这些错误是正常的,释放的位置有两个:
/usr/src/redhat(不同的发行版可能稍有不同)/下的SOURCE、SPECS REDHAT版本
$home/rpmbuild/ 下 新版本linux
另外注意:如果在终端在root权限下,会释放到/root/rpmbuild下,普通用户在自己的$home/rpmbuild下
[fukeyun@heliy rpmbuild]$ pwd
/home/fukeyun/rpmbuild
[fukeyun@heliy rpmbuild]$ ls
SOURCES SPECS
2、编译rpm包
我不是开发人员,所以源码包里的一些东西就基本不动,只是简单的重新生成可执行rpm包。
如果没有rpmbuild命令,先安装
[root@heliy yumcentos]# rpm /mnt/fat32/Packages/rpm-build-4.8.0-12.el6.i686.rpm -ivh
有三种方式生存rpm可执行包
方法一: rpmbuild --rebuild
rpmbuild --rebuild media-player-info-6-1.el6.src.rpm
Installing media-player-info-6-1.el6.src.rpm
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
error: Failed build dependencies:
libudev-devel is needed by media-player-info-6-1.el6.noarch
有些解决依赖问题用--nodeps,我建议不要这样做。按提示安装相应包即可,如果依赖包比较多,用yum或apt解决。
# rpm -ivh libudev-devel-147-2.29.el6.i686.rpm
Preparing... ########################################### [100%]
1:libudev-devel ########################################### [100%]
再重新生成rpm包$ rpmbuild --rebuild media-player-info-6-1.el6.src.rpm
[fukeyun@heliy ~]$ ls rpmbuild/RPMS/noarch/
media-player-info-6-1.el6.noarch.rpm
生存成功。即可安装
[root@heliy rpmbuild]# rpm -ivh ./RPMS/noarch/media-player-info-6-1.el6.noarch.rpm
Preparing... ########################################### [100%】
方法二: rpmbuild -bb
[fukeyun@heliy rpmbuild]$ cd ./SPECS/
[fukeyun@heliy SPECS]$ ls
media-player-info.spec
[fukeyun@heliy SPECS]$ rpmbuild -bb media-player-info.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.pS0htL
+ umask 022
+ cd /home/fukeyun/rpmbuild/BUILD
+ cd /home/fukeyun/rpmbuild/BUILD
.............
+ rm -rf /home/fukeyun/rpmbuild/BUILDROOT/media-player-info-6-1.el6.i386
+ exit 0
[fukeyun@heliy SPECS]$ ls ../RPMS/noarch/
media-player-info-6-1.el6.noarch.rpm
也生存可执行rpm包。
方法三: rpmbuild -bp
[fukeyun@heliy SPECS]$ rpmbuild -bp media-player-info.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.0QJe65
[fukeyun@heliy SPECS]$ cd ../BUILD/media-player-info-6/
[fukeyun@heliy media-player-info-6]$ ls
aclocal.m4 configure INSTALL Makefile.in NEWS
AUTHORS configure.ac install-sh media-players README
ChangeLog COPYING Makefile.am missing
[fukeyun@heliy media-player-info-6]$ ./configure
[fukeyun@heliy media-player-info-6]$ make
[fukeyun@heliy media-player-info-6]$ make install
[fukeyun@heliy SPECS]$ ls ../RPMS/noarch/
media-player-info-6-1.el6.noarch.rpm
3、在直接安装
在释放后,rpmbuild目录下的sourcesmul下有个文件
[root@heliy SOURCES]# ls
media-player-info-6.tar.gz
#rpm -xzf media-player-info-6.tar.gz
[root@heliy SOURCES]# ls
media-player-info-6 media-player-info-6.tar.gz
#cd ./media-player-info-6 后./configure && make && make install即可安装。