centos  系统软件包管理  yum 本地yum配置  扩展源epel  rpm  清除yum缓存  yum provides "*/vim"   第十节课

 

你不能保证可逆化操作就要备份配置文件

 

 

 

上半节课

rpm -ivh xx.rpm
--force
--force
-U
rpm -e
rpm -qa
rpm -qi 包名
rpm -qf filename
rpm -ql 包名
rpm -Va
rpm -qR

 

 

下半节课

yum install -y filename(包名)
yum groupinstall "xxx"
yum remove filename (包名)
yum groupremove "xxx"
yum list
yum grouplist
yum downgrade
yum check-update

yum install 包名 -y --downloadonly --downloaddir=/usr/local/src
yum reinstall 包名 -y --downloadonly --downloaddir=/usr/local/src
yum update -y (包名)
yum provides "*/vim"
yum search ‘keywords’
yum list |grep ‘keywords’

清除yum缓存

 

 

wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.27.tar.bz2
tar jxvf httpd-2.2.27.tar.bz2
./configure && make && make install

 

 

 

rpm工具
rpm Redhat Package Manager

rpm包名字构成由-和.分成了若干部分,如abrt-cli-2.0.8-15.el6.centos.i686.rpm,abrt-cli是包名,2.0.8-15是版本号,el6指的是redhat企业版6

centos指的是这是在centos上用的,i686指的是平台类型,还有x86_64。有些rpm包并没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。

 

内核版本:偶数稳定,基数待开发

 

 

 

安装一个包:  rpm -ivh /mnt/Packages/libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm

 -i 表示安装,-v 可视化,-h显示安装进度
--force : 强制安装,即使覆盖属于其他包的文件也要安装
--nodeps : 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包 ,忽略依赖之后这个包肯定不能用!
-U 就是升级的意思,原先的包配置文件不会删除,会改名:  rpm -Uvh filename.rpm  
-Va 校验所有的RPM软件包,查找丢失的文件[View Lost]
-e 卸载rpm包
-qi 查询包信息
-ql 列出一个包所安装的文件
-qf 列出某个文件属于哪个rpm包
-qa 查询当前系统已安装的rpm包
-qR 查询已安装软件包所依赖的软件包和文件

 

rpm的卸载:
 rpm -e filename  //这里的filename是通过rpm的查询功能所查询到的 ,filename是包名!



rpm -qa | grep vim
vim-minimal-7.2.411-1.8.el6.x86_64
vim-common-7.2.411-1.8.el6.x86_64
vim-enhanced-7.2.411-1.8.el6.x86_64

rpm -e  vim-enhanced



 查询包是否已经卸载



[root@steven ~]# rpm -e vim-enhanced
[root@steven ~]# rpm -qa |grep vim
vim-minimal-7.2.411-1.8.el6.x86_64
vim-common-7.2.411-1.8.el6.x86_64
[root@steven ~]# vim 2.txt
-bash: vim: command not found
[root@steven ~]#



 

 

 

查询一个包是否安装
 rpm -q 包名

查询当前系统所有安装过的rpm包



rpm -qa



 

查询rpm包的相关信息 :



rpm -qi 包名



 

列出一个rpm包所安装的文件:



rpm -ql 包名



 

列出某个文件属于哪个rpm包 相当于yum provides:
 rpm -qf filename

 

 依赖问题

CentOS系统缓存清理 centos 清理yum缓存_运维

 

rpm -qi  vim-enhanced

CentOS系统缓存清理 centos 清理yum缓存_rpm包_02

 

 

查看已安装软件包所依赖的软件包和文件
rpm -qR 软件包



rpm -qR zabbix-server-mysql |grep curl
libcurl.so.4()(64bit)



zabbix-server-mysql软件包依赖curl这个命令发邮件

 


 

 

 

 

 

 

yum工具 (yum -yellowdog updater 黄狗安装器)
 yum list |less

 

yum 安装包: yum install

yum 卸载包:  yum

列出所有的套件: yum

安装套件:



LANG=en    先设置为英文
yum groupinstall  "xxx"



卸载套件: yum groupremove "xxx"

 

 


 

