工资群发助手在哪里(工资群发助手收费的吗)
1729
2022-05-30
一、安装 Porting Advisor Web 端
1. 下载 Porting Advisor
cd /home wget https://mirrors.huaweicloud.com/kunpeng/archive/Porting_Dependency/Packages/Porting-advisor_2.2.T4_Kunpeng-linux.tar.gz
2. 解压 Porting Advisor
tar -zxvf Porting-advisor_2.2.T4_Kunpeng-linux.tar.gz
3. 安装 Porting Advisor Web 端
cd Porting-advisor_2.2.T4_Kunpeng-linux/ ./install web
注意:在安装前需要关闭 SELinux
setenforce 0
4. 安装 Porting Advisor Web 端出现的问题
问题分析:配置的 yum 源中没有 rpmdevtools 的工具包
步骤一:找到华为开源镜像站 ( https://mirrors.huaweicloud.com/home ) 中对应的 openEuler 的 arm 版本 yum 源的配置指导。
步骤二:执行如下步骤。
1、执行如下命令, 下载新的 openEulerOS.repo 到 /etc/yum.repos.d/ 目录下。
wget -O /etc/yum.repos.d/openEulerOS.repo https://repo.huaweicloud.com/repository/conf/openeuler_aarch64.repo
2、清除原有 yum 缓存。
yum clean all
3、生成新的缓存。
yum makecache
第三步:重新编译安装
./install web
步骤一:执行 yum install xxx 命令时,提示错误信息
ImportError: /lib64/libcurl.so.4: symbol SSLv3_client_method version OPENSSL_1_1_0 not defined in file libssl.so.1.1 with link time reference
从提示信息可以看出 SSLv3_client_method 应该是 Openssl 1.1.0 版本动态库中的一个函数。
1、执行 ldd /lib64/libcurl.so.4 查看其对应的 Openssl 动态库路径:
ldd/lib64/libcurl.so.4
2、确认 ssl 动态库路径后,执行 nm 命令确认动态库中是否定义了 SSLv3_client_method :
nm /lib64/libssl.so.1.1 | grep SSLv3_client_method
果然没有,查找openssl源码,该函数是存在的,只是用宏隔离了。
vi openssl-1.1.1a/ssl/method.c
# ifndef OPENSSL_NO_SSL3_METHOD ... const SSL_METHOD *SSLv3_client_method(void) { return sslv3_client_method(); } # endif
步骤二:解决问题
1、编译 openssl 增加 enable-ssl3 与 enable-ssl3-method 选项:
cd openssl-1.1.1a ./config shared enable-ssl3 enable-ssl3-method make make install
2、生成的动态库默认路径为 /usr/local/lib,确认新的动态库中已经有 SSLv3_client_method :
nm /usr/local/lib/libssl.so.1.1 | grep SSLv3_client_method
3、替换 /lib64 下的 openssl 动态库:
rm -rf /lib64/libssl #注意删除动态库前确认是否有链接该动态库的应用程序正在运行,避免出现应用或系统异常。 cp /usr/local/lib/libssl* /lib64/
步骤三:验证
重新执行 yum install xxx ,问题解决。
二、扫描 sigar-lib-1.6.4.jar
我们使用 Porting Advisor 迁移扫描工具扫描 sigar-lib-1.6.4.jar 包。
三、编译打包 sigar-lib-1.6.4.jar
1. 安装依赖工具
yum install -y wget gcc gcc-c++ make cmake libtool autoconf automake ant unzip java-1.8.0-openjdk java-1.8.0-openjdk-devel maven
(1) 下载解压软件包,本文档将文件解压到 /root/soft/ 目录,请根据实际需要选择解压目录。
cd /root/soft/ wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/OpenJDK8U-jdk_aarch64_linux_hotspot_jdk8u242-b08.tar.gz tar -zxvf OpenJDK8U-jdk_aarch64_linux_hotspot_jdk8u242-b08.tar.gz
(2) 配置环境变量。
vi /etc/profile #文档末尾添加如下内容 export JAVA_HOME=/root/soft/jdk8u242-b08 export PATH=$JAVA_HOME/bin:$PATH
(3) 生效环境变量
source /etc/profile
(4) 检查版本信息
java -version
(1) 下载 & 解压软件包
#方式一: cd /root/soft/ wget https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz tar -zxvf apache-maven-3.6.3-bin.tar.gz #方式二:(建议) cd /root/soft/ wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/apache-maven-3.6.3-bin.tar.gz tar -zxvf apache-maven-3.6.3-bin.tar.gz
(2) 替换 Maven 仓-在国内访问 Maven 仓库,连接速度太慢,可以替换为国内仓库
wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/netty-praxis/settings.xml rm -rf /root/soft/apache-maven-3.6.3/conf/settings.xml cp settings.xml /root/soft/apache-maven-3.6.3/conf/
(3) 配置环境变量。
vi /etc/profile #文档末尾添加如下内容 export MAVEN_HOME=/root/soft/apache-maven-3.6.3 export PATH=$MAVEN_HOME/bin:$PATH
(4) 生效环境变量
source /etc/profile
(5) 检查版本信息
mvn -v
(1) 下载 & 解压软件包
cd /root/soft/ wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.6-bin.tar.gz tar -zxvf apache-ant-1.10.6-bin.tar.gz
(2) 配置环境变量。
vi /etc/profile #文档末尾添加如下内容 export ANT_HOME=/root/soft/apache-ant-1.10.6 export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
(3) 生效环境变量
source /etc/profile
(4) 检查版本信息
ant -version
2. 编译
cd /root/soft/ wget https://github.com/hyperic/sigar/archive/sigar-1.6.4.zip unzip sigar-1.6.4.zip
cd /root/soft/sigar-sigar-1.6.4/bindings/java ant
[cc]gcc: error:unrecongnized command line option '-m64'
解决方法:将鲲鹏平台对应的编译选项设置为 -mabi=lp64 。
#查询m64出现的地方 grep -r "m64" ./ #进入查询出来的文件 vi hyperic_jni/src/org/hyperic/jni/ArchNameTask.java #将文件原 -m64 改为 -mabi=lp64
/root/dev/sigar-sigar-1.6.4/src/os/linux/linux_sigar.c:1148:22: 错误:called object ‘major’ is not a function or function pointer
解决方法:
a. 在系统头文件路径下搜索关键字 major 和 minor ,查看头文件名。
grep -r "major(" /usr/include/ grep -r "minor(" /usr/include/
b. 将文件 sigar-sigar-1.6.4/src/os/linux/linux_sigar.c 中,引入头文件 sys/sysmacros.h 。
vi /root/soft/sigar-sigar-1.6.4/src/os/linux/linux_sigar.c
/*添加头文件*/ #include
Error:致命错误
解决方法:
a. 下载 rpc 源码。
cd /root/soft/ wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz
b. 解压缩 rpc 源码包。
tar -zxvf rpcsvc-proto-1.4.tar.gz
c. 进入到源码目录。
cd rpcsvc-proto-1.4
d. 执行项目构建。
./configure
e. 执行项目编译。
make
f. 完成项目安装。
make install
g. 将rpc复制到指定目录。
cp /usr/include/gssrpc/rpc.h /usr/include/rpc/
3. 构建
cd /root/soft/ #下载 wget https://github.com/gridkit/sigar-lib/archive/sigar-lib-1.6.4.tar.gz #解压 tar -zxvf sigar-lib-1.6.4.tar.gz
cd /root/soft/sigar-sigar-1.6.4/bindings/java/sigar-bin/lib/ cp libsigar-aarch64-linux.so /root/soft/sigar-lib-sigar-lib-1.6.4/src/main/resources/sigar-1.6.4 cd /root/soft/sigar-lib-sigar-lib-1.6.4/src/main/resources/sigar-1.6.4/ rm -rf libsigar-x86-linux.so
在有pom的目录下执行:
cd /root/soft/sigar-lib-sigar-lib-1.6.4 mvn clean package mvn package
【ERROR】Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
解决方法一:修改配置文件 pom.xml
vim pom.xml
在profiles标签下,添加如下内容:
解决方法二:为指令添加参数跳过检测
在使用mvn package进行编译、打包时,Maven会执行src/test/java中的JUnit测试用例,有时为了跳过测试,会使用参数-DskipTests和-Dmaven.test.skip=true,这两个参数的主要区别是:
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
#示例 mvn clean package -DskipTests mvn package -DskipTests
-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。
#示例 mvn clean package -Dmaven.test.skip=true mvn package -Dmaven.test.skip=true
四、扫描新构建的 sigar-lib-1.6.4.jar
将新构建的包拷贝至扫描路径下:
cd /root/soft/sigar-lib-sigar-lib-1.6.4/target/ cp sigar-lib-1.6.4.jar /opt/portadv/portadmin/package/
修改文件目录权限:
chmod -R 777 /opt/portadv/portadmin/package/
软件迁移再次扫描,结果显示:
我们发现仅解决了 libsigar-x86-linux.so 这个 so 库的问题,其他的 so 库依旧存在。这是因为 java 应用通过 JNI 访问动态库时,会根据当前服务器的架构来判断调用哪个库。比如,鲲鹏是 aarch64 架构,它就会去找 aarch64 的 so 。如果运行在 x86 服务器上,就会找 x86 命名的对应的 so 。即在源码中删除以上检测对应的 so 库后进行打包,对于这个 Jar 包的正常使用不构成任何问题。
注意,在针对这些 so 库进行移动时,需要将其移出该源码包,而不是仅将后缀名改为 ".bak" 就可以,如下图所示:
最终结果如下:
参考资料:
[1] 【编译指导】sigar-lib环境搭建-OpenEuler 20.03
https://bbs.huaweicloud.com/forum/thread-130359-1-1.html
[2] 【编译指导】sigar-lib-1.6.4.jar编译指导
https://bbs.huaweicloud.com/forum/thread-125803-1-1.html
[3] yum install提示缺少openssl函数解决方案
https://bbs.huaweicloud.com/forum/thread-100729-1-1.html
[4] 鲲鹏代码迁移工具 > 最佳实践 > 实践7:MySQL源码的内存一致性实践 > 源码迁移
https://support.huaweicloud.com/bestpractice-pa-kunpengdevps/memoryconsistency_21_0003.html
JAR yum 代码迁移 鲲鹏
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。