Linux--安裝及管理程序(linux應用程序基礎,RPM包的查詢,安裝,升級和卸載,yum概述和常用命令,源碼編譯安裝流程及解決軟件包依賴關係的方法)
前言
在主機中安裝了Linux操作系統之後,就具備了提供軟件服務,網絡服務等功能的基礎。然而隨着操作系統一起安裝的軟件包畢竟只有少數,實現的功能也比較有限,當需要爲主機提供更多功能時,安裝新的應用程序就成爲必然要面對的工作。
一:Linux應用程序基礎
1.1:應用程序與系統命令的關係
- 在Linux系統中,一直以來命令和應用程序並沒有特別明確的區別,從長期使用習慣來看,我們可以通過以下描述來對兩者進行區別。
角色 | 系統命令 | 應用程序 |
---|---|---|
文件位置 | 一般在/bin和/sbin目錄中,稱爲Shell內部指令 | 通常在/usr/local目錄中 |
主要用途 | 完成對系統的基本管理工作,如IP配置工具(ipconfig) | 完成相對獨立的其他輔助任務,如網頁瀏覽器 |
適用環境 | 一般只在字符操作界面中運行 | 根據實際需要,有些程序可以在圖形界面中運行 |
運行格式 | 一般包括命令字,命令選項和命令參數 | 通常沒有固定的執行格式 |
1.2:典型應用程序的目錄結構
文件類型 | 保存目錄 |
---|---|
普通執行程序文件 | /usr/bin(管理員和其他用戶都可以使用) |
服務器執行程序文件和管理程序文件 | /usr/sbin(僅管理員使用) |
應用程序配置文件 | /etc(應用程序配置文件默認路徑) |
日誌文件 | /var/log(可變長文件存放位置) |
應用程序文檔文件 | /usr/share/doc(一般都是一些說明文檔在此) |
應用程序手冊頁文件/ | /usr/share/man(man手冊可以查看命令幫助信息和程序幫助信息) |
- 都是默認安裝路徑
1.3:常見的軟件包封裝類型
文件類型 | 保存目錄 |
---|---|
rpm軟件包 | 一鍵安裝,擴展名爲“.rpm”只能在使用RPM(RPM Package Manager,RPM軟件包管理器)機制的Linux操作系統中安裝,如RHEL,Fedora,CentOS等。 |
deb軟件 | 擴展名爲“.deb”只能在使用DPKG(Debian Package,Debian包管理器)機制的Linux操作系統中進行安裝,如Debian,Ubuntu等。 |
源代碼軟件包 | 一般爲“.tar.gz”,“.tar.bz2”等格式的壓縮包,這種軟件包是程序員開發完成的原始代碼,因多數使用tar命令打包而成,所以經常被稱爲“TarBall”。安裝源碼軟件包需要使用相應的編譯工具,如Linux中的C語言編譯器gcc。 |
綠色免安裝的軟件包 | 在壓縮包內提供已編譯好的執行程序文件,解開壓縮包後的文件即可直接使用。免安裝,硬盤版,直接用 |
二:RPM包管理工具
2.1:RPM概述
RPM軟件包管理機制最早由Red Hat公司提出,後來隨着版本的升級逐漸融入了更多的優秀特性,成爲衆多Linux發行版中公認的軟件包管理標準。
RPM包管理器通過建立統一的文件數據庫,對在Linux系統中安裝,卸載,升級的各種.rpm軟件包進行了詳細的記錄,並能夠自動分析軟件包之間的依賴關係,保持各個應用程序在一個協調沒有虛的整體環境中運行。
Red-Hat Package Manager
●由Red Hat公司提出,被衆多L inux發行版所採用
●建立統一的數據庫文件
●詳細記錄軟件包安裝、卸載等變化信息
●自動分析軟件包依賴關係
2.2:RPM軟件包
軟件素材參考: http://www.rpm.org
一般命名格式:
bash-4.1.2-15.el6_ 4.x86_ 64.rpm
- RPM機制封裝的軟件包文件擁有約定俗成的命名格式,一般使用“軟件名 - 軟件版本 - 發佈次數.操作系統類型.硬件架構類型.rpm”的文件名形式。例如:
2.3:RPM命令的格式
■rpm命令能夠實現幾乎所有對RPM軟件包的管理功能
■執行"man rpm"命令可以獲得關於rpm命令的詳細幫助信息
■rpm命令功能
●查詢、驗證RPM軟件包的相關信息
●安裝、升級、卸載RPM軟件包
●維護RPM數據庫信息等綜合管理操作
2.4:查詢RPM軟件包信息
使用rpm命令的查詢功能可以檢查某個軟件包是否已經安裝,瞭解軟件包的用途,軟件包複製到系統中的文件等各種相關信息,以便更好地管理Linux系統中的應用程序。
2.4.1:查詢已安裝的RPM軟件包信息
使用命令的基本格式
rpm -q[子選項] [軟件名]
常用選項有以下幾種
-qa 查看已經安裝的所有的RPM軟件包列表
-qi 查看指定軟件包詳細信息
-ql 查詢軟件包的安裝目錄、文件列表
-qf 根據指定文件或目錄查看是屬於哪個軟件包安裝的
-qc 查看軟件包所有配置文件。如conf cnf ini 都是配置文件
-qd 查看軟件包的文檔
例如,查詢系統中已安裝RPM軟件包個數
[root@localhost ~]# rpm -qa | wc -l
例如: 查詢是否已安裝elinks 和lynx 軟件包
[root@localhost ~]# rpm -q elinks lynx
2.4.2:查詢未安裝的RPM軟件包文件中信息
- 使用“-qp”選項時,必須以RPM包文件的路徑作爲參數(可以有多個),而不是軟件包名稱。
- 命令都與“-q”類似
使用命令的基本格式
rpm -qp [子選項] RPM包文件
常用選項有以下幾種
-qpi 查看該軟件的詳細信息
-qpl 查看包內所有包含的目錄、文件列表
僅列出清單的配置、文檔文件
-qpc
-qpd
三:安裝,升級,卸載RPM軟件包
- 使用rpm命令實現安裝,升級,卸載軟件包這些操作時,需要了解基本的命令選項。
命令 | 解釋 |
---|---|
-i | 在當前系統中安裝(Install)一個新的RPM軟件 |
-e | 卸載指定名稱的軟件包 |
-U | 檢查並升級系統中的某個軟件包,若該軟件包原來並未安裝,則等同於“-i”選項 |
-F | 檢查並更新系統中的某個軟件包,若該軟件包原來並未安裝,則放棄安裝 |
–force | 強制安裝某個軟件包,當需要替換現已安裝的軟件包及文件,或者安裝一個比之前使用的軟件版本更舊的軟件時,可以使用此選項。 |
–nodeps | 在安裝或升級,卸載一個軟件包時,不檢查與其他軟件包的依賴關係 |
-h | 在安裝或升級軟件包的過程中,以“#”號顯示安裝進度 |
-v | 顯示軟件安裝過程中的詳細信息 |
命令 | 解釋 |
---|---|
rpm -ivh | 安裝 |
rpm -evh | 卸載 |
df -h | 查看掛載 |
3.1:安裝,升級軟件包
-
使用rpm命令安裝軟件包時,需要指定完整的包文件名作爲參數(可以有多個)
-
而卸載軟件包時,只需要指定軟件名稱即可。
-
若要一次性安裝多個RPM軟件包,可以使用通配符“*”,這種方式在安裝存在相互依賴關係的多個軟件包時特別有用,系統會自動檢查依賴性並決定安裝順序,而無需管理員去判斷應該先裝哪一個包。
-
在安裝一個新的軟件包時,通常使用“-ivh”的組合選項,這樣便於瞭解軟件安裝的過程信息,及時跟蹤安裝進度。
-
若是使用新版本的軟件包替換舊版本的軟件包,只需將“-i”替換成“-U”即可。
命令使用格式
rpm [選項] RPM包文件
常用選項有
-i 安裝一個新的rpm軟件 ## 常用
-U 升級、若未安裝、則進行安裝 ## 不是經常用 版本要更新的時候可能用
-h 以#號顯示安裝的進度 ## 常用
-v 顯示安裝過程的詳細信息 ## 常用
-F 更新某個rpm軟件,若未安裝,則放棄安裝
3.2:卸載軟件包
- 卸載一個軟件包時,主要使用“-e”選項。
命令的使用格式
rpm -e 軟件名
例如:卸載已安裝的 elinks軟件
[root@localhost~]#rpm -e elinks
3.3:維護RPM數據庫
-
用於記錄在Linux系統中安裝,卸載,升級應用程序的相關信息,由RPM包管理系統自動完成維護,一般不需要用戶干預。當RPM數據庫發生損壞(誤刪文件,非法關機,病毒破壞等導致),且Linux系統無法自動完成修復時,當導致無法使用rpm命令正常的安裝,卸載及查詢軟件包。
-
這時候可以使用rpm命令的“–rebuilddb”或“–initdb”功能對RPM數據庫進行重建。
例如
[root@localhost~]#rpm --rebuilddb
或者
[root@localhost~]#rpm --initdb
db的意思是數據庫(database)
init的意思是初始化
3.4:linux系統掛載光盤
[root@localhost ~]# mount /dev/cdrom /mnt #掛載光盤到/mnt
[root@localhost ~]# df -h #查看掛載情況
[root@localhost ~]# unmount /dev/cdrom #解除掛載
3.5:Linux系統掛載Windows系統的文件
- 前提:Windows被掛載的文件需要開啓共享,共享功能需要設置好。
- smbclient:在計算機上,可以使用 smbclient 實用程序列出到共享的連接
例如:查看共享計算機的共享文件
[root@localhost ~]# smbclient -L //192.168.100.3/
Enter SAMBA\root's password:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 遠程管理
C$ Disk 默認共享
D$ Disk 默認共享
E$ Disk 默認共享
F$ Disk 默認共享
G$ Disk 默認共享
IPC$ IPC 遠程 IPC
Users Disk
ccc Disk
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 192.168.100.3 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Failed to connect with SMB1 -- no workgroup available
例如:將Windows共享文件ccc掛載到Linux /etc/sss
[root@localhost ~]# mount.cifs //192.168.100.3/ccc /etc/sss
Password for root@//192.168.100.3/ccc:
查看是否掛載成功 我們用df -h查看是否掛載成功
[root@localhost ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/sda2 20G 3.3G 17G 17% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.0M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 10G 37M 10G 1% /home
/dev/sda1 6.0G 174M 5.9G 3% /boot
tmpfs 183M 12K 183M 1% /run/user/42
tmpfs 183M 0 183M 0% /run/user/0
//192.168.100.3/ccc 444G 2.6G 441G 1% /etc/sss
解除掛載的命令
[root@localhost ~]# umount /etc/sss
查看是否解除掛載
[root@localhost ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/sda2 20G 3.3G 17G 17% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.0M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 10G 37M 10G 1% /home
/dev/sda1 6.0G 174M 5.9G 3% /boot
tmpfs 183M 12K 183M 1% /run/user/42
tmpfs 183M 0 183M 0% /run/user/0
四:Yum概述與常用命令(簡單的介紹)
4.1:概述
Yum(全稱爲 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
4.2:常用命令
安裝軟件(以foo-x.x.x.rpm爲例)
yum install foo-x.x.x.rpm
刪除軟件
yum remove foo-x.x.x.rpm
或者
yum erase foo-x.x.x.rpm
升級軟件
yum upgrade foo
或者
yum update foo
查詢信息
yum info foo
搜索軟件(以包含foo字段爲例)
yum search foo
顯示軟件包依賴關係
yum deplist foo
清空yum倉庫緩存
yum clean all
五:源碼編譯安裝
5.1:源碼編譯安裝概述
-
Linux操作系統之所以能夠在十餘年的時間裏發展壯大以至於風靡全球,其開放源代碼的特性是很重要的原因之一,及Linux操作系統中包括內核在內的所有軟件都可以獲得源代碼,並且可以經過定製修改後編譯安裝。
-
雖然現代的Linux發行版本大部分採用包管理機制對軟件進行打包安裝,可以省去軟件的編譯安裝過程,但是還有些情況需要使用源代碼編譯的方式爲系統安裝新的應用程序。
安裝較新版本的應用程序時 |
---|
大多數的Linux發行版都提供了相當豐富的應用程序,而這些應用程序的版本往往滯後於該軟件的最新源代碼版本,所以下載應用程序的最新源代碼包並編譯安裝,可以在程序功能,安全補丁等方面得到及時更新。 |
當前安裝的程序無法滿足應用需求時 |
---|
對於RPM格式封裝的應用程序,一般只包含了該軟件所能實現的一小部分功能,而難以由用戶自行修改,定製。通過對程序的源代碼進行編譯安裝後,可以定製更靈活,更豐富的功能。許多Linux服務器程序都採用源代碼編譯的方式進行安裝,以獲得更適合於企業實際應用需求的服務。 |
爲應用添加新的功能時 |
---|
當需要利用現有的程序源代碼進行適當的修改,以便增加新的功能時,必須釋放出該軟件的源代碼,修改後再重新編譯安裝。 |
使用源代碼安裝軟件的優點 |
---|
獲得最新的軟件版本,及時修復bug |
根據用戶需要,靈活定製軟件功能 |
- 編譯源代碼需要有相應 的開發環境,對於自由軟件來說,gcc和make是最佳的編譯工具。Linux系統採用默認安裝後沒有安裝gcc,我們可以使用rpm命令來安裝gcc。所需的軟件包在鏡像文件中就有提供。
掌握從源碼包編譯安裝程序 (編譯安裝)
yum -y install gcc gcc-c++ make
5.2:編譯安裝的流程
- 獲得所需安裝的軟件源代碼以後,安裝的基本過程包括解包,配置,編譯及安裝。大多數開源軟件的安裝都遵循這個過程。
5.2.1:解決軟件包依賴關係方法
方法一:安裝有依賴關係時的多個軟件時:
被依賴的軟件包需要先安裝
可同時指定多個rpm包文件進行安裝
方法二:卸載有依賴關係的多個軟件時:
依賴其他程序的軟件包需要先卸載
可同時指定多個軟件民進行卸載
方法三:忽略依賴關係:
結合 – nodeps 選項,但是可能會導致軟件異常#####下面爲HTTP的依賴關係包#####共7個包
[root@localhost httpd-2.4.25]# rpm -ivh /mnt/Packages/pcre-devel-8.32-17.el7.x86_64.rpm
[root@localhost httpd-2.4.25]# rpm -ivh /mnt/Packages/apr-devel-1.4.8-3.el7_4.1.x86_64.rpm
[root@localhost httpd-2.4.25]# rpm -ivh /mnt/Packages/expat-devel-2.1.0-10.el7_3.x86_64.rpm
[root@localhost httpd-2.4.25]# rpm -ivh /mnt/Packages/libdb-devel-5.3.21-24.el7.x86_64.rpm
[root@localhost httpd-2.4.25]# rpm -ivh /mnt/Packages/cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm
[root@localhost httpd-2.4.25]# rpm -ivh /mnt/Packages/openldap-devel-2.4.44-13.el7.x86_64.rpm
[root@localhost httpd-2.4.25]# rpm -ivh /mnt/Packages/apr-util-devel-1.5.2-6.el7.x86_64.rpm
5.2.2:解壓壓縮包
- 開源軟件的源代碼包一般爲TarBall形式,擴展名爲“.tar.gz”或“.tar.bz2”,都可以使用tar命令進行解壓。
- 在Linux系統中,通常將各種軟件的源代碼目錄保存到“/sur/src”目錄中,便於集中管理。
解包 |
---|
習慣上將軟件包解壓到/sur/src/目錄中 |
解包後源代碼文件位置:/usr/src/軟件名-版本號/ |
將httpd-2.4.25.tar.gz文件解包到/usr/src/目錄中
[root@localhost~]#tar zxvf httpd-2.4.25.tar.gz -C /usr/src/
5.2.3:配置
- 在編譯應用程序之前,需要進入源代碼目錄,對軟件的安裝目錄,功能選擇等參數進行配置。
- 在Linux系統中通過源代碼方式安裝軟件時,也可以將所有程序文件安裝到同一個文件夾,當需要卸載軟件時,只需將該文件夾刪除即可。
配置 |
---|
配置工作通常使用源碼目錄中的configure腳本完成 |
執行“./configure --help”可查看幫助 |
典型的配置選項:–prefix=軟件安裝目錄(指定軟件包安裝的目標文件夾) |
將軟件包httpd-2.4.25安裝到/usr/src/local/apache
[root@localhost~]#cd /usr/src/httpd-2.4.25/ 進入httpd-2.4.25目錄
[root@localhost~]#./configure --prefix=/usr/local/apache ./configure配置 這裏添加了安裝的路徑
5.2.4:編譯
- 編譯的過程主要是根據Makefile文件內的配置信息(若上一步的配置操作失敗,將無法進行編譯),將源代碼文件進行編譯而生成二進制的程序模塊,動態鏈接庫,可執行文件等。
- 配置完成後,只需要在源代碼目錄中執行“make”命令即可執行編譯操作。
5.2.5:安裝
- 編譯完成後,就可以執行“make install”命令將軟件的執行程序,配置文件,幫助文檔等相關文件複製到Linux系統中了,也就是應用程序的最後“安裝”過程。同樣是在源代碼目錄中執行命令。
r/src/httpd-2.4.25/ 進入httpd-2.4.25目錄
[root@localhost~]#./configure --prefix=/usr/local/apache ./configure配置 這裏添加了安裝的路徑