安装fpm,解决*.deb=> *.rpm

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

1. 使用 fpm 工具

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

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

如果你已经有 .deb 包,可以使用 fpm 将其转换为 .rpm 包:

bash 复制代码
fpm -s deb -t rpm -n <package-name> <input-deb-file>.deb

如果没有 .deb 包,直接从源文件打包成 .rpm:

bash 复制代码
fpm -s dir -t rpm -n <package-name> -v <version> -C <source-directory> --prefix /usr/local .

2. 修改现有脚本

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

安装 rpmbuild
bash 复制代码
sudo apt-get install rpm
创建 RPM 目录结构

在你的 home 目录下创建 rpmbuild 所需的目录结构:

bash 复制代码
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
编写 .spec 文件

.spec 文件定义了 RPM 包的基本信息和构建步骤。将以下内容保存为 package.spec 文件:

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 包
bash 复制代码
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 和依赖
bash 复制代码
# 安装依赖
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 版本安装:

bash 复制代码
rbenv install -l  # 查看可用版本
rbenv install 3.2.0  # 例如安装 3.2.0 版本
rbenv global 3.2.0   # 设置为默认版本

确认 Ruby 版本是否已更新:

bash 复制代码
ruby -v

2. 安装 fpm

使用更新后的 Ruby 安装 fpm:

bash 复制代码
gem install --no-document fpm

3. 验证 fpm 安装

安装完成后,验证 fpm 是否安装成功:

bash 复制代码
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;

bash 复制代码
#原因是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
相关推荐
木卫二号Coding1 分钟前
推荐Linux统计文件大小并操作删除工具-ncdu
linux·运维·服务器
李永奉4 分钟前
C语言-指针函数与函数指针及回调函数的使用
c语言·开发语言
小oo呆4 分钟前
【学习心得】迭代器和可迭代对象
开发语言·python
AC赳赳老秦24 分钟前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
钱栈up29 分钟前
mvn compile 卡死在 javac 阶段:一次类型不匹配的排查与修复
java·开发语言
迅猛龙办公室30 分钟前
Python输出当前计算机的系统日期和时间
开发语言·前端·python
杨丰玮4181 小时前
C语言基础知识(一)————各类符号的含义与输入输出库(stdio)
c语言·开发语言
程序猿编码1 小时前
工业视觉多任务方案:可编程梯度信息视觉框架,训练评估 + C++ 部署完整实战
开发语言·c++·视觉·推理引擎
zhangrelay2 小时前
机械臂末端规划智能模型的误区演示
linux·笔记·学习·ubuntu·ros2
XiaoMaqqqq2 小时前
知名的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip