要从生成 .deb 包转换为 .rpm 包,可以按照以下步调修改打包脚本
1. 使用 fpm 工具
fpm 是一个强大的跨平台打包工具,可以将 .deb 包重新打包成 .rpm,也可以直接从源文件打包成 .rpm。
安装 fpm
- sudo apt-get install ruby-dev
- sudo gem install --no-document fpm
复制代码 生成 .rpm 包
如果你已经有 .deb 包,可以使用 fpm 将其转换为 .rpm 包:
- fpm -s deb -t rpm -n <package-name> <input-deb-file>.deb
复制代码 如果没有 .deb 包,直接从源文件打包成 .rpm:
- fpm -s dir -t rpm -n <package-name> -v <version> -C <source-directory> --prefix /usr/local .
复制代码 2. 修改现有脚本
如果当前脚本使用 dpkg-deb 打包 .deb 包,你可以改用 rpmbuild 来生成 .rpm 包。以下是使用 rpmbuild 的步调:
安装 rpmbuild
创建 RPM 目次结构
在你的 home 目次下创建 rpmbuild 所需的目次结构:
- mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
复制代码 编写 .spec 文件
.spec 文件定义了 RPM 包的根本信息和构建步调。将以下内容保存为 package.spec 文件:
- Name: <package-name>
- Version: <version>
- Release: 1%{?dist}
- Summary: <description>
- License: <license>
- Source: <source.tar.gz>
- %description
- <package-description>
- %prep
- %setup -q
- %build
- # 编译指令,若无需编译可忽略
- %install
- rm -rf $RPM_BUILD_ROOT
- mkdir -p $RPM_BUILD_ROOT/usr/local/bin
- cp -a * $RPM_BUILD_ROOT/usr/local/bin/
- %files
- /usr/local/bin/*
- %changelog
- * Thu Oct 31 2024 Your Name <your.email@example.com> - <version>
- - Initial package.
复制代码 构建 RPM 包
- 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 和依靠
- # 安装依赖
- sudo yum install -y git gcc bzip2 openssl-devel readline-devel zlib-devel
- # 安装 rbenv
- git clone https://github.com/rbenv/rbenv.git ~/.rbenv
- echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
- echo 'eval "$(rbenv init -)"' >> ~/.bashrc
- source ~/.bashrc
- # 安装 ruby-build 插件
- git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
复制代码 安装 Ruby 3.x 版本
检查可用的 Ruby 版本,然后选择一个 3.x 版本安装:
- rbenv install -l # 查看可用版本
- rbenv install 3.2.0 # 例如安装 3.2.0 版本
- rbenv global 3.2.0 # 设置为默认版本
复制代码 确认 Ruby 版本是否已更新:
2. 安装 fpm
使用更新后的 Ruby 安装 fpm:
- gem install --no-document fpm
复制代码 3. 验证 fpm 安装
安装完成后,验证 fpm 是否安装成功:
如许,你应该可以正常使用 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;
- #原因是centos 7 gcc版本较低,安装ruby前需要先安装如下:
- yum install centos-release-scl-rh -y
- yum install llvm-toolset-7-clang -y
- yum install centos-release-scl -y
- scl enable devtoolset-7 bash
- # 原文链接:https://blog.csdn.net/ssxzui/article/details/132796184
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |