日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux--轻松定义自己的RPM/DEB软件包

發布時間:2025/3/21 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux--轻松定义自己的RPM/DEB软件包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?[前言]?Linux管理員大多數時候都是通過源碼包編譯安裝軟件,在安裝過程中不斷的遇到問題,不斷解決;為了從重復的編譯安裝操作中解脫,很多人都會選擇制作自己的RPM/DEB包,然后可以很方便的安裝,但是要制作RPM或者DEB包就不得不學習如何編寫SPECS或debian控制文件,如何build。最近發現了FPM這個工具,它可以讓你省去閱讀漫長的文檔時間,直接可以制作自己的軟件包。?

給感興趣的人:

RPM包制作:?http://www.rpm.org/max-rpm/??

DEB包制作:?http://www.debian.org/doc/manuals/maint-guide/

?

目錄:

1. FPM介紹

2. FPM安裝

3. 編譯安裝Mysql

4. FPM制作RPM/DEB包

5. FPM參數詳解

?

FPM介紹

FPM的作者是jordansissel?

關于FPM的介紹

https://docs.google.com/present/view?id=0Aa9liCTsAyzRZGNtd3dkOTRfMTdmczY2azlkcg&hl=en?

FPM功能簡單說就是將一種類型的包轉換成另一種類型。

支持的源類型包:“dir”:將目錄打包成所需要的類型,可以用于源碼編譯安裝的軟件包

“rpm”:對rpm進行轉換

“gem”:對rubygem包進行轉換

“python”:將python模塊打包成相應的類型

支持的目標類型包:

“rpm”:轉換為rpm包

“deb”:轉換為deb包

? ? ? ? ? ? ? ? ? “solaris”:轉換為solaris包

“puppet”:轉換為puppet模塊

這里主要介紹如何將源碼安裝的包轉換為RPM/DEB包,其他功能感興趣的可以試試。

?

FPM安裝

FPM的安裝非常簡單,安裝FPM前需要先安裝ruby,rubygem

