安装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
相关推荐
zm2 分钟前
极限复习c++
开发语言·c++
硅基茶水间6 分钟前
「轻量级AI编程桌面软件」代码上下文一键搞定|已开源
python
追风赶月、15 分钟前
【QT】认识QT
开发语言·qt
Hockor35 分钟前
写给前端的 Python 教程三(字符串驻留和小整数池)
前端·后端·python
网安小张38 分钟前
解锁FastAPI与MongoDB聚合管道的性能奥秘
数据库·python·django
GeekAGI38 分钟前
Python 定时器框架
python
自动驾驶小卡1 小时前
ubuntu 常用操作指令(与域控制器交互相关)
linux·ubuntu·操作指令
秋田君1 小时前
深入理解JavaScript设计模式之闭包与高阶函数
开发语言·javascript·设计模式
KENYCHEN奉孝1 小时前
Pandas和Django的示例Demo
python·django·pandas
拾零吖1 小时前
《Pytorch深度学习实践》ch8-多分类
人工智能·pytorch·python