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
依赖问题
rpm -qi vim-enhanced
查看已安装软件包所依赖的软件包和文件
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方式的位置。