搭建本地的yum源(光盘源) 我们一般用网络源



mount /dev/cdrom /mnt
cp -r /etc/yum.repos.d /etc/yum.repos.d.bak //先备份一下
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/dvd.repo #加入如下内容:

[dvd]
name=install dvd
baseurl=file:///mnt  或 baseurl=ftp:///mnt   或 baseurl=http:///mnt
enabled=1
gpgcheck=0



yum list //看是否有dvd的标志出现

yum list |wc -l 

 

搭建本地的yum源另一种方法



1、把所有rpm包放到/tmp/packages/目录下
ll /tmp/packages/
total 17028
drwxr-xr-x 2 root root    4096 May 23 17:14 repodata
-rw-r--r-- 1 root root  345004 May 23 17:13 zabbix-agent-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4644164 May 23 17:13 zabbix-debuginfo-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  241540 May 23 17:13 zabbix-get-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  737848 May 23 17:13 zabbix-java-gateway-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  647752 May 23 17:13 zabbix-proxy-mysql-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  647780 May 23 17:13 zabbix-proxy-pgsql-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  631564 May 23 17:13 zabbix-proxy-sqlite3-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  252328 May 23 17:13 zabbix-sender-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 1840552 May 23 17:13 zabbix-server-mysql-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 1839560 May 23 17:13 zabbix-server-pgsql-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 5489008 May 23 17:13 zabbix-web-3.2.6-1.el6.noarch.rpm
-rw-r--r-- 1 root root    5648 May 23 17:13 zabbix-web-japanese-3.2.6-1.el6.noarch.rpm
-rw-r--r-- 1 root root    5208 May 23 17:13 zabbix-web-mysql-3.2.6-1.el6.noarch.rpm
-rw-r--r-- 1 root root    5220 May 23 17:13 zabbix-web-pgsql-3.2.6-1.el6.noarch.rpm


2、执行下面--add-repo会添加tmp_packages_.repo源
yum install -y  yum-utils 
yum-config-manager --add-repo=file:///tmp/packages/
ll
total 12
-rw-r--r-- 1 root root 1399 May 24 14:04 CentOS-Base.repo
-rw-r--r-- 1 root root  220 May 24 14:04 CentOS-Epel.repo
-rw-r--r-- 1 root root   97 May 24 14:18 tmp_packages_.repo



3、添加gpgcheck=0 不检查密钥
echo 'gpgcheck=0' >> /etc/yum.repos.d/tmp_packages_.repo 

4、cat tmp_packages_.repo 
[tmp_packages_]
name=added from: file:///tmp/packages/
baseurl=file:///tmp/packages/
enabled=1


原理都是建个本地yum仓库,然后找一台机利用yum.conf里的keepcache保存rpm包,在这台机安装一个vsftpd,客户端修改repo文件利用ftp协议从那台机器下载rpm包



 

另外一种方法



1、把所有rpm包放到/tmp/packages/目录下
ll /tmp/packages/
total 17028
drwxr-xr-x 2 root root    4096 May 23 17:14 repodata
-rw-r--r-- 1 root root  345004 May 23 17:13 zabbix-agent-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 4644164 May 23 17:13 zabbix-debuginfo-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  241540 May 23 17:13 zabbix-get-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  737848 May 23 17:13 zabbix-java-gateway-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  647752 May 23 17:13 zabbix-proxy-mysql-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  647780 May 23 17:13 zabbix-proxy-pgsql-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  631564 May 23 17:13 zabbix-proxy-sqlite3-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  252328 May 23 17:13 zabbix-sender-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 1840552 May 23 17:13 zabbix-server-mysql-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 1839560 May 23 17:13 zabbix-server-pgsql-3.2.6-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 5489008 May 23 17:13 zabbix-web-3.2.6-1.el6.noarch.rpm
-rw-r--r-- 1 root root    5648 May 23 17:13 zabbix-web-japanese-3.2.6-1.el6.noarch.rpm
-rw-r--r-- 1 root root    5208 May 23 17:13 zabbix-web-mysql-3.2.6-1.el6.noarch.rpm
-rw-r--r-- 1 root root    5220 May 23 17:13 zabbix-web-pgsql-3.2.6-1.el6.noarch.rpm


