P:打印模式空間開端至\n內容,並追加到默認輸出以前
h:把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容覆蓋至保持空間中
g:從保持空間取出數據覆蓋至模式空間
G:從保持空間取出內容追加至模式空間
x:把模式空間中的內容與保持空間中的內容進行互換
n:讀取匹配到的行的下一行覆蓋至模式空間
N:讀取匹配到的行的下一行追加至模式空間
d:刪除模式空間中的行
D:若是模式空間包含換行符,則刪除直到第一個換行符的模式空間中的文本,並不會讀取新的輸入行,而使用合成的模式空間從新啓動循環。若是模式空間不包含換行符,則會想發出d命令那樣啓動正常的新循環前端
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 倒序顯示文件的每一行內容node
程序源代碼預處理編譯彙編連接
動態編譯:.a
動態編譯:.so
python
連接主要做用是把各個模塊之間互相引用的部分處理好,使得各個模塊之間可以正確的銜接,分爲靜態連接和動態連接
靜態連接的特色:
把程序對應的依賴庫複製一份到包
libxxx.a
嵌入程序包
升級難,須要從新編譯
佔用較多空間,遷移容易
動態連接的特色:
只把依賴加作一個動態連接
libxxx.so
「連接指向」
佔用較少空間,升級方便數據庫
系統級開發
C
C++
應用及開發
Java
delphi
python
go
Php
perl
rubycentos
二進制文件、庫文件、配置文件、幫助文件緩存
debian:deb文件, dpkg包管理器
redhat: rpm文件, rpm包管理器
rpm: Redhat Package Manager
RPM Package Managerruby
源代碼:
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的軟件包表明在大部分平臺上均可以通用的軟件包,兼容性比較好)服務器
Application-VERSION-ARCH.rpm: 主包
Application-devel-VERSION-ARCH.rpm 開發子包
Application-utils-VERSION-ARHC.rpm 其它子包
Application-libs-VERSION-ARHC.rpm 其它子包
包之間:可能存在依賴性關係,甚至循環依賴ide
yum:rpm包管理器的前端工具
apt-get:deb包管理器前端工具
zypper: suse上的rpm前端管理工具
dnf: Fedora 18+ rpm包管理器前端管理工具工具
查看二進制程序所依賴的庫文件
ldd 後跟二進制文件路徑 :查看一個二進制程序所依賴的庫文件
管理及查看本機裝載的庫文件
ldconfig :加載庫文件
/sbin/ldconfig -p :顯示本機已經緩存的全部可用庫文件名及文件路徑映射關係
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache
RPM包內的文件
RPM的元數據,如名稱,版本,依賴性,描述等
安裝或卸載時運行的腳本
程序包名稱及版本
依賴關係
功能說明
包安裝後生成的各文件路徑及校驗碼信息
CentOS鏡像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
Fedora-EPEL:
Extra Packages for Enterprise Linux
Rpmforge:RHEL推薦,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
注意:第三方包建議要檢查其合法性
來源合法性,程序包的完整性
將編譯好的應用程序的各組成文件打包一個或幾個 程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、 升級和校驗等管理操做
使用包管理器:rpm
使用前端工具:yum, dnf
CentOS系統上使用rpm命令管理程序包:
安裝、卸載、升級、查詢、校驗、數據庫維護
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
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) 若是原程序包的配置文件安裝後曾被修改,升級時,新版本 的提供的同一個配置文件並不會直接覆蓋老版本的配置文
-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歸檔文件
-e 包名(包名要打全,除了.rpm其餘都要打上)
rpm -e rpm -q vsftpd
或rpm -e vsftpd --allmatches 安裝了多個版本的某個rpm能夠一次性所有刪除
--nodeps 刪除時不檢查依賴性關係
包來源合法性驗證及完整性驗證
完整性驗正: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*"
刪除公鑰
導入公鑰例圖:
第一步,在掛載的光盤下查找公鑰路徑
第二部導入公鑰
rpm數據庫是記錄安裝的哪些軟件包,哪些軟件包沒有被安裝的一個數據庫,rpm -q 就是查詢軟件包是否安裝的一個命令,而這個命令訪問的就是這個數據庫裏面的文件來得知該軟件包是否被安裝而後再告訴用戶的,若是這個數據庫被刪除了,則使用rpm -q就會出錯,無論有沒有安裝哪一個包都會提示沒有安裝,由於數據庫中沒有這個軟件包的記錄了。rpm數據庫的路徑是/var/lib/rpm 數據庫重建: rpm {--initdb|--rebuilddb} Initdb :初始化 若是事先不存在數據庫,則建之 不然不執行任何操做 rebuilddb :重建已安裝的包頭的數據庫索引目錄