Linux.016 源码软件包安装(下)

1 概念

1)rpm软件包的构成

元数据:关于软件包的数据,包含软件包名称,版本,发布,构建程序,日期,依赖关系等

文件:软件包提供的文件,包含文件属性

脚本:安装软件、更新或删除软件包时,所执行的脚本

2) rpm软件包规则

    如果是源代码构建的rpm包,又叫源码包,需要spec文件,通过spec文件所包含的配置,来完成如何构建rpm包。

3)源码包:是开发人员使用Python、java等高级语言写出来的代码。SHELL空间能够把用户输入的命令编译成二进制码,这样计算机才能识别命令并返回结果。同样地,源码包是SHELL无法直接翻译成二进制码的,所以需要对源码包进行编译使之成为可以被SHELL编译成二进制码的rpm包。

4)spec文件大致分为5个部分

简    介   ——列出关于软件包的元数据(名称、版本、许可证等)

构建说明   ——说明如何编写和准备软件

脚本小程序 ——说明安装、卸载或升级时要运行的命令

清    单   ——软件包文件列表及关于软件包安装的权限

changelog  ——记录对此RPM软件包所做的更改

1.1 安装源码包:对源码包进行编译后再安装

1)安装编译软件          #yum   install    gcc    -y

2)将源码包解包/解压缩   #tar   xvf   e2fsprongs-*.tar

注:解压缩不同的包使用的命令参数使不同的,指定安装到某个目录用 –C

    #tar   xvfz   xxx.tar.gz          tar   xvfj   xxx.tar.bz2

3)进入解开的目录中: 检测编译环境 && 编译 && 安装

    #cd  e2fsprogs-*

#./configure   &&   make   &&  make  install

注:

*)有时候是 ./config,如果目录下这两个都有,还是用 ./configure;

**)安装到指定目录./configure   --prefix=目录;如 #./configure  --prefix = /usr/local 

***)#./configure  -help | less 查看configure的参数用法;

****)在软件包中不乏有其他后缀的名字的2进制软件包,如 bin;run;bundle。安装方法:对程序增加执行权限即可执行,完成安装

1.2 拓展内容:使用rpm2cpio命令可以将rpm包转化为cpio归档格式

例1:将xxx.rpm文件转换为cpio格式并提取其内容  #rpm2cpio  xxx.rpm | cpio  -idv

//-i 进入copy-in模式,-d 自动建立目录,-v 显示动作

例2:将xxx.rpm文件转换为cpio格式  #rpm2cpio   xxx.rpm  >  xxx.cpio

例3:查看xxx.rpm文件中的内容      #rpm2cpio    xxx.rpm | cpio   -t

例4:仅提取指定文件123.txt         #rpm2cpio   xxx.rpm | cpio   -idv   ./123.txt

2 安装 .src.rpm 包

2.1 安装方式:将  .src.rpm  包进行编译,编译后变成rpm软件包进行安装

2.2 安装  .src.rpm  

1)安装构建rpm包需要的软件   #yum    install    rpm-build    gcc   -y

注:gcc对源码包进行编译;rpm-build 对 .src.rpm 源码包进行重新打包为rpm软件包

2)使用rpm命令安装.src.rpm软件包

#rpm   –ivh   dos2unix-3.1-37.e16.src.rpm

注:i 是install安装的意思,v是动态显示安装过程,h是以#形式显示;有warning是可以忽略的,但是有error就说明安装有问题

3)安装rpm源码包后会生成一个rpmbuild目录,进入该目录中的SPECS目录下,按照编译文件对 .src.rpm软件包进行编译打包

#cd   ~/rpmbuild/SPECS

#rpmbuild    -ba    dos2unix.spec

注1:rpmbuild 下面的source文件——对软件进行改写需要遵循该文件;specs——重新编写成rpm软件包需要根据这个文件进行

注2:rpmbuild命令是用来建立新的rpm/srpm包的。参数选项—— -ba就是生成rpm及src.rpm包;-bp 只做准备工作(解包及打补丁);-bc 准备环境并编译;-bi 编译并安装;-bl 检测文件是否备齐; -bb 仅生成rpm包; -bs 仅生成src.rpm包

4) 查看新生成的rpm软件包,并进行安装

#cd   ~/rpmbuild/RPMS/x86_64

#rpm   -ivh   dos2unix-3.1-37.el7.centos.x86_64.rpm

注:debuginfo是测试的rpm软件包,不用安装这个

3 搭建yum 源服务器

    当需要在多个服务器上都安装某个软件包时,我们要么将软件包传到每个服务器上诸葛安装;要么搭建一个yum源服务器,然后在各个机子上下载并安装软件包。

3.1 配置yum服务器端

1)安装httpd 服务器     #yum   install   httpd   -y

   安装createrepo软件   #yum   install   createrepo   -y

注:createrepo用于生成解决软件间依赖关系的数据库文件。yum之所以能解决软件间的依赖关系是因为yum服务器有一个存放所有软件依赖关系的数据库文件——repodata

