随机4(马哥)

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’ 在原有的每一行后方添加一个空白行

 

 

 

 

 

      

      

    

 

    

 

 

 

     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

          

          

         

        

 

 

 

        

 

你可能感兴趣的:(Linux学习随笔)