日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux之软件包安装——06

發布時間:2023/12/20 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux之软件包安装——06 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、軟件包分類

  • 軟件包分類
    • 源碼包
    • 二進制包

    (腳本安裝包)

  • 源碼包
  • 2.1 源碼包什么樣

    [root@localhost ~]# vim hello.c#include <stdio.h>int main (void){printf("hello world\n");} [root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/gcc-4.4.6-4.e16.i686.rpm [root@localhost ~]# gcc -c hello.c #-c 生成“.o”頭文件。這里會生成hello.o頭文件,但是不會生成執行文件 [root@localhost ~]# gcc -o hello hello.o #-o 生成執行文件,并制定執行文件名。這里生成的 hello 就是可執行文件 [root@localhost ~]# ./hello hello world #執行 hello 文件

    2.2 源碼包特點

    源碼包的優點:

    • 開源,如果有足夠的能力,可以修改源代碼
    • 可以自由選擇所需的功能
    • 軟件是編譯安裝,所以更加適合自己的系統,更加穩定也效率更高
    • 卸載方便

    源碼包的缺點:

    • 安裝過程步驟較多,尤其安裝較大的軟件集合時(如 LAMP 環境搭建),容易出現拼寫錯誤
    • 編譯過程時間較長,安裝比二進制安裝時間長
    • 因為是編譯安裝,安裝過程中一旦報錯新手很難解決
  • 二進制包
  • 3.1 二進制包分類

    • DPKG 包:是由 Debian Linux 所開發出來的包管理機制,通過 DPKG 包,Debian Linux就可以進行軟件包管理。主要應用在 Debian 和 unbuntu 中
    • RPM 包:是由 Red Hat 公司所開發的包管理系統。功能強大,安裝、升級、查詢和卸載都非常簡單和方便。目前很多 Linux 都在使用這種包管理方式,包括 Fedora、CentOS、SuSE 等。我們學習的都是 CentOS 6.3,所以我們將要學習 RPM 包管理系統

    3.2 特點
    RPM 包的優點:

    • 包管理系統簡單,只通過幾個命令就可以實現包的安裝、升級、查詢和卸載
    • 安裝速度比源碼包安裝快的多

    RPM 包的缺點:

    • 經過編譯,不再可以看到源代碼
    • 功能選擇不如源代碼包靈活
    • 依賴性。有時我們會發現需要安裝軟件包 a 時需要先安裝 b 和 c,而安裝 b 時需要安裝 d 和 e。這是需要先安裝 d 和 e,再安裝 b 和 c ,最后才能安裝 a 包。比如說,我買了個漂亮的燈具,打算安裝到我們家客廳,可是在安裝燈具之前我們家客廳總要有頂棚吧,頂棚總要是做好了防水和刷好油漆了吧。這個裝修和安裝軟件其實類似總要有一定的順序的。可是有時依賴性會非常繁瑣

    軟件包選擇建議:

    源碼包:如果服務是給大量客戶端提供訪問的,建議使用源碼包,源碼包效率更高(LAMP)

    RPM包:如果程序是給少量用戶訪問,或者本地使用的,建議RPM包,因為RPM管理方便

    3.3 RPM 包依賴

    1)樹形依賴 a----->b----->c
    2)環形依賴 a----->b----->c----->a
    3)模塊依賴

    什么是模塊依賴?我們舉一個例子,嘗試安裝以下文件:

    [root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-7.e17.x86_64.rpm 錯誤:依賴檢測失敗libodbc.so.2()(64bit) 被 mysql-connector-odbc-5.2.5-7.e17.x86_64.rpm 需要libodbcinst.so.2()(64bit) 被 mysql-connector-odbc-5.2.5-7.e17.x86_64.rpm 需要

    發現報錯,需要安裝“libodbc.so.2”函數庫文件,這時會發現在光盤中根本找不到這個文件。那是因為函數庫沒有單獨成包,是包含在某一個軟件包中的。而如果要知道在哪個軟件包中,需要查詢網站 www.rpmfind.net,如圖:

    二、rpm 安裝

  • rpm包命名規則
  • httpd-2.2.15-15.e16.centos.1.i686.rpm httpd軟件包名
    2.2.15軟件版本
    15軟件
    e16軟件發行商,e16是RedHat 公司發布,適合 RHEL6.x(Red Hat Enterprise Linux)和 CentOS6.x下使用
    i686適合的硬件平臺。RPM包可以在不同的硬件平臺安裝,選擇適合不同CPU的軟件版本,可以最大化的發揮CPU性能,所以出現了所謂的i386(386以上計算機都可以安裝)、i586(586以上的計算機都可以安裝)、i686(奔騰 II 以上計算機都可以安裝,目前所有的CPU都是奔騰II以上,所以這個軟件版本居多)、x86_64(64位CPU可以安裝)和noarch(沒有硬件限制)等文件名了
    rpmrpm包的擴展名。我們說過 Linux 下文件不是靠擴展名區分文件類型,也就是Linux中擴展名沒有任何含義。可是這里怎么又出現了擴展名呢?原因很簡單,如果我不把RPM的擴展名叫做“.rpm”,管理員很難知道這是一個RPM包,當然也就無法正確安裝了。也就是說如果RPM包不用“.rpm”作為擴展名,系統可以正確識別沒有問題,可是管理員很難識別這是個什么樣的軟件。

    使用包全名和包名安裝:

    包全名:如果操作的是未安裝軟件包,則使用包全名,而且需要注意絕對路徑
    包名:如果操作的是已經安裝的軟件包,則使用包名即可,系統會產生 RPM 包的數據庫(/var/lib/rpm/)

  • 依賴性
  • 上述已講

  • rpm包手工命令安裝
  • 3.1 默認安裝位置

    RPM 包默認安裝路徑

    /etc配置文件安裝目錄
    /usr/bin/可執行的命令安裝目錄
    /usr/lib/程序所使用的函數庫保存位置
    /usr/share/doc/基本的軟件使用手冊保存位置
    /usr/share/man/幫助文件保存位置

    3.2 RPM 包安裝

    1)安裝命令

    rpm -ivh 包全名 #注意一定是包全名,如果跟包全名的命令要注意路徑,因為軟件包在光盤當中 選項:-i install 安裝(install)-v 顯示更詳細的信息(verbose)-h 打印#顯示安裝進度(hash)
    • ——nodeps 不檢測依賴性安裝。軟件是會檢測依賴性,確定所需的底層軟件是否安裝。如果沒有安裝則會報錯。如果我不管依賴性,想強行安裝,可以使用這個選項。注意:這樣不檢測依賴性安裝的軟件基本是不能使用的,所以不建議這樣做
    • ——replacefiles 替換文件安裝。如果安裝軟件包,可是包中部分文件已經存在,那么正常安裝時候,會報錯“某個文件已經存在”從而導致軟件無法安裝,使用這個選項可以忽視這個報錯,而覆蓋安裝
    • ——replacepkgs 替換軟件包安裝。如果軟件包已經安裝,此選項可以把軟件包重復安裝一遍
    • ——force 強制安裝。不管是否已經安裝,都重新安裝。就是——replacefiles 和——replacepkgs 的綜合
    • ——test 測試安裝。不會實際安裝,只是檢測一下依賴性
    • ——prefix 指定安裝路徑。為安裝軟件指定安裝路徑,而不是用默認安裝路徑。注意:如果指定了安裝路徑,軟件沒有安裝到系統默認路徑中的話,系統會找不到這些安裝的軟件,需要進行手工配置才能被系統識別。所以rpm包我們一般都采用默認路徑安裝

    2)服務啟動

    [root@localhost ~]# service 服務名 strat|stop|restart|status 參數:start:啟動服務stop:停止服務restart:重啟服務status:查看服務狀態 [root@localhost ~]# systemctl restart httpd #這個命令也行

    RPM 包安裝的 Apache:

  • 啟動:
    1)service httpd restart
    2)/etc/rc.d/init.d/httpd restart/start/stop

  • 網頁位置:
    /var/www/html

  • 配置文件
    /etc/httpd/conf/httpd.conf

  • RPM 包建議安裝在默認路徑中(作者決定的):

    1)默認安裝位置是系統的習慣位置
    2)RPM 包管理系統是有卸載命令的(數據庫記錄安裝位置)

    3.3 RPM 包升級

    [root@localhost ~]# rpm -Uvh 包全名 選項:-U(大寫) 升級安裝,如果沒有安裝過,系統直接安裝。如果安裝過的版本較舊,則升級到新版本(upgrade) [root@localhost ~]# rpm -Fvh 包全名 選項: -F(大寫) 升級安裝,如果沒有安裝過,則不會安裝。必須安裝有較舊版本,才能升級(freshen)

    3.4 卸載

    [root@localhost ~]# rpm -e 全名 選項:--nodeps 不檢測依賴性-e 卸載

    3.5 查詢

    1)查詢軟件包是否安裝
    可以查詢軟件包是否安裝,命令格式如下:

    [root@localhost ~]# rpm -q 包名 選項:-q:查詢(query)

    2)查詢系統中的所有安裝軟件包

    可以查詢Linux 系統中所有已經安裝的軟件包,命令格式如下:

    [root@localhost ~]# rpm -qa 選項:-a:所有(all)

    當然,可以用管道符來查看所需的內容,比如:

    [root@localhost ~]# rpm -qa | grep httpd

    你會發現,使用“rpm -q 包名”只能查看這個包是否安裝,但是使用“rpm -qa | grep 包名”會把包含包名稱的所有包都列出來

    3)查詢軟件包的詳細信息

    可以查詢已經安裝的某個軟件包的詳細信息,命令格式如下:

    [root@localhost ~]# rpm -qi 包名 選項:-i:查詢軟件信息(information)

    也可以查詢還沒有安裝的軟件包的詳細信息,命令格式如下:

    [root@localhost ~]# rpm -qip 包全名 選項:-p:查詢沒有安裝的軟件包(package)

    4)查詢軟件包中的文件列表

    可以查詢已經安裝的軟件包中的文件列表和安裝的完整目錄,命令格式如下:

    [root@localhost ~]# rpm -ql 包名 選項:-l:列出軟件包中所有的文件列表和軟件所安裝的目錄(list)

    那么,可以查詢還沒有安裝的軟件包中的文件列表和打算安裝的位置嗎?答案是可以,命令格式如下:

    [root@localhost ~]# rpm -qlp 包全名 選項:-p:查詢沒有安裝的軟件包信息(package)

    5)查詢系統文件屬于哪個RPM包

    既然可以指導每個RPM包中的文件的安裝位置,那么可以查詢系統文件屬于哪個RPM包嗎?當然可以,不過需要注意的是,手工建立的文件是不能查詢的,因為這些文件不是通過RPM包安裝的,當然不能反向查詢它屬于哪個RPM包。命令格式如下:

    [root@localhost ~]# rpm -qf 系統文件名 選項:-f:查詢系統文件屬于哪個軟件包(file)

    6)查詢軟件包所依賴的軟件包

    查詢系統中和已經安裝的軟件包有依賴關系的軟件包,命令格式如下:

    [root@localhost ~]# rpm -qR 包名 選項:-R:查詢軟件包的依賴性(requires)

    可以查詢沒有安裝的軟件包的依賴性嗎?加“-p”選項即可。例如,查看一下還沒有安裝的bind軟件包的依賴包,可以執行如下命令:

    [root@localhost ~]# rpm -qRp /mnt/cdrom/Packages/bind-9.8.2-0.10.rcl.e16.i686.rpm

    3.6 驗證

    1)基本命令

    [root@localhost ~]# rpm -Va 選項:-Va 校驗本機已經安裝的所有軟件包[root@localhost ~]# rpm -V 已經安裝的包名 選項:-V 校驗指定RPM包中的文件(verify)[root@localhost ~]# rpm -Vf 系統文件名 選項:-Vf 校驗某個系統文件是否被修改

    2)驗證舉例

    [root@localhost ~]# rpm -V httpd S.5....T. c /etc/httpd/conf/httpd.conf 驗證內容 文件類型 文件名

    出現了提示信息,我們來解釋下最前面共有8個信息內容,是表示驗證內容的。文件名前面的c是表示這是個配置文件(configuration)。最后是文件名。那么驗證內容中的8個信息的具體內容如下:

    • S 文件大小是否改變
    • M 文件的類型或文件的權限(rwx)是否被改變
    • 5 文件MD5校驗和是否改變(可以看成文件內容是否改變)
    • D 設備的主從代碼是否改變
    • L 文件路徑是否改變
    • U 文件的屬主(所有者)是否改變
    • G 文件的屬組是否改變
    • T 文件的修改時間是否改變
      apache 配置文件的文件類型是c ,那么還有哪些文件類型呢?
    • c 配置文件(config file)
    • d 普通文檔(documentation)
    • g “鬼”文件(ghost file),很少見,就是該文件不應該被這個 RPM 包包含
    • l 授權文件(license file)
    • r 描述文件(read me)

    3.7 數字證書

    剛剛的校驗方法只能對已經安裝的RPM包中的文件進行校驗,但是如果RPM包本身就被動過手腳,那么校驗就不能解決問題了。我們就必須使用數字證書驗證了。
    數字證書有如下特點:

    • 首先必須找到原廠的公鑰文件,然后進行安裝
    • 再安裝RPM包是,會去提取RPM包中的證書信息,然后和本機安裝的原廠證書進行驗證
    • 如果驗證通過,則允許安裝;如果驗證不通過,則不允許安裝并警告

    1)數字證書位置
    那么數字證書在哪里呢?其實在CentOS 7.4的第一張光盤中就有,當然它默認也會放在系統中。

    [root@localhost ~]# ll /mnt/cdrom/RPM-GPG-KEY-CentOS-7 -rw-rw-r--. 3 root root 1690 Dec 9 2015 /mnt/cdrom/RPM-GPG-KEY-CentOS-7 #光盤中的數字證書位置 [root@localhost ~]# ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 -rw-r--r--. 1 root root 1690 Aug 30 2017 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #系統中的數字證書位置

    2)數字證書導入

    [root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 選項:--import 導入數字證書

    我們如何查詢系統安裝好的數字證書呢?命令如下:

    [root@localhost ~]# rpm -qa |grep gpg-pubkey gpg-pubkey-f4a80eb5-53a7ff4b

    3.8 RPM包中文件的提取
    1)cpio命令
    cpio命令主要有三種基本模式:“-o”模式指的是copy-out 模式,就是把數據備份到文件庫中;“-i”模式指的是copy-in模式,就是把數據從文件庫中恢復;“-p”模式指的是復制模式,就是不把數據備份到cpio庫中,而是直接復制為其他文件。命令如下:

    [root@localhost ~]# cpio -o[vcB] > [文件|設備] #備份 選項:-o:copy-out,備份-v:顯示備份過程-c:使用較新的portable format 存儲方式-B:設定輸入輸出塊為 5120bytes,而不是模式的512butes [root@localhost ~]# cpio -i[vcdu] < [文件|設備] #還原 選項:-i:copy-in模式,還原-v:顯示還原過程-c:使用較新的portable format 存儲方式-d:還原時自動新建目錄-u:自動使用較新的文件覆蓋較舊的文件 [root@localhost ~]# cpio -p 目標目錄

    舉幾個例子,看看使用cpio備份數據的方法,命令如下:

    例子:利用 find 命令找到文件,備份 [root@localhost ~]# find /etc -print | cpio -ocvB > /root/etc.cpio #利用 find 指定要備份/etc/目錄,使用>導出到etc.cpio 文件 [root@localhost ~]# ll -h etc.cpio -rw-r--r--. 1 root root 30M Sep 9 00:48 etc.cpio #etc.cpio 文件生效

    再來看看如何恢復 cpio 的備份數據,命令如下:

    [root@localhost ~]# cpio -idvcu < /root/etc.cpio #還原etc的備份 #但是如果大家查看下當前目錄/root,會發現沒有生成etc目錄。這是因為備份是/etc目錄使用的是絕對路徑,所以恢復的數據直接恢復到了/etc系統目錄中,而沒有生成在/root/etc中

    在CentOS5.x的版本中,是可以利用上面的命令備份與恢復指定的文件。但是到CentOS6.x當中,需要更加嚴謹。如果備份時使用絕對路徑,則恢復的數據會直接到絕對路徑指定的路徑中,如果需要把數據恢復到當前目錄中,則需要使用相對路徑,例如:

    備份: [root@localhost ~]# cd /etc #進入/etc 目錄 [root@localhost ~]# find . -print | cpio -ocvB > /root/etc.cpio #利用 find 指定要備份/etc/目錄,使用>導出到etc.cpio 文件恢復: [root@localhost ~]# cd /root #回到/root 目錄中 [root@localhost ~]# mkdir etc_test #建立恢復測試目錄 [root@localhost ~]# cd etc_test #進入測試目錄,數據恢復到此 [root@localhost ~]# cpio -idvcu < /root/etc.cpio #還原/etc 目錄的數據,因為備份時使用的是相對路徑,則會還原到/root/etc_test/ 目錄下

    最后來演示一下cpio命令的“-p”復制模式,命令如下:

    [root@localhost ~]# cd /tmp/ #進入/tmp目錄 [root@localhost ~]# rm -rf * #刪除/tmp目錄中所有數據 [root@localhost ~]# mkdir test #建立備份目錄 [root@localhost ~]# find /boot/ -print | cpio -p /tmp/test #備份/boot/目錄到/tmp/test/目錄中 [root@localhost ~]# ls test/ boot #在/tmp/test/目錄中備份出了boot目錄

    2)提取RPM包中文件

    [root@localhost ~]# rpm2cpio 包全名 | cpio -idv . 文件絕對路徑rpm2cpio <-將rpm包轉換為cpio格式的命令cpio <-是一個標準工具,它用于創建軟件檔案文件和從檔案文件中提取文件

    舉個例子,現在我假設把系統中的/bin/ls 命令不小心誤刪除了,那么我可以修復會來嗎?這時有兩中方法修復,要不就是使用——force 選項覆蓋安裝一遍 coreutils-8.22-18.el7.x86_64包,要不就可以使用cpio 命令提取出/bin/ls 命令文件,再把它拷貝到對應位置就可以了。不過我是怎么指導/bin/ls命令是屬于 coreutils-8.22-18.el7.x86_64 這個軟件包的呢?還記得-qf選項嗎?命令如下:

    [root@localhost ~]# rpm -f /bin/ls coreutils-8.22-18.el7.x86_64 #查看ls 文件屬于哪個軟件包

    那么我們在講 RPM 包中文件提取,所以我們使用第二章方法,cpio 命令提取出ls 命令文件,然后拷貝到對應位置,命令如下:

    [root@localhost ~]# mv /bin/ls /root/ #/bin/ls 命令移動到/root 目錄下,造成誤刪除的假象[root@localhost ~]# ls -bash: ls: command not found #這時執行 ls 命令,系統會報錯“命令沒有找到”[root@localhost ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.22-18.el7.x86_64.rpm | cpio -idv ./bin/ls # 將rpm包中的ls文件提取至./bin/ls
  • rpm 包在線安裝(yum安裝)
  • 4.1 yum 源文件解析

    yum 源配置文件保存在/etc/yum.repos.d 目錄中,文件的擴展名一定是“*.repo” 。 也就是說,yum源配置文件只要擴展名是 “*.repo”就會生效。

    [root@localhost ~]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo

    這個目錄中有5個yum源配置文件,默認情況下 CentOS-Base.repo 文件生效。我們打開這個文件看看,命令如下:

    [root@localhost yum.repos.d]# vim /etc/yum.repos.d/CentOS-Base.repo[base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7#released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 ...省略部分輸出...

    在CentOS-Base.repo 文件中有5個yum元容器,這里只列出了base容器,其他容器和base容器類似。我們解釋一下base這個容器

    • [base]:容器名稱,一定要放在[]中
    • name:容器說明,可以自己隨便寫
    • mirrorlist:鏡像站點,這個可以注釋掉
    • baseurl:我們的yum源服務器的地址。默認是CentOS官方的yum源服務器,是可以使用的。如果你覺得慢,則可以改成你喜歡的yum原地址。
    • enabled:此容器是否生效,如果不寫或寫成 enabled=1 則表示此容器生效,攜程 enabled=0則表示此容器不生效
    • gpgcheck:如果為1則表示RPM的數字證書生效;如果為0則表示RPM的數字證書不生效
    • gpgkey:數字證書的公鑰文件保存位置。不用修改

    4.2 搭建本地光盤yum源
    第一步:放入CentOS安裝光盤,并掛載光盤到指定位置。命令如下:

    [root@localhost ~]# mkdir /mnt/cdrom #創建 cdrom 目錄,作為光盤的掛載點 [root@localhost ~]# mount /dev/cdrom /mnt/cdrom/ mount:block device /dev/sr0 is write-protected, mounting read-only #掛載光盤到/mnt/cdrom 目錄下

    第二步:修改其他幾個yum源配置文件的擴展名,讓它們失效,因為只有擴展名是“*.repo”的文件才能作為yum源配置文件。當然也可以刪除其他幾個yum原配置文件,但是如果刪除了,當你又想用網絡作為yum源時,就沒有了參考文件,所以最好還是修改擴展名。命令如下:

    [root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak [root@localhost yum.repos.d]# mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak [root@localhost yum.repos.d]# mv CentOS-Vault.repo CentOS-Vault.repo.bak

    第三步:修改光盤 yum 源配置文件 CentOS-Media.repo,參照以下方法修改:

    [root@localhost yum.repos.d]# vim CentOS-Media.repo [c7-media] name=CentOS-$releasever - Media baseurl=file:///mnt/cdrom #地址為你自己的光盤掛載地址 # file:///media/cdrom/ # file:///media/cdrecorder/ gpgcheck=1 enabled=1 #把 enabled=0 改為 enabled=1,讓這個yum 源配置文件生效 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    4.3 yum 命令
    1)查詢

    • 查詢yum 源服務器上所有可安裝的軟件包列表
    [root@localhost yum.repos.d]# yum list #查詢所有可用軟件包列表 Installed Packages #已經安裝的軟件包 xsettings-kde.x86_64 0.12.3-7.el7 c7-media xsom.noarch 0-10.20110809svn.el7 c7-media ...省略部分輸出... Avaiable Packages #還可以安裝的軟件包 zsh.x86_64 5.0.2-28.el7 c7-media ...省略部分輸出... #軟件名 版本 所在位置(光盤)
    • 查詢yum源服務器中是否包含某個軟件包
    [root@localhost ~]# yum list 包名 #查詢單個軟件包 例如: [root@localhost yum.repos.d]# yum list samba Available Packages samba.x86_64 4.10.4-11.el7_8 updates
    • 搜索 yum 源服務器上所有和關鍵字相關的軟件包
    [root@localhost yum.repos.d]# yum search 關鍵字 #搜索服務器上所有和關鍵字相關的軟件包 例如: [root@localhost ~]# yum search ifconfig Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirrors.nju.edu.cn* extras: mirrors.nju.edu.cn* updates: mirrors.nju.edu.cn ================================================== Matched: ifconfig =================================================== net-tools.x86_64 : Basic networking tools

    yum search 搜索可以用于確定某個軟件在哪個相關包當中。此例子可以確定“ifconfig”命令需要安裝“net-tools”包

    • 查詢指定軟件包的信息
    [root@localhost yum.repos.d]# yum info samba #查詢 samba 軟件包的信息 Available Packages Name : samba Arch : x86_64 Version : 4.10.4 Release : 11.el7_8 Size : 708 k Repo : updates/7/x86_64 Summary : Server and Client software to interoperate with Windows machines URL : http://www.samba.org/ License : GPLv3+ and LGPLv3+ Description : Samba is the standard Windows interoperability suite of programs for Linux and: Unix.

    2)安裝

    [root@localhost yum.repos.d]# yum -y install 包名 選項:install 安裝-y 自動回答yes。如果不加-y,那么每個安裝的軟件都需要手工回答yes 例如: [root@localhost yum.repos.d]# yum -y install gcc #使用 yum 自動安裝 gcc

    3)升級

    [root@localhost yum.repos.d]# yum -y update 包名 #升級指定的軟件包 選項:update: 升級-y: 自動回答 yes

    注意: 在進行升級操作時,yum源服務器中軟件包的版本要比本機安裝的軟件包的版本高

    [root@localhost yum.repos.d]# yum -y update #升級本機所有軟件包

    這條命令會升級系統中所有的軟件包。不過我們的生產服務器是穩定優先的,所以這種全系統升級的情況并不多見

    4)卸載

    再次強調一下,除非你確定卸載的軟件的依賴包不會對系統產生影響,否則不要執行 yum 的卸載,因為很有可能在卸載軟件包的同時卸載的依賴包也是重要的系統文件,這就有可能導致系統奔潰。卸載命令如下:

    [root@localhost yum.repos.d]# yum remove 包名 #卸載指定的軟件包 例如: [root@localhost yum.repos.d]# yum remove samba #卸載 samba 軟件包

    4.4 yum組管理命令

    • 查詢可以安裝的軟件組
    [root@localhost ~]# yum grouplist #列出所有可用的軟件組列表
    • 查詢軟件組內包含的軟件
    [root@localhost ~]# yum groupinfo 軟件組名 #列出軟件組中包含的軟件 例如: [root@localhost ~]# yum groupinfo “Web Server” #查詢軟件組“Web Server”中包含的軟件
    • 安裝軟件組
    [root@localhost ~]# yum groupinstall 軟件組名 #安裝指定軟件組,組名可以由 grouplist 查詢出來 例如: [root@localhost ~]# yum groupinstall "Web Server" #安裝網頁服務軟件組
    • 卸載軟件組
    [root@localhost ~]# yum groupremove 軟件組名 #卸載指定軟件組

    三、源碼包安裝

  • 注意事項
  • 1.1 應該選擇哪種軟件包

    • 如果軟件包是給大量客戶提供訪問,建議使用源碼包安裝,如LAMP環境搭建,因為源碼包效率更高
    • 如果軟件包是給Linux底層使用,或只給少量客戶訪問,建議使用rpm包安裝,因為rpm包簡單

    1.2 源碼包是從哪里來的
    rpm包是光盤中直接包含的,所以不需要用戶單獨下載。而源碼包是通過官方網站下載的,如果需要使用,是需要單獨下載的

    1.3 是否可以在系統中即安裝rpm包的Apache,又安裝源碼包的Apache?
    答案是可以,因為兩種安裝方法安裝的Apache,安裝位置是不一樣的,例如:

    RPM 包:不建議指定安裝位置的,建議安裝在默認位置(RPM包安裝的服務有標準卸載命令,不怕文件到處安裝)配置文件: /etc/httpd/conf/httpd.conf網頁位置: /var/www/html/日志位置: /var/log/httpd/啟動方法: 1)service httpd restart2)/etc/rc.d/init.d/httpd restart 源碼包:必須指定安裝位置(源碼包沒有安裝數據庫,沒有刪除命令)配置文件: /usr/local/apache2/conf/httpd.conf網頁文件: /usr/local/apache2/htdocs/日志位置: /usr/local/apache2/logs/啟動方法: /usr/local/apache2/bin/apachectl start

    1.4 生產服務器上,是否會同時安裝兩種Apache?
    當然不會啊,因為系統中只有一個80端口,所以你只能啟動一個Apache,裝多個只能浪費資源。我們建議安裝源碼包的Apache

  • 安裝過程
    我們來解釋一下源碼包安裝的具體步驟
    (1)下載軟件包
    (2)解壓縮
    (3)進入解壓目錄
    (4)./configure 編譯前準備

    這一步主要有三個作用:1. 在安裝之前需要檢測系統環境是否符合安裝要求2. 定義需要的功能選項。“./configure”支持的功能選項較多,可以執行“./configure --help”命令查詢其支持的功能,一般都會通過“./configure --perfix=安裝路徑”來指定安裝路徑。3. 把系統環境的檢測結果和定義好的功能選項寫入 Makfile 文件,后續的編譯和安裝需要依賴這個文件的內容

    需要注意的是,configure 不是系統命令,而是源碼包軟件自帶的一個腳本程序,所以必須采用“./configure”方式執行(“./”代表在當前目錄下)

    源碼包報錯:
    1)安裝過程必須停止
    2)是否出現 no、warning、error關鍵字

    (5)make 編譯

    make 會調用 gcc 編譯器,并讀取 Makefile 文件中的信息進行系統軟件編譯。編譯的目的就是把源碼程序轉變為能被Linux 識別的可執行文件,這些可執行文件保存在當前目錄下。編譯過程較為耗時,需要有足夠的耐心

    (6)make clean:清空編譯內容(非必需步驟)

    如果在“./configure”或“make”編譯中報錯,那么我們在重新執行命令前一定要記得執行 make clean 命令,它會清空 Makefile 文件或編譯產生的“.o”頭文件

    (7)make install: 編譯安裝
    這才是真正的安裝過程,一般會寫清楚程序的安裝位置。如果忘記指定安裝目錄,則可以把這個命令的執行過程保存下來,以備將來刪除使用

  • 刪除

  • 源碼包沒有刪除命令,如果需要刪除,直接刪除安裝目錄即可

  • 打入補丁
  • 4.1 補丁的生成

    [root@localhost ~]# diff 選項 old new #比較 old 和 new 文件的不同 選項:-a 將任何文檔當做文本文檔處理-b 忽略空格造成的不同-B 忽略空白行造成的不同-I 忽略大小寫造成的不同-N 當比較兩個目錄時,如果某個文件只在一個目錄中,則在另一個目錄中視作空文件-r 當比較目錄時,遞歸比較子目錄-u 使用同一的輸出格式

    舉例

    [root@localhost ~]# mkdir test #建立測試目錄 [root@localhost ~]# cd test #進入測試目錄 [root@localhost test]# vi old.txt our school is atguigu #文件 old.txt,為了一會輸出便于比較,每行分開 [root@localhost test]# vi new.txt our school is atguigu in Beijing #文件 new.txt

    比較下兩個文件的不同,并生成補丁文件“txt.path”,命令如下:

    [root@localhost test]# diff -Naur /root/test/old.test /root/test/new.txt > txt.patch #比較兩個文件的不同,同時生成txt.patch補丁文件[root@localhost test]# vi txt.patch #查看下這個文件 --- /root/test/old.txt 2020-09-10 08:01:23.546407573 -0700 #前一個文件 +++ /root/test/new.txt 2020-09-10 08:02:13.140552831 -0700 #后一個文件 @@ -6,3 +6,4 @@gwef+1111111111111111 #后一個文件比前一個文件多兩行(+表示)

    4.2 打入補丁

    [root@localhost test]# patch -pn < 補丁文件 #按照補丁文件進行更新 選項:-pn n為數字。代表按照補丁文件中的路徑,指定更新文件的位置

    “-pn” 不好理解,我們說明下。補丁文件時要打入舊文件的,但是你當前所在的目錄和補丁文件中的記錄的目錄不一定匹配的,所以就需要“-pn”來同步兩個目錄。
    比如我當前是在“/root/test”目錄中(我要打補丁的舊文件就在當前目錄下),補丁文件中記錄的文件目錄為“/root/test/old.txt”,這時如果寫入“-p1”(在補丁文件目錄中取消一級目錄)那么補丁文件就會打入“/root/test/root/test/old.txt”文件中,這顯然不對的。那如果寫入的是“-p2”(在補丁文件目錄中取消二級目錄)那么補丁文件打入的就是“/root/test/test/old.txt”,這顯然也不對。如果寫入“-p3”(在補丁文件目錄中取消三級目錄)那么補丁文件就是打入的“/root/test/old.txt”,我們的old.txt文件就在這個目錄下,所以就應該是“-p3”。
    那我們更新下“old.txt”文件,命令如下:

    [root@localhost test]# patch -p3 < txt.patch patching file old.txt #給old.txt 文件打補丁[root@localhost test]# cat old.txt #查看下old .txt 的內容 sadfa vdw gfwgfvdse g wef 1111111111111111 #多出來了 1111111兩行

    四、腳本安裝程序

  • 腳本程序簡介
  • 腳本程序包并不多見,所以在軟件包分類中并沒有把它列為一類。它更加類似于Windows下的程序安裝,有一個可執行的安裝程序,只要運行安裝程序,然后進行簡單的功能指定選擇(比如指定安裝目錄),就可以安裝成功,只不過是在字符界面下完成的。
    目前常見的腳本程序以各類硬件的驅動居多,我們需要學習一下這類軟件的安裝方式,以備將來不時之需

  • Webmin 安裝
  • 2.1 簡介

    我們來看看腳本程序如何安裝和使用。安裝一個叫作 Webmin 的工具軟件, Webmin 是一個基于 Web 的系統管理界面。借助任何支持表格和表單的瀏覽器(和 File Manager 模塊所需要的 Java),你就可以設置用戶賬號、apache、DNS、文件共享等。Webmin 包括一個簡單的 Web 服務器和許多 CGI 程序,這些程序可以直接修改系統文件,比如/etc/inetd.conf 和 /etc/passwd。Web服務器和所有的CGI程序都是用 Perl 5編寫的,沒有使用任何非標準 Perl 模塊。也就是說,Webmin 是一個用 Perl 語言寫的、可以通過瀏覽器管理Linux的軟件

    2.2 安裝步驟
    首先下載 Webmin 軟件,地址為 http://sourceforge.net/projects/webadmin/files/webmin/,這里下載的是 webmin-1.610.tar.gz
    接下來解壓縮軟件,命令如下:

    [root@localhost ~]# tar -zxvf webmin-1.610.tar.gz

    進入解壓目錄,命令如下:

    [root@localhost ~]# cd webmin-1.610

    執行安裝程序 setup.sh,并指定功能選項,命令如下:

    [root@localhost webmin-1.610]# ./setup.sh *********************************************************************** * Welcome to the Usermin setup script, version 1.510 * *********************************************************************** Usermin is a web-based interface that allows Unix-like operating systems and common Unix services to be easily administered.Installing Usermin in /root/usermin-webmail-1.510 ...*********************************************************************** Usermin uses separate directories for configuration files and log files. Unless you want to run multiple versions of Usermin at the same time you can just accept the defaults.Config file directory [/etc/usermin]: #選擇安裝位置,默認安裝在/etc/usermin 目錄下。如果安裝到默認位置,則直接回車 Log file directory [/var/usermin]: #日志文件保存位置,直接回車,選擇默認位置*********************************************************************** Usermin is written entirely in Perl. Please enter the full path to the Perl 5 interpreter on your system.Full path to perl (default /usr/bin/perl): #指定Perl語言的安裝位置,直接回車,選擇默認位置,Perl默認就安裝在這里 Testing Perl ... Perl seems to be installed ok*********************************************************************** Operating system name: CentOS Linux Operating system version: 7.4.1708*********************************************************************** Usermin uses its own password protected web server to provide access to the administration programs. The setup script needs to know :- What port to run the web server on. There must not be anotherweb server already using this port.- If the webserver should use SSL (if your system supports it).Web server port (default 20000): #指定Webmin監聽的端口,直接回車,默認選定20000 Login name (default admin):admin #輸入登錄webmin的用戶名 Login password: Password again: #輸入登錄密碼 The Perl SSLeay library is not installed. SSL not available. #apache默認沒有啟動SSL功能,所以SSL沒有被激活 *********************************************************************** Creating web server config files.. ..doneCreating access control file.. ..doneInserting path to perl into scripts.. ..doneCreating start and stop scripts.. ..doneCopying config files.. at changepass chfn commands cron cshrc fetchmail file filter forward gnupg htaccess-htpasswd htaccess language mailbox mailcap man mysql plan postgresql proc procmail quota schedule shell spam ssh telnet theme tunnel updown usermount ..doneCreating uninstall script /etc/usermin/uninstall.sh .. ..doneChanging ownership and permissions .. ..doneAttempting to start Usermin mini web server.. Starting Usermin server in /root/usermin-webmail-1.510 Pre-loaded WebminCore ..done*********************************************************************** Usermin has been installed and started successfully. Use your web browser to go tohttp://localhost.localdomain:20000/and login as any Unix user on your system.

    總結

    以上是生活随笔為你收集整理的Linux之软件包安装——06的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。