安装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 版本,所以我们可以通过 rbenvrvm 来安装较新版本的 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
相关推荐
mr_LuoWei200910 小时前
python工具:python代码知识库笔记
数据库·python
weixin_3954489110 小时前
cursor日志
人工智能·python·机器学习
踢足球092910 小时前
寒假打卡:2026-2-7
java·开发语言·javascript
石去皿10 小时前
【嵌入式就业10】Linux内核深度解析:从启动流程到驱动框架的工业级实践
linux·运维·服务器
954L10 小时前
CentOs7执行yum update出现链接404问题
linux·centos·yum·vault
Trouvaille ~10 小时前
【Linux】应用层协议设计实战(二):Jsoncpp序列化与完整实现
linux·运维·服务器·网络·c++·json·应用层
天天爱吃肉821810 小时前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车
EmbedLinX10 小时前
嵌入式之协议解析
linux·网络·c++·笔记·学习
vortex511 小时前
解密UUOC:Shell编程中“无用的cat使用”详解
linux·shell编程
薛定谔的猫喵喵11 小时前
基于PyQt5的视频答题竞赛系统设计与实现
开发语言·qt·音视频