在Linux下安装过软件软件的朋友都知道,rpm只能安装单一软件包,而且解决依赖问题相当麻烦,所以YUM软件包管理系统也就就应运而生了,但要想正常使用YUM,首先得了解YUM的工作原理,YUM是一个C/S(客户端/服务器)架构的包管理系统,必须配置好yum仓库服务器,然后在客户端上做好服务器的指向配置才能正常使用。当然如何把一个已经制作好的YUM仓库服务器共享出来那是属于搭建服务器的范畴,在这里我只是给大家分享一些关于YUM源的配置以及YUM客户端的使用。
一、YUM: Yellowdog Update Modifier
rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,安装或更新软件包的工具
二、yum源两大配置文件
(一)yum客户端配置文件:/etc/yum.conf(为所有仓库提供公共配置)
cachedir=/var/cache/yum/$basearch/$releasever yum本地缓存路径
keepcache=0是否保存缓存(0为禁用,1为禁用,下同)
debuglevel=2 调试级别
logfile=/var/log/yum.log yum安装日志保存路径
exactarch=1 是否检查平台版本
obsoletes=1 是否对过时版本的RPM进行更新
gpgcheck=1 是否检查完整性
plugins=1 是否启用插件
installonly_limit=5 并发安装的RPM包的上限
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum(BUG反馈中心)
distroverpkg=centos-release 指定一个软件包,yum会根据这个包判断你的发行版本,可以是安装的任何针对自己发行版的rpm包
(二)仓库指向配置文件:/etc/yum.repos.d/*.repo
[repository_name] 注意:[REPO_name]中不能有空格,否则报错
name=some description about repository 关于yum源的描述信息
baseurl=
http:// web服务器仓库
ftp:// ftp服务器仓库
file:// 本地文件路径(包括光盘)
enabled={1|0} 是否启用 (启用为1,禁用为0,下同)
gpgcheck={1|0} 是否检查完整性
gpgkey=URL 密钥文件路径,如果启用检查完整性,就必须赋值
enablegroups={1|0} 是否开启包组
failovermethod={roundrobin|priority} 默认为:roundrobin,意为随机挑选yum仓库源
cost=1000 yum源优先级,默认1000,值越大,优先使用级越低
(三)yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386
$YUM0-$YUM9:自定义变量
示例代码:
http://server/centos/$releasever/$basearch/
变量转换后:http://server/centos/7/x86_64
变量转换后:http://server/centos/6/i384
(四)手动创建yum仓库时生成仓库根目录配置文件命令:
createrepo [options] <directory>
三、YUM客户端的使用
1、显示仓库列表:
yum repolist [all|enabled|disabled] 可以查看所有的、启用的、禁用的
示例代码:
[root@centos7 test]# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id repo name status
cdrom cdrom yum source 9,007
http http yum source 9,007
repolist: 18,014
[root@centos7 test]#
2、显示已启用的yum仓库里面的程序包:
yum list
yum list [all | glob_exp1] [glob_exp2] [...] 支持使用通配搜索所有程序包
yum list {available|installed|updates} [glob_exp1] [...]支持使用通配搜索所有(有效的、已安装的、可更新的)程序包
示例代码:
[root@centos7 test]# yum list httpd*
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
httpd.x86_64 2.4.6-40.el7.centos cdrom
httpd-devel.x86_64 2.4.6-40.el7.centos cdrom
httpd-manual.noarch 2.4.6-40.el7.centos cdrom
httpd-tools.x86_64 2.4.6-40.el7.centos cdrom
[root@centos7 test]#
3、安装程序包:
yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] 重新安装
示例代码:
[root@centos7 test]# yum install autofs.x86_64
Loaded plugins: fastestmirror, langpacks
cdrom
http
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package autofs.x86_64 1:5.0.7-54.el7 will be instal
--> Processing Dependency: libhesiod.so.0()(64bit) for p
--> Running transaction check
---> Package hesiod.x86_64 0:3.2.1-3.el7 will be install
--> Finished Dependency Resolution
Dependencies Resolved
========================================================
Package Arch Ver
========================================================
Installing:
autofs x86_64 1:5
Installing for dependencies:
hesiod x86_64 3.2
Transaction Summary
========================================================
Install 1 Package (+1 Dependent package)
Total download size: 823 k
Installed size: 5.1 M
Is this ok [y/d/N]: y^CExiting on user command
Your transaction was saved, rerun it with:
yum load-transaction /tmp/yum_save_tx.2016-08-24.21-26.
[root@centos7 test]# cls
[root@centos7 test]# cls
[root@centos7 test]# yum install autofs.x86_64
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package autofs.x86_64 1:5.0.7-54.el7 will be installed
--> Processing Dependency: libhesiod.so.0()(64bit) for package: 1:autofs-5.0.7-54.el7.x86_64
--> Running transaction check
---> Package hesiod.x86_64 0:3.2.1-3.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================
Package Arch Version Repository
Size
=======================================================
Installing:
autofs x86_64 1:5.0.7-54.el7 cdrom 794 k
Installing for dependencies:
hesiod x86_64 3.2.1-3.el7 cdrom 30 k
Transaction Summary
=======================================================
Install 1 Package (+1 Dependent package)
Total download size: 823 k
Installed size: 5.1 M
Is this ok [y/d/N]: y
Downloading packages:
-------------------------------------------------------
Total 2.1 MB/s | 823 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : hesiod-3.2.1-3.el7.x86_64 1/2
Installing : 1:autofs-5.0.7-54.el7.x86_64 2/2
Verifying : 1:autofs-5.0.7-54.el7.x86_64 1/2
Verifying : hesiod-3.2.1-3.el7.x86_64 2/2
Installed:
autofs.x86_64 1:5.0.7-54.el7
Dependency Installed:
hesiod.x86_64 0:3.2.1-3.el7
Complete!
[root@centos7 test]#
4、yum安装过程中的命令行选项:
--nogpgcheck:禁止进行gpg check
-y: 自动回答为“yes”
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件
5、查看程序包信息:
yum info package_name
示例代码:
[root@centos7 test]# yum info httpd.x86_64
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
Name : httpd
Arch : x86_64
Version : 2.4.6
Release : 40.el7.centos
Size : 2.7 M
Repo : base
Summary : Apache HTTP Server
URL : http://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible web server.
6、查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2][...]
示例代码:
[root@centos7 test]# yum provides autofs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
1:autofs-5.0.7-54.el7.x86_64 : A tool for automatically
...: mounting and unmounting filesystems
Repo : cdrom
1:autofs-5.0.7-54.el7.x86_64 : A tool for automatically
...: mounting and unmounting filesystems
Repo : http
1:autofs-5.0.7-54.el7.x86_64 : A tool for automatically
...: mounting and unmounting filesystems
Repo : @cdrom
[root@centos7 test]#
7、到yum仓库检查程序可用升级:
yum check-update
8、升级或阶级程序包:
yum update [package1] [package2] [...] 升级安装
yum downgrade package1 [package2] [...] 降级安装
9、卸载程序包:
yum remove | erase package1 [package2] [...]
示例代码:
[root@centos7 test]# yum remove tree
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.6.0-10.el7 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================
Package Arch Version Repository Size
=======================================================
Removing:
tree x86_64 1.6.0-10.el7 installed 87 k
Transaction Summary
=======================================================
Remove 1 Package
Installed size: 87 k
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Erasing : tree-1.6.0-10.el7.x86_64 1/1
Verifying : tree-1.6.0-10.el7.x86_64 1/1
Removed:
tree.x86_64 0:1.6.0-10.el7
Complete!
[root@centos7 test]#
10、清理本地yum缓存:
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
11、创建本地yum缓存:
yum makecache
12、指定的关键字搜索程序包名及summary信息:
yum search string1 [string2] [...]
示例代码:
[root@centos7 test]# yum search ftp
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
================================== N/S matched: ftp ===================================
ftp.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
lftp-scripts.noarch : Scripts for lftp
syslinux-tftpboot.x86_64 : SYSLINUX modules in /var/lib/tftpboot, available for network
: booting
tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)
vsftpd.x86_64 : Very Secure Ftp Daemon
vsftpd-sysvinit.x86_64 : SysV initscript for vsftpd daemon
curl.x86_64 : A utility for getting files from remote servers (FTP, HTTP, and others)
lftp.i686 : A sophisticated file transfer program
lftp.x86_64 : A sophisticated file transfer program
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
Name and summary matches only, use "search all" for everything.
[root@centos7 test]#
13、查看指定包所依赖的capabilities:
yum deplist package1 [package2] [...]
示例代码:
[root@centos7 test]# yum deplist tree
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
package: tree.x86_64 1.6.0-10.el7
dependency: libc.so.6(GLIBC_2.14)(64bit)
provider: glibc.x86_64 2.17-105.el7
dependency: rtld(GNU_HASH)
provider: glibc.x86_64 2.17-105.el7
provider: glibc.i686 2.17-105.el7
package: tree.x86_64 1.6.0-10.el7
dependency: libc.so.6(GLIBC_2.14)(64bit)
provider: glibc.x86_64 2.17-105.el7
dependency: rtld(GNU_HASH)
provider: glibc.x86_64 2.17-105.el7
provider: glibc.i686 2.17-105.el7
[root@centos7 test]#
14、查看yum事务历史:
日志文件保存路径 :/var/log/yum.log
yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
yum history
yum history info 6 查看具体某项历史操作
yum history undo 6 撤消某项操作
示例代码:
[root@centos7 test]# yum history
Loaded plugins: fastestmirror, langpacks
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
5 | <root> | 2016-08-24 21:32 | Erase | 1
4 | <root> | 2016-08-24 21:27 | Install | 2
3 | <root> | 2016-08-22 17:29 | Install | 3
2 | <root> | 2016-08-22 15:22 | Install | 52 <
1 | System <unset> | 2016-07-21 12:17 | Install | 1243 >
history list
[root@centos7 test]# yum history info 5
Loaded plugins: fastestmirror, langpacks
Transaction ID : 5
Begin time : Wed Aug 24 21:32:39 2016
Begin rpmdb : 1306:d11bc5d2be008a4ef6a4b40725e4d041e93aac8d
End time : 21:32:40 2016 (1 seconds)
End rpmdb : 1305:bd2b79ace3e7148c8285452fabcf96d1248d19fe
User : hacker,10,183530300 <root>
Return-Code : Success
Command Line : remove tree
Transaction performed with:
Installed rpm-4.11.3-17.el7.x86_64 @anaconda
Installed yum-3.4.3-132.el7.centos.0.1.noarch @anaconda
Installed yum-plugin-fastestmirror-1.1.31-34.el7.noarch @anaconda
Packages Altered:
Loading mirror speeds from cached hostfile
Erase tree-1.6.0-10.el7.x86_64 @?cdrom
history info
[root@centos7 test]# yum history undo 5
Loaded plugins: fastestmirror, langpacks
Undoing transaction 5, from Wed Aug 24 21:32:39 2016
Loading mirror speeds from cached hostfile
Erase tree-1.6.0-10.el7.x86_64 @?cdrom
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================
Package Arch Version Repository Size
=======================================================================================
Installing:
tree x86_64 1.6.0-10.el7 cdrom 46 k
Transaction Summary
=======================================================================================
Install 1 Package
Total download size: 46 k
Installed size: 87 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : tree-1.6.0-10.el7.x86_64 1/1
Verifying : tree-1.6.0-10.el7.x86_64 1/1
Installed:
tree.x86_64 0:1.6.0-10.el7
Complete!
[root@centos7 test]#
15、安装及升级本地程序包:
yum localinstall rpmfile1 [rpmfile2] [...] 可用install替代
yum localupdate rpmfile1 [rpmfile2] [...] 可用update替代
16、包组管理的相关命令:
yum grouplist [hidden] [groupwildcard] [...] 查看YUM源里面包组列表(支持通配符)
yum groupinfo group1 [...] 查看YUM源里面指定包组的信息
yum groupinstall group1 [group2] [...] 使用YUM安装包组
yum groupupdate group1 [group2] [...] 使用YUM升级包组
yum groupremove group1 [group2] [...] 使用YUM卸载包组
示例代码
[root@centos7 test]# yum grouplist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Environment Groups:
Minimal Install
Compute Node
Infrastructure Server
File and Print Server
Basic Web Server
Virtualization Host
Server with GUI
GNOME Desktop
KDE Plasma Workspaces
Development and Creative Workstation
Installed Groups:
Development Tools
Available Groups:
Compatibility Libraries
Console Internet Tools
Graphical Administration Tools
Legacy UNIX Compatibility
Scientific Support
Security Tools
Smart Card Support
System Administration Tools
System Management
Done
[root@centos7 test]#
四、YUM仓库配置实例:
使用光盘创建本地yum仓库:
(1) 挂载光盘至/media/cdrom目录
mount /dev/cdrom /media/cdrom
(2) 编辑/etc/yum.repos.d/base.repo配置文件
[cdrom]
name=cdrom yum source
baseurl=file:///media
enabled=1
gpgcheck=0
gpgkey=file:///media/cdrom/RPM-GPG-KEY-CentOS-7
(3)使用yum repolist验证是否添加正确
(4)使用yum list查看光盘yum源里面的安装包
学到这里的同时,你已经可以使用自己配置的光盘YUM源去解决一些常用软件的依赖性问题,如果是在实际生产环境中,要想方便的使用,最好把你需要用到的安装包下载到一个专业的包目录,然后使用手动创建yum仓库时生成仓库根目录配置文件命令createrepo,制作一个仓库信息配置文件,再把自己的包目录通过http或者ftp方式共享出去,别人就可以通过网络使用你的YUM仓库服务器了。