安装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 版本,所以我们可以通过 rbenv 或 rvm 来安装较新版本的 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
相关文章:
安装fpm,解决*.deb=> *.rpm
要从生成 .deb 包转换为 .rpm 包,可以按照以下步骤修改打包脚本 1. 使用 fpm 工具 fpm 是一个强大的跨平台打包工具,可以将 .deb 包重新打包成 .rpm,也可以直接从源文件打包成 .rpm。 安装 fpm sudo apt-get install ruby-dev sudo gem in…...
基于MATLAB典型去雾算法代码
1.3.1 Rentinex理论 Retinex(视网膜“Retina”和大脑皮层“Cortex”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。该算法的基本原理模型最早是由Edwin Land…...
FrankenPHP实践
目录 1. 说明 2. 程序修改 3. 性能测试 4. 配置 4.1 Docker化部署 4.2 泛域名和证书设置 4.3 相关命令 5. 要点: 6. 参考 1. 说明 Frankenphp是一个先进的,结合了高性能Caddy服务器的PHP环境框架,它允许用户只需要少量改动ÿ…...
嵌入式硬件电子电路设计(一)开关电源Buck电路
目录 Buck电路基本结构 1. 开关闭合(SW 闭合) 2. 开关断开(SW 断开) 3. 开关控制和占空比 MP1584电路分析 其他Buck芯片的电路参考 Buck电路基本结构 下图是简化之后的BUCK电路主回路。下面分析输出电压的产生K闭合后&…...
java项目之协力服装厂服装生产管理系统的设计与实现(springboot)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的协力服装厂服装生产管理系统的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: …...
Java虚拟机的历程(jvm01)
Java虚拟机的历程(jvm01) Java虚拟机(JVM)作为Java语言的核心技术之一,自诞生以来经历了多次迭代与演变。不同的虚拟机在性能、功能以及适用场景上各有侧重。本文将介绍Java虚拟机发展历程中的一些重要虚拟机…...
[代码随想录Day4打卡] 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II 总结
24. 两两交换链表中的节点 题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 重点: 明确具体交换怎么做。交换其中1,2…...
java项目之校园周边美食探索及分享平台(springboot)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园周边美食探索及分享平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 校园周边美食…...
支持 Mermaid 语言预览,用通义灵码画流程图
想像看图片一样快速读复杂代码和架构?通义灵码上新功能:智能问答支持 Mermaid 语言的预览模式,即支持代码逻辑可视化,可以把每段代码画成流程图,像脑图工具一样画出代码逻辑和框架。 操作步骤:选中代码块&a…...
cangjie仓颉程序设计-数据结构(四)
文章目录 ArrayListLinkedListHashSetHashMapTreeMap 本专栏还在持续更新: Cangjie仓颉程序设计-个人总结 这是双子专栏: 仓颉编程cangjie刷题录 这些数据结构都在std.collection.*中。暂时官方包还没有stack, queue等数据结构。服了 import std.coll…...
Redis中储存含LocalDateTime属性对象的序列化实现
目录 1.问题1 向Redis中存入序列化对象 1.1引入 : 1.2解决方案: 1.2.1首先引入依赖 1.2.2然后在RedisConfig中进行配置 1.3 介绍下ObjectMapper 1.3.1 ObjectMapper 1.3.2 objectMapper.registerModule(new JavaTimeModule()); 1.3.3 GenericJackson2Js…...
蚁剑的介绍和使用
蚁剑介绍 蚁剑(AntSword)是一个开源的跨平台网站管理工具,主要用于渗透测试和安全研究。它提供了一个图形化界面,方便用户管理和操作被攻陷的网站。 安装教程: github官网:https://github.com/AntSwordPro…...
C++之多态的深度剖析(2)
前言 在前面内容中,我们对多态进行了基本的了解,对其中的虚函数进行着重的介绍,本节内容我们将进一步对多态的底层进行观察了解看看它是如何实现的。 多态如何实现 从底层的角度Func函数中ptr->BuyTicket(),是如何作为ptr指向P…...
一篇文章 介绍 shiro反序列化漏洞
shiro反序列化漏洞 Shiro-550反序列化漏洞(CVE-2016-4437) 漏洞简介 shiro-550主要是由shiro的RememberMe内容反序列化导致的命令执行漏洞,造成的原因是默认加密密钥是硬编码在shiro源码中,任何有权访问源代码的人都可以知道默认加…...
pyav保存视频
目录 imageio替代pyav imageio替代pyav import imageio import numpy as np import torch# 创建一个随机的图像张量,形状为 (N, C, H, W) # 这里 N 30(帧数),C 3(通道数),H 64(…...
.bixi勒索病毒来袭:如何防止文件加密与数据丢失?
导言 在网络威胁剧烈的今天,勒索病毒已成为企业和个人面临的重大安全挑战,其中虫洞勒索病毒习得高强度的加密手段和急剧传播的特性引起关注。一旦感染,就会加密关键数据并索要赎金,导致数据无法访问并带来巨大的财务损失。更为严…...
MySQL安装配置教程
以下是 MySQL 在 Windows 系统下的安装配置教程: 1. 下载 MySQL 访问 MySQL 官方网站(https://dev.mysql.com/downloads/mysql/),根据您的操作系统版本(32 位或 64 位)选择合适的 MySQL 安装包。一般建议下载社区版(Community Server),它是免费且功能丰富的版本。2. …...
Pandas进行数据查看与检查
在数据分析的工作流中,数据的初步查看与检查是非常重要的步骤。通过这一步,可以快速了解数据的结构、属性以及一些关键的统计信息,确保数据符合预期,或者发现数据中的潜在问题。 借助 pandas 库中的常用方法,如 DataFrame.head()、DataFrame.tail()、DataFrame.info() 和…...
MySQL中between and的基本用法、范围查询
文章目录 一、between and语法二、使用示例2.1、between and数值查询2.2、between and时间范围查询2.3、not between and示例 BETWEEN AND操作符可以用于数值、日期等类型的字段,包括边界值。 一、between and语法 MySQL中的BETWEEN AND操作符用于在两个值之间选择…...
[ 问题解决篇 ] 解决远程桌面安全登录框的问题
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
