1.linux管理分类

内核功能管理:进程管理,内存管理,网络协议栈管理,驱动程序管理。

外部功能管理:应用程序管理,包管理,文件管理。

2.linux包管理工具

  常用的包管理器工具:

  deb:debian

  rpm:redhat package manager

 

  包管理器工具的作用:

       打包:一个单一的归档文件中;

       安装:新安装一个程序包;

       卸载:移除系统上安装的程序包;

       升级:对已安装的程序进行更新;

       查询:对已安装或者未安装的程序包的详细信息进行查询;

       校验:检查文件的来源合法性和文件的完整性。

 

3.程序包的组成部分:

      二进制可执行程序目录:/bin /sbin  /usr/bin  /usr/sbin 

库文件:/lib64  /usr/lib64

配置文件:/etc

帮助文件:manual,info

 

4.rpm

rpmbuild: rpm打包

 

分包机制:

testapp-version.tar.gz

核心包:testapp-version

支包:testapp-devel-version

version:majorminor.release

 

命名机制:

           Name-version-release.arch.rpm

例如:  Bash-4.2.4-1.el7.x86_64.rpm

          bash-devel-4.2.4-1.el7.x86_64.rpm

包和包之间可能会有依赖关系

 X---> Y

rpm程序的数据库:/var/lib/rpm

 

获取rpm包的方法:

       1)发行版提供的程序包;

       2fedora-EPEL

       3)项目的官方站点

       4)搜索引擎

                            http://rpmfind.net

                            http://rpm.pbone.net

                            http://pkgs.org

       5)使用yum下载rpm

 

5.基于rpm命令实现程序包管理

    安装类:

rpm  选项   程序包名

         --I     安装程序包,相当于 –install

             -v  详细显示程序包安装过程

              -h    以前#显示程序包安装进度

              --nodeps      忽略依赖关系安装

              --replacepkgs      重装程序包

              --force                 强制安装

              --test                    测试程序包

 

[root@localhost~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost~]# cd /mnt/Packages/
[root@localhostPackages]# ls | grep zsh
zsh-5.0.2-7.el7.x86_64.rpm
[root@localhostPackages]# rpm -ivh zsh-5.0.2-7.el7.x86_64.rpm 
警告:zsh-5.0.2-7.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                         ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-7.el7                 ################################# [100%]


 

  升级类:

rpm  选项   程序包名

              -Uvh:如果有旧版程序包,则升级,如果没有,则安装;

              -Fvh:如果有旧版程序包,则升级,如果没有,则不安装;

              --nodeps      忽略依赖关系安装

              --force          强制升级

              --oldpackage降级

 

[root@localhostPackages]# rpm -Uvh zsh-5.0.2-7.el7.x86_64.rpm

警告:zsh-5.0.2-7.el7.x86_64.rpm: V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

准备中...                         ################################# [100%]

       软件包 zsh-5.0.2-7.el7.x86_64 已经安装

 

  卸载:

rpm  选项   程序包名

              -e        卸载

              --nodeps       忽略

              --noscripts   

              --notriggers

             

[root@localhostPackages]# rpm -e zsh-5.0.2
忽略依赖安装
[root@localhostPackages]# rpm -ivh php-mysql-5.4.16-23.el7_0.3.x86_64.rpm
警告:php-mysql-5.4.16-23.el7_0.3.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:
       php-pdo(x86-64) = 5.4.16-23.el7_0.3 被 php-mysql-5.4.16-23.el7_0.3.x86_64 需要
