请问rpm包与tar包到底有何区别??

发表于:2007-07-04来源:作者:点击数: 标签:
谁能全面具体的说一下!!! shenhuaxp 回复于:2005-09-08 20:14:33 顶一下,请高手来做个解答吧。 daemonlee 回复于:2005-09-08 23:50:40 tar包是源代码!解包后要编译! 就是 #tar-xvfname 如果压缩的还要加参数z #make #./configure #makeinstall 当然

谁能全面具体的说一下!!!

 shenhuaxp 回复于:2005-09-08 20:14:33
顶一下,请高手来做个解答吧。

 daemonlee 回复于:2005-09-08 23:50:40
tar包是源代码!解包后要编译!
就是
#tar -xvf <name>
如果压缩的还要加参数z
#make
#./configure
#make install
当然这是常规的方法,有的不同的要看帮助!
同时有的软件还要设置其他的!
而rpm包就可以通过
#rpm -ivh <name>
直接安装了!

 bingosek 回复于:2005-09-09 00:19:43
rpm也可以是源码包

 SkyBelieve 回复于:2005-09-09 06:58:00
[quote:2bcbe8b225="daemonlee"]tar包是源代码!解包后要编译!
就是
#tar -xvf <name>
如果压缩的还要加参数z
#make
#./configure
#make install
当然这是常规的方法,有的不同的要看帮助!
同时有的软件还要设置其他的!
而rpm包?.........[/quote:2bcbe8b225]

这些当然是知道的。并且一直在使用中尽量用源码包。
但源码包除了比rpm包更新更快一些,我不知道它还有什么优点!
我现在就是感觉安装源码包比rpm包更麻烦。
谢谢!!!
请大家继续!!!

这个应该是这样的顺序
#./configure
#make
#make install

 sakulagi 回复于:2005-09-09 08:45:36
不是每个Linux版本都支持rpm的。

 peng971237 回复于:2005-09-09 08:51:52
是呀,好像SLACK 就不支持,rpm是Redhat一个发布方式
[quote:37dd85a89e="sakulagi"]不是每个Linux版本都支持rpm的。[/quote:37dd85a89e]

 SkyBelieve 回复于:2005-09-09 11:11:26
[quote:d6acf8ee9f="sakulagi"]不是每个Linux版本都支持rpm的。[/quote:d6acf8ee9f]

那请问我就在Redhat系统上,安装源码包和rpm包有什么区别??

 ever518 回复于:2005-09-09 11:44:46
不喜欢rpm的安装方式。
出错信息不详细。系统被改了都不知道。

 sydby 回复于:2005-09-09 11:59:55
打包方式不一样而已吧

 sakulagi 回复于:2005-09-09 13:58:51
[quote:de941e1ec5="SkyBelieve"]

那请问我就在Redhat系统上,安装源码包和rpm包有什么区别??[/quote:de941e1ec5]安装的过程和方式不一样。rpm其实就是别人用源码包编译完了的结果copy给你,然后你再make install一下

 網中人 回复于:2005-09-09 14:40:49
簡單來說, rpm 就是 tarball + spec , 然後包成 binary.
基本上, 你在 tarball 裡要跑的 command 與設定, 都可定義在 spec 裡, 且還可以做更多!
除此之外, spec 還需定義 rpm database 所需的各項資料, 諸如 file location, dependence, infomation.... etc

你透過編撰 spec 來執行 tarball 所跑的所有命令, 但用 rpm 卻多了個 database 幫你管軟件(這正是 tarball 所缺的!)

至於 spec 怎寫? rpm 怎打包? 
那就請自己看書找資料囉...

 bingosek 回复于:2005-09-09 16:47:28
用源代码编译后软件运行的效率比用二进制rpm安装要高一些

 yenakata 回复于:2005-09-09 17:36:14
听网大个介绍,spec是很有些象Makefile了,受教了

 q1208c 回复于:2005-09-09 17:50:36
一个是散装的资料, 要自己去一页页顺一下, 一个是订好的书. 拿来就能看.

 SkyBelieve 回复于:2005-09-09 18:03:30
也就是说rpm和tarball的内容实质是一样的,只不过rpm是经过别人包装好的你只要拿来用就行了,而且rpm只是redhat的一种软件安装方式,不是所有的LINUX都支持!

谢谢

 網中人 回复于:2005-09-09 19:48:56
[quote:ab97c2f776="bingosek"]用源代码编译后软件运行的效率比用二进制rpm安装要高一些[/quote:ab97c2f776]
這說法沒根據.
若你寫好 spec , 並包進 tarball 裡.
那, rpmbuild -tb tarball 就能包一個 rpm 出來.

