标签:模式 支持 eps 类型 sed示例 provides link file option
一、 sed的高级编辑命令 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 倒序显示文件的每一行内容
程序源代码?预处理?编译?汇编?链接
动态编译:.a
动态编译:.so
链接主要作用是把各个模块之间互相引用的部分处理好,使得各个模块之间能够正确的衔接,分为静态链接和动态链接
静态链接的特点:
把程序对应的依赖库复制一份到包
libxxx.a
嵌入程序包
升级难,需要重新编译
占用较多空间,迁移容易
动态链接的特点:
只把依赖加做一个动态链接
libxxx.so
“链接指向”
占用较少空间,升级方便
系统级开发
C
C++
应用及开发
Java
delphi
python
go
Php
perl
ruby
二进制文件、库文件、配置文件、帮助文件
debian:deb文件, dpkg包管理器
redhat: rpm文件, rpm包管理器
rpm: Redhat Package Manager
RPM Package Manager
源代码:
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 其它子包
包之间:可能存在依赖性关系,甚至循环依赖
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 :重建已安装的包头的数据库索引目录
标签:模式 支持 eps 类型 sed示例 provides link file option
原文地址:http://blog.51cto.com/13570214/2068734