安装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 <[email protected]> - <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
相关推荐
榆榆欸1 分钟前
4.Socket类、InetAddr类、Epoll类实现模块化
linux·c++·tcp/ip
..过云雨9 分钟前
11. 【C++】模板进阶(函数模板特化、类模板全特化和偏特化、模板的分离编译)
开发语言·c++
橘猫云计算机设计17 分钟前
基于django优秀少儿图书推荐网(源码+lw+部署文档+讲解),源码可白嫖!
java·spring boot·后端·python·小程序·django·毕业设计
互联网杂货铺24 分钟前
如何用Postman实现自动化测试?
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
予安灵31 分钟前
一文详细讲解Python(详细版一篇学会Python基础和网络安全)
开发语言·python
Lizhihao_39 分钟前
JAVA-堆 和 堆排序
java·开发语言
极客先躯44 分钟前
高级java每日一道面试题-2025年3月21日-微服务篇[Nacos篇]-什么是Nacos?
java·开发语言·微服务
冷月半明1 小时前
Python项目打包指南:PyInstaller与SeleniumWire的兼容性挑战及解决方案
python·selenium
冷月半明1 小时前
《Pandas 性能优化:向量化操作 vs. Swifter 加速,谁才是大数据处理的救星?》
python·数据分析·pandas
try again!1 小时前
rollup.js 和 webpack
开发语言·javascript·webpack