使用createrepo   创建自己的yum源

为什么要使用rpm来管理软件包?相比使用shell脚本,从源码编译安装的方式,排除规模引出的效率因素不讲,脚本的可维护性比起rpm要糟糕一些,当然使用rpm就需要深入了解rpmbuild以及spec文档,似乎也并不简单。但从长远来看,rpm、yum源的可维护性,要比“脚本”可靠一些。在本文中,花开分享了创建yum源的操作步骤,用于管理系统上“定制”的软件包。

创建yum源需要一个ftp或者http服务,鉴于ftp烦人的防火墙策略(防火墙配制不当,ftp的模式——主动/初动使用不当,服务会变得不可用),建议使用http服务。

一,

1. 管理yum源需要一个工具createrepo

可使用yum安装:

yum -y install createrepo

1. 规划、创建yum源目录。

这里我们使用http服务模式的,故我已安装有web服务.

我在 http://192.168.0.157/  跟目录下创建一个yum 目录,用来保存yum源数据。

观察官方yum源的目录规划,像是yum并不能自己维护arch,即并不能自己区分i386还是x86_64,所以是单独放在不同的目录下。

因为我们的服务器都是64位的,故只创建一个x64的目录。

我维护的是基于CentOS Linux 7的包,规划目录如下:

mkdir -p /opt/htdocs/yum/centos/7/x86_64

2. 初始化repodata信息:

createrepo -p -d -o /opt/htdocs/yum/centos/7/x86_64 /opt/htdocs/yum/centos/7/x86_64

( 这里注意 /opt/htdocs/yum/centos/7/x86_64 需要填写2次,已空格隔开,否则会报Error: Must specify a directory to index. )

初始化成功后,会在/opt/htdocs/yum/centos/7/x86_64目录下,分别看到一个repodata目录,这个就是yum源的Meta数据,有了这个,yum就可以和这个“源”进行“数据信息”了。

3. 配置本地的yum,使之使用自建的yum源。

简单的来说,就是在本地的/etc/yum.repos.d目录下新建一个配置文件文件(也可配置语句添加到已经存在文件中),以.repo为文件名后缀,比如jicki.repo,然后内容大概如下:

-------------------------------------------------------------------

[jicki-yum]

name=jicki-yum

baseurl=http://192.168.0.157/yum/centos/$releasever/$basearch/

enabled=1

gpgcheck=0

gpgkey=

-------------------------------------------------------------------

解释:

[....] 代表这个库的名字,必须是唯一的,不可以重复。

name= 是这个库的说明,没有太大的实际意义,只是一个字段说明。

baseurl= 说明采取什么方式传输,具体路径在哪里,可以使用的方式有,file://,ftp://,http://等,关于baseurl中的变量,可以查看yum.conf 的手册:man yum.conf ,在手册的最后一段有详细描述。

enabled=1 说明启用这个更新库,0表示不启用。

gpgcheck=1 表示使用gpg文件来检查软件包的签名

gpgkey= 表示gpg文件所存放的位置,此处也可以有http方式的位置。

这时,当我们yum repolist 时,就可以看到jicki-yum 源了。

二,制作RPM包:

1. 首先检查 制作RPM包所需软件, 并安装

rpm -qa|grep gcc

rpm -qa|grep rpm-build

yum install -y rpm-build

centos7 下的rpm 包制作源码锁在目录为/root/rpmbuild  如果不存在,随意对文件执行rpmbuild nginx-1.7.9.tar.gz ,既可生成。

/root/rpmbuild  目录结构如下:

BUILD      -> 编译位置(忽略)

BUILDROOT  -> 编译位置(忽略)

RPMS       ->生成的二进制rpm存放位置

SOURCES    ->存放源码,补丁文件

SPECS      ->存放编译方案*.spec规则文件

SRPMS      ->生成rpm源码包(src.rpm)存放位置

2. 拷贝源码到SOURCES 目录下

