這篇文章給大家分享的是有關(guān)Linux中安裝軟件的方式有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來(lái)看看吧。
創(chuàng)新互聯(lián)公司是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷策劃、小程序定制開發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立10余年以來(lái),已經(jīng)為上千余家自拌料攪拌車各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的上千余家客戶與我們一路同行,見證我們的成長(zhǎng);未來(lái),我們一起分享成功的喜悅。
總的情況下Linux下軟件安裝主要有三種方式:
一種是源碼安裝,需要用戶自己手動(dòng)編譯
另一種是RPM包(RedHat Linux Packet Manager),通過RPM命令就可以實(shí)現(xiàn)安裝
還有一種為*.bin文件,安裝方法與Windows下的安裝過程類似
通常情況下Linux 安裝軟件主要通過以下兩種方式
① 文件名形如xxx.i386.rpm ,軟件包以二進(jìn)制形式發(fā)布.
② 文件名形如xxx.tar.gz ,軟件包多以源碼的形式發(fā)布.
Linux軟件包管理可以分為三類:二進(jìn)制包的管理,源代碼包的管理,腳本安裝
另外值得注意的是目前存在各種Linux的發(fā)行版獲取和安裝軟件的方式也有很多例如
【】redhat/centos的yum安裝(有專門的鏡像源)
【】Ubuntu/Fedora/Debian的sudo apt-get適用于deb包進(jìn)行管理安裝
【】也有的軟件是通過刻盤加密的形式然后進(jìn)行安裝的(例如cnyunwei)
【】在系統(tǒng)運(yùn)維管理人員方面也有通過ssh、C/C++語(yǔ)言或者py執(zhí)行的一些軟件命令進(jìn)行自動(dòng)化管理的應(yīng)用,這里就不做詳細(xì)介紹了。
下面有一張圖可以清晰地表示linux軟件應(yīng)用的架構(gòu)關(guān)系:
在Linux啟動(dòng)的時(shí)候。首先會(huì)啟動(dòng)內(nèi)核(kernel),內(nèi)核是一段計(jì)算機(jī)程序,這個(gè)程序直接管理管理硬件,包括CPU、內(nèi)存空間、硬盤接口、網(wǎng)絡(luò)接口等等。所有的計(jì)算機(jī)操作都要通過內(nèi)核傳遞給硬件。我們可以看到,Linux利用kernel實(shí)現(xiàn)軟硬件的對(duì)話。通過系統(tǒng)調(diào)用的這個(gè)重要的接口,Linux將上層的應(yīng)用與下層的kernel完全分離開,為程序員隱藏了底層的復(fù)雜性(相應(yīng)的,也提高了上層應(yīng)用的可移植性)。當(dāng)我們?cè)谏?jí)kernel的時(shí)候,也可以保持系統(tǒng)調(diào)用的語(yǔ)句不變,從而讓上層應(yīng)用不感受到下層的改變。庫(kù)函數(shù)利用系統(tǒng)調(diào)用創(chuàng)造出模塊化的功能,而shell則提供了一個(gè)用戶界面,并讓我們可以利用shell的語(yǔ)法編寫腳本,以整合程序。有了這些思想我們可以快速地了解linux的軟件應(yīng)用的安裝和工作原理,也因此為了方便和獲取更多企業(yè)應(yīng)用我們需要在linux系統(tǒng)上開發(fā)并且通過源碼編譯的方式制作各種軟件包從而為信息化時(shí)代服務(wù)。
本文主要介紹源碼安裝與RPM包的安裝
源碼包和商業(yè)軟件包根據(jù)各個(gè)公司或作者的實(shí)際情況出發(fā)(可以是tar等格式的壓縮包,也可以是bin的源程序,可以是已經(jīng)編譯好了的直接拿來(lái)運(yùn)行的文件,也可以是光盤虛擬化文件等其他介質(zhì)來(lái)制作發(fā)布的iso文件等)封裝成一種特定的格式發(fā)布從而進(jìn)行相應(yīng)的軟件服務(wù)。其實(shí)通過yum或者make install命令安裝的軟件在系統(tǒng)都會(huì)自動(dòng)生成rpm包(只是參數(shù)和功能模塊差異和嚴(yán)謹(jǐn)?shù)模?/p>
簡(jiǎn)介:
RPM(RedHat Package Manager,紅帽子軟件包管理器)用于軟件包的安裝、查詢、升級(jí)、校驗(yàn)、卸載,以及生成.rpm格式的軟件包 RPM的使用前
掛載linux系統(tǒng)(centos4為例)的安裝光盤,當(dāng)然也可在網(wǎng)上下載免費(fèi)的RPM包.
# mount/dev/cdrom ---掛載光盤
# cd/media/cdrom/CentOS/RPMS ---進(jìn)入光盤中RPM包的目錄(可以通過#mount命令來(lái)查看光盤的掛載點(diǎn)一般會(huì)在最后一行顯示)
# ls
一、源碼包安裝
1、*.src.rpm形式的源代碼軟件包
用法:
安裝: rpm –rebuild *.src.rpm
cd /usr/src/dist/RPMS
Rpm –ivh *.rpm
卸載: rpm –e packagename
2、.tar.gz,*.tgz,*.bz2形式軟件包的安裝
首先進(jìn)行解壓,命令如下
tar zxvf *.tar.gz
tar xvfz *.tgz
tar xvfj *.tar.bz2
解壓之后進(jìn)入解壓目錄,然后進(jìn)行以下操作(一般情況,具體看軟件包的文件名)
配置:./configure
編譯:make
安裝:make install
卸載:make uninstall
源碼安裝有一定的難度,不同的軟件可能有不同的安裝,一般在解壓之后應(yīng)該先閱讀說明文檔,按照說明進(jìn)行安裝,上面說的只是一般情況。
二、RPM包安裝
RPM安裝包格式是由Redhat公司提出的,大大的簡(jiǎn)化了Linux下軟件的安裝,首先介紹一下通用選項(xiàng)。
-v:顯示附加信息
-vv:顯示調(diào)試信息
--root directory:讓RPM以directory作為根目錄,這樣預(yù)安裝程序和后安裝程序都會(huì)安裝到這個(gè)目錄下。
1、安裝:rpm –i
Options:
h:安裝時(shí)輸出hash記號(hào)
test:只對(duì)安裝進(jìn)行測(cè)試,不真正安裝
--persent:以百分比形式顯示安裝進(jìn)度
--excludedocs:不安裝軟件包中的文檔
--replacepkgs:強(qiáng)制重新安裝
--replacefiles:替換屬于其它軟件包的文件
--force:忽略軟件包及文檔沖突
--ignorearch:不校驗(yàn)軟件包結(jié)構(gòu)
--ignoreos:不檢查軟件包運(yùn)行的操作系統(tǒng)
--nodeps:不檢查依賴性關(guān)系
--noscripts:不運(yùn)行預(yù)安裝和后安裝腳本程序
2、刪除 rpm –e
Option:
--test:只做刪除測(cè)試,不真正刪除
--noscripts:不運(yùn)行預(yù)安裝和后安裝腳本程序
--nodeps:不檢查依賴性
注意:pkgname是軟件包的名字,不是rpm包名字,而是安裝后軟件包的名字,可以用查詢命令來(lái)查詢軟件包名。
3、升級(jí) rpm–U(或者—upgrade)
Option:
基本與安裝時(shí)的option一樣,有幾個(gè)特殊的:
--oldpackage:允許一個(gè)舊版本
4、查詢 rpm –q(或者--query)
Option:
-p PACKAGE_FILE:查詢軟件包的文件
-f FIEL:查詢FILE屬于哪個(gè)軟件包
-a:查詢所有安裝的軟件包
-g group:查詢屬于group組的軟件包
--whatproVidesCAPABILITY:查詢提供了CAPABILITY功能的軟件包
--whatrequiresCAPABILITY:查詢所有需要CAPABILITY功能的軟件包
-i:顯示軟件包的概要信息
-l:顯示軟件包中的文件列表
-c:顯示配置文件列表
-s:顯示文件列表
-scripts:顯示安裝、卸載,校驗(yàn)?zāi)_本
--qf:以用戶指定的方式查詢
--dump:顯示每個(gè)文件的校驗(yàn)信息
--proVides:顯示軟件包提供的功能
-R:顯示軟件包需要的功能
5、校驗(yàn)已經(jīng)安裝的軟件包 rpm –V(or –verify,or –y)
Option選項(xiàng)與其它命令的類似
6、校驗(yàn)軟件包中的文件 rpm –K(or –checksig)
Option:
-v:顯示版本信息
-vv:顯示調(diào)試信息
--rcfile FILELIST:設(shè)置rpmrc 文件為FILELIST
7、其它RPM選項(xiàng)
--rebuilddb:重建RPM資料庫(kù)
--initdb:創(chuàng)建一個(gè)新的RPM資料庫(kù)
--quiet:盡可能地減少輸出
--help:顯示幫助文件
--version:顯示RPM當(dāng)前版本
上面只是對(duì)常用選項(xiàng)的總結(jié),具體還有什么問題,可以用man rpm命令進(jìn)行查看,官方文件永遠(yuǎn)最好的老師。
三、*.bin格式安裝文件的安裝
只需雙擊或單擊*.bin文件就可以根據(jù)提示安裝了,不再敷述。
要想制作一個(gè)RPM格式的軟件包,需要編寫軟件包描述文件。其標(biāo)準(zhǔn)命名格式為:軟件名-版本號(hào)-釋出號(hào).spec(現(xiàn)在大多情況下都是直接用:軟件名.spec),這個(gè)文件,詳細(xì)描述了有關(guān)該軟件包的諸多信息,如軟件名,版本,類別,說明摘要,創(chuàng)建時(shí)要執(zhí)行什么指令,安裝時(shí)要執(zhí)行什么操作,以及軟件 包所要包含的文件等等。有了這個(gè)文件,RPM就可以制作出相應(yīng)的包裹文件來(lái)。當(dāng)然現(xiàn)在也有例如Source rpm這樣開源的包制作輔助工具只要一個(gè)程序源即可通過向?qū)乱徊郊纯芍谱鳌?/p>
簡(jiǎn)單的一個(gè)制作例子:
其實(shí)最好的辦法是做個(gè)軟件包。我記得 rpm 和 debian 都有快速打包的開源軟件可以直接拿來(lái)使用即可。
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
若運(yùn)行沒有錯(cuò)誤,則產(chǎn)生/usr/src/redhat/RPMS/i386/nginx-0.8-35.i386.rpm和/usr/src/redhat/SRPMS/nginx-0.8-35.src.rpm 兩個(gè)文件。
總結(jié):rpm包如何制作之個(gè)人經(jīng)驗(yàn)
一 RPM介紹
RPM 前是RedHat Package Manager 的縮寫,本意是Red Hat 軟件包管理,顧名思義是Red Hat 貢獻(xiàn)出來(lái)的軟件包管理;現(xiàn)在應(yīng)為RPM Package Manager的縮寫。在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流發(fā)行版本,以及在這些版本基礎(chǔ)上二次開發(fā)出來(lái)的發(fā)行版采用; RPM包中除了包括程序運(yùn)行時(shí)所需要的文件,也有其它的文件;一個(gè)RPM 包中的應(yīng)用程序,有時(shí)除了自身所帶的附加文件保證其正常以外,還需要其它特定版本文件,這就是軟件包的依賴關(guān)系。
RPM可以讓用戶直接以binary方式安裝軟件包,并且可替用戶查詢是否已經(jīng)安裝了有關(guān)的庫(kù)文件;在用RPM刪除程序時(shí),它又會(huì)聰明地詢問用戶是否要?jiǎng)h除有關(guān)的程序。如果使用RPM來(lái)升級(jí)軟件,RPM會(huì)保留原先的配置文件,這樣用戶就不用重新配置新的軟件了。RPM保留一個(gè)數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)中包含了所有的軟件包的資料,通過這個(gè)數(shù)據(jù)庫(kù),用戶可以進(jìn)行軟件包的查詢。RPM雖然是為L(zhǎng)inux而設(shè)計(jì)的,但是它已經(jīng)移值到SunOS、Solaris、AIX、Irix等其它UNIX系統(tǒng)上了。RPM遵循GPL版權(quán)協(xié)議,用戶可以在符合GPL協(xié)議的條件下自由使用及傳播RPM。
二 RPM包分類
我個(gè)人認(rèn)為rpm分為兩大類,
1 二進(jìn)制類包,包括rpm安裝包(一般分為i386和x86等幾種)和調(diào)式信息包等。
2 源碼類包,源碼包和開發(fā)包應(yīng)該歸位此類。
它們之間的關(guān)系是,最先我們按rpm打包要求改造軟件項(xiàng)目源碼,當(dāng)符合要求之后就可以使用rpmbuild命令來(lái)生成不同的rpm包,同時(shí)生成的包之間版本是直接對(duì)應(yīng)的,比如相同的源碼包將生成完全相同的二進(jìn)制rpm包。當(dāng)你在網(wǎng)上查找rpm包時(shí),一般你可以在RPMS目錄中找到預(yù)編譯的二進(jìn)制包,而源碼包則會(huì)在SRPMS目錄內(nèi)。
我們這里提到的RPM制作就是指改造軟件源代碼使之符合RPM打包要求的過程,這也可以等價(jià)為RPM源碼包的制作過程,因?yàn)楫?dāng)你有了源碼包就可以直接編譯得到二進(jìn)制安裝包和其他任意包。
三 RPM包制作介紹
RPM包的制作,即是RPM源碼包的制作。
這里我想說說RPM包工作的原理,這將有助于全面的了解RPM包管理系統(tǒng)的知識(shí)。
RPM是為解決源碼包不易安裝(需要編譯)和軟件包相互之間依賴(是RPM包管理器可以一定程度解決依賴問題)問題,它通過在探測(cè)源碼包在build和install階段的動(dòng)作獲得最終生成的需要安裝的系統(tǒng)里的文件,并記錄下一些必要的操作(比如安裝完成后執(zhí)行某項(xiàng)操作),然后把此組成為一個(gè)整體,當(dāng)在用戶安裝此包時(shí)把前面獲得的所有問題和記錄的所有操作原原本本的作用的實(shí)際系統(tǒng)上。
為一個(gè)普通的源碼打RPM包,需要下面一些操作,首先需要對(duì)項(xiàng)目的Makefile作必要的改造以支持RPM打包操作(實(shí)際上此操作不是絕對(duì)的,SPEC文檔和Makefile的是協(xié)調(diào)統(tǒng)一工作的,只要他們之間配合好了其他都無(wú)所謂,我們一般只是推薦大家盡量按行業(yè)標(biāo)準(zhǔn)規(guī)范操作而已);其次是針對(duì)當(dāng)前項(xiàng)目撰寫SPEC文檔,SPEC文檔包括了RPM打包過程的操作內(nèi)容和新生成的RPM包的基本信息等,它的作用對(duì)象是打包程序rpmbuild。
四 RPM包制作過程
1 準(zhǔn)備打包環(huán)境
fedora系統(tǒng)下使用如下命令安裝rpmbuild
#yum install rpmbuild
rpmbuild的工作目錄如下,
~/rpmbuild
~/rpmbuild/SOURCES
~/rpmbuild/SPECS
~/rpmbuild/BUILD
~/rpmbuild/RPMS
~/rpmbuild/RPMS/i386
~/rpmbuild/SRPMS
如果你的用戶目錄主目錄下沒有類似目錄結(jié)構(gòu),你可以通過一個(gè)工具軟件來(lái)自動(dòng)配置和生成,如下。
#yum installrpmdevtools
下了運(yùn)行自動(dòng)配置命令自動(dòng)生成如上目錄,并配置一些必要操作。
#rpmdev-setuptree
rpmdev-setuptree命令默認(rèn)將再當(dāng)前用戶主目錄下創(chuàng)建一個(gè)RPM構(gòu)建根目錄結(jié)構(gòu),
如果需要改變次默認(rèn)位置,可以修改配置文件:~/.rpmmacros中變量_topdir對(duì)應(yīng)的值即可。
一般rpmbuild會(huì)在當(dāng)前用戶的主目錄下自動(dòng)建立如上目錄結(jié)構(gòu),如果在你對(duì)應(yīng)用戶的構(gòu)建目錄中沒有自動(dòng)建立如上目錄,你可以通過手動(dòng)方式建立。上面目錄的使用是這樣分配的,SOURCES放置打包資源,包括源碼打包文件和補(bǔ)丁文件等;SPECS目錄放置SPEC文檔;BUILD打包過程中的工作目錄;RPMS目錄存放生成的二進(jìn)制包,RPM包根據(jù)硬件平臺(tái)不同分類,i386表示生成i386結(jié)構(gòu)的包將存放在該目錄下;SRPMS目錄存放生成的源碼包。
2 撰寫SPEC文檔
SPEC撰寫是打包RPM的核心,也算是最難的一步,好在我們可以從參照一個(gè)簡(jiǎn)單的模板文件開始,在可以實(shí)現(xiàn)基本功能的基礎(chǔ)上再一步一步的擴(kuò)充文檔內(nèi)容,直至完全達(dá)到要求。下面是一個(gè)簡(jiǎn)單的SPEC文檔,其中包括了一些說明信息(注:#后面的內(nèi)容為說明信息),該SPEC文檔是對(duì)一個(gè)測(cè)試的軟件項(xiàng)目hellorpm寫的,hellorpm軟件包編譯后僅有一個(gè)執(zhí)行文件、一個(gè)手冊(cè)文件和一個(gè)項(xiàng)目說文件。
hellorpm.spec文檔的內(nèi)容如下:
-----------------------------------------------------------------------------
#軟件包簡(jiǎn)要介紹
Summary: hellorpm is atest program。
#軟件包的名字
Name: hellorpm
#軟件包的主版本號(hào)
Version:2.2.6
#軟件包的次版本號(hào)
Release: 1
#源代碼包,默認(rèn)將在上面提到的SOURCES目錄中尋找
Source0:%{name}-%{version}.tar.gz
#授權(quán)協(xié)議
License: GPL
#定義臨時(shí)構(gòu)建目錄,這個(gè)地址將作為臨時(shí)安裝目錄在后面引用
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
#軟件分類
Group:Development/Tools
#軟件包的內(nèi)容介紹
%description
The hellorpm programis a test.
#表示預(yù)操作字段,后面的命令將在源碼代碼BUILD前執(zhí)行
%prep
#構(gòu)建BUILD環(huán)境,將解壓源碼壓縮包到BUILD目錄
%setup-q
#BUILD字段,將通過直接調(diào)用源碼目錄中自動(dòng)構(gòu)建工具完成源碼編譯操作
%build
#調(diào)用源碼目錄中的configure命令
./configure
#在源碼目錄中執(zhí)行自動(dòng)構(gòu)建命令make
make
#安裝字段
%install
#調(diào)用源碼中安裝執(zhí)行腳本
makeDESTDIR=$RPM_BUILD_ROOT install
#文件說明字段,聲明多余或者缺少都將可能出錯(cuò)
%files
#設(shè)置文件權(quán)限屬性
%defattr(-,root,root)
#聲明/usr/local/bin/hellorpm將出現(xiàn)在軟件包中
/usr/local/bin/hellorpm
#聲明并設(shè)置文件屬性
%doc%attr(0444,root,root) /usr/local/man/man1/hellorpm.1
#同上,聲明文檔文件
%docREADME
-------------------------------------------------------------------------------
這個(gè)文檔需要說明的一點(diǎn):
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
上面BuildRoot變量表示的是源碼的臨時(shí)按照目錄,rpmbuild就是通過次目錄獲得將要按照到系統(tǒng)中的所有文件,而在SPEC文檔后面make install 命令中的參數(shù)DESTDIR=$RPM_BUILD_ROOT即是對(duì)該參數(shù)的引用,這個(gè)參數(shù)將傳給Makefile文件一告訴自動(dòng)構(gòu)建工具應(yīng)該安裝文件那里(實(shí)際上我再前文提到過的Makefile需要作一些改造以適應(yīng)RPM的構(gòu)建就包括此操作,你的Makefile文件中至少要知道在RPM構(gòu)建過程中引用此參數(shù)的值去控制安裝操作的目標(biāo))。
如上一個(gè)簡(jiǎn)單的SPEC文檔撰寫完成,下面把一個(gè)名為hellorpm-2.2.6.tar.gz的源碼壓縮文件放到
rpmbuild根目錄下的SOURCES目錄下(注,確保此歸檔文件解壓后的目錄為hellorpm-2.2.6,否則會(huì)有問題)。
到此一個(gè)完整的rpm打包環(huán)境已經(jīng)構(gòu)建完成,下面我們就可以開始構(gòu)建二進(jìn)制和源代碼RPM包。
3 構(gòu)建RPM包
構(gòu)建RPM包是有命令rpmbuild在SPEC的指導(dǎo)下完成。
開始構(gòu)建操作,首先進(jìn)入到當(dāng)前用戶的rpmbuild根目錄(即上面提到的目錄環(huán)境)。
#cd ~/rpmbuild/
執(zhí)行如何命令,-ba表示build all,即生成包括二進(jìn)制包和源代碼包的所有RPM包,下來(lái)如果正常的話,rpmbuild將正常退出,同時(shí)在RPMS目錄和SRPMS目錄中將生成對(duì)應(yīng)的RPM包。
#rpmbuild -baSPECS/hellorpm.spec
這里僅僅介紹了一個(gè)最簡(jiǎn)單軟件的最簡(jiǎn)單的RPM的打包操作過程,諸如帶有共享文件的需要進(jìn)行復(fù)雜配置的具有復(fù)雜依賴關(guān)系的等等的項(xiàng)目的打包以及后期的維護(hù),包括補(bǔ)丁的制作我將在下來(lái)的時(shí)間完成補(bǔ)充更新,今天時(shí)間不早了,該休息了!
注:費(fèi)了大半夜的功夫,搞出這么個(gè)令人不滿意的文檔,我思考著,這樣做有多少意義呢?不敢重復(fù)發(fā)明輪子的,站到巨人的肩膀你才能看得更遠(yuǎn),是這樣嗎?是不是下周開始立個(gè)計(jì)劃,每周至少翻譯三篇fedora官網(wǎng)的文檔給自己練練手。
感謝各位的閱讀!關(guān)于“Linux中安裝軟件的方式有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!