国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux如何將文件或目錄打成rpm包? -- fpm打包詳解

這篇具有很好參考價值的文章主要介紹了Linux如何將文件或目錄打成rpm包? -- fpm打包詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?????博主簡介

????云計算領域優(yōu)質創(chuàng)作者
????華為云開發(fā)者社區(qū)專家博主
????阿里云開發(fā)者社區(qū)專家博主
??交流社區(qū):運維交流社區(qū) 歡迎大家的加入!
?? 希望大家多多支持,我們一起進步!??
??如果文章對你有幫助的話,歡迎 點贊 ???? 評論 ?? 收藏 ?? 加關注+??


前言

??最近因為遇到一個服務器受系統(tǒng)限制,只能上傳rpm包才能使用,而我們的服務都是文件,那么怎么將文件都打成rpm包呢???我也是找了好幾個,終于找到了一個簡單好用的打包方式,下面來給大家講解一下部署及打包、安裝;

本文已docker離線包目錄為例子,將其打成rpm包,并在新的服務器上安裝;

操作系統(tǒng)為:Centos 7.6

說明 – fpm參數(shù)及解析

  • fpm的功能就是將一種類型的包轉換成另一種類型

  • fpm支持的源類型包:

原類型包 解析
dir 將目錄打包成所需要的類型用于源碼編譯安裝的軟件包
rpm 對rpm進行轉換
gem 對rubygem包進行轉換;
python 將python模塊打包成相應的類型
  • fpm支持的目標類型包:
目標類型包 解析
rpm 轉換為rpm包
deb 轉換為deb包
solari 轉換為solaris包
puppet 轉換成pupper包
  • fpm常用參數(shù):
參數(shù) 參數(shù)解析
-s 指定源類型
-t 指定目標類型,即想要制作什么包
-n 指定包的名字
-v 指定包的版本號
-c 指定打包的相對路徑
-d 指定依賴于哪些包
-f 第二次包時目錄下如果有同名安裝包存在,則覆蓋它
-p 制作的rpm安裝包存放路徑,不指定就在當前目錄下
–post-install 軟件包安裝完成之后所要運行的腳本
–post-uninstall 軟件包卸載完成之后所要運行的腳本
–pre-install 軟件包安裝完成之前所要運行的腳本
–pre-uninstall 軟件包卸載完成之前所要運行的腳本
–prefix 制作好的rpm包默認安裝路徑

一、安裝fpm命令

1.1 安裝 ruby 環(huán)境

fpm 是 ruby語法寫的一種定制 rpm 包的工具,所以安裝 fpm 之前,需要安裝 ruby 環(huán)境。

官方地址:Download RubyGems | RubyGems.org | your community gem host

阿里源地址:rubygems鏡像_rubygems下載地址_rubygems安裝教程-阿里巴巴開源鏡像站

yum -y install ruby rubygems ruby-devel  rpm-build rpmdevtools git rubygem-json

1.2 更換 gem 源為阿里源

# 查看默認源
[root@localhost ~]# gem sources
*** CURRENT SOURCES ***

https://rubygems.org/


# 移除默認源
[root@localhost ~]# gem sources --remove https://rubygems.org/
https://rubygems.org/ removed from sources


# 添加阿里源
[root@localhost ~]# gem sources -a https://mirrors.aliyun.com/rubygems/
https://mirrors.aliyun.com/rubygems/ added to sources

# 再次查看是否更換成功
[root@localhost ~]# gem sources
*** CURRENT SOURCES ***

https://mirrors.aliyun.com/rubygems/

#可以看到已經(jīng)更新成阿里源了

1.3 安裝 fpm

gem install fpm

如下截圖,及安裝成功;

Linux如何將文件或目錄打成rpm包? -- fpm打包詳解,《Linux從入門到精通》,linux,運維,服務器,rpm

安裝成功。

二、將文件打成rpm包

fpm -s dir -t rpm -n 軟件名稱 -v 版本號 --prefix=rpm安裝的路徑 ./打包文件名

注:執(zhí)行fpm打包命令前,進入打包目標的上一級目錄。

[root@localhost ~]# fpm -s dir -t rpm -n docker -v 1.0 --prefix=/root/docker/ nvidia-docker
Created package {:path=>"docker-1.0-1.x86_64.rpm"}

-s:指定要打成rpm包的源類型,目錄:-s dir

-t:知道要將目錄制作成什么類型的文件,-t rpm

-n: 指定軟件、包的名稱

-v: 指定該包的版本號

–prefix:指定制作好的rpm包的安裝路徑,在新的服務器上安裝會直接安裝到此目錄;

./:最后就是指定要打包的目錄。

三、安裝、卸載rpm包

首先要將打的rpm包上傳到服務器上;

3.1 安裝rpm包

rpm -ivh docker-1.0-1.x86_64.rpm

3.2 查找剛剛安裝rpm包