这里将nginx-1.7.9.tar.gz 拷贝过去

cp nginx-1.7.9.tar.gz /root/rpmbuild/SOURCES/

tree

.

├── BUILD

├── BUILDROOT

├── RPMS

├── SOURCES

│   └── nginx-1.7.9.tar.gz

├── SPECS

└── SRPMS

生成spec 规则文件

进入SPECS 目录 创建一个nginx-1.7.9的spec文件

* 这里必须使用 VIM 编译工具才会自动生成spec 模版文件

vim nginx-1.7.9.spec

spec文件说明 spec文件中各部分意思简单解释如下:

---------------------------------------------------------------------------------------------------------------------------

Name:                 //软件名称,如nginx,后面可使用%{name}的方式引用

Version:              //软件版本号,仅当软件较以前有较大改变时才增加版本号。如1.7.9

Release:1%{?dist}     //软件发布序列号,标明第几次打包。若软件较以前改变较小,则仅增加发布序列号,而不改变版本号

Summary:              //概要,对软件简单的描述

Group:                //软件包所属类别,具体类别参看rpm的帮助文件     /usr/share/doc/rpm-4.8.0/GROUPS,所有软件必须属于其中一种类型。

License:              //许可类型,如:GPL(自由软件),commercial(商业),Share(共享),GNU等

URL:                  //软件下载地址(可以省略)

Source0:              //源码名称