?

  • [root@client1?~]#?gem??install??fpm?
  • ?
  • Building?native?extensions.??This?could?take?a?while...?
  • Successfully?installed?json-1.6.6?
  • Successfully?installed?cabin-0.4.4?
  • Successfully?installed?backports-2.3.0?
  • Successfully?installed?arr-pm-0.0.7?
  • Successfully?installed?clamp-0.3.1?
  • Successfully?installed?fpm-0.4.6?
  • 6?gems?installed?
  • Installing?ri?documentation?for?json-1.6.6...?
  • Installing?ri?documentation?for?cabin-0.4.4...?
  • Installing?ri?documentation?for?backports-2.3.0...?
  • Installing?ri?documentation?for?arr-pm-0.0.7...?
  • Installing?ri?documentation?for?clamp-0.3.1...?
  • Installing?ri?documentation?for?fpm-0.4.6...?
  • Installing?RDoc?documentation?for?json-1.6.6...?
  • Installing?RDoc?documentation?for?cabin-0.4.4...?
  • Installing?RDoc?documentation?for?backports-2.3.0...?
  • Installing?RDoc?documentation?for?arr-pm-0.0.7...?
  • Installing?RDoc?documentation?for?clamp-0.3.1...?
  • Installing?RDoc?documentation?for?fpm-0.4.6...?
  • ?

    編譯安裝Mysql

    下載mysql源碼包,下載地址:http://dev.mysql.com/downloads/

    解壓源碼包:

  • [root@client1?tmp]#?unzip?mysql-5.1.41.zip?

  • 編譯安裝:

  • [root@client1?tmp]#?cd?mysql-5.1.41?
  • ?
  • [root@client1?mysql-5.1.41]#?./configure?--prefix=/opt/mysql?--localstatedir=/opt/var/mysql/var?--with-unix-socket-path=/opt/mysql/mysql.sock?--with-mysqld-user=mysql?--with-plugins=archive,partition,myisam,innobase,heap,csv?--with-extra-charsets=gbk,gb2312,utf8,ascii?--with-charset=utf8?--with-collation=utf8_general_ci?--with-big-tables?--enable-assembler?--enable-profiling?--enable-local-infile?--enable-thread-safe-client?--with-fast-mutexes?--with-pthread?--with-zlib-dir=bundled?--with-readline?--without-geometry?--without-embedded-server?--without-debug?--without-ndb-debug?--with-client-ldflags=-all-static?--with-mysqld-ldflags=-all-static???
  • ?
  • [root@client1?mysql-5.1.41]#??make?
  • ?
  • [root@client1?mysql-5.1.41]#??make?all?install?
  • ?

    安裝中遇到的錯誤:

    錯誤一:

    checking for termcap functions library... configure: error: No curses/termcap library found

    是因為沒有安裝ncurses包導致的

  • [root@client1?mysql-5.1.41]#?yum??list|grep?ncurses*????
  • ?
  • ncurses.x86_64???????????????????????5.7-3.20090208.el6????????@base/$releasever?
  • ?
  • ncurses-base.x86_64??????????????????5.7-3.20090208.el6????????@base/$releasever?
  • ?
  • ncurses-libs.x86_64??????????????????5.7-3.20090208.el6????????@base/$releasever?
  • ?
  • ncurses-devel.i686???????????????????5.7-3.20090208.el6????????base??????????????
  • ?
  • ncurses-devel.x86_64?????????????????5.7-3.20090208.el6????????base??????????????
  • ?
  • ncurses-libs.i686????????????????????5.7-3.20090208.el6????????base??????????????
  • ?
  • ncurses-static.x86_64????????????????5.7-3.20090208.el6????????base??????????????
  • ?
  • ncurses-term.x86_64??????????????????5.7-3.20090208.el6????????base??????????????
  • ?
  • php-pecl-ncurses.x86_64??????????????1.0.1-1.el6???????????????epel??
  • ?
  • ?
  • [root@client1?mysql-5.1.41]#?yum?install?ncurses??ncurses-libs??ncurses-devel?
  • ?

    報錯二:

    ../depcomp: line 571: exec: g++: not found

    錯誤原因沒有安裝gcc-c++包

  • [root@client1?mysql-5.1.41]#?yum?install?gcc-c++?

  • 報錯三

    ./include/my_global.h:1099: 錯誤:對 C++ 內建類型 ‘bool’ 的重聲明

    這個錯誤是因為先./congfigure 又裝的gcc-c++之后又make 導致的,解決方法是重新./configure,make,make install就可以恢復

    ?

    FPM制作RPM/DEB包

    開始打包安裝好的mysql,并轉換為rpm包,命令如下,具體參數解釋在文章的最后:

  • [root@client1?mysql-5.1.41]#?cd?..?
  • ?
  • [root@client1?tmp]#?fpm?-s?dir??-t?rpm?-v?1.0?-n?mysql_waydee??/opt/mysql/?
  • ?
  • /usr/lib/ruby/gems/1.8/gems/fpm-0.4.6/lib/fpm/package/deb.rb:19:?warning:?already?initialized?constant?SCRIPT_MAP?
  • ?
  • /usr/lib/ruby/gems/1.8/gems/fpm-0.4.6/lib/fpm/package/rpm.rb:23:?warning:?already?initialized?constant?DIGEST_ALGORITHM_MAP?
  • ?
  • /usr/lib/ruby/gems/1.8/gems/fpm-0.4.6/lib/fpm/package/rpm.rb:29:?warning:?already?initialized?constant?COMPRESSION_MAP?
  • ?
  • Executing(%prep):?/bin/sh?-e?/var/tmp/rpm-tmp.XPQ8av?
  • ?
  • Executing(%build):?/bin/sh?-e?/var/tmp/rpm-tmp.j4a8lh?
  • ?
  • Executing(%install):?/bin/sh?-e?/var/tmp/rpm-tmp.sH6nx3?
  • ?
  • Processing?files:?mysql_waydee-1.0-1.x86_64?
  • ?
  • Wrote:?/tmp/package-rpm-build20120413-13147-1by0r75/RPMS/x86_64/mysql_waydee-1.0-1.x86_64.rpm?
  • ?
  • Executing(%clean):?/bin/sh?-e?/var/tmp/rpm-tmp.9qzvuf?
  • ?
  • Created?rpm?{"path":"mysql_waydee-1.0-1.x86_64.rpm"}?

  • 查看制作的rpm包,并傳到另一臺服務器執行安裝

  • [root@client1?tmp]#?ls?-l?mysql_waydee-1.0-1.x86_64.rpm?
  • ?
  • -rw-r--r--?1?root?root?24893316??4月?13?15:15?mysql_waydee-1.0-1.x86_64.rpm?
  • 使用rpm命令查看生成的rpm包文件

  • [root@client1?tmp]#?rpm?-qpl?mysql_waydee-1.0-1.x86_64.rpm?|head?-n10?
  • ?
  • /opt/mysql/bin/innochecksum?
  • ?
  • /opt/mysql/bin/msql2mysql?
  • ?
  • /opt/mysql/bin/my_print_defaults?
  • ?
  • /opt/mysql/bin/myisam_ftdump?
  • ?
  • /opt/mysql/bin/myisamchk?
  • ?
  • /opt/mysql/bin/myisamlog?
  • ?
  • /opt/mysql/bin/myisampack?
  • ?
  • /opt/mysql/bin/mysql?
  • ?
  • /opt/mysql/bin/mysql_client_test?
  • ?
  • /opt/mysql/bin/mysql_config?
  • 將生成的rpm包傳輸到另外一臺測試服務器,并安裝

  • [root@client1?tmp]#?scp?mysql_waydee-1.0-1.x86_64.rpm???192.168.2.102:/root?
  • ?
  • The?authenticity?of?host?'192.168.2.102?(192.168.2.102)'?can't?be?established.?
  • ?
  • RSA?key?fingerprint?is?7d:96:53:c2:ba:f3:e6:7b:b2:d2:f9:b1:3e:48:9a:88.?
  • ?
  • Are?you?sure?you?want?to?continue?connecting?(yes/no)??yes?
  • ?
  • Warning:?Permanently?added?'192.168.2.102'?(RSA)?to?the?list?of?known?hosts.?
  • ?
  • root@192.168.2.102's?password:??
  • ?
  • mysql_waydee-1.0-1.x86_64.rpm??????????????????????????????????????????????????????????????????????????????????????????????????????????????????100%???24MB??23.7MB/s???00:01??
  • ?
  • ?
  • ?
  • [root@client2?~]#?rpm?-ivh?mysql_waydee-1.0-1.x86_64.rpm??
  • ?
  • Preparing...????????????????###########################################?[100%]?
  • ?
  • ???1:mysql_waydee???????????###########################################?[100%]?
  • 可以順利安裝,當然在制作RPM包的時候可以增加想要的dependences,這個看個人要求。

    下面是將安裝好的mysql包制作為DEB包,省去不少時間

  • [root@client1?tmp]#?fpm?-s?dir??-t?deb??-v?1.0?-n?mysql_waydee??/opt/mysql/????
  • ?
  • /usr/lib/ruby/gems/1.8/gems/fpm-0.4.6/lib/fpm/package/deb.rb:19:?warning:?already?initialized?constant?SCRIPT_MAP?
  • ?
  • /usr/lib/ruby/gems/1.8/gems/fpm-0.4.6/lib/fpm/package/rpm.rb:23:?warning:?already?initialized?constant?DIGEST_ALGORITHM_MAP?
  • ?
  • /usr/lib/ruby/gems/1.8/gems/fpm-0.4.6/lib/fpm/package/rpm.rb:29:?warning:?already?initialized?constant?COMPRESSION_MAP?
  • ?
  • Created?deb?package?{"path":"/tmp/mysql-waydee_1.0_amd64.deb"}?

  • 查看打包好的deb包

  • [root@client1?tmp]#?ls?-l?mysql-waydee_1.0_amd64.deb?
  • ?
  • -rw-r--r--?1?root?root?25185038??4月?13?15:17?mysql-waydee_1.0_amd64.deb?
  • ?

    FPM參數詳解

  • Usage:?fpm?[options]?
  • ?
  • -p,?--package?PACKAGEFILE????????管理的軟件包?
  • ?
  • -n,?--name?PACKAGENAME???????????定義生成的軟件包的名字?
  • ?
  • -v,?--version?VERSION????????????定義生成的軟件包的版本?
  • ?
  • ????--iteration?ITERATION????????(可選)?為軟件包設置?iteration值?('release'?for?RPM).?
  • ?
  • ????--epoch?EPOCH????????????????(可選)?為軟件包設置?epoch值?
  • ?
  • -d,?—depends?DEPENDENCY?????設置軟件包的依賴關系?
  • ?
  • ????--category?SECTION_OR_GROUP?
  • ?
  • ????--provides?PROVIDES?
  • ?
  • ????--conflicts?CONFLICTS?
  • ?
  • ????--replaces?REPLACES?
  • ?
  • ????--config-files?PATH??????????(optional)?Treat?path?as?a?configuration?file.?Uses?conffiles?in?deb?or?%config?
  • ?
  • ?????????????????????????????????in?rpm.?(/etc/package.conf)?
  • ?
  • -a,?--architecture?ARCHITECTURE?
  • ?
  • -m,?--maintainer?MAINTAINER?
  • ?
  • -C?DIRECTORY????????????????????在搜索files前先進入該目錄?
  • ?
  • -t?PACKAGE_TYPE?????????????????設置目標包的類型?
  • ?
  • -s?SOURCE_TYPE???????????????????設置需要轉換的包類型?
  • ?
  • -S?PACKAGE_SUFFIX????????????????which?suffix?to?append?to?package?and?dependencies?
  • ?
  • ????--prefix?PREFIX??????????????A?path?to?prefix?files?with?when?building?the?target?package.?This?may?not?be?
  • ?
  • ?????????????????????????????????necessary?for?all?source?types.?For?example,?the?'gem'?type?will?prefix?with?
  • ?
  • ?????????????????????????????????your?gem?directory?(gem?env?|?grep?-A1?PATHS:)?
  • ?
  • -e,?--edit???????????????????????Edit?the?specfile?before?building?
  • ?
  • -x,?--exclude?PATTERN????????????Exclude?paths?matching?pattern?(according?to?tar?--exclude)?
  • ?
  • ????--post-install?SCRIPTPATH????Add?a?post-install?action.?This?script?will?be?included?in?the?resulting?package?
  • ?
  • ????--pre-install?SCRIPTPATH?????Add?a?pre-install?action.?This?script?will?be?included?in?the?resulting?package?
  • ?
  • ????--pre-uninstall?SCRIPTPATH???Add?a?pre-uninstall?action.?This?script?will?be?included?in?the?resulting?package?
  • ?
  • ????--post-uninstall?SCRIPTPATH??Add?a?post-uninstall?action.?This?script?will?be?included?in?the?resulting?package?
  • ?
  • ????--description?DESCRIPTION????Add?a?description?for?this?package.?
  • ?
  • ????--url?URL????????????????????Add?a?url?for?this?package.?
  • ?
  • ????--inputs?FILEPATH????????????The?path?to?a?file?containing?a?newline-separated?list?of?files?and?dirs?to?package.?
  • ?
  • ?????????????????????????????????Pass?-?as?the?only?argument?to?have?the?list?of?files?and?dirs?read?from?STDIN?(e.g.?
  • ?
  • ?????????????????????????????????fpm?-s?dir?-t?deb?-?<?FILELIST)?
  • ?
  • ????--gem-bin-path?DIRECTORY?????(gem?source?only)?The?directory?to?install?gem?executables?
  • ?
  • ????--gem-package-prefix?PREFIX??(gem?source?only)?Prefix?for?gem?packages?
  • ?
  • ????--gem-gem?PATH_TO_GEM????????(gem?source?only)?The?path?to?the?'gem'?tool?(defaults?to?'gem'?and?searches?
  • ?
  • ?????????????????????????????????your?$PATH)?
  • ?
  • ????--python-bin?PYTHON_BINARY_LOCATION?
  • ?
  • ?????????????????????????????????(python?source?only)?The?path?to?the?python?you?want?to?run.?Default?is?'python'?
  • ?
  • ????--python-easyinstall?EASY_INSTALL_PATH?
  • ?
  • ?????????????????????????????????(python?source?only)?The?path?to?your?easy_install?tool.?Default?is?'easy_install'?
  • ?
  • ????--python-pypi?PYPI_SERVER????(python?source?only)?PyPi?Server?uri?for?retrieving?packages.?Default?
  • ?
  • ?????????????????????????????????is?'http://pypi.python.org/simple'?
  • ?
  • ????--python-package-prefix?PREFIX?
  • ?
  • ?????????????????????????????????(python?source?only)?Prefix?for?python?packages?
  • ?
  • ????--deb-ignore-iteration-in-dependencies?
  • ?
  • ?????????????????????????????????(deb?target?only)?For?=?dependencies,?allow?iterations?on?the?specified?
  • ?
  • ?????????????????????????????????version.??Default?is?to?be?specific.?
  • ?
  • ????--deb-pre-depends?DEPENDENCY?(deb?target?only)?Add?DEPENDENCY?as?Pre-Depends.?
  • ?
  • ????--deb-custom-control?FILEPATH?
  • ?
  • ?????????????????????????????????(deb?target?only)?Custom?version?of?the?Debian?control?file.?









  • 本文轉自 waydee 51CTO博客,原文鏈接:http://blog.51cto.com/waydee/834002,如需轉載請自行聯系原作者

    總結

    以上是生活随笔為你收集整理的Linux--轻松定义自己的RPM/DEB软件包的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 激情都市一区二区 | 久久精品日韩无码 | 动漫大乳美女 | 成人综合激情网 | 91超碰免费 | 日本少妇中文字幕 | 九九九九热| 麻豆视频网站入口 | 成人你懂的 | 日韩av中文字幕在线播放 | 国产精品久久影视 | 日本不卡在线观看 | 免费在线观看av片 | 国产精品福利片 | 国产福利一区视频 | 国产黄色片av | 国产精品无码天天爽视频 | 99热久久这里只有精品 | 殴美毛片| 日本三级精品 | 亚洲五月婷婷 | 亚洲va国产va天堂va久久 | 精品人伦一区二区三区 | 私人影院毛片 | 手机在线精品视频 | 一级片免费看视频 | 国产经典一区二区 | 欧美啪啪小视频 | 日本女优网址 | 免费欧美在线 | 日韩成人免费视频 | 日韩免费精品 | 午夜欧美日韩 | 欧美性大战xxxxx久久久 | 欧美精品国产一区二区 | 免费黄色片子 | 日韩av图片 | 国产寡妇亲子伦一区二区三区四区 | 中文字幕成人一区 | 二区在线视频 | 麻豆精品国产传媒mv男同 | 狠狠干婷婷| 丰腴饱满的极品熟妇 | 超碰97在线人人 | 国产黄网在线观看 | 久久青青草原亚洲av无码麻豆 | 国产精品国产三级国产aⅴ中文 | 色戒未删节版 | 欧美日韩久久婷婷 | av中文资源网 | 68日本xxxxxⅹxxx59 | 国产污污视频在线观看 | 色综合狠狠操 | 国产床上视频 | wwwxxx黄色片 | 在线视频中文字幕 | 韩国无码一区二区三区精品 | 亚洲黄在线观看 | 狂野少女电影在线观看国语版免费 | 成人不卡 | 91超级碰 | 日日噜噜夜夜爽爽 | 国产一区二区福利 | 国产二级片 | 久久久久久久久久久久 | 欧美无遮挡高潮床戏 | 超污巨黄的小短文 | 欧美精品18videosex性欧美 | 极品国产在线 | 国产 一二三四五六 | 91福利视频在线 | 亚洲经典一区 | 欧美在线观看视频一区二区 | 亚洲成人av电影在线 | 7777精品久久久久久 | 超碰在线c | 国产乱码av| 色在线视频观看 | 日本三级全黄 | 91久久人澡人人添人人爽欧美 | 精精国产xxxx视频在线播放 | 强开乳罩摸双乳吃奶羞羞www | 欧美精品卡一卡二 | 四虎综合网 | 色臀av | 麻豆做爰免费观看 | 国产福利观看 | 九色视频偷拍少妇的秘密 | 成年人免费在线看 | 久久久一二三四 | 国产妇女馒头高清泬20p多 | 凹凸精品熟女在线观看 | 国产成人精品一区二区 | 小泽玛利亚一区二区三区在线观看 | 中文字幕自拍 | 免费看美女隐私网站 | 巨乳中文字幕 | 日本免费久久 | 日日爱669|