扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
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服务搭建成功(如下图所示)
(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
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流