[root@localhostPackages]# 
[root@localhostPackages]# rpm -ivh php-mysql-5.4.16-23.el7_0.3.x86_64.rpm --nodeps
警告:php-mysql-5.4.16-23.el7_0.3.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          #################################[100%]
正在升级/安装...
   1:php-mysql-5.4.16-23.el7_0.3      ################################# [100%]


 

 

  查询:

       rpm 选项   程序包名

              -qa         查询本已安装的所有程序包

              -qf   /path/to/somefile      查询此处的文件由哪个程序包安装后生成

              -qc         查询指定程序安装生成的配置文件

              -qd         查询指定程序包安装生成的文档

              -qi          查询指定程序包的相关信息

              -ql          查询程序安装生成的所有文件列表

              -q --scripts        查询程序包相关的脚本

                                   preinstall: 安装前脚本

                            postinstall:安装后脚本

                            preuninstall:卸载前脚本

                            postuninstall:卸载后脚本

              -p           查询针对未安装的程序包文件

 

[root@localhostPackages]# rpm -qa | grep php
php-mysql-5.4.16-23.el7_0.3.x86_64
[root@localhostPackages]# 
[root@localhostPackages]# rpm -qf /etc/fstab 
setup-2.8.71-5.el7.noarch
[root@localhostPackages]# rpm -qc php-mysql-5.4.16-23.el7_0.3.x86_64
/etc/php.d/mysql.ini
/etc/php.d/mysqli.ini
/etc/php.d/pdo_mysql.ini
[root@localhostPackages]#
[root@localhostPackages]# rpm -qd setup-2.8.71-5.el7.noarch
/usr/share/doc/setup-2.8.71/COPYING
/usr/share/doc/setup-2.8.71/uidgid
[root@localhostPackages]#
[root@localhostPackages]# rpm -ql php-mysql-5.4.16-23.el7_0.3.x86_64
/etc/php.d/mysql.ini
/etc/php.d/mysqli.ini
/etc/php.d/pdo_mysql.ini
/usr/lib64/php/modules/mysql.so
/usr/lib64/php/modules/mysqli.so
/usr/lib64/php/modules/pdo_mysql.so
[root@localhostPackages]#


 

 

         校验:

                     rpm{-V|--verify} [select-options] [verify-options]

                       S file Size differs

                     M Mode differs (includes permissions andfile 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

包校验:

              来源合法性验证:非对称加密

              完整性验证:单向加密

             

              导入秘钥:rpm --import  /path/to/key_file

              校验:rpm –K /PATH/TO/RPM_FILE

 

6.yum的使用

YUM: YellowdogUpdater Modified

 

yum repositories:

       ftp://hostname/path/to/repo

       http://hostname/path/to/repo

       file:///path/to/repo

yum配置文件:

       /etc/yum.conf  此次文件定义全局配置,对所有的仓库都有效果

cachedir=/PATH/TO/         这个选项定义程序包的缓存路径

keepcache=01       这个选项定义是否缓存程序包

 

/etc/yum.repos.d/*.repo仓库路径,仓库可以有多个

 

定义一个仓库的指向

       [REPO ID]

       name=

       baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/

       #mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE

       enabled={1|0}

       gpgcheck={1|0}

       gpgkey=/PATH/TO/FILE

       cost=

 

例如:

[base]
name=CentOS-$releasever- Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7


 

       定义仓库指向可用变量:

                            $releasever: 引用当前系统的主版本号;

                            $basearch: 当前系统的基本架构;

                                   i386, i486,i586, i686: i386

 

例如:http://mirrors.aliyun.com/centos/7/os/x86_64/

yum命令:

              yum [options] [command] [package...]

 

                     命令:

                            install    安装

                            remove  卸载

                            update   升级

                            info        查询

                            search KEYWORD  通过相关字符查询程序包名

                            listall|installed|availiable

                            provides/PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成

                            reinstall 重新安装

                            downgrade   降级

                            清理缓存:clean [ packages | metadata | expire-cache| rpmdb | plugins | all ]

                            生动生成缓存:makecache

 

                            包组:

                                   grouplist

                                   groupinfo"GRP_NAME"

                                   groupinstall"GRP_NAME"

                                   groupremove"GRP_NAME"

 

                            仓库:

                                   repolist[all|enabled|disabled]

                                   repoinfo[all|enabled|disabled]