(附下载地址)制作RPM包(星际译王词典包)
RPM的全称是redhat packege manager,也就是红帽开发的能实现自动安装软件的管理器,刚开始的时候,玩linux的人装个软件都是通过源码安装的,自从RPM这个工具问世之后,极大的简化了软件的安装,卸载之类的问题,给linux带来力革命性的发展。
今天闲来无事,练习一下打RPM吧,目标是把几个星际译王的词典文件打成RPM包。
我们先在系统上装一个打包的软件
yum -y install rpm-build
安装完这个软件包之后,你会发现在/usr/src/下多了一个redhat的目录。
由于打包的时候涉及到测试的环节,如果使用root用户进行测试的话,容易对系统造成伤害,所以我们要新建一个用户,在这里,我用xiaosu这个用户来打包。
切换到xiaosu这个用户,把/usr/src/redhat这个目录拷贝到xiaosu的home目录。
在/home/xiaosu/redhat目录下,有BUILD、RPMS 、SOURCES 、 SPECS 、SRPMS五个目录,其中,BUILD目录通常作为打包过程中临时文件的存放目录,RPMS存放打包完成之后的rpm包,SOURCES用于存放用于打包的原始文件,通常都是压缩文件。SPECS目录存放的是打包的配置文件,该文件需要以.spec结尾。SRPM目录用于存放打包之后的srpm文件,这个文件里面包含了很多的文件,我们可以用这个文件来重建我们打包的环境。
我们先把要打包的朗道英汉词典文件stardict-langdao-ec-gb-2.4.2.tar.gz拷贝到/home/xiaosu/redhat/SOURCES目录下。
然后在/home/xiaosu/redhat/SPEC目录下新建一个文件stardict-langdao-ec-gb.spec,这个文件就是打包的配置文件,rpm-build这个程序就是根据这个配置文件进行打包的各种操作的。
我们在写配置文件之前,先设置一下打包的环境变量:
echo "%_topdir /home/xiaosu/redhat" >> ~/.rpmmacros
这个命令就把打包的目录设置在了xiaosu的home目录下的redhat
我们现在开始写配置文件,vim ~/redhat/SPEC/stardict-langdao-ec-gb.spec
敲入如下内容:
NAME: stardict-langdao-ec-gb
Version: 2.4.2
Release: 1
Summary: a stardict dictionary file collected by suzezhi and copyright by its author
Group: Applications/File
License: GPL
Source: stardict-langdao-ec-gb-2.4.2.tar.gz
PreReq: stardict
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}
BuildArch: noarch
%description
stardict-langdao-ec-gb is a English-Chinese dictionary for learning english on linux,its right is reserved by its author,dictionary file is collected by suzezhi
%prep
%setup -q
%clean
其中的NAME指定这个包的名字,这个名字就是我们使用rpm -qi查看包的信息的时候的要使用的名字
Version指定主版本号,Release指定次版本号
Summary这栏简单的填写一些软件的介绍
Group用于制定这个包所属的分类,这个分类一定要在系统中存在,可以用less /usr/share/doc/rpm-版本/GROUPS 查看系统中都存在哪些分类
License制定版权信息
Source用于制定要打包的源文件
PreReq用于指定这个包的依赖关系,因为这个包里装的是星际译王的词典文件,所以安装这个包必须要装星际译王,我们就在这里指定了stardict
Buildroot用于指定打包时的临时目录
BuildArch用于指定安装这个包的CPU的架构,比如i386或者x86_64之类的,因为我们装的是词典文件,跟架构无关,所以我们在这里填写noarch
%description这栏就是填写这个包的描述
%prep 这栏填写的是准备,也就是解压原始文件,一般这栏不需要填什么
%setup -q 制定静默安装,不输出信息。
%clean 清除临时文件,以免编译的时候出问题 (这个可以省略,呵呵)
我们现在检查一下上面的写法有没有问题,我们先测试一下。(对于打包来说,分步测试是一个好习惯)
rpmbuild -bp stardict-langdao-ec-gb.spec
输出如下:
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.534
+ umask 022
+ cd /home/xiaosu/redhat/BUILD
+ cd /home/xiaosu/redhat/BUILD
+ rm -rf stardict-langdao-ec-gb-2.4.2
+ /usr/bin/gzip -dc /home/xiaosu/redhat/SOURCES/stardict-langdao-ec-gb-2.4.2.tar.gz
+ tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd stardict-langdao-ec-gb-2.4.2
++ /usr/bin/id -u
+ '[' 501 = 0 ']'
++ /usr/bin/id -u
+ '[' 501 = 0 ']'
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
正常推出,说明我们写的没什么问题
我们添加剩下的内容:
%install
mkdir -p $RPM_BUILD_ROOT/usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2
install langdao-ec-gb.dict.dz $RPM_BUILD_ROOT/usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2
install langdao-ec-gb.idx $RPM_BUILD_ROOT/usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2
install langdao-ec-gb.idx.oft $RPM_BUILD_ROOT/usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2
install langdao-ec-gb.ifo $RPM_BUILD_ROOT/usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2
%files
%defattr(-,root,root,-)
/usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.dict.dz
/usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.idx
/usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.idx.oft
/usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.ifo
%postun
rm -rf /usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2
%install这一栏是要告诉rpmbuild我们需要把解压出来的哪些文件组成一个目录树,然后安装的时候,就按照这个目录树把相应的文件拷贝到相应的位置。
首先要创建 /usr/share/stardict/dic/stardict-langdao-ec-gb-2.4.2这个目录,
因为星际译王默认是去/usr/share/stardict/dic这个目录去查找词典文件目录。
后面这四个文件就是跟词典相应的文件。
%files这栏就定义了把哪些包放到什么地方,
%defattr定义了文件属主和属组
%postun指定了卸载之后要执行的指令,我在这里定义了把哪个词典目录直接删除掉
我们最后把这个包给打出来:
rpmbuild -ba stardict-langdao-ec-gb.spec
输出的最后部分是:
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.49859
+ umask 022
+ cd /home/xiaosu/redhat/BUILD
+ cd stardict-langdao-ec-gb-2.4.2
+ exit 0
最后正常退出,我们会发现系统的/home/xiaosu/redhat/RPMS/noarch目录下会多了一个stardict-langdao-ec-gb-2.4.2-1.noarch.rpm的文件。
我们切回到root用户,尝试安装这个包
[root@station1 Desktop]# rpm -ivh stardict-oxford-gb-2.4.2-1.noarch.rpm
error: Failed dependencies:
stardict is needed by stardict-oxford-gb-2.4.2-1.noarch
[root@station1 Desktop]#
可以看到我们设置的PreReq生效了,我们先把stardict给装上,然后再装这个包,成功了,现在可以用词典查词了
朗道汉英词典 http://down.51cto.com/data/196197
朗道英汉词典 http://down.51cto.com/data/196196
牛津词典 http://down.51cto.com/data/196199
二十一世纪双向词典 http://down.51cto.com/data/196201
二十一世纪双语科技词典 http://down.51cto.com/data/196202
转载于:https://blog.51cto.com/xiaosu/557394
(附下载地址)制作RPM包(星际译王词典包)相关推荐
- Ubuntu系统安装stardict(星际译王)词典
直接命令行 sudo apt-get install stardict 安装完毕 启动方法: 1.命令行输入stardict回车 2.高速启动器----搜索stardict直接点击启动. 下载词库: ...
- ubuntu 安装星际译王词典
为什么80%的码农都做不了架构师?>>> 打开终端,输入命令 sudo apt-get install stardict 卸载 打开终端,输入命令 sudo apt-get ...
- Ubuntu下安装星际译王
相信很多朋友跟我一样,看源码的时候离不开一本字典,但在Ubuntu下可用的字典寥寥无几,而且仅有的星际译王也是很久没有更新了,不过有总比没有好,装个星际译王将就着吧~奋斗吧!程序猿们~ 一.在终端中( ...
- 【Linux】ubuntu下词典软件Goldendict介绍(可屏幕取词)和StarDict(星际译王)的安装...
转载自:http://emuch.net/html/201012/2730970.html GoldenDict 是一款不错的.与 StarDict(星际译王)类似的词典软件.它使用 WebKit 作 ...
- 【Linux】ubuntu下词典软件Goldendict介绍(可屏幕取词)和StarDict(星际译王)的安装
转载自:http://emuch.net/html/201012/2730970.html GoldenDict 是一款不错的.与 StarDict(星际译王)类似的词典软件.它使用 WebKit 作 ...
- linux 星际译王,Linux桌面词典 星际译王(StarDict)
星际译王(StarDict)是利用GTK(GIMP TOOLKIT)开发的国际化的.跨平台的自由的桌面字典软件.它并不包含字典档,使用者须自行下载配合使用.它可以运行于多种不同的平台,如Linux, ...
- RHEL6.2手动封装rpm源码包安装星际译王
星际译王(StarDict)是利用GTK(GIMP TOOLKIT)开发的国际化的.跨平台的自由的桌面字典软件.自身并不包含字典,须自行下载配合使用.它可以运行于多种不同的平台,如 Linux.Win ...
- iBatis for Net 代码生成器(CodeHelper)附下载地址(已经升级为V 1.1)
CodeHelper是一款可以自己定义模板和生成内容的代码生成器,目前只支持MsSql数据库,这款代码生成器的初衷也只是为了生成MyBatis.net框架的配置文件而写的一个轻量级的代码生成器. Co ...
- BAT等大厂已开源的70个实用工具盘点(附下载地址)
前面的一篇文章<微软.谷歌.亚马逊.Facebook等硅谷大厂91个开源软件盘点(附下载地址)>列举了国外8个互联网公司(包括微软.Google.亚马逊.IBM.Facebook.Twit ...
最新文章
- Gradle for Android 第三篇( 依赖管理 )
- Openstack安装过程中出现的一些问题及解决
- 脑洞一下 | 产品经理是如何用一张小票推算店面房租的?
- 试卷批分pascal程序
- 【译】SQL Server误区30日谈-Day8-有关对索引进行在线操作的误区
- 数学--数论--康托展开与逆康托展开
- html图片宽度高度等比例绽放,css图片自动绽放大小,左右,上下居中
- 如何在JavaScript中克隆数组
- jmeter压力测试_用Jmeter实现对接口的压力测试
- 真正好的东西,就会脱颖而出
- 峰情万种_Enhancement of Peak Visual
- HttpClient ip直连域名问题那些事
- autojs遍历当前页面所有控件_解放双手,手机自动化神器AutoJS的使用
- 从高考落榜生到网络专家
- [视频相关2]网址解析接口
- 免费下载微软原厂Win11镜像ISO文件
- epub文件一揽子解决方案
- 赣网杯2021 CTF---MiscWebCrypto部分Writeup
- MySQL原理与实践(二):一条update语句引出MySQL日志系统
- Android系统中固件崩溃后使用uevent机制重新加载固件 流程分析
热门文章
- ACM图灵奖获得者:想从大数据中获益,先解决集成问题!
- 推荐一些软件,平时工作中可能会用到【不断更新】
- 【转】WCF OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout
- JAVA正则表达式高级用法(分组与捕获)
- 微软宣布.NET Native预览版
- ASP.NET 2.0编程技巧之用Response对象输出图像
- 检索出现次数的SQL语句
- 别的设计师比你又快又好,是因为你不知道他们在用介个!
- 【Java集合源码剖析】Java集合框架
- mysql修复坏表的方法