Linux 軟體包管理輸入日誌標題
Ø 簡介
本文主要介紹 Linux 軟體包的管理,包括如下內容:
目錄
5. RedHat 系指令碼安裝(Shell 或 Java 指令碼)
6. Debian 系 Linux 軟體包管理介紹(APT 包管理)
1. wget 命令的使用
wget是Linux下下載檔案的最常用命令。wget支援HTTP,HTTPS和FTP協議,支援自動下載,即可以在使用者退出系統後在後臺執行,直到下載結束。 | |
語法 | wget [選項] [URL] -P 指定下載儲存路徑; -b 啟動後轉入後臺; -N 只獲取比本地檔案新的檔案; -c 斷點續傳下載檔案。 -S 列印伺服器響應,不下載任何檔案 --spider 模擬下載,不下載任何檔案; --no-check-certificate 不驗證HTTPS伺服器的證書 |
示例:
#下載nginx
wget -P /opt/soft https://nginx.org/download/nginx-1.18.0.tar.gz
wget --spider http://test.ms.zxsxdd.com #模擬下載(檢查網站是否正常)
wget 介紹:
wget
wget 非常穩定,它在頻寬很窄的情況下,或者網路不穩定的情況下有很強的適應性。如果是由於網路的原因下載失敗,wget 會不斷的嘗試,直到整個檔案下載完畢。如果是伺服器打斷下載過程,它會再次聯到伺服器上從停止的地方繼續下載。這對從那些限定了連結時間的伺服器上下載大檔案非常有用。
更多使用方法:https://www.cnblogs.com/ftl1012/p/9265699.html
2. RedHat 系使用 RPM 二進位制軟體包管理
n RPM 的優缺點
1) rpm 在查詢上很好的彌補了 yum
2) rpm 不足的地方是,在解決軟體包的依賴關係上,不如 yum 方便。
n RPM 軟體包的一個例子:
sudo.1.7.2pl-5.e15.i386.rpm 各部分分別表:
l sudo 表示軟體名;
l 1.7.2p1 版本號
l 5.e15 發行號
l i386 硬體平臺
l rpm 字尾,表示為RPM包
1) 解除安裝
# rpm -e sudo #sudo 表示要解除安裝的軟體名稱
注意:如果其他軟體包有依賴關係,解除安裝是會產生提示資訊,可以使用 –nodeps 選項進行強制解除安裝,例如:# rpm -e –nodeps samba
2) 安裝
# rpm -ivh sudo-1.7.2pl-5.e15.i386.rpm
選項:-i 安裝;-v 顯示安裝時的詳細資訊;-h 顯示安裝進度(#號)
1. 從 Linux 系統光碟中安裝
掛載光碟:
# mkdir /mnt/cdrom #建立掛載點目錄
# mount /dev/cdrom /mnt/cdrom #將 /dev/cdrom 掛載到 /mnt/cdrom
說明:現在訪問 /mnt/cdrom 這個目錄,就相當於訪問光碟上的 /dev/cdrom
# ls -l | grep sudo #在 /mnt/cdrom/Packages 目錄下查詢 sudo 軟體包
# rpm -ivh sudo-1.8.23-3.el7.x86_64.rpm #安裝 sudo 軟體包
[root@localhost Packages]# rpm -q sudo #檢視軟體包是否安裝
[root@localhost Packages]# rpm -qa | grep samba #檢視所有安裝的軟體包中指定的軟體包
2. 其他安裝選項
1) 不安裝文件檔案
[root@localhost Packages]# rpm -ivh --excludedocs sudo-1.8.23-3.el7.x86_64.rpm #不安裝軟體包中的文件檔案(說明文件、幫助文件等)
2) 指定安裝目錄
[root@localhost Packages]# rpm -ivh --prefix=/usr/local/sudo sudo-1.8.23-3.el7.x86_64.rpm #指定安裝包的安裝目錄
注意:
1. 在 Linux 中,大多數 RPM 包都不允許指定安裝目錄,因為在很多 rpm 包的作者在生成 rpm 包時,都已經規定好 rpm 軟體包的存放位置;
2. 這樣會不會管理很麻煩,或者解除安裝不乾淨?是不會的,安裝後並不會向 Windows 一樣會有登錄檔、或儲存在其他位置,導致解除安裝不不乾淨。Linux 解除安裝時也會解除安裝對應的安裝目錄,這個不用擔心。
3) 測試安裝
[root@localhost Packages]# rpm -ivh --test sudo-1.8.23-3.el7.x86_64.rpm #只對安裝進行測試,並不是實際安裝
說明:比如測試是否已經安裝、是否會衝突、是否存在依賴等。
4) 軟體包已被安裝
[root@localhost Packages]# rpm -ivh --replacepkgs sudo-1.8.23-3.el7.x86_64.rpm #覆蓋安裝該軟體包
5) 檔案衝突
[root@localhost Packages]# rpm -ivh --replacepkgs --replacefiles sudo-1.8.23-3.el7.x86_64.rpm #如果要安裝的軟體包中有一個檔案以及在安裝其它軟體包是安裝,解決檔案衝突時可以使用 --replacefiles 選項,可以忽略該錯誤資訊。
6) 未解決依賴關係
RPM 軟體包可能依賴於其他軟體包,在安裝了特定的軟體包之後才能安裝該軟體包。
[root@localhost Packages]# rpm -ivh --replacepkgs --nodeps sudo-1.8.23-3.el7.x86_64.rpm
說明:如果不考慮依賴關係,強行安裝可以使用 --nodeps 選項,但是安裝後該軟體包可能不能正常執行。
3) 升級
[root@localhost Packages]# rpm -Uvh sudo-1.8.23-3.el7.x86_64.rpm
注意:
1. 首先需要將新版本的軟體包下載下來;
2. 指定升級的軟體包應該比當前的軟體包版本更高。
4) 查詢【選項】
1. -p 查詢軟體包
# rpm -q sudo
注意:只能查詢二進位制軟包,不能查詢原始碼包和指令碼安裝的軟體。
2. -a 查詢所有已安裝的軟體包
# rpm -qa
3. -f 查詢檔案(檔案、命令、配置檔案等)所屬的軟體包
# rpm -qf /etc/services #檢視配置檔案軟體包
# rpm -qf /bin/ls #檢視命令所屬軟體包
4. -i 查詢已安裝的軟體包資訊
# rpm -qi sudo
5. -p 查詢未安裝的軟體包資訊
# rpm -qip sudo-1.8.23-3.el7.x86_64.rpm #因為還未安裝,所以需要寫上軟體包的全稱
6. -l 查詢軟體包中的檔案列表
# rpm -ql sudo #查詢已安裝軟體包的安裝目錄和檔案
# rpm -qlp sudo-1.8.23-3.el7.x86_64.rpm #查詢未安裝軟體包的安裝目錄和檔案
提示:在 Linux 相同型別的檔案都存放在同一目錄下,例如:
/etc/ 一般用於存放配置檔案
/usr/bin/ 或者 /usr/sbin/ 一般用於存放命令檔案
/usr/libexec/ 一般用於存放庫檔案
/usr/share/doc/ 一般用於存放文件檔案
/usr/share/man/ 一般用於存放幫助檔案
/var/ 一般用於存放臨時檔案
7. -d 查詢被標註為文件的檔案列表(與 -l 相比,可以看做是分類查詢)
# rpm -qd sudo #查詢已安裝的
# rpm -qdp sudo-1.8.23-3.el7.x86_64.rpm #查詢未安裝的
8. -c 查詢被標註為配置檔案的檔案列表(與 -l 相比,可以看做是分類查詢)
# rpm -qc sudo #查詢已安裝的
# rpm -qcp sudo-1.8.23-3.el7.x86_64.rpm #查詢未安裝的
示例1:檢視一個服務的軟體包資訊
# ls /etc/rc.d/init.d
functions msg.script netconsole network README
# rpm -qf /etc/rc.d/init.d/functions
initscripts-9.49.46-1.el7.x86_64
# rpm -qip /etc/rc.d/init.d/functions
示例2:檢視 vim 軟體包的示例檔案(尋找 ~/.vimrc 檔案註釋問題)
# rpm -qa | grep vim #查詢 vim 的安裝包
# rpm -ql vim-common | grep example #查詢 vim 的示例檔案
# more /usr/share/vim/vim74/vimrc_example.vim #檢視 vim 示例檔案內容
可以看到,示例檔案中並不是以 # 號註釋,而是使用"(雙引號)
5) 校驗
校驗的作用:解決比如黑客侵入系統,獲取其他人將軟體檔案修改,刪除,導致軟體執行不了。這時就需要使用到校驗功能。
語法:# rpm -V 軟體名稱
示例:
# rpm -V sudo #首先校驗 sudo 軟體包(無返回內容)
說明:在無任何改動的情況下,是不沒有返回內容的(這是正常的)
# vi /etc/pam.d/sudo #模擬將 sudo 的配置檔案進行修改
# rpm -V sudo #再次校驗 sudo 軟體包
S.5....T. c /etc/pam.d/sudo #返回內容
n 以上值分別代表的改變項:
1. 5 檔案的 md5 校驗值
2. S 檔案的大小
3. L 連結檔案
4. T 檔案的建立或修改時間
5. D 裝置檔案
6. U 檔案的使用者
7. G 檔案的使用者組
8. M 檔案的許可權
說明:為什麼 RPM 軟體包可以校驗?是因為 rpm 軟體包安裝到系統後,會自動生成一個 rpm 庫,校驗時會與 rpm 庫進行比較,得出校驗的值。
6) 軟體包檔案提取
如果不小心把系統中的配置檔案或命令刪除掉了,可以通過軟體包檔案提取的方式,恢復丟失的檔案。
示例:將 sudo 中的 sudo-i 配置檔案刪除後,再從軟體包中恢復。
# rpm -ql sudo | grep etc #查詢 etc 下的配置檔案
/etc/pam.d/sudo-i #以 sudo-i 為例
# rm -f /etc/pam.d/sudo-i #刪除 sudo-i
# rpm -q sudo #確定 sudo 屬於哪個軟體包
sudo-1.8.23-3.el7.x86_64
[root@localhost /]# mkdir backup #建立解壓目錄
[root@localhost backup]# rpm2cpio /mnt/cdrom/Packages/sudo-1.8.23-3.el7.x86_64.rpm | cpio -idv ./etc/pam.d/sudo-i #解壓到當前目錄(/backup/etc/pam.d)
[root@localhost backup]# cp etc/pam.d/sudo-i /etc/pam.d/sudo-i #拷貝恢復檔案
[root@localhost /]# rm -rf backup #刪除臨時目錄
3. RedHat 系使用 YUM 二進位制軟體包管理
n YUM 的優缺點
1) 自動解決軟體包的依賴關係;
2) 方便軟體包的升級(不需要手動下載軟體包,可以自動在 yum 源中下載);
3) 安裝的軟體包是 yum 源官方的,是可以信賴的。如果自己去網站中下載,軟體包中可能植入木馬,是不安全的。
4) 缺點是,yum 在查詢軟體包資訊時比較慢,這是可以採用 RPM 來彌補。
1) 安裝
# yum install sudo #自動安裝 sudo 軟體包
# yum -y install tree #當安裝過程提示選擇全部為"yes"
注意:因為 yum 是在網際網路尋找軟體包的源,所以必須是聯網的。
2) 檢測升級
# yum check-update sudo #指定檢測 sudo 軟體包是否升級,如果不指定將檢測所有軟體包。如果有可用的新軟體包將會顯示,否則不會顯示
說明:為什麼要升級軟體包呢?因為軟體包可能存在一些漏洞或BUG,這些漏洞可能照成黑客的侵入,所以有必要升級為最新的軟體包。
3) 升級
# yum update sudo #升級 sudo 軟體包
# yum -y update #升級所有包同時也升級軟體和系統核心
# yum -y upgrade #只升級所有包,不升級軟體和系統核心
4) 查詢軟體包
# yum list | more #查詢 yum 源中所有的軟體包
# yum list | grep sudo #查詢 yum 源中 sudo 軟體包的安裝資訊
或者
# yum list sudo #查詢 yum 源中 sudo 軟體包的安裝資訊
sudo.x86_64 1.8.23-4.el7_7.2 @updates
@updates 處可能包含的值(帶有@表示已更新或已安裝):
l updates: 未安裝
l installed: 已安裝
l @updates: 已更新
l base: Linux 自帶的軟體包(已安裝)
l extras: Linux 自帶的軟體包(未安裝)?
l @anacond: Linux 自帶的軟體包(已更新)?
5) 檢視軟體包
yum info sudo #檢視軟體包資訊
yum list | grep libgdiplus #檢視軟體包安裝位置
rpm -ql libgdiplus-devel.x86_64
6) 解除安裝
yum remove sudo
7) 幫助
yum -help
man yum
4. RedHat 系原始碼包安裝
n 原始碼包的特點
1) 二進位制包在安裝和使用比較簡單,但是二進位制包並沒有提供給使用者提供更多的空間,導致使用者很難去配置,或指定安裝目錄。
2) 而原始碼包可以指定很多的設定和選項,或者去修改原始碼,在很多知名軟體中都是直接提供原始碼包的,靈活度和定製型非常高,使用者可以自己去增加或去掉一些功能。
3) 因為是原始碼包,是在安裝時才進行編譯安裝,與二進位制包相比,它可以支援更多的 CPU 和作業系統。
1) 安裝示例(proftpd)
1. 第一步:下載原始碼包
2. 第二步:下載後上傳至系統 /home/abream/learn 目錄下
/home/abream/learn/proftpd-1.3.6c.tar.gz
分別表示:proftpd 軟體名稱;1.3.6c 版本號;tar.gz 壓縮格式
3. 第三步:解壓縮到當前目錄
[root@localhost learn]# tar -xzvf proftpd-1.3.6c.tar.gz
4. 第四步:進入到解壓目錄(proftpd-1.3.6c)
[root@localhost proftpd-1.3.6c]# ls
標準的原始碼包中都會有一個 configure 的可執行指令碼。
5. 第五步:配置
與 rpm 二進位制包不一樣,原始碼包沒有專門的解除安裝命令,所以安裝前建議指定安裝目錄。通常情況下,原始碼包建議安裝在 /usr/local 目錄下,然後再加一個以軟體名命名的目錄,例如:/usr/local/proftpd
[root@localhost proftpd-1.3.6c]# ./configure --prefix=/usr/local/proftpd
以上提示錯誤資訊:表示在系統的 $PATH (預設路徑)中,沒有找到 C 的編譯器,配置終止了。如果存在其他錯誤,注意看提示資訊!如果存在缺少的軟體包,安裝上即可。
C 編譯器廣泛採用的是 gcc,下面就安裝下 gcc 的編譯器。而 gcc 依賴於很多庫檔案,所以建議採用 yum 來進行安裝。
[root@localhost proftpd-1.3.6c]# yum install gcc
提示:
1) 因為原始碼是 C 語言寫的,所以必須有一個 C 的編譯器才能安裝;
2) C 編譯器裝 cc 或者其他的都是可以的,只是 gcc 用的比較廣泛。
gcc 安裝完成後,再次執行配置
[root@localhost proftpd-1.3.6c]# ./configure --prefix=/usr/local/proftpd
顯示以上提示,表示配置這個步驟已經完成了。
6. 第六步:編譯
[root@localhost proftpd-1.3.6c]# make
編譯成功後,會在當前目錄中生成對應的可執行檔案,提供按安裝。
7. 第七步:編譯安裝
[root@localhost proftpd-1.3.6c]# make install
安裝完成後,可以在安裝目錄下檢視到安裝目錄和檔案:
提示:
1) 直到這一步才真正將原始碼包安裝完成;
2) 最後一步(安裝),其實就是將編譯好的檔案,拷貝到對應的目錄中。
2) 解除安裝示例(proftpd)
# kill `pgrep proftpd` #關閉 proftpd 的程序
# rm -rf /usr/local/proftpd #刪除安裝的目錄即可
5. RedHat 系指令碼安裝(Shell 或 Java 指令碼)
因為原始碼包安裝比較複雜,所以有些公司推出指令碼安裝的方式(比如:webmin),這種方式與 Windows 安裝軟體沒多大區別。指令碼安裝分為兩種,一種是 Shell 指令碼(webmin),另一種是 Java 指令碼(如:OpenOffice)(Java 指令碼採用圖形安裝)。
1) 安裝示例(webmin(Shell 指令碼安裝示例))
遠端管理 Linux 除了使用命令列工具(如:Xshell、SecureCRT、putty),和圖形管理工具(如:WinSCP、XManager)。
而 webmin 是一個介於兩則之間的遠端管理工具,採用瀏覽器來遠端管理作業系統,它是一種圖形化的操作。在業界是比較有名的,強大的遠端管理工具。
1. 第一步:下載軟體包
下載地址:http://webmin.com/
2. 第二步:下載後上傳至系統 /home/abream/learn 目錄下
/home/abream/learn/webmin-1.941.tar.gz
3. 第三步:解壓縮到當前目錄
[root@localhost learn]# tar -xzvf webmin-1.941.tar.gz
4. 第四步:檢視安裝說明檔案
[root@localhost webmin-1.941]# ls -l | grep README
-rw-rw-r--. 1 3001 wheel 3801 1月 15 08:06 README.md
[root@localhost webmin-1.941]# cat README.md
在 Linux 中,如果不是標準的原始碼安裝方式,那麼一定有一個說明文件,比如:README(請先讀我)、INSTALL(安裝說明)
5. 開始安裝
[root@localhost webmin-1.941]# ./setup.sh #執行安裝指令碼
說明:確定配置檔案目錄,不改直接回車,如果要改則輸入指定的目錄。
說明:因為 webmin 是使用 perl 語言寫的,安裝會檢查是否 perl 語言,如果沒有安裝將會終止。
說明:指定 webmin 的埠,例如:web service:80,ftp:20或21,ssh:22
安裝過程中,會生成解除安裝 webmin 的指令碼,後續需要解除安裝直接執行該指令碼即可。
注意:當完成以上設定後,後續的編譯安裝過程都是自動完成的。
安裝完成!使用者名稱:admin,密碼:admin
6. 訪問 webmin
本機訪問:http://localhost.localdomain:10000/
區域網訪問:http://192.168.1.150:10000/
區域網如果無法訪問,需要開啟防火牆:
1) 進入 /etc/sysconfig/ 目錄
2) 將埠加入信任規則中,執行命令:
iptables -I INPUT -p TCP –dport 10000 -j ACCEPT
2) 解除安裝示例(webmin)
# /etc/webmin/uninstall.sh #執行解除安裝指令碼
6. Debian 系 Linux 軟體包管理介紹(APT 包管理)
1. 搜尋軟包 apt-cache search
2. 軟體包資訊 apt-cache show
3. 安裝 apt-get install(reinstall、-f)
4. 刪除 apt-get remove(autoremove、--purge)
5. 更新軟體源 apt-get update
6. 更新已安裝包 apt-get upgrade