前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dotNet--一条语句安装

dotNet--一条语句安装

作者头像
科控物联
发布2024-06-27 17:16:15
750
发布2024-06-27 17:16:15
举报
文章被收录于专栏:科控自动化科控自动化

Linux安装

包括服务器和桌面环境,自动识别指令集架构,支持x86/x64/arm/arm64/mips64/loongarch64/riscv64。

代码语言:javascript
复制
curl http://x.newlifex.com/dotNet/net.sh | sudo bash
代码语言:javascript
复制

#!/bin/bash

# 获取当前系统的处理器架构并存储在变量arch中
arch=$(uname -m)
# 定义版本号变量
ver="8.0.6"
# 定义下载文件的前缀
prefix="aspnetcore-runtime-$ver-linux"
# 定义下载源的URL
source="http://x.newlifex.com"

# 输出当前处理器架构
echo arch: $arch

# 检查是否为Alpine系统
if [ -f "/proc/version" ]; then
  # 搜索文件中是否包含musl或Alpine
  cat /proc_version | grep -q -E 'musl|Alpine'
  # 如果上一条命令的返回值是0(表示找到了匹配项)
  if [ $? -eq 0 ]; then
    # 修改文件前缀,添加musl标识
    prefix="$prefix-musl"
    # 安装必要的库
    apk add libgcc libstdc++
  fi
fi

# 根据处理器架构确定下载的文件名
if [ $arch == "x86_64" ]; then
  gzfile="$prefix-x64.tar.gz"
elif [ $arch == "amd64" ]; then
  gzfile="$prefix-x64.tar.gz"
elif [ $arch == "aarch64" ]; then
  gzfile="$prefix-arm64.tar.gz"
elif [ $arch == "armv7l" ]; then
  gzfile="$prefix-arm.tar.gz"
elif [ $arch == "riscv64" ]; then
  gzfile="dotnet-sdk-8.0.101-linux-riscv64-gcc.tar.gz"
  wget $source/dotnet/$gzfile
elif [ $arch == "loongarch64" ]; then
  gzfile="aspnetcore-runtime-8.0.5-linux-loongarch64.tar.gz"
  wget $source/dotnet/$gzfile
else
  gzfile="$prefix-$arch.tar.gz"
fi

# 输出确定的文件名
echo gzfile: $gzfile

# 如果文件不存在,则下载
if [ ! -f "$gzfile" ]; then
  wget $source/dotnet/$ver/$gzfile
fi

# 定义安装目标目录
target="/usr/lib/dotnet"
# 如果目标目录不存在,则使用备用目录
if [ ! -d $target ]; then
  target="/usr/share/dotnet"
fi

# 输出最终的安装目标目录
echo target: $target

# 如果目标目录不存在,则创建目录
if [ ! -d $target ]; then
  mkdir $target
fi
# 解压下载的文件到目标目录
tar -xzf $gzfile -C $target
# 如果系统中不存在dotnet的软链接,则创建
if [ ! -f "/usr/bin/dotnet" ]; then
  ln $target/dotnet /usr/bin/dotnet -s
fi

# 如果系统是centos并且架构是x86_64
if [ $arch == "x86_64" ] && [ -f /etc/os-release ]; then
  # 获取系统ID
  os_id=$(grep '^ID=' /etc/os-release | awk -F= '{print $2}' | tr -d '"')

  # 输出系统ID
  echo os_id: $os_id

  # 如果系统是centos
  if [ "$os_id" == "centos" ]; then
    # 定义libstdc++的路径
    libstd=/usr/lib64/libstdc++.so.6
    # 定义新的libstdc++库的路径
    libsrc=/usr/lib64/libstdc++.so.6.0.26
    # 如果旧库存在而新库不存在
    if [ -f $libstd ] && [ ! -f $libsrc ]; then
      # 如果新库的文件不存在,则下载
      if [ ! -f libstdcpp.6.0.26.so ]; then
        wget $source"/dotnet/libstdcpp.6.0.26.so"
      fi

      # 复制新库到指定位置
      cp libstdcpp.6.0.26.so $libsrc
      # 赋予执行权限
      chmod +x $libsrc
      # 删除旧的库链接
      rm $libstd
      # 创建新的库链接
      ln -s $libsrc $libstd
    fi

    # 安装libicu库
    yum install -y libicu
  elif [ "$os_id" == "neokylin" ]; then
    # 以下逻辑与centos相同,处理neokylin系统
    libstd=/usr/lib64/libstdc++.so.6
    libsrc=/usr/lib64/libstdc++.so.6.0.26
    if [ -f $libstd ] && [ ! -f $libsrc ]; then
      if [ ! -f libstdcpp.6.0.26.so ]; then
        wget $source"/dotnet/libstdcpp.6.0.26.so"
      fi

      cp libstdcpp.6.0.26.so $libsrc
      chmod +x $libsrc
      rm $libstd
      ln -s $libsrc $libstd
    fi

    yum install -y libicu
  elif [ "$os_id" == "Linx" ]; then
    # 以下逻辑与centos相同,处理Linx系统
    libstd=/usr/lib/x86_64-linux-gnu/libstdc++.so.6
    libsrc=/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.26
    if [ -f $libstd ] && [ ! -f $libsrc ]; then
      if [ ! -f libstdcpp.6.0.26.so ]; then
        wget $source"/dotnet/libstdcpp.6.0.26.so"
      fi

      cp libstdcpp.6.0.26.so $libsrc
      chmod +x $libsrc
      rm $libstd
      ln -s $libsrc $libstd
    fi

    apt install -y libicu
  else
    apt install -y libicu
  fi
fi
if [ $arch == "aarch64" ] && [ -f /etc/os-release ]; then
  # 获取系统ID
  os_id=$(grep '^ID=' /etc/os-release | awk -F= '{print $2}' | tr -d '"')

  # 输出系统ID
  echo os_id: $os_id

  # 如果系统是KylinSecOS
  if [ "$os_id" == "KylinSecOS" ]; then
    # 定义libstdc++的路径
    libstd=/lib64/libstdc++.so.6
    # 定义新的libstdc++库的路径
    libsrc=/lib64/libstdc++.so.6.0.28
    # 如果旧库存在而新库不存在
    if [ -f $libstd ] && [ ! -f $libsrc ]; then
      # 如果新库的文件不存在,则下载
      if [ ! -f libstdcpp-arm64.6.0.28.so ]; then
        wget $source"/dotnet/libstdcpp-arm64.6.0.28.so"
      fi

      # 复制新库到指定位置
      cp libstdcpp-arm64.6.0.28.so $libsrc
      # 赋予执行权限
      chmod +x $libsrc
      # 删除旧的库链接
      rm $libstd
      # 创建新的库链接
      ln -s $libsrc $libstd
    fi

    # 安装libicu库
    yum install -y libicu
  else
    apt install -y libicu
  fi
fi

# 输出dotnet的信息
dotnet --info

# 删除下载的文件
# rm $gzfile -f
# 删除本脚本文件
# rm net.sh
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科控物联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux安装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档