Liunx操作系統筆記2

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的配置可能會更加復雜,需要更多的時間和精力。
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86312.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86312.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86312.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

企業級RAG系統架構設計與實現指南(Java技術棧)

企業級RAG系統架構設計與實現指南(Java技術棧) 開篇:RAG系統的基本概念與企業應用價值 在當今快速發展的AI技術背景下,檢索增強生成(Retrieval-Augmented Generation, RAG) 已成為構建智能問答、知識庫管…

【Rust http編程】Rust搭建webserver的底層原理與應用實戰

?? 歡迎大家來到景天科技苑?? 🎈🎈 養成好習慣,先贊后看哦~🎈🎈 🏆 作者簡介:景天科技苑 🏆《頭銜》:大廠架構師,華為云開發者社區專家博主,…

4 Geotools坐標參考系與轉換

在地理信息系統 (GIS) 開發中,坐標參考系統 (Coordinate Reference System, CRS) 是核心概念之一。無論是處理地圖投影、坐標轉換,還是在 Spring Boot 應用中管理空間數據,理解和正確使用 CRS 都至關重要。本文將圍繞 GeoTools 庫&#xff0c…

docker start mysql失敗,解決方案

文章目錄 1.查看端口占用情況2.關閉7767進程3.再次檢查4.運行docker start mysql 1.查看端口占用情況 sudo netstat -tanlp | grep :33062.關閉7767進程 sudo kill -9 77673.再次檢查 進程已關閉 4.運行docker start mysql 正確啟動 備注:可能要關閉防火墻

SQL關鍵字三分鐘入門:DELETE —— 刪除數據

在數據庫操作中,除了添加和修改記錄外,我們有時還需要刪除不需要的記錄。例如: 清除不再使用的用戶賬號;刪除已完成并歸檔的訂單;移除測試時插入的數據。 這時候就需要用到 SQL 中非常基礎但極其重要的關鍵字 —— D…

electron 全量更新

electron-builder.yml配置更新地址 # 配置自動更新的信息 publish:provider: generic # 更新服務提供者url: http://xxx.xxxx.com/pc/xxx-xx# 更新的地址服務器地址 會自動讀取latest.yml 下的版本號比較 檢測更新方法autoUpdater.js// src/main/autoUpdater.jsimport { app, d…

《大模型 Agent 應用實戰指南》第2章:商業目標與 Agent 能力邊界定義

在任何技術項目,特別是像大模型 Agent 這樣具有創新性和復雜性的項目啟動之初,明確清晰的商業目標是成功的基石。這不僅僅是技術團隊的職責,更需要產品、運營、銷售甚至高層管理者的深度參與。一個明確的目標能確保所有團隊成員步調一致,資源有效分配,并最終衡量項目的成功…

提供穩定可靠的自助共享空間系統,支撐客戶無人自助門店運營不錯數據,歷程感想

以技術產品研發系統為主,為客戶提供自助共享空間系統解決方案,適用于共享棋牌室,共享麻將室,共享臺球室,共享KTV,共享舞蹈室等場景,以下是其中一位客戶真實門店運營數據,第一家店本月…

Golang單例實現

Go語言中,實現單例模式的方式有很多種。單例模式確保一個類只有一個實例,并提供一個全局訪問點。Go語言沒有類的概念,但是可以通過結構體、函數和包級變量來實現類似的功能。 懶漢實現 type Product interface {DoSomething() }type single…

JVM元空間(Metaspace)詳解及其工作流程

JVM元空間(Metaspace)詳解與工作流程分析 元空間概述 元空間(Metaspace)是Java虛擬機(JVM)在HotSpot VM 1.8及以后版本中引入的,用于替代永久代(PermGen)的內存區域。它主要存儲類的元數據信息,包括: 類的結構信息(如方法、字段…

【JAVA】idea中打成jar包后報錯錯誤: 找不到或無法加載主類

排查步驟 首先要排查的是,將jar文件打開,查看里面的內容是否完整是否有META-INF/MANIFEST.MF是否有MANIFEST.MF里面類路徑的目錄排查路徑里面是否有class文件,如主類 com.example.Main 對應的 class 文件應位于 com/example/Main.class 常見…

Fisco Bcos學習 - 開發第一個區塊鏈應用

文章目錄 一、前言二、業務場景分析:簡易資產管理系統三、智能合約設計與實現3.1 存儲結構設計3.2 接口設計3.3 完整合約代碼 四、合約編譯與Java接口生成五、SDK配置與項目搭建5.1 獲取Java工程項目5.2 項目目錄結構5.3 引入Web3SDK5.4 證書與配置文件 六、業務開發…

軟件設計模式選擇、判斷解析-1

前言 解析是我個人的理解,相對來說我覺得是能對上定義的邏輯的 目錄 一.單選題 1.設計模式的兩大主題是(??)? 解析:無 2.下列模式中,屬于行為型模式的是() 解析: 排除A和D,剩下的觀察者的“觀察”…

【編程基本功】Win11中Git安裝配置全攻略,包含Git以及圖形化工具TortoiseGit

1 摘要 今天田辛老師給大家帶來了一份超實用的博客,手把手教你安裝并配置 Git 及其圖形化界面 TortoiseGit,從官網下載到最終完成配置,每一個步驟都給大家講得明明白白,還配有相應的截圖,即使是新手小白也能輕松上手&…

細談QT信號與槽機制

轉自個人博客 信號與槽是我個人認為QT中最牛的機制之一,最近沒有其他的內容可寫,今天就來細細總結一下這個信號與槽機制。 1. 信號與槽機制概述 信號與槽機制可以理解為QT中的一種通信手段,在運行相關代碼前,分別聲明信號和槽&a…

Docker Swarm 與 Kubernetes 在集群管理上的主要區別

Docker Swarm 和 Kubernetes 是兩種流行的容器編排工具,它們都可以用于部署、管理和擴展容器化應用,但在集群管理方面有明顯的差異。 下面從多個維度對比它們在集群管理上的主要區別: ? 一、總體定位 項目Docker SwarmKubernetes官方支持D…

【StarRocks系列】查詢優化

步驟參考官網 分析查詢 | StarRocks StarRocks-Profile分析及優化指南 StarRocks-Profile分析及優化指南 - 經驗教程 - StarRocks中文社區論壇

軟測八股--測試理論 1 測試基礎

軟件測試? 發現程序中的側屋執行程序工程 目的:不僅是找出錯誤,還要分析錯誤產生原因和錯誤分布。檢查開發如阿健過程出現的bug,使開發人員及時修改。測試只能說明軟件中存在錯誤 目標:盡可能發現多的錯誤。一個好的…

mfc與vs成功在xp系統所需做的修改

目錄 前言一、MFC程序 inet_pton 、CT2A 未聲明問題1)問題1:inet_pton :undeclared identifier - inet_pton未聲明2)問題1:CT2A :undeclared identifier - CT2A未聲明 二、VS程序 使用事件、委托問題1&…

SpringMVC系列(三)(請求處理的十個實驗(上))

0 引言 作者正在學習SpringMVC相關內容,學到了一些知識,希望分享給需要短時間想要了解SpringMVC的讀者朋友們,想用通俗的語言講述其中的知識,希望與諸位共勉,共同進步! 本系列會持續更新!&…