1. 程式人生 > 其它 >Linux 軟體包管理輸入日誌標題

Linux 軟體包管理輸入日誌標題

Ø 簡介

本文主要介紹 Linux 軟體包的管理,包括如下內容:

目錄

1. wget 命令的使用... 1

2. RedHat 系使用 RPM 二進位制軟體包管理... 1

3. RedHat 系使用 YUM 二進位制軟體包管理... 5

4. RedHat 系原始碼包安裝... 6

5. RedHat 系指令碼安裝(Shell 或 Java 指令碼)... 8

6. Debian 系 Linux 軟體包管理介紹(APT 包管理). 10

1. wget 命令的使用

功能描述

wgetLinux下下載檔案的最常用命令。wget支援HTTPHTTPSFTP協議,支援自動下載,即可以在使用者退出系統後在後臺執行,直到下載結束。

語法

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

可以跟蹤 HTML 頁面上的連結依次下載來建立遠端伺服器的本地版本,完全重建原始站點的目錄結構,這又常被稱作遞迴下載

wget 非常穩定,它在頻寬很窄的情況下,或者網路不穩定的情況下有很強的適應性。如果是由於網路的原因下載失敗,wget 會不斷的嘗試,直到整個檔案下載完畢。如果是伺服器打斷下載過程,它會再次聯到伺服器上從停止的地方繼續下載。這對從那些限定了連結時間的伺服器上下載大檔案非常有用。

更多使用方法:https://www.cnblogs.com/ftl1012/p/9265699.html

2. RedHat 系使用 RPM 二進位制軟體包管理

n RPM 的優缺點

1) rpm 在查詢上很好的彌補了 yum

的不足,查詢速度要比 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. 第一步:下載原始碼包

下載地址:http://www.proftpd.org/

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) 安裝示例(webminShell 指令碼安裝示例))

遠端管理 Linux 除了使用命令列工具(如:XshellSecureCRTputty,和圖形管理工具(如:WinSCPXManager)。

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:80ftp:2021ssh: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