linux CentOS7 中安装包管理:rpm yum及源码包安装使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux CentOS7 中安装包管理:rpm yum及源码包安装使用相关的知识,希望对你有一定的参考价值。

一、 安装软件包的三种方法

yum ---python

  1. rpm工具

  2. yum工具

  3. 源码包

二、 rpm包介绍

设置光驱并挂载:

[[email protected] ~]# mount /dev/cdrom /mntmount: /dev/sr0 写保护,将以只读方式挂载
[[email protected] ~]# ls /mntEULA    isolinux  repodata                      TRANS.TBL
GPL     LiveOS    RPM-GPG-KEY-CentOS-7images  Packages  RPM-GPG-KEY-CentOS-Testing-7[[email protected] ~]#cd /mnt/Packages/

postfix-2.10.1-6.el7.i686.rpm 包名-主版本-次版本-发布版本号-平台-扩展名

三、 rpm工具用法

(1) 安装

rpm -ivh  postfix-2.10.1-6.el7.i686.rpm

(2) 升级

rpm -Uvh  postfix-2.10.1-6.el7.i686.rpm

(3)卸载

rpm -e postfix

(4) 查询安装过的包

rpm -qa postfix

(5) 查询包是否安装

rpm -q postfix

(6) 查看包信息

rpm -qi postfix

(7) 查看安装了哪些文件

rpm -ql postfix

(8) 查看文件来源的包

rpm -qf fstab 
rpm -qf `which cd`

四、 yum工具用法

(1)列出可安装包.

yum list

(2) 列出可安装包组.

yum grouplist

(3) 查询安装包

yum search all network

(4) 查询安装包

yum list | grep ‘vim‘

(5) 安装:

yum install -y postfix

(6) 卸货

yum remove postfix

(7) 升级

yum update postfix

(8)升级系统及其rpm包

yum update

(9) 查询vim命令所依赖的包。

yum provides "/*/vim"

五、 yum搭建本地仓库

mount /dev/cdrom /mnt
cp -r /etc/yum.repos.d/ /etc/yum.repos.d.bakrm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/dvd.repo 
[dvd]
name=install dvd
baseurl=file:///mnt
enable=1
gpgcheck=0

yum clean all 
yum list

扩展

1. yum保留已经安装过的包

可以设置使yum保留已经下载的rpm包,供以后升级或重新安装时使用。
修改/etc/yum.conf即可:

[main]
cachedir=/home/soft1/yumcache
keepcache=1
debuglevel=2

chchedir是放置下载的包的地方,可以修改为自己想放置的位置。
keepcache为1时表示保存已经下载的rpm包。

2. 搭建局域网yum源

yum局域网软件源搭建1、搭建Apache服务器或ftp服务器
yum安装或二进制包安装2、准备RPM包把CentOS的DVD1和DVD2.iso都下载下来,把DVD1.iso里的所有内容解压出来,放到/var/www/html/centos-6目录下,然后把DVD2.iso解压出来的Packages目录下的rpm包复制到/var/html/centos-6/Packages目录下,这样/var/html/centos-6/Packages里面就有了6000多个rpm包。3、创建yum仓库
准备createrepo:yum -y install createrepo
创建repository:createrepo /var/www/html/centos-6/
创建完成之后,会在/var/www/html/centos-6/repodata下生成一些文件。4、使用软件源

在其他centos机器上试试软件源能不能用。

首先修改机器上软件源配置文件:# cd /etc/yum.repos.d/# mkdir bk# mv *.repo bk/# cp bk/CentOS-Base.repo ./# vi CentOS-Base.repoCentOS-Base.repo文件修改之后如下:

[base]
name=CentOS-$releasever - Base
baseurl=http://*.*.*.*/centos-6/gpgcheck=1(改成0下面那行就不用设置了)
gpgkey=http:///*.*.*.*/centos-6/RPM-GPG-KEY-CentOS-6enabled=1#released updates #[updates]#name=CentOS-$releasever - Updates#baseurl=http:///*.*.*.*/centos-6/#gpgcheck=1#gpgkey=http:///*.*.*.*/centos-6/RPM-GPG-KEY-CentOS-6#enabled = 1保存之后,就可以使用局域网的软件源了:# yum update原地址:http://www.linuxidc.com/Linux/2013-07/87315.htm


