• hadoop2.5.3迁移指南-cenos7.6
    一 介绍Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算二环境信息本组件是基于鲲鹏920的centos7.6进行编译三 配置编译环境3.1 安装Openjdk下载并安装到指定目录(如/opt/tools/installed):wget  https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gztar   -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gzmv jdk8u191-b12   /opt/tools/installed/配置java环境变量,在/etc/profile文件末尾处增加下面的代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12PATH=$JAVA_HOME/bin:$PATHexport   JAVA_HOME PATH运行下面命令,使修改的环境变量生效:source   /etc/profile3.2 安装Maven下载并安装到指定目录(如/opt/tools/installed):wget   https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar   -zxf apache-maven-3.5.4-bin.tar.gzmv   apache-maven-3.5.4 /opt/tools/installed/修改maven环境变量,在/etc/profile文件末尾增加下面高亮代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport   MAVEN_HOME   JAVA_HOME PATH运行下面的命令,是修改的环境变量生效:source   /etc/profile修改maven配置文件中的:本地仓路径、远程仓等:配置文件路径:/opt/tools/installed/apache-maven-3.5.4/conf/settings.xml本地仓库配置:<!--默认在“~/.m2/”目录下,修改成你自己想保存的目录--><localRepository>/path/to/local/repo</localRepository>远程仓库配置:<!--修改成自己搭建的maven仓库,如果没有,可以使用下面的aliyun --><mirror>  <id>alimaven</id>  <name>aliyun maven</name>  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  <mirrorOf>central</mirrorOf>   </mirror>配置代理:  <proxies>   <proxy>      <id>optional</id>      <active>true</active>      <protocol>http</protocol>      <username>用户名</username>      <password>密码</password>      <host>代理服务器网址</host>      <port>代理服务器端口</port>        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>    </proxy>  </proxies> 3.3 安装GCC挂载OS镜像:mount   YOUR_OS.iso /media -o loop修改/etc/yum.repos.d/Base.repo文件,配置yum本地源:[Local]name=CentOS-7.4   Localbaseurl=file:///media/enabled=1gpgcheck=0运行下面的命令,使yum源配置生效:yum   clean allyum   makecacheyum安装GCC相关软件:yum   install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64四获取源码进入home目录,下载hadoop源码包cd /homewget https://github.com/hortonworks/hadoop-release/archive/HDP-2.5.3.0-tag.tar.gz解压安装包,进入解压目录tar -xvf HDP-2.5.3.0-tag.tar.gzcd hadoop-release-HDP-2.5.3.0-tag五 编译安装5.1 执行mvn命令编译执行mvn编译:mvn package -DskipTests -Pdist,native -Dtar -Dsnappy.lib=/usr/local/lib64 -Dbundle.snappy -Dmaven.javadoc.skip=true编译后的结果如下需要查看下是hadoop-release-HDP-2.5.3.0-tag/hadoop-dist/target/hadoop-2.7.1-SNAPSHOT/lib/native否有生成对应的libhadoop.so和libhdfs.so以及libsnappy.so等库文件,生成的这些库文件是需要在做arm版的rpm包时替换用的 
  • HDP-2.6.3 Hive 编译指导 for Centos 7.6 ★★★
    1 Hive简介Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。2 软硬件环境类别子项版本获取地址(方法)硬件CPU鲲鹏920--OSCentOS7.6.1810Kernel4.14.0  3 编译环境准备3.1 安装OpenJDK下载并安装到指定目录(如/opt/tools/installed):wget  https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gztar   -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gzmv jdk8u191-b12   /opt/tools/installed/配置java环境变量,在/etc/profile文件末尾处增加下面的代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12PATH=$JAVA_HOME/bin:$PATHexport   JAVA_HOME PATH运行下面命令,使修改的环境变量生效:source   /etc/profile3.2 安装Maven下载并安装到指定目录(如/opt/tools/installed):wget   https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar   -zxf apache-maven-3.5.4-bin.tar.gzmv   apache-maven-3.5.4 /opt/tools/installed/修改maven环境变量,在/etc/profile文件末尾增加下面高亮代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport   MAVEN_HOME   JAVA_HOME PATH运行下面的命令,是修改的环境变量生效:source   /etc/profile修改maven配置文件中的:本地仓路径、远程仓等:<!--默认在“~/.m2/”目录下,修改成你自己想保存的目录--><localRepository>/path/to/local/repo</localRepository> <!--修改成自己搭建的maven仓库,ARM使能后的jar包替换到该仓库--><mirror><id>mirror</id><mirrorOf>*</mirrorOf><name>cmc-cd-mirror</name><url>https://mirrors.huaweicloud.com/repository/maven/</url></mirror> 3.3 基本工具安装yum   install openssl-devel zlib-devel automake libtool cmake libstdc++-static glibc-static   git gcc gcc-c++ make3.4 解决-fsigned-char问题1.使用command -v gcc命令寻找gcc所在路径(一般位于/usr/bin/gcc)2.更改gcc的名字(比如改成gcc-impl)3.在gcc所在目录执行vim gcc,并填入如下内容保存:#!   /bin/sh/usr/bin/gcc-impl   -fsigned-char "$@"4.执行chmod +x gcc给脚本添加执行权限5.使用与1-4步相似的方式给g++创建同名字的脚本文件   4 软件移植分析使用鲲鹏代码迁移工具进行扫描:https://kunpeng.huawei.com/#/developer/devkit/porting-advisor?data=web(或根据《CheckSo用户指南》扫描HDP Hive安装包:https://bbs.huaweicloud.com/forum/thread-22679-1-1.html)使用如下链接下载HDP x86 RPM包:http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.3.0/HDP-2.6.3.0-centos7-rpm.tar.gz,分析hive_2_6_3_0_235-1.2.1000.2.6.3.0-235.noarch.rpm得出需要移植的第三方依赖包如下表所示。 原始jarso文件jline-2.12.jarlibjansi.sosnappy-java-1.0.5.jarlibsnappyjava.sonetty-all-4.0.52.Final.jarlibnetty_transport_native_epoll_x86_64.soleveldbjni-all-1.8.jarlibleveldbjni.so5 依赖库编译根据代码迁移工具扫描中的报告提示,需要迁移的jar包华为镜像占中已有的,可以直接替换,如下也提供了手动编译的方法5.1 编译jline-2.12.jar直接下载华为镜像站中jar包:https://mirrors.huaweicloud.com/kunpeng/maven/jline/jline/2.12/jline-2.12.jar替换到本地仓库中或参考jline及jansi编译指南编译jline-2.12:https://bbs.huaweicloud.com/forum/thread-22742-1-1.html编译思路如下:依赖关系:jline-2.12 --> jansi-1.11 --> jansi-native-1.5先编译jansi-native-1.5和jansi1.11(编译命令使用mvn package -Dmaven.javadoc.skip=true),编译生成的jansi-1.11.jar拷贝到maven本地仓库     从github网站下载Jline对应版本源码wget https://github.com/jline/jline2/archive/jline-2.12.tar.gztar   -zxf jline-2.12.tar.gz     进入jline解压目录cd   jline2-jline-2.12    执行编译mvn   package        输出jar包:./target/jline-2.11.jar,替换到maven本地仓部分编译报错及解决方法见FAQ5.2 编译snappy-java-1.0.5.jar参考snappy-java编译指南进行编译:https://bbs.huaweicloud.com/forum/thread-22715-1-1.html编译后可以在target目录下找到生成的jar包:snappy-java-1.0.5.jar,替换到Maven本地仓中或从华为镜像站直接下载编译好的jar包:https://mirrors.huaweicloud.com/kunpeng/maven/org/xerial/snappy/snappy-java/1.0.5/snappy-java-1.0.5.jar 将编译好的jar包替换到本地仓中5.3 编译netty-all-4.0.52.Final.jar参考netty-all-4.0.52.Final编译指南进行编译:https://bbs.huaweicloud.com/forum/thread-22707-1-1.html编译打成jar包, netty-all-4.0.52.Final.jar放置于netty-netty-4.0.52.Final/all/target目录,替换到maven本地仓或者直接从华为镜像站下载编译好的jar包:https://mirrors.huaweicloud.com/kunpeng/maven/io/netty/netty-all/4.0.52.Final/netty-all-4.0.52.Final.jar 将编译好的jar包直接替换安装到本地仓5.4 编译leveldbjni-all-1.8.jar    参考leveldbjni-all编译指南进行编译:https://bbs.huaweicloud.com/forum/thread-22684-1-1.html 生成的jar包替换到maven本地仓 或从华为镜像站下载编译好的jar包:https://mirrors.huaweicloud.com/kunpeng/maven/org/fusesource/leveldbjni/leveldbjni-all/1.8/leveldbjni-all-1.8.jar     将编译好的jar包直接替换安装到本地仓6 Hive编译从Github上下载HDP Hive源码并解压:wget https://github.com/hortonworks/hive-release/archive/HDP-2.6.3.0-235-tag.tar.gztar   -zxvf HDP-2.6.3.0-235-tag.tar.gzcd hive-release-HDP-2.6.3.0-235-tag执行编译:mvn clean install -Phadoop-2 -DskipTests -Pdist编译成功后,将在源码下的packaging/target目录生成hive的tar.gz包。7 参考信息更多编译命令详见Hive官网。8 FAQ1、Jansi-native编译问题问题:config.status: error: cannot find input file: `Makefile.in'解决办法:在源码目录下cd target/native-build/chmod -R 755 *vi configure.ac增加AM_PROG_AR./autogen.shautomake --add-missing 2、Jansi编译报错1报错现象:解决办法:编译命令添加-Dmaven.javadoc.skip=truemvn package -Dmaven.javadoc.skip=true 3、Jansi编译报错2报错现象:解决办法:进入到源码路径下的jansi目录下,仅编译jansi 4、Hive编译报错报错现象:解决办法:编译命令,加上hadoop-2:mvn clean install -Phadoop-2 -DskipTests -Pdist
  • netty-all-4.0.42-Final.jar编译指导 ★★★
    1 软硬件环境类别子项版本获取地址(方法) 硬件CPU鲲鹏920--网络Ethernet-10GE--存储SATA 4T--内存256G 2400MHz--OSCentOS7.6Kernel4.14  软件GCC4.8.5Maven3.5.4Apr1.5.2Openssl1.0.2h2 编译环境准备2.1 安装OpenJDK下载并安装到指定目录(如/opt/tools/installed):wget  https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gztar   -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gzmv jdk8u191-b12 /opt/tools/installed/配置java环境变量,在/etc/profile文件末尾处增加下面的代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12PATH=$JAVA_HOME/bin:$PATHexport   JAVA_HOME PATH运行下面命令,使修改的环境变量生效:source   /etc/profile2.2 安装Maven下载并安装到指定目录(如/opt/tools/installed):wget   https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar   -zxf apache-maven-3.5.4-bin.tar.gzmv   apache-maven-3.5.4 /opt/tools/installed/修改maven环境变量,在/etc/profile文件末尾增加下面高亮代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport   MAVEN_HOME   JAVA_HOME PATH运行下面的命令,是修改的环境变量生效:source   /etc/profile2.3 安装Gcc等依赖项yum安装GCC等相关依赖:yum   install git gcc gcc-c++ make cmake libtool autoconf automake -y2.4 解决-fsigned-char问题1.使用command -v gcc命令寻找gcc所在路径(一般位于/usr/bin/gcc)2.更改gcc的名字(比如改成gcc-impl)3.在gcc所在目录执行vim gcc,并填入如下内容保存:#!   /bin/sh/usr/bin/gcc-impl   -fsigned-char “$@”4.执行chmod +x gcc给脚本添加执行权限5.使用与1-4步相似的方式给g++创建同名字的脚本文件3 组件编译安装3.1 安装相关依赖包3.1.1 安装netty-tcnative 1.1.33.Fork231.  下载并解压版本wget https://github.com/netty/netty-tcnative/archive/netty-tcnative-parent-1.1.33.Fork23.tar.gztar -zxvf netty-tcnative-parent-1.1.33.Fork23.tar.gz 2.  进入netty-tcnative解压目录cd netty-tcnative-netty-tcnative-parent-1.1.33.Fork233.  修改pom.xml,屏蔽boringssl的编译,编译打包到maven本地仓库(该步会有报错,解决方法见下一步)mvn   install -DskipTests修改pom.xml,注释掉下载apr-1.5.2的部分(有两处)4.  并下载apr-1.5.2,放置于指定位置cd   ./openssl-static/targetwget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz继续编译打包到maven本地仓库(该步会有报错,解决方法见下一步)mvn   install -DskipTests修改openssl-static/pom.xml,注释掉下载openssl source的部分(有两处)将openssl-static/target/old/1.0.2/目录下的openssl-1.0.2j.tar.gz拷贝到openssl-static/targetcp   ./openssl-static/target/old/1.0.2/openssl-1.0.2j.tar.gz .   openssl-static/target/ 5.  编译打包到maven本地仓库mvn   install -DskipTests 6.  修改tcnative生成jar包的文件名,在文件最后增加-fedoracd /root/.m2/repository/io/netty/netty-tcnative/1.1.33.Fork23cp   netty-tcnative-1.1.33.Fork23-linux-aarch_64.jar netty-tcnative-1.1.33.Fork23-linux-aarch_64-fedora.jar 3.2 下载netty-4.0.42源码下载netty-4.0.42源码,并解压wget https://github.com/netty/netty/archive/netty-4.0.42.Final.tar.gztar -zxvf   netty-4.0.42.Final.tar.gz修改pom.xml,注释以下代码编译打成jar包, netty-all-4.0.42.Final.jar放置于netty-netty-4.0.42.Final/all/target目录mvn   install -DskipTests 4 测试无5 FAQQ: 为何在编译netty-tcnative时屏蔽boringssl?A: 若编译时不屏蔽boringssl,会报tcnative openssl版本(1.0.2h)与boringssl中需要的C语言宏定义库不完全兼容导致的。并且,由于boringssl是google自己开发并自己使用,并不希望第三方软件使用,去掉此部分风险小,因此采用屏蔽此部分的方法。
  • HDP 2.6.3-tez移植指导★★★
    1 Tez简介Tez支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业。2 软硬件环境类别子项版本获取地址(方法)硬件CPU鲲鹏920--OSCentOS7.6.1810Kernel4.14.0  3 编译环境准备3.1 安装OpenJDK下载并安装到指定目录(如/opt/tools/installed):wget  https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gztar   -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gzmv jdk8u191-b12   /opt/tools/installed/配置java环境变量,在/etc/profile文件末尾处增加下面的代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12PATH=$JAVA_HOME/bin:$PATHexport   JAVA_HOME PATH运行下面命令,使修改的环境变量生效:source   /etc/profile3.2 安装Maven下载并安装到指定目录(如/opt/tools/installed):wget   https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar   -zxf apache-maven-3.5.4-bin.tar.gzmv   apache-maven-3.5.4 /opt/tools/installed/修改maven环境变量,在/etc/profile文件末尾增加下面高亮代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport   MAVEN_HOME   JAVA_HOME PATH运行下面的命令,是修改的环境变量生效:source   /etc/profile修改maven配置文件中的:本地仓路径、远程仓等:<!--默认在“~/.m2/”目录下,修改成你自己想保存的目录--><localRepository>/path/to/local/repo</localRepository> <!--修改成自己搭建的maven仓库,ARM使能后的jar包替换到该仓库--><mirror><id>mirror</id><mirrorOf>*</mirrorOf><name>cmc-cd-mirror</name><url>远程仓地址</url></mirror> 3.3 基本工具安装yum   install openssl-devel zlib-devel automake libtool cmake libstdc++-static glibc-static   git gcc gcc-c++ make3.4 解决-fsigned-char问题1.使用command -v gcc命令寻找gcc所在路径(一般位于/usr/bin/gcc)2.更改gcc的名字(比如改成gcc-impl)3.在gcc所在目录执行vim gcc,并填入如下内容保存:#!   /bin/sh/usr/bin/gcc-impl   -fsigned-char "$@"4.执行chmod +x gcc给脚本添加执行权限5.使用与1-4步相似的方式给g++创建同名字的脚本文件   4 软件移植分析依据《CheckSo使用说明文档》扫描HDP Tez安装包(使用如下链接下载HDP x86 RPM包:https://docs.cloudera.com/HDPDocuments/Ambari-2.6.0.0/bk_ambari-installation/content/hdp_26_repositories.html),分析tez_2_6_3_0_235-0.7.0.2.6.3.0-235.noarch.rpm得出需要移植的第三方依赖包如下表格所示。原始jarso文件snappy-java-1.0.4.1.jarlibsnappyjava.sonetty-all-4.0.52.Final.jarlibnetty_transport_native_epoll_x86_64.soleveldbjni-all-1.8.jarlibleveldbjni.so5 依赖库编译5.1 编译snappy-java-1.0.4.1.jar参考snappy-java指南进行编译:https://bbs.huaweicloud.com/forum/thread-22715-1-1.html编译后可以在target目录下找到生成的jar包:snappy-java-1.0.4.1.jar,需要手动替换到Maven地仓中或直接从华为镜像站下载编译好的jar包:https://repo.huaweicloud.com/repository/maven/kunpeng/org/xerial/snappy/snappy-java/1.0.4.1/snappy-java-1.0.4.1.jar 将编译好的jar包替换到本地仓中5.2 编译netty-all-4.0.52.Final.jar参考netty-all指南进行编译:https://bbs.huaweicloud.com/forum/thread-22707-1-1.html 或直接从华为镜像站下载编译好的jar包:https://repo.huaweicloud.com/repository/maven/kunpeng/io/netty/netty-all/4.0.52.Final/将编译好的jar包替换到本地仓中5.3 编译leveldbjni-all-1.8.jar   参考leveldbjni-all编译指南进行编译:https://bbs.huaweicloud.com/forum/thread-22684-1-1.html   或从华为镜像站下载编译好的jar包:https://repo.huaweicloud.com/repository/maven/kunpeng/org/fusesource/leveldbjni/leveldbjni-all/1.8/leveldbjni-all-1.8.jar        将编译好的jar包直接替换安装到本地仓6 Tez编译从Github上下载HDP tez源码并解压:wget https://github.com/hortonworks/tez-release/archive/HDP-2.6.3.0-235-tag.tar.gztar   -zxvf HDP-2.6.3.0-235-tag.tar.gzcd tez-release-HDP-2.6.3.0-235-tag执行编译:mvn install   -DskipTests    7 参考信息更多关于Tez信息参考官网:http://tez.apache.org/8 FAQ1、tez编译问题问题:[ERROR] bower more-js#0.8.6   EINVRES Request to https://bower.herokuapp.com/packages/more-js failed with 502解决办法:更新下载地址为https://registry.bower.iocd tez-release-HDP-2.6.3.0-235-tag  vi   tez-ui/src/main/webapp/node_modules/bower-config/lib/util/defaults.js  cd tez-release-HDP-2.6.3.0-235-tag  vi tez-ui/src/main/webapp/node_modules/bower/lib/node_modules/bower-config/lib/util/defaults.js
  • hdp-2.6.3 pig移植指南for centos 7.6 ★★★
    1 pig简介Apache Pig 是一个高级过程语言,适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用2 软硬件环境类别子项版本获取地址(方法)硬件CPU鲲鹏920--OSCentOS7.6.1810Kernel4.14.0  3 编译环境准备3.1 安装OpenJDK下载并安装到指定目录(如/opt/tools/installed):wget  https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gztar   -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gzmv jdk8u191-b12   /opt/tools/installed/配置java环境变量,在/etc/profile文件末尾处增加下面的代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12PATH=$JAVA_HOME/bin:$PATHexport   JAVA_HOME PATH运行下面命令,使修改的环境变量生效:source   /etc/profile3.2 安装Maven下载并安装到指定目录(如/opt/tools/installed):wget   https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar   -zxf apache-maven-3.5.4-bin.tar.gzmv   apache-maven-3.5.4 /opt/tools/installed/修改maven环境变量,在/etc/profile文件末尾增加下面高亮代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport   MAVEN_HOME   JAVA_HOME PATH运行下面的命令,使修改的环境变量生效:source   /etc/profile修改maven配置文件中的:本地仓路径、远程仓等:<!--默认在“~/.m2/”目录下,修改成你自己想保存的目录--><localRepository>/path/to/local/repo</localRepository> <!--修改成自己搭建的maven仓库,ARM使能后的jar包替换到该仓库--><mirror><id>mirror</id><mirrorOf>*</mirrorOf><name>cmc-cd-mirror</name><url>远程仓地址</url></mirror> 3.3 安装ant     下载ant,解压wget   http://mirror.bit.edu.cn/apache//ant/binaries/apache-ant-1.9.14-bin.tar.gztar -zxvf   apache-ant-1.9.14-bin.tar.gzcd   apache-ant-1.9.14/      在/etc/profile文件末尾增加ant环境变量增加ANT_HOME=解压后路径PATH中增加$ANT_HOME/bin:export   ANT_HOME修改完保存退出后,运行下面的命令,使修改的环境变量生效:source   /etc/profile3.4 基本工具安装yum   install openssl-devel zlib-devel automake libtool cmake libstdc++-static glibc-static   git gcc gcc-c++ make1.1 解决-fsigned-char问题1.使用command -v gcc命令寻找gcc所在路径(一般位于/usr/bin/gcc)2.更改gcc的名字(比如改成gcc-impl)3.在gcc所在目录执行vim gcc,并填入如下内容保存:#!   /bin/sh/usr/bin/gcc-impl   -fsigned-char "$@"4.执行chmod +x gcc给脚本添加执行权限5.使用与1-4步相似的方式给g++创建同名字的脚本文件   4 软件移植分析依据《CheckSo使用说明文档》扫描HDP pig安装包(使用如下链接下载HDP x86 RPM包:https://docs.cloudera.com/HDPDocuments/Ambari-2.6.0.0/bk_ambari-installation/content/hdp_26_repositories.html),分析pig_2_6_3_0_235-0.16.0.2.6.3.0-235.noarch.rpm得出需要移植的第三方依赖包如下表格所示。5 依赖库编译5.1 编译jansi-1.9.jar参考jansi指南进行编译:https://bbs.huaweicloud.com/forum/thread-37326-1-1.html或直接从华为镜像站下载编译好的jar包:https://repo.huaweicloud.com/repository/maven/kunpeng/org/fusesource/jansi/jansi/1.9/jansi-1.9.jar 将编译好的jar包替换到maven ant本地仓中5.2 编译jline-2.11.jar参考jline指南进行编译:https://bbs.huaweicloud.com/forum/thread-22742-1-1.html或直接从华为镜像站下载编译好的jar包:https://repo.huaweicloud.com/repository/maven/kunpeng/jline/jline/2.11/jline-2.11.jar将编译好的jar包替换到maven ant本地仓中5.3 编译jruby-complete-1.7.26.jar参考jruby-complete指南进行编译:https://bbs.huaweicloud.com/forum/thread-38009-1-1.html将编译好的jar包替换到maven ant本地仓中5.4 编译jython-standalone-2.7.0.jar 参考jython-standalone指南进行编译:https://bbs.huaweicloud.com/forum/thread-26555-1-1.html将编译好的jar包替换到maven ant本地仓中5.5 编译snappy-java-1.1.0.1.jar参考snappy-java指南进行编译:https://bbs.huaweicloud.com/forum/thread-41071-1-1.html或直接从华为镜像站下载编译好的jar包:https://repo.huaweicloud.com/repository/maven/kunpeng/org/xerial/snappy/snappy-java/1.1.0.1/snappy-java-1.1.0.1.jar将编译好的jar包替换到maven ant本地仓中6 pig编译从Github上下载HDP pig源码并解压:wget https://github.com/hortonworks/pig-release/archive/HDP-2.6.3.0-235-tag.tar.gztar   -zxvf HDP-2.6.3.0-235-tag.tar.gzcd pig-release-HDP-2.6.3.0-235-tag修改ivy.xml中hbase-procedure的版本号(默认会去下载0.98.12版本的依赖,无此版本的hbase-procedure)执行编译:ant   clean jar piggybank -Dhadoopversion=237 参考信息更多关于pig信息参考官网:http://pig.apache.org/8 FAQ1、Jansi-native编译问题问题:config.status: error: cannot find input file: `Makefile.in'解决办法:在源码目录下cd target/native-build/chmod -R 755 *vi configure.ac增加AM_PROG_AR./autogen.shautomake --add-missing 2、Jansi编译报错1报错现象:解决办法:编译命令添加-Dmaven.javadoc.skip=truemvn package -Dmaven.javadoc.skip=true 3、Jansi编译报错2报错现象:解决办法:进入到源码路径下的jansi目录下,仅编译jansi
  • [中间件] 【华为云鲲鹏云服务最佳实践】【工具篇】第114期 Gcc-7.30安装配置指南
    1、简介gcc for linux(gcc编译器)是一款针对linux系统而开发的编译器软件。gcc for linux对自由软件类 Unix操作系统和一些所有权操作系统。Linux系统下的gcc(GNUCCompiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。官方链接:http://tsung.erlang-projects.org/类别:工具&插件2、基础环境类别子项版本获取地址(方法)华为云虚拟机KC1(920)--OSCentOS7.5Kernel4.14软件包Gcc7.3.0https://ftpmirror.gnu.org/gcc/gcc-7.3.0/gcc-7.3.0.tar.xz 3、依赖安装yum install -y wget gcc4、组件编译安装  下载源码包cd /optwget https://ftpmirror.gnu.org/gcc/gcc-7.3.0/gcc-7.3.0.tar.xztar –xf gcc-7.3.0.tar.xz  下载安装依赖进入解压好的目录,并执行以下命令下载安装依赖(时间稍长,耐心等待)cd gcc-7.3.0./contrib/download_prerequisites    编译:创建编译目录cd /usr/localmkdir gcc-build-7.3.0cd gcc-build-7.3.0/opt/gcc-7.3.0/configuremake –j8   (添加-j8,否则编译时间太长) make install 5、系统配置    无6、测试查看版本信息gcc -v 7、参考信息无  8、FAQQ:下载依赖包报错 A:原因分析:未发现GMP、MPFR和MPC tar下载包的解压目录解决方法:删除下载的四个tar包,重新执行./contrib/download_prerequisites
  • [热门活动] 在DevCloud里提交了一个产品“问题缺陷”反馈,管理员回复的是我使用问题,贴这里请各位大神验证一下
    操作区域:北京一区:devcloud.huaweicloud.com问题描述:通过模板创建仓库后,在codehub界面复制https链接后,在本地通过git clone克隆代码到本地时报错;错误截图:管理员回复:从截图信息判断,是您本地保存的git密码有误导致克隆失败,建议您在控制面板-凭据管理器中删除原来的git凭据,然后重新执行克隆操作,克隆过程中的弹出窗口输入正确的https用户名密码。再次验证:按管理员回复的试了一下,确实不是密码问题,验证过程截了图:备注:1. 截图页提示的是project not found,并不是密码错误;2. 打电话给400,直接回复提交工单,说电话不解决问题了,因为不是一个部门了(手动笑哭);3. 上面的链接,都是在DevCloud上面复制的,不是手打的,所以排队路径错误哈。
  • [问题求助] 从github的liteos的dev-desert分支移植上云的组件到已经测试过成功的接管中断的liteos,编译...
    #### 从github的liteos的dev-desert分支移植上云的组件到已经测试过成功的接管中断的liteos,编译通过了,但出现下面报错>求大佬帮帮忙
  • [分享交流] Hive 常用函数
    Hive数据库中内置一些常用的函数,同时hive也支持自定义函数。hive自定义函数,主要是通过java编程实现,因为hive是java所写的。下面主要是介绍一些hive当中的一些常用的函数的使用。通过对函数的学习,有利于对于hive的业务操作。步骤 1 首先执行环境变量。 > source /home/user01/hadoopClient/bigdata_env 步骤 2 进入 Hive 客户端 beeline。 > /home/user01/hadoopClient/Hive/Beeline/bin/beeline ... Connected to: Apache Hive (version 1.3.0) Driver: Hive JDBC (version 1.3.0) Transaction isolation: TRANSACTION_REPEATABLE_READ Beeline version 1.3.0 by Apache Hive 0: jdbc:hive2://192.168.225.11:21066/> 步骤 3 字符串函数 length(string A)。 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串 A 的长度 hive> select length(‘abcedfg’); 7 步骤 4 字符串反转函数 reverse。 语法: reverse(string A) 返回值: string 说明:返回字符串 A 的反转结果 hive> select reverse(‘abcedfg’); gfdecba 步骤 5 字符串连接函数 concat。 语法: concat(string A, string B…) 返回值: string 说明:返回输入字符串连接后的结果,支持任意个输入字符串 hive> select concat(‘abc’,'def’,'gh’); abcdefgh 步骤 6 带分隔符字符串连接函数 concat_ws。 语法: concat_ws(string SEP, string A, string B…)返回值: string 说明:返回输入字符串连接后的结果,SEP 表示各个字符串间的分隔符 hive> select concat_ws(‘-’,'abc’,'def’,'gh’); abc-def-gh 步骤 7 字符串截取函数 substr,substring。 语法: substr(string A, int start, int len),substring(string A, int start, int len) 返回值: string 说明:返回字符串 A 从 start 位置开始,长度为 len 的字符串 hive> select substr('abcde',3,2); cdhive>select substr ('abcde',-2,2); de 步骤 8 字符串转大写函数 upper,ucase。 语法: upper(string A) ucase(string A) 返回值: string 说明:返回字符串 A 的大写格式 hive> select upper(‘abC’); ABC hive> select ucase(‘abC’); ABC 步骤 9 字符串转小写函数 lower,lcase。 语法: lower(string A) lcase(string A) 返回值: string 说明:返回字符串 A 的小写格式 hive> select lower(‘abC’); abc hive> select lcase(‘abC’); abc 步骤 10 去空格函数 trim。 语法: trim(string A) 返回值: string 说明:去除字符串两边的空格 hive> select trim(‘ abc ‘); abc 步骤 11 分割字符串函数 split。语法: split(string str, string pat) 返回值: array 说明: 按照 pat 字符串分割 str,会返回分割后的字符串数组 hive> select split(‘abtcdtef’,'t’); ["ab","cd","ef"] 步骤 12 日期函数。 获取当前 UNIX 时间戳函数: unix_timestamp 语法: unix_timestamp() 返回值: bigint 说明: 获得当前时区的 UNIX 时间戳。 hive> select unix_timestamp() from dual; 1521511607 UNIX 时间戳转日期函数: from_unixtime 语法:from_unixtime(bigint unixtime[, string format]) 返回值: string 说明: 转化 UNIX 时间戳(从 1970-01-01 00:00:00 UTC 到指定时间的秒数)到当前时区的时间 格式。 hive> select from_unixtime(1521511607,'yyyyMMdd'); 20180320  
  • [交流分享] #化鲲为鹏,我有话说# ftrace快速入门
    #化鲲为鹏,我有话说#ARM(鲲鹏),给您不一样的感觉。ftrace快速入门。以ubuntu为例:查看当前 ftrace 支持的插件sudo su cat /sys/kernel/debug/tracing/available_tracers  hwlat blk mmiotrace function_graph wakeup_dl wakeup_rt wakeup function nop显示tracer前20行cd /sys/kernel/debug/tracing/ cat trace | head -n 20 # tracer: function # # entries-in-buffer/entries-written: 410016/1315390946   #P:8 # #                              _-----=> irqs-off #                             / _----=> need-resched #                            | / _---=> hardirq/softirq #                            || / _--=> preempt-depth #                            ||| /     delay #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION #              | |       |   ||||       |         |            gdbus-3566  [002] ....  3917.550644: __fget <-__fget_light            gdbus-3566  [002] ....  3917.550644: sock_poll <-do_sys_poll            gdbus-3566  [002] ....  3917.550644: unix_poll <-sock_poll            gdbus-3566  [002] ....  3917.550644: __pollwait <-unix_poll            gdbus-3566  [002] ....  3917.550645: add_wait_queue <-__pollwait            gdbus-3566  [002] ....  3917.550645: _raw_spin_lock_irqsave <-add_wait_queue            gdbus-3566  [002] d...  3917.550645: _raw_spin_unlock_irqrestore <-add_wait_queue            gdbus-3566  [002] ....  3917.550645: fput <-do_sys_poll            gdbus-3566  [002] ....  3917.550645: __fdget <-do_sys_poll查看所有函数开启cat set_ftrace_filter #### all functions enabled ####使用function_graph 详细查看内核函数上下文echo function_graph > current_tracer cat trace | head -20 # tracer: function_graph # # CPU  DURATION                  FUNCTION CALLS # |     |   |                     |   |   |   |  4)   0.240 us    |              } /* _raw_spin_lock_irqsave */  4)   0.294 us    |              ktime_get_update_offsets_now();  4)               |              __hrtimer_run_queues() {  4)   0.363 us    |                __remove_hrtimer();  4)   0.249 us    |                _raw_spin_unlock_irqrestore();  4)               |                tick_sched_timer() {  4)   3.365 us    |                  ktime_get();  4)   0.256 us    |                  tick_sched_do_timer();  4)               |                  tick_sched_handle() {  4)               |                    update_process_times() {  4)   0.323 us    |                      account_process_tick();  4)               |                      run_local_timers() {  4)   0.218 us    |                        hrtimer_run_queues();  4)   0.235 us    |                        raise_softirq();  4)   1.198 us    |                      }  4)               |                      rcu_check_callbacks() {只跟踪kfree函数的堆栈echo kfree > set_graph_function cat trace | head -n 20 # tracer: function_graph # # CPU  DURATION                  FUNCTION CALLS # |     |   |                     |   |   |   |  2)               |          inet_recvmsg() {  2)               |            udp_recvmsg() {  2)               |              __skb_recv_udp() {  2)   0.134 us    |                _raw_spin_lock_bh();  2)   0.135 us    |                __skb_try_recv_from_queue();  2)               |                _raw_spin_unlock_bh() {  2)   0.138 us    |                  __local_bh_enable_ip();  2)   0.407 us    |                }  2)   1.228 us    |              }  2)   1.499 us    |            }  2)   1.873 us    |          }  2)   3.759 us    |        } /* sock_recvmsg */  2)   0.138 us    |        fput();  2)   5.391 us    |      } /* __sys_recvfrom */  2)   5.652 us    |    } /* __x64_sys_recvfrom */  2)   6.147 us    |  } /* do_syscall_64 */附录:linux官方说明https://www.kernel.org/doc/Documentation/trace/ftrace.txt
  • [交流分享] Android studio3.4 Unable to resolve dependency问题解决方法
    化鲲为鹏,我有话说超级小白刚入门安卓开发,用的是ecplise,但是听了听一些老师的课程以及翻了些Android入门的书,突然觉得:这都什么年代了,还用ecplise学安卓,太落后了吧。于是我去下载了Android studio比较新的一个版本,3.4版本,并根据网上的教程,一点点安装好,结果没想到,我的噩梦就此来了。不管我以什么方式新建一个新的工程,一编译就出错,困扰了我两天Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support:appcompat-v7:28.0.0.新人小白啥也不懂,就只能到处去百度,去CSDN,结果网上的解决办法一大堆,终究是没有能解决我的问题。最后终于又找到了一篇帖子。https://www.jianshu.com/p/0d0ebb86dd17?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq步骤一:在AndroidStudio打开setting,可以从下图的地址中找到自己本地的.gradle文件的路径,然后在该路径下找到gradle.properties文件,并打开步骤二:在gradle.properties中把最后四句用#注释掉,然后重启AS 3.4,终于通过编译了最后,我的问题就终于解决了,哈哈,真开心!落款:云南大学
  • [管理与监控] 【华为云鲲鹏云服务最佳实践】【工具篇】第002期 git 1.8.3.1 安装配置指南
    1、简介      Git是目前世界上最先进的开源分布式版本控制系统(没有之一)。用于敏捷高效地处理任何或小或大的项目。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。      官方链接:https://git-scm.com/       类别:代码管理2、基础环境类别子项版本获取地址(方法)华为云虚拟机RC3(916)--OSCentOS7.6 Kernel4.14 软件包Git 1.8.3.1 3、依赖安装无4、组件编译安装从yum安装:清理 yum 缓存yum clean all重新生成yum缓存yum makecache更新yum 包yum -y update安装gityum -y install git5、系统配置无6、测试测试内容:git命令是否可正常使用测试结果:git命令正常7、参考信息官方文档:https://git-scm.com/doc 8、FAQ无
  • [交流分享] 【鲲鹏云移植】在CentOS 7.5构建git 2.20的RPM包
    CentOS 7.5中的git客户端版本是1.8,我们需要2.11版本以上,最新版本是2.20,我们选择构建2.20,过程如下:1、下载SRPM包:https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Server/source/tree/Packages/g/git-2.22.0-1.fc31.src.rpm2、安装srpm:rpm-ivh git-2.22.0-1.fc31.src.rpm3、安装构建依赖:yum install -y asciidoc xmlto emacs expat-devel libcurl-devel libsecret-devel pcre2-devel tcl tk cvs cvsps highlight httpd mod_dav_svn perl-CGI perl-JSON perl-IO-Tty perl-HTTP-Date perl-DBD-SQLite perl-JSON-PP perl-Test-Simple perl-Digest-MD5 perl-IO-Pty-Easy perl-MailTools subversion subversion-perl python2-devel rpm-build4、构建rpm:rpmbuild -D '%build_cflags -fPIC' -D '%build_ldflags -g' -bb rpmbuild/SPEC/git.spec,不定义2个宏,构建过程中会失败5、构建出来的rpm包在rpmbuild/RPMS目录下
  • [产品体验官] 华为云代码托管产品体验及评测-初次使用者角度对比codehub、github与gitee的差异
    初次使用者角度对比codehub、github与gitee代码托管的差异评价方法分别在codehub、github和gitee的主站上创建账户,浏览并操作,从初次使用者角度主观给出三者的差异,主要从代码托管服务的界面整体效果、初学者操作的难易程度、内容展示和提示信息的完整性、可操作性、文档的支持、语言的支持、团队或多用户协作、操作日志等方面对比判断。分项对比对比项codehubgithubgiteehome页home页是仓库页面,概览页面在Devcloud首页home页是仓库概览,简洁清爽home页是项目概览,模仿github但有些杂乱仓库页列表展示,有更新状态,可直接复制仓库URL列表展示,有更新状态列表展示,有更新状态,可添加标签code页代码列表页,不能自动显示README.md代码列表页+显示README.md代码列表页+显示README.md文件浏览页可浏览、可在线编辑、移除等,移除时需要输入文字确认可浏览、可在线编辑、移除等,移除时需要输入文字确认可浏览、可在线编辑、移除等,移除时不需要输入文字信息创建库优点是可以从模板仓库中选择新建新建和导入新建和导入(有疑问)导出支持git和https,也支持zip和tar包下载支持git和https,支持zip下载,支持github客户端支持git和https,支持zip下载导入可以从github和gitee的项目中导入可以从codehub的项目中导入在导入codehub和github项目时一直处于后台处理状态中分支分支页签中的新建分支流程很清晰在branch里输入分支后,才提示创建分支在branch里点击管理按钮创建分支提交在页面中保存即提交,三个平台相同三个平台相同三个平台相同合并与冲突与github、gitee基本相同,差别不大差别不大差别不大删除删除仓库时需要输入密码删除仓库时需要输入密码删除仓库时需要输入密码提示信息完整性提示的信息很适合国情,比如:在仓库代码页中提示git客户端配置、ssh密钥和https密码设置、推送和异常处理;在分支标签中则提示为什么需要分支、如何操作等等提示信息比较好,不过英文看起来有时候不习惯比较好,与github很像与项目关联通过“关联工作项”与项目任务关联在projects中创建与之对应的项目使用第三方的devops平台页面适应宽屏自适应,使用大屏显示器的时候很舒服固定宽度的页面固定宽度的页面文档支持有比较全的文档支持代码托管有比较全的文档支持book文档支持略显粗糙码云代码管理团队和多用户创建团队成员需要多次认证,相对麻烦从github用户里选择,较为容易提供了二维码和链接的邀请机制,相对比较人性化日志在“设置-安全管理-操作日志”中有非常清晰的日志记录,“仓库统计”和“仓库网络”里有图形显示的记录首页有activities,统计页面采用图形显示首页活动中主要记录创建、删除、推送、star、fork等操作;在统计页面也有较为详细的统计总体评价总体来讲,codehub、github差别不大,在界面展示、文字提示方面,codehub人性化更好,新建仓库时的“从模板仓库中选择”特别优秀,但代码的home页不自动显示README.md,个人觉得有些诧异,另外在团队和用户管理的过程中显得有些复杂,当然安全也提高了;在习惯性方面,可能github有先天优势,总觉得codehub一些功能是对照github的功能后又修改的;也许是gitee的服务器能力优先,在测试过程中gitee始终不能从codehub和github上导入项目,遗憾。具体哪个代码托管平台更加优秀,我觉得还是要看用户的使用习惯,或者用户以往的使用经验,不过对于初学者,简单学习后均能在codehub、github、gitee之间熟练切换,^ - ^。P.S. 偶然使用到了gitee,所以在评测中追加了对比项。BY 志鹏-zhaurora163com
  • [产品体验官] 华为云代码托管服务试用报告 by motozilog
    最近GitHub遭遇黑客攻击虽然我们公司没有使用GitHub,而是用gitee(码云),但对于此次事件后,对代码的安全提到非常高的程度。作为公司核心的资产之一---源代码,一直是公司最高等级的机密之一,正因为GitHub的事件,所以考虑在公司内搭建gitblit(相当于搭私有的github)。但是公司内搭建gitblit,会存在多地协作的问题,虽然可以通过搭建VPN等方式将多地连在一起,但是VPN的维护成本高(SSL VPN按用户收费,某厂家防火墙(不是华为)的IPSec VPN没有MAC端)。不管是GitHub还是gitee也不确保不出事,到底我们的代码应放在那间可信赖的代码呢?我们测试一下华为云代码托管的安全性删除,必须通过输入完整的仓库名称才能删除,这点好评。然而,项目的删除在那里呢?至少我一下子找不到。而根据相关文章的指导,GitHub中开启双因子认证,可以加强安全性。GitHub中开启双因子认证的介绍页和操作并且有相当贴心的操作指引可见github经过这次事件后,对安全十分重视。然而华为云暂时没有找到搜索也没有搜索到算了,先按流程先新建一个吧不过有个问题,是必须要归属项目SSH克隆,这些最常用功能,就驾轻就熟了。并且相信这块华为云也经过大量测试上传:同样,本次GitHub泄密的嫌疑SourceTree同样也是正常使用接下来是基本评测内容:1. 操作体验:在各种使用场景中操作是否流畅,是否出现逻辑上的中断?答:非常流畅,除了必须要归属项目外。界面设计也相当好看,比gitee好看多了。也没有出现逻辑中断2. 性能:页面性能是否感受比较舒服?答:非常舒服,在电信100M光纤是非常快3. 功能特性:对比体验官已用过的Code Review类的产品,是否更加方便易用,功能设置合理?答:只用过github和gitee,感觉华为云做得比这二者都要好(github的访问速度超慢,gitee界面难用爆)4. 满意度及推荐度:体验官是否愿意使用该产品作为自己企业研发过程中的Code Review工具?是否愿意推荐给其他朋友或同事?答:满意,但是安全性有待加强,就算没有双因子认证之类,至少出一份代码安全加固指引。有鉴于github的事件,己经将代码从gitee干掉,并且禁止使用sourceTree一类的工具必须只允许使用原始的git,短期内估计不会用任何公有仓库……但会推荐给其他朋友使用华为云托管,毕竟速度够快,界面漂亮。5. 在使用过程中的页面帮助与文档帮助,是否合理,准确,有参考价值?答:至少找不到在那里删除项目。也没有找到加固指南之类。另外,也没有看到价格表(难道是免费?免费也得写一下啊)5. 对于CodeHub产品的其他意见和建议。答:给一份华为云代码托管服务的安全加固指引,十分急需!特别是经过这次github事件后。
总条数:361 到第 页
上滑加载中