千家信息网

linux之程序包安装

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,!命令:执行其他系统下的linux命令:如:#!pwd:查看路径lftp命令下:(子命令:单文件下载:get;目录下载:mirror;多文件下载:mget;退出:bye)一、软件包组成:软件包组成:(
千家信息网最后更新 2025年01月22日linux之程序包安装

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

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


0