N天学习一个linux命令之yum

yum命令

用途

yum(Yellowdog Updater Modified),RedHat系Linux操作系统包管理器,基于rpm,从源远程仓库下载rpm包安装,同时解决依赖关系,使用Python语言编写。除了安装,还可以更新,卸载,查询软件包等。

用法

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

常用命令列表

install
安装源仓库包

update
更新软件包,没有指定包,会更新所有已安装的包

update-to
更新到指定的版本

check-update
检查更新列表,看看是否有新版本

upgrade
和update --obsoletes含义一样

upgrade-to
含义和upgrade一样,只不过指定更新到某个版本

remove
erase
卸载包,包括依赖

list
列出可用的包信息

search
根据关键字搜索包

info
显示包信息

clean
清空缓存

makecache
生成缓存

groupinstall
安装组里所有的包

groupupdate
更新组里所有的包

grouplist
列出仓库里所有的组

groupremove
删除组内所有的包

groupinfo
显示组内包所有的信息

localinstall
安装本地包

localupdate
更新本地包

reinstall
重新安装包

downgrade
降级包或者降级到指定的版本

deplist
显示依赖的包和提供者

repolist
列出源仓库列表

check
检查本地rpmdb数据库,速度比较慢

help
显示帮助信息或者某个命令的帮助信息,如果有指定

常用选项

-h, --help
显示帮助信息

-y, --assumeyes
安装过程中,每一步自动选择同意

--assumeno
每次都选择不同意

-c, --config=[config file]
指定配置文件

-q, --quiet
运行时不输出信息

-v, --verbose
跟-q选项相反,输出详细信息

-d, --debuglevel=[number]
设置调试级别

-e, --errorlevel=[number]
设置错误级别

-C, --cacheonly
仅从缓存读

--version
显示程序版本信息

--showduplicates
显示所有版本,默认是只显示最新的包版本

--enablerepo=repoidglob
启用源仓库,可以是名字,标识,通配符

--disablerepo=repoidglob
禁用源仓库

--obsoletes
更新时,启用过时处理逻辑(不知道是什么鬼?删除不必要的文件?)

-x, --exclude=package
排除指定的包

--nogpgcheck
不进行gpg检验

--downloadonly
不更新,只下载

设置yum源

源文件所在目录

/etc/yum.repos.d

163源