2)将需要安装的软件包转移至指定的目录下:

#mv   dos2unix-3.1-37.el7.centos.x86_64.rpm   /var/www/html/softs

注:softs是在/var/www/html下的自己创建的目录,也可以直接放在html下

生成softs目录下所有软件包依赖关系的数据库文件:

#createrepo   -v   /var/www/html/softs              //这个目录要与上面的一致

3)删除Apache欢迎页面,启动服务

#rm   -rf   /etc/httpd/conf.d/welcome.conf

#systemctl   restart    httpd

4)用真实机浏览器访问该服务器: http://该服务器ip地址,会出现搭建好的服务器页面

3.2 配置yum客户端

1)配置yum源文件

#cd   /etc/yum.repos.d

vim   httpd.repo   内容如下:

[httpd]

name=xxx

baseurl=http://yum源服务器ip/softs

enabled=0

gpgcheck=0

注:指定软件包安装目录时一定要写对路径,ip后面什么都不写就是默认访问到/var/www/html ,而我们的软件包被存放在 /var/www/html/softs下面,因而要填上softs这个子目录

2)生成yum缓存文件  #yum   makecache

3)安装软件          #yum   install   --enablerepo=httpd   install   dos2unix   -y

4 搭建FTP源服务器

4.1 配置ftp源服务器端

1)安装ftp              #yum   install    vsftpd    -y

安装createrepo软件   #yum   install   createrepo   -y

2)将需要安装的软件包转移至指定的目录下:

#mv   dos2unix-3.1-37.el7.centos.x86_64.rpm   /var/ftp/pub/

#cd   /var/ftp/pub                       //ls可以看到里面只有一个软件包文件

#createrepo   -v   /var/ftp/pub           //ls可以看见产生了repodata文件

3)重启服务   #systemctl   restart   vsftpd

4.2 配置客户端

1)进入到指定目录,配置yum源   

#cd   /etc/yum.repos.d/

#vim   ftp.repo  内容如下

[ftp]

name=xxxxxx

baseurl=ftp://ftp源服务器ip/pub

enabled=0

gpgcheck=0

注:客户端登录到ftp源服务器默认是用匿名账户登录的,而匿名账户登陆的默认目录是 /var/ftp/ ,也就是说如果在指定安装路径时只写ftp源服务器的ip地址的话就会默认访问的是 /var/ftp ,而我们的软件包在 /var/ftp/pub/ 下,因而要在后面添加pub这个子目录

2)生成yum缓存文件  #yum   makecache

3)安装软件          #yum   install   --enablerepo=ftp   install   dos2unix   -y

4)在客户端登录ftp测试结果

5 发布新软件包

5.1 配置服务器端

1)安装所需软件:      #yum   install   rpm-sign   createrepo  -y

确认有可用的gpg: #gpg   --list-key

2)如果没有,则生成新的gpg   #gpg     --gen-key

3)确认gpg的公钥以便于数字签名

#gpg  --list-key 命令中,含关键字pub 2048R/0A86BCE3

4)将公钥以ASCII导出成为RPM的GPG签名

#gpg   -a  -o   /root/RPM-GPG-KEY-test   --export   0A86BCE3

5)建立.rpmmacros文件添加公钥,编辑配置文件 #vim   ~/.rpmmacros  内容如下

%_gpg_name 0A86BCE3

6)对dos2unix-3.1-37.centos.x86_64.rpm软件签名

#rpm   --resign   dos2unix-3.1-37.centos.x86_64.rpm

7)将RPM-GPG导入至RPM数据库中  #rpm   --import   /root/RPM-GPG-KEY-test

8)检查导入是否成功  #rpm   -q   gpg-pubkey-*

9)确认RPM包签名正确

#rpm   –K   dos2unix-3.1-37.centos.x86_64.rpm

10)将软件包通过ftp服务器发布  #yum   install   vsftpd  -y

#mkdir  -pv   /var/ftp/pub/Packages

#cp   /rpmbuild/RPMS/dos2unix-3.1-37.centos.x86_64.rpm   /var/ftp/pub/Packages

#cp   /root/RPM-GPG-KEY-test /var/ftp/pub/Packages

#createrepo   -v   /var/ftp/pub/Packages

    确认生成repodata文件

5.2 配置客户端

1)在客户端下载RPM-GPG-KEY-test,并建立yum源安装软件

#scp  [email protected]:/root/RPM-GPG-KEY-test   /etc/yum.repos.d

2)客户端导入RPM-GPG-KEY-test   #rpm --import RPM-GPG-KEY-test

3)编辑.repo文件,vim  example.repo

[iso]

name=cold

baseurl=ftp://192.168.1.2/pub/Packages   (baseurl=http://192.168.1.2/Packages)

enabled=1

gpgcheck=1

gpgkey=file:///etc/yum.repos.d/RPM-GPG-KEY-test

(gpgkey=ftp://192.168.1.2/pub/RPM-GPG-KEY-test)

4)生成缓存文件 #yum   makecache;安装软件测试


转载请注明出处,谢谢!