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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sed的高级命令和软件包管理器rpm

發布時間:2025/3/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sed的高级命令和软件包管理器rpm 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 sed的高級編輯命令

?1、高級編輯命令

??P:打印模式空間開端至\n內容,并追加到默認輸出之前
??h:把模式空間中的內容覆蓋至保持空間中
??H:把模式空間中的內容覆蓋至保持空間中
??g:從保持空間取出數據覆蓋至模式空間
??G:從保持空間取出內容追加至模式空間
??x:把模式空間中的內容與保持空間中的內容進行互換
??n:讀取匹配到的行的下一行覆蓋至模式空間
??N:讀取匹配到的行的下一行追加至模式空間
??d:刪除模式空間中的行
??D:如果模式空間包含換行符,則刪除直到第一個換行符的模式空間中的文本,并不會讀取新的輸入行,而使用合成的模式空間重新啟動循環。如果模式空間不包含換行符,則會想發出d命令那樣啟動正常的新循環

?2、sed示例:

??sed -n ‘n;p’ file 顯示偶數行
??sed ‘1!G;h;$!d’ file 倒序顯示文件每一行內容
??sed ‘N;D’ file 僅顯示最后一行
??sed ‘$!N;$!D’ file 僅顯示文件最后兩行
??sed ‘G’ file 每行后加一個空行
??sed ‘g’ file 將每行內容替換為空行
??sed ‘/^$/d;G’ file 每行后加一個空行,已有空白行的僅顯示一個空白行
??sed ‘n;d’ file 顯示奇數行
??sed -n ‘1!G;h;$p’ file 倒序顯示文件的每一行內容

二、 軟件包管理

?1、 軟件運行和編譯

??1. 軟件編譯的流程

???程序源代碼?預處理?編譯?匯編?鏈接
???動態編譯:.a
???動態編譯:.so

??2. 靜態和動態鏈接

???鏈接主要作用是把各個模塊之間互相引用的部分處理好,使得各個模塊之間能夠正確的銜接,分為靜態鏈接和動態鏈接
???靜態鏈接的特點:
????把程序對應的依賴庫復制一份到包
????libxxx.a
????嵌入程序包
????升級難,需要重新編譯
????占用較多空間,遷移容易
???動態鏈接的特點:
????只把依賴加做一個動態鏈接
????libxxx.so
????“鏈接指向”
????占用較少空間,升級方便

??3. 開發語言

???系統級開發
????C
????C++
???應用及開發
????Java
????delphi
????python
????go
????Php
????perl
????ruby

?2、 軟件包

??1.二進制應用程序的組成部分:

???二進制文件、庫文件、配置文件、幫助文件

??2.程序包管理器

???debian:deb文件, dpkg包管理器
???redhat: rpm文件, rpm包管理器
???rpm: Redhat Package Manager
???RPM Package Manager

??3.軟件包的命名

???源代碼:
????Name-version.tar.gz|bz2|xz
????名字-版本號.tar.gz|bz2|xz
???rpm包命名方式:
????name-VERSION-release.arch.rpm
????包名-版本號-release.運行平臺.rpm
???常見的arch(運行安裝平臺):
???? x86: i386, i486, i586, i686
???? x86_64: x64, x86_64, amd64
???跟平臺無關:noarch(平臺是noarch的軟件包代表在大部分平臺上都可以通用的軟件包,兼容性比較好)

??4.包:分類和拆包

???Application-VERSION-ARCH.rpm: 主包
???Application-devel-VERSION-ARCH.rpm 開發子包
???Application-utils-VERSION-ARHC.rpm 其它子包
???Application-libs-VERSION-ARHC.rpm 其它子包
???包之間:可能存在依賴性關系,甚至循環依賴

??5.解決依賴包管理工具

???yum:rpm包管理器的前端工具
???apt-get:deb包管理器前端工具
???zypper: suse上的rpm前端管理工具
???dnf: Fedora 18+ rpm包管理器前端管理工具

??6.庫文件

???查看二進制程序所依賴的庫文件
????ldd 后跟二進制文件路徑 :查看一個二進制程序所依賴的庫文件
???管理及查看本機裝載的庫文件
???? ldconfig :加載庫文件
????/sbin/ldconfig -p :顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系
? ??配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
???緩存文件:/etc/ld.so.cache

??7.包文件的組成(每個包獨有)

???RPM包內的文件
???RPM的元數據,如名稱,版本,依賴性,描述等
???安裝或卸載時運行的腳本

??8.數據庫(公共):/var/lib/rpm

???程序包名稱及版本
???依賴關系
???功能說明
???包安裝后生成的各文件路徑及校驗碼信息

??9.獲取程序包的途徑

???(1) 系統發版的光盤或官方的服務器;

????CentOS鏡像:
?????https://www.centos.org/download/
?????http://mirrors.aliyun.com
?????http://mirrors.sohu.com
?????http://mirrors.163.com

???(2) 項目官方站點

???(3) 第三方組織:

????Fedora-EPEL:
????Extra Packages for Enterprise Linux
????Rpmforge:RHEL推薦,包很全
????搜索引擎:
?????http://pkgs.org
?????http://rpmfind.net
?????http://rpm.pbone.net
?????https://sourceforge.net/

???(4) 自己制作

????注意:第三方包建議要檢查其合法性
????來源合法性,程序包的完整性

?3、 包管理器

??1.功能:

???將編譯好的應用程序的各組成文件打包一個或幾個 程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、 升級和校驗等管理操作

??2.管理程序包的方式:

???使用包管理器:rpm
???使用前端工具:yum, dnf

??3.rpm包管理

???CentOS系統上使用rpm命令管理程序包:
????安裝、卸載、升級、查詢、校驗、數據庫維護

???1、 安裝:

????rpm {-i|-stall} [install-options] PACKAGE_FILE…
????? -i 安裝
?????? -v :顯示過程
?????? -vv:顯示詳細過程
?????? -h :顯示進度
?????? -ivh 常用安裝選項
?????? --nodeps忽略依賴性關系檢測
?????? --test 測試安裝,但不是真安裝
?????? --replacepkgs 重復安裝已安裝過的包,文件覆蓋
?????? --replacefiles 即將安裝的包的部分文件與其他已安裝的包文件沖突,可繼續安裝,文件不覆蓋
?????? --nosignature: 不檢查來源合法性
?????? --nodigest:不檢查包完整性
?????? --noscripts:不執行程序包腳本
???????%pre: 安裝前腳本; --nopre
???????%post: 安裝后腳本; --nopost
???????%preun: 卸載前腳本; --nopreun
???????%postun: 卸載后腳本; --nopostun

???2、 升級

????rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
????rpm {-F|--freshen} [install-options] PACKAGE_FILE...
?????upgrade:安裝有舊版程序包,則“升級” 如果不存在舊版程序包,則“安裝”
?????freshen:安裝有舊版程序包,則“升級”如果不存在舊版程序包,則不執行升級操作
??????--oldpackage 指定的包比已安裝過的包舊,降級安裝
??????--force 強制安裝
?????-U 指定的包比已安裝的包新或者未安裝
?????-F 指定的包比已安裝的包新
?????例:
??????rpm -Uvh PACKAGE_FILE ...
??????rpm -Fvh PACKAGE_FILE ...

?????注意:
??????(1) 不要對內核做升級操作;Linux支持多內核版本并存,因此 ,對直接安裝新版本內核
??????(2) 如果原程序包的配置文件安裝后曾被修改,升級時,新版本 的提供的同一個配置文件并不會直接覆蓋老版本的配置文

???3、 包查詢

