最近找到几个新的软件包,觉得挺好用,也刚编译成rpm包,希望在所有使用到的机器上部署。后来发现,需要每一台机器去安装一遍,即使可以远程安装,这也是挺麻烦的。决定参考Redhat的升级机制,把yum也迁移到红旗上来。说做就做,效果还是不错的。

一、原理

yum是一个用于管理rpm包的后台程序,用python写成,可以非常方便的解决rpm的依赖关系。在建立好yum服务器后,yum客户端可以通过http、ftp方式获得软件包,并使用方便的命令直接管理、更新所有的rpm包,甚至包括kernel的更新。它也可以理解为红旗环境下的apt管理工具。

要在红旗上部署yum服务,首先需要的就是规划软件包的目录次序:

引用

1、我准备要对红旗服务器DC和桌面DT提供服务;

2、涉及的平台,服务器对i386、x86_64平台,桌面只有i386平台;

3、提供系统本身的升级程序包,官方提供的升级包,自己编译的软件包,以及从其他途径获得、经过测试的软件包四大部分提供更新升级。

目录架构如下:

二、部署yum服务器

※系统平台:

服务端:红旗DC Server 5.0 for x86

客户端:红旗DC Server 5.0 for x86和DT 5.0 for x86

1、准备

需要为yum提供python环境,可以从系统光盘获得:

引用

libxml2-2.6.16-6.i386.rpm

libxml2-python-2.6.16-6.i386.rpm

elfutils-0.97-5.i386.rpm

rpm-python-4.3.3-9_nonptl.1AX.i386.rpm

python-urlgrabber-2.9.6-2.noarch.rpm

使用rpm -ivh把上述的包都安装到系统中。

新版的yum使用xml格式的数据文件来分析和获得rpm信息,可以使用createrepo工具实现

官方网站:点击

下载:点击

安装:

rpm -ivh createrepo-0.4.4-1.noarch.rpm

2、拷贝

os目录是用于存放系统原来带的所有软件包的,则我们这样做:

mount -t iso9660 -o loop /iso/redflag-dc5.0-release-disc1.iso /mnt/cdrom