BuildRoot: %(mktemp-ud%{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

//该参数非常重要,因为在生成rpm的过程中,执行make install时就会把软件安装到上述的路径中,在打包的时候,同样依赖“虚拟目录”为“根目录”进行操作。后面可使用$RPM_BUILD_ROOT方式引用。

BuildRequires:        //软件依赖关系描述(可以省略)

Requires:             //该rpm包所依赖的软件包名称

%description          //对软件的详细描述,可以写多行

%prep                 //这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备。

%setup -q             //提取源码到BUILD目录;-q指不显示输出(quietly)

%build                //本段是建立段,所执行的命令为生成软件包服务,相当于./configure和make %configure make%{?_smp_mflags}

%install              //这一节主要用于完成实际安装软件必须执行的命令,这一节一般是由makeinstall指令构成,但是有时也会包含cp、mv、install等指令

rm -rf $RPM_BUILD_ROOT makeinstall DESTDIR=$RPM_BUILD_ROOT

%clean                //这一节所描述的内容表示在完成包建立的工作之后,自动执行此节  下的脚本进行附加的清除工作,这一节的内容通常简单地使用rm -rf  $RPM_BUILD_ROOT命令,不需要指定此节的其它内容

rm-rf $RPM_BUILD_ROOT

%files                //这一节指定构成包的文件的列表,它是使用节前缀%files表示的。 此外,它还包含一系列宏控制安装后的文件属性和配置信息。,分为三类--说明文档(doc),配置文件(config)及执行程序,也根据提示编写。%files下列出应该捆绑到RPM中的文件,并能够可选地设置许可权和其它信息

%defattr(-,root,root,-)//指定包装文件的属性,分别是(mode,owner,group),-表示默认值, 对文本文件是0644,可执行文件是0755 %doc

%changelog             //本段是修改日志段。你可以将软件的每次修改记录到这里,保存到发 布的软件包中

-------------------------------------------------------------------------------------------

--------------------------------

时间: 2024-10-19 04:12:39

使用createrepo   创建自己的yum源的相关文章

使用createrepo自定义yum源

自制yum源有时也很有必要的,比如为了自定义自己的软件,为了安全,或者为了高大上! 下面是基本思路,后面附有实验步骤,其核心是你选择的rpm的用途和质量 1,准备所有必需rpm包,上传到yum服务器/var/www/html/cdn/x86_64目录下 2,使用createrepo创建自己的yum源 yum -y install createrepo createrepo -u -o -d /var/www/html/cdn/ 3,客户端设置cdn.repo源 [cdn] name=cdnrep

在CentOS 7.3中创建本地yum源

1.挂载系统光盘 1.1创建挂载文件 [[email protected] ~]# mkdir /mnt/cdrom                          #创建文件 1.2挂载光驱 [[email protected] ~]# mount /dev/cdrom /mnt/cdrom/              #挂载光驱  mount: /dev/sr0 is write-protected, mounting read-only      #挂载成功 [[email protec

在Centos6.5中配置国内网络yum源以及本地yum源

一.本地yum     1.       创建目录.挂载光盘以及安装createrepo [[email protected] ~]# mkdir/mnt/cdrom                  ←用于挂载光盘 [[email protected] ~]# mkdir-vp /yum/localrepo    ←用于存放光盘中的rpm包 mkdir: 已创建目录 "/yum" mkdir: 已创建目录 "/yum/localrepo" [[email prot

yum源配置

配置本地yum源 #iptables -F   <--关闭防火墙 #setenforce    <--关闭SELINUX #mount -o loop -t iso9660 /dev/cdrom /media  <--挂载光盘 #vim /etc/yum.repos.d /local/  <--创建配置文件 [base]   <--仓库配置段名 name=Centos 6.5 local repo <--详细名字 baseurl=file:///media   <

Linux运维学习之 —— 搭建本地yum源

yum是RPM的前端工具,通过yum命令可以帮我们自动解决安装rpm包之间的依赖关系.下面是搭建本地yum仓库的步骤: 1.挂载光盘(光盘为CentOS-6.5-x86_64-bin-DVD2.iso)     mount /dev/cdrom1 /media ls一下/media这个目录,可以看到以下内容 2.创建本地文件夹,将Packages下的rpm包全部拷贝到本地文件夹     mount /dev/cdrom1 /media/     cp -r /media/Packages/* /

centos 7本地yum源配置

环境: centos 7 配置repo文件 [[email protected] yum.repos.d]# cat base.repo [server] name=server baseurl=file:///openyum/ gpgcheck=0 将本地yum包放到要创建的本地yum源的路径中 tar zxf  openstack.tar.gz -C /openyum/1/ tar zxf  cinder.tar.gz -C /openyum/2/ 安装createrepo yum -y i

搭建本地 yum 源 离线安装 Docker 1.12.6

使用 yum 安装 docker ,需要访问互联网.有时内网环境的机器也需要安装docker.直接使用rpm 包安装需要解决各种各样的依赖,搭建本地yum 源是一个很好解决问题的方法. centos yum 命令 提供了一种只下载不安装的命令 . yum  --downloadonly   ,  --downloaddir=DLDIR  ,下面是构建的详细步骤 环境准备 选择一台可以连接外网的服务器.保证可以相应的软件安装包 下载docker 软件 mkdir -p /opt/docker/do

内网环境上部署k8s+docker集群:集群ftp的yum源配置

接触docker已经有一年了,想把做的时候的一些知识分享给大家. 因为公司机房是内网环境无法连接外网,所以这里所有的部署都是基于内网环境进行的. 首先,需要通过ftp服务制作本地的yum源,可以从http://mirrors.163.com/centos/ 上找到对应版本的centos系统,下载该系统的base和extra包到本地. 将下载完成的文件放到服务器的/var/ftp/pub/media/x86_64目录下./var/ftp为ftp服务器的根目录.这里请谨记,ftp一般在系统安装的时候

在Rethat上安装Centos的yum源

首先因为Rethat的yum源要去订阅(当然是需要钱的),所以许多朋友都是以Centos的yum源来代替(Centos是开源的) 安转: 1:卸载原有Rethat的yum源 #rpm -aq|grep yum|xargs rpm -e --nodeps 2:下载需要的rpm包(Centos的yum安装包) #Wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.29-73.el6.centos.noarch.rpm #Wg