亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > CentOS > 正文

CentOS系統下軟件包的制作方法和過程詳解

2020-07-08 12:41:20
字體:
來源:轉載
供稿:網友

總的情況下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:chenwei01@corp.the9.com

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 兩個文件。

總結:rpm包如何制作之個人經驗

一 RPM介紹

RPM 前是RedHat Package Manager 的縮寫,本意是Red Hat 軟件包管理,顧名思義是Red Hat 貢獻出來的軟件包管理;現在應為RPM Package Manager的縮寫。在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流發行版本,以及在這些版本基礎上二次開發出來的發行版采用; RPM包中除了包括程序運行時所需要的文件,也有其它的文件;一個RPM 包中的應用程序,有時除了自身所帶的附加文件保證其正常以外,還需要其它特定版本文件,這就是軟件包的依賴關系。

RPM可以讓用戶直接以binary方式安裝軟件包,并且可替用戶查詢是否已經安裝了有關的庫文件;在用RPM刪除程序時,它又會聰明地詢問用戶是否要刪除有關的程序。如果使用RPM來升級軟件,RPM會保留原先的配置文件,這樣用戶就不用重新配置新的軟件了。RPM保留一個數據庫,這個數據庫中包含了所有的軟件包的資料,通過這個數據庫,用戶可以進行軟件包的查詢。RPM雖然是為Linux而設計的,但是它已經移值到SunOS、Solaris、AIX、Irix等其它UNIX系統上了。RPM遵循GPL版權協議,用戶可以在符合GPL協議的條件下自由使用及傳播RPM。

二 RPM包分類

我個人認為rpm分為兩大類,

1 二進制類包,包括rpm安裝包(一般分為i386和x86等幾種)和調式信息包等。

2 源碼類包,源碼包和開發包應該歸位此類。

它們之間的關系是,最先我們按rpm打包要求改造軟件項目源碼,當符合要求之后就可以使用rpmbuild命令來生成不同的rpm包,同時生成的包之間版本是直接對應的,比如相同的源碼包將生成完全相同的二進制rpm包。當你在網上查找rpm包時,一般你可以在RPMS目錄中找到預編譯的二進制包,而源碼包則會在SRPMS目錄內。

我們這里提到的RPM制作就是指改造軟件源代碼使之符合RPM打包要求的過程,這也可以等價為RPM源碼包的制作過程,因為當你有了源碼包就可以直接編譯得到二進制安裝包和其他任意包。

三 RPM包制作介紹

RPM包的制作,即是RPM源碼包的制作。

這里我想說說RPM包工作的原理,這將有助于全面的了解RPM包管理系統的知識。

RPM是為解決源碼包不易安裝(需要編譯)和軟件包相互之間依賴(是RPM包管理器可以一定程度解決依賴問題)問題,它通過在探測源碼包在build和install階段的動作獲得最終生成的需要安裝的系統里的文件,并記錄下一些必要的操作(比如安裝完成后執行某項操作),然后把此組成為一個整體,當在用戶安裝此包時把前面獲得的所有問題和記錄的所有操作原原本本的作用的實際系統上。

為一個普通的源碼打RPM包,需要下面一些操作,首先需要對項目的Makefile作必要的改造以支持RPM打包操作(實際上此操作不是絕對的,SPEC文檔和Makefile的是協調統一工作的,只要他們之間配合好了其他都無所謂,我們一般只是推薦大家盡量按行業標準規范操作而已);其次是針對當前項目撰寫SPEC文檔,SPEC文檔包括了RPM打包過程的操作內容和新生成的RPM包的基本信息等,它的作用對象是打包程序rpmbuild。

四 RPM包制作過程

1 準備打包環境

fedora系統下使用如下命令安裝rpmbuild

#yum install rpmbuild

rpmbuild的工作目錄如下,

~/rpmbuild

~/rpmbuild/SOURCES

~/rpmbuild/SPECS

~/rpmbuild/BUILD

~/rpmbuild/RPMS

~/rpmbuild/RPMS/i386

~/rpmbuild/SRPMS

如果你的用戶目錄主目錄下沒有類似目錄結構,你可以通過一個工具軟件來自動配置和生成,如下。

#yum installrpmdevtools

下了運行自動配置命令自動生成如上目錄,并配置一些必要操作。

#rpmdev-setuptree

rpmdev-setuptree命令默認將再當前用戶主目錄下創建一個RPM構建根目錄結構,

如果需要改變次默認位置,可以修改配置文件:~/.rpmmacros中變量_topdir對應的值即可。

一般rpmbuild會在當前用戶的主目錄下自動建立如上目錄結構,如果在你對應用戶的構建目錄中沒有自動建立如上目錄,你可以通過手動方式建立。上面目錄的使用是這樣分配的,SOURCES放置打包資源,包括源碼打包文件和補丁文件等;SPECS目錄放置SPEC文檔;BUILD打包過程中的工作目錄;RPMS目錄存放生成的二進制包,RPM包根據硬件平臺不同分類,i386表示生成i386結構的包將存放在該目錄下;SRPMS目錄存放生成的源碼包。

