rpm問題解答

2021-09-30 03:48:57 字數 4105 閱讀 9316

第一篇rpm 1 

什麼是rpm

rpm 

即redhat package management

由此可見這是

redhat

的發明,也是

redhat

如此成功的重要原因之一 2 

為什麼需要

rpm 在m$

的環境下有大量的軟體是通過安裝程式

來進行管理的。

linux

下面也要解決相應的問題,

這裡的問題涵蓋了乙個軟體的各個生命週期

安裝,配置,解除安裝。然而

linux

的系統變化繁多

配置也不像

windows

那樣集中。面對種種問題,

redhat

針對自己的系統提出了乙個較好的辦法來

管理成千上百的軟體。這就是

rpm管理系統。在系

統中安裝了

rpm管理系統以後,只要是符合

rpm文

件標準的打包的程式都可以方便的安裝,公升級,

解除安裝。3 rpm

打包的程式都有什麼特點 a 

副檔名是

rpm

b 檔名本身反映了該軟體的大量資訊 比如

mypackage-1.1-2tl.i386.rpm

mypackage

是說明軟體的名稱這是將來在

rpm管理

系統中登記的名字。

1.1是版本號,憑此來發現軟體的新舊

有時候甚至還變為

1.1-19990112

這樣的形式即

2023年1

月12日發布的

1.1版本

2tl這裡的

2是說明一種發行號意義不大,但可能

在生成該包時所用的環境不一樣,有時變為

2glibc2.0x

這樣的形式即

glibc

和2.0x

的核心下生

成的該包,因此最好在相同的環境下使用 至於

tl即turbolinux

當然還有可能是rh了

:) i386

說的是此包是針對

intel

平台的相應的常見的 還有

sparc

針對sun的

4 怎麼安裝乙個

rpm包

rpm -i you-package.rpm即可

但安裝時可能出現如下資訊

... conflict with ...

這是說你安裝的包裡有一些檔案可能會覆蓋現有

的檔案,預設時這樣的情況下是無法正確安裝的

可以用rpm --force -i 

強制安裝即可

有時會有

... is needed by ...

... is not installed ...

這樣的情況是此包需要的一些軟體你沒有安裝

但有時這樣的資訊是不必的 比如

gnome-1.0

它需要xscreen

但如果你就想使用其中

的一部分功能比如

panel,gedit,gnorpm

等等,並不需 要

xscreen

因此可以用

rpm --nodeps -i 

來忽略此資訊

因此總結為

rpm -i --force --nodeps 

什麼包都能

安裝上,但不保證能發揮功能

還可以試試

rpm -u (upgrade 公升級)

不過最好不要用(純屬個人意見) 5 

怎麼解除安裝乙個軟體

非常簡單

rpm -e your-package即可

用上面那個例子

mypackage-1.1-2tl.i386.rpm

安裝以後應該用

rpm -e mypackage

即可不需要有原來的安裝軟體

有時候出現

... is needed by ...

這說明這個軟體被其他軟體需要,不能隨便解除安裝

但有時也可能需要解除安裝 比如

tlc中安裝管理程式

xturbopkg

只需要

perl-tk,perl-gettext,turbodesk

這幾個包

可他的要求還有很多其他的包,把那些包解除安裝時就 會有

... is needed by xturbopkg

不管他用

rpm -e --nodeps即可

很明顯--nodeps 

即no dependencity 6 

怎麼了解乙個包裡都有哪些軟體

...

rpm -q q 

代表查詢

-ql list 

所有安裝的檔案

-qi info 

列出這個軟體的簡要說明

-q  

只列出著包是否安裝了並有版本等資訊 使用

-q必須安裝了包以後,後面跟軟體名

比如上面的

mypackage

可以試一試

rpm -q rpm 

看看你系統的

rpm版本

7 rpm

可否在rh

以外的系統上使用

實際上任何系統都需要包管理系統,而

rpm系統

確實優秀,因此很多

linux

都使用rpm

系統。但

rpm系統

前面提到了他是為

rh專門設計的,因此這些系統都擁有 同

rh相似的配置系統,這也限制了

rpm的應用。

tl,mandrake

等系統都使用

rpm

由於rpm

有源程式因此可以在別的系統上編譯執行,

所以有可能在別的系統上使用

rpm

8 除了

rpm還有其他選擇嗎

debian

的deb

包,slakware

也都有自己的包管理系統 9 

安裝了乙個程式為什麼不能執行

情況太複雜了

1 ...so... not found

安裝相應的庫程式

,實際上在安裝乙個軟體時會提示你

缺少某些庫,但你得不到錯誤提示還有可能無法使用該程

序,檢查一下

/etc/ld.so.conf

加入相應庫所在的路徑

比如將qt庫安裝在

/usr/local/lib下

在/etc/ld.so.conf

中加入/usr/local/lib(

單獨一行)

再執行ldconfig

後試試qt

庫就能使用了

有時還不行試試做一些軟連線 比如

mtv-1.0.8

需要sdl0.9 higher

而tlc

中只有sdl0.88

其實在/usr/lib

下做乙個連線

ln -s libsdlx11.so.0.88 libsdlx11.so.0.9

在執行ldconfig

後試試一切正常有時軟體並不需要很新的

支援比如

kde1.1

可以在libstdc++2.7.2

下執行解決的辦法

同樣也是做軟連線

2 error open ...

可能是某些子目錄或檔案找不到試試建乙個 比如

apache_php3

需要乙個

/var/logs

子目錄來訪

logs

建乙個就可以了,找這樣的錯誤要去看系統的

log

在/var/log

子目錄下

3 core dumped

如果你使用

tlc很有可能是

wrap

同軟體矛盾

解決辦法最簡單了做乙個

shell指令碼

比如xkobo

在tlc

下不能執行

做個指令碼

unset ld_preload

xkobo

即可很多程式都能這樣在

tlc下執行

rpm問題解答

第一篇rpm 1 什麼是rpm rpm即redhatpackagemanagement 由此可見這是 redhat 的發明,也是 redhat 如此成功的重要原因之一 2 為什麼需要 rpm 在m 的環境下有大量的軟體是通過安裝程式 來進行管理的。linux 下面也要解決相應的問題,這裡的問題涵蓋了...

gridview問題解答

這樣寫 printisopen convert.toboolean datebinder.eval container.dataitem,isopen cs 是這樣的 public string printisopen bool bisopen else return strhhtml 或者說是這樣...

gridview問題解答

這樣寫 printisopen convert.toboolean datebinder.eval container.dataitem,isopen cs 是這樣的 public string printisopen bool bisopen else return strhhtml 或者說是這樣...