`
aoingl
  • 浏览: 85662 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

创建自己的 Yum repository

阅读更多

  Fedora 下采用 Yum 管理 RPM 之间的依赖, 同时可以从 Repositories 端解析到合适的 RPM 依赖包,使得我们安装软件非常的方便。 很多 Linux 下的软件发布都会考虑发布一个 Yum 的 repo 文件, 让用户更加方便的安装。 本文先介绍客户机如何使用第三方的 repo 文件, 最后介绍下如何创建自己的 yum repository。

 

使用第三方的 repo 文件

 我们以 virtualbox 为例, Oracle 为 virtualbox 发布提供了 repo 文件, 地址在:

http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo

 

首先,我们切换到 root 用户:

[lgao@lgao ~]$ su -
Password: 

 然后, 到 /etc/yum.repos.d/ 目录下, virtualbox.repo 文件 downlod 下来:

[root@lgao ~]# cd /etc/yum.repos.d/
[root@lgao yum.repos.d]# wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
--2012-06-26 15:03:13--  http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
Resolving download.virtualbox.org... 137.254.16.69
Connecting to download.virtualbox.org|137.254.16.69|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 238 [text/plain]
Saving to: “virtualbox.repo”

100%[==============================================================>] 238         --.-K/s   in 0s      

2012-06-26 15:03:14 (17.7 MB/s) - “virtualbox.repo” saved [238/238]

 之后, 我们可以采用 yum install VirtualBox 了:

 从上面的输出我们看到, 这个 VirtualBox-4.1 的来源 Repository 是: virtualbox。 我们来细看下 virtualbox.repo 文件内容:

 

[root@lgao yum.repos.d]# cat virtualbox.repo 
[virtualbox]
name=Fedora $releasever - $basearch - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/fedora/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc

 

其中:

  • [virtualbox]   为 repository 名称, 表明接下来的数据是针对这个 repository 的, 类似 ini 文件。 一个 repo 文件里可以有多个 [XXX],且全局唯一。
  • name=Fedora $releasever - $basearch - VirtualBox  该 repository 的 summary,全局唯一。 $releasever $basearch 是 yum 的变量, 具体含义请参考 man。 (command:  man 5 yum.conf)
  • baseurl=XXX   从哪里获取 pacakges 列表和 rpm 文件。
  • enabled=1   表示此 repo 启用了。
  • gpgcheck=1  表示需要检查 gpg 签名
  • gpgkey=XXX  用来检查 gpg 签名的 key 文件

创建自己的 Yum repository

  我们已经知道了如何使用第三方的 repo, 那么怎么创建自己的 yum repository 呢。我们从上一篇博客 中知道了如何创建一个 RPM 包, 我们就用这个 RPM 来演示下如何创建自己的 yum repository。

 

   第一步, 选定 yum repository 的 base 地址

 

 

[lgao@lgao ~]$ mkdir -p yum_repo/Packages

 

   我们选定 ~/yum_repo 作为 base 地址, 然后在里面创建一个 Packages 文件夹(可选,且文件夹名称随意)。

 

  第二步,  copy helloworld RPM 到 Packages 目录:

 

[lgao@lgao ~]$ tree yum_repo/
yum_repo/
`-- Packages
    `-- helloworld-1.0.0-1.fc16.i386.rpm

   这就是我们的目录结构。当然也可以简单的将 rpm 文件放在 ~/yum_repo 目录下。

 

  第三步,到 ~/yum_repo 目录下, 运行 createrepo 命令创建 yum repository:

[lgao@lgao ~]$ cd yum_repo/
[lgao@lgao yum_repo]$ createrepo .
Spawning worker 0 with 1 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
 

到这里为止, 我们的 yum repository 就创建好了。  如果你的机器里没有  createrepo 命令, 那么请使用:

[lgao@lgao yum_repo]$ sudo yum install createrepo

 来安装。

 

第四步, 创建 helloworld.repo 文件:

[helloworld]
name=Hello World
baseurl=file:///home/lgao/yum_repo
enabled=1
gpgcheck=0

 

  把 hello.repo 文件放在 /etc/yum.repos.d/ 下, 运行:

 

我们运行下 helloworld :

[root@lgao yum.repos.d]# helloworld 
Hello World!

 

 

接下来我们看看如何在 yum repository 里升级 helloworld。

 

生成 helloworld-1.0.1-1.fc16.i386.rpm, 放进 ~/yum_repo/Packages 目录下, 删除 helloworld-1.0.0-1.fc16.i386.rpm, 重新执行 createrepo 命令:

[lgao@lgao yum_repo]$ createrepo .
Spawning worker 0 with 1 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

 

然后执行:

[root@lgao yum.repos.d]# yum clean all
Loaded plugins: langpacks, presto, refresh-packagekit
Cleaning repos: helloworld:virtualbox
Cleaning up Everything
No delta-package files removed by presto

 之后, 再次运行

yum install helloworld

 系统会提示有新版本 helloworld,将进行 update。

 

之后我们再次运行 helloworld:

[root@lgao yum.repos.d]# helloworld 
Hello World in New Version!

 我们发现 helloworld 已经更新了。

 

 

 通过发布一个 repo 文件来发布一套软件让软件安装更加方便,同时也避免了最终用户安装时找不到依赖的问题。 希望越来越多的软件发布采用更加人性化的技术。

  • 大小: 23.8 KB
  • 大小: 19.7 KB
分享到:
评论

相关推荐

    Linux操作系统下使用yum升级的方法

    yum是yellowdog updater modified的缩写。...repository是用yum-arch或者createrepo命令创建的,也可以用别人已有的 repository作为镜像,文中探讨了如何建立一个 repository,介绍了yum的基本操作。

    CentOS 7安装MySQL的详细步骤

    在 CentOS7 中我们在安装 MySQL 的话会默认安装的是 MariaDB。它是一个在 MySQL 被收购之后,作者推出的应一个开源版本。...使用上边的命令我们就下载到了 Yum Repository,之后我们就可以使用 yum 来进行安装了。​

    yum-repo:Wise2C Breeze项目的Yum存储库组件

    repo:v1.21.0在需要安装docker/k8s/ceph/nfs的其它主机上:创建一个文件 wise2c.repo 并将其拷贝至 /etc/yum.repos.d/###############################################[wise2c]name=wise2cbaseurl=enabled=1...

    CentOS 7下mysql 5.7 安装教程

    1、下载并安装MySQL官方的Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 在当前目录下会生成rpm文件 2、使用yum安装 yum -y install mysql57-community-...

    详解CentOS8更换yum源后出现同步仓库缓存失败的问题

    问题起因:一开始CentOS 8默认的yum源是能够正常使用的,但使用如下命令安装了Development Tools之后: yum groupinstall -y Development Tools 不知道为啥就开始出现同步仓库缓存失败的问题,无法正常安装一些工具...

    centos7 用rpm安装mysql详解

     首先打开mysql管网,找到“yum repository”打开页面或者直接打开如下链接 http://dev.mysql.com/downloads/repo/yum/ ,找到自己需要的,点击download,下载rpm文件,在centos中下载完成house可以用软件管理器...

    CentOS7.7中安装MySQL5.7教程(超详细)

    在CentOS中,执行sudo yum install ...打开官网,进入DOWNLOADS页面,往下拉,找到MySQL Community(GPL) Downloads,点击MySQL Yum Repository,选择第一个RPM包下载即可。 下载好后将文件上传到系统中,或者直接执

    Linux安装mongodb客户端

    1.创建源 sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 ...

    Yum-food:使用“测试驱动开发”方法和MERN堆栈构建的在线食品订购应用程序

    另外,使用cloudinary和任何mongodb提供程序创建一个帐户,然后将所需的凭据添加到通过以下命令创建的.env文件中。 # Clone this repository $ git clone https://github.com/chyke007/Yum-food.git # Go into the...

    linux下svn安装及使用

    本文主要讲解centos6.9版本下的svn的安装与使用! # 使用yum安装 1检查已安装版本:rpm -qa ...在根目录(可以是任意目录)下建立一个名为svn的仓库(repository)。 创建成功后在svn文件夹中包含了conf、db、format、

    Docker-repo:Docker文件

    更新软件包yum update -y 2,安装docker yum install docker -y在CentOS服务器上安装Docker参考URL: ://docs.docker.com/install/linux/docker-ce/centos/#install-using-the-repository前提条件1.安装所需的软件包...

    PHP创建自己的Composer包方法

    仓库(Repository) 仓库是软件开发中常见的概念,与源(sources)意义相近,主要指托管资源的场所。许多软件都有仓库的概念,例如yum、npm、maven、Git,以及本文的主角Composer。仓库以中心化的方式托管资源,为...

    Linux下安装SVN服务端的方法步骤

    我们在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下面,创建成功后在svn下面多了几个文件夹。 [root@localhost /]# cd /home [root@localhost home]# mkdir svn [root@localhost home]# ...

    nexus-3.41.0-01-unix.tar.gz.zip

    官网下载的OSS版:nexus-3.41.0-01-unix.tar.gz nexus 是一个仓库管理器,除了最常用创建maven仓库的功能外,他还可以搭建docker仓库yum源仓库npm pip ruby仓库等等 Nexus Repository OSS

    pdo-mongo-cache:用于在 mongo 数据库中缓存查询结果的 PDO 装饰器

    创建以下文件作为/etc/yum.repos.d/MongoDB.repo [mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ gpgcheck=0 enabled=1 从 yum 安装 yum install -y ...

    HUB_workshop_deno

    要参加此研讨会,您首先需要仓库来创建自己的存储库。 完成后,您可以克隆它并开始按照README文件中的说明进行操作。 安装 天野 转到并按照说明进行操作 MongoDB的 Macs Windows RedHat Ubuntu Debian SUSE Amazone ...

    workshop

    要参加此研讨会,您首先需要仓库来创建自己的存储库。 完成后,您可以克隆它并开始按照README文件中的说明进行操作。 安装 天野 转到并按照说明进行操作 MongoDB的 Macs Windows RedHat Ubuntu Debian SUSE Amazone ...

    CentOS 6.4创建Mongodb副本集

    MongoDB是一个开源的non-SQL数据库引擎。 MongoDB是可扩展的,是标准关系数据库管理系统(RDBMS)的替代品。 副本集可以使在节点发生故障时还能提供对您的数据的访问。 ...name=MongoDB Repository

    nginx-rpm:Nginx的自定义rpm构建器

    要添加非官方的nginx yum存储库,请创建一个名为/etc/yum.repos.d/shogo82148.repo的文件。 # shogo82148-rpm - packages by shogo82148 [shogo82148-rpm] name =shogo82148-rpm baseurl =...

    PharTools:一个强大PHP-CLI工具,用于管理phar(PHP-Archive)文件-开源

    它允许创建,提取,转换,编辑和查看phar档案。 它还包括一个简单的API,可在您自己的脚本上实现PharTools功能。 不要直接运行此脚本。 而是从cmd.exe或从Linux Terminal实例运行它。如果在Windows目录(例如...

Global site tag (gtag.js) - Google Analytics