BUSCO结果画图

1、新建一个文件夹,将BUSCO的结果文件拷贝到的这个文件夹中,注意最好不要修改文件名称,如果修改,只改“short_summary.specific.eudicots_odb10.yourname.txt”中的”yourname”部分,且其中不要出现”.”,否则识别不出来,出现“No files matching the pattern short_summary.[generic|specific]* were found in result/” 这种错误。

mkdur -p plot/result
cd plot
cp ../JDB/short_summary.specific.eudicots_odb10.JDB.txt result/
cp ../SX/short_summary.specific.eudicots_odb10.SX.txt result/
cp ../RP_draf.asm_HiC/short_summary.specific.eudicots_odb10.RP_draf.asm_HiC.txt result/short_summary.specific.eudicots_odb10.RP_draf.txt
cp ../RP_draf.asm.hic.hap1/short_summary.specific.eudicots_odb10.RP_draf.asm.hic.hap1.txt result/short_summary.specific.eudicots_odb10.RP_hap1.txt
cp ../RP_draf.asm.hic.hap2/short_summary.specific.eudicots_odb10.RP_draf.asm.hic.hap2.txt result/short_summary.specific.eudicots_odb10.RP_hap2.txt

2、运行generate_plot.py 程序生成图,如果是用conda安装的busco,可以先激活busco,或者用其绝对路径“~/anaconda3/envs/busco/bin/generate_plot.py”

conda activate busco
generate_plot.py -wd result

博客正式回归

两个月前,博客出现了“此站点出现了致使错误”,删除了插件还是不行,由于一直在组装基因组,也没有心思来打理,所以一直访问不了,平时一些流程和方法都用Typora记在本地了,也懒得去管了。博客虽然已经开通十多年了,但文章并不多,粉丝也很少,没有赠到一份钱,银子却花了不少,就像养了一个不争气的儿子,一直在啃老,现在能保留纯粹是一种情怀。常常就想,做博客是为了什么,为了做笔记心得吧,记在本地不就可以了,为什么要分享,而且随着对生物信息的不断深入,很多技术方面的心得就是自己的心血,是自己踩了无数坑摸索出来的,作为自己的核心竞争力,我为什么要告诉别人。而且网上认识的有些人,花了大量的时间手把手教会了,却连一个谢谢都没有就Bye bye 了,反正茫茫人海中谁认识谁。不得不说,年纪越大越实际,也不得不实际。指望涨粉卖课?现在短视频横行的时代,有几个人去关心博客,自己又有多少时间能做这个。也许这也是导致我这个博客半死半活的原因吧。

但是有时常常又问自己为什么要搞生信,难道不是因为热爱吗,不是因为解决一个问题获得的快乐吗,真正的热爱不是在认清真相依然还热爱吗。把这咱热爱释放出去难道不就是对自己的一种释放和认可吗,渡人渡心渡已而已,因此重拾旧心,重启博客。

ChatGPT, Copy.ai 和Playground的区别

在OpenAI中有ChatGPT, Copy.ai 和Playground三种聊天工具,他们有哪些区别呢?

Copy.ai给出的结果:

Copy.ai是一种由人工智能驱动的文案助手,可帮助用户快速轻松地创建高质量的内容。它使用自然语言处理(NLP)生成根据用户需求定制的文案。Copy.ai旨在帮助用户创建既引人入胜又符合SEO标准的内容。

ChatGPT是一种由人工智能驱动的聊天机器人,以对话的方式进行交互。它经过训练,可以回答后续问题,承认自己的错误,挑战不正确的提问,并拒绝不适当的请求。

Playground是一个交互式环境,允许用户探索和实验OpenAI的机器学习模型。它为用户提供了一个直观的界面,使他们能够快速轻松地构建和测试自己的模型。

Playground给出的结果:
Copy.ai是一个基于AI的文案营销平台,提供内容建议引擎、AI驱动的写作助手和AI驱动的博客文章生成器。聊天机器人是一种模拟人类对话的计算机程序,通常通过响应文本或语音输入来实现。Playground是一个基于Web的交互式环境,用于以可视化和交互方式创建、共享和探索人工智能。

ChatGPT给出的结果:

Copy.ai、ChatGPT(简称GPT,即“Generative Pre-trained Transformer”)和Playground都是OpenAI提供的产品或服务,但它们的用途和功能不同。

Copy.ai是一款商用的基于人工智能的写作工具,可为各种用途生成文本,例如产品描述、社交媒体标题、博客文章等。它使用机器学习算法理解上下文并生成类似于人类的文本,可以节省用户大量的时间和精力。

