歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux系統下軟件包的制作方法和過程

總的情況下Linux下軟件安裝主要有三種方式:
一種是源碼安裝,需要用戶自己手動編譯
另一種是RPM包(RedHat Linux Packet Manager),通過RPM命令就可以實現安裝
還有一種為*.bin文件,安裝方法與Windows下的安裝過程類似


通常情況下Linux 安裝軟件主要通過以下兩種方式
① 文件名形如xxx.i386.rpm ,軟件包以二進制形式發布.
② 文件名形如xxx.tar.gz ,軟件包多以源碼的形式發布.
Linux軟件包管理可以分為三類:二進制包的管理,源代碼包的管理,腳本安裝

另外值得注意的是目前存在各種Linux的發行版獲取和安裝軟件的方式也有很多例如
【】redhat/centos的yum安裝(有專門的鏡像源)
【】Ubuntu/Fedora/Debian的sudo apt-get適用於deb包進行管理安裝
【】也有的軟件是通過刻盤加密的形式然後進行安裝的(例如cnyunwei)
【】在系統運維管理人員方面也有通過ssh、C/C++語言或者py執行的一些軟件命令進行自動化管理的應用,這裡就不做詳細介紹了。

下面有一張圖可以清晰地表示linux軟件應用的架構關系:
\
在Linux啟動的時候。首先會啟動內核(kernel),內核是一段計算機程序,這個程序直接管理管理硬件,包括CPU、內存空間、硬盤接口、網絡接口等等。所有的計算機操作都要通過內核傳遞給硬件。我們可以看到,Linux利用kernel實現軟硬件的對話。通過系統調用的這個重要的接口,Linux將上層的應用與下層的kernel完全分離開,為程序員隱藏了底層的復雜性(相應的,也提高了上層應用的可移植性)。當我們在升級kernel的時候,也可以保持系統調用的語句不變,從而讓上層應用不感受到下層的改變。庫函數利用系統調用創造出模塊化的功能,而shell則提供了一個用戶界面,並讓我們可以利用shell的語法編寫腳本,以整合程序。有了這些思想我們可以快速地了解linux的軟件應用的安裝和工作原理,也因此為了方便和獲取更多企業應用我們需要在linux系統上開發並且通過源碼編譯的方式制作各種軟件包從而為信息化時代服務。

本文主要介紹源碼安裝與RPM包的安裝

源碼包和商業軟件包根據各個公司或作者的實際情況出發(可以是tar等格式的壓縮包,也可以是bin的源程序,可以是已經編譯好了的直接拿來運行的文件,也可以是光盤虛擬化文件等其他介質來制作發布的iso文件等)封裝成一種特定的格式發布從而進行相應的軟件服務。其實通過yum或者make install命令安裝的軟件在系統都會自動生成rpm包(只是參數和功能模塊差異和嚴謹的)

簡介:

RPM(RedHat Package Manager,紅帽子軟件包管理器)用於軟件包的安裝、查詢、升級、校驗、卸載,以及生成.rpm格式的軟件包 RPM的使用前

掛載linux系統(centos4為例)的安裝光盤,當然也可在網上下載免費的RPM包.
# mount/dev/cdrom ---掛載光盤
# cd/media/cdrom/CentOS/RPMS ---進入光盤中RPM包的目錄(可以通過#mount命令來查看光盤的掛載點一般會在最後一行顯示)
# ls

一、源碼包安裝
1、*.src.rpm形式的源代碼軟件包
用法:
安裝: rpm –rebuild *.src.rpm
cd /usr/src/dist/RPMS
Rpm –ivh *.rpm
卸載: rpm –e packagename

2、.tar.gz,*.tgz,*.bz2形式軟件包的安裝

首先進行解壓,命令如下
tar zxvf *.tar.gz
tar xvfz *.tgz
tar xvfj *.tar.bz2
解壓之後進入解壓目錄,然後進行以下操作(一般情況,具體看軟件包的文件名)
配置:./configure
編譯:make
安裝:make install
卸載:make uninstall

源碼安裝有一定的難度,不同的軟件可能有不同的安裝,一般在解壓之後應該先閱讀說明文檔,按照說明進行安裝,上面說的只是一般情況。

二、RPM包安裝
RPM安裝包格式是由Redhat公司提出的,大大的簡化了Linux下軟件的安裝,首先介紹一下通用選項。

-v:顯示附加信息

-vv:顯示調試信息

--root directory:讓RPM以directory作為根目錄,這樣預安裝程序和後安裝程序都會安裝到這個目錄下。

1、安裝:rpm –i<options> file.rpm

Options:

h:安裝時輸出hash記號

test:只對安裝進行測試,不真正安裝

--persent:以百分比形式顯示安裝進度

