通常,如果我们想分发应用程序和库,则我们需要将其打包。
软件包包含已经编译的和直接运行的软件。通常这些包还会包含其他的一些关于包的一些文档信息。
我们用包管理工具去实现共享和分发,所以,通常我们也会用这个包管理工具去进行打包。例如,用RPM去打包rpm,用RubyGems去打包ruby的包。无论用那个包管理工具去进行打包,都要求我们必须满足其打包条件。
包管理工具
RubyGems是针对Ruby默认的包管理工具,无论是打包,下载,查找还是分发,我们都离不开它。
说到打包,则RubyGems提供给开发者非常标准化的结构去打包我们的应用为Gems。
一个Gem包就是一个Ruby应用程序,其包含库和代码的一系列依赖等。
包结构
一个Gem包包含不同的组件。每一个组件都有其特定的位置。
组件清单为:
- 程序代码
- 测试代码
- 依赖表述
- 二进制文件
- 相关文档
- 包信息
则实际结构如下:
lib: 为代码所放位置。Rakefile:用rake去build库。.gemspec文件,包含这个包的所有关键信息,例如名字,版本,目录等。
准备必备工具
安装Ruby和bundler 可参考以下文件:
-
CentOS / Rhel:
How To Install Ruby 2.1.0 On CentOS 6.5 Using RVM -
Ubuntu / Debian:
How To Install Ruby 2.1.0 On Ubuntu 13 With RVM
准备包结构
我们有很多种方法去开始打包一个Gem包。其中一个非常流行的方法就是使用Bundler(基于ruby的用来管理ruby项目的环境和依赖管理的工具)。这个工具可以用来快速建立Gem分发目录来开启我们的打包的过程。
bundle gem say_hello
这个指令会在say_hello目录下生成所有必须的目录,如下
[wlin@wlin my_first_gem]$ ls -al
total 56
drwxrwxr-x. 6 wlin wlin 4096 Se