• 17_Linux软件管理


    软件包管理
    应用程序:
      程序,Architecture
    C语言:源代码-->(编译)二进制格式
    脚本:解释器(二进制程序)
    源代码-->编译-->链接-->运行
      程序
        库
          静态
          动态

          静态链接
          动态链接
            共享库

    配置文件:
    dir=/PATH/TO/SOMEWHERE

    程序组成部分
      二进制程序
      库
      配置文件
      帮助文件

    -----这些就能启动一个系统----
    /etc,/bin,/sbin,/lib
      系统启动需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上

    /usr/
      bin
      sbin
      lib

      /usr放的是,操作系统核心功能,可以单独分区
    --------------------

    --------第三方-------
    /usr/local
      bin
      sbin
      lib
      etc
      man

    /opt

    /proc

    /sys
      不能单独分区,默认为空

    /dev:设备,不能单独分区
      udev

    /root:不能单独分区

    /var:建议单独分区

    /boot:内核,initrd(initramfs)

    POST-->BIOS(HD)-->(MBR)bootloader(能够识别相应的文件系统结构,ext2,ext3,xfs...)-->内核


    程序:指令+数据
      指令:芯片
        CPU:普通指令,特权指令
        指令集
    C语言
      Powerpc:二进制格式


    x86:汇编
    powerpc:汇编

    软件包管理器的核心功能
    1、制作软件包
    2、安装、卸载、升级、查询、校验

    Redhat,SUSE,Debian

    Redhat,SUSE:rpm
    Debian:dpt

    前端工具:yum,apt-get
    后端工具:rpm,dpt

    yum:Yellowdog Updater  Modified

    rpm命令:
      rpm:
        数据库:/var/lib/rpm
      rpmbuild:

    安装、查询、卸载、升级、校验、数据库的重建等工作

    rpm命名:
    包:组成部分
      主包
        bind-9.7.1-1.i586.e15.rpm
      子包:
        bind-libs-9.7.1-1.i586.e15.rpm
        bind-utils-9.7.1-1.i586.e15.rpm
    包名格式:
      name-version-release.arch
      bind-major.minor.release-release.arch.rpm

    主版本号,重大改变
    次版本号,某个子功能发生重大变化
    发行号:修正了部分bug,调整了一点功能

    rpm包:
      二进制格式(一般都二进制格式)
        rpm包作者下载源程序,编译配置完成后,制作成rpm包
      源码格式

    rpm:
    1、安装:
    rpm -i /PATH/TO/PACKAGE_FILE
      -h:以#号显示安装进度,每个#表示2%
      -v:显示详细过程
      -vv:更详细的过程

    rpm -ivh /PATH/TO/PACKAGE_FILE
      --nodeps:忽略依赖关系
      --replacepkgs:重新安装,替换原有安装
      --force:强行安装,可以实现重装或降级

    2、查询
    rpm -q PACKAGE——NAME:查询指定的包是否已经安装
    rpm -qa :查询已经安装的所有包

    rpm -qi PACKAGE_NAME:查询指定包的说明信息
    rpm -qc PACKAGE_NAME:查询指定包安装的配置文件
    rpm -ql PACKAGE_NAME:查询指定包安装后生成的文件列表
    rpm -qf /path/to/somefile:查询指定的文件是由哪个rpm包安装生成的

    rpm -q --scripts PACKAGE_NAME:查询指定包中包含的脚本

    rpm -qf /path/to/somefile:查询指定的文件是由哪个rpm包安装生成的

    如果某rpm包尚未安装,我们需查询其说明信息,安装以后会生成的文件
    rpm -qpi /PATH/TO/PACKAGE_FILE
    rpm -qpi

    3、升级
    rpm -Uvh /PATH/TO/PACKAGE_FILE:如果装有老版本的,则升级,否则,则安装
    rpm -Fvh  /PATH/TO/PACKAGE_FILE:如果装有老版本的,则升级,否则,退出
      --oldpackage:降级

    4、卸载
    rpm -e PACKAGE_NAME
      --nodepe

    5、校验
    rpm -v PACKAGE_NAME

    6、重建数据库
      rpm
        --rebuilddb:重建数据库,一定会重新建立
        --initdb:初始化数据库,没有才建立,有就不用建立

    7、校验来源合法性,及软件包完整性

    # ls /etc/pki/rpm-gpg/
    RPM-GPG-KEY-CentOS-7

    rpm -K /PATH/TO/PACKAGE_FILE
      dsa,gpg:验证来源合法性,也即验证签名,可以使用--nosignature,略过此项
      sha1,md5:验证软件包完整性,可以使用--nodigest,略过此项

    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 :导入密钥文件


    =============================
    rpm-->yum
    HTML:HyperText Markup Language
    XML:Extensible Markup Language

    XML,JSON:版结构化数据

    yum仓库中的元数据
    primary.xml.gz
      所有RPM包的列表
      依赖关系
      每个RPM安装生成的文件列表
    filelists.xml.gz
      当前仓库中所有RPM包的所有文件列表
    other.xml.gz
      额外信息,RPM包的修改日志

    repomd.xml
      记录的是上面三个文件的时间戳和校验和

    yum install zsh

    comps*.xml:RPM包分组信息


    如何为yum定义repo文件
    [Repo_ID]
    name=Description
    buseurl=
      ftp://
      http://
      file://
    enabled={1|0}
    gpgcheck={1|0}


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

    -y:自动回答为yes
    --nogpgcheck

    list:列表
      支持glob
      all
      available:可用的,仓库中有但尚未安装的
      installed:已经安装的
      updates:可用的升级

    clean:清理缓存
      [ packages  |  headers  | metadata  |  dbcache  |  all]

    repolist:显示repo列表及其简要信息
      all
      enabled:默认
      disabled

    install:安装
    yum install PACKAGE_NAME

    update:升级
    update_to:升级为指定版本

    remove|erase:卸载

    info:

    provides|whatprovides:查看指定的文件或特性是由哪个安装包生成的

    groupinfo
    grouplist
    groupinstall
    groupremove
    groupapdate

    /media/cdrom/{ Server,VT,Cluster,ClusterStorage }

    如何创建yum仓库:
    createrepo

    http://172.16.0.1/yum/{ Server,VT }




    RPM安装:
      二进制格式:
        源程序-->编译-->二进制格式
          有些特性是编译选定的,如果编译未选定此设定,将无法使用
          rpm包的版本会落后于源码包,甚至落后很多

    定制:手动编译安装

    编译环境:开发环境
    开发库:开发工具

    Linux:C
    GUN:C

    C,C++:
    gcc:GUN C Complier,C
    g++:

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

    automake,-->makefile.in-->makefile
    autoconf,-->configure

    make install


    手动编译安装的三步骤
    前提:准备开发环境(编译环境)
    # ./configure
      --help:获取脚本的使用格式
      --prefix=/path/to/somewhere:指定安装路径
      --sysconfdri=/PATH/TO/CONFFILE_PATH:指定配置文件路径
      功能:1、让用户选择编译特性,2、检查编译环境
    # make
    #make install
    (上面这两条可以写成make &&make install)


    编译软件包如果我们把它安装在非默认路径下。。
    1、要修改PATH环境变量,以能够识别此程序的二进制文件路径
      修改/etc/profile文件
      在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
    2、默认情况下,系统搜索库文件的路径/bin,/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
      2、在/etc/man.config中添加一条MANPATH


    netstat命令:
      -r:显示路由表
      -n:以数字方式表示
      -t:建立tcp连接
      -u:建立udp
      -l:显示监听状态的连接
      -p:显示监听指定的套接字的进程的进程号及进程名




  • 相关阅读:
    idea maven 经常主目录自动变回默认怎么办
    .net5 quartz
    sed命令
    ubuntu静态ip
    powershell基础
    restsharp 107.3 json自动转小写 自动驼峰 问题
    CQRS与事件溯源模式
    abp 切换默认项目为pgsql
    .net ASPNETCORE_ENVIRONMENT 根据环境切换不同的配置文件
    交换机端口三种模式Access,Hybrid,Trunk收发数据处理过程 yi
  • 原文地址:https://www.cnblogs.com/xian-luo/p/10899227.html
Copyright © 2020-2023  润新知