国内一般使用网易源,毕竟是大厂,安全和速度有保障

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#released updates 
[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

yum配置文件(/etc/yum.conf)

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

实践

1 源仓库搜索指定的包,比如php

[root@vm ~]# yum search php
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
gitlab_gitlab-ee/signature                                                                                  |  836 B     00:00     
gitlab_gitlab-ee/signature                                                                                  | 1.0 kB     00:00 ... 
gitlab_gitlab-ee-source/signature                                                                           |  836 B     00:00     
gitlab_gitlab-ee-source/signature                                                                           |  951 B     00:00 ... 
======================================================== N/S Matched: php =========================================================
cups-php.x86_64 : Common Unix Printing System - php module
graphviz-php.x86_64 : PHP extension for graphviz
php.x86_64 : PHP scripting language for creating dynamic web sites
php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php-cli.x86_64 : Command-line interface for PHP
php-common.x86_64 : Common files for PHP
php-dba.x86_64 : A database abstraction layer module for PHP applications
php-devel.x86_64 : Files needed for building PHP extensions
php-embedded.x86_64 : PHP library for embedding in applications
php-fpm.x86_64 : PHP FastCGI Process Manager
php-gd.x86_64 : A module for PHP applications for using the gd graphics library
php-imap.x86_64 : A module for PHP applications that use IMAP

2 列出可用的包,比如php,未指定显示所有已安装和未安装可用的包列表

[root@vm ~]# yum list php
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
php.x86_64                                                    5.3.3-49.el6                                                     base

3 显示包依赖,比如php依赖的包和提供方

[root@vm ~]# yum deplist php
Loaded plugins: fastestmirror
Finding dependencies: 
Loading mirror speeds from cached hostfile
package: php.x86_64 5.3.3-49.el6
  dependency: libssl.so.10(libssl.so.10)(64bit)
   provider: openssl.x86_64 1.0.1e-57.el6
  dependency: libc.so.6(GLIBC_2.8)(64bit)
   provider: glibc.x86_64 2.12-1.209.el6
   provider: glibc.x86_64 2.12-1.209.el6_9.1
   provider: glibc.x86_64 2.12-1.209.el6_9.2
  dependency: libxml2.so.2(LIBXML2_2.5.2)(64bit)
   provider: libxml2.x86_64 2.7.6-21.el6_8.1
  dependency: libz.so.1()(64bit)
   provider: zlib.x86_64 1.2.3-29.el6
  dependency: libkrb5.so.3()(64bit)
   provider: krb5-libs.x86_64 1.10.3-65.el6
  dependency: libxml2.so.2(LIBXML2_2.6.5)(64bit)
   provider: libxml2.x86_64 2.7.6-21.el6_8.1
  dependency: libcrypt.so.1()(64bit)
   provider: glibc.x86_64 2.12-1.209.el6
   provider: glibc.x86_64 2.12-1.209.el6_9.1
   provider: glibc.x86_64 2.12-1.209.el6_9.2
  dependency: libm.so.6(GLIBC_2.2.5)(64bit)
   provider: glibc.x86_64 2.12-1.209.el6
   provider: glibc.x86_64 2.12-1.209.el6_9.1
   provider: glibc.x86_64 2.12-1.209.el6_9.2

4 显示包信息,比如php

[root@vm ~]# yum info php
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
gitlab_gitlab-ee/signature                                                                                  |  836 B     00:00     
gitlab_gitlab-ee/signature                                                                                  | 1.0 kB     00:00 ... 
gitlab_gitlab-ee-source/signature                                                                           |  836 B     00:00     
gitlab_gitlab-ee-source/signature                                                                           |  951 B     00:00 ... 
Available Packages
Name        : php
Arch        : x86_64
Version     : 5.3.3
Release     : 49.el6
Size        : 1.1 M
Repo        : base
Summary     : PHP scripting language for creating dynamic web sites
URL         : http://www.php.net/
License     : PHP
Description : PHP is an HTML-embedded scripting language. PHP attempts to make it
            : easy for developers to write dynamically generated webpages. PHP also
            : offers built-in database integration for several commercial and
            : non-commercial database management systems, so writing a
            : database-enabled webpage with PHP is fairly simple. The most common
            : use of PHP coding is probably as a replacement for CGI scripts.
            : 
            : The php package contains the module which adds support for the PHP
            : language to Apache HTTP Server.

5 删除包,比如已经安装的lynx包

[root@vm ~]# yum -v remove lynx
Loading "fastestmirror" plugin
Config time: 0.006
Yum Version: 3.2.29
rpmdb time: 0.000
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package lynx.x86_64 0:2.8.6-27.el6 will be erased
Checking deps for lynx.x86_64 0:2.8.6-27.el6 - e
--> Finished Dependency Resolution
Dependency Process ending
Depsolve time: 0.183

Dependencies Resolved

===================================================================================================================================
 Package                    Arch                         Version                             Repository                       Size
===================================================================================================================================
Removing:
 lynx                       x86_64                       2.8.6-27.el6                        installed                       4.7 M

Transaction Summary
===================================================================================================================================
Remove        1 Package(s)

Installed size: 4.7 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Member: lynx.x86_64 0:2.8.6-27.el6 - e
Removing Package lynx-2.8.6-27.el6.x86_64
rpm_check_debug time: 0.029
Running Transaction Test
Member: lynx.x86_64 0:2.8.6-27.el6 - e
Removing Package lynx-2.8.6-27.el6.x86_64
Transaction Test Succeeded
Transaction Test time: 1.374
Member: lynx.x86_64 0:2.8.6-27.el6 - e
Removing Package lynx-2.8.6-27.el6.x86_64
Running Transaction
  Erasing    : lynx-2.8.6-27.el6.x86_64                                                                                        1/1 
  Verifying  : lynx-2.8.6-27.el6.x86_64                                                                                        1/1 
VerifyTransaction time: 0.125
Transaction time: 1.338

Removed:
  lynx.x86_64 0:2.8.6-27.el6                                                                                                       

Complete!

6 安装包,比如lynx包

# 仅下载,不安装
[root@vm ~]# yum --downloadonly install lynx
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package lynx.x86_64 0:2.8.6-27.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================================================
 Package                     Arch                          Version                               Repository                   Size
===================================================================================================================================
Installing:
 lynx                        x86_64                        2.8.6-27.el6                          base                        1.3 M

Transaction Summary
===================================================================================================================================
Install       1 Package(s)

Total download size: 1.3 M
Installed size: 4.7 M
Is this ok [y/N]: y
Downloading Packages:
lynx-2.8.6-27.el6.x86_64.rpm                                                                                | 1.3 MB     00:00     
exiting because --downloadonly specified

# 直接安装
[root@vm ~]# yum install lynx
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package lynx.x86_64 0:2.8.6-27.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================================================
 Package                     Arch                          Version                               Repository                   Size
===================================================================================================================================
Installing:
 lynx                        x86_64                        2.8.6-27.el6                          base                        1.3 M

Transaction Summary
===================================================================================================================================
Install       1 Package(s)

Total size: 1.3 M
Installed size: 4.7 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : lynx-2.8.6-27.el6.x86_64                                                                                        1/1 
  Verifying  : lynx-2.8.6-27.el6.x86_64                                                                                        1/1 

Installed:
  lynx.x86_64 0:2.8.6-27.el6                                                                                                       

Complete!

7 清空所有缓存

[root@vm ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras gitlab_gitlab-ee gitlab_gitlab-ee-source updates
Cleaning up Everything
Cleaning up list of fastest mirrors

参考资料

【1】man yum
【2】linux yum命令详解
http://www.cnblogs.com/chuncn/archive/2010/10/17/1853915.html

原文地址:https://www.cnblogs.com/wadeyu/p/8710594.html