六、 yum更换国内源

更换国内163yum源:

(1)cd /etc/yum.repos.d/
(2)rm -rf dvd.repo(3)wget httpd://mirrors.163.com/.help/CentOS7-Base-163.repo或curl -O http://mirrors.163.comm/.help/CentOS7-Base-163.repo(4)yum list

七、 yum下载rpm包

安装扩展源epel

yum install -y epel-releaseyum list | grep "epel"

yum 下载rpm包:

yum install -y 包名字 --downloadonlyls /var/cache/yum/i386/7/base/packages/yum install -y 包名 --downloadonly --downloaddir= 路径

yum reinstall -y 包名 --downloadonlyyum reinstall -y 包名 --downloadonly --downloaddir= 路径

八、 源码包安装

cd /usr/local/src
wget 
tar -xzvf httpd-2.4.6.tar.gz 
cd /httpd-2.4.6
./confure --prefix=/usr/local/apach2
echo $?
看否为0
make 
make install

扩展

  1. 配置yum源优先级 http://ask.apelearn.com/question/7168

1.安装 yum-priorities
    
    yum install yum-priorities
    
    2.priorities的配置文件是/etc/yum/pluginconf.d/priorities.conf,确认其是否存在。
    其内容为:
    [main]    enabled=1   # 0禁用 1启用
    
    3.编辑 /etc/yum.repos.d/目录下的*.repo 文件来设置优先级。
    
    参数为:    
    priority=N   # N的值为1-99
    
    推荐的设置为:
    [base], [addons], [updates], [extras] … priority=1 
    [centosplus],[contrib] … priority=2
    Third Party Repos such as rpmforge … priority=N   (where N is > 10 and based on your preference)
    
    数字越大,优先级越低
  1. 把源码包打包成rpm包 http://www.linuxidc.com/Linux/2012-09/70096.htm

有好多朋友问到怎么制作rpm包,可不可把其它服务器上编译好的软件目录复杂到其它服务器上直接应用等等。。。这里做个简单的介绍,高级复杂的不会。

此方法是通过编写spec文件,使用rpmbuild来完成一个rpm的打包。

以nginx为例进行介绍

制作平台:CentOS 5.x X86_64

四步走:

第一步:建立目录结构

mkdir /usr/src/RedHat/{SOURCES,SPECS,BUILD,RPMS,SRPMS} -p

相关目录介绍:

/usr/src/redhat/SOURCES    #存放源代码、补丁等文件 
/usr/src/redhat/SPECS      #存放用于管理rpm制作进程的spec文件 
/usr/src/redhat/BUILD      #解压后的文件存放目录 
/usr/src/redhat/RPMS       #存放由rpmbuild制作好的二进制包 
/usr/src/redhat/SRPMS      #存放由rpmbuild制作好的源码包 
第二步:把源码包放在SOURCES目录下
cd /usr/src/redhat/SOURCES
wget http://nginx.org/download/nginx-1.2.0.tar.gz

第三步:生成nginx.spec文件

cd /usr/src/redhat/SPECS 
cat nginx.spec 
# 
# spec file for nginx 
# Build 2012-07-17 
# By opsren 
# 
Summary: High performance web server 
Name: Nginx 
Version: 1.2
Release: 0.el5.ngx 
License: 2-clause BSD-like license 
Group: Applications/Server 
Source: http://nginx.org/download/nginx-1.2.0.tar.gz 
URL: http://nginx.org 
Distribution: Centos/Redhat 
Packager: qiuzhijun <[email protected]> 
 
