我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

linux之程序包安装

!命令:执行其他系统下的linux命令:如:#!pwd:查看路径

创新互联是专业的左贡网站建设公司,左贡接单;提供成都网站建设、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行左贡网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

lftp命令下:(子命令:单文件下载:get;目录下载:mirror;多文件下载:mget;退出:bye)

一、软件包组成:

    软件包组成:(二进制程序、库文件、配置文件、帮助文件)

            二进制程序文件:

                存放路径:/bin;/sbin;/usr/bin;/usr/sbin;/usr/local/bin;/usr/local/sbin;

                    /bin;/sbin:系统自身启动需要的二进制文件;

                    /usr/sbin;/usr/local/bin:系统启动后完成基本管理需要的二进制文件;

                    /usr/local/bin;/usr/local/sbin:第三方管理需要的二进制文件;

            库文件:(也是可执行文件,但不能独立执行,需要调用执行)在程序中通常称为函数;

                    存放路径:/lib;/usr/lib;/usr/local/lib;

                     库文件分类:静态库(以.a结尾的文件)、动态库(以.so结尾的文件)

                    库文件配置路径:/etc/ld.so.conf;/etc/ld.so.conf.d/*.conf

            配置文件:

                    存放路径:/etc

            帮助文件:

                    帮助文件分类:手册(/usr/share/man);README;INSTALL;通常后两个都放在/usr/share/doc,

                                            man的配置文件在/etc/man_db.conf(定义man去×××帮助文件)

二、linux程序包管理工具:

包管理工具应包含:文件清单、文件存放位置、软件功能说明、依赖关系(依赖其他程序包)

程序包管理工具数据库:追踪软件安装位置,便于卸载操作,大多数存于/var/lib/rpm下

软件包前端管理工具会自动查找、解决软件包之间的依赖关系,然后安装需要的软件包。

Debian :dpt;apt-get(软件包前端管理工具)

Redhat:rpm;yum(软件包前端管理工具)

suse:rpm

软件包安装方法:包管理工具安装、源代码编译安装、软件包管理器前端工具、通用二进制格式;

    包管理工具安装:rpm实现的功能:打包、安装、查询、升级、校验、卸载等;

    编译安装:将源代码编译成二进制格式文件;需提供环境(如:编译器:gcc,g++;库文件),

                     由于编译安装只能手动进行安装,为了方便管理(卸载、升级),一般安装到特定的文中,带来的问题:如找不到二进制文件执行(因为在环境变量中没有定义)、找不到库文件、找不到帮助手册(可以通过修改配置文件或使用命令:man -M /path来指定帮助文件路径)、头文件路径(/usr/include)。

三、软件包及源程序命名:

    1、源程序命名:

            name-version.tar.{gz | bz2 | xz}  (包名-版本号.后缀名)

                其中的版本号组成:major.minor.release (主版本号.次版本号.发行号);主版本号一般是程序的重大改变,次版本号一般是程序部分功能发生改变,发型号一般是是bug修复,一次升级时要查看相应版本号。

            如:bash-4.3.1.tar.xz

    2、rpm包命名:

            name-version-release.arch.rpm (包名-源程序版本号-打包版本号.平台.rpm;平台指主机架构如:i686,x86_64,amd64,ppc,noarch(表示与平台无关)) 此处的release是发行者打包的管理号,可能还包括所适用的操作系统(如:centos6);

而version也包含major.minor.release (主版本号.次版本号.发行号),解释同源程序的release;

            如:bash-4.3.2-5.e16.x86_64.rpm  包名.源程序版本号.打包版本号及适用操作系统.平台.rpm 

    3、rpm分包命名:将某些功能做成独立的包,需要此功能才安装。

            主包包名-分包包名--version-release.arch.rpm   一般分包会依赖于主包,也就是说安装分包必须安装主包;

            主包:核心包;bind

            分包:支包;bind-chroot

                如:bind-chroot 

    4、程序包位置:

            一般放在packet下        

四、软件包获取及验证软件包:

红帽软件包第三方平台:epel,现在由fedora来维护;因此又叫fedroa-epel:

http://mirrors.sohu.com;这里的软件一般是系统光盘不带的;

http://rpmfind.net;用来搜rpm包的

http://rpm.pbone.net;用来搜rpm包的

rpm包验证机制:来源合法性、包的完整性; 

gpg pgp:

redhat系列官方公钥存放位置:

[root@promote ~]# ls /etc/pki/rpm-gpg/    //显示公钥文件

RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Debug-7  RPM-GPG-KEY-CentOS-Testing-7

[root@promote ~]#

[root@promote ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7    //导入公钥

[root@promote ~]# rpm -K zziplib-utils-0.13.62-5.el7.x86_64.rpm            //验证包来源合法

zziplib-utils-0.13.62-5.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

[root@promote ~]#

五、rpm包安装、卸载、查询、升级、校验;

1、rpm包安装:  要指定安装文件的路径(从哪个文件安装)   

  rpm {-i|--install} [install-options] PACKAGE_FILE ...

install-options:

    -v:显示详细信息;

    -vv:显示更详细信息;

    -h:以#号显示安装进度,一个#表示2%的进度

    --nodeps:忽略依赖关系;注意:忽略依赖关系可能能安装软件包,但安装后不一定能正常使用;

    --test:仅测试安装,但不安装

    --replacepkgs:重新安装软件包,替换已安装包的所有文件;

常用组合:-ivh

如:

[root@promote ~]# rpm -ivh /cdrom/Packages/zsh-5.0.2-14.el7.x86_64.rpm

[root@promote ~]# rpm -ivh zziplib-utils-0.13.62-5.el7.x86_64.rpm

error: Failed dependencies:

        libzzip-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64

        libzzipfseeko-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64

        libzzipmmapped-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64

        zziplib(x86-64) = 0.13.62-5.el7 is needed by zziplib-utils-0.13.62-5.el7.x86_64

[root@promote ~]# rpm -ivh /cdrom/Packages/

注意:rpm安装包不会自动安装依赖的包;

[root@promote ~]# rpm -ivh --replacepkgs /cdrom/Packages/zsh-5.0.2-14.el7.x86_64.rpm

2、rpm包卸载:卸载只需要指包名;

     rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

 --nodeps:忽略依赖关系;

 --test:测试卸载

如:

[root@promote ~]#  rpm -e zsh

[root@promote ~]#

注意:在安装或卸载的时候,如果有写文件做了改动,rpm会将修改的文件cp一份作为备份,可以在警告信息中看到;waring。。。。。

3、rpm包查询:

     rpm {-q|--query} [select-options] [query-options]

3.1查询已安装的软件包信息

rpm -qa:查询所有的包   //不支持golbing

rpm -qa | grep ‘包名’  :查询特定的包

rpm -qi ‘包名’:查询软件包的摘要信息;

rpm -ql ‘包名’ :查询软件包安装后产生的文件清单;

rpm -qf ‘文件的具体路径’ :查询某文件是由哪个rpm包安装生成的;

rpm -qc ‘包名’: 查询软件包安装后的配置文件清单;

rpm -qd ‘包名’:查询软件包安装后产生的帮助文档信息清单;

rpm -q --scripts ‘包名’ :查询软件包执行的相关脚本

               相关脚本分类:

                        preinstall:安装前脚本;

                        postinstall:安装后脚本;

                        preuninstall:卸载前脚本;

                        postuninstall:卸载后脚本;

如:

[root@promote ~]# rpm -q zsh

package zsh is not installed

[root@promote ~]# rpm -qa | grep zsh

zsh-5.0.2-14.el7.x86_64

[root@promote ~]# rpm -qi zsh    //查询软件包的相关摘要信息

[root@promote ~]#  rpm -ql zsh  | less//查询zsh安装产生的文件清单,并分页显示;

[root@promote ~]# rpm -qf /usr/share/zsh/site-functions/      //查询site-functions是由哪个rpm包安装

systemd-219-19.el7.x86_64

pulseaudio-6.0-7.el7.x86_64

zsh-5.0.2-14.el7.x86_64

[root@promote ~]#

[root@promote ~]# rpm -qf /etc/passwd   //查询/etc/passwd由哪个rpm包安装产生的;

setup-2.8.71-6.el7.noarch

[root@promote ~]#

3.2、查询安装软件包的安装后生成的相关信息 在q选项后加上p,

rpm -qpi ‘rpm安装包路径’:查询软件包如果安装将会产生的的摘要信息;

rpm -qpl ‘rpm安装包路径’ :查询软件包如果安装将会产生的文件清单;

rpm -qpc ‘rpm安装包路径’: 查询软件包如果安装将会产生的的配置文件清单;

rpm -qpd ‘rpm安装包路径’:查询软件包如果安装将会产生的帮助文档信息清单;

rpm -qp --scripts ‘包名’ :查询软件包如果安装将会执行的相关脚本

如:

[root@promote ~]# rpm -qpi zziplib-utils-0.13.62-5.el7.x86_64.rpm    //注意此处是包路径,不是包名

[root@promote cdrom]# rpm -qi zziplib-utils-0.13.62-5.el7.x86_64.rpm    //直接查会提示软件未安装

package zziplib-utils-0.13.62-5.el7.x86_64.rpm is not installed

  

4、rpm包升级; 

      rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...         

      rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

--force:新旧版本冲突时,强行升级;

--nodeps:忽略依赖关系

-U和-F都可以升级,不同的是:-U可以升级也可以全新安装;-F只升级,如果老版本未安装,此命令不生效;因此建议使用-U

常用组合命令:-Uvh;-Fvh;

升级时需要注意的是:可能带来依赖关系冲突,如x依赖y1.0,升级后x依赖于y2.0;

注意:内核不应该升级,应该安装,他允许许多版本并存;


5、rpm包校验:

     rpm {-V|--verify} [select-options] [verify-options]

一般软件包安装后,用rpm -V ‘包名’进行校验,如果安装后的文件被改动过,则会输出信息;

如:

[root@promote ~]# rpm -V zsh

S.5....T.  c /etc/zshrc                

  S file Size differs

输出信息解释,有的没有在这里输出:

       M Mode differs (includes permissions and file type)

       5 digest (formerly MD5 sum) differs

       D Device major/minor number mismatch

       L readLink(2) path mismatch

       U User ownership differs

       G Group ownership differs

       T mTime differs

       P caPabilities differ

        . 表示没有修改


六、rpm包的数据库:

在linux系统中的大多数数据库文件存放于:/var/lib目录下;

rpm包数据库:/var/lib/rpm;

[root@promote ~]# ls /var/lib/rpm -l

total 106552

-rw-r--r--. 1 root root  7254016 Dec 19 11:05 Basenames

-rw-r--r--. 1 root root    16384 Nov 29 20:31 Conflictname

-rw-r--r--. 1 root root   270336 Dec 19 11:34 __db.001        //__表示锁文件

-rw-r--r--. 1 root root    81920 Dec 19 11:34 __db.002

-rw-r--r--. 1 root root  1318912 Dec 19 11:34 __db.003

-rw-r--r--. 1 root root  2154496 Dec 19 11:05 Dirnames

-rw-r--r--. 1 root root    36864 Dec 19 11:05 Group

-rw-r--r--. 1 root root    24576 Dec 19 11:05 Installtid

-rw-r--r--. 1 root root   106496 Dec 19 11:05 Name

-rw-r--r--. 1 root root    45056 Dec  6 22:17 Obsoletename

-rw-r--r--. 1 root root 94273536 Dec 19 11:05 Packages

-rw-r--r--. 1 root root  2596864 Dec 19 11:05 Providename

-rw-r--r--. 1 root root   724992 Dec 19 11:05 Requirename

-rw-r--r--. 1 root root   176128 Dec 19 11:05 Sha1header

-rw-r--r--. 1 root root   118784 Dec 19 11:05 Sigmd5

-rw-r--r--. 1 root root     8192 Nov 29 20:30 Triggername

[root@promote ~]#

如果rpm包的数据库损坏,将导致rpm不能进行查询、卸载、升级、校验等操作;

rpm [--initdb | --rebuilddb] 

--initdb:新建数据库;不会覆盖原文件;

--rebuilddb;重建数据库;会覆盖原文件;用的比较多

七、源码格式的rpm包:一般含有.src字符串的文件名;

如:tcl-tclreadline-2.1.0-3.el7.src.rpm

打包:rpm的包制作过程式根据spec文件来制作完成的, 

制作rpmbuild:


八、yum介绍:自动查找、下载并解决rpm包的依赖关系(前端管理工具)

1、yum服务端

yum仓库(yum repository)的实现方式:远程方式( ftp://,http:// )、本地方式( file:///etc/ );

    一般rpm包都放在这些路径下,用#createrepo 来创建源数据;

    repodata存放的路径就是yum仓库的路径;

yum安装实现需要的步骤:

yum仓库制作:(一般网上会有提供(如:http://mirrors.aliyun.com/centos/7/updates/x86_64/),但是如要要自己创建,可以按照如下流程:)

  •     光盘:光盘系统挂载在系统下,可以直接当做yum仓库使用;

  •     网上下载到本地制作:1、下载数据到本地、2、创建源数据

      createrepo:创建yum仓库的源数据;

     createrepo [options]      //创建源数据,directory表示rpm包所在的路径

      如:创建一个新仓库:

[root@promote Packages]# cp a* /yum     //复制以a开头的所有文件到/yum下,作为rpm包仓库;

[root@promote Packages]# createrepo  /yum     //制作/yum下软件包的源数据生成repodata;

2、yum客户端

   yum install | reinstall | remove

    yum安装依赖于yum仓库,

    yum配置文件定义了yum仓库(到哪里去找软件包)

    yum主配置文件:/etc/yum.conf        //核心配置文件

    yum仓库的子配置文件:/etc/yum.repos.d/*.repo    //可以自定定义yum仓库源,放在此目录下;

2.1、yum客户端主配置文件事例

[main]            //定义哪个仓库,仓库的名字,为子仓库提供默认配置

cachedir=/var/cache/yum/$basearch/$releasever    //缓存目录,在哪个目录下缓存;

keepcache=0        //缓存保留时间   

debuglevel=2        //debug级别,数字越大,级别越高

logfile=/var/log/yum.log    //日志文件

exactarch=1                //匹配本地平台(32\64位),1表示是,0表示不是;

obsoletes=1

gpgcheck=1        //检查rpm包签名,检查来源合法性,1表示是,0表示不是;

plugins=1

installonly_limit=5

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum

distroverpkg=centos-release

2.2、yum客户端子仓库自定义(需要注意:“=”前后不能有空格)

[repository_ID]    //随便起名,只要不冲突

name=        //仓库名字描述信息,必不可少

baseurl=        //仓库的路径,ftp、http、file等

enables=     //仓库是否启用,1表示启用,0表示不启用;

gpgcheck=    //检查软件包合法性,1表示启用,0表示不启用;

gpgkey=    //如果启用了合法性检查,需定义秘钥路径;无论放哪里,只要能访问到就可以

cost=    //定义访问需要的代价,数字越小代价越低也就越优先,

如:

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

baseurl=http://mirrors.aliyun.com/centos/7/updates/x86_64/     //repodata在x86_64目录下;  

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

注意:yum仓库路径可以使用yum内置变量来匹配平台($basearch)和版本($releasever):

如:cachedir=/var/cache/yum/$basearch/centos/$releasever    //$releasever只匹配发行主版本号;$basearch匹配平台;  如:匹配/var/cache/yum/i386/centos/7,var/cache/yum/x86_64/centos/6,

九、yum命令工具使用:

1、yum显示相关信息

 yum [options] [command] [package ...]

command:

    list [all | installed | available |updates  | extras | recent]:    显示所有程序包 | 已安装的包 | 可安装的包 | 可更新的包 | 无法归类到yum仓库的包,额外的包 | 新增加yum仓库的包;

    repolist [all | enabled | disabled:查看所有仓库 | 启用的仓库 | 禁用的仓库;

    info [包名]:相当于rpm -qi,显示摘要信息;

    grouplist  :显示有哪些包组信息;

    groupinfo "组名" :显示具体包组信息;

    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]:清空相关缓存

    makecache [fast] :手动建立本地缓存;

    provides | whatprovides feature1 [feature2] [...]     //查询文件有哪个程序包安装的;

    search string1 [string2] [...]     //查询包中有相应字符串的包;模糊匹配;

注意:yum list 支持同时查看安装和未安装的软件包,rpm只能支持一种;yum支持globing,rpm不支持,

如:

[root@promote yum.repos.d]# yum list  | less

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: ftp.sjtu.edu.cn

 * extras: ftp.sjtu.edu.cn

 * updates: ftp.sjtu.edu.cn

Installed Packages

389-ds-base.x86_64                      1.3.4.0-19.el7                 @anaconda  

zziplib-utils.x86_64                    0.13.62-5.el7                  base

zsh.x86_64                              5.0.2-14.el7                   installed

 //依次为:软件包.平台  源文件版本号-发行版本号 已安装 ;@表示已经安装,@后面是通过哪个仓库安装;前面没有@表示没有安装;installed表示已安装,

[root@promote yum.repos.d]# yum repolist

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: ftp.sjtu.edu.cn

 * extras: ftp.sjtu.edu.cn

 * updates: ftp.sjtu.edu.cn

repo id                                      repo name                                       status

aliyum                                       centos7                                           393

base/7/x86_64                                CentOS-7 - Base                                 9,363

extras/7/x86_64                              CentOS-7 - Extras                                 435

updates/7/x86_64                             CentOS-7 - Updates                                393

repolist: 10,584

[root@promote yum.repos.d]#

[root@promote ~]# yum provides /etc/passwd

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: mirrors.cn99.com

 * extras: ftp.sjtu.edu.cn

 * updates: mirrors.cn99.com

setup-2.8.71-7.el7.noarch : A set of system configuration and setup files

Repo        : base

Matched from:

Filename    : /etc/passwd

setup-2.8.71-6.el7.noarch : A set of system configuration and setup files

Repo        : @anaconda

Matched from:

Filename    : /etc/passwd

[root@promote ~]#

[root@promote ~]# yum search  zsh        //搜索含有字符串的软件包,

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: mirrors.cn99.com

 * extras: ftp.sjtu.edu.cn

 * updates: mirrors.cn99.com

======================================== N/S matched: zsh =========================================

zsh-html.x86_64 : Zsh shell manual in html format

zsh.x86_64 : Powerful interactive shell

  Name and summary matches only, use "search all" for everything.

[root@promote ~]#

2、yum安装:

 yum [options] [command] [package ...]

command:

    install package1 [package2] [...] :安装软件包;yum安装只需要指定安装包名,不要指定路径,因为他会去yum仓库中自动搜索,但是rpm必须指定安装文件的路径;这里安装的话需要手动确认,可以用-y来自动确认;

    reinstall package1 [package2] [...]:重新安装软件包;

    localinstall rpmfile1 [rpmfile2] [...]:    安装本地rpm包,同时解决本地rpm包依赖关系,废弃命令,但会检查包合法性,可以使用--nogpgcheck关闭合法性检查;

           (maintained for legacy reasons only - use install)

    localupdate rpmfile1 [rpmfile2] [...]:升级本地rpm包;废弃命令

           (maintained for legacy reasons only - use update)

yum安装需要使用yum仓库,yum也可以不用yum仓库直接安装rpm包:如:

[root@promote Packages]# yum install zsh-html-5.0.2-14.el7.x86_64.rpm   //需指定包路径

[root@promote ~]# yum localinstall zziplib-utils-0.13.62-5.el7.x86_64.rpm    //yum安装本地rpm包

3、yum升级、降级:

     yum [options] [command] [package ...]

command:

    update [package1] [package2] [...]        //升级

    update-to [package1] [package2] [...]    //指定版本升级(包名后跟版本号)

    check-update:检查软件包是否有升级包;

    upgrade [package1] [package2] [...]        //也是升级,现在不用了

    upgrade-to [package1] [package2] [...]    //升级到指定版本,也不用了现在

    downgrade package1 [package2] [...]    //向下降级

如:

[root@promote ~]# yum update-to python2-pyasn1.noarch

4、yum卸载:yum卸载软件时会自动卸载依赖它的包;

 yum [options] [command] [package ...]

command:

     remove | erase package1 [package2] [...]    //卸载软件包;

如:

[root@promote ~]# yum remove bind

[root@promote ~]# yum erase zsh

5、yum包组查询、安装:如果组名之间有空格,需要用“”(引号)引起来;

 yum [options] [command] [package ...]

command:

     groups [install | list | update| remove]: 包组安装、查询、升级、卸载;

如:

[root@promote ~]# yum groups list    //查询有哪些包组;

[root@promote yum.repos.d]# yum groups install "Development Tools"    //安装包组;

一般说到的开发环境包组有:

"Development"、"Server Platform Development"、"Desktop Platform Development"。

6、yum操作历史查询:

 yum [options] [command] [package ...]

command:

    history   [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐

       back|new|sync|stats]

如:

[root@promote ~]# yum history

Loaded plugins: fastestmirror, langpacks

ID     | Login user               | Date and time    | Action(s)      | Altered

-------------------------------------------------------------------------------

     8 | root              | 2016-12-19 19:40 | Erase          |    2

     7 | root              | 2016-12-19 19:40 | Erase          |    1 EE

     6 | root              | 2016-12-19 19:34 | Obsoleting     |    2

     5 | root              | 2016-12-19 17:40 | Reinstall      |    1

     4 | root              | 2016-12-19 17:37 | Update         |    1

     3 | root              | 2016-12-19 17:31 | I, U           |    7  <

     2 | root              | 2016-12-06 22:17 | Update         |    2 >

     1 | System           | 2016-11-29 20:14 | Install        | 1949

Warning: RPMDB altered outside of yum.

history list

[root@promote ~]#

7、yum

 yum [options] [command] [package ...]

    command:

    version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]


十、源码文件编译安装:

更新系统时间:#ntpdata x.x.x.x    //指向时间服务器

1、下载一个源码格式文件:如Apache源文件:

[root@promote ~]# wget http://mirrors.sohu.com/apache/httpd-2.4.25.tar.gz

2、文件解压缩

 tar [OPTION...] [FILE]...

    OPTION

        -xf:解压缩所有文件:

[root@promote ~]# tar -xf httpd-2.4.25.tar.gz    //解压缩,会出现一个一个不带压缩后缀的文件;

[root@promote ~]# ls

abc.txt          first.sh      httpd-2.4.25.tar.gz  zziplib-utils-0.13.62-5.el7.x86_64.rpm

anaconda-ks.cfg  httpd-2.4.25  ion

[root@promote ~]# 

3、编译、安装:

(编译文件用gcc或g++,可是他不能解决文件之间的调用关系,make命令可以自动解决,但是他还是需要调用gcc或g++;);

make编译一组文件,并解决调用关系;make编译依赖于makefile文件,makefile文件制定了编译的文件次序、参数等;makefile文件是用configure脚本加上makefile.in生成的;configure脚本是由开发工具autoconf生成的;makefile.in是由automake生成的;

makefile=configure脚本+makefile.in

 make [ -f makefile ] [ options ] ... [ targets ] ...

make install    //安装;

总结:

编译步骤:

1、在源代码程序目录里执行命令# ./configure  //检查编译环境是否完备;让用户定制编译配置(通过脚本选项实现)

2、执行命令 # make 编译

3、安装二进制文件: #make install

当编译安装指定路径时,程序在运行时可能找不到相应的路径,只能带路径执行,如果不带路径运行相关命令,需要修改PATH文件包含相应/bin,或/sbin;修改库文件路径包含相应库:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf;配置文件不需导出;修改帮助文件路径/etc/man.conf,加上MANPATH=;

修改环境变量:

可以在/etc/profile.d在这个目录下创建一个以.sh结尾文件,在里面加上:如:

export PATH=/usr/local/apr/bin:$PATH

导出库文件:

[root@promote bin]# vim /etc/ld.so.conf.d/apr.conf

输入内容:

/usr/local/apr/lib

然后保存退出;

执行命令#ldconfig -v重新搜索库文件;

导出帮助文件:

[root@promote bin]# vim /etc/man_db.conf

在里面加上路径:

MANPATH /usr/local/apr/man

然后保存退出;

链接头文件:

#[root@promote httpd-2.4.25]# ln -sv /usr/local/apr/include /usr/include

查看程序运行依赖的库:#ldd  程序

如:#ldd /bin/ls

ldconfig -v:重新搜索当前系统上所有库文件搜索路径下库文件,并生成缓存/etc/ld.so.cache


十一、源码格式rpm安装:

源码格式的rpm安装后不能直接使用;需编译制作成rpm包才可以;

步骤:

1、下载源码rpm包:

[root@promote ~]# wget

http://mirrors.aliyun.com/epel/7/SRPMS/n/nginx-1.10.2-1.el7.src.rpm

2、查看安装nginx-1.10.2-1.el7.src.rpm后生成的文件列表:

[root@promote ~]# rpm -qpl nginx-1.10.2-1.el7.src.rpm

warning: nginx-1.10.2-1.el7.src.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY

404.html

50x.html

README.dynamic

UPGRADE-NOTES-1.6-to-1.10

index.html

nginx-1.10.2.tar.gz

nginx-1.10.2.tar.gz.asc

nginx-auto-cc-gcc.patch

nginx-logo.png

nginx-upgrade

nginx-upgrade.8

nginx.conf

nginx.logrotate

nginx.service

nginx.spec            //rpm依赖.spec文件生成rpm包;

poweredby.png

3、安装nginx-1.10.2-1.el7.src.rpm包:

[root@promote ~]# useradd mockbuild        //安装文件需要mockbuild用户和mockbuild组;

[root@promote ~]# rpm -ivh nginx-1.10.2-1.el7.src.rpm

warning: nginx-1.10.2-1.el7.src.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY

Updating / installing...

   1:nginx-1:1.10.2-1.el7             ################################# [100%]

[root@promote ~]#

一般会安装到当前文件夹:

[root@promote ~]# ls

abc.txt            axel-2.4.tar.gz      nginx-1.10.2-1.el7.src.rpm

anaconda-ks.cfg    first.sh             rpmbuild

apr-1.5.2          httpd-2.4.25         wps-office_10.1.0.5672~a21_x86_64.tar.xz

apr-1.5.2.tar.bz2  httpd-2.4.25.tar.gz  zziplib-utils-0.13.62-5.el7.x86_64.rpm

axel-2.4           ion

[root@promote ~]# cd rpmbuild/

[root@promote rpmbuild]# ls

SOURCES  SPECS         //SOURCES下是源程序、补丁、脚本等文件;SPECS下的.sepc制作rpm包;

[root@promote rpmbuild]#

4、制作rpm包,

[root@promote SPECS]# rpmbuild -ba nginx.spec

[root@promote SPECS]# cd ..

[root@promote rpmbuild]# ls

BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS

[root@promote rpmbuild]#

[root@promote rpmbuild]# ls RPMS/

noarch  x86_64

[root@promote rpmbuild]# cd RPMS/            此目录下是制作号的rpm包;可以直接安装

[root@promote RPMS]# cd x86_64/

[root@promote x86_64]# ls            //查看制作好的rpm包;

nginx-1.10.2-1.el7.centos.x86_64.rpm

nginx-debuginfo-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-http-geoip-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-http-p_w_picpath-filter-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-http-perl-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-http-xslt-filter-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-mail-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-stream-1.10.2-1.el7.centos.x86_64.rpm

[root@promote x86_64]#

[root@promote x86_64]# cd ..

[root@promote RPMS]# ls

noarch  x86_64

[root@promote RPMS]# cd ..

[root@promote rpmbuild]# ls

BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS

[root@promote rpmbuild]# ls SRPMS/            //此目录下是源码格式rpm包;

nginx-1.10.2-1.el7.centos.src.rpm

[root@promote rpmbuild]#

5、安装rpm包;

[root@promote x86_64]# rpm -ivh nginx-1.10.2-1.el7.centos.x86_64.rpm


当前文章:linux之程序包安装
标题路径:http://shouzuofang.com/article/ieceog.html

其他资讯