Linux系统使用Createrepo创建和使用本地源

一、YUM简介

YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora、RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

二、获取RPM包

使用YUM有两种方式可以获取RPM包,分别是缓存方式和指定下载目录方式。

1、缓存方式

需要修改本地源配置文件(/etc/yumrepos.d/*.repo)中的keepcache为1,此方法较为繁琐,且在执行指令(yum clean all)时,会将已下载的文件删除,且如果有较多的yum源配置文件时,取文件会很麻烦,此处不再详细介绍

2、指定目录

通过下方指令,即可将createrepo及其依赖项下载至/local/createrepo目录下

yum install -y createrepo --downloadonly --downloaddir /local/createrepo

注意:如果您使用的系统已经安装了该软件,则不会进行下载,需要使用yum reinstall进行下载。另外,如果依赖项已经安装,则相关依赖项也不会下载,建议使用未安装过任何软件的Linux的Minimal版本进行下载。

也可使用repotrack下载

yum -y install yum-utils
repotrack createrepo -p /local/createrepo

注意:repotrack会下载所有依赖的包,不管系统是否已安装,大部分包其实是系统已经安装的,如果对安装源有大小限制的需求,建议对repotrack下载的包进行二次处理

三、安装createrepo

在联网状态下,通过(yum install createrepo)指令,即可安装。

四、制作本地源

选择一台未安装过任何软件的Linux的Minimal版本主机,将下载好的文件放入指定目录下,例如 /local 

执行(createrepo /local)指令,执行完成后,/local目录下会多出一个repodata目录,此目录中文件为本地源的配置数据

五、在目标主机使用本地源

将/local及其目录下的repodata、所有的rpm文件上传至目标主机,比如/yum/local

在目标主机创建文件(/etc/yum.repos.d/local.repo),并键入如下内容

[local]
name=local
baseurl=file:///yum/local/
enabled=1
gpgcheck=0

注意:/local中的目录内容和结构不可变,baseurl=file:///yum/local/ 处指定的路径与你repodata和rpm文件放置路径相关

如此,便完成了离线源的安装。

六、发布你自己的私有源

我们在上面的步骤中创建好的自己的本地源,那么,如何让别人也能使用这个源来安装程序呢?

So easy!

在本机安装WEB服务器,然后将你本地源目录(/yum/local/)作为根目录,发布出去就OK啦

你的/etc/nginx/nginx.conf中的http节中增加如下配置

server
{
    listen 80 default_server;
    root /yum/local;
    autoindex on;
}

对方的repo文件这样配置

[local]
name=local
baseurl=http://你的IP/域名
enabled=1
gpgcheck=0

对方配置完repo文件后,执行代码刷新缓存

yum makecache

之后再安装啥软件直接用yum就可以了。

(注意)服务器目录下的rpm文件增减后,需要在服务器端执行以下命令,更新一下库才能正常在客户机下载rpm包

createrepo --update /yum/local 

常见问题

Error downloading packages:
  keepalived-1.3.5-19.el7.x86_64: failed to retrieve keepalived-1.3.5-19.el7.x86_64.rpm from local
error was [Errno 2] Local file does not exist: /root/pdate/keepalived-1.3.5-19.el7.x86_64.rpm
  lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64: failed to retrieve lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm from local
error was [Errno 2] Local file does not exist: /root/pdate/lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm
  mysql-community-libs-compat-8.0.28-1.el7.x86_64: failed to retrieve mysql-community-libs-compat-8.0.28-1.el7.x86_64.rpm from local
error was [Errno 2] Local file does not exist: /root/pdate/mysql-community-libs-compat-8.0.28-1.el7.x86_64.rpm
  1:net-snmp-libs-5.7.2-49.el7_9.2.x86_64: failed to retrieve net-snmp-libs-5.7.2-49.el7_9.2.x86_64.rpm from local
error was [Errno 2] Local file does not exist: /root/pdate/net-snmp-libs-5.7.2-49.el7_9.2.x86_64.rpm
  1:net-snmp-agent-libs-5.7.2-49.el7_9.2.x86_64: failed to retrieve net-snmp-agent-libs-5.7.2-49.el7_9.2.x86_64.rpm from local
error was [Errno 2] Local file does not exist: /root/pdate/net-snmp-agent-libs-5.7.2-49.el7_9.2.x86_64.rpm

 

客户端使用yum安装中出现上述错误,需要清理客户端缓存

##清理缓存
[root@localhost ~]# yum clean all
已加载插件:fastestmirror
正在清理软件源: net
Cleaning up list of fastest mirrors
Other repos take up 648 k of disk space (use --verbose for details)
##有缓存未清除成功
[root@localhost ~]# yum clean all --verbose
加载 "fastestmirror" 插件
Config time: 0.006
Yum version: 3.4.3
正在清理软件源: net
Operating on /var/cache/yum/x86_64/7 (see CLEAN OPTIONS in yum(8) for details)
Disk usage under /var/cache/yum/*/* after cleanup:
0      enabled repos
0      disabled repos
648 k  untracked repos:
  648 k  /var/cache/yum/x86_64/7/local
4.0 k  other data:
  4.0 k  /var/cache/yum/x86_64/7/timedhosts
652 k  total
##看到有local和timedhosts两个目录未清理,需要手工处理
[root@localhost ~]# rm -rf /var/cache/yum/x86_64/7/local
[root@localhost ~]# rm -rf /var/cache/yum/x86_64/7/timedhosts
##清除缓存后再次查看缓存详情
[root@localhost ~]# yum clean all --verbose
加载 "fastestmirror" 插件
Config time: 0.006
Yum version: 3.4.3
正在清理软件源: net
Operating on /var/cache/yum/x86_64/7 (see CLEAN OPTIONS in yum(8) for details)
Disk usage under /var/cache/yum/*/* after cleanup:
0      enabled repos
0      disabled repos
0      untracked repos
0      other data
0      total
##缓存已经清理完成,再次安装就成功了

 

posted @ 2022-07-12 11:30  Granding  阅读(2677)  评论(0编辑  收藏  举报