• linux软件包管理


    每12小时备份压缩/etc/目录到/backup中,格式为etc-年-月-日-时-分-秒.tar.gz

    增加crontab任务

    1 */12 * * * /usr/bin/tar -cpzf /backup/etc-`date +%Y-%m-%d-%H-%M-%S`.tar.gz /etc
    

    rpm命令详解

    rpm命令是RPM软件包管理工具。
    RPM有多种基本的模式:他们是安装查询验证删除等。
    安装模式:rpm -i
    查询模式:rpm -q
    验证模式:rpm -V或-verify
    删除模式:rpm -e
    1.安装一个软件包
    rpm -ivh
    2.升级一个软件包
    rpm -Uvh:如果软件包未安装,直接安装
    rpm -Fvh:如果软件包未安装,则什么也不做
    3.删除已安装软件包
    rpm -e
    4.安装参数
    --force 强制安装
    -- nodeps 忽略依赖,强制安装
    rpm -ivh XXX.rpm --nodeps --force
    5.查询一个包是否被安装
    rpm -q
    6.获取软件包的信息
    rpm -qi
    7.列出该包中有哪些文件
    rpm -ql
    8.列出某文件由哪个软件包安装生成的
    rpm -qf
    9.列出所有已安装的软件包
    rpm -qa

    yum的配置和使用

    yum(全称为Yellow dog Updater,Modified)是一个有Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并安装,可以自动处理依赖关系,并且一次安装所能依赖的软件包。yum提供了查找、安装、删除一个、一组甚至全部软件包的命令。
    语法:yum [options] [command] [package ...]
    其中[options]可选,包括-h(帮助),-y(安装过程提示选择全部为"yes"),-q(不显示安装过程)等。[command]为要进行的操作,[package...]是操作的对象。

    安装

    yum install 全部安装
    yum install package1 安装指定软件包package1
    yum groupinstall group1 安装程序组group1

    更新和升级

    yum update 全部更新
    yum update package1 更新指定程序包package1
    yum check-update 检查可更新的程序
    yum upgrade package1 升级指定程序包package1
    yum groupupdate group1 升级程序组group1

    查找和显示

    yum info package1 显示软件包package1信息
    yum list 显示所有已经安装和可以安装的程序包
    yum list package1 显示指定程序包安装情况
    yum groupinfo group1 显示指定程序组group1信息
    yum search string 根据关键字string查找安装包

    删除程序

    yum remove package1 删除程序包package1
    yum eraser package1 删除程序包package1
    yum groupremove group1 删除程序组group1
    yum deplist package1 查看程序package1依赖情况

    清除缓存

    yum clean packages 清除缓存目录下的软件包
    yum clean headers 清除缓存目录下的headers
    yum clean oldheaders 清除缓存目录下旧的headers
    yum clean
    yum clean all (=yum clean packages;yumclean oldheaders)清除缓存目录下的软件包及旧的headers

    自建yum仓库

    yum函数介绍

    不管哪家的YUM源,都会有一个特殊的的文件夹路径,这对理解yum函数很重要,下面用https://opsx.alibaba.com/mirror,以centos7系统为例介绍。

    让我们查看yum仓库中的"CentOS-Base.repo"文件

    [base]
    name=CentOS-$releasever - Base - mirrors.aliyun.com
    failovermethod=priority
    baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
            http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    

    其中$开头的就是yum函数
    $releaserver:代表系统的版本,对Yum而言指的是redhat-release版本,指向发行版的主版本号,只替换为主版本号,如RedHat 6.5,则替换为6
    $basearch:系统基本架构,如果是8686,i586等基本架构就为i386,如果是X86_64就是X86_64了。
    $arch:系统架构
    比如现在的系统是CetnOS7.6,系统架构是x86_64
    baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
    会自动替换为
    baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/

    自建仓库需要用到的命令介绍

    createrepo(create repo):创建仓库,在自建仓库时,使用命令createrepo会自动帮我们生成repodata文件作为软件的仓库,而其目录下有四个必要文件:filelists.xml.gz,other.xml.gz,primary.xml.gz,repomd.xml,其中最重要的是repomd.xml文件。一般出现的找不到repodata目录或文件的原因通常有三个:一个是路径问题;二是没有生成repodata目录;三是*.repo配置文件冲突
    createrepo默认没有安装,需要提前安装。

    yum -y install createrepo
    

    自建YUM仓库的方法

    • 基于光盘镜像创建YUM仓库
    • 同步互联网YUM源
      这里使用基于光盘镜像的方式自建YUM源

    1.提供一个web服务器

    firewall-cmd --zone=public --add-service=http  
    setenforce 0  
    yum -y install nginx  
    systemctl start nginx
    

    2.给自建仓库提供数据

    mount /dev/cdrom /mnt  
    cp -a /mnt/Packages/* /usr/share/nginx/html
    

    3.使用createrepo给自建仓库提供元数据

    [root@node2 ~]# createrepo /usr/share/nginx/html/
    Spawning worker 0 with 3576 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    
    [root@node2 ~]# ll /usr/share/nginx/html/repodata/
    total 11824
    -rw-r--r--. 1 root root 2863333 Dec 16 08:47 2fa319ec9571fef9ffb3924ed2c1f7b86027b5be33e0a90c83ee36e44b9f8097-primary.sqlite.bz2
    -rw-r--r--. 1 root root 1382995 Dec 16 08:47 6563b06860f25c5a1fa3fda1e571d1efbc298258ab7fef94b2b075316a2fbd87-primary.xml.gz
    -rw-r--r--. 1 root root 2902099 Dec 16 08:47 65666f9c4ae025e8363f203bc436b6f8810ca6eeb92a9674945e9401846f400b-filelists.xml.gz
    -rw-r--r--. 1 root root 2882134 Dec 16 08:47 9df0dccbf380d7af65397d20846942062c7e270dd81a6c36824dd360caad464f-filelists.sqlite.bz2
    -rw-r--r--. 1 root root 1189885 Dec 16 08:47 d683b9a986e59a7b0347c34b28137c89611b4013d1f569f22e79f014e83bfb74-other.sqlite.bz2
    -rw-r--r--. 1 root root  872337 Dec 16 08:47 ef04b6dc0b5b437bed9e05a44e5f9978d62781d640ebcf09dc4098a806c774fd-other.xml.gz
    -rw-r--r--. 1 root root    3008 Dec 16 08:47 repomd.xml
    

    可以看到/usr/share/nginx/repodata目录已经自动生成所有元数据,仓库信息等文件。

    4.配置和验证yum仓库

    [nginx-repo]
    name=self nginx repo
    baseurl=http://192.168.2.72/
    enabled=1
    gpgcheck=0
    

    如果需要验证RPM包的合法性就需要复制/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7到自建仓库中去,另外还需要在self.repo文件中开启gpgcheck=1。操作如下

    cp /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 /usr/share/nginx
    
    [nginx-repo]
    name=self nginx repo
    baseurl=http://192.168.2.72/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    
    [root@localhost ~]# yum repolist
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.aliyun.com
     * epel: mirrors.tuna.tsinghua.edu.cn
     * extras: mirrors.aliyun.com
     * updates: mirrors.aliyun.com
    源标识                                   源名称                                                                 状态
    base/7/x86_64                            CentOS-7 - Base - mirrors.aliyun.com                                   10,019
    epel/x86_64                              Extra Packages for Enterprise Linux 7 - x86_64                         12,744
    extras/7/x86_64                          CentOS-7 - Extras - mirrors.aliyun.com                                    314
    nginx                                    nginx repository                                                          136
    nginx-repo                               self nginx repo                                                         3,576
    updates/7/x86_64                         CentOS-7 - Updates - mirrors.aliyun.com                                   598
    repolist: 27,387
    

    5.rsync同步官方YUM源
    当自己的YUM仓库建立好了之后,可能需要同步官方的YUM源,另外也可能需要同步一些比如Fedora EPEL的yum源。如果对方支持rsync的话可以使用rsync同步。
    如果:CentOS阿里yum源

    rsync -avrtH --delete rsync://mirrors.aliyun.com/centos/7/ /usr/share/nginx/html
    

    here document在bash脚本中使用

    #!/bin/bash
    
    cat << EOF > output.sh
    (1) disk: show disk info
    (2) mem: show mem info
    (3) cpu:show cpu info
    (*) quit
    EOF
    
    cat output.sh
    

    sed用法

    sed:Stream Editor文本流编辑,sed是一个"非交互的"面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输出到屏幕,可以把只匹配到内容出到屏幕。还可以对原文件改动,但不再输出到屏幕结果。

    语法

    sed [option] 'sed command' filename

    sed的脚本格式

    sed [option] -f 'sed script' filename

    命令选项

    -n:只打印模式匹配的行
    -e:直接在命令行模式上进行sed动作编辑,此为默认选项
    -f:将sed的动作写在一个文件内,用-f filename执行filename内的sed动作
    -r:支持扩展表达式
    -i:直接修改文件内容

    sed在文件中查询文本的方式

    x x为行号
    x,y 表示行号从x到y
    /pattern 查询包含模式的行
    /pattern /pattern 查询包含两个模式的行
    /pattern/,x 在给定行号上查询包含模式的行
    x,/pattern/ 通过行号和模式查询匹配的行
    x,y! 查询不包含指定行号x和y的行

    sed的编辑命令

    p 打印匹配行(和-n一起使用)
    = 显示文件行号
    a 在定位行号后附加新文本信息
    i 在定位行号后插入新文本信息
    d 删除定位行
    c 用新文本替换定位行
    w filename 写文到一个文件,类似输出重定向 >
    r filename 从另一个文件中读文本,类似输入重定向 <
    s 使用替换模式替换相应模式
    l 显示与八进制ASCII代码等价的控制符
    {} 在定位行执行的命令组,用分号隔开
    n 从另一个文件中读文本下一行,并从下一条命令而不是第一条命令开始对其的处理
    N 在数据流中添加下一行以创建用于处理的多行组
    g 将模式2粘贴到/pattern n/
    y 传送字符,替换单个字符

    本文参考了:http://www.ywnds.com/?p=3915

  • 相关阅读:
    一个有趣的C语言问题
    PHP 管理树莓派
    JeeSite | 保存信息修改记录封装
    SQL Server学习内容(一)
    Java面试题大汇总
    Spring框架快速入门
    单例模式
    简要分析一下java中线程的生命周期
    mybatis中的高级查询
    mybatis中的分页插件
  • 原文地址:https://www.cnblogs.com/feng-land/p/10129012.html
Copyright © 2020-2023  润新知