2、执行下面--add-repo会添加tmp_packages_.repo源
yum install -y  createrepo 
createrepo   /tmp/packages/


3、添加gpgcheck=0
echo 'gpgcheck=0' >> /etc/yum.repos.d/tmp_packages_.repo 

4、cat tmp_packages_.repo 
[tmp_packages_]
name=added from: file:///tmp/packages/
baseurl=file:///tmp/packages/
enabled=1



 

repodata

yum-config-manager --add-repo
createrepo   
这两个命令应该都是一样的,大家都产生repodata这个文件夹

ll packages/repodata/
total 60
-rw-r--r-- 1 root root 11945 May 23 17:14 36ec895e0e619f67e3e4e9f5f70c10bfa237496947720e51936bbee530f7eb8d-primary.sqlite.bz2
-rw-r--r-- 1 root root  1394 May 23 17:14 62d0a974b1b338e7b249d26ad3babd82d82bed5a0cef8e234c2c8e3637e2a926-other.xml.gz
-rw-r--r-- 1 root root  3248 May 23 17:14 d23fa2714d82982ac970284f4f87f68a60ebeaeda50a6c101ce04ee3cbc64853-primary.xml.gz
-rw-r--r-- 1 root root  9226 May 23 17:14 d9b01d8a023d1cf353446d501dc26b99588e45e9b9ebc7948917e7ea02531f0c-filelists.xml.gz
-rw-r--r-- 1 root root 15652 May 23 17:14 f761bf9f6c3d6531908fa111190667f780f8ba79b0f585e8c1c6e0452a5cc1f2-filelists.sqlite.bz2
-rw-r--r-- 1 root root  4271 May 23 17:14 f9697ba3a2bf52fe4b4c4977201326db8075979e1cf45f8f2c5332af3af68cda-other.sqlite.bz2
-rw-r--r-- 1 root root  2985 May 23 17:14 repomd.xml

 

 

 

 

EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目

为RHEL/CentOS提供他们默认不提供的软件包。这个源兼容RHEL及像CentOS和Scientific Linux这样的衍生版本。

 

安装epel源:



yum install -y epel-release

或者
rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

或者
阿里云的epel源  建议用阿里云,速度比较快
1、 首先卸载以前装的epel 以免影响
rpm -e epel-release
2、 下载阿里提供的epel ,PS  感谢马云。
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo
3、清空缓存
yum clean all
yum makecache



 

 

 

 



yum list |grep nginx
collectd-nginx.x86_64                       4.10.9-1.el6                 epel   
munin-nginx.noarch                          2.0.25-2.el6                 epel   
nginx.x86_64                                1.0.15-12.el6                epel   
nginx-filesystem.noarch                     1.0.15-12.el6                epel   
owncloud-nginx.noarch                       7.0.7-1.el6



 

 

利用yum 下载一个rpm包
首先需要安装一个插件来支持只下载不安装: #yum install -y yum-plugin-downloadonly.noarch  
这样就已经下载,默认在 /var/cache/yum/base/packages/: # yum install

指定一个下载目录,如果是已经安装过的rpm包这样不成功,需要使用reinstall:



#yum install 包名 -y --downloadonly --downloaddir=/usr/local/src 

#yum reinstall 包名 -y --downloadonly --downloaddir=/usr/local/src



 

下载了一个rpm包下来,rpm -ivh不成功,需要解决依赖关系,可以使用yum localinstall



cd /data/download
#rpm -ivh不成功
rpm -ivh VirtualBox-3.1-3.1.0_55467_fedora12-1.i686.rpm
使用yum localinstall解决依赖关系
yum localinstall --nogpgcheck VirtualBox-3.1-3.1.0_55467_fedora12-1.i686.rpm



 

 

 

(1)升级系统现有所有软件包除了内核
vi /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=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
exclude=kernel*   #添加这一行

yum  update  -y  --exclude=kernel* 



(2)升级系统里面某个软件包
yum update -y (包名)
yum update -y openssl


(3)升级内核不升级软件包
yum update -y kernel
uname -a
Linux steven.localdomain 2.6.32-504.8.1.el6.x86_64 #1 SMP
reboot
Package kernel.x86_64 0:2.6.32-696.12.1.el6 will be install

