!命令:执行其他系统下的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/),但是如要要自己创建,可以按照如下流程:)
如:创建一个新仓库: [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 <root> | 2016-12-19 19:40 | Erase | 2 7 | root <root> | 2016-12-19 19:40 | Erase | 1 EE 6 | root <root> | 2016-12-19 19:34 | Obsoleting | 2 5 | root <root> | 2016-12-19 17:40 | Reinstall | 1 4 | root <root> | 2016-12-19 17:37 | Update | 1 3 | root <root> | 2016-12-19 17:31 | I, U | 7 < 2 | root <root> | 2016-12-06 22:17 | Update | 2 > 1 | System <unset> | 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