YumServer - larry-nomad/rpmbuild GitHub Wiki
YumServer
搜索、安装、升级、删除软件包
sudo yum search q-yumtools
sudo yum install q-yumtools
sudo yum update q-yumtools
sudo yum remove q-yumtools
上传、删除、分支转移
sudo yum install q-yumtools -y
yumtools upload nagios-plugins-openmanage-3.7.6-1.el6.x86_64.rpm
yumtools setbranch nagios-plugins-openmanage-3.7.6-1.el6.x86_64.rpm test stable
yumtools remove nagios-plugins-openmanage-3.7.6-1.el6.x86_64.rpm test
管理策略
软件命名/分类策略 我们定制软件包分为应用软件RPM和应用产品RPM,应用软件RPM是指Python, PostgresSQL, Nginx, PHP, MySQL, ImageMagick, netperf, 这样的应用软件和工具,应用产品RPM是指将应用产品程序封装成RPM的应用产品。
为了避免和RedHat系统原生软件包发生混淆我们对定制软件包和ISO发行原生软件包进行隔离,隔离的依据是软件包的命名和组分类。
我们定制软件包的命名使用q-python27, q-postgresql, q-php这样的命名空间,RPM会有一个Group的必填META信息字段,RedHat/CentOS的Group会是Applications/Productivity,Development/Languages,Development/Debuggers这样的命名空间,我们采用Qunar/Database, Qunar/Networking, Qunar/Applications/Internet, Qunar/Ops/Platform, Qunar/Production/Flight, Qunar/Production/Hotel这样的空间命名Group, 应用产品RPM的Group以Qunar/Production作为前缀。
软件存放目录策略 应用软件RPM和应用产品RPM文件所放置根目录为/home/q/
比如q-python27的目录结构为
tree /home/q/python27/ -d -L 1
/home/q/python27/
├── bin
├── include
├── lib
└── share
输出的日志和数据应选择在/opt /export下。
权限控制策略 使用login/ldap帐号名称进行验证上传,密码为ldap密码,上传后的文件属主为上传用户及其用户组,应用软件RPM的管理仅对Ops和获得授权的工程师开放权限,应用产品RPM则对所有工程师开放上传管理权限,管理会依据Group命名进行权限细分。
场景举例:
Qunar/Production/Flight为机票产品的分组,已被授权的用户yi.luo, ying.guo可对组名为Qunar/Production/Flight的应用产品RPM进行上传、转移分支、删除操作,而其他未授权工程师不可上传、转移、删除以Qunar/Production/Flight为组名前缀的软件包
软件流向图
服务器维护信息(系统维护人员阅读) 目录划分
├── CentOS
│ ├── 5
│ │ └── {x86_64}
│ └── 6
│ └── {x86_64}
└── Qunar
├── beta
│ ├── 5
│ │ ├── noarch
│ │ └── x86_64
│ └── 6
│ ├── noarch
│ └── x86_64
├── prod
│ ├── 5
│ │ ├── noarch
│ │ └── x86_64
│ └── 6
│ ├── noarch
│ └── x86_64
├── stable
│ ├── 5
│ │ ├── noarch
│ │ └── x86_64
│ └── 6
│ ├── noarch
│ └── x86_64
└── test
├── 5
│ ├── noarch
│ └── x86_64
└── 6
├── noarch
└── x86_64
说明: CentOS目录存放CentOS ISO上的原有RPM软件包,按Release主版本分5和6,update小版本不单独划分目录,如6u1升级至6u2将直接采用6u2目录作为6系列的RPM软件源,我们的操作系统都是64位,所以只有一个x86_64目录 Qunar目录存放我们定制封装的软件包,根据软件分类、使用环境和软件架构的不同分为相应的子目录。 每一个软件包会以其名称建立相应分支、架构下的一个目录,存放其不同版本号的RPM文件。
q-python27
├── q-python27-2.7.1-1.el6.x86_64.rpm
├── q-python27-2.7.2-1.el6.x86_64.rpm
└── q-python27-2.7.3-1.el6.x86_64.rpm