2 撰寫SPEC文檔

SPEC撰寫是打包RPM的核心,也算是最難的一步,好在我們可以從參照一個簡單的模板文件開始,在可以實現基本功能的基礎上再一步一步的擴充文檔內容,直至完全達到要求。下面是一個簡單的SPEC文檔,其中包括了一些說明信息(注:#后面的內容為說明信息),該SPEC文檔是對一個測試的軟件項目hellorpm寫的,hellorpm軟件包編譯后僅有一個執行文件、一個手冊文件和一個項目說文件。

hellorpm.spec文檔的內容如下:

-----------------------------------------------------------------------------

#軟件包簡要介紹

Summary: hellorpm is atest program。

#軟件包的名字

Name: hellorpm      

#軟件包的主版本號          

Version:2.2.6        

#軟件包的次版本號            

Release: 1  

#源代碼包,默認將在上面提到的SOURCES目錄中尋找                      

Source0:%{name}-%{version}.tar.gz  

#授權協議

License: GPL              

#定義臨時構建目錄,這個地址將作為臨時安裝目錄在后面引用

BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root

#軟件分類

Group:Development/Tools

#軟件包的內容介紹            

%description                        

The hellorpm programis a test.

#表示預操作字段,后面的命令將在源碼代碼BUILD前執行

%prep                    

#構建BUILD環境,將解壓源碼壓縮包到BUILD目錄

%setup-q      

#BUILD字段,將通過直接調用源碼目錄中自動構建工具完成源碼編譯操作        

%build      

#調用源碼目錄中的configure命令          

./configure      

#在源碼目錄中執行自動構建命令make    

make          

#安裝字段        

%install    

#調用源碼中安裝執行腳本            

makeDESTDIR=$RPM_BUILD_ROOT install

#文件說明字段,聲明多余或者缺少都將可能出錯

%files            

#設置文件權限屬性      

%defattr(-,root,root)    

#聲明/usr/local/bin/hellorpm將出現在軟件包中    

/usr/local/bin/hellorpm    

#聲明并設置文件屬性  

%doc%attr(0444,root,root) /usr/local/man/man1/hellorpm.1

#同上,聲明文檔文件

%docREADME  

-------------------------------------------------------------------------------

這個文檔需要說明的一點:

BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root

上面BuildRoot變量表示的是源碼的臨時按照目錄,rpmbuild就是通過次目錄獲得將要按照到系統中的所有文件,而在SPEC文檔后面make install 命令中的參數DESTDIR=$RPM_BUILD_ROOT即是對該參數的引用,這個參數將傳給Makefile文件一告訴自動構建工具應該安裝文件那里(實際上我再前文提到過的Makefile需要作一些改造以適應RPM的構建就包括此操作,你的Makefile文件中至少要知道在RPM構建過程中引用此參數的值去控制安裝操作的目標)。

如上一個簡單的SPEC文檔撰寫完成,下面把一個名為hellorpm-2.2.6.tar.gz的源碼壓縮文件放到

rpmbuild根目錄下的SOURCES目錄下(注,確保此歸檔文件解壓后的目錄為hellorpm-2.2.6,否則會有問題)。

到此一個完整的rpm打包環境已經構建完成,下面我們就可以開始構建二進制和源代碼RPM包。

3 構建RPM包

構建RPM包是有命令rpmbuild在SPEC的指導下完成。

開始構建操作,首先進入到當前用戶的rpmbuild根目錄(即上面提到的目錄環境)。

#cd ~/rpmbuild/

執行如何命令,-ba表示build all,即生成包括二進制包和源代碼包的所有RPM包,下來如果正常的話,rpmbuild將正常退出,同時在RPMS目錄和SRPMS目錄中將生成對應的RPM包。

#rpmbuild -baSPECS/hellorpm.spec

這里僅僅介紹了一個最簡單軟件的最簡單的RPM的打包操作過程,諸如帶有共享文件的需要進行復雜配置的具有復雜依賴關系的等等的項目的打包以及后期的維護,包括補丁的制作我將在下來的時間完成補充更新,今天時間不早了,該休息了!

注:費了大半夜的功夫,搞出這么個令人不滿意的文檔,我思考著,這樣做有多少意義呢?不敢重復發明輪子的,站到巨人的肩膀你才能看得更遠,是這樣嗎?是不是下周開始立個計劃,每周至少翻譯三篇fedora官網的文檔給自己練練手。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费大片黄在线播放| 亚洲激情成人网| 亚洲精品国产精品乱码不99按摩| 超薄丝袜一区二区| 国产精品偷伦视频免费观看国产| 久久成人综合视频| 国产精品久久久久久搜索| 91沈先生作品| 国产亚洲aⅴaaaaaa毛片| 日韩精品在线播放| 国产精品一区二区久久久久| 国产精品视频地址| 55夜色66夜色国产精品视频| 97香蕉久久超级碰碰高清版| 日韩精品视频观看| 日韩av片免费在线观看| 久久久综合免费视频| 色悠久久久久综合先锋影音下载| 国产精品自拍小视频| 成人在线国产精品| 4438全国亚洲精品在线观看视频| 国产a级全部精品| 久久99国产精品久久久久久久久| 国产精品爱久久久久久久| 亚洲片在线观看| 国产视频自拍一区| 国产成人精品av在线| 尤物九九久久国产精品的分类| 国产精选久久久久久| 欧美视频在线免费| 午夜精品一区二区三区视频免费看| 精品久久久久久中文字幕一区奶水| 国产精品黄色影片导航在线观看| 中文字幕精品av| 久久人人爽人人| 中文字幕精品网| 欧美激情综合色| 国产精品wwww| 欧美自拍视频在线| 一区二区在线视频| 日韩中文字幕在线免费观看| 一区二区三区视频免费| 日韩视频亚洲视频| x99av成人免费| 日韩美女视频中文字幕| 一本色道久久综合狠狠躁篇的优点| 97成人超碰免| 日韩动漫免费观看电视剧高清| 国产精品免费看久久久香蕉| 欧美大人香蕉在线| 欧美激情精品久久久久久久变态| 亚洲毛片在线免费观看| 精品久久久久久国产91| 国产亚洲欧洲在线| 日韩成人av网| 亚洲18私人小影院| 国产精品美女主播在线观看纯欲| 亚洲国语精品自产拍在线观看| 欧美国产视频一区二区| 日本国产精品视频| 国模精品视频一区二区| 日韩电影免费观看在线| 国产成人一区二区三区| 亚洲国产古装精品网站| 日韩欧美高清视频| 日韩日本欧美亚洲| 日韩电影中文字幕在线| 欧美精品一区二区三区国产精品| 久久夜精品香蕉| 日韩有码在线播放| 亚洲图片欧洲图片av| 久久久精品网站| 久久中国妇女中文字幕| 精品国产老师黑色丝袜高跟鞋| 欧美自拍大量在线观看| 精品国产乱码久久久久酒店| 国产精品美女主播在线观看纯欲| 久久人人爽人人爽人人片av高请| 亚洲天堂av在线免费| 91嫩草在线视频| 国产精品免费电影| 亚洲国产日韩欧美在线图片| 久久香蕉国产线看观看网| 日韩av电影中文字幕| 久久免费视频在线| 亚洲国产欧美一区二区丝袜黑人| 啪一啪鲁一鲁2019在线视频| 中文字幕av一区| 国产欧美日韩专区发布| 欧美高清videos高潮hd| 欧美大尺度在线观看| 亚洲一区二区三| 97视频免费观看| 成人午夜高潮视频| 久久久国产精品视频| 亚洲精品久久久久中文字幕二区| 亚洲成人a级网| 日韩在线视频导航| 亚洲国产精品免费| 性色av一区二区三区红粉影视| 欧美成人亚洲成人| 国产在线精品一区免费香蕉| 亚洲a级在线观看| 欧美电影在线观看完整版| 欧美成人激情视频| 黑人巨大精品欧美一区二区一视频| 欧美精品videosex牲欧美| 国产一区二区三区中文| 日本欧美黄网站| 久久精品成人欧美大片古装| 欧美精品在线网站| 久久久久久18| 日韩av手机在线观看| 日日狠狠久久偷偷四色综合免费| 国产精品网站大全| xvideos亚洲人网站| 国产成人av在线| 国产精品电影网站| 中文字幕欧美视频在线| 亚洲午夜激情免费视频| 高清在线视频日韩欧美| 国产一区二区动漫| 亚洲欧美另类国产| 国产成人极品视频| 久久久久久久久久国产| 中文字幕亚洲专区| 亚洲免费视频在线观看| 久久精品亚洲热| 久久精品亚洲国产| 中文字幕日韩电影| 色悠悠久久88| 日韩欧美亚洲综合| 欧美国产日韩二区| 欧美大片在线看免费观看| 国产精品久久久久久久久久久久久| 亚洲自拍在线观看| 欧美最近摘花xxxx摘花| 久久综合网hezyo| 两个人的视频www国产精品| 欧美高跟鞋交xxxxhd| 中文字幕无线精品亚洲乱码一区| 亚洲国产精久久久久久久| 久久久久久久一| 精品久久中文字幕| 国产成人免费av电影| 久久这里只有精品视频首页| 欧美亚洲成人免费| 国产精品久久久久久久久免费看| 精品国产区一区二区三区在线观看| 久久久久久国产三级电影| 国产精品美女在线观看| 一区二区三区视频免费在线观看| 久久国产精品久久久久久久久久| 国产在线a不卡| 日韩电影在线观看永久视频免费网站| 欧美精品videossex88| 91国语精品自产拍在线观看性色| 久久久久久久久久久免费| 91精品国产99久久久久久| 久久精品色欧美aⅴ一区二区| 国产精品久久网| 国产精品日日做人人爱| 中文字幕在线观看日韩| 国产精品久久久久免费a∨|