制作离线yum源

—-在工作中,有时会遇到在无互联网的服务器上安装软件的情景,虽然可以用系统的镜像盘挂载,配置个本地yum源,但是一些系统镜像中带的软件包都是很老的了,有时难以满足我们的需求,今天就跟大家分享一下制作离线yum源的方法,可以针对某个软件包单独制作哦!

互联网机上操作

1. 安装所需依赖环境和软件包

1.1 命令安装:

[root@wanwan ~]# yum install yum-utils  createrepo 

1.2 各软件包功能

createrepo:生成yum源各软件之间的依赖索引

yum-utils:安装后可使用 yumdownloader 命令下载所需软件包

2. 全量本地离线yum源

以下操作须在已连接互联网的机器上操作:

2.1 查看已配置好的网络源的ID

[root@wanwan ~]# yum repolist

2.2 按照源ID将网络源拉取到本地

[root@wanwan ~]# reposync -r base -p /root/ownyum

2.2.1 reposync其他参数

  -h, --help            显示此帮助消息并退出
  -c CONFIG, --config=CONFIG
                        要使用的配置文件(默认为/etc/yum.conf)
  -a ARCH, --arch=ARCH  像运行指定的arch一样(默认值:current
                        arch,注意:不会覆盖$ releasever。 x86_64是一个
                        i * 86的超集。)
  --source              在源包上运行
  -r REPOID, --repoid=REPOID
                        指定repo id来查询,可以指定多个次(默认全部启用)
  -e CACHEDIR, --cachedir=CACHEDIR 用于存储元数据的目录
  -t, --tempcache       使用临时目录存储/访问yum-cache
  -d, --delete          删除存储库中不再存在的本地包
  -p DESTDIR, --download_path=DESTDIR 下载包的路径:默认为当前目录
  --norepopath          不要将reponame添加到下载路径。只可以
                        在同步单个存储库时使用(默认为
                        添加reponame)
  -g, --gpgcheck        删除未通过GPG签名检查的软件包
  -u, --urls            只列出要下载的URL,不要下载
  -n, --newest-only     仅下载per-repo的最新软件包
  -q, --quiet           尽可能少地输出
  -l, --plugins         启用yum插件支持
  -m, --downloadcomps   下载comps.xml
  --download-metadata   下载所有非默认元数据
  --allow-path-traversal  允许存储在其repo目录之外的包,同步(UNSAFE,小心使用!)

2.2.2 打包压缩源文件

将拉取下来的源文件夹压缩,方便传输减少带宽消耗。

[root@wanwan ~]# tar -zcvf ownyum.tar.gz  ownyum/

3 测试

3.1 停用原有yum源

将原有yum源文件备份

[root@wanwan ~]# mkdir /etc/yum.repos.d/backup/
[root@wanwan ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/backup/

3.2 创建新yum源

[root@wanwan ~]# cat > /etc/yum.repos.d/test.repo << EOF
> [centos-base]
> name=centos-base
> baseurl=file:///root/base
> gpgcheck=0
> enabled=1
> EOF

3.3 生成本地yum源缓存

将本地同步下来的源文件生成缓存数据库文件

[root@wanwan ~]# createrepo /root/ownyum/base/

执行后会在/root/ownyum/base文件夹中生成一个叫repodata的文件,很重要!它包含各软件包之间的依赖关系、版本信息等。

3.3. createrepo其他参数

-u  --baseurl <url>
    指定Base URL的地址
-o --outputdir <url>
    指定元数据的输出位置
-x --excludes <packages>
    指定在形成元数据时需要排除的包
-i --pkglist <filename>
    指定一个文件,该文件内的包信息将被包含在即将生成的元数据中,格式为每个包信息独占一行,不含通配符、正则,以及范围表达式。
-n --includepkg
    通过命令行指定要纳入本地库中的包信息,需要提供URL或本地路径。
-q --quiet
    安静模式执行操作,不输出任何信息。
-g --groupfile <groupfile>
    指定本地软件仓库的组划分,范例如下:
createrepo -g comps.xml /path/to/rpms
    注意:组文件需要和rpm包放置于同一路径下。
-v --verbose
    输出详细信息。
-c --cachedir <path>
    指定一个目录,用作存放软件仓库中软件包的校验和信息。
    当createrepo在未发生明显改变的相同仓库文件上持续多次运行时,指定cachedir会明显提高其性能。
--update
    如果元数据已经存在,且软件仓库中只有部分软件发生了改变或增减,
    则可用update参数直接对原有元数据进行升级,效率比重新分析rpm包依赖并生成新的元数据要高很多。
-p --pretty
    以整洁的格式输出xml文件。
-d --database
    该选项指定使用SQLite来存储生成的元数据,默认项。

3.4 查看离线源是否可以正常使用

清空缓存,查看是否可以正常加载源文件

[root@wanwan base]# yum clean all
[root@wanwan base]# yum repolist 

成功!

3. 特定软件包yum源制作

上一种方法制作全量的yum离线源,虽然非常的实用,可以自由安装所有软件包,但是把整个源全部都拉下来是在是太大了,当时仅仅拉取了centos自带的源就有10多个G,加上epel和docker等其他源,有个20多30个G不是问题。所以在大部分情况下不是很适用。

所以我们可以选择制作专门一个多多个软件包的小源,简单小巧,利于传输。

这里以docker举例,制作一个docker离线源

3.1 安装需要的工具包

yum install yum-utils  createrepo

安装完成后会出现“yumdownloader” “createrepo” 两个命令

3.2 创建一个存放软件包和依赖环境的目录

mkdir docker 

3.3 拉取rpm包和依赖环境

利用 yumdownloader 命令可以解决软件安装时的依赖关系,并且用参数可以将其所有都下载下来(并不安装到本地)

命令参数:

yumdownloader --resolve --destdir=./ docker
#              解决依赖  指定存放目录

执行后会发现docker所有的软件包和依赖环境都被下载下来了

3.4 生成repodata索引文件

在有网络的主机上生成一个repodata索引文件,可以使得在单机机器上方便的使用yum安装软件,而不需要自己去解决依赖关系。

命令:(选择下载好依赖关系和软件包的目录)

createrepo docker/

生成完毕。

docker文件夹下会生成一个repodata文件夹

无网络机器上操作

1. 打包传输使用

直接将docker目录打包,传输到无法连接互联网的机器上;

tar -zcvf docker-yum.tar.gz docker/

解压后在离线机器上配置yum源

  1. 备份原有yum源
mkdir /etc/yum.repos.d/backup && mv /etc/yum.repos.d/* /etc/yum.repos.d/backup
  1. 配置新yum源
cat <<EOF>> /etc/yum.repos.d/docker.repo
> [centos-docker]
> name=dokcer-ce
> baseurl=file:///root/docker
> gpgcheck=0
> enabled=1
> EOF
  1. 保存退出,验证。
yum repolist

可正常加载,成功!

赞(1) 打赏
未经允许不得转载:万万没想到 » 制作离线yum源

评论 抢沙发

评论前必须登录!

立即登录   注册

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

登录

找回密码

注册