Linux作業系統之rpm五種基本操作分享

來源:互聯網
上載者:User

   Linux作業系統現在已經成為流行的作業系統,很多的人都開始學習,Linux作業系統包括了很多的專業知識,今天和大家講講Linux作業系統中的rpm基本操作。希望你學會本文中提到rpm的五種基本操作知識,會對你有所協助。rpm有五種基本的操作方式(不包括建立軟體包): 安裝, 卸載, 升級, 查詢,和驗證。 下面我們就來逐一的講解吧。

  一、 安裝rpm包

  rpm 軟體包通常具有類似foo-1.0-1.i386.rpm 的檔案名稱。其中包括軟體包的名稱(foo),版本號碼(1.0),發行號(1),和 硬體平台(i386)。安裝一個軟體包只需簡單的鍵入以下命令:

  代碼如下:

  $ rpm -ivh foo-1.0-1.i386.rpm

  foo ####################################

  rpm安裝完畢後會列印出軟體包的名字(並不一定與檔案名稱相同),而後列印一連串的#號以表示安裝進度。雖然軟體包的安裝被設計的盡量簡單易行,但還是可能會發生如下的錯誤:

  1、 軟體包已被安裝如果您的軟體包已被安裝, 將會出現以下資訊:

  代碼如下:

  $ rpm -ivh foo-1.0-1.i386.rpm

  foo package foo-1.0-1 is already installed

  error: foo-1.0-1.i386.rpm cannot be installed

  如果您仍舊要安裝該軟體包,可以在命令列上使用――replacepkgs 選項,rpm將忽略該錯誤資訊強行安裝。

  2、檔案衝突如果您要安裝的軟體包中有一個檔案已在安裝其它軟體包時安裝,會出現以下錯誤資訊:

  代碼如下:

  rpm -ivh foo-1.0-1.i386.rpm

  foo /usr/bin/foo conflicts with file from bar-1.0-1

  error: foo-1.0-1.i386.rpm cannot be installed

  要想讓rpm 忽略該錯誤資訊, 請使用――replacefiles 命令列選項。

  3、未解決依賴關係rpm軟體包可能依賴於其它軟體包,也就是說要求在安裝了特定的軟體包之後才能安裝該軟體包。如果在您安裝某個軟體包時存在這種未解決的依賴關係。會產生以下資訊:$ rpm -ivh bar-1.0-1.i386.rpm failed dependencies: foo is needed by bar-1.0-1您必須安裝完所依賴的軟體包,才能解決這個問題。如果您想強制安裝(這是個壞主意,因為安裝後的軟體包未必能正常運行),請使用――nodeps 命令列選項。

  二、卸載rpm包

  卸載軟體包就象安裝軟體包時一樣簡單:$ rpm -e foo注意這裡使用軟體包的名字name ``foo'', 而不是軟體包檔案的名字file ``foo-1.0-1.i386.rpm''.如果其它軟體包依賴於您要卸載的軟體包,卸載時則會產生錯誤資訊。如:$ rpm -e foo removing these packages would break dependencies:foo is needed by bar-1.0-1若讓rpm忽略這個錯誤繼續卸載(這可不是一個好主意,因為依賴於該軟體包的程式可能無法運行),請使用――nodeps 命令列選項。

  三、升級rpm包

  升級軟體包和安裝軟體包十分類似:

  代碼如下:

  $ rpm -uvh foo-2.0-1.i386.rpm

  foo ####################################

  rpm將自動卸載已安裝的老闆本的foo 軟體包,您不會看到有關資訊。事實上您可能總是使用 -u 來安裝軟體包,因為即便以往未安裝過該軟體包,也能正常運行。因為rpm執行智能化的軟體包升級,自動處理設定檔,您將會看到如下資訊:saving /etc/foo.conf as /etc/foo.conf.rpmsave這表示您對設定檔的修改不一定能向上相容。 因此,rpm 會先備份老檔案再安裝新檔案。您應當儘快解決這兩個設定檔的不同之處,以使系統能持續正常運行。

  因為升級實際包括軟體包的卸載與安裝兩個過程,所以您可能會碰到由這兩個操作引起的錯誤。另一個你可能碰到的問題是:當您使用舊版本的軟體包來升級新版本的軟體時,rpm會產生以下錯誤資訊

  代碼如下:

  $ rpm -uvh foo-1.0-1.i386.rpm

  foo package foo-2.0-1 (which is newer) is already installed

  error: foo-1.0-1.i386.rpm cannot be installed

  如果你確有需要將該軟體包“降級,加入 ――oldpackage 命令選項就可以了。

  四、 查詢已安裝的軟體包

  使用命令rpm -q來查詢已安裝軟體包的資料庫。簡單的使用命令 rpm -q foo 會列印出foo軟體包 的包名,版本號碼,和發行號:

  $ rpm -q foo

  foo-2.0-1

  除了指定軟體包名以外,您還可以使用以下選項來指明要查詢哪些軟體包的資訊。這些選項被稱之為 “軟體包指定選項”。。 -a 查詢所有已安裝的軟體包。 -f 將查詢包含有檔案。 的軟體包。 -p 查詢軟體包檔案名稱為的軟體包還可以指定查詢軟體包時所顯示的資訊。它們被稱作資訊選擇選項:。 -i 顯示軟體包資訊,如描述, 發行號, 尺寸, 構建日期, 安裝日期, 平台, 以及其它一些各類資訊。。 -l 顯示軟體包中的檔案清單。。 -s 顯示軟體包中所有檔案的狀態。。 -d 顯示被標註為文檔的檔案清單(man 手冊, info 手冊, readme's, etc)。。 -c 顯示被標註為設定檔的檔案清單。這些是您要在安裝完畢以後加以定製的檔案(sendmail.cf, passwd, inittab, etc)。

  對於那些要顯示檔案清單的檔案, 您可以增加-v 命令列選項以獲得如同 ls -l 格式的輸出。

  五、 驗證軟體包

  驗證軟體包是通過比較已安裝的檔案和軟體包中的原始檔案資訊來進行的。驗證主要是比較檔案的尺寸, MD5 校正碼,檔案許可權, 類型, 屬主和使用者組等。

  rpm-V命令用來驗證一個軟體包。您可以使用任何包選擇選項來查詢您要驗證的軟體包。命令rpm -V foo 將用來驗證foo軟體包。又如:。 驗證封裝含特定檔案的軟體包:rpm -Vf /bin/vi。 驗證所有已安裝的軟體包:rpm -Va。根據一個RPM包來驗證:rpm -Vp foo-1.0-1.i386.rpm如果您擔心你的RPM資料庫已被破壞,就可以使用這種方式。

  如果一切均校正正常將不會產生任何輸出。如果有不一致的地方,就會顯示出來。輸出格式是8位長字串, ``c'' 用以指設定檔, 接著是檔案名稱。

  8位字元的每一個 用以表示檔案與RPM資料庫中一種屬性的比較結果 .``.'' (點)表示測試通過。。下面的字元表示對RPM軟體包進行的某種測試失敗:顯示字元 錯誤源5 MD5 校正碼S 檔案尺寸L 符號串連T 檔案修改日期D 裝置U 使用者G 使用者組M 模式e (包括許可權和檔案類型)

  如果有錯誤資訊輸出, 您應當認真加以考慮,是通過刪除還是重新安裝來解決出現的問題。

  六、教你一招

  RPM不僅是安裝/卸載程式的工具,它還是系統維護和診斷的一把好手。看過下面幾個例子你就會領教它的厲害了。。 如果您誤刪了一些檔案,但您不能肯定到底都刪除了那些檔案,怎麼辦?您可以鍵入:rpm -Va rpm會在螢幕上顯示出檔案刪除的情況。若你發現一些檔案丟失了或已被損壞,您就可以重新安裝或先卸載再安裝該軟體包。。 如果您碰到了一個自己不認識的檔案,要想查處它屬於哪個軟體包,您可以輸入以下命令rpm -qf /usr/X11R6/bin/xjewel輸出的結果會是:xjewel-1.6-1。如果發生綜合以上兩個例子的情況,如檔案/usr/bin/paste出了問題。您想知道哪個軟體包中包含該檔案,您這時可以簡單的鍵入:rpm -Vf /usr/bin/paste。 如果您想瞭解正在使用的程式的詳細資料, 您可以鍵入如下命令來獲得軟體包中關於該程式的文檔資訊:rpm -qdf /usr/bin/ispell輸出結果為:

  代碼如下:

  /usr/man/man4/ispell.4

  /usr/man/man4/english.4

  /usr/man/man1/unsq.1

  /usr/man/man1/tryaffix.1

  /usr/man/man1/sq.1

  /usr/man/man1/munchlist.1

  /usr/man/man1/ispell.1

  /usr/man/man1/findaffix.1

  /usr/man/man1/buildhash.1

  /usr/info/ispell.info.gz

  /usr/doc/ispell-3.1.18-1/README

  您發現了一個新的koules RPM,但您不知道它是做什麼的,您可以鍵入如下命令:rpm -qip koules-1.2-2.i386.rpm。 現在您想瞭解koules的 RPM包在系統裡安裝了哪些檔案,您可以鍵入:rpm -qlp koules-1.2-2.i386.rpm輸出結果為:

  代碼如下:

  /usr/man/man6/koules.6

  /usr/lib/games/kouleslib/start.raw

  /usr/lib/games/kouleslib/end.raw

  /usr/lib/games/kouleslib/destroy2.raw

  /usr/lib/games/kouleslib/destroy1.raw

  /usr/lib/games/kouleslib/creator2.raw

  /usr/lib/games/kouleslib/creator1.raw

  /usr/lib/games/kouleslib/colize.raw

  /usr/lib/games/kouleslib

  /usr/games/koules

  以上只是幾個常見例子。隨著您進一步的使用RPM,您會發現它的各種功能選項組合可以實現更為強大的RPM包管理功能。通過本文希望你能牢牢掌握Linux作業系統rpm五種基本的操作方式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.