Linux下的包/源管理命令:主要任務是完成在Linux環境下安裝軟件。
1.rpm 是最基礎的rpm包的安裝命令,需要提前下載相關安裝包和依賴包。
2.yum/dnf是基于rpm包的自動安裝命令,可以自動在倉庫中匹配安裝軟件和依賴包。
3.光盤源 是指的 安裝系統時候的操作系統光盤,它里面有很多自帶的常用軟件安裝包,定位于當前主機。
4.局域網源·是指本地局域網不便連接互聯網,而且客戶機都在局域網內,定位于網內自建倉庫局部使用。
5.互聯網源 是指當前主機可以直接外接互聯網,通過外網提供的的倉庫完成在線安裝軟件。
6.源碼安裝 是指從互聯網下載相關軟件的源代碼,在本機上進行配置,編譯,安裝 的過程。
離線管理命令
rpm:rpm命令中文譯為“紅帽軟件包管理器,其功能是在Linux系統下對軟件包進行安裝、卸載、查詢、驗證、升級等工作常見的主流系統(如RHEL、CentOS、Fedora等)都采用這種軟件包管理器,推薦用固定搭配“rpm? ?-ivh "? 軟件包名”安裝軟件,而卸載軟件則用固定搭配" rpm.-evh "軟件包名。
語法格式:rpm 參數 軟件包名
常用參數:
-a? 顯示所有軟件包? ? -c? 僅顯示組態配置文件
-d? 僅顯示文本文件? ? ? -e? 卸載軟件包? ? ?
-p? 顯示指定的軟件包信息? ? ?-q? 顯示指定軟件包是否已安裝? ? ? ?
-R 顯示軟件包的依賴關系? ? ? -s 顯示文件狀態信息
-f? 顯示文件或命令屬于哪個軟件包? ? ? -U? 升級軟件包
-h? 安裝軟件包時顯示標記信息? ? ?-v? 顯示執行過程信息
-vv? 顯示執行過程詳細信息? ? ? ? ?-i? 安裝軟件包
-l? 顯示軟件包的文件列表
使用示例:
rpm -ivh? ?cockpit? ?#正常安裝軟件包,需要提前下載rpm包文件
rpm? -qa? ? ? ?#? 顯示系統已安裝過的全部RPM軟件包
rpm? -qa? |? grep cockpit? # 過濾出其中某一個包
rpm? -qa? --last? ?# 列出所有已安裝軟件包,按照最近安裝或者更新時間排序
rpm? -ql cockpit? ?#查詢某個軟件的安裝路徑
rpm? -qi cockpit? ?#查看包的信息
rpm? -qf? /sbin/ifconfig? # 查看某一個程序來自哪個安裝包
rpm -qc rsync? ?# 查看安裝的軟件的配置文件位置
rpm -qR docker-ce? ?# 查看安裝軟件的依賴包
rpm -evh cockpit? ?#卸載通過RPM軟件包安裝的某個服務
rpm -e --nodeps coclpit? ?#卸載軟件包,忽略其依賴項
rpm -Uvh cockpit? ?#升級某個軟件包
rpm -Uvh --force cockpit-185-2.el8.x86_64.rpm? #強制安裝軟件包,即使存在版本沖突或者其他問題
如果需要依賴,可以下載依賴并將依賴和程序一起安裝
sudo rpm -ivh 主程序.rpm 依賴1.rpm 依賴2.rpm .........
^] 出現表示telnet 連接目標服務器和端口成功。
^] 不是輸入的信息,是按下ctrl + l 會自動輸入這個符合并退出telnet連接
quit? 整體退出當前控制環境
本地源管理命令
yum: yum命令功能是在Linux系統中基于RPM技術進行軟件包的管理工作。yum技術通用于RHEL、CentOS、Fedora、OpenSUSE等主流系統,可以讓系統管理人員交互式地自動化更新和管理軟件包,實現從指定服務器自動下載、更新、刪除軟件包的工作。yum軟件倉庫及命令能夠自動處理軟件依賴關系,一次性安裝所需的全部軟件,無須煩瑣的操作。
語法格式:yum 參數 動作 軟件包
常用參數:install? ? 安裝軟件包? ? ? ? clean 清理過期的緩存
shell? ? ?設置使用的shell提示符? ? ?check-update 檢查是否有可用的更新軟件包
resolvedep? ? 顯示軟件包的依賴關系? ? ? ?localinstall? ?安裝本地軟件包
update 更新軟件包? ? ?remove 刪除軟件包
localupdate? ?更新本地軟件包? ? ? deplist? ?顯示軟件包的依賴關系
info? ?顯示指定軟件包的描述和概要信息
list? ? 顯示軟件包的信息? ? ?search 搜索指定軟件包
參考示例:
yum clean all? ?#清理原有的軟件倉庫信息緩存
yum? makecache??#建立最新的軟件倉庫信息緩存
yum install? httpd? ?#安裝指定的服務及相關軟件包
yum update httpd??#更新指定的服務及相關軟件包
yum remove? httpd??#卸載指定的服務及相關軟件包
yum grouplist??#顯示可安裝的軟件包組列表
yum list? ?#列出所有可安裝的軟件清單
yum info httpd??#顯示指定服務的軟件信息
yum check-update? #列出所有可更新的軟件清單
yum update? ?#安裝所有更新軟件
yum search httpd??#使用YUM查找軟件包
yum list installed? #列出所有已安裝的軟件包
yum info installed? #列出所有已安裝的軟件包信息
yum本地源實現過程及原理:
先在yum服務器上創建 yum? repository(倉庫),在倉庫中事先存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下),當yum客戶端利用 yum/dnf 工具進行安裝時會自動下載repodata中的元數據,查詢遠數據是否存在相關的包及依賴關系,自動從倉庫中找到相關包下載并安裝。
yum需要依賴于環境,依賴于服務端和客戶端,允許跨網絡。
(1)服務端需要的兩個文件:
????????RPM包(Packages文件夾中)
????????元數據(repodata文件夾:目錄 (軟件的目錄),軟件的依賴關系,軟件的位置)
(2)客戶端的配置文件中:
????????baseurl=地址一定要寫到這兩個文件夾repodata和packages的上級目錄
????????最終形成兩個文件夾Packages(包文件夾一般取名packages)和repodata(元數據文件夾)
(3)倉庫類型:
????????光盤的倉庫基本倉庫:比較常用的
????????epel擴展倉庫:比較新
主配置文件:cat /etc/yum.conf
默認的yum倉庫 是centos官方的yum源,需要聯網才可以使用。 ls /etc/yum.repos.d/
局域網yum源配置:建設一個本地網絡倉庫給本地局域網用戶提供下載安裝。
第三方yum源配置:在線獲取最新安裝文件的通道。
1.局域網Web方式yum源配置:
web服務器提供yum安裝服務:
yum install -y httpd? ? ? #安裝并啟動httpd
setenforce 0? ? ?#關閉SELinuX#.查看當前狀態
getenforce? ? ? ?#查看當前狀態?
Permissive表示關了? ?Enforcing表示沒關
systemctl? ? stop? ?firewalld? ? ?#臨時關閉防火墻
systemctl status firewalld? ??#查看防火墻狀態,空圈表示關閉,綠點表示開啟
systemctl? start? httpd? ? #啟動httpd? ? ?
systemctl status??httpd? ? ?#查看httpd是否啟動,查看完畢用q鍵退出
httpd服務的目錄文件在? /var/www/html
進入該目錄,創建文件夾rhiso,掛載光盤到rhiso
mount /dev/sr0? var/www/html/rhiso
在瀏覽器輸入本機ip/rhiso,比如:http://127.0.0.1/rhiso/ 出現下面頁面代表配置完成
中文亂碼解決方法 在 /etc/httpd/conf/httpd.conf 配置文件中加入 IndexOptions Charset=UTF-8
客戶端訪問服務器的yum源:
當在上一臺機器已經配置好httpd后,我們選擇同一網段內網其他機器配置yum源去訪問此臺服務器
如果使用拿不到ip地址,是因為我們都是同一個虛擬機拷貝的,會出現地址沖突
mv /var/lib/NetworkManager /var/lib/NetworkManager.bak? ? ? ?#網絡接口備份
reboot? ?#重啟虛擬機機器,設備在重啟階段會自動創建一個新的接口
有ip地址后,測試一下,當前客戶機是否與服務器聯通情況,ping 192.168.x.x #測試當前主機是否與服務器連接暢通
cd /etc/yum.repos.d/
vim local.repo 加入如下內容:
[RHEL9-BaseOS]
name=RHEL9-BaseOS
baseurl=http://172.16.80.63/rhiso/BaseOS
gpgcheck=0
[RHEL9-Appstream]
name=RHEL9-Appstream
baseurl=http://172.16.80.63/rhiso/AppStream
gpgcheck=0
yum clean all #清理舊緩存
yum makecache #建立新緩存
yum repolist #查看倉庫列表
源碼管理命令
源碼包的安裝
????????編譯需要編譯環境,開發環境,開發庫,開發工具。
????????常用的編譯環境有c、c++、perl、java、python5種
????????c環境的編譯器:gcc(GNU C Complier)
????????c++環境的編譯器:g++
????????make(進行編譯的動作)編譯命令:c、c++的統一項目管理工具,編譯時有可能調用gcc也有可能調用g++。
????????使用makefile文件定義make按何種次序去編譯源程序文件中的源程序
源碼安裝三部曲(常見):
第一步: ./configure(定制組件)
1.指定安裝路徑,例如 – prefix=/opt/nginx-1.12
2.啟用或禁用某項功能, 例如 --enable-ssl
3.和其它軟件關聯,例如–with-pcre
4.檢查安裝環境,例如是否有編譯器 gcc,是否滿足軟件的依賴需求
5.檢測通過后生成Makefile文件
第二步: make (生成程序)
1.執行make命令進行編譯, 可以使用-j指定CPU核心數進行編譯
2.按Makefile文件進行編譯, 編譯成可執行二進制文件
3.生成各類模塊和主程序
第三步: make install
1.按Makefile定義好的路徑拷貝至安裝目錄中
上面介紹的源碼三部曲不能百分百通用于所有源碼包, 也就是說源碼包的安裝并非存在標準安裝步驟,但是大部分源碼安裝都是類似的步驟
建議:
拿到源碼包解壓后,然后進入到目錄找相關的幫助文檔,通常會以INSTALL或者README為文件名
源碼包編譯實例
下面通過編譯安裝nginx來深入理解源碼包安裝
1.基礎環境準備 [root@localhost ~]#?
編譯器:yum -y install gcc gcc-c++ make wget
依賴包:yum -y install zlib zlib-devel openssl pcre pcre-devel
2.下載源碼包(源碼包一定要上官方站點下載,其他站點不安全)
?[root@localhost ~]# cd /usr/src
?[root@localhost src]# wget http://nginx.org/download/nginx-1.12.2.tar.gz
3.解壓源碼包,并進入相應目錄
[root@localhost src]# tar -zxvf nginx-1.12.2.tar.gz
[root@localhost src]# cd nginx-1.12.2
4.配置相關的選項,并生成Makefile
[root@localhost nginx-1.12.2]# ./configure --prefix=/opt/nginx-1.12.2
5.編譯并安裝
[root@localhost nginx-1.12.2]# make #開始編譯源碼
[root@localhost nginx-1.12.2]# make install #開始安裝程序
6.建立軟鏈接
[root@localhost nginx-1.12.2]# ln -s /opt/nginx-1.12.2 /opt/nginx
7.測試效果
systemctl stop httpd? ? #停止Apache
cd obj
./nginx? ? #啟動nginx
打開瀏覽器,輸入127.0.0.1
可能出現的錯誤:
1、not found ./configure: error: C compiler cc is not found
解決方案
[root@localhost ~]# yum -y install gcc gcc-c++ make
2./configure: error: the HTTP rewrite module requires the PCRE library.
解決方案
[root@localhost ~]# yum install -y pcre-devel
3./configure: error: the HTTP gzip module requires the zlib library.
解決方案:
[root@localhost ~]# yum -y install zlib-deve
4./configure: error: SSL modules require the OpenSSL library.
解決方案
[root@localhost ~]# yum -y install openssl-devel
5.error: ‘struct crypt_data’ has no member named ‘current_salt’
?cd.current_salt[0] = ~salt[0];
解決方案
vi src/os/unix/ngx_user.c
將26行 **cd.current_salt[0] = ~salt[0];**注釋掉
6、ngx_http_script.c:698:18: error: cast between incompatible function
//解決方案
進入objs目錄下修改Makefile文件
CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter **-
Werror** -g
將 **- Werror** 去掉
擴展:
在選擇Web服務器時,Nginx和Apache都是備受推崇的選擇。然而,對于許多開發者和管理員來說,選擇哪一個可能會成為一個難以解決的問題。因此,我們需要對兩者進行比較,以確定哪一個更適合我們的需求。
首先,Nginx以其高效的性能而聞名。它是一個輕量級的Web服務器,可以處理大量并發連接。
相比之下,Apache是一個成熟的Web服務器,但它在處理并發連接時可能會出現性能瓶頸。
因此,如果您需要處理大量并發連接,Nginx可能是更好的選擇。
其次,Nginx具有更好的負載均衡功能。它可以在多個服務器之間均衡地分配流量,以提高性能和可靠性。Apache也可以實現負載均衡,但相對來說要更為復雜。
最后,Nginx的配置文件比Apache更為簡單和易于理解。這意味著您可以更快地配置服務器并更快地上線。相比之下,Apache的配置可能會更加復雜,需要更多的時間和精力。
?