????-q查看是否安裝
????-qa 查詢已安裝的所有包
????-qf 文件路徑 查詢指定的文件來源于哪一個rpm包
????-ql 包名 查詢該包提供了哪些文件
????-qp# rpm包 對未安裝的包,指定rpm文件再配合其他查詢子選項來進行各項查詢操作
????-q --changelog 包名 查看更新日志
????-qc 包名 查看該軟件包所提供的配置文件
????-qd 包名 查看該軟件包所提供的文檔文件
????-qi 包名 查看該軟件包的詳細信息
????-q --scripts 查看安裝前及安裝后的腳本
????-q --provides 包名 查看一個軟件包提供了哪些能力
????-qR 包名 查看一個軟件包的運行所依賴的能力
????-q --whatprovides 能力名 查看一個能力由哪個包提供
????-q --whatrequires 能力名 查看一個能力依賴于哪些包
????rpm2cpio 包文件|cpio –itv 預覽包內文件
????rpm2cpio 包文件|cpio –id “*.conf” 釋放包內文件
小注意:rpm2cpio 可以將rpm 包轉換為cpio歸檔文件

???4、 卸載

????-e 包名(包名要打全,除了.rpm其他都要打上)
????rpm -e rpm -q vsftpd 或rpm -e vsftpd --allmatches 安裝了多個版本的某個rpm可以一次性全部刪除
???? --nodeps 刪除時不檢查依賴性關系

???5、 校驗

????包來源合法性驗證及完整性驗證
????完整性驗正:SHA256
????來源合法性驗正:RSA
????公鑰加密
?????對稱加密:加密、解密使用同一密鑰
?????非對稱加密:密鑰是成對兒的
??????public key: 公鑰,公開所有人
??????secret key: 私鑰, 不能公開
????-V 校驗已安裝的包的文件哪些發生生了更改或丟失,更改變化的類型如下:
?????S file Size differs 文件大小是否發生變化
?????M Mode differs (includes permissions and file type)權限
?????5 digest (formerly MD5 sum) differs 文件內容是否改變
?????D Device major/minor number mismatch
?????L readLink(2) path mismatch
?????U User ownership differs 屬主
?????G Group ownership differs 屬組
?????T mTime differs 文件數據修改時間
?????P capabilities differ
????-pV: 顯示比-V還詳細的更改信息,未安裝的包也可以看,-V則不可以
????-V 后跟包名就可以了,-pV: 后必須跟全稱,.rpm只需要跟軟件名就可以了
????下面我們就測試一下
?????例圖:

?????當vsftpd的所有配置文件都沒有被改變時-V是沒有反應的,當我們修改某一個文件時在用-V來查詢,下面就就指出了被修改的文件的路徑,S.5….T. 提示了是被更改了哪些信息,

?????這個圖呢是為了驗證使用-Pv時必須打上軟件包的全稱,否則會出錯呦

????-K|checksig rpmfile 驗證包的合法性,完整性和簽名
????--import 公鑰: 導入公鑰(公鑰RPM-GPG-KEY-CentOS-6)
????rpm -qa "gpg-pubkey*" 查詢公鑰
????rpm -e rpm -qa "gpg-pubkey*" 刪除公鑰
????導入公鑰例圖:
?????第一步,在掛載的光盤下查找公鑰路徑

?????第二部導入公鑰

??4. rpm數據庫

???rpm數據庫是記錄安裝的哪些軟件包,哪些軟件包沒有被安裝的一個數據庫,rpm -q 就是查詢軟件包是否安裝的一個命令,而這個命令訪問的就是這個數據庫里面的文件來得知該軟件包是否被安裝然后再告訴用戶的,如果這個數據庫被刪除了,則使用rpm -q就會出錯,不管有沒有安裝哪個包都會提示沒有安裝,因為數據庫中沒有這個軟件包的記錄了。rpm數據庫的路徑是/var/lib/rpm
???數據庫重建:
????rpm {--initdb|--rebuilddb}
?????Initdb :初始化
??????如果事先不存在數據庫,則建之
??????否則不執行任何操作
?????rebuilddb :重建已安裝的包頭的數據庫索引目錄

轉載于:https://blog.51cto.com/13570214/2068734

總結

以上是生活随笔為你收集整理的sed的高级命令和软件包管理器rpm的全部內容,希望文章能夠幫你解決所遇到的問題。

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