--excludedocs:不安裝軟件包中的文檔

--replacepkgs:強制重新安裝

--replacefiles:替換屬於其它軟件包的文件

--force:忽略軟件包及文檔沖突

--ignorearch:不校驗軟件包結構

--ignoreos:不檢查軟件包運行的操作系統

--nodeps:不檢查依賴性關系

--noscripts:不運行預安裝和後安裝腳本程序

2、刪除 rpm –e<option> pkgname

Option:

--test:只做刪除測試,不真正刪除

--noscripts:不運行預安裝和後安裝腳本程序

--nodeps:不檢查依賴性

注意:pkgname是軟件包的名字,不是rpm包名字,而是安裝後軟件包的名字,可以用查詢命令來查詢軟件包名。

3、升級 rpm–U(或者—upgrade)<option>file.rpm

Option:

基本與安裝時的option一樣,有幾個特殊的:

--oldpackage:允許一個舊版本

4、查詢 rpm –q(或者--query)<option>

Option:

-p PACKAGE_FILE:查詢軟件包的文件

-f FIEL:查詢FILE屬於哪個軟件包

-a:查詢所有安裝的軟件包

-g group:查詢屬於group組的軟件包

--whatproVidesCAPABILITY:查詢提供了CAPABILITY功能的軟件包

--whatrequiresCAPABILITY:查詢所有需要CAPABILITY功能的軟件包

-i:顯示軟件包的概要信息

-l:顯示軟件包中的文件列表

-c:顯示配置文件列表

-s:顯示文件列表

-scripts:顯示安裝、卸載,校驗腳本

--qf:以用戶指定的方式查詢

--dump:顯示每個文件的校驗信息

--proVides:顯示軟件包提供的功能

-R:顯示軟件包需要的功能

5、校驗已經安裝的軟件包 rpm –V(or –verify,or –y)<option>

Option選項與其它命令的類似

6、校驗軟件包中的文件 rpm –K(or –checksig)<option> file.rpm

Option:

-v:顯示版本信息

-vv:顯示調試信息

--rcfile FILELIST:設置rpmrc 文件為FILELIST

7、其它RPM選項

--rebuilddb:重建RPM資料庫

--initdb:創建一個新的RPM資料庫


--quiet:盡可能地減少輸出

--help:顯示幫助文件

--version:顯示RPM當前版本

上面只是對常用選項的總結,具體還有什麼問題,可以用man rpm命令進行查看,官方文件永遠最好的老師。

三、*.bin格式安裝文件的安裝

只需雙擊或單擊*.bin文件就可以根據提示安裝了,不再敷述。

要想制作一個RPM格式的軟件包,需要編寫軟件包描述文件。其標准命名格式為:軟件名-版本號-釋出號.spec(現在大多情況下都是直接用:軟件名.spec),這個文件,詳細描述了有關該軟件包的諸多信息,如軟件名,版本,類別,說明摘要,創建時要執行什麼指令,安裝時要執行什麼操作,以及軟件 包所要包含的文件等等。有了這個文件,RPM就可以制作出相應的包裹文件來。當然現在也有例如Source rpm這樣開源的包制作輔助工具只要一個程序源即可通過向導下一步即可制作。

簡單的一個制作例子:

其實最好的辦法是做個軟件包。我記得 rpm 和 debian 都有快速打包的開源軟件可以直接拿來使用即可。

eg>>將nginx的tar包制作為RPM包

1. 下載nginx的源碼包

2. 將文件放到/usr/src/redhat/SOURCES/目錄下

3. 編寫SPEC文件

[root@mail SPECS]# vinginx-0.8.35.spec

Summary:the first rpmpackage

Name:nginx

Version:0.8

Release:35

Vendor:[email protected]

License:Share

Group:Applications/Text

Source0:nginx-0.8.35.tar.gz

%description

my test nginx

%prep

tar -zxvf $RPM_SOURCES_DIR/nginx-0.8.35.tar.gz

%build

cd$RPM_BUILD_DIR/nginx-0.8.35

./configure

make

%install

cd$RPM_BUILD_DIR/nginx-0.8.35

make install

%clean

rm -rf$RPM_BUILD_DIR/nginx-0.8.35

%files

%defattr(-,root,root)

/usr/local/nginx/sbin/nginx

%doc $RPM_BUILD_DIR/nginx-0.8.35/README

4. 制作RPM包
[root@mail SPECS]#rpmbuild -ba nginx-0.8.35.spec

若運行沒有錯誤,則產生/usr/src/redhat/RPMS/i386/nginx-0.8-35.i386.rpm和/usr/src/redhat/SRPMS/nginx-0.8-35.src.rpm 兩個文件。
Copyright © Linux教程網 All Rights Reserved