Linux文本处理和软件包管理

Posted 蜗牛冲上天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文本处理和软件包管理相关的知识,希望对你有一定的参考价值。

Linux文本处理和软件包管理

文本处理

  • sed:流编辑器,可以根据需求逐行处理文本文件,功能强大支持正则表达式

    软件包管理

  • redhat系列:
    • 底层rpm
    • 前端工具yum
  • debian系列
    • 底层dpkg
    • 前端工具apt, apt-get....

1、自建yum仓库,分别为网络源和本地源

# 本地yum源,使用光盘里的rpm包,确保光盘已经插上了
# 判断光盘是否已经插上了
judge_cdrom_exist(){
    if blkid | grep sr0 &> /dev/null;then
        echo "Have cdrom" 
    else
        echo "Dont have cdrom"
        return 1
    fi
}
# 将光盘挂载到期望的目录
mount_cdrom(){
    # 未做幂等性校验,只是写个例子
    local mount_point=$1
    echo "/dev/cdrom  $mount_point iso9660 defaults,ro 0 0" >> /etc/fstab
    mount -a
}
# 再加一个yum源本地配置
add_repo(){
    local dir=$1
    cat > /etc/yum.repos.d/local.repo << EOF
[local]
name=local cdrom repo
baseurl=file://$dir
EOF
}

# 组织逻辑,main函数
main(){
    if [ $# -lt 1 ]; then
        echo Usage: $0 <MOUNT_POINT>
        echo     Must give a mount point.
        exit 1
    fi
    dir=$1
    if judge_cdrom_exist; then
        mount_cdrom $dir
        add_repo $dir
    fi
}

# 调用主函数
main /mnt
# 网络yum源,此次默认使用的是aliyun的镜像站点
# 得到当前发行版的大版本号
get_version(){
    sed -rn s/VERSION_ID="(.*)"/\\1/p /etc/os-release
}

# 检测哪个http client工具可用,并下载期望的repo文件
configure_yum_conf(){
    local version=$1
    if rpm -q wget &> /dev/null; then
        echo Use wget download repo now
        wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-$version.repo &> /dev/null
    elif rpm -q curl &> /dev/null; then
        echo Use curl download repo now
        curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-$version.repo &>/dev/null
    fi
}

# 组织逻辑
main(){
    local version=`get_version`
    configure_yum_conf $version
}

# 调用main函数
main

2、编译安装http2.4,实现可以正常访问,并将编译步骤和结果提交。

# 下载源码包
wget --no-check-certificate https://dlcdn.apache.org//httpd/httpd-2.4.51.tar.gz
# 解压
tar xf httpd-2.4.51.tar.gz
# 安装依赖
yum install -y apr-devel apr-util-devel gcc pcre-devel
# 进入目标目录
cd httpd-2.4.51
# 做校验工作和一些配置,我就都使用默认的值了
./confiugre
# 编译,根据你的cpu核心数设置相应的并发
make -j4
# 安装
make install
# 以下内容我就不做了
# 将二进制目录加入到PATH变量中
# 将manual加入到MANPATH
# 将配置文件做好等等

3、利用sed 取出ifconfig命令中本机的IPv4地址

# 我机器上没有这个工具了,还得从新装,多老的人还用这个命令啊。。。
yum install -y net-tools
ifconfig | sed -rn /inet / s/[^0-9]+([0-9.]+) .*/\\1/p

4、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

sed -r s/^# +(.*)/\\1/ /etc/fstab

5、处理/etc/fstab路径,使用sed命令取出其目录名和基名

# 说实话有问题
# 取目录名
echo "/etc/fstab/" |sed -r s#[^/]+/?##
# 取基名
echo "/etc/fstab" | sed -r s@.*/([^/]*)/?$@\\1@

6、列出ubuntu软件管理工具apt的一些用法(自由总结)

  • apt是debian类的软件包管理器前端工具,用法与yum很相似
  • apt install 安装软件包
  • apt list 列出当前软件包源包含的所有软件包
  • apt remove 移除已经安装的软件包,卸载
  • apt update 更新软件包仓库
  • apt upgrate 更新软件包,升级
  • apt search 搜索软件包

以上是关于Linux文本处理和软件包管理的主要内容,如果未能解决你的问题,请参考以下文章

linux文本处理sed软件包管理磁盘存储和文件系统

linux 文本处理sed&软件管理

知识结构体系

Linux学习- sed,软件包管理

源代码管理工具GitHub介绍

源代码管理工具GitHub介绍