Linux系統學習之軟體安裝

2022-02-03 16:05:12 字數 2754 閱讀 1062

一、原始碼包編譯安裝

由於計算機無法直接執行用高階語言編寫的源程式,因此想要執行程式,就需要一種機制來讓計算機識別,這樣程式才可能執行起來。一般來說,計算機中存在解釋型和編譯型兩種語言。

所謂解釋型語言,就是計算機逐條取出原始碼檔案的指令,將其轉化成機器指令,並執行這個指令的過程。而編譯型語言是指在程式執行前就將所有的源**一次性轉化為機器·**(一般為二進位制程式),再執行這個程式的過程。

原始碼安裝通常使用wget命令,然後解壓,在配置,在編譯安裝等。

二、rpm安裝軟體

rpm,翻譯過來的意思是紅帽軟體包管理器的意思。rpm通過一套本地資料庫提供了一種更簡單的軟體安裝管理方式,從而使得不管是安裝、公升級還是解除安裝都較原始碼包更智慧型。比如說在初次安裝某軟體的時候會提醒我們需要預先安裝其他什麼軟體,公升級的時候也會智慧型地儲存原先配置檔案,而在解除安裝的時候則能視情況保留重要的資料檔案等。由於linux上一切皆檔案,所以說白了,rpm其實是一種整合了檔案管理和軟體版本控制的工具。

rpm分為兩類,一類是二進位制安裝包(也就是預編譯包)。事實上,如果將編譯好的軟體複製到相同的軟體環境(核心版本一致、軟硬體執行環境一致)的伺服器中,只要軟體在原編譯機中能執行,那麼在新主機中也同樣可以執行。而rpm採用的就是類似的方式,在特定的kenel版本下預先編譯好軟體(編譯時使用了大多數常見的編譯引數),並將所需要的檔案(二進位制程式、模組、配置檔案等)整體打包,在新主機中安裝該rpm包時,再將檔案解壓並複製到特定的目錄中去。第二類是rpm原始碼包,當希望自定義編譯引數,自行製作二進位制安裝包的時候使用。

rpm包管理命令:rpm

-i, --install 安裝軟體

-v,--verbose 列印詳細資訊

-h, --hash 使用"#"號列印安裝進度(需要和v同時用)

-e,--erase 刪除軟體

--replacepkge 如果軟體已經安裝某,則強行安裝

--test 安裝測試,並不實際安裝

--nodeps 忽略軟體包的依賴關係強行安裝

--force 忽略軟體包及檔案的衝突

查詢引數(需要使用-q或--query引數)

-a,--all 查詢所有安裝軟體

-p,--package 查詢某個安裝的軟體

-l,--list 列出某個軟體包所包含的所有軟體

-f,--file 查詢某個檔案所屬包

安裝軟體:rpm -ivh 包名.rpm

測試安裝軟體包:rpm -ivh --test 包名.rpm

安裝軟體:rpm -ivh --relocate /=/usr/local/包名.rpm

強行安裝軟體包:rpm -ivh 包名 --force --nodeps

公升級軟體包:rpm -uvh 包名.rpm

強行公升級軟體包:rpm -uvh 包名 --force --nodeps

刪除軟體包:rpm -e 包名.rpm

匯入簽名:rpm --import rpm-gpg-key

查詢某個包是否已經安裝:rpm -q 包名.rpm

查詢系統中所有已經安裝的包:rpm -qa

查詢某個檔案屬於哪個包:rpm -qf 包名.rpm

查詢某個包的依賴關係:rpm -qpr 包名.rpm

查詢某個包的資訊:rpm -qpi 包名.rpm

刪除軟體包:rpm -e 包名.rpm

三、包依賴關係

所謂包依賴,就是說在安裝a包之前需要已經安裝了b包,起實質是a軟體執行時需要依賴b軟體提供的功能。

比如說openssh這個工具用於遠端連線伺服器,而ssh客戶端和伺服器之間的通訊必須是加密的,但是openssh本身沒必要再實現一次加密演算法,只需要借助openssl提供的加密功能就可以了,這樣安裝openssh之前就需要已經安裝openssl。那麼,在這種情況下安裝包怎樣才能知道需要提前安裝哪些必要的包呢?事實上,如果依賴關係不滿足,rpm會自動提示,而且也會拒絕安裝為滿足的依賴包。但是,大多數時候這些提示都會比較模糊,有時候你不得不根據rpm給出的一些資訊,借助了一些搜尋工具來判斷具體的包名,而這對很多新手來說確實有一定難度。

四、yum安裝軟體

yum install 包名 安裝某個包

yum groupinstall group 安裝某個軟體組

yum update 包名 更新某個包

yum check-update 更新系統中所有需要更新的包

yum list 顯示軟體源中所有可用的包,一般不用

yum list installed 顯示系統已經安裝過的包

yum info 包名 顯示某個包的資訊

yum groupinfo group 顯示某個軟體組的資訊

yum remove 包名 刪除某個包

yum groupremove group 刪除某個軟體組

yum clean 清除使用yum所生成的快取檔案

五、三種安裝方法的比較

編譯安裝的好處是可以根據具體的應用場景、特定的需求,甚至是個人的喜好來量身定製軟體的功能模組嗎,而使用預編譯(rpm就是預編譯的軟體,所以rpm管理和yum管理都只是對這些預編譯的包進行管理)的方式相對來說會顯得臃腫。而且由於編譯過程中,編譯器會根據伺服器硬體和軟體環境來自動做一些優化處理,因此,相對預編譯軟體來說,後期在軟體執行時編譯安裝的方式更能提公升部分系統使用效率(根據不同的軟體,提公升率各有不同)。但是其缺點也是顯而易見的,首先編譯安裝耗時久,不適合大量部署;其次在生產伺服器上編譯軟體本身也是極不安全的做法,必須杜絕。

從大規模運維的角度來說,安全性、高效、易管理是排在第一位的,所以必須採取更方便的包管理方式。如果想要同時享有編譯軟體和包管理器的優點(高效執行,集中管理),那就必須自己預編譯rpm包。

linux系統學習(安裝篇)

1.虛擬機器安裝 2.linux系統安裝 稍後安裝作業系統 s linux l centos 下一步 3.虛擬機器名稱 自擬 下一步 將虛擬磁碟儲存為單個檔案 下一步 自定義硬體 記憶體 最好1g及以上 網路適 配器 nat模式 新cd ide 關閉 完成 4.選擇新建的虛擬機器 開啟此虛擬機器 i...

linux系統學習之管道

首先理解管道其實是乙個二進位制位元組流,它是核心為維持兩個或多個程序互相通訊的一種手段 一種ipc 如下圖所示 include include include include include define buf siz 10 int main int argc,char argv write 1,...

linux系統學習之Umask

linux系統學習之umask。檔案許可權管理之 umask mask 新建檔案 目錄的預設許可權是由mask決定的 umask 會影響到mask,umask表示要減掉的許可權 shell vim,touch umask 新檔案或目錄許可權 vsftpd umask 新檔案或目錄許可權 samba ...