i repeat:
你原本用 tarball 方式跑的"所有命令", 都可在 spec 裡定義.

換句話說:
1) tarball 能跑的 rpm 完全可跑
2) rpm 能跑的, tarball 可未必能跑

 宁愿冷酷到底 回复于:2005-09-09 19:51:44
打包的方式不同

 網中人 回复于:2005-09-09 20:46:25
[quote:d2a00b0508="宁愿冷酷到底"]打包的方式不同[/quote:d2a00b0508]
那, 能否說說不同在哪嗎?

 bingosek 回复于:2005-09-10 02:25:19
[quote:8f78f8f3f4="網中人"]
這說法沒根據.
若你寫好 spec , 並包進 tarball 裡.
那, rpmbuild -tb tarball 就能包一個 rpm 出來.

i repeat:
你原本用 tarball 方式跑的"所有命令", 都可在 spec 裡定義.

換句話說:
1) tarball 能跑的..........[/quote:8f78f8f3f4]
我说的是"二进制rpm安装"啊,你用spec还不是要重新编译,不是二进制rpm安装

 網中人 回复于:2005-09-10 02:47:05
[quote:61a035b3a8="bingosek"]
我说的是"二进制rpm安装"啊,你用spec还不是要重新编译,不是二进制rpm安装[/quote:61a035b3a8]
好吧.....
哪麼.....  binary RPM 哪裡來的呢?

參考:
http://bbs.chinaunix.net/forum/viewtopic.php?t=609471

 bingosek 回复于:2005-09-10 21:52:16
[quote:20f43cf779="網中人"]
好吧.....
哪麼.....  binary RPM 哪裡來的呢?

參考:
http://bbs.chinaunix.net/forum/viewtopic.php?t=609471[/quote:20f43cf779]
作者编译出来的,为了体现兼容性,不是每个环境下都能有较高的效率

 網中人 回复于:2005-09-10 23:14:12
唉... 看來你還是搞不懂我所表達的意思...

我說了:
tarball 能做的, rpm 也能做, 只是做的更用心.

假設:
A 機器提供了 tarball source
B 機器抓回去, 自己 compile 裝好.
那, C 機器抓回去, 加了個 spec 包成 binary RPM, 再裝 rpm .
請問 C 最後裝的不是 binary rpm 嗎?
比 B 差很多嗎?

因此, 我不覺的你之前說的"用源代码编译后软件运行的效率比用二进制rpm安装要高一些"是成立的.

若你硬要說, 將 C 包好的 binary 拿到 B 去裝, 比不上直接從 A 抓 tarball 到 B 上裝.
那好, 我們能否在 B 上寫 spec 然後包成你所謂的"二進制 rpm"呢?
請問真的就效率不如 tarball 了嗎?

又, 你一定硬要說, 自己包 rpm 不算是"二進制"方式.
那我弄一台跟 B 一樣環境的 D 機器來包, 然後再將"二進制"拿到 B 去, 
這樣總算符合你所"限"的條件了吧?

我今天專門針對軟件管理寫了篇小文章, 已經將 tarball 與 RPM 的基本原理說明了.
歡迎你批評指教.

p.s.
為免誤會(尤其看了"站務版"的幾篇文章後), 
我必需小心聲明一下:
1) 對 bingosek 兄的技術與為人, 小弟是很敬佩的.
2) 我提出的討論, 只就技術層面論述, 不泄及人際面.
3) 我的言論也不見的是絕對正確的, 提出來, 就是希望透過討論共同進步, 還請多多指教.
4) 當然了, 我的文章絕不是抄襲得來的...  ^_^

 bladefenix 回复于:2005-09-10 23:24:49
RPM包连个README 都没有
也不显示安装进程。。
出了问题都没办法解决。。
感觉TAR包来的好些。。

 wolfg 回复于:2005-09-10 23:31:06
[quote:b27cd8c04e="bladefenix"]RPM包连个README 都没有
也不显示安装进程。。
出了问题都没办法解决。。
感觉TAR包来的好些。。[/quote:b27cd8c04e]

你把rpm的man page看好了以后就不会这样说了

 網中人 回复于:2005-09-10 23:31:09
[quote:39ce99f021="bladefenix"]RPM包连个README 都没有
也不显示安装进程。。
出了问题都没办法解决。。
感觉TAR包来的好些。。[/quote:39ce99f021]
那是你不知道, 不是沒有...
RPM 提供的 infomantion 及 documentation 絕對不會比 tarball 要少.

