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

要从生成 .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 版本,所以我们可以通过 rbenvrvm 来安装较新版本的 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 -yyum install llvm-toolset-7-clang -yyum install centos-release-scl -yscl enable devtoolset-7 bash# 原文链接:https://blog.csdn.net/ssxzui/article/details/132796184

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/58959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【stm32】RTC时钟的介绍与使用

RTC时钟的介绍与使用 一、时间戳1、Unix时间戳2、UTC/GMT3、时间戳转换 二、BKP简介及代码编写1、BKP简介2、BKP基本结构3、BKP库函数介绍&#xff1a;4、程序编写&#xff1a; 三、RTC简介及代码编写1、RTC简介2、RTC框图2、RTC基本结构3、RTC相关库函数介绍&#xff1a;4、程…

深入理解Transformer中的位置编码

1 位置编码的作用 由于注意力的作用机制&#xff0c;不论输入序列的顺序如何&#xff0c;输出结果都是一样的。 也就是丢失了位置信息。 但是对于语言模型&#xff0c; 我们都知道顺序是很重要的&#xff0c; 所以需要对输入序列额外注入位置信息。 2 位置编码方式 Transfor…

C#-数组:一维数组、二维数组、交错数组

数组&#xff1a;声明初始化过后&#xff0c;就不能在原有的基础上进行 添加 或者 删除 了 一&#xff1a;一维数组 一般将一维数组简称为数组 1.1 数组的声明 int[] arr1; 没有分配房间。初始化后就分配房间了int[] arr2 new int[5]; 存在默认值&#xff0c;为0int[] arr3…

ADB指定进程名称kill进程

adb shell ps | grep <process_name> | awk {print $2} | xargs adb shell killadb shell ps&#xff1a;列出所有正在运行的进程。grep <process_name>&#xff1a;筛选出包含指定进程名称的行。awk ‘{print $2}’&#xff1a;提取输出中的第二列&#xff08;通常…

使用PostgreSQL进行高效数据管理

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用PostgreSQL进行高效数据管理 PostgreSQL简介 安装PostgreSQL 在Ubuntu上安装PostgreSQL 在CentOS上安装PostgreSQL 在macOS上…

利用人工智能提升内容生产效率与质量的策略与前景

引言 随着数字时代信息的爆炸式增长&#xff0c;内容生产变得前所未有的重要。无论是媒体、广告、教育&#xff0c;还是社交平台&#xff0c;优质内容的需求量都在持续攀升。然而&#xff0c;提升内容生产的效率和质量一直以来都是一项挑战。人工智能&#xff08;AI&#xff0…

3.3 windows,ReactOS系统中页面的换出----1

系列文章目录 文章目录 系列文章目录3.3 页面的换出MiBalancerThread()MmTrimUserMemory&#xff08;&#xff09;MmPageOutVirtualMemory&#xff08;&#xff09; 3.3 页面的换出 在前一节中我们看到&#xff0c;如果有映射的页面已经被倒换到磁盘上即倒换文件中&#xff0c…

Git - 两种方式撤销已提交到远端仓库的记录并删除提交记录

文章目录 命令行方式附 命令行方式 确定要撤销的提交记录 首先&#xff0c;使用以下命令查看提交历史&#xff1a; git log找到想撤销的提交记录的哈希值&#xff08;SHA&#xff09; &#xff0c;比如9c9c98d6f7f28c41d971f8efd51ed31f9720792c 撤销提交记录 根据需求选择以下…

vscode markdown-image 图片粘贴自动上传到本地目录设置

.vscode/settings.json文件内容 {"markdown-image.base.fileNameFormat": "${hash}-${YY}${MM}${DD}-${HH}${mm}${ss}","markdown-image.local.path": "./images","markdown-image.base.uploadMethod": "Local",…

Linux入门-基础指令和权限

1.压缩打包 1.1压缩是什么 压缩是通过特定的算法&#xff0c;使文件减小体积&#xff0c;从而达到节省空间的目的。 1.2.为什么要压缩 a.压缩将文件大小减小&#xff0c;在本地可能不太明显&#xff0c;但是在网络传输中&#xff0c;减小了网络传输的成本。 b.将多个文件压…

HTML字符实体详解

HTML 字符实体是在 HTML 文档中用来表示特定字符的特殊编码。这些字符可能因为直接输入而引发解析错误,或某些字符在 HTML 中具有特殊含义(例如,< 和 > 用于标签)。因此,使用字符实体可以确保文本的准确呈现。 1. 什么是字符实体? 字符实体由一个 & 符号开始,…

大数据新视界 -- 大数据大厂之 Impala 性能优化:解锁大数据分析的速度密码(上)(1/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

docker pull 拉取镜像失败,使用Docker离线包

1、登录并注册Github&#xff0c;然后在Github中搜索并打开“wukongdaily/DockerTarBuilder” 项目&#xff0c;在该项目主页点击“Fork”。 然后点 “Create Fork”&#xff0c;将项目创建到自己的Github主页。 2、接着在自己创建过来的这个项目中点击“Actions” 3、然后…

HTTP和HTTPS到底啥区别?不只是差一个“S”这么简单.....

在信息时代&#xff0c;互联网已经成为人们生活中不可或缺的一部分。我们每天浏览网页、发送邮件、进行网络购物&#xff0c;都离不开网络数据的传输。 而保障这些数据在传输过程中的安全&#xff0c;就显得尤为重要。 HTTP和HTTPS作为两种应用层协议&#xff0c;在网络数据传…

tools日常使用(随时更新)

文章目录 1 桌面快捷方式小箭头处理参考文献 1 桌面快捷方式小箭头处理 参考来源已不可考&#xff0c;在此仅贴上代码段。 # 箭头消除 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /d "%systemroot%…

15.useIntersectionObserver

在现代 Web 应用中,检测元素是否进入视口是一个常见需求,尤其是在实现懒加载、无限滚动或跟踪广告曝光等场景中。useIntersectionObserver 钩子提供了一种声明式的方法来利用 Intersection Observer API,使得监测元素可见性变得简单而高效。这个自定义钩子不仅简化了 Inters…

微服务设计模式 - 发布订阅模式(Publisher Subscriber Pattern)

微服务设计模式 - 发布订阅模式&#xff08;Publisher Subscriber Pattern&#xff09; 定义 发布-订阅模式&#xff08;Publisher-Subscriber Pattern&#xff09;是一种常见的设计模式&#xff0c;被广泛用于云计算和分布式系统中&#xff0c;以实现松散耦合的组件间通信。发…

计算布尔二叉树的值

给你一棵 完整二叉树 的根节点&#xff0c;这棵树有以下特征&#xff1a; 叶子节点 要么值为 0 要么值为 1 &#xff0c;其中 0 表示 False &#xff0c;1 表示 True 。非叶子节点 要么值为 2 要么值为 3 &#xff0c;其中 2 表示逻辑或 OR &#xff0c;3 表示逻辑与 AND 。 …

找出目标值在数组中的开始和结束位置(二分查找)

给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1&#xff1a…

0xGame 2024 [Week 4] Jenkins

1.前言 由于好久没做web题了&#xff0c;所以今天来尝试来做一波web题&#xff0c;仅供刷题记录。 2.题目 这个给的提示对于小白来说实在是友好的过劲。 3.分析 上网搜到一个关于Jenkins的历史漏洞&#xff0c;下面链接可供参考 https://blog.csdn.net/2301_80127209/arti…