另一方面,ChatGPT是一个语言模型,经过大量文本数据的预训练,可以进行微调,用于特定任务,例如问答、翻译和摘要。它是自然语言处理任务的强大工具,已用于各种应用,包括聊天机器人、内容生成和语言建模。

Playground是一个平台,允许开发人员使用OpenAI的语言模型进行实验并构建应用程序。它提供了一个用户友好的界面,以访问和交互OpenAI的模型,允许开发人员测试他们的想法并构建应用程序,而不必担心底层基础架构。

总之,Copy.ai是一款商用写作工具,ChatGPT是可以进行微调以用于特定任务的语言模型,Playground是一个供开发人员实验OpenAI语言模型并构建应用程序的平台。

CentOS安装python2.7虚拟环境

我的CentOS系统中安装有python2.7,python3.8, python3.9,python3.10多个python版本,现在一个软件安装过程需要使用python2.7,但又不想改变默认python版本,就想着安装一个python虚拟环境。

  1. 安装virtualenv
pip install virtualenv

2. 安装python2.7虚拟环境

 mkdir ~/soft/python2.7 && cd ~/soft/python2.7
virtualenv --python=/usr/bin/python2.7 python27

3. 运行python2.7虚拟环境

source ./python27/bin/activate

4. 退出python2.7虚拟环境

deactivate

perl Class::HPLOO 模块安装

由于安装DBD模块需要Class::HPLOO模块,但Class::HPLOO模块是在perl 5.028000版本写的,利用cpan或者cpanm均会出现问题,需要手动安装,在metacpan网站下载这个模块,手动安装,但还是会出现问题,“ Can’t use ‘defined(@array)’ ”,新版本的perl不支持”defined @”这个语法,去掉“defined ”就可以了。在“lib/Class/HPLOO/Base.pm”和“lib/Class/HPLOO.pm”这两文件中“defined @”的地方去掉”defined “,在“test.pl”这个文件中,将eval { require “test/classtest.pm” } ;” 替换成 “eval { require “./test/classtest.pm” } ;”,然后编译安装就可以了。

 perl Makefile.PL && make && make test && make install

参考资料:

perl模块Class::HPLOO v0.23安装问题

perl module Class::HPLOO v0.23 install issue

libc.so.6被误删的恢复

说出来都是泪,国庆都都这个事耽搁了,libc.so.6文件被我不小心删掉了,踩了所有能踩到的坑,终于恢复了。

事情的起因是由于需要做进化树,出来可能树比较大,所以下载了命令行版的MEGA11(mega-cc-11.0.13-1.x86_64),但在安装过程中显示需要glibc2.34, 我用yum最多只能更新到glibc2.28,而是下载了glibc2.34源代码进行编译安装,安装在了/usr/local文件夹中,但系统默认的还是/lib64/中的glibc2.28,于是想着像其它软件一样,先把现在使用的libc.so.6删掉,然后重新建立一个软连接到/usr/local/glicb2.34中的libc.so.6,但当我删除掉/lib64中的libc.so.6后,一切都变了,除了cd命令,其它命令都用不了,除了当前运行的用户,其它用户远程连接也进去不了,想着第二天去机房登录root再改过来不就行了,便第二天去机房发现root用户也登录不了,这时windows思维来了,重启可以解决80%的问题,果断重启了,这也使我失去了最后一次挽救的机会,重启之后,原来的连接也断了,没办法,只能到处找攻略,发现手贱的不只我一个,于是按照攻略开启了曲折的营救模式。

由于服务器安装的是CentOS8,但CentOS8官方已不支持了,官网上下不到系统,我想CentOS7应该也可以,于是就下载了一个CentOS7系统制作启动盘,这就开启了踩坑之旅。

首先出现的是问题是进入救援模式后出现:

No Caching mode page found
Assuming drive cache:write through

2. 修改U盘位置

出现此种情况之后,安装无法进行下去,只能重启,通过搜索发现是由于系统没有识别引导路径,在进入到启动盘界面时,用上下键选择救援模式,然后按”e”进入编辑模式,将hd:后的内容换成U盘所在的盘符位置,如:

vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOSx207x20x86_64 rescue quiet
###修改为
vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdc4:/ rescue quiet
###如果不知道U盘的位置,可以退出后进入shell模式,然后使用:
ls /dev/sd*
##或者使用查看
fdisk -l

这一步没有问题后按”ctrl+x”运行,看见有选择界面后选择“ 1 continue”,可以运行了,但一直是出现一排排的等于号,我以为可能是由于服务器中文件比较多,加载时间比较长,但等我第二天过来一看还是如此,第三天也一样,我看到别人的只有两排等于号,第四天终于受不了,给终止了,重新找原因。

多年的经验告诉我,百娘在关键时候是不行的,解决问题的最佳途径是要找官方的说明文档,中文中论坛中的解释很多都是很片面的,而是找到了官方的关于救援模式的说明文件,里面详细说明了救援模式的来龙去脉,而且告诉了具体的操作方法,发现救援模式是用Anaconda做的一个小的linux环境,使用Alt+Tab可以切换到命令模式,可以运行

systemctl --no-wall rescue

重新进入救援模式,发现还是出现原来的情况,但是如果选择2 “Read-only mount”的话可以挂载文件,这下心里就有底了,实在弄不了可以选择这个把数据拷贝出来。

3. 更换系统盘

后来想了一下,会不会是由于我的系统是CentOS8,而我使用的救援模式所采用的系统是CentOS7,导致挂载失败,于是重新找了个CentOS8系统,由于官方不支持CentOS8了,很多镜像也去掉这个版本了,幸好阿里云镜像中还有,使用UltraISO做了个新的启动盘,由于U盘比较旧了,插在服务器上接触不良,老是识别不了,没办法重新找了一个好一点的金士顿的盘才做好,但是每次开机时都是直接进入了系统,没有先启动U盘,一开始时我不是已经设置了U盘先启动的吗,使我进一步怀疑是不是U盘有问题,插到其它的电脑试了都没有问题后,重新打开BIOS设置看下是不是U盘先启动,但发现启动顺序恢复到了默认设置,按F2重新设置启动顺序,终于顺利进入了U盘的救援模式,按照上面的操作按”e”进入编辑模式,将hd:后的内容换成U盘所在的盘符位置,进入到系统救援模式,按”1) Continue”,但又遇到了新的问题,就是找不到可用的 linux 系统,明明刚才用CentOS7启动盘的时候可以找到系统吗。而是又搜索了这个错误信息,终于找到了解决的办法。

4. 激活引导分区

出现的错误信息如下:

you don't have any Linux partitions,
Press return to get a shell.
The system will reboot automatically when you exit from the shell.

参考这篇文章介绍的方法终于解决了。运行”fdisk -l”查看分区情况,看到/dev/sda1 后面加了个“*”号,这个可能就是引导分区了,运行”lvdisplay”查看逻辑卷,找到需要激活的逻辑卷,使用vgchange命令进行激活,但当我使用mount挂载时还是找不到,运行”systemctl –no-wall rescue”重新进入救援模式,按”1) Continue”没有出现找不到linux系统,激活的引导程序所在的系统找到了,不到1分钟swap中的内容就挂载上去,因为不需要修改/root和/home中的内容,所以选择不挂载这两个盘。这一步需要运行的命令如下:

###查看磁盘分区情况
fdisk -l
###查看逻辑卷
lvdisplay
###激活逻辑卷
vgchange -ay /dev/cl   ##cl是上一步需要激活的"VG name"
###重新进入救援模式
systemctl --no-wall rescue

5. 恢复libc.so.6文件

与CentOS7不同的是CentOS8默认挂载的文件夹是”/mnt/sysroot/”,不是”/mnt/sysimage”, “chroot /mnt/sysroot”进入到服务器的系统目录(注意不是启动盘中的系统目录),运行”ls‘可以看到系统目录中的文件,进入libc.so.6文件原来的目录”lib64″,拷贝一个libc.so.6文件到这个文件夹中就可以了。

###进入系统目录
chroot /mnt/sysroot
###拷贝文件
cp lib64/libc-2.28.so /lib/libc.so.6     ##因为原来libc.so.6只是libc-2.28.so的软连接,所以直接复制原文件过来就可以了
###重启系统
reboot 

由于系统软件有更改,重启时需要进行安全校验,可能进入系统会花费较长时间,可以更改启动文件来进行设置不检验,启动后再更过来,但是不建议这么做,因为服务器一般启动了很久才会关,有可能有搞忘了改,反正几天时间都花了,多等几分钟也没关系。

参考资料:

https://docs.centos.org/en-US/centos/install-guide/Rescue_Mode/         ###官方资料
https://www.thegeekdiary.com/how-to-boot-into-rescue-mode-or-emergency-mode-through-systemd-in-centos-rhel-7-and-8/                     ###多种进入救援模式的方法
https://www.tecmint.com/recover-or-rescue-corrupted-grub-boot-loader-in-centos-7/   ###CentOS7的救援模式
https://zhuanlan.zhihu.com/p/398478111   ###国内比较详细的介绍救援模式的方法
https://www.golinuxcloud.com/e2fsck-repair-filesystem-in-rescue-mode-ext4/ ###找不到linux系统搜到的解决方法
https://blog.csdn.net/leenhem/article/details/118111370   ###救援模式挂载lvm出错的解决方法

CentOS8安装docker

由于有一些软件需要运行在docker上,打算在CentOS8上安装试一下。一开始是按照菜鸟教程上的操作(curl -fsSL https://get.docker.com | bash -s docker –mirror Aliyun)来进行的,但出现下面错误:

Error:
 Problem 1: problem with installed package podman-3.2.3-0.10.module_el8.4.0+886+c9a8d9ad.x86_64
  - package podman-3.2.3-0.10.module_el8.4.0+886+c9a8d9ad.x86_64 requires runc >= 1.0.0-57, but none of the providers can be installed
  - package podman-3.3.1-9.module_el8.5.0+988+b1f0b741.x86_64 requires runc >= 1.0.0-57, but none of the providers can be installed
  - package containerd.io-1.6.8-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-74.rc95.module_el8.4.0+886+c9a8d9ad.x86_64
  - package containerd.io-1.6.8-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-74.rc95.module_el8.4.0+886+c9a8d9ad.x86_64
  - package containerd.io-1.6.8-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.8-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - cannot install the best candidate for the job
  - package runc-1.0.0-66.rc10.module_el8.5.0+1004+c00a74f5.x86_64 is filtered out by modular filtering
  - package runc-1.0.0-72.rc92.module_el8.5.0+1006+8d0e68a2.x86_64 is filtered out by modular filtering
 Problem 2: problem with installed package buildah-1.21.4-1.module_el8.4.0+886+c9a8d9ad.x86_64

这是因为安装了podman就不能再安装docker了,需要先卸载podman:

yum install -y -q yum-utils
+ sh -c 'yum install -y -q docker-ce docker-ce-cli containerd.io docker-scan-plugin docker-compose-plugin docker-ce-rootless-extras'
Error:
 Problem 1: problem with installed package containers-common-1:1.3.1-5.module_el8.4.0+886+c9a8d9ad.x86_64
  - package containers-common-1:1.3.1-5.module_el8.4.0+886+c9a8d9ad.x86_64 requires runc, but none of the providers can be installed
  - package containers-common-2:1-2.module_el8.5.0+890+6b136101.noarch requires runc, but none of the providers can be installed
  - package containerd.io-1.6.8-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-74.rc95.module_el8.4.0+886+c9a8d9ad.x86_64
  - package containerd.io-1.6.8-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-74.rc95.module_el8.4.0+886+c9a8d9ad.x86_64
  - package containerd.io-1.6.8-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.8-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - cannot install the best candidate for the job
  - package runc-1.0.0-56.rc5.dev.git2abd837.module_el8.3.0+569+1bada2e4.x86_64 is filtered out by modular filtering
  - package runc-1.0.0-66.rc10.module_el8.5.0+1004+c00a74f5.x86_64 is filtered out by modular filtering
  - package runc-1.0.0-72.rc92.module_el8.5.0+1006+8d0e68a2.x86_64 is filtered out by modular filtering
 Problem 2: problem with installed package buildah-1.21.4-1.module_el8.4.0+886+c9a8d9ad.x86_64

这是由于安装的docker版本与系统不匹配的原因,可以手动安装与之对应的版本,先找到相应系统所在的目录,如我的为CentOS 8,对应的目录为“https://download.docker.com/linux/centos/8/x86_64/stable/Packages/”,然后在里面找到需要安装的包,应下面的命令安装就可以了。

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.6.8-3.1.el8.x86_64.rpm --allowerasing
yum install https://download.docker.com/linux/centos/8/x86_64/stable/Packages/docker-ce-20.10.9-3.el8.x86_64.rpm --allowerasing
yum install https://download.docker.com/linux/centos/8/x86_64/stable/Packages/docker-compose-plugin-2.6.0-3.el8.x86_64.rpm --allowerasing

最后启动docker服务,进行测试,添加用户:

systemctl start docker    ##start docker service
docker run hello-world    ###test docker
sudo gpasswd -a $USER docker  ###Add the user
newgrp docke              ###update the user group

Augustus安装

Augustus作为基因预测必备软件,其源代码安装过程是迄今为止碰到的最难安装的软件,没有之一,现在终于勉强安好了(花了三天)。

  1. 下载最新的augustus版本并解压
wget -c https://github.com/Gaius-Augustus/Augustus/releases/download/v3.4.0/augustus-3.4.0.tar.gz
tar xzvf augustus-3.4.0.tar.gz
cd augustus-3.4.0/

2. 按照README.md的说明安装依赖包,如果是centos系统,安装对应的软件

## Install dependencies

The following dependencies are required for AUGUSTUS:
- For gzip compressed input:
 (set ZIPINPUT = false in [common.mk](common.mk) if this feature is not required or the required libraries are not available)
  - libboost-iostreams-dev
  - zlib1g-dev
- For [comparative AUGUSTUS](docs/README-cgp.md) (multi-species, CGP):
  (set COMPGENEPRED = false in [common.mk](common.mk) if the libraries required by the CGP version are not available. Augustus can then only be run in single-genome mode, which is what most users need.)
  - libgsl-dev
  - libboost-all-dev
  - libsuitesparse-dev
  - liblpsolve55-dev
  - libsqlite3-dev (add SQLITE = false to [common.mk](common.mk) if this feature is not required or the required library is not available)
  - libmysql++-dev (add MYSQL = false to [common.mk](common.mk) if this feature is not required or the required library is not available)
- For compiling bam2hints and filterBam:
  - libbamtools-dev
- For compiling utrrnaseq:
  - libboost-all-dev (version must be >Boost_1_49_0)
- For compiling bam2wig:
  - Follow [these instructions](./auxprogs/bam2wig/README.md). Note that it shouldn't be a problem to compile AUGUSTUS without bam2wig. In practice, you can simply use `bamToWig.py` to accomplish the same task.
- For compiling homgenemapping
  (set BOOST = FALSE in [./auxprogs/homgenemapping/src/Makefile](./auxprogs/homgenemapping/src/Makefile) if the option --printHomologs is not required or the required libraries are not available)
  - libboost-all-dev

3. 由于后面make时一直显示错误“ /usr/bin/ld: cannot find -lmysqlclient ”,尽管mysql和mysql++已经安装好,只能选择“add MYSQL = false to common.mk”了,然后在common.mk文件后面增加suitesparse和htslib库文件的地址,如果不知道库文件的地址在哪里,可以用find或者locate 命令查找suitesparse和htslib。

MYSQL = false
INCLUDE_PATH_SUITESPARSE := -I/usr/include/suitesparse
LIBRARY_PATH_SUITESPARSE := -L/usr/lib64 -Wl,-rpath,/usr/lib64

INCLUDE_PATH_HTSLIB   := -I/usr/local/include/htslib
LIBRARY_PATH_HTSLIB   := -L/usr/local/lib -Wl,-rpath,/usr/local/lib

4. 如果是Centos系统bamtools需要手动安装,其中还需要先安装jsoncpp,bamtools可以安装在当前用户目录,如我的是安装在“~/local/bamtools”这个目录,记住这个路径,后面还要用到。

wget https://github.com/pezmaster31/bamtools/archive/refs/tags/v2.5.2.tar.gz
tar xzvf bamtools-2.5.2.tar.gz
cd bamtools-2.5.2/
yum install jsoncpp-devel.x86_64   #########BamTools also makes use of JsonCpp for certain serialization tasks.
mkdir build
cd build/
mkdir ~/local/bamtools
cmake -DCMAKE_INSTALL_PREFIX=~/local/bamtools ..
make && make install

修改augustus-3.4.0/auxprogs/bam2hints和
augustus-3.4.0/ auxprogs/filterBam/src下的Makefile文件,指明bamtools库文件所在位置。

Now bamtools should have been correctly installed. Next, we need to modify the Makefiles of bam2hints and filterBam to adapt them with our manually installed bamtools.

First, go to the “augustus-3.4.0/auxprogs/bam2hints” directory and make the following changes for the Makefile:

Add:
   BAMTOOLS = ~/local/bamtools

Replace:
   INCLUDES = /usr/include/bamtools
By:
   INCLUDES = $(BAMTOOLS)/include/bamtools

Replace:
   LIBS = -lbamtools -lz
By:
   LIBS = $(BAMTOOLS)/lib64/libbamtools.a -lz

Then, go to the “augustus-3.4.0/auxprogs/filterBam/src” directory and make the following changes for the Makefile:

Replace:
BAMTOOLS = /usr/include/bamtools
By:
BAMTOOLS = ~/local/bamtools

Replace:
INCLUDES = -I$(BAMTOOLS) -Iheaders -I./bamtools
By:
INCLUDES = -I$(BAMTOOLS)/include/bamtools -Iheaders -I./bamtools

Replace:
LIBS = -lbamtools -lz
By:
LIBS = $(BAMTOOLS)/lib64/libbamtools.a -lz

Now, we are finally ready to compile Augustus. Get back to the “augustus-3.4.0” directory and type “make BAMTOOLS=~/local/bamtools”, viola!
make BAMTOOLS=~/local/bamtools

如果出现“bam2wig.c:12:10: fatal error: bgzf.h: No such file or directory” 和 “bam2wig.c:18:17: fatal error: sam.h: No such file or directory”, 使用find或者locate命令查找“bgzf.h” 和 “sam.h” 的位置,然后在 “auxprogs/bam2wig/bam2wig.c”文件中修改这两个文件的位置, 例如:

#include "/usr/local/include/htslib/bgzf.h"
#include "/usr/local/include/htslib/sam.h"

重新运行:

make BAMTOOLS=~/local/bamtools

如果没有再产生错误,恭喜,已经成功安装好了,如果方便后面的使用,可以将需要用到的代码加入环境变量。

export PATH=$PATH:~/soft/augustus-3.4.0/bin:~/soft/augustus-3.4.0/scripts

试着运行一下,查找有没有合适的参考物种:

augustus --species=help

如果有其它错误,可以参考这篇博文

mysql++安装

MySQL++是基于 C++的 对MySQL和MariaDB的再次封装, 它建立在与标准c++库相同的原则之上,使处理数据库如同处理std容器(STL)一样简单。MySQL++还提供了一些工具,可以让您在自己的代码中避免重复的SQL,为这些常见任务提供了本地c++接口。 因此首先需要先安装mysql.

yum install mysql-devel

如果没有root权限,也可以下载源代码包安装。下载mysql++并编译安装:

wget https://tangentsoft.com/mysqlpp/releases/mysql++-3.3.0.tar.gz
 tar xzvf mysql++-3.3.0.tar.gz
 cd mysql++-3.3.0/
 ./configure --prefix=/home/usr/local/installdir --with-mysql=/usr/bin --with-mysql-lib=/usr/lib64/mysql --with-mysql-include=/usr/include/mysql 

make
make install

如果没有管理员权限的话可以安装在用户自己的目录下,通过设置“–prefix=/home/usr/local/installdir”目录,如果配置时出现”
configure: error: The MySQL library cannot be found. “找不到MySQL库,但是mysql已经安装了,那是因为配置程序在固定位置找不到所需要库,可以手动指定mysql库所在位置,如果是用yum安装的可以使用“–with-mysql-lib=/usr/lib64/mysql –with-mysql-include=/usr/include/mysql”指定mysql及库所有的位置,如果不是yum安装的,自己也不知道安装在哪里,可以使用“whereis mysql”查找mysql安装的位置,然后更改为其位置。

由于默认多线程是不开启的,如果需要开启,配置时添加–enable-thread-check这个参数,但是会显示”Didn’t find mysqlclient_r library in “这个错误,找不半天还是没有解决这个错误,最后还是去掉这个参数,舍弃多线程。

如果其它程序需要调用mysql++,但却显示找不到mysql++库,可以运行下面程序:

echo "/usr/local/lib64" > /etc/ld.so.conf
ldconfig
ln -s /usr/local/lib/libmysqlpp.so /usr/lib/libmysqlpp.so 

如果是安装在用户自己的目录下,把“/usr/local/lib64″更改成安装目录的库文件夹,libmysqlpp.so的位置也做相应的修改。

Error loading shared libraries libcrypto.so.1.1

openssh文件损坏,导致连不上网,也运行不了远程连接。连网时出现“Error loading shared libraries libcrypto.so.1.1”,“error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory”,因为OpenSSL库默认存储在/usr/lib64下,该目录也将包含在搜索路径中。如果OpenSSL是从源代码编译的,那么共享库将安装在/usr/local/lib64下(如果在配置OpenSSL时未使用前缀选项)。这意味着,新安装的库不在搜索路径中,这就是此错误的原因。所以我们需要做的就是,使用下面的命令在搜索路径中包含OpenSSL库。

echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.conf
ldconfig