在Linux下通过rpm打包发布Java程序
这个东西涉及的内容较多,根据下面这些文章慢慢学习
一个简单的例子
http://blog.csdn.net/king_on/article/details/7169384
按照文章中的步骤来,打包之后,使用rpm进行安装,在终端输入hello,终端会输出一些信息
此处先摘抄上述作者的文章,后期会结合使用过程进行修改,打包过程如下:
步骤一:准备工作
(1)rpm打包需要特定的目录,创建该目录的命令如下:
mkdir -pv ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
(2)接下来需要对rpm进行配置,命令如下:
echo ~/rpmbuild > ~/.rpmmacros
该命令将"~/rpmbuild"作为rpm打包目录
步骤二:准备程序源代码文件以及spec文件
(1)新建程序源代码文件(文件名为:hello.c)
#include <stdio.h>
int main()
{
printf("Hello, World!\n");
return ;
}
(2)新建.spec文件(文件名为:hello.spec)
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
# 不明白这样定义啥意思
Summary: hello world rpm package
Name: hello
Version: 0.1
Release: 1
Source: hello-0.1.tar.gz
License: GPL
Packager: wangdonglei
Group: Application
%description
This is a simple example for rpm package!
%prep
%setup -q
%build
gcc -o hello hello.c
%install
mkdir -p %{buildroot}/usr/local/bin
install -m 755 hello %{buildroot}/usr/local/bin/hello
%files
# 这里的路径是在buildroot虚拟根基础上的,即%{buildroot}/%{name}-%{version}-%{release}-root/usr/local/bin/hello
/usr/local/bin/hello
(3)通过下面的命令将程序源代码文件以及.spec文件放入相应位置
# 将hello.c放入目录hello-0.1并打包该目录
tar zcvf hello-0.1.tar.gz hello-0.1
# 将hello-0.1.tar.gz 放入SOURCES下
mv hello-0.1.tar.gz /root/rpmbuild/SOURCES
(4)打包
rpm -ba rpmbuild/SPECS/hello.spec
执行打包命令后,系统运行hello.spec文件的内容,最终生成两个文件,一个包含源码的rpm包和一个二进制rpm包。
rpmbuild/SRPMS/hello-0.1-1.src.rpm
rpmbuild/RPMS/i386/hello-0.1-1.i386.rpm
这个案例虽然是针对C/C++的,但是打包java程序的思路是一样
【未完待续】
============此处贴一些当时看过的相关文章,后面有时间了我再整理当时自己的实现过程===========
一些命令
http://www.worldhello.net/2011/04/02/2405.html
上文提供了一些命令来查看系统默认的打包目录,介绍了如何自定义打包目录等 ,通过这篇文章,对rpm打包的理解会更深入一些
rpm简单介绍
http://blog.chinaunix.net/uid-7530389-id-2050100.html
%install部分使用的是绝对路径,而%file部分使用则是相对路径,虽然其描述的是同一个地方
系统中的一些信息
/usr/lib/rpm/marcros,通过cat命令查看
简单介绍
http://blog.sina.com.cn/s/blog_5d867af101019b7i.html
明白可通过不同方式构建rpm包,目前只关注从spec文档建包
rpmbuild命令的基本格式:rpmbuild [options] [spec文档|tarball包|源码包]
RPM的一些用法:
查询功能:
1、对系统中已经安装的软件查询:rpm -q softwarename
2、查询系统中已安装的包:rpm -qa [softwarename]
3、查询已安装软件包都安装到何处:rpm -ql softwarename
安装,删除 rpm -ivh softwarename.rpm rpm -e softwarename
其余更多的用法参照man rpm
更多rpm相关命令
http://blog.csdn.net/taiyang1987912/article/details/40145101
在Linux下通过rpm打包发布Java程序的更多相关文章
- 如何在linux下安装jdk并运行java程序
一.进入root 大家可以看到我这里用的是CentOS 6.5 系统 二.测试网络与YUM是否可用 1.测试网络 ping www.baidu.com,如下图就是通了 参考: 一.JDK安装1.lin ...
- Linux 下报错:A Java RunTime Environment (JRE) or Java Development Kit (JDK) must解决方案
一.报错环境:在Linux mint下,前几天还用得很好的的eclipse,今天开机不知为什么这样. Linux 下报错:A Java RunTime Environment (JRE) or Jav ...
- Linux下安装rpm出现error: Failed dependencies
在Linux下安装rpm包时经常会遇到下面这个问题: error: Failed dependencies: xxxxxxxxxxxxxxxxxxxxxx 遇到此问题时可以在安装rpm包命令的后面加两 ...
- Linux下文件的打包、解压缩指令——tar,gzip,bzip2,unzip,rar
本文是笔者对鸟叔的Linux私房菜(基础学习篇) 第三版(中文网站)中关于 Linux 环境下打包和解压缩指令的内容以及日常操作过程中所接触的相关指令的总结和记录,以供备忘和分享.更多详细信息可直接参 ...
- Linux下文件的打包、解压缩指令——tar,gzip,bzip2
本文是对 鸟叔的Linux私房菜(基础学习篇) 第三版 的学习笔记,原文可参考原书中文网站 鸟叔的Linux私房菜.更多详细信息可直接参考对应Linux命令的 man 帮助( 如 man tar). ...
- Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img.
Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img. 2014年10月20日 ⁄ 计算机视觉 ⁄ 共 1 ...
- linux下文件的打包和压缩
文章来源:linux下文件的打包和压缩 目录 一.文件压缩的原理 二.linux常见的压缩指令 三.常用实例 1.tar命令 2.zip命令 3.gz命令 4.bz2命令 5.xz命令(必须分两步) ...
- 在Linux下下载RPM包
在Linux下下载RPM包,但是不安装 在工作中经常会遇到离线安装RPM包的情况,下面是下载RPM包的方法 # 使用yum下载RPM包 yum -y install --downloadonly &l ...
- Linux下使用Eclipse开发Hadoop应用程序
在前面一篇文章中介绍了如果在完全分布式的环境下搭建Hadoop0.20.2,现在就再利用这个环境完成开发. 首先用hadoop这个用户登录linux系统(hadoop用户在前面一篇文章中创建的),然后 ...
随机推荐
- Uva 10217 概率
题意: 假设一年有n天, 有一些人排队买票,会有一个人中奖,这个人是,他的生日和前面的某一个人相同: 求最佳整数位置,和最佳实数位置: 分析: 第一个人获奖的概率(他和售票员的生日相同): 1/N 第 ...
- on-session问题
.D:\0kecheng\bos\bosv2.0_chapter03.无条件查询. 方法1.@JSON(serialize=false)是注解排除不需要加载的实体类上,找到它的get方法,解决no-s ...
- ProjectServer如何创建时间表
默认配置的ProjectServer是没有时间表的,任务汇报的时候不能汇报工时,只能汇报任务的百分比. 但如果有企业一定要用工时来汇报的话,我们就需要开启时间表. 点击服务器设置-->时间报告阶 ...
- oracle https://localhost:1158/em 无法打开
解决办法一: 首先查看本机Oracle安装路径中 portlist.ini 文件里面的端口号是多少,例如我的就是5500. 那么在浏览器中输入的地址就是:https://localhost:5500/ ...
- C++ push方法与push_back方法
[转载他人的文章,下午在搞c++,谢谢共享] [摘要] push与push_back是STL中常见的方法,都是向数据结构中添加元素.初识STL,对于添加元素的方法以产生混淆,这里暂对两种方法作出比较分 ...
- ABAP术语-Interface Parameter
Interface Parameter 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/26/1081800.html Parameter t ...
- LeetCode 翻转链表
基本思路 从元首节点之后每次取一个节点,并将节点接到元首节点前面 代码实现 /** * Definition for singly-linked list. * struct ListNode { * ...
- win10家庭版升级为win10专业版
windows10 升级钥匙: DR9VN-GF3CR-RCWT2-H7TR8-82QGT 亲测可用
- Keepalived搭建主从架构、主主架构实例
实例拓扑图: DR1和DR2部署Keepalived和lvs作主从架构或主主架构,RS1和RS2部署nginx搭建web站点. 注意:各节点的时间需要同步(ntpdate ntp1.aliyun.co ...
- Apache Maven(四):依赖
依赖管理是Maven的特性之一,它是用户最为熟悉的特性之一,也是Maven擅长的领域之一.管理单个项目的依赖并没有太大困难,但是当您开始处理由数十或数百个模块组成的多模块项目和应用程序时,Maven可 ...