Linux 系统下软件安装与管理

Linux 系统下软件安装与管理

一、二进制(RPM)程序包概述

1、二进制程序包的组成部分:

二进制文件、库文件、配置文件、帮助文件

[root@dayi123 ~]# rpm -qpl/mnt/cdrom/Packages/httpd-2.4.6-40.el7.centos.x86_64.rpm

/etc/httpd             

/etc/httpd/conf          #二进制程序包组成部分配置文件

/etc/httpd/conf.d

……

/usr/sbin/httpd          #二进制程序包组成部分二进制文件

……

/usr/lib64/httpd/modules/mod_access_compat.so

/usr/lib64/httpd/modules/mod_actions.so  #二进制程序包组成部分库文件

……

/usr/share/man/man8/rotatelogs.8.gz      #二进制程序包组成部分帮助文件

/usr/share/man/man8/suexec.8.gz

……

2、二进制程序包管理器

(1)debian:deb文件, dpkg包管理器

(2)redhat: rpm文件, rpm包管理器

3、二进制程序包的命名:

如:httpd-2.4.6-40.el7.centos.x86_64.rpm

说明:

    http:软件包名

    2.4.6:软件版本

    40:软件编译版本

    el7.centos:适合的硬件平台

    x86_64:适合的硬件平台

    .rpm:包扩展名

4、rpm包的分类:

1)主包:Application-VERSION-ARCH.rpm

2)开发子包:Application-devel-VERSION-ARCH.rpm

3)其他子包:Application-utils-VERSION-ARHC.rpm

4)其他子包:Application-libs-VERSION-ARHC.rpm

如httpd包:

[root@dayi123 ~]# ls /mnt/cdrom/Packages/httpd*     

/mnt/cdrom/Packages/httpd-2.4.6-40.el7.centos.x86_64.rpm

/mnt/cdrom/Packages/httpd-devel-2.4.6-40.el7.centos.x86_64.rpm

/mnt/cdrom/Packages/httpd-manual-2.4.6-40.el7.centos.noarch.rpm

/mnt/cdrom/Packages/httpd-tools-2.4.6-40.el7.centos.x86_64.rpm

5、程序包之间的依赖关系

(1)依赖关系:二进制程序包之间一般存在的依赖关系有:树形依赖,环形依赖及模块依赖。

(2)查看库文件及依赖关系:

1)查看二进制程序所依赖的库文件:ldd /PATH/TO/BINARY_FILE

    2)显示本机已经缓存的所有可用库文件名及文件路径映射关系:/sbin/ldconfig -p

    3)库文件的配置文件(如果想添加新的库文件,可在/etc/ld.so.conf.d下新建以.conf结尾的文件,在文件中添加库文件路劲即可):/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

    4)库文件的缓存文件:/etc/ld.so.cache

[root@dayi123 ld.so.conf.d]# ldd /bin/ls    #查看二进制程序依赖的库文件

 linux-vdso.so.1=>  (0x00007ffc17f8c000)

 libselinux.so.1=> /lib64/libselinux.so.1 (0x00007f91c6e60000)

 libcap.so.2 =>/lib64/libcap.so.2 (0x00007f91c6c5b000)

……

[root@dayi123 ld.so.conf.d]# /sbin/ldconfig –p  #查看本机缓存的可用库文件

302 libs found in cache `/etc/ld.so.cache'

 p11-kit-trust.so(libc6,x86-64) => /lib64/p11-kit-trust.so

 libzzipwrap-0.so.13 (libc6,x86-64) =>/lib64/libzzipwrap-0.so.13

 libzzipmmapped-0.so.13 (libc6,x86-64) =>/lib64/libzzipmmapped-0.so.13

(3)解决依赖包的管理工具:

    1)yum:rpm包管理器的前端工具

2)apt-get:deb包管理器前端工具

3)zypper: suse上的rpm前端管理工具

4)dnf: Fedora 18+ rpm包管理器前端管理工具

6、程序包管理器:

(1)功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作

(2)包文件组成(每个包独有)

RPM包内的文件、RPM的元数据(如名称,版本,依赖性,描述等)、安装或卸载时运行的脚本

(3)数据库(公共):/var/lib/rpm

包含内容:程序包名称及版本、程序包之间依赖关系、程序包功能说明、包安装后生成的各文件路径及校验码信息

二、RPM包管理

1、包名与包全名:

(1)包全名:操作的包时没有安装的rpm包时,要使用包全名,而且要注意路径

(2)包名:操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm中的数据库

2、通过rpm进行软件包的安装:

(1)安装:rpm {-i|--install} [install-options] PACKAGE_FILE…

     选项说明:-i(install):安装

               -v(verbose):显示详细信息

               -h(hash):显示进度

(2)常用安装选项

    --test: 测试安装,但不真正执行安装,即dry run模式

    --nodeps:忽略依赖关系

--replacepkgs实现软件覆盖安装

--replacefiles对一个已经存在的文件进行覆盖安装

--nosignature: 安装时不检查来源合法性

--nodigest:安装时不检查包完整性

--noscripts:安装时不执行程序包脚本

#rpm安装软件

[root@dayi123 ld.so.conf.d]# rpm -ivh /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

Preparing...                         ################################# [100%]

Updating / installing...

  1:tree-1.6.0-10.el7               ################################# [100%]

#安装完成后在此安装时提示已安装

[root@dayi123 ld.so.conf.d]# rpm -ivh/mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

Preparing...                         ################################# [100%]

        packagetree-1.6.0-10.el7.x86_64 is already installed

#实现覆盖安装

[root@dayi123 ld.so.conf.d]# rpm -ivh /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

--replacepkgs

Preparing...                         ################################# [100%]

Updating / installing...

  1:tree-1.6.0-10.el7               ################################# [100%]

[root@dayi123 ld.so.conf.d]# rpm -ivh/mnt/cdrom/Packages/php-5.4.16

-36.el7_1.x86_64.rpm

error: Failed dependencies:    #部分软件安装时需要安装依赖软件

       php-common(x86-64) = 5.4.16-36.el7_1 is needed byphp-5.4.16-36.el7_1.x86_64

       php-cli(x86-64) = 5.4.16-36.el7_1 is needed byphp-5.4.16-36.el7_1.x86_64

3、通过rpm进行软件包的升级

(1)升级:如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

1)升级方法

rpm{-U|--upgrade} [install-options] PACKAGE_FILE...(即:rpm –Uvh PACKAGE_FILE)

rpm{-F|--freshen} [install-options] PACKAGE_FILE...(即:rpm–Fvh PACKAGE_FILE)

2)两种方法的区别:

upgrade:安装有旧版程序包,则“升级”如果不存在旧版程序包,则“安装”

freshen:安装有旧版程序包,则“升级”如果不存在旧版程序包,则不执行升级操作

(2)降级:--oldpackage

(3)强制安装(功能等同于覆盖安装):--force

rpm –ivh –force PACKAGE_FILE

#更新软件

[root@dayi123 ~]# rpm -Uvh/mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

Preparing...                          ################################# [100%]

Updating / installing...

  1:tree-1.6.0-10.el7                #################################[100%]

#强制安装软件包

[root@dayi123 ~]# rpm -ivh --force/mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm     

Preparing...                         ################################# [100%]

Updating / installing...

  1:tree-1.6.0-10.el7               ################################# [100%]

(4)升级内核(Linux支持多内核,不建议升级内核,直接安装新内核即可):

[root@dayi123 Packages]# uname –r    #查看当前的系统版本

2.6.32-642.el6.x86_64

[root@dayi123 Packages]# rpm -ivhkernel-2.6.32-696.el6.x86_64.rpm

error: Failed dependencies:   #安装内核时提示需要安装依赖包

       kernel-firmware >= 2.6.32-696.el6 is needed bykernel-2.6.32-696.el6.x86_64

[root@dayi123 Packages]# rpm -ivhkernel-2.6.32-696.el6.x86_64.rpm kernel-firmware

-2.6.32-696.el6.noarch.rpm   #同时安装内核和依赖包

Preparing...               ########################################### [100%]

  1:kernel-firmware       ########################################### [ 50%]

   2:kernel                ###########################################[100%]

安装完成后重启系统生效,安装完成后配置文件/etc/grub.conf中会多一个开机启动选项,重启系统时,也会多一个选项。主要配置文件如下:

default=0       #默认启动那一项

timeout=5      #开机时grub等待时间

splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.32-696.el6.x86_64)    #0个启动项

        root(hd0,0)

        kernel/vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=68b0f8ab-7ccc-4fc4-8bbc-a9

92f91e9847 rd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MDSYSFONT=latarcyrheb

-sun16 c

rashkernel=auto  KEYBOARDTYPE=pcKEYTABLE=us rd_NO_DM rhgb quiet

        initrd/initramfs-2.6.32-696.el6.x86_64.img

title CentOS 6 (2.6.32-642.el6.x86_64)   #第一个启动项

        root(hd0,0)

        kernel/vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=68b0f8ab-7ccc-4fc4-8bbc-a9

92f91e9847 rd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MDSYSFONT=latarcyrheb

-sun16 c                      

4、通过rpm软件包的查询

(1)查询命令:rpm {-q|--query} [select-options] [query-options]

(2)[select-options]

-a: 所有包

-f: 查看指定的文件由哪个程序包安装生成

-p rpmfile:针对尚未安装的程序包文件做查询操作

--whatprovides:查询指定的CAPABILITY(能力)由哪个包所提供

--whatrequires:查询指定的CAPABILITY(能力)被哪个包所依赖

[root@dayi123 ~]# rpm -qf /bin/ls    #查询ls命令有哪个软件包生成

coreutils-8.4-43.el6.x86_64

#查询未安装的软件包的信息

[root@dayi123 ~]# rpm -qp/mnt/cdrom/Packages/php-5.3.3-49.el6.x86_64.rpm

php-5.3.3-49.el6.x86_64

#查询bash所提供的能力被那些包所依赖

[root@dayi123 ~]# rpm -q --whatrequires /bin/bash

glibc-common-2.12-1.192.el6.x86_64

nss-softokn-freebl-3.14.3-23.el6_7.x86_64

groff-1.18.1.4-21.el6.x86_64

……

(3)[query-options]

--changelog:查询rpm包的changelog

-c: 查询程序的配置文件

-d: 查询程序的文档

-i: 查询软件包信息

-l: 查看指定的程序包安装后生成的所有文件

--scripts:程序包自带的脚本

--provides: 列出指定程序包所提供的CAPABILITY

-R: 查询指定的程序包所依赖的CAPABILITY

#查看php安装完成后生成的所有配置文件

[root@dayi123 ~]# rpm -qpl/mnt/cdrom/Packages/php-5.3.3-49.el6.x86_64.rpm  

/etc/httpd/conf.d/php.conf

/usr/lib64/httpd/modules/libphp5.so

/var/lib/php/session

/var/www/icons/php.gif

#查询已安装的软件包信息(只能查询到通过rpm安装的软件包信息)

[root@dayi123 Packages]# rpm -qi tree

Name        :tree                         Relocations:(not relocatable)

Version     :1.5.3                             Vendor: CentOS

Release     :3.el6                         Build Date:Wed 14 Jan 2015 08:21:02 PM

……

#查询未安装的软件包的信息

[root@dayi123 ~]# rpm -qpi/mnt/cdrom/Packages/net-tools-1.60-114.el6.x86_64.rpm

Name        :net-tools                    Relocations: (not relocatable)

Version     :1.60                              Vendor:CentOS

Release     :114.el6                       Build Date:Wed 22 Mar 2017 07:52:14

 ……

#查看vim的配置文件的信息

[root@dayi123 ~]# rpm -qc vim-common--5.el6_8.1.x86_64.rpm

/etc/vimrc

#查询为安装的软件的配置信息

[root@dayi123 cdrom]# rpm -qpc/mnt/cdrom/Packages/php-5.3.3-49.el6.x86_64.rpm

/etc/httpd/conf.d/php.conf

[root@dayi123 cdrom]# rpm -qR tree   #查询已安装的软件包的依赖性

libc.so.6()(64bit) 

libc.so.6(GLIBC_2.2.5)(64bit) 

libc.so.6(GLIBC_2.3)(64bit) 

#查询为安装的软件包的依赖性

[root@dayi123 cdrom]# rpm -qpR/mnt/cdrom/Packages/java-1.5.0-gcj-1.5.0.0

-29.1.el6.x86_64.rpm

……

/usr/bin/gij 

/usr/bin/rebuild-gcj-db 

/usr/bin/rebuild-gcj-db 

/usr/lib64/security/classpath.security 

……

5、rpm包校验

(1)校验方法:rpm –V 已安装的包名

              rpm –V 指定RPM包中的文件

(2)校验的信息说明:

    1)S:文件大小是否改变

    2)M:文件的类型或文件的权限是否改变

    3)5:md5校验和是否发生改变(即判断文件内容是否发生改变)

    4)D:设备中的从代码是否发生改变

    5)L:文件路径是否改变

    6)U:文件的属主是否发生改变

    7)G:文件的属组是否发生改变

    8)T:文件的修改时间是否发生改变

[root@dayi123 cdrom]# rpm -V vim-common  #校验vim包的信息

S.5......  c/etc/vimrc                     #大小和md5值发生改变

S.5......  c/etc/vimrc

6、rpm包中文件提取

(1)用法:rpm2cpio 包全名 | cpio  -idv .文件绝对路径

     说明:rpm2cpio:将rpm转化为cpio格式的命令

          cpio:穿件软件档案文件和从档案文件中提取文件

(2)cpio选项说明:

     -i:还原

     -d:还原时自动新建目录

     -v:显示还原过程

(3)删除/bin/ls命令并进行还原

[root@dayi123 Packages]# rpm -qf /bin/ls   #查看/bin/ls属于哪个软件包

coreutils-8.4-43.el6.x86_64

[root@dayi123 Packages]# mv /bin/ls /tmp/  #/bin/ls移走

[root@dayi123 Packages]# ls              #ls命令不能正常使用

-bash: ls: command not found [root@dayi123 ~]# rpm2cpio/mnt/cdrom/Packages/coreutils

-8.4-46.el6.x86_64.rpm | cpio -idv ./bin/ls  #提取ls命令到当前的/bin/ls目录下

./bin/ls

25240 blocks

[root@dayi123 ~]# cp ./bin/ls /bin/   #将当前目录ls命令复制到/bin/ls

[root@dayi123 ~]# ll               #ls命令可以正常使用

total 116

-rw-r--r--. 1 root root 3944 Apr  2 22:12 1.txt.Z

-rw-------. 1 root root 1057 Mar 30 16:07 anaconda-ks.cfg

drwxr-xr-x. 2 root root 4096 Apr 17 22:16 bin

7、rpm包中文件提取

(1)数据库目录:/var/lib/rpm

(2)数据库初始化:

rpm{--initdb|--rebuilddb}:如果事先不存在数据库,则新建之,否则,不执行任何操作。

rebuilddb:重建已安装的包头的数据库索引目录

三、YUM

1、yum概述

(1)作用:

1)可解决软件包相关依赖性,可在多个库之间定位软件包

2)存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)

(2)yum支持的文件服务器ftp://,http://,file://

2、yum配置文件

(1)yum配置文件:

/etc/yum.conf:为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:为仓库的指向提供配置

(2)yum配置文件中可用的变量:

$releasever:当前OS的发行版的主版本号

$arch:平台,i386,i486,i586,x86_64等

$basearch:基础平台;i386, x86_64

$YUM0-$YUM9:自定义变量

(3)自建yum配置文件:

需要将/etc/yum.repos.d/下所有文件注释或删除,自己新建”*.repo”yum配置文件,配置及说明如下

[centos7]         #进行rpm包数字验证

name=CentOS-$releasever – Plus    #容器的名称说明

baseurl=http://172.18.0.1/cobbler/ks_mirror/$releasever/  #配置yum源地址

            http://mirrors.aliyun.com/repo/     #可以指定多个yum源地址

gpgcheck=0       #是否对软件包进行数字签名验证,是0则不验证,1则需要验证

#gpgcheck=1时,需要制定公钥地址

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

enabled=1        #启用yum仓库

 

[epel]            #配置扩展的yum仓库

baseurl=http://172.18.0.1/fedora-epel/$releasever/$arch/

gpgcheck=0

enabled=1

(4)配置本地光盘yum源 

1)挂载光盘到指定目录(或不挂载,自动让光盘挂载到/misc/cd目录下,centos7下需要安装”autofs”软件,在使用光盘文件时自动会将光盘挂载到/misc/cd目录下)

[root@dayi123 cd]$yum install autofs –y    #centos7安装autofs软件

[root@dayi123 cd]$systemctl start autofs   #启动autofs软件

[root@dayi123 cd]$systemctl enable autofs  #设置autofs自启动

Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service

to /usr/lib/systemd/system/autofs.service.

[root@dayi123 cd]$cd /misc/cd      #进入/misc/cd目录

[root@dayi123 cd]$df -h

Filesystem     Size  Used Avail Use% Mounted on

/dev/sda3       18G  3.8G   14G 22% /

/dev/sda1      497M  118M  379M 24% /boot

tmpfs           98M   36K   98M  1% /run/user/1020

/dev/sr0       7.3G  7.3G     0 100% /misc/cd #当使用光盘是自动挂载到此目录下 

……

2)配置光盘yum源,

[root@dayi123 yum.repos.d]$cat test.repo       #光盘yum源配置文件

[centosCD]

name=centos7

baseurl=file:///misc/cd

gpgcheck=1

gpgkey=file:////misc/cd/RPM-GPG-KEY-CentOS-7

[root@dayi123 yum.repos.d]$yum repolist       #查看可用yum

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

repo id                       repo name                          status

centosCD                      centos7_cdrom                      9,007

repolist: 9,007

(5)国内常用的yum地址:

阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/S

阿里云(epel):https://mirrors.aliyun.com/epel/$releasever/x86_64

也可以将自己yum注释掉,使用wget下载国内yum源repo文件:

常用yum源repo文件地址:

网易yum源:

修改“vi /etc/yum/pluginconf.d/fastestmirror.conf and set enable=0

cd /etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo wget http://mirrors.163.com/.help/CentOS

-Base-163.repo

yum makecache  //生成缓存

搜狐yum地址:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.sohu.com/help/CentOS-Base-sohu.repo

阿里yum源:

CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo

3、用命令生成.repo文件

(1)生成:yum-config-manager --add-repo=http://172.16.0.1/cobbler/ks_mirror/7/

(2)启用与关闭yum仓库:

    禁用仓库:yum-config-manager --disable “仓库名"

    启用仓库:yum-config-manager --enable “仓库名”

    备注:如果yum-config-manager命令不能使用,则需要安装yum-utils包,即:yum –y install yum-utils

[root@dayi123 ~]# yum-config-manager--add-repo=http://172.16.0.1/cobbler/ks_mirror/7/

Loaded plugins: fastestmirror     #生成yum

adding repo from: http://172.16.0.1/cobbler/ks_mirror/7/

[172.16.0.1_cobbler_ks_mirror_7_]

name=added from: http://172.16.0.1/cobbler/ks_mirror/7/

baseurl=http://172.16.0.1/cobbler/ks_mirror/7/

enabled=1

[root@dayi123 ~]# yum-config-manager --disable centos7 #关闭名名称为centos的源

Loaded plugins: fastestmirror

repo:centos7 ============================================

[centos7]

……

[root@dayi123 ~]# yum repolist all       #查看所有的yum源列表             

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

repo id        repo name                                             status

172.16.0.1_cobbler_ks_mirror_7_   added from: http://172.16.0.1/cobbler/ks_mirror/7

/    enabled:  9,007    #刚生成的yum

centos7/7       centos7                                        disabled

!epel/7       centosepel                                      enabled: 11,349

repolist: 20,356

4、yum命令:

(1)yum命令用法:

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

(2)常用的yum命令:

1)显示仓库列表:yum repolist [all|enabled|disabled]

[root@dayi123 ~]# yum repolist   #只显示可用的yum仓库列表

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

repo id               repo name                                     status

172.16.0.1_cobbler_ks_mirror_7_ added from:http://172.16.0.1/cobbler/ks_mirr  9,007

!epel/7                centosepel                                    11,349

repolist: 20,356

2)显示程序包:

yumlist

yumlist [all | glob_exp1] [glob_exp2] [...]

yumlist {available|installed|updates} [glob_exp1] [...]

3)安装程序包:

yuminstall package1 [package2] [...]

yumreinstall package1 [package2] [...] (重新安装)

[root@dayi123 ~]# yum install remove telnet   #同时安装多个程序包

Loaded plugins: fastestmirror

Resolving Dependencies

--> Running transaction check

……

[root@dayi123 ~]# yum install telnet vim      #重新安装程序包

Loaded plugins: fastestmirror

……

4)升级程序包:

yumupdate [package1] [package2] [...]

yumdowngrade package1 [package2] [...] (降级)

5)检查那些程序包可以升级:

yumcheck-update

6)卸载程序包:

yumremove | erase package1 [package2] [...]

(3)yum命令的查看功能:

1)yum info [包名]   查看程序信息

2)查看指定的特性(可以是某文件)是由哪个程序包所提供:

yumprovides | whatprovides [feature1]……

3)清理本地缓存(清除的是/var/cache/yum/$basearch/$releasever缓存):

yumclean all

构建缓存:yum makecache

[root@dayi123 ~]# yum clean all    #清理所有的缓存

Loaded plugins: fastestmirror

Cleaning repos: centos7 epel

Cleaning up everything

Cleaning up list of fastest mirrors

[root@dayi123 ~]# ll -dh /var/cache/yum/x86_64/7/  #查看清理后缓存大小

drwxr-xr-x. 9 root root 4.0K Apr 15 13:07/var/cache/yum/x86_64/7/

4)以指定的关键字搜索程序包名及命令所在的包

[root@dayi123 yum.repos.d]# yum search ifconfig   #查看ifconfg属于哪个包

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

……

moreutils.x86_64 : Additional unix utilities

net-tools.x86_64 : Basic networking tools

python-psutil.x86_64 : A process and system utilitiesmodule for Python

5)查看指定包所依赖的capabilities:

[root@dayi123 yum.repos.d]# yum deplist net-tools   #查看net-tools包所依赖的功能

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

package: net-tools.x86_64 2.0-0.17.20131004git.el7

  dependency:/bin/sh

   provider:bash.x86_64 4.2.46-19.el7

  dependency:libc.so.6(GLIBC_2.14)(64bit)

   provider:glibc.x86_64 2.17-105.el7

6)查看yum事务历史:

yumhistory [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

yumhistory

yumhistory info 6

yumhistory undo 6

[root@dayi123 yum.repos.d]# yum history   #查看yum安装历史记录

Loaded plugins: fastestmirror

ID     | Commandline             | Date and time    | Action(s)      | Altered

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

    23 | reinstallvim            | 2017-04-15 12:49 |Reinstall      |    1  

    22 | removetelnet            | 2017-04-15 12:48 |Erase          |    1  

21 | -y install yum-utils     | 2017-04-15 12:31 | Install        |   3  

……

 

[root@dayi123 yum.repos.d]# yum history info 23 #查看yum23历史记录中安装信息

Loaded plugins: fastestmirror

Transaction ID : 23

Begin time     :Sat Apr 15 12:49:42 2017

Begin rpmdb    :478:4a514a26dbb81641679e760948d0b5dfb41560ec

End time      :            12:49:43 2017 (1seconds)

#撤销历史记录中第六条操作(即卸载第六条记录中安装的软件)

[root@dayi123 yum.repos.d]# yum history undo 6 

Loaded plugins: fastestmirror

Undoing transaction 6, from Wed Mar 29 11:46:39 2017

    Install nano-2.3.1-10.el7.x86_64@c7-media

[root@dayi123 yum.repos.d]# yum history undo 24   #撤销刚才操作,即安装该软件

Loaded plugins: fastestmirror

Undoing transaction 24, from Sat Apr 15 13:34:03 2017

    Erasenano-2.3.1-10.el7.x86_64 @c7-media

7)yum日志文件:/var/log/yum.log

5、yum包组管理命令

(1)查看组:yum grouplist [hidden] [groupwildcard] [...]

[root@dayi123 yum.repos.d]# yum grouplist    #查看yum组列表

Loaded plugins: fastestmirror

There is no installed groups file.

Maybe run: yum groups mark convert (see man yum)

Loading mirror speeds from cached hostfile

Available Environment Groups:

   Minimal Install

   Compute Node

(2)安装组包:yum groupinstall group1 [group2] [...]

(3)更新组包:yum groupupdate group1 [group2] [...]

(4)删除组包:yum groupremove group1 [group2] [...]

(5)查看组信息yum groupinfo group1 [...]

Centos7.2最小化安装后安装桌面:

[root@dayi123 yum.repos.d]# history

1047  yummakecache                 #新建缓存

1048  yumgrouplist                   #查看可用的包组

1049  yumgroupinstall "GNOME Desktop" #安装桌面

#建立链接文件,开机自动启动桌面

1050 ln  -sf/lib/systemd/system/graphical.target /etc/systemd/system/default.target

[root@dayi123 yum.repos.d]# reboot    #重启系统,即可进入桌面

6、yum的命令行选项:

(1)--nogpgcheck:禁止进行gpgcheck,即安装不进行软件包的校验

(2)-y: 自动回答为“yes”,不用输入“y”确认

(3)-q:静默模式,安装时没有输出

(4)--disablerepo=repoidglob:临时禁用此处指定的repo

(5)--enablerepo=repoidglob:临时启用此处指定的repo

(7)--noplugins:禁用所有插件

7、搭建yum仓库

    有些时候,使用网络yum源或者光盘yum不方便,或者要使用yum安装自己制作的rpm包,此时,可以自己搭建yum源,将需要的软件放入yum仓库中。

(1)安装前准备工作:

         1)安装vsftpd软件(fpt服务端软件)

CentOS7中:

[root@dayi123 ~]$yum install vsftpd –y    #安装vsftpd软件

Loaded plugins: fastestmirror, langpacks

……

[root@dayi123 ~]$systemctl start vsftpd   #启动vsftpd

[root@dayi123 ~]$systemctl enable vsftpd  #设置vsftpd开机自启动

CentOS6中:

[root@dayi123 ~]$yum install vsftpd –y

[root@dayi123 ~]$/etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@dayi123 ~]$chkconfig vsftpd on

    2)关闭防火墙(为了能够访问防火墙服务,需要在iptables中添加规则或关闭iptables)

CentOS7中:

[root@dayi123 ~]$systemctl stop firewalld

[root@dayi123 ~]$systemctl disable firewalld

CentOS6中:

[root@dayi123 ~]$/etc/init.d/iptables stop

[root@dayi123 ~]$chkconfig iptables off

    3)安装完成并关闭防火墙后可通过网页测试ftp,能正常打开,则表示ftp服务搭建成功(如下图所示)

Linux 系统下软件安装与管理

(2)配置yum源      

    1)配置yum仓库

    Vsftpd安装成功之后,会自动在创建目录/var/ftp/pub目录用于存放fpt共享文件,我们还需要在此目录下创建存放rpm包的目录及repodate文件,然后将需要的包拷贝到yum仓库中即可

[root@dayi123 ~]$mkdir /var/ftp/pub/CentOS7 –p  #创建存yum仓库目录

[root@dayi123 ~]$mkdir /var/ftp/pub/CentOS7/Packages #常见用于存放rpm包的目录

#拷贝rpm文件到yum仓库中

[root@dayi123 ~]$cp /mnt/cdrom/java.*   /var/ftp/pub/CentOS7/Packages/      

[root@dayi123 ~]$createrepo /var/ftp/pub/CentOS7/  #生成repodate文件

Spawning worker 0 with 43 pkgs

Workers Finished

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

[root@dayi123 ~]$ll /var/ftp/pub/CentOS7/

total 4

drwxr-xr-x. 2 root root 4096 Apr 19 07:48 repodata

    2)在客户端配置yum源:

[root@dayi123 ~]$cat /etc/yum.repos.d/test.repo   #客户端配置文件

[centos7.2]

name=centos7.2

baseurl=ftp://172.16.250.102/pub/CentOS7/

gpgcheck=1

gpgkey=file:////misc/cd/RPM-GPG-KEY-CentOS-7

[root@dayi123 ~]$yum repolist   #查看生成yum源信息

Loaded plugins: fastestmirror, langpacks

Repository 'app' is missing name in configuration, usingid

Loading mirror speeds from cached hostfile

repo id                         repo name                        status

centos7.2                       centos7.2                        43

repolist: 43

四、编译安装软件(以安装httpd服务为例)

1、编译安装前准备工作:

(1)安装gcc、及Development and Creative Workstation(cnetos6为Development tools)等编译环境

(2)去相应官方网站下载源码包到指定目录并解压。

[root@dayi123 Package]$cd /data/Package

[root@dayi123 Package]$ wget http://apache.fayea.com//httpd/httpd-2.2.32.tar.bz2

[root@dayi123 Package]$tar -xvf httpd-2.2.32.tar.bz2

[root@dayi123 Package]$cd httpd-2.2.32

[root@dayi123 httpd-2.2.32]$ls

ABOUT_APACHE    CMakeLists.txt  INSTALL         NWGNUmakefile

acinclude.m4    config.layout  InstallBin.dsp  os

Apache-apr2.dsw configure       LAYOUT          README

Apache.dsw      configure.in    libhttpd.dep    READMENaNake

apache_probes.d docs            libhttpd.dsp    README.platforms

ap.d            emacs-style     libhttpd.mak    ROADMAP

build           httpd.dep       LICENSE         server

BuildAll.dsp    httpd.dsp       Makefile.in     srclib

BuildBin.dsp    httpd.mak       Makefile.win    support

buildconf       httpd.spec      modules         test

CHANGES         include         NOTICE          VERSIONING

:在编译安装前需要查看INSTALL和README文件,里面有安装信息

2、编译安装

(1)在软件解压目录下执行:./configure

    执行./configure时有很多选项,可通过./configure –help查看,常用的选项有:

    --prefix=/PATH: 指定默认安装位置,默认为/usr/local/

    --sysconfdir=/PATH:配置文件安装位置

    System types:支持交叉编译

执行./configure的作用:

    1)通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile

    2)检查依赖到的外部环境,如依赖的软件包

[root@dayi123 httpd-2.2.32]$./configure –help   #查看选项及帮助信息

`configure' configures this package to adapt to manykinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...),specify them as

VAR=VALUE.  Seebelow for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:

  -h, --help              display this help and exit

      --help=short        display options specific to thispackage

     --help=recursive    display theshort help of all the included packages

  -V,--version           display versioninformation and exit

  -q, --quiet,--silent   do not print `checking ...'messages

#执行./configure

[root@dayi123 httpd-2.2.32]$./configure  --prefix=/data/httpd --sysconfdir=/etc/httpd

checking for chosen layout... Apache

checking for working mkdir -p... yes

……

注:在执行的过程中,某些依赖包没有安装会报错,需要通过yum安装后再执行./configure

checking for APR... no

configure: error: APR not found.  Please read the documentation.

#提示没有ARP

[root@dayi123 httpd-2.2.32]$yum search apr 

#可通过yum查看apr属于哪个包,一般为提示的信息-devel

Loaded plugins: fastestmirror, security

Loading mirror speeds from cached hostfile

apr-devel.i686 : APR library development kit

apr-devel.x86_64 : APR library development kit

……

[root@dayi123 httpd-2.2.32]$yum install apr-util-devel –y  #安装apr-util-devel

#安装完成后继续

[root@dayi123 httpd-2.2.32]$./configure  --prefix=/data/httpd --sysconfdir=/etc/httpd

(2)执行make

    作用:根据makefile文件,构建应用程序

(3)执行make install

    作用:复制文件到相应的路劲

[root@dayi123 httpd-2.2.32]$make install      #执行make install

Making install in srclib

make[1]: Entering directory`/data/Package/httpd-2.2.32/srclib'

Making install in pcre

make[2]: Entering directory`/data/Package/httpd-2.2.32/srclib/pcre'

#执行make install完成后会在指定的目录生成相应的文件

[root@dayi123 httpd-2.2.32]$ls /data/httpd/ /etc/httpd/  

/data/httpd/:

bin  build  cgi-bin error  htdocs  icons include  logs  man manual  modules

 

/etc/httpd/:

extra  httpd.conf  magic mime.types  original

3、安装编译完成后的操作

(1) 二进制程序目录导入至PATH环境变量中:

    编辑文件/etc/profile.d/NAME.sh加入exportPATH=/PATH/TO/BIN:$PATH

[root@dayi123 ~]$cat /etc/profile.d/httpd.sh    #PATH变量中增加httpd启动路径

export PATH=$PATH:/data/httpd/bin/       

[root@dayi123 ~]$. /etc/profile.d/httpd.sh     #使配置生效

[root@dayi123 ~]$apachectl start            #启动httpd服务

(2) 导入库文件路径

    编辑/etc/ld.so.conf.d/NAME.conf,添加新的库文件所在目录至此文件中

    让系统重新生成缓存:ldconfig[-v]

(3) 导入帮助手册

    编辑/etc/man.config|man_db.conf文件,添加一个MANPATH