今天在进行bwa -mem比对时,出现以下情况:
samtools: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory
通过细读报错,发现可能是libcrypto出现了问题
解决步骤:
# 找到Samtools的安装位置
which samtools #我的位置于~/miniconda3/bin/samtools
进入lib,发现并查看是否有libcrypto.so.1.1,并建立软连接:
# 进入lib
cd /root/anaconda3/lib
ls
# 建立软连接
ln -s libcrypto.so.1.1 libcrypto.so.1.0.0
问题成功解决!
补充知识:
Linux 下的链接
作为的一个 Linux 的使用者,Linux 系统下提供 ln 指令来进行文件链接,我们一定见过类似如下指令:
ln -s bar.txt foo.txt
此时如果 ls 查看当前目录下的文件的话,会发现:
ll
total 1.2M
-rw-rw-r--. 1 Nova Nova 0 Aug 11 14:43 bar.txt
lrwxrwxrwx. 1 Nova Nova 7 Aug 11 14:43 foo.txt -> bar.txt
那么这个foo.txt
究竟是什么呢?
这个就是一个文件链接,文件链接主要分为硬链接和软链接,通过查看ln --help
,可以看到一些重要的内容:
Desktop ln --help
Usage: ln [OPTION]... [-T] TARGET LINK_NAME
Create hard links by default, symbolic links with --symbolic.
Mandatory arguments to long options are mandatory for short options too.
-s, --symbolic make symbolic links instead of hard links
ln
指令默认创建的是硬链接,如果加入了-s
参数,则会生成一个软链接。
硬链接:
在 Linux 中,多个文件名指向同一索引节点是存在的,所以硬连接指通过索引节点来进行的连接,即每一个硬链接都是一个指向对应区域的文件。
我们这里创建一个文件foo.txt
然后建立一个它的硬链接看看:
vim foo.txt
➜ cat foo.txt
LeetCode
➜ ln foo.txt bar.txt # 这一步是用来创建硬链接
➜ ls -li
total 6552
6817859 -rw-rw-r--. 2 Nova Nova 9 Sep 19 15:59 bar.txt
6817859 -rw-rw-r--. 2 Nova Nova 9 Sep 19 15:59 foo.txt
前面的6817859
是文件的 inode,可以简单把它想成 C 语言中的指针,它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失,这里我们会发现,这两个文件拥有相同的 inode,通过查看文件内容也会发现是同一个文件:
硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止“误删”的功能,由于对应该目录的索引节点有一个以上的连接,假设我们删除了原始的foo.txt
文件:
软连接:
软链接又叫符号链接,这个文件包含了另一个文件的路径名,例如在上图中,foo.txt
就是 bar.txt
的软连接,bar.txt
是实际的文件,foo.txt
包含的是对于 bar.txt
的 inode 的记录。
软连接可以是任意文件或目录,可以链接不同文件系统的文件,在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身,这一点类似于 Windows 操作系统下的快捷方式。