要回答這個問題,我們需要回到三個最基本的問題上面來:
計算機需要獲取資料和程式來做它應當做的事情,把資料和程式交給計算機,意味著把它們放進計算機的大容量儲存裡,現在,這又意味著放進硬碟裡。資料和程式將會在硬碟裡以檔案的形式被儲存。
而資料,資料不僅需要空間去儲存它,更重要的是,它需要以程式能處理的格式儲存。
最後,談一談程式,程式和資料一樣,也需要一定的儲存空間,但對於程式來說,以下幾點更為重要:
現在想一想,當我們需要在電腦上安裝軟體時,我們可能採取的方式可能有以下兩種:
閱讀程式的文件,把程式,配置檔案,以及資料拷貝到你的電腦上,確保它們的命名規範,並且放在了硬碟上的合適位置,而且,硬碟有足夠的空間來放下這些東西。接下來,按你的意願修改一下配置檔案,最後,執行程式。
讓電腦為你做這些事。
如果你覺得第一種方式還ok啊,可以接受。但是你有沒有想過你需要同時追蹤多少個檔案,在linux系統中,乙個程式有超過兩萬個檔案是很正常的事情,有大量的文件需要你去閱讀,大量的檔案需要拷貝,還有配置。而且,當你想要更新軟體版本的時候,你要怎麼辦?凡此種種,不一而足。
有些人會覺得第二種方式最簡單啦:讓電腦為你做這些事。rpm的出現,就是為了滿足這些人的期待!
計算機能像趕鴨子一樣,很好地管理2萬個以上的檔案,這也是包管理軟體擅長做的。不過,說了這麼久,到底什麼是包?
計算機眼中的包和我們日常生活中見到的包,其實是相似的,它們都能夠把一些相關的東西放在同乙個地方。在它們被使用前,它們都需要先被「開啟」,在包上可以貼乙個標籤,以說明它裡面裝的是什麼東西。
一般,包管理系統會把各種不同的檔案,包括程式,資料,文件和配置資訊,全部打包在乙個特定格式的檔案裡,這個檔案就叫乙個包檔案。以rpm為例,這個包檔案叫做「package」,「.rpm檔案」,或者直接就叫「rpm」,名字不同,但其實代表的是一樣東西。乙個包,包含了rpm安裝所需要的所有東西。
乙個rpm包通常包含下面這些型別的軟體:
作業系統的乙個特定部分,例如,作業系統啟動時的初始化指令碼,或乙個特別的命令列shell,或者是乙個支援web伺服器的軟體。
使用包的乙個最明顯的好處是包是作為乙個整體被管理的,如果需要移動該包,只需要移動整個包,而不用擔心會漏掉某些檔案,儘管這是乙個最明顯的好處,但是卻不是最大的好處。
使用包的最大的好處是,包本身攜帶了它應該如何被安裝的資訊。不僅可以攜帶安裝的步驟資訊,也可以攜帶解除安裝所需要的步驟資訊。
儘管包的使用已經降低了軟體安裝的複雜度,但它還是做不到不用你任何的參與就能做到安裝,解除安裝。跟蹤哪些包已經安裝在你的系統上了,這是件很必要的事情,特別是當你所要安裝的包依賴於其他包時。
你會發現,你對包的管理很可能就是在做以下這些事:
你需要總是做這些事情,也會很容易就無法對包的資訊進行跟蹤和掌握。你應該知道些什麼有關於包的資訊呢?
前文為你描述了乙個美好的願景:包管理,能夠讓你更容易安裝、更新和刪除包;以多種方式檢視包的資訊;確保正確安裝了包;甚至追蹤配置檔案的改動。但是,你要怎麼做到這些呢?
前文也已經提過,最好的方式去做這些事就是讓你的電腦幫你做。很多公司和組織已經開發了包管理系統。包管理系統主要有兩種實現方式:
一些包管理系統關注的是使用包的步驟。
另外一些包管理系統關注的是包所涉及的檔案,並對這些檔案進行修改追蹤。
這兩種實現方式有各自的優勢,但也有各自的缺點。第一種方式,能更容易地安裝新的包,但是刪除舊包很困難,而且,幾乎不可能得到任何關於已安裝包的有意義的資訊。
第二種方式得到已安裝包的有用資訊很容易,安裝和刪除包也比較容易。但這方式乙個最不好的地方在於它無法在安裝或刪除包時執行一些特別的命令。
而實際上,沒有乙個包管理系統使用單獨一種方式來實現,都是兩種方式的組合實現,
rpm的設計目標可以用一句話來概括:"something for everyone",儘管rpm存在的主要原因是red hat公司為了更方便地在它們的linux發行版中安裝幾百個包,但這並不是rpm存在的唯一理由。我們可以看看red hat公司在設計rpm時的需求:
正如我們在前文中可以看到的那樣,安裝乙個包需要很多複雜的步驟。如果把這些事情交給人類來做,失敗率是很高的。因此rpm的目的就是要幫助人們更簡單地安裝包,解除安裝包。
軟體就像生活一樣,總有許多意想不到的問題,rpm應該能夠捕獲到這些問題,比如說檔案缺失或者檔案非法修改。
節約了包建立者的很多時間和精力。
站在包建立者的角度上看,使rpm從源**開始工作十分重要。為什麼呢?
使用源**,可以讓他們把為了修改bug、新增新功能等等而新增的修改與之前的修改區分開來,這對於包構建者來說是一件好事,因為他們很多人不是軟體的源作者。
把修改區分開,這樣即使在幾個月以後,依然能夠明確地知道對包有過哪些改動
包建立者需要做的一件繁雜的事就是使程式能夠在不同型別的電腦上執行,rpm能夠得到程式的源**,加上一些必要的修改使其能夠被正確構建,這是非常方便的。
每個rpm包都有一些資訊,用來作為自身的唯一標識。我們把這些資訊叫做乙個包名片,下面是兩個包名片的樣本例子:
儘管這些名片看起來似乎是十分不同的,但是他們都遵循rpm包的包名片命名規則。每個包名片由以下三部分按順序組成:
組成部分1:軟體的名字
每個包名片以軟體的名字開始,例如上例中,分別為nls和perl。
組成部分2:軟體的版本
例如上例中,版本號分別為1.0和5.001m。
組成部分3:包的發布號
包的發布號反映出包在同乙個版本號下重新構建的次數,重新的構建的原因可能是因為修復了乙個bug。習慣上,發布號從1開始。上例中的發布號分別為1和4。
maximum rpm
linuxRPM包管理和軟體安裝
簡介 linux軟體包的分類 原始碼包 開源,指令碼安裝,複雜,速度慢,可控性高,效率低,不常用 二進位製包 系統預設,rpm包 管理簡單,速度快,不開源,可控性低,效率高,常用rpm包命名規則 名稱 版本 修正版 型別 for example software 1.2.3 1.tar.gz 軟體名...
linux rpm軟體包管理器
rpm包 的 查詢命令 選項英文 含義 q query 查詢 a all所有 iinfo 資訊 l list 顯示所有相關檔案 ffile 檔案,顯示檔案對應 rpm 包 rpm qa grep rpm qa less rpm qi 軟體全包名rpm ql 軟體全包名rpm qf 檔案的全路徑rpm...
Linux RPM軟體包管理最新詳解
軟體管理器 可以對軟體包進行乙個集中的管理,幫助使用者搜尋 安裝 管理軟體包 rpm全名是 redhat package manager 縮寫則為rpm。顧名思義,當初這個軟體管理的機制是由red hat這家公司發展出來的。rpm是以一種資料庫記錄的方式來將你所需要的軟體安裝到你的linux系統的一...