rpm -qa | grep docker-1.0-1.x86_64

3.3 卸載剛剛安裝的rpm包

rpm -e docker-1.0-1.x86_64

四、錯誤整理

2.1 ERROR: Error installing fpm: rexml requires Ruby version >= 2.5.0.

  • 報錯信息:
# 安裝fpm時報錯
[root@localhost ~]# gem install fpm
ERROR:  Error installing fpm:
	rexml requires Ruby version >= 2.5.0.
  • 問題分析:

此問題報錯說的是ruby 的版本必須>=2.5.0,我們可以先看看我們的ruby版本

[root@localhost ~]# ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]

可以看到是2.0.0版本,所以,需要升級一下ruby版本;

  • 問題解決:
#1. 離線安裝 rvm:
# rvm 是用來管理 ruby 的,而 ruby 的其中一個“程序”叫 rubygems,也就是我們用它裝 fpm 的,手動裝各種庫用 gem。
[root@localhost ~]# curl -sSL https://github.com/rvm/rvm/tarball/stable -o rvm-stable.tar.gz
 
#2. 解壓 rvm 包:
[root@localhost ~]# tar -xzvf rvm-stable.tar.gz
 
#3. 進入解壓目錄,安裝 rvm:
[root@localhost ~]# cd rvm-rvm-6bfc921/
[root@localhost rvm-rvm-6bfc921]# ./install --auto-dotfiles
 
#4. 重新加載 rvm:
[root@localhost rvm-rvm-6bfc921]# source /usr/local/rvm/scripts/rvm
 
#5. 查看 rvm 可安裝版本:
[root@localhost rvm-rvm-6bfc921]# rvm list known
 
#6. 選擇安裝 ruby 2.6.3:
# 下載安裝過程比較慢,請耐心等待
[root@localhost rvm-rvm-6bfc921]# rvm install 2.6.3
 
#7. 設置默認使用 ruby 版本:
[root@localhost rvm-rvm-6bfc921]# rvm use 2.6.3 --default
Using /usr/local/rvm/gems/ruby-2.6.3
[root@nginx01 rvm-rvm-6bfc921]# ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

? 可以看到 ruby 已升級至 2.6.3。再次執(zhí)行 gem install fpm -v 1.3.3,就不會再報這個錯誤了,一會就安裝完成了。