%description 
Nginx ("engine x") is a high performance HTTP and reverse proxy server, as well as a mail(IMAP/POP3/SMTP) proxy server. 
%prep 
tar zxf $RPM_SOURCE_DIR/nginx-1.2.0.tar.gz 
%build 
cd nginx-1.2.0 
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre --lock-path=/var/run/nginx.lock --pid-path=/var/run/nginx.pid 
make 
%install 
cd nginx-1.2.0 
make install 
%preun 
if [ -z "`ps aux | grep nginx | grep -v grep`" ];then 
pkill nginx >/dev/null 
exit 0 
fi 
%files 
/usr/local/webserver/nginx 

第四步:RPM包制作
首先系统要安装好必备的制作工具:gcc、rpmbuild等
yum -y install gcc rpm-build pcre-devel 
cd /usr/src/redhat/SPECS/ 
rpmbuild -bb nginx.spec 
通过上面这条命令,会在/usr/src/redhat/RPMS/x86_64/下面生成nginx-1.2.0-1.el5.ngx.x86_64.rpm这个文件

-bb 这个选项就是制作二进制包(build binary package only from <specfile>)

对spec文件内容进行简单说明:
spec文件是制作rpm包的核心!
以#开头的是注释信息; 
Summary:对相关软件进行简单描述说明 
Name:定义rpm包的名称 
Version:定义软件的版本号 
Release:发行版本 
License:定义许可证 
Group:说明软件属于哪种应用类型 
Source:软件源码下载地址 
URL:软件相关官方站点 
Distribution: 发行版系列 
Packager: 制作人的简单信息 
 
%description:软件详细描述信息 
%prep:软件编译之前的处理 
%build:编译软件 
%install:安装软件 
%preun:定义卸载之前的动作 
%files:指定要打包的软件包,这里是/usr/local/webserver/nginx 

对于更详细的说明请参考官方资料:http://www.rpm.org/max-rpm/ch-rpm-inside.html

下面是apache的spec文件实例:
# 
# spec file for apache 
# Build 2012-07-17 
# By opsren 
# 
Summary: High stability web server 
Name: Apache 
Version: 2.2
Release: 22.el5
License: 2-clause BSD-like license 
Group: Applications/Server 
Source: http://apache.etoak.com/httpd/httpd-2.2.22.tar.gz 
URL: http://apache.org 
Distribution: Centos/Redhat 
Packager: qiuzhijun <[email protected]> 
 
%description 
Apache is a first web server 
%prep 
tar zxf $RPM_SOURCE_DIR/httpd-2.2.22.tar.gz 
%build 
cd httpd-2.2.22 
./configure --prefix=/usr/local/webserver/apache --enable-so --enable-deflate --enable-headers --enable-mods-shared=all --enable-rewrite 
make 
%install 
cd httpd-2.2.22 
make install 
%preun 
if [ -z "`ps aux | grep httpd | grep -v grep`" ];then 
pkill httpd >/dev/null 
exit 0 
fi 
%files 
/usr/local/webserver/apache 
以后对于相同或类似平台可以到其它服务器上进行rpm安装部署。

另外还有一种rpm打包的方法:rpm_create
这是一种新的打rpm的工具,不用spec语言,只需要会简单的shell命令,即可完成打包操作,非常方便,结合了spec语言和checkinstall,相比spec方法要简单很多!

官方站点:http://code.google.com/p/rpmcreate/
下载站点:wget http://rpmcreate.googlecode.com/files/rpm_create-1.7.5-9.x86_64.rpm
大家可以去官方站点参考!


本文出自 “冯晓庆的博客” 博客,请务必保留此出处http://fengyunshan911.blog.51cto.com/995251/1961231

以上是关于linux CentOS7 中安装包管理:rpm yum及源码包安装使用的主要内容,如果未能解决你的问题,请参考以下文章

Linux CentOS7系统中安装NodejscnpmGit环境

在 Visual Studio 2012 中安装包 Swashbuckle/swagger 时出错

Linux centos7中安装任何软件使用yum失败显示 Loaded plugins: fastestmirror, langpacks,大神们,求教

rpm方式在centos7中安装mysql

linux下软件包管理

linux中安装程序