您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關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: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官網的文檔給自己練練手。
感謝各位的閱讀!關于“Linux中安裝軟件的方式有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。