Linux程序包管理,rpm包管理器 RPM 全名是『RedHat Package Manager』简称则为RPM
Linux 界软件安装方式最常见的有两种,分别是:
dpkg:这个机制最早是由Debian Linux 社群所开发出来的,透过dpkg 的机制,Debian 提供的软件就能够简单的安装起来,同时还能提供安装后的软件信息,实在非常不错。
RPM:这个机制最早是由Red Hat 这家公司开发出来的,后来实在很好用,因此很多distributions 就使用这个机制来作为软件安装的管理方式。
RPM特点就是将你要安装的软件先编译过,并且打包成为RPM 机制的包装文件,透过包装好的软件里头默认的数据库记录,记录这个软件要安装的时候必须具备的相依属性软件,当安装在你的Linux 主机时,RPM 会先依照软件里头的数据查询Linux 主机的相依属性软件是否满足,若满足则予以安装,若不满足则不予安装。那么安装的时候就将该软件的信息整个写入RPM 的数据库中,以便未来的查询、验证与反安装!其优点:
1.不需要再重新编译,传输与安装上很方便
2. 方便查询、升级与反安装,因为软件的信息都记录在Linux 主机的数据库上。
3. RPM 内含已经编译过的程序与配置文件等数据,可以让用户免除重新编译的困扰;
4.RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装;
5.RPM 文件本身提供软件版本信息、相依属性软件名称、软件用途说明、软件所含文件等信息,便于了解软件
RPM常用参数:
-ivh 软件安装并显示安装界面及进度
-q :仅查询,后面接的软件名称是否有安装
-qa :列出所有的,已经安装在本机Linux 系统上面的所有软件名称;
-qi :列出该软件的详细信息(information),包含开发商、版本与说明等;
-ql :列出该软件所有的文件与目录所在完整文件名(list);
-qc :列出该软件的所有配置文件(找出在/etc/ 底下的檔名而已)
-qd :列出该软件的所有说明文件(找出与man 有关的文件而已)
-qR :列出与该软件有关的相依软件所含的文件(Required 的意思)
-qf :由后面接的文件名,找出该文件属于哪一个已安装的软件;
-qip 包全名,可以查询未安装软件包的信息
-qf 系统文件名”,可以查询系统文件属于哪个包
-V 已安装的软件名称 查看软件所含的文件是否被动过
【 c :配置文件(config file)
d :文件数据文件(documentation)
g :鬼文件~通常是该文件不被某个软件所包含,较少发生!(ghost file)
l :许可证文件(license file)
r :自述文件(read me)
S :(file Size differs) 文件的容量大小是否被改变
M :(Mode differs) 文件的类型或文件的属性(rwx) 是否被改变?
5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
D :(Device major/minor number mis-match) 装置的主/次代码已经改变
L :(readLink(2) path mis-match) Link 路径已被改变
U :(User ownership differs) 文件的所属人已被改变
G :(Group ownership differs) 文件的所属群组已被改变
T :(mTime differs) 文件的建立时间已被改变
P :(caPabilities differ) 功能已经被改变
】
-Va :列出目前系统上面所有可能被更动过的文件;
-Vp :后面加的是文件名,列出该软件内可能被更动过的文件;
-Vf :列出某个文件是否被更动过~
-e 卸载 --nodeps :不卸载依赖软件
-Uvh后面接的软件即使没有安装过,则系统将予以直接安装;若后面接的软件有安装过旧版,则系统自动更新至新版;
-Fvh如果后面接的软件并未安装到你的Linux 系统上,则该软件不会被安装;亦即只有已安装至你Linux 系统内的软件会被升级
常用选项:
--nodeps 强制安装,不考虑软件的依赖
--replacefiles 覆盖安装之前已存在的版本
--replacepkgs 重复重新安装
--test 测试安装,常用于检测软件的依赖关系
--force 不管之前是否安装过,都强制重新(覆盖安装)
--prefix 新路径 指定新路径,不使用默认安装路径
-q --scripts:列出是否含有安装后需要执行的脚本档
-q --changlog 查询更新日志
--import 导入GPG密钥,-k检验包的完整性,不安装。
--initdb (--rebuilddb)数据库重建
yum 【yellow update modifier】 yum repository:yum repo 存储了众多的rpm包,以及包的相关的元数据文件
支持的文件服务器:ftp:// http:// nfs:// file://
yum客户端: 配置文件: /etc/yum.conf 为所有仓库提供公共配置 /etc/yum.repos.d/*.repo为仓库提供指向提供配置
仓库的定义:
[base-ID]:代表软件库的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的软件库名称,否则yum 会不晓得该到哪里去找软件库相关软件列表文件。
name:说明一下这个软件库的意义或者功能,重要性不高!
mirrorlist=:列出这个软件库可以使用的映射站台,如果不想使用,可以批注到这行;
baseurl= :这个最重要,因为后面接的就是软件库的实际网址!mirrorlist 是由yum 程序自行去捉映像站台,baseurl 则是指定固定的一个软件库网址!我们刚刚找到的网址放到这里来啦!(url1=http:// url2=http:// )
enable=1:就是让这个软件库被启动。如果不想启动可以使用enable=0 喔!
gpgcheck=1:安装前是否检测其完整性及来源合法性,0表不检查
gpgkey=:就是数字签名的公钥文件所在位置!使用默认值即可
yum常用参数:(man yum.conf)
-y :当yum 要等待用户输入时,这个选项可以自动提供yes 的响应;
--installroot=/some/path :将该软件安装在/some/path 而不使用默认路径
install :后面接要安装的软件
update :后面接要升级的软件,若要整个系统都升级,就直接update 即可
search :搜寻某个软件名称或者是描述(description) 的重要关键字;
repolist: 显示仓库列表
list (info):列出目前yum 所管理的所有的软件名称与版本,有点类似rpm -qa;
provides:从文件去搜寻软件!类似rpm -qf 的功能!
remove 后接软件名,卸载某软件
yum clean +x 清空缓存(packages:将已下载的软件文件删除;headers :将下载的软件文件头删除;all :将所有软件库数据都删除!)
makecache: 构建缓存
history: 查看yum事务历史
deplist +x 查看x包的依赖
--nopgpcheck 禁止进行gpg,check检测
使用光盘当做本地yum仓库
1.挂载光盘至某目录 /media/cdrom #mount -r -t iso9660 /dev/cdrom /media/cdrom
2.创建配置文件 【centos7】 name=cdrom baseurl=media/cdrom gpgcheck=1 enabled=1
yum的repo配置文件中可用变量
$releasever:当前os的发行版本的主版本号
$arch:支持的平台
$basearch:基础平台
$YUM0-$YUM9:
http://mirrors.aliyum.com/centos/$releasever/$basearch/os
程序包编译安装:源代码-预处理-编译(gcc)-汇编-链接-执行
编译安装三部曲: ./confiugre 检查依赖到的外部环境,通过选项传递参数,指定启用特性,安装路径,根据用户指定的参数功能,执行Makefile.ini生成Makefile
--prefix= 指定软件安装目录 --sysconfdir= 指定配置文件安装目录
make 根据Makefile文件构建应用程序
makeinstall
开发工具: autoconf:生成configure脚本 automake:生成nakefile.in
安装后的配置:
1.导出二进制程序目录到PATH环境变量中 (编辑文件/etc/profile.d/name.sh 添加 export PATH =PATH/TO/BIN:$PATH)
2.导出库文件路径 编辑/etc/ld.so.conf.d/name.conf 添加新库文件所在目录到此文件中,执行ldconfig (-v)
3.导出头文件 基于链接方式实现 ln-sv
4,导出帮助文档 编辑/etc/man.confi文件 添加一个MANPATH
防火墙:firewall-cmd --add-service="(你的服务)"; firewall-cmd --permanent --add-service="(你的服务)"
bash shell列表生成模式
{start.. end} {1..10}表12345678910
seq[start incremtal步长 last] seq 1 10 表12345678910 ; seq 1 2 10表13579
sed命令:操作、过滤、转换文本命令工具,可快速对文件进行增删改查(取行,过滤字符)
工作原理:每一次从文本中读取一行并复制改行到自己的工作空间中进行加工,不会动源文件内容。并把处理结果输出到屏幕中。
文本处理三剑客:grep egrep fgrep 文本过滤器 sed(stream editor)字符流编辑器 行 awk:文本格式化工具,报告生成器
语法格式:sed 选项 内置命令 需处理的文本
常用参数:
-n: 取消默认输出,既不输出模式空间中的内容
-l: 直接修改原文本内容并不输出到屏幕
-e :实现多点编辑
-f:每行一个编辑命令
- r: 支持使用扩展正则表达式
内置命令:
a \text:append表追加文本,在指定行后追加一行或多行文本。后面追加text文本支持\n多行追加
d: delete表删除,删除指定行
i \text: insert 表插入,在指定行前插入一行或多行文本。在其前插入文本text,支持使用\n多行插入。
p: print 表打印输出匹配行的内容
c \text:把匹配到的行替换为此处指定的text中(sed '/^uuid/c \123' /etc/fatab 在fstab中以uuid开头的行替换成123)
w /text:保存模式空间匹配到的行到指定文件中(sed '/^[^#]/w /file/text' /etc/passwd 以非#开头的行保存到text文件中 )
r /text:读取指定文件中的内容到当前文件被匹配到的行中,文件合并(sed '3r /etc/issue /etc/fatab' 在fstab的第三行中插入文本issue)
=: 为模式匹配到的行打印行号
!:条件取反 sed ' /^#/!d' /etc/fstab 以非#开头的行
s: 查找替换,其分隔符可自行指定。 替换标记 g:全局替换 w:将替换成功的结果保存到指定文件中 p:显示替换成功的行
地址定界:
1.不给地址(空地址),即对全文进行处理
2.单地址: 指定某一行
3.地址范围: (#,#) 起始行到结束行 (#,+# )起始行往前后往后几行
4.步进:~ 1~2表奇数行1(开始每一行加2) 2~2 表偶数行
5. /pattern/ /^#/ 以#开头的行
6. $ 表最后一行
sed 's@^[[:space:]]\+@@' /etc/grup2.cfg 删除文件中所有以空白字符开头的行的行首所有空白字符
sed 's@^#[[:space:]]*@@' /etc/fstab 删除文件以#开头的行的行首的#及#后的所有空白字符
echo "/var/log/messages " | sed 's@[^/]\+/\?$@@' 输出一个绝对路径取其目录(dirname)
echo "/var/log/messages" | sed -r 's@[^/]+/?$@@' 扩展正则表达式
高级编辑命令:
h:把模式空间中的内容复制覆盖至保持空间中
H: 把模式空间中的内容追加到保持空间中
g:把保持空间中的内容复制覆盖到模式空间中
G:把保持空间中的内容追加到模式空间中
x:把模式空间中的内容与保持空间中内容互换
n:覆盖读取匹配到的行的下一行至模式空间中
N:追加读取匹配到的行的下一行至模式空间中
d:删除模式空间中的行
D:删除多行模式空间中的所有行
sed -n 'n;p' 显示偶数行 sed 'n;d'显示奇数行 sed ‘$!d’ 取出最后一行
sed '1!G;h;$!d' 逆势(tac)显示文件内容(123变321)
sed ‘$!N;$!D’ 取出最后两行 tail -2
sed '/^$/d;G' 删除所有空白行后在非空白行后添加一行空白行
sed ‘G’ 在原有的每一行后方添加一个空白行