2.2 /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:54:in `require’: cannot load such file – json (LoadError)

  • 報錯信息:
[root@localhost ~]# gem install fpm
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- json (LoadError)
  • 問題分析:

這個錯誤通常表示你的 Ruby 環(huán)境缺少一個名為 “json” 的 gem(Ruby庫)。要解決這個問題,你可以按照以下步驟來修復:

  1. 確保 Ruby 版本已安裝:首先,請確保你的系統(tǒng)上已經(jīng)安裝了 Ruby。你可以在終端中運行以下命令來檢查 Ruby 版本:

    ruby -v
    

    如果 Ruby 未安裝或者版本較舊,建議更新到較新的版本。

  2. 安裝 JSON Gem:要解決這個問題,你需要安裝 json gem。在終端中執(zhí)行以下命令:

    gem install json
    

    這將安裝 json gem 到你的 Ruby 環(huán)境中。

  3. 檢查 Gemfile:如果你的項目使用了 Gemfile 來管理 gem 依賴,確保你在 Gemfile 中有 json gem 的引用,并且運行 bundle install 來安裝所需的 gem。

  4. 檢查 Ruby 環(huán)境:確保你的 Ruby 環(huán)境設置正確。有時,可能需要切換到正確的 Ruby 版本或環(huán)境。你可以使用工具如 RVM(Ruby Version Manager)或 rbenv 來管理不同的 Ruby 環(huán)境。

  5. 檢查加載路徑:確保 Ruby 可以找到 json gem。有時,你可能需要在代碼中添加 require 'json' 來明確指定加載這個 gem。

  • 問題解決:
# 安裝json
gem install json

即可解決。文章來源地址http://www.zghlxwxcb.cn/news/detail-818061.html

到了這里,關于Linux如何將文件或目錄打成rpm包? -- fpm打包詳解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Linux chown命令教程:如何改變文件或目錄的所有者和組(附案例詳解和注意事項)

    chown (change owner)命令在Linux中用于改變文件或目錄的所有者和組。每個文件都與一個所有者用戶或組相關聯(lián)。正確配置文件和文件夾權限非常重要。 chown 命令在所有主流的Linux發(fā)行版中都可以使用,包括但不限于Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora和R

    2024年04月27日
    瀏覽(98)
  • 解決Springboot項目打成jar包后獲取resources目錄下的文件失敗的問題

    解決Springboot項目打成jar包后獲取resources目錄下的文件失敗的問題

    前幾天在項目讀取resources目錄下的文件時碰到一個小坑,明明在本地是可以正常運行的,但是一發(fā)到測試環(huán)境就報錯了,說找不到文件,報錯信息是:class path resource [xxxx] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:xxxx.jar!/BOOT-INF/classes!xxxx。 看了

    2024年02月11日
    瀏覽(28)
  • 系列二十九、Spring Boot打成jar包后,resources目錄下的資源文件獲取不到

    ? ? ? ? 在做公司業(yè)務開發(fā)時,有一個地方是使用EasyExcel模板技術進行文件上傳,測試環(huán)境是OK的,但是和前后端聯(lián)調驗證測試通過后,上傳到生產(chǎn)環(huán)境就不行了,后來也是花費了很多時間才找出其中的問題,以下為解決方案。 ?

    2024年02月02日
    瀏覽(30)
  • 解決Springboot項目打成jar包后獲取resources目錄下的文件報錯的問題

    解決Springboot項目打成jar包后獲取resources目錄下的文件報錯的問題

    前幾天在項目讀取resources目錄下的文件時碰到一個小坑,明明在本地是可以正常運行的,但是一發(fā)到測試環(huán)境就報錯了,說找不到文件,報錯信息是:class path resource [xxxx] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:xxxx.jar!/BOOT-INF/classes!xxxx。 看了

    2024年02月11日
    瀏覽(22)
  • Linux 下使用 tar 命令打包指定目錄下的所有文件,不包含路徑方法

    一,問題描述 例如:需要打包/data/android_data/VMRK02ejyijtyww20 文件夾到/data/testtar/目錄下 一般我們使用命令如下命令 當我們解VMRK02ejyijtyww20.tar壓縮包后發(fā)現(xiàn),把路徑也打包進去了, 即/data/android_data/VMRK02ejyijtyww20;而大多數(shù)情況,我們解壓后只需要的是VMRK02ejyijtyww20文件夾 二、打包

    2024年02月16日
    瀏覽(32)
  • Linux下軟件部署安裝管理----rpmbuild打包rpm包部署安裝

    Linux下軟件部署安裝管理----rpmbuild打包rpm包部署安裝

    來源:微信公眾號「編程學習基地」 創(chuàng)建rpm包管理路徑,生成rpm相關目錄 RPM打包的時候需要編譯源碼,還需要把編譯好的配置文件,二進制命令文件之類的東西按照安裝好的樣子放到合適的位置,還要根據(jù)需要對RPM的包進行測試,這些都需要先有一個“工作空間”。rpmbuil

    2024年01月23日
    瀏覽(20)
  • 如何更改 Linux 文件和目錄權限?

    如何更改 Linux 文件和目錄權限?

    在Linux系統(tǒng)中,文件和目錄權限是安全性和訪問控制的關鍵組成部分。正確設置文件和目錄的權限可以確保只有授權的用戶能夠讀取、寫入或執(zhí)行這些文件和目錄。 本文將詳細介紹如何在Linux系統(tǒng)中更改文件和目錄的權限。 在Linux系統(tǒng)中,每個文件和目錄都有一組權限,用于

    2024年02月06日
    瀏覽(19)
  • 【Linux實踐室】Linux文件打包和解壓縮實戰(zhàn)指南:tar打包命令操作詳解(文末送書)

    【Linux實踐室】Linux文件打包和解壓縮實戰(zhàn)指南:tar打包命令操作詳解(文末送書)

    ??個人主頁: 聆風吟_ ??系列專欄: Linux實踐室、網(wǎng)絡奇遇記 ??少年有夢不應止于心動,更要付諸行動。 有時,我們會在Linux系統(tǒng)中將多個文件打包成一個單獨的文件,通過本節(jié)的學習,我們將學會如何在Linux系統(tǒng)中將多個文件/目錄打包生成一個文件。 本節(jié)任務:使用

    2024年04月29日
    瀏覽(125)
  • Linux中如何修改文件或目錄的權限?

    ? 在Linux系統(tǒng)中,文件權限是非常重要的一個概念,它能夠決定誰可以訪問文件,以及可以執(zhí)行哪些操作,正確地設置文件權限可以確保系統(tǒng)的安全性和穩(wěn)定性,那么如何設置文件權限呢?以下是詳細的內容: 在 Linux 系統(tǒng)中,可以使用 `chmod` 命令來修改文件或目錄的權限。

    2024年02月07日
    瀏覽(89)
  • 【linux升級ssh】 利用rpmbuild工具對ssh打包為rpm包進場安裝升級

    rpmbuild命令用于創(chuàng)建軟件的二進制包和源代碼包。 官方文檔:rpm.org - RPM Reference Manual rpmbuild 中文手冊:rpmbuild 中文手冊 [金步國] 使用rpmbuild將tar包打成rpm包 執(zhí)行如下命令來生成rpmbuild的工作目錄 SPEC撰寫是打包RPM的核心,也算是最難的一步,好在我們可以從參照一個簡單的模

    2024年02月15日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包