下面這篇, 或需要你"花點時間"看看:
http://bbs.chinaunix.net/forum/viewtopic.php?t=609471

 bingosek 回复于:2005-09-10 23:45:29
[quote:2e82264ab8]為免誤會(尤其看了"站務版"的幾篇文章後), 
我必需小心聲明一下: 
1) 對 bingosek 兄的技術與為人, 小弟是很敬佩的. 
2) 我提出的討論, 只就技術層面論述, 不泄及人際面. 
3) 我的言論也不見的是絕對正確的, 提出來, 就是希望透過討論共同進步, 還請多多指教. 
4) 當然了, 我的文章絕不是抄襲得來的...  ^_^[/quote:2e82264ab8]
客气客气 :mrgreen: 
当然是技术讨论啦 :mrgreen: 

我没有怀疑你说的用src.rpm用spec编译的代码跟利用tar源代码编译执行效率一样的问题
也没有否认
[quote:2e82264ab8]tarball 能做的, rpm 也能做, 只是做的更用心[/quote:2e82264ab8]

我是说,在网上许多软件的发布采用2种方式:tar源代码包和rpm二进制包,部分软件还有的src.rpm和debian deb包,rpm二进制包为了体现兼容性,能在所有的X86平台运行,是牺牲了一定的运行效率的,指在某些平台而言(估计编译时gclearcase/" target="_blank" >cc增加了某些参数,打开了386兼容模式吧)
在网上的二进制包常见的有以下几种:
xxxxx-i386.rpm
xxxxx-i586.rpm
xxxxx-i686.rpm
xxxxx-athlon.rpm
xxxxx-x86_64.rpm
这些二进制包都是针对不同的平台编译的,xxxxx-i386.rpm兼容所有的x86机器.
如果你的cpu是athlon,使用xxxxx-i386.rpm执行效率就没有使用xxxxx-athlon.rpm的高
[quote:2e82264ab8]用源代码编译后软件运行的效率比用二进制rpm安装要高一些[/quote:2e82264ab8]
我这句话的引申意思就是:
如果你装软件时只能找到xxxxx-i386.rpm,而且你对软件代码运行的效率比较在乎,那么二进制的rpm安装方式已经不能满足你的要求,如果软件还提供tar源代码包下载的话,那么下载重新编译会更好些

祝:中秋快乐,今天单位发月饼了 :em02: 但是没发钱 :em08:

 網中人 回复于:2005-09-11 00:15:06
okay, 看來是誤會一場了...  ^_^
很感謝您的補充說明呢!

關於直接抓 binary rpm 回來裝的問題, 在某一程度上, 大都出於三種原因:
1) 無知
2) 大膽
3) 偷懶

前者, 主要是對背後的原理不了解, 以為只要能抓的都可以裝.
但後兩者, 卻是不可原諒的錯誤, 不過, 有時在沒有選擇的情況下, 也是頗為無奈的事情.

還有, 現在抓的較新開發的軟件, 其 tarball 裡大都有提供 rpm spec .
不過, 這項工作若不是開發者提供的話, 那包裝者需要付出的努力將更多.
除了這些因素外, 不同的 distrubition 在 patch 上的工作也不盡相同,
這越加造成 binary rpm 的散佈局限.
因此, 我個人都很強調 rpm 的 official 屬性, 也就是盡量到 distro 官方抓 rpm.
要是沒有供硬件平台適合的 binary rpm, 那就抓 source rpm 回來 rebuild .
假如 package 還沒納入 distro 官方清單之中的話, 那就盡量使用 spec 來 build 自己的 rpm .
除非真的再無其他管道了, 那也只能用 tarball 囉... 畢竟這也是行之有年的方法了.

只是, 我們要做的, 不光是"好", 還要做得"更好"!
那就需要我們更加用心了...

呵... 中秋快樂啊!
月餅不要吃太多哦, 尤其以介中年的朋友....  ^_^

 imkuang 回复于:2005-09-11 09:53:37
据我所知,rpm更有系统性。它可以检查依赖问题,甚至自己主动安装所需的依赖包。因为有专门的数据库,你也可以通过一个简单的命令卸载rpm包,卸载时依旧检查这个包是否为系统其它包依赖,这个功能似乎是tar包做不到的。

 ytlxx 回复于:2005-09-11 10:00:07
说得好,顶一下:)

 SkyBelieve 回复于:2005-09-11 18:23:56
向各位老大学习。

 wujiemmc 回复于:2005-09-12 22:09:51
安装还是RPM 方便些 ,TAR 则较为复杂些。

原文转自:http://www.ltesting.net