linux程序包管理:
为了更好的实现程序的安装、升级、卸载、查询、校验以及数据库的维护,所以把将编译好的程序的各个组成文件打包成一个或者多个程序包文件。
软件包的获取途径:
1、到各个镜像网站获取:
比如:mirrors.aliyun.com mirrors.163.com mirrors.souhu.com
2、到各个程序官网获取
比如:apache.org nginx.org
3、通过第三方组织
比如:epel、搜索引擎
1、rpm包管理 : 不能处理依赖关系
RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序,系统中存在着一个rpm数据库来记录包与包之间以及安装的包的依赖关系,安装快捷,缺点是得先解决包之间的依赖条件。
rpm命令:
-i:安装
-U:升级 --oldpackage 降级
-e:卸载
-q:查询
-V:检验
--buliddb或者--initdb:数据库维护
-v:详细信息,可视化
-h:输出进度条
--nosignature:忽略包的签名的合法性
每一个rpm包的名称都由”-“和”.”分成了若干部分,拿nginx-1.8.1-1.el7.ngx.x86_64.rpm这个包来解释一下,nginx 为包d的名称;1.8.1则为版本信息;1.el7.ngx为发布版本号;x86_64为运行平台。有的包后面写了个noarch,表示不限制平台。
示例: 安装
[root@magedu src]# rpm -ivh nginx-1.8.1-1.el7.ngx.x86_64.rpm warning: nginx-1.8.1-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY Preparing... ################################# [100%] Updating / installing... 1:nginx-1:1.8.1-1.el7.ngx ################################# [100%]
升级
[root@magedu src]# rpm -Uvh nginx-1.8.1-1.el7.ngx.x86_64.rpm warning: nginx-1.8.1-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY Preparing... ################################# [100%] package nginx-1:1.8.1-1.el7.ngx.x86_64 is already installed
rpm包的查询命令:
rpm [-q | --query] [select-options] [query-options]
-q 查询指定的程序包是否安装,会显示详细信息
-a 查询所有已安装的包
-f file|/path/to/somefile 查询指定的文件由哪个程序包安装生成的
-p package 用于实现查询未安装的包
-i 提供软件包的相关信息
--whatprovides 查询指定的capability由哪个程序包提供
--whatrequires 查询指定的capability被哪个包提供
-l 软件安装生成的所有文件列表
-c 配置文件
-d 提供的文档
--provides 列出指定的程序包提供所有的功能
-R --requires 查询指定软件包的依赖关系
[root@magedu src]# rpm -qa nginx //查询程序是有那个包提供的 nginx-1.8.1-1.el7.ngx.x86_64 [root@magedu src]# rpm -ql nginx //查询包安装的文件列表 /etc/logrotate.d/nginx /etc/nginx /etc/nginx/conf.d [root@magedu src]# rpm -qf /etc/nginx //根据路径来查找是哪个包提供的 nginx-1.8.1-1.el7.ngx.x86_64
[root@magedu src]# rpm -qi nginx //查询包信息 Name : nginx Epoch : 1 Version : 1.8.1 Release : 1.el7.ngx Architecture: x86_64 Install Date: Sat 19 Mar 2016 02:56:36 AM CST
rpm包的卸载:
rpm -e
--allmatches 卸载匹配所有指定名称的软件包的所有版本 (不建议)
--nodeps 忽略依赖关系
--test 测试卸载
[root@magedu src]# rpm -evh nginx Preparing... ################################# [100%] Cleaning up / removing... 1:nginx-1:1.8.1-1.el7.ngx ################################# [100%]
数据库重建: 在安装卸载或升级程序包时怎么都出错,切报错run recovery之类的,这时需要重建。
rpm --initdb --dbpath=/path/to/somefile
rpm --rebuilddb --dbpath=/path/to/somefile
[root@magedu src]# rpm --initdb --dbpath=/tmp/rpm warning: Generating 12 missing index(es), please wait...
注意:rpm的数据库存放在/var/lib/rpm
2、yum管理程序包 : 能自动处理依赖关系
yum(全称为 Yellow dog Updater, Modified),yum最大的优势在于可以联网去下载所需要的rpm包,然后自动安装,在这个工程中如果要安装的rpm包有依赖关系,yum会帮你解决掉这些依赖关系依次安装所有rpm包,非常的方便。
yum配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:配置一个或多个仓库文件
显示yum所安装的程序包:
yum list (all |glob-expr) :支持通配符搜索
yum grouplist :显示包组
安装程序包:
yum install :安装程序包 -y:表示自动回答为yes,直接安装
yum reintsall:
[root@magedu yum]# yum -y install vim Loaded plugins: fastestmirror base | 3.6 kB 00:00:00 epel | 4.3 kB 00:00:00 Loading mirror speeds from cached hostfile Package 2:vim-enhanced-7.4.160-1.el7.x86_64 already installed and latest version Nothing to do
检查可用升级: check-update
卸载程序包 : remove
[root@magedu yum]# yum remove httpd Loaded plugins: fastestmirror No Match for argument: httpd No Packages marked for removal
检查程序包的信息: info
[root@magedu yum]# yum info nginx Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Available Packages Name : nginx Arch : x86_64 Epoch : 1 Version : 1.6.3
查看指定的特性(可以是某文件)是由那个程序包提供的
provides
yum provides /bin/bash
[root@magedu yum]# yum provides ifconfig Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile net-tools-2.0-0.17.20131004git.el7.x86_64 : Basic networking tools Repo : @base Matched from: Filename : /usr/sbin/ifconfig
centos7上面ifconfig命令是需要安装的,这时可以用yum查看ifconfig是有哪个包提供的,由net-tools提供。
清理本地缓存 : clean all
生成缓存 : makecache
遇到yum安装程序包时,会报错error之类的,这时就可以yum clean all下,然后生成本地缓存makecache.
搜索:模糊搜索 : search string|路径
[root@magedu yum]# yum search nginx Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile ======================================== N/S matched: nginx ========================================= collectd-nginx.x86_64 : Nginx plugin for collectd munin-nginx.noarch : Network-wide graphing framework (cgi files for nginx) nginx-filesystem.noarch : The basic directory layout for the Nginx server owncloud-nginx.noarch : Nginx integration for ownCloud pcp-pmda-nginx.x86_64 : Performance Co-Pilot (PCP) metrics for the Nginx Webserver nginx.x86_64 : A high performance web server and reverse proxy server Name and summary matches only, use "search all" for everything.
yum仓库配置文件是放在/etc/yum.repos.d/下以.repo结尾的文件 。
仓库的配置文件定义:
[repositoryID]
name= //仓库的名称
baseurl= //下载rpm包的路径
enabled={1|0} //是否应用此仓库,默认为1启用
gpgcheck={1|0} //检查包签名的合法性
gpgkey=URL //检查密钥
enablegroups={1|0}
failovermethod={roundrobin|priority}
轮询 | 优先级
[base] name=local baseurl= //ftp仓库 http://mirrors.163.com/centos/7/os/x86_64/ //镜像仓库 //本地光盘仓库 gpgcheck=0
配置完成后可以通过yum repolist查看yum配置的源 :
[root@magedu yum.repos.d]# yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile repo id repo name status base local 9,007 epel Fedora epel 8,508 repolist: 17,515
程序包编译安装:
安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件,使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的,比如扩展模块等。
安装过程:源代码 --> 预处理 --> 编译(gcc)-->链接 -->执行
源码的安装需要用到编译器,而linux上C、C++语言的编译器就是gcc,通过gcc吧源码编译成可执行的二进制文件,如果系统没装的话可以yum -y install gcc.
源码安装的三步骤:
1、./configure
1、通过选项传递参数,指定启用特性、安装路径等
执行时会参考用户的指定及makefile.in生成makefile
2、检查依赖到的外部环境;
2、make
根据makefile文件来构建应用程序,gcc在工作。
3、make install
安装步骤,生成相关的软件存放目录和配置文件的过程。
示例:已nginx-1.8.0.tar.gz为例安装nginx.
[root@magedu src]# tar -xvf nginx-1.8.0.tar.gz ^C [root@magedu src]# ls nginx-1.8.0 nginx-1.8.0.tar.gz
[root@magedu nginx-1.8.0]# ./configgure --prefix=/usr/local/nginx checking for OS + Linux 3.10.0-229.el7.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) checking for gcc -pipe switch ... found checking for gcc builtin atomic operations ... found checking for C99 variadic macros ... found checking for gcc variadic macros ... found
--prefix表示指定nginx的安装路径,还有其他选择,比如--with、--with-module等。可以通过./configure --help查看。
按回车执行check操作,检查完后生成Makefile文件。
creating objs/Makefile [root@magedu nginx-1.8.0]# ls auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src
看到这个就表示生成了Makefile,如果缺少其它库没安装的话就会报错,安装nginx时如果报错 ./configure: error: the HTTP rewrite module requires the PCRE library.可以下载一个pcre包然后编译安装下,如果还报错 ./configure: error: the HTTP gzip module requires the zlib library.则yum -y install zlib-devel.
make完成后执行make install
sed -e "s|%%PREFIX%%|/usr/local/nginx|" -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" < man/nginx.8 > objs/nginx.8 make[1]: Leaving directory `/usr/local/src/nginx-1.8.0‘ [root@magedu nginx-1.8.0]# make install
至此nginx源码安装完成,测试nginx是否安装成功
[root@magedu sbin]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@magedu sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf [root@magedu sbin]# ps -ef |grep nginx root 44644 1 0 05:18 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 44645 44644 0 05:18 ? 00:00:00 nginx: worker process root 44647 21932 0 05:19 pts/1 00:00:00 grep --color=auto nginx
启动nginx并查看nginx进程。
安装后的配置:
1、导出二进制程序目录至path环境变量
编辑文件/etc/profile.d/name.sh
export path=/path/to/bin:$path
2、导出库文件路径
编辑/etc/ld.so.conf.d/name.conf
添加新的库文件所在目录至此文件中
让系统重新生成缓存:
ldconfig [-v]
3、导出头文件
基于链接的方式实现
ln -sv
4、导出帮助手册
编辑/etc/man.config文件
添加一个manpath
原文地址:http://lanxianting.blog.51cto.com/7394580/1752753