软件包管理

软件包管理:
前端工具:yum,apt-get
后端工具:RPM,dpt
rpm命令:
    rpm:
        数据库:/var/lib/rpm
    rebuild:
rpm命令:
        包:组成部分
        主包:
            bind-9.7.1-1.i586.e15.rpm
        子包:
            bind-libs-9.7.1-1.e15.i586.rpm
            bind-utils-9.7.1-1.e15.i586.rpm
        包名格式:
        name-version-release.arch.rpm
        name-major.minor.release-release.arch.rpm
    主版本号:重大改进
    此版本号:某个子功能发生重大变化
    发行号:修正了部分bug,调整了一点功能
    
    bind-9.7.1.tar.gz
    rpm包:
        二进制格式
            rpm包作者下载源程序,编译配置完成后,制作成RPM包
            bind-9.7.1-1.i686.rpm
            bind-9.7.1-1.x64.rpm
            bind-9.7.1-1.noarch.rpm
    查看系统版本:uname -r;或uname -a;
    
    1.安装:
        rpm -i /PATH/TO/PACKAGE_FILE
            -h 以#显示进度,每个#表示2%
            -v 显示详细信息
            -vv 更详细的过程
            --nodeps 忽略依赖关系(装上去无法正常使用)
            --force 强行安装,可以实现重装或降级
            --replacepkgs 重新安装,替换原有安装
            --test 测试是否能安装成功
        常用 -ivh
    2.查询
    rpm -q PACKAGE_NAME 查询指定的包是否已经安装
        -qa:查询已经安装的所有包
        
    rpm -qi PACKAGE_NAME 查询指定包的说明信息;
    rpm -ql PACKAGE_NAME 查询指定包安装后生成的文件列表;
    rpm -qc PACKAGE_NAME 查询指定包安装的配置文件;
    rpm -qd PACKAGE_NAME 查询指定包安装的帮助文件;
    
    rpm -q --scripts PACKAGE_NAME 查询指定保重包含的脚本
    
    rpm -qf /PATH/TO/PACKAGE_FILE 查询指定的文件是由哪个rpm包安装生成的;

    如果某rpm包尚未安装,我们需要查询其说明信息、安装以后会生成的文件:
    rpm -qpi /PATH/TO/PACKAGE_FILE
    rpm -qpl /PATH/TO/PACKAGE_FILE
    
    3.升级
    rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE 如果有老版本的,则升级;否则,则安装
    rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE 如果有老版本的,则升级;否则,退出
                --oldpackage 降级

    4.卸载
    rpm -e PACKAGE_NAME
           --nodeps PACKAGE_NAME
    5.校验
        rpm -V PACKAGE_NAME 校验安装后的文件是否完整
    6.重建数据库
        rpm
            --rebuilddb:重建数据库,一定会重新创建;
            --initdb:初始化数据库,有就建立,没有就不建立;
    7.检验来源合法性,及软件包完整性:
    对称:加密解密使用同一个密钥
    公钥:一对儿密钥,公钥,私钥:公钥隐含于私钥中,可以提取出来,并公开出去
    单向:
        
    ls /etc/pki/rpm-gpg/
        RPM-GPG-KEY-REHAT-release
        
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-REHAT-release:导入密钥文件    
        
    rpm -K /PATH/TO/PACKAGE_FILE
        dsa,gpg:验证来源合法性,也即验证签名:可以使用--nosignature,略过此项
        sha1,md5:验证软件包完整性:可以使用--nodigest,略过此项
        
定制:手动编译安装

编译环境,开发环境
开发库,开发工具
Linux:c
GNU:c
c,c++,perl,java,python    
gcc:GNU c Complier 编译c
g++:编译c++

make:项目管理工具
    makefile:定义了make(gcc,g++)按何种次序去编译这些源程序文件中的源程序
    
automake,--->makefile.in---->makefile
autoconf,--->configure

make install

编译安装的三步骤:
前提:准备开发环境(编译环境)
安装"Development Tools"和"Development Libraries"
1.解压缩
2. ./configure
    --help
    --prefix=/path/to/somewhere
    --sysconfdir=/PATH/TO/CONFFILE_PATH
功能:1.让用户选定
3.make
4. make install

具体步骤:
1.tar xf tengine-1.4.2.tar.gz
2../configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
3.make
4.make install
5./usr/local/tengine/sbin/nginx

1.修改PATH环境变量,以能够识别此程序的二进制文件路径;(修改/etc/profile文件)
    或在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
2.默认情况下,系统搜索库文件的路径/lib,/usr/lib;要增添额外搜寻路径;
    在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;
        查看:
            ldconfig通知系统重新搜寻库文件
                -v:显示重新搜寻库的过程
                
3.头文件:输出给系统
    默认:/usr/include
    增添头文件搜寻路径,使用连接进行:
        /usr/local/tengine/include/   /usr/include/
        两种方式:
        ln -s /usr/local/tengine/include/*   /usr/include/或
        ln -s /usr/local/tengine/include      /usr/include/tengine
4.man文件路径:安装在--prefix指定的目录下的man目录:/usr/share/man
    1.man -M /PATH/TO/MAN_DIR COMMAND(每次都要这么用)
    如:man -M /usr/local/apache/man htpasswd
    2.在/etc/man.config中添加一条MANPATH
        
        


可以配置环境变量:/etc/profile:
    PATH=$PATH:/usr/local/tengine/sbin
    export PATH USER LOGNME MAIL HOSTNAME HISTSIZE INPUTRC
让配置生效:
source /etc/profile或者重启
    

netstat命令:
    -r:显示路由表
    -n:以数字方式显示
    
    -t:建立tcp连接
    -u:显示udp连接
    -l:显示监听状态的连接
    -p:显示监听的套接字的进程的进程与及进程名
    
yum:
    yum仓库中的元数据文件:
        primary.xml.gz:
            所有RPM包的列表;
            依赖关系;
            每个RPM安装生成的文件列表;
        filelist.xml.gz:
            当前仓库中所有RPM包的所有文件列表;
        other.xml.gz:
            额外信息,RPM包的修改日志;
        repomd.xml:
            记录的是上面三个文件的时间戳和校验和;
        comps*.xml:
            RPM包分组信息;
            
        /etc/yum.conf:如何定义yum仓库配置文件
            定义仓库:1.在/etc/yum.repos.d文件目录下创建以.repo文件
                        2.在文件中添加仓库,如/etc/yum.conf中定义的格式
            repo文件:
                [Repo_id]
                name=Description
                baseurl=
                        ftp://
                        http://
                        file:///
                enable={0|1}(默认1)
                gpgcheck={0|1}(默认1)
                gpgkey=
                
        yum createrepo 仓库路径(没有repomd.xml等文件,所以要用命令创建)
        注意:此时没有comps*.xml文件,所以要将comps*.xml加入到仓库中,使用以下命令:
            createrepo -g /root/comps-rhel5-vt.xml /yum/VT (这里/root/comps-rhel5-vt.xml是从DVD仓库中复制出来的,/yum/VT是要新建的yum仓库)
        yum clean all
        
        
        
        
        yum [options] [command] [package...]    
        yum list:列表
        yum list
                支持glob(类似正则表达式)
                all:所有的
                available:可用的,仓库中有但尚未安装的
                installed:已经安装的
                updates:可用的升级
            clean:清理缓存
                [packages | haeaders | metadata | dbcache | all]
            install:安装
        yum install PACKAGE_NAME
        
             -y:自动回答yes
             --nogpgcheck
            update:升级
            update_to:升级为指定版本
            
            remove|erase:卸载
        
            info:
            provides | whatprovides:查看指定的文件或特性是由哪个包安装生成的;
            localinstall 文件名(文件包名)安装本地文件,自动安装依赖仓库中的软件包
    组:
    yum         
        groupinfo
        grouplist
        groupinstall
        groupremove
        groupupdate
        
        
        
        
        repolist:显示repo列表及其简要信息
             all
             enabled:默认
             disabled
            
将dvd作为软件仓库:
加载光驱;
挂载光驱:mount /dev/cdrom /media/cdrom

posted @ 2016-04-22 20:31  Runny_Hao  阅读(94)  评论(0)    收藏  举报