如果正在跑网站,比如有漏洞,要不要停机升级yum update -y kernel
除非内核很严重的漏洞,否则不升
升内核除非很有必要!否则就是找死

(4)降级系统里面某个软件包
yum downgrade  -y (包名)
yum downgrade   -y   mssql-server-<version_number>.x86_64

 

(5)检查哪些rpm包可以更新
yum check-update |grep -i lsof



yum check-update |grep -i lsof
lsof.x86_64 4.82-5.el6 base

rpm -qa |grep lsof
lsof-4.82-4.el6.x86_64

现在安装的是lsof-4.82-4.el6.x86_64,yum仓库显示最新版本是lsof-4.82-5.el6.x86_64
比如检查sqlserver什么时候出了CU补丁包



 

 

 

yum查找包:  yum provides "*/vim" //这里用通配,可以查找一个命令由哪个包安装来的

 

当前系统没有traceroute命令,yum会到yum源到网上去搜索是否包含有traceroute命令的包

[root@localhost ~]# yum provides traceroute
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.bit.edu.cn
* extras: mirror.bit.edu.cn
* updates: mirrors.aliyun.com
3:traceroute-2.0.19-5.el7.x86_64 : Traces the route taken by packets over an IPv4/IPv6 network  已经找到这个包

 

[root@localhost ~]# yum install -y traceroute-2.0.19-5.el7.x86_64

Dependencies Resolved

======================================
Installing:
traceroute x86_64 3:2.0.19-5.el7 base 58 k

Transaction Summary
===============================================

 

搜索某个包: 



#yum search ‘keywords’ 
#yum list |grep ‘keywords’



 

 

清除yum缓存
/var/cache/yum

yum clean metadata #清除元数据
yum clean headers #清除header
yum clean packages #清除下载下来的rpm包 downloadonly
yum clean all #清除缓存的软件包和旧headers
yum makecache

 

 

源码包安装
源码包是开源的可自行更改的程序包,大多用C语音开发,不能直接使用,需要编译成二进制的可执行文件
编译源码包的必须有gcc支持,如果没有需要安装: yum install -y gcc 
通常情况编译三步曲: ./configure 配置各种编译参数; make 根据指定的编译参数进行编译;make install 安装到指定目录

实例:
下载源码包 : cd /usr/local/src/ #约定目录



wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.27.tar.bz2



 

解压



tar jxvf httpd-2.2.27.tar.bz2 //查看README或者INSTALL说明文件



 

指定编译参数 



./configure --help 
echo $? 验证是否成功
make
make install



 

 

 

 

 

f

 



CentOS下载安装EPEL源的步骤
http://www.xitongzhijia.net/xtjc/20150302/39647.html

1. 确认你的CentOS 的版本

首先通过以下命令确认你的CentOS 版本



$ cat /etc/redhat-release  
CentOS release 6.4 (Final)



 

 

2. 下载EPEL 的rpm 安装包

现在从上面的地址下载CentOS 版本所对应的EPEL 的版本



$ wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm



 

3. 安装EPEL

通过以下命令安装EPEL 软件包



$ sudo rpm -ivh epel-release-6-8.noarch.rpm 
或
$ sudo rpm -ivh epel-release*



 

5. 检查EPEL 源

安装好EPEL 源后,用yum 命令来检查是否添加到源列表



# yum repolist 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
 * base: mirrors.vonline.vn 
 * epel: buaya.klas.or.id 
 * extras: centos-hn.viettelidc.com.vn 
 * updates: mirrors.fibo.vn 
repo id        repo name                                              status 
base           CentOS-6 - Base                                         6,381 
epel           Extra Packages for Enterprise Linux 6 - x86_64         10,023 
extras         CentOS-6 - Extras                                          13 
nginx          nginx repo                                                 47 
updates        CentOS-6 - Updates                                      1,555 
repolist: 18,019



 

EPEL已经在repo 后列出,并且显示提供了上万个软件包,所以EPEL 已经安装到你的CentOS了。

EPEL源的配置安装到了 /etc/yum.repos.d/epel.repo 文件。

现在来试一下从EPEL 获取软件包



$ sudo yum install htop



 


阿里云yum源

http://help.aliyun.com/knowledge_detail/5980325.html?spm=5176.7114037.1996646101.1.YFezgQ&pos=1

如果使用其他YUM源:
例如:如果需要配置163 YUM源,可以通过以下步骤实现:
1.导入CentOS-6的GPG证书
 rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6 
2.让yum使用网易的源:
 cd /etc/yum.repos.d/ && wget http://mirrors.163.com/.help/CentOS6-Base-163.repo 
3.修改repo文件
在所有mirrorlist前面加上#,把所有$releasever替换成6,保存



sed -i '/mirrorlist/d' CentOS6-Base-163.repo
sed -i '/\[addons\]/,/^$/d' CentOS6-Base-163.repo
sed -i 's/\$releasever/6/' CentOS6-Base-163.repo
sed -i 's/RPM-GPG-KEY-CentOS-5/RPM-GPG-KEY-CentOS-6/' CentOS6-Base-163.repo



4.清理并重新生成yum缓存



yum clean metadata && yum makecache



 


 

什么是SRPM包   (Linux就这个范儿)

***.src.rpm格式命名的SRPM包,SRPM提供了参数配置文档,即configure和makefile,这样虽然SRPM内容是源码,但依然含有
所需要的依赖软件说明和所有RPM文件所提供的依赖包和数据,安装该软件时,先将该软件以RPM管理方式编译RPM文件,然后

将编译完成的RPM文件安装到Linux中

 


 

rpm -Va

-Va 校验所有的RPM软件包,查找丢失的文件[View Lost] 

以验证文件是否被替换,但是这种方法比较低级。此时可以借助于Linux下rpm这个工具来完成验证,操作如下:

[root@server ~]# rpm -Va
....L... c /etc/pam.d/system-auth
S.5..... c /etc/security/limits.conf
S.5....T c /etc/sysctl.conf
S.5....T /etc/sgml/docbook-simple.cat
S.5....T c /etc/login.defs
S.5..... c /etc/openldap/ldap.conf
S.5....T c /etc/sudoers

 


方法一: downloadonly插件

有一个yum的插件叫做downloadonly,顾名思义,就是只下载不安装的意思。

1. 安装插件

yum install yum-download

2. 下载

yum update httpd -y –downloadonly

这样httpd的rpm就被下载到/var/cache/yum/中去了。

你也可以指定一个目录存放下载的文件

yum update httpd -y –downloadonly –downloaddir=/opt

值得注意的是,downloadonly插件不但适用于yum update,也适用于yum install。

 

方法二:yum-utils中的yumdownloader

yum-utils包含着一系列的yum的工具,比如 debuginfo-install, package-cleanup, repoclosure, repodiff, repo-graph, repomanage, repoquery, repo-rss, reposync, repotrack, verifytree, yum-builddep, yum-complete-transaction, yumdownloader, yum-debug-dump 和 yum-groups-manager.

1. 安装yum-utils.noarch yum-utils插件

yum -y install yum-utils

2. 使用yumdownloader

yumdownloader httpd

呵呵,就这么简单。

 

方法三:利用yum的缓存功能

用yum安装了某个工具后,我们想要这个工具的包。那yum安装的过程其实就已经把包给下载了,只是没有保持而已。

所以,我们要做的,是将其缓存功能打开。

1.vi /etc/yum.conf 将其中 keepcache=0改为keepcache=1,保存退出。

2.yum install httpd

3.cat /etc/yum.conf |grep cachedir
cachedir=/var/cache/yum

4.跳到上术目录 cd cachedir=/var/cache/yum

5.这个时候的目录树中应该可以找到你需要的安装包了

 


gpgcheck
gpgcheck用来验证远程yum源是否是合法的,一般设置gpgcheck为0也无所谓,验证是否合法多余的,设置为1就要导入公钥rpm --import
gpgcheck=1/0
rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6

gpgcheck=1 表示使用gpg文件来检查软件包的签名
gpgkey= 表示gpg文件所存放的位置,此处也可以是http方式的位置。