安装fpm,办理*.deb=> *.rpm

打印 上一主题 下一主题

主题 614|帖子 614|积分 1842

要从生成 .deb 包转换为 .rpm 包,可以按照以下步调修改打包脚本


1. 使用 fpm 工具

fpm 是一个强大的跨平台打包工具,可以将 .deb 包重新打包成 .rpm,也可以直接从源文件打包成 .rpm。
安装 fpm

  1. sudo apt-get install ruby-dev
  2. sudo gem install --no-document fpm
复制代码
生成 .rpm 包

如果你已经有 .deb 包,可以使用 fpm 将其转换为 .rpm 包:
  1. fpm -s deb -t rpm -n <package-name> <input-deb-file>.deb
复制代码
如果没有 .deb 包,直接从源文件打包成 .rpm:
  1. fpm -s dir -t rpm -n <package-name> -v <version> -C <source-directory> --prefix /usr/local .
复制代码
2. 修改现有脚本

如果当前脚本使用 dpkg-deb 打包 .deb 包,你可以改用 rpmbuild 来生成 .rpm 包。以下是使用 rpmbuild 的步调:
安装 rpmbuild

  1. sudo apt-get install rpm
复制代码
创建 RPM 目次结构

在你的 home 目次下创建 rpmbuild 所需的目次结构:
  1. mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
复制代码
编写 .spec 文件

.spec 文件定义了 RPM 包的根本信息和构建步调。将以下内容保存为 package.spec 文件:
  1. Name:       <package-name>
  2. Version:    <version>
  3. Release:    1%{?dist}
  4. Summary:    <description>
  5. License:    <license>
  6. Source:     <source.tar.gz>
  7. %description
  8. <package-description>
  9. %prep
  10. %setup -q
  11. %build
  12. # 编译指令,若无需编译可忽略
  13. %install
  14. rm -rf $RPM_BUILD_ROOT
  15. mkdir -p $RPM_BUILD_ROOT/usr/local/bin
  16. cp -a * $RPM_BUILD_ROOT/usr/local/bin/
  17. %files
  18. /usr/local/bin/*
  19. %changelog
  20. * Thu Oct 31 2024 Your Name <your.email@example.com> - <version>
  21. - Initial package.
复制代码
构建 RPM 包

  1. rpmbuild -bb package.spec
复制代码
构建完成后,生成的 RPM 文件会在 ~/rpmbuild/RPMS 目次下。
安装ruby

在 CentOS 上遇到 dotenv 需要 Ruby 3.0 或更高版本的问题时,可以通过安装更新的 Ruby 版本来办理。下面是升级 Ruby 并成功安装 fpm 的方法:
1. 安装更新的 Ruby 版本

CentOS 默认的软件库中可能没有最新的 Ruby 版本,所以我们可以通过 rbenv 或 rvm 来安装较新版本的 Ruby。下面的步调使用 rbenv。
安装 rbenv 和依靠

  1. # 安装依赖
  2. sudo yum install -y git gcc bzip2 openssl-devel readline-devel zlib-devel
  3. # 安装 rbenv
  4. git clone https://github.com/rbenv/rbenv.git ~/.rbenv
  5. echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
  6. echo 'eval "$(rbenv init -)"' >> ~/.bashrc
  7. source ~/.bashrc
  8. # 安装 ruby-build 插件
  9. git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
复制代码
安装 Ruby 3.x 版本

检查可用的 Ruby 版本,然后选择一个 3.x 版本安装:
  1. rbenv install -l  # 查看可用版本
  2. rbenv install 3.2.0  # 例如安装 3.2.0 版本
  3. rbenv global 3.2.0   # 设置为默认版本
复制代码
确认 Ruby 版本是否已更新:
  1. ruby -v
复制代码
2. 安装 fpm

使用更新后的 Ruby 安装 fpm:
  1. gem install --no-document fpm
复制代码
3. 验证 fpm 安装

安装完成后,验证 fpm 是否安装成功:
  1. fpm --version
复制代码
如许,你应该可以正常使用 fpm 来生成 .rpm 包。
安装ruby 失败 办理方案

   In file included from vm_core.h:
83:0,
from iseq.h:14,
from mini_builtin.c:3,
from miniinit.c:51:
thread_pthread.h:108:43: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘struct’
RUBY_EXTERN RB_THREAD_LOCAL_SPECIFIER struct rb_execution_context_struct *ruby_current_ec;
^
In file included from iseq.h:14:0,
from mini_builtin.c:3,
from miniinit.c:51:
vm_core.h: 在函数‘rb_current_execution_context’中:
vm_core.h:1880:34: 错误:‘ruby_current_ec’未声明(在此函数内第一次使用)
rb_execution_context_t *ec = ruby_current_ec;
  1. #原因是centos 7 gcc版本较低,安装ruby前需要先安装如下:
  2. yum install centos-release-scl-rh -y
  3. yum install llvm-toolset-7-clang -y
  4. yum install centos-release-scl -y
  5. scl enable devtoolset-7 bash
  6. # 原文链接:https://blog.csdn.net/ssxzui/article/details/132796184
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表