96

搭建自己的yum仓库

 5 years ago
source link: https://www.linuxprobe.com/linux-yum-config.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
导读 yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。 基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。 yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
一、搭建前言

很多公司都有自己搭建的yum仓库,这样做的好处有以下几点:

1)节省流量,避免从公网重复下载软件包;为公司省钱;

2)提升下载速度;外网下载受带宽影响,下载速度较慢,而yum仓库在局域网中就很快;

3)方便统一管理,软件版本,都能做到统一;

4)避免访问外网,很多大公司,都是与公网隔绝的,尤其是大公司的类生产环境,绝对不予许随便访问外网,这是获取安装包的途径就只能通过内网yum仓库;

二、搭建前准备
2.1 操作系统版本

不同版本操作系统安装大体上没有差别,但是也会有影响,本实例yum仓库搭建基于如下环境:

[root@yum ~]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[root@yum ~]# uname -r

3.10.0-693.el7.x86_64

[root@yum ~]# uname -m

x86_64
2.2 关闭防火墙和selinux

安装前一定要关闭防火墙和Selinux,否则会失败,出现异常。

[root@yum ~]# getenforce      #确认SELinux关闭
 
Disabled
 
[root@yum ~]# systemctl status firewalld    #确认防火墙关闭
 
● firewalld.service - firewalld - dynamic firewall daemon
 
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
 
   Active: inactive (dead)
 
     Docs: man:firewalld(1)
三、搭建yum仓库

yum仓库搭建过程:

yum仓库搭建说简单也很简单,只要注意几个细节就可以。下面会一一讲解:

第一步:安装httpd服务

[root@cobbler ~]# yum install -y httpd                 #安装httpd服务

[root@localhost yum.repos.d]# systemctl start httpd    #启动httpd服务

第二步:搭建yum仓库

yum仓库搭建需要创建yum仓库的命令,createrepo命令

[root@localhost yum.repos.d]# yum install -y createrepo    #安装createrepo命令

[root@localhost yum.repos.d]# createrepo -pdo /var/www/html/ /var/www/html/   #创建yum仓库

[root@localhost yum.repos.d]# cd /var/www/html/   #切换到yum仓库

[root@localhost html]# ls                         #查看createrepo创建yum仓库生成内容

repodata    #生成一个repodata包,里面包含库文件,类似数据库建库建表一样

第三步:最关键一步,搭建yum仓库

平时我们都喜欢使用阿里云的epel.repo源,我们可以仿照epel.repo来写我们的源

vim /etc/yum.repos.d/rural.repo

[warehouse]                           #这个是yum仓库的名字,是存放rpm包的目录,还需要我们创建,这个地方困扰我两天时间,否则即便搭建好,也会出现问题,各种依赖解决不了

name=Server

baseurl=http://10.0.0.170/rural/

enabled=1

gpgcheck=0

[root@yum ~]# mkdir /var/www/html/warehouse -p
#
四、rpm包来源

搭建好yum仓库,就需要获取rpm包,这个可以从公网同步;

个人在家搭建yum仓库,喜欢从公网下载rpm包到yum仓库所在虚拟机,然后定时任务同步到/var/www/html/warehouse目录里。

同步代码如下:


[root@yum ~]# cat /server/scripts/yum.sh

#!/bin/bash

num=`find /var/cache/yum/* -name "*.rpm" |wc -l`

if [ $num -eq 0 ];then

  exit 1

else

  find /var/cache/yum/* -name "*.rpm"  -exec mv -f {} /var/www/html/warehouse/  \;

  sleep 2

  /usr/bin/createrepo --update /var/www/html/warehouse

fi

默认情况下,每次yum安装rpm包之后都会清理掉,因而是不能同步的,我们可以改yum服务的配置文件

[root@yum ~]# vim /etc/yum.conf


[main]   

cachedir=/var/cache/yum/$basearch/$releasever    #rpm包存放路径

keepcache=1     #keepcache默认是0,不保留rpm包,改为1,则会保留rpm安装包

debuglevel=2    #Debug信息输出登记,范围为0-10,缺省为2

logfile=/var/log/yum.log   #日志文件,执行yum记录

exactarch=1       #有1和0两个选项,设置为1,则yum只会安装和系统架构匹配的软件包

obsoletes=1   #update的参数,相当于upgrade,允许更新陈旧的RPM包

gpgcheck=1    #有1和0两个选项,分别代表是否进行gpg(GNU)校验,以确定rpm包的来源是有效和安全的。这个选项如果设置在[main]部分,则对每个repository都有效,默认为0

plugins=1      #是否启用插件,默认为1允许,0表示不允许

installonly_limit=5

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum

distroverpkg=centos-release    #指定一个软件包,yum会根据这个包判断发行版本

注意点:每次同步之后,要更新yum仓库,使用createrepo命令更新yum仓库,否则不会同步。

以上就是yum仓库的搭建过程,其实原理很简单,就是搭建一个http服务,然后把rpm放到http服务里面,通过createrepo命令创建yum仓库,类似于数据库建库建表的过程。

搭建完毕之后,我们就可以把上面的配置文件复制到内网的机器上面,让内网机器只能从yum仓库获取rpm包。

五、yum仓库配置文件

repository部分定义了每个源服务器的具体配置,可以有一到多个,位于/etc/yum.repos.d/目录下的各文件中

[root@rural ~]# ll /etc/yum.repos.d/

CentOS-Base.repo       #

六、yum命令
命令:

####查看软件包

  yum list all                 ##列出yum源仓库里面的所有可用的安装包

  yum list installed           ##列出所有已经安装的安装包 

  yum list available           ##列出没有安装的安装包

 ####安装软件

  yum install softwarename      ##安装指定的软件

  yum reinstall softarename     ##重新安装指定的软件

  yum localinstall 第三方software  ##安装第三方文件并且会解决软件的依赖关系

  yum remove  softwarename  ##卸装指定的软件

 ####查找软件的信息

  yum info software         ##查看软的信息

  yum search keywords       ##根据关键字查找到相关安装包软件的信息

  yum whatprovides filename ##查找包含指定文件的相关安装包

 ####对于软件组

   yum groups list          ##列出软件组

   yum groups install       ##安装一个软件组

   yum group remove         ##卸载一个软件组

   yum groups info          ##查看一个软件组的信息

 yum list httpd           ##列出软件包

   yum search httpd         ##搜索软件包

   yum provides  /etc/my.cnf     ##查找某个特定文件属于哪个软件包

   yum grouplist            ##弹出所有可用群组

   yum  grouplist  “MySQL  Database”     ##安装群组软件包

  yum repolist             ##弹出启用的软件库 

yum repolist all(包含禁用的软件库)    ##弹出所有软件包    

yum –enablerepo=localinstll LNMP      ##安装来自特定软件库的软件包  

   yum –enablerepo=local –disablerepo=base.extras.updates install LNMP   ##不安装来自特定软件库的软件包

   yum clean all      ##清理yum缓存内容

   yum makecache      ##缓存本地yum源中的软件包信息

yum history        ##查看yum历史记录  

特别提醒:yum仓库的rpm包每更新一次,就要执行createrepo --update进行更新


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK