您的位置:首页 > 产品设计 > 产品经理

yum命令和rpm包的制作

2012-03-06 14:34 204 查看
yum插件与rpm包的制作

1.yum 软件包管理器可使用插件扩展其功能。在 Red Hat Enterprise Linux 6 中,许多插件作为 yum-

plugin-* 软件包进行提供。这些插件可用于执行诸如仅下载安全勘误、区分来自不同 yum 存储库中的软件包优先次序以及下载但不安装软件包等操作。

(1)yum-plugin-verify 软件包的目的是在serverX上安装该软件包。允许yum 检查软件包完整性。

[root@demo ~]# yum -y install yum-plugin-verify

(2)yum-plugin-verify 引入了哪些新的 yum 子命令,以及这些命令有什么作用?

yum verify package_name: 是常规验证命令,由于合体或更改的配置文件,将忽略错误匹配。

yum verify-rpm package_name: 与 rpm -V 100% 兼容。

yum verify-all package_name: 列出所有不同之处,包括 rpm 通常会忽略的一些不同之处。

(3)yum-plugin-versionlock 软件包的目的是在列出要锁定到特定版本的软件包。

[root@demo ~]# yum -y install yum-plugin-versionlock

(4)哪个配置文件用于锁定特定软件包?

默认情况下是 /etc/yum/pluginconf.d/versionlock.list

(5)配置文件每行一个软件包和版本:

epoch:name-version-release.arch

2.rpm包的介绍

每个 RPM 软件包由三个基本组件组成:

(1)元数据 – 关于软件包的数据:软件包名称、版本、发布、构建程序、日期、依赖关系等。

(2)文件 – 软件包提供的文件存档(包括文件属性)

(3)脚本 – 安装、更新和 / 或删除软件包时,执行这些脚本

当构建 RPM 软件包时,需要指定软件包的元数据,需要提供存档中的文件以及当需要嵌入或卸载软件包时应运行的脚本。

注意:在内部,文件在软件包文件中存储为 cpio 存档。 Rpm2cpio 命令可用于将其抽取到当前工作目录,

而无需安装软件包: rpm2cpio package-1.2.3-4.el6.x86_64.rpm | cpio -id

(4)研究 RPM 软件包的结构时,以下 rpm 查询有用:

rpm -qd – 列出文档文件( %doc )

rpm -qc – 列出配置文件 (%config)

rpm -q –scripts – 列出 %pre 、 %post 、 %preun 和 %postun 脚本

3.构建rpm包的五个步骤:

(1)比如你编写的一个脚本文件为:vim samreport.sh

#!/bin/bash

if [ $# = 0 ]; then

echo "usage: $0 directories..."

exit

fi

read -p "who is this report for? " user

echo "\$am's Report"

for i in $*

do

if [ ! -d $i ]; then

echo " $i: is not a directory"

elif [ `ls -a $i | wc -l` != 2 ]; then

echo " $i: is not empty"

else

echo " $i: is empty"

fi

done

echo ___generated for ${user}____

(2)你发行的版本号是1.0,那么你需要建立一个目录mkdir samreport-1.0

mv samreport.sh samreport-1.0

tar zcf samreport-1.0.tar.gz samreport-1.0

mv samreport-1.0.tar.gz ~/rpmbuild/SOURCES(倘若你yum install rpmbuild之后仍然看不到在用户主目录下看不到rpmbuild这个目录,那么你需要使用rpmbuild / 即可。)

(3)vim samreport.repo(必须要用vim哦,vi不可以的)

Name: samreport /*软件包名称*/

Version: 1.0 /*软件包的版本号*/

Release: 1%{?dist} /*软件包的发布版本*/

Summary: a test package /*软件的简短说明*/

Group: westos /*软件所属的组*/

License: GPL /*用于软件的许可证的“简短许可证标识符”。*/

URL: http://localhost /*软件的发布路径*/

Source0: %{name}-%{version}.tar.gz /*用于源代码的文件*/

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

BuildRequires: /bin/rm,/bin/mkdir,/bin/cp /*构建此软件包需要满足的要求的列表*/

Requires: /bin/bash,/bin/date /*此软件包所依赖的明确要求的列表*/

%description

testing

%prep

%setup -q

%build /*%build 部分 – 编写项目的 shell 代码*/

echo ok

%install /*部分 – 将文件移至已 chroot 的 $RPM_BUILD_ROOT 环境的代码*/

rm -rf $RPM_BUILD_ROOT

make install DESTDIR=$RPM_BUILD_ROOT

mkdir -p $RPM_BUILD_ROOT/usr/local/bin

cp a.sh $RPM_BUILD_ROOT/usr/local/bin

%clean /*%clean 部分 – 清理构建树*/

rm -rf $RPM_BUILD_ROOT

%files

%defattr(-,root,root,-)

%doc

%attr(0755,root,root)/usr/local/bin/a.sh /*指名文件的所属组和权限*/

%changelog /*%changelog 部分 – 打包程序更改和更新的列表*/

* Tue Mar 12 2012 sushan <997365139@qq.com> -1.0-1

- Initial RPM

- Added /usr/local/bin/a.sh

(4)你编写好文件之后,你cp samreport.repo ~/rpmbuild/SPECS/

cd ~/rpmbuild/SPECS/

rpmbuild -ba samreport.spec(在这里你可以使用rpmbuild -ba --sign samreport.spec一步完成,也可以使用rpmbuild -ba samreport.spec rpmbuild --sign -ba samreport.spec.又或者是此方法先rpmbuild -ba samreport.spec 之后rpm --addsign hello-1.0-1.el6.x86_64.rpm)

cd ../RPMS/x86_64

ll samreport-1.0-1.el6.x86_64.rpm

(5)准备gpg:

gpg --gen-key (准备gpg密钥)

gpg --fingerprint 或 gpg --list-keys(查看你得到的gpg密钥)

[root@desktop2 SPECS]# gpg --list-keys

/root/.gnupg/pubring.gpg

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

pub 2048R/4D7AFD1D 2012-03-05

uid sushanshan (sushantest) <997365139@qq.com>

sub 2048R/31C1168B 2012-03-05

pub 2048R/DEAD1D2F 2012-03-06

uid sushan (sushanshan) <997365139@qq.com>

sub 2048R/33D8BF37 2012-03-06

gpg -a -o ~/RPM-GPG-KEY-root --export DEAD1D2F (-a添加 -o输出到文件 --export导出公钥)

echo "%_gpg_name DEAD1D2F" > ~/.rpmmacros (将内容添加到 ~/.rpmmacros 文件(用系统的密钥 ID 替换该八个字符密钥 ID ),因此, RPM 将用您在上面创建的密钥签署软件包。)

rpm --addsign samreport-1.0-1.el6.x86_64.rpm

(6)发布你产生的rpm包

<1>倘若你在本机发布:

你可以vi test.repo

[base]

name=rhel6

baseurl=file:///root/rpmbuild/RPMS/x86_64

gpgcheck=1

gpgkey=file:///root/RPM_GPG_KEY-root

<2> 倘若你以apached发布在网上(其他的机子可共享安装):

cp ~/rpmbuild/RPMS/x86_64/samreport-1.0-1.el6.x86_64.rpm /var/www/html/sushantest

cd /var/www/html/sushantest

createrepo .

cp /root/RPM_GPG_KEY-root /var/www/html/sushantest

vi test.repo

[base]

name=rhel6

baseurl=http://192.168.0.2/sushantest

gpgcheck=1

gpgkey=http://192.168.0.2/sushantest/RPM_GPG_KEY-root

<3>倘若你以ftp发布在网上(其他的机子可共享安装):

cp ~/rpmbuild/RPMS/x86_64/samreport-1.0-1.el6.x86_64.rpm /var/ftp/pub/sushantest

cd /var/ftp/pub/sushantest

createrepo .

cp /root/RPM_GPG_KEY-root /var/ftp/pub/sushantest

vi test.repo

[base]

name=rhel6

baseurl=ftp://192.168.0.2/pub/sushantest

gpgcheck=1

gpgkey=ftp://192.168.0.2/pub/RPM_GPG_KEY-root

(7) 这样之后你就可以通过命令yum install samreport -y 安装喽!!!
本文出自 “资料小结” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: