要从生成 .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
sudo apt-get install rpm
创建 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 版本是否已更新:
ruby -v
2. 安装 fpm
使用更新后的 Ruby 安装 fpm
:
gem install --no-document fpm
3. 验证 fpm
安装
安装完成后,验证 fpm
是否安装成功:
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;
#原因是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