科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道给RPM打包的软件加补丁

给RPM打包的软件加补丁

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

RPM 是一种广泛用于发布 Linux 软件的工具; 用户可以轻松地安装用 RPM 打包的产品。在本文中,Dan 说明了在不具备 root 权限的情况下如何对软件进行打包以及如何分发您的工作结果。

作者:51CTO.COM 2007年10月18日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

 未更改的软件

  从这三个目录的父目录中用类似于以下的命令生成补丁文件: diff -uNr indent-2.2.6 indent-2.2.6-my >indent-2.2.6.patch

  注意,使用 diff时运用了选项 -uNr。 -u以 统一格式创建补丁文件,这种格式比缺省格式更紧凑些。 -N确保补丁文件将正确地处理已经创建或删除文件的情况。 -r比较命令行上所给出的两个目录的所有子目录中的所有文件。

  另外还要注意:只要您完全按上述来做,这些目录名是无关紧要的。 补丁文件中将有这些目录名,但我们将通知补丁程序忽略它们。

  现在,检查一下补丁文件 indent-2.2.6.patch。下面是我的示例:

  清单 1. indent-2.2.6.patch

  

  diff -uNr indent-2.2.6/indent.c indent-2.2.6-my/indent.c

  --- indent-2.2.6/indent.cThu Nov 16 22:01:04 2000

  +++ indent-2.2.6-my/indent.cWed Sep 26 14:33:11 2001

  @@ -1864,6 +1864,8 @@

  int using_stdin = false;

  enum exit_values exit_status;

  + printf("Hello from Dan

  ");

  +

  #ifdef _WIN32

  /* wildcard expansion of commandline arguments, see wildexp.c */

  extern void wildexp (int *argc, char ***argv);

  有时候,您会注意到 diff检查出了您无意要做的更改。 这时,您可能需要回过去,清除您的代码并再次生成补丁,直到获得一个干净的、令您满意的补丁文件为止。

  一旦按您所希望的那种方式完成补丁之后,最好添加注释以说明您所做的更改。 在不损害任何内容的情况下,在补丁文件的开始处或结束处添加文本。

  清单 2. 带注释的 indent-2.2.6.patch

  

  Dan Poirier - 2001-09-26 - added a friendly greeting as indent starts.

  This is just an example.

  diff -uNr indent-2.2.6/indent.c indent-2.2.6-my/indent.c

  --- indent-2.2.6/indent.cThu Nov 16 22:01:04 2000

  +++ indent-2.2.6-my/indent.cWed Sep 26 14:33:11 2001

  @@ -1864,6 +1864,8 @@

  int using_stdin = false;

  enum exit_values exit_status;

  + printf("Hello from Dan

  ");

  +

  #ifdef _WIN32

  /* wildcard expansion of commandline arguments, see wildexp.c */

  extern void wildexp (int *argc, char ***argv);

  第 3 步. 将该补丁添加到 RPM spec 文件中

  现在,该让 RPM 使用您的补丁了。将该补丁文件复制到您的 SOURCES 目录(如果您遵循了先前的建议,则或许是 ~/rpm/SOURCES),然后对 spec 文件做下列更改:

  清单 3. indent-3.spec:使用 indent-2.2.6.patch

  

  Summary: GNU indent

  Name: indent

  Version: 2.2.6

  Release: 3

  Source0: %{name}-%{version}.tar.gz

  Patch0: %{name}-2.2.6.patch

  License: GPL

  Group: Development/Tools

  BuildRoot: %{_builddir}/%{name}-root

  %description

  The GNU indent program reformats C code to any of a variety of

  formatting standards, or you can define your own.

  %prep

  %setup -q

  %patch -p1

  %build

  ./configure

  make

  %install

  rm -rf $RPM_BUILD_ROOT

  make DESTDIR=$RPM_BUILD_ROOT install

  %clean

  rm -rf $RPM_BUILD_ROOT

  %files

  %defattr(-,root,root)

  /usr/local/bin/indent

  %doc /usr/local/info/indent.info

  %doc %attr(0444,root,root) /usr/local/man/man1/indent.1

  %doc COPYING AUTHORS README NEWS

  

 

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章