cp /mnt/cdrom/* ./os/i386/

umount /mnt/cdrom

mount -t iso9660 -o loop /iso/redflag-dc5.0-release-disc2.iso /mnt/cdrom

cp /mnt/cdrom/* ./os/i386/

3、生成yum用的repodata目录

运行:

createrepo /yum/dc/5.0/os/i386

运行后,会自动在i386目录下生成repodata目录,里面存放有对应RPM的依赖信息供后续yum使用。

※这里只是演示了os目录,同样的,其他目录也存放上对应的文件,并用上述命令生成repodata目录。今后若有更新,需重新运行createrepo命令,以更新数据库

4、准备ftp服务

yum是通过http或ftp获得rpm包的,所以我们需要设置http或ftp服务,并把上述的yum目录的根目录作为ftp的根目录即可。类似提供这样的关系:

引用

ftp://ip/dc/5.0/os/i386

三、部署yum客户端

我使用的是一个用最小化安装的红旗DC Server作为客户端。要使用yum服务,必须先解决yum的依赖关系。

1、准备

下面是需要使用的软件包,请从系统光盘、rpmfind或centos获得:地址

rpm -ivh libxml2-2.6.16-6.i386.rpm

rpm -ivh libxml2-python-2.6.16-6.i386.rpm

rpm -ivh python-elementtree-1.2.6-4.i386.rpm

rpm -ivh sqlite-3.2.2-1.i386.rpm

rpm -ivh python-sqlite-1.1.6-1.i386.rpm

rpm -ivh python-urlgrabber-2.9.6-2.noarch.rpm

rpm -ivh elfutils-0.97-5.i386.rpm

rpm -ivh rpm-4.3.3-9_nonptl.i386.rpm

rpm -ivh rpm-python-4.3.3-9_nonptl.1AX.i386.rpm

2、安装

我使用的是自己编译的2.6.1-1版本,可以从下面的地址获得。你也可以使用centos提供的2.4.2-2版本。

下载地址:点击

rpm -ivh yum-2.6.1-1.noarch.rpm

3、配置

yum客户端的配置非常简单,只有一个配置文件:/etc/yum.conf,如下:

引用

[main]

cachedir=/var/cache/yum

keepcache=1

debuglevel=2

logfile=/var/log/yum.log

pkgpolicy=newest

distroverpkg=redflag-release

tolerant=1

exactarch=1

obsoletes=1

# 这里表示,你可以把配置文件放在/etc/yum.repos.d目录中,用.repo文件名# 结尾即可。

# PUT YOUR REPOS HERE OR IN separate files named file.repo

# in /etc/yum.repos.d

[base]

name=Red Flag Linux $releasever - $basearch - Base

# 下面是获得rpm的http或ftp地址(yumer是用户名和密码)

baseurl=ftp://yumer:yumer@192.168.228.153/dc/$releasever/os/$basearch/

[updates]

name=Red Flag Linux $releasever - Updates

baseurl=ftp://yumer:yumer@192.168.228.153/dc/$releasever/updates/$basearch/

[extras]

name=Red Flag Linux $releasever - Extras

baseurl=ftp://yumer:yumer@192.168.228.153/dc/$releasever/extras/$basearch/

[addons]

name=Red Flag Linux $releasever - Addons

baseurl=ftp://yumer:yumer@192.168.228.153/dc/$releasever/addons/$basearch/

※注释:配置文件中可以使用几个变量,其他的请参考man yum.conf。

$releasever=distroverpkg定义的对应/etc/redflag-release的版本;

$arch=python中os.uname的定义;

$basearch=把$arch降级到最基础的架构,例如i686会表示为i386

4、使用

上面已经把yum配置完,使用方法是:

# yum

参数说明:

options:这里仅列出常见的参数而已。

-y 如果 yum 在工作过程中需要使用者响应,这个参数可以直接回答 yes

更新项目:更新的动作有底下几个:

install :安装某个套件,后面需要接套件名称;

update  :这就是升级啦!如果 update 后面接套件名称,表示只要 yum 升级该套件而已

如果 update 后面不接套件名称,表示 yum 针对目前该主机所有已经安装的套件进行升级的动作!这是最常使用的项目了。

list    :列出目前在 yum server 上面有的 RPM 套件;

info    :某个套件的内容,类似 rpm -qi packages 的内容。

clean   :将已将下载到本机的 packages 或 headers 移除。

remove  :移除已经安装在我们系统的某个套件!

例如:

安装所有和mysql有关的套件

yum install *mysql*

检查是否有更新的套件

yum check-update

检查所有提供php的套件,并显示简介信息

yum search php

显示已经安装的套件

yum list installed

移除wget套件

yum remove wget

四、其他

1、相关文件

引用

/etc/cron.daily/yum.cron

每日进行yum及其他软件包定时升级

/etc/init.d/yum

yum服务启动文件

2、更新套件

服务端:把新的套件放入对应的目录,然后运行createrepo更新XML数据库即可;

客户端:yum会定时的情况cache文件,但有时候我们马上就要更新需要的套件,可以这样做:

yum clean all

yum update mirrordir

3、利用其他套件更新

我们在日常的管理中,也可以利用其他的发行版提供的镜像来进行额外的更新。例如,我常用centos镜像来更新部分我的工具包:

在/etc/yum.conf文件中增加:

引用

[centos-update]

name=CentOS-$releasever - Update

baseurl=http://mirror.be10.com/centos/4.3/updates/$basearch/

gpgcheck=1

gpgkey=http://mirror.be10.com/centos/RPM-GPG-KEY-centos4

其中不一样的地方就是,centos做了签名,所以,需要加上gpgcheck和gpgkey,接下来我就可以进行更新:

yum clean all

yum install mysql

可以看到,mysql会使用centos提供的4.1.20-1版本,而不会使用系统自带的4.1.10a-2。

但千万要注意区分可使用的套件,并不是所有centos的套件都适合红旗使用的。若不知道如何区分,建议还是使用官方的SP补丁包吧。

五、附录

1、我使用的yum.conf文件:下载

2、yum客户端需要的rpm软件包:下载

红旗linux怎么升级,[原]使用yum更新红旗Linux相关推荐

  1. linux centos升级php_CentOS使用yum升级php到最新版本

    CentOS的php版本默认为5.1.6,然后在5.2.9版本之前的的php都存在一个漏洞,但是目前网上很多地方都无法使用yum update php*升级到最新版本,比较常见的是升级到5.2.6版本 ...

  2. 【Linux进阶指南】【持续更新】Linux组与文件目录权限 任务调度 Linux分区

    入门手册 以下是整一个linux指南的大目录,点击第一级目录直接进入文章. ----持----续----更----新---- Linux组与文件目录权限 Linux用户与组 用户组 用户和组相关文件 ...

  3. linux系统安装升级win10双系统,Win10 安装Linux ubuntu-18.04双系统(安装指南)

    在自己的电脑上安装了一个 Linux ubuntu系统,第一次安装,记录下每一步步骤,以下是安装过程: 第一步:下载ubuntu镜像文件 ubuntu- 18.04.0镜像文件下载 第二步:分区 在我 ...

  4. linux usb升级,广成 USBCAN-II Pro V502 linux下升级经验

    1,按住复位,插入WINDOWS(linux下有问题,不用再试了,折腾很久,除非厂家有新方案)主机USB口,松开复位按键,SYS灯闪烁,进入刷新模式,弹出的存储空间中,删除原有代码firmware.b ...

  5. Linux centos7升级内核(两种方法:内核编译和yum更新)

                Linux centos7升级内核(两种方法:内核编译和yum更新) Linux的内核概念不用说大家也很清楚,正是内核版本的不同,才有Linux发行版本的说法,现在主流的cen ...

  6. Linux中升级更新命令yum upgrade和yum update的区别

    这篇文章主要介绍了Linux中升级更新命令yum upgrade和yum update的区别,Linux升级命令有两个分别是yum upgrade和yum update, 这个两个命令是有区别的,本文 ...

  7. linux更新命令yum,Linux中升级更新命令yum upgrade和yum update的区别

    Linux中升级更新命令yum upgrade和yum update的区别 更新时间:2019-10-31 17:21 最满意答案 Linux升级命令有两个分别是yum upgrade和yum upd ...

  8. linux升级软件命令 yum,Linux中升级更新命令yum upgrade和yum update的区别

    1.作用 都是系统升级命名. 2.升级内容 yum -y update:升级所有包同bai时也升级软件和系统内核:du yum -y upgrade:只升级所有包,不升级软件和系统内核.zhi 3.使 ...

  9. linux下面升级 Python版本并修改yum属性信息

    最近需要在linux下使用python,故需要升级一下python版本,上网查询了一下相关资料,更新了一下linux下面的python环境,记录如下: linux下面升级 Python版本并修改yum ...

最新文章

  1. Unity Note 1
  2. win32: 查询滚动条相关信息的注意事项
  3. Android超时退出功能解决方案
  4. MATLAB实战系列(三十九)-matlab多目标优化之海洋捕食者算法
  5. u盘 linux centos 5.3,鸟哥linux私房菜学习笔记,U盘安装centos5.3不能正常进入图形界面的问题...
  6. Java大牛分享的面试知识点
  7. jQuery封装tab选项卡组件(自定义自动功能和延迟显示功能)
  8. 什么相片可以两张弄成一张_怎么将两张图片合成一张?
  9. 在Anaconda上安装Caffe 和 CUDA
  10. Java 垃圾回收机制(面试高频问题之一)
  11. 一本关于 Total Commander 的书
  12. 树的叶子结点与完全二叉树结点计算方法
  13. 通过VBA在excel中实现多只股票基金实时交易数据查询(完整的excel原件可以在我的资源中下载)
  14. 自动回复html模板邮件,outlook休假自动回复
  15. TVS瞬态抑制二极管的工作原理和特点
  16. RTCP丢包重传策略之NACK
  17. 邓白氏编码邮件10个问题
  18. ER图、功能图画图必备Vi.sio
  19. QQ空间背景音乐 链接制作
  20. sqrt与sqrtm

热门文章

  1. Visual C++注册
  2. android长按呼出菜单,Android系统下长按菜单的实现方式
  3. 这可能是全网最全的数据仓库建设方法论!
  4. 1 error and 0 warnings potentially fixable with the `--fix` option.
  5. PM 如何进行测试?
  6. springCloud与它的好兄弟微服务
  7. 学习 JSON(入门)
  8. Spring Security系列(10)- 微服务权限方案及Oauth2介绍
  9. 研大考研不是骗子:考研政治时事之破除国企岗位
  10. 使用GitHub进行团队合作