1 相关知识
1.1 文件属性
文件属性 rwx 中 r 表示 read (数字表示为 4)、w 表示 write (数字表示为 2)、x 表示执行 (数字表示为 1)。三个为一组,连续出现三次。第一个表示文件拥有者拥有的权限,第二个表示拥有者所在的用户组拥有的权限,第三个表示其他人拥有的权限。
如上图,开头的-表示文件,d表示文件夹,上面只有fold是文件夹,其他全部为文件。上图的example.txt的属性为'-rw-rw-r--',开头‘-’表是文件,rw-表示文件拥有者拥有读(r)写(w)没有执行(-)权限,接下来三个字符表示拥有者所在的用户组拥有读写及不可执行权限(rw-),最后三个表示其他人只有读的权限(r--)。
chmod 可以修改文件或文件夹的属性。
创建example.txt文件,用于修改权限。
echo 'echo "shell script"' >example.txt
cat example.txt
chmod 700 example.txt #赋予文件拥有者读写可执行权限(7=4(r)+2(w)+1(x),0=0+0+0)
ls -l example.txt
chmod 761 example.txt #赋予文件拥有者读写可执行权限,同组者读写权限,其他人可执行权限
ls -l example.txt
chmod a+x file: 表示给文件增加所有人可执行权限。
chmod u+x file: 表示给文件增加所有者 (u,user,) 可执行权限 (+x)
chmod g+x, chmod o+X: 表示给文件增加组内人或其它人可执行权限
chmod 755 file: 表示拥有者有可读写执行权限,其它人有可读执行权限。(7=4+2+1; 5=4+1)
具体使用 man chmod 查看其它参数使用。
1.2 环境变量
如果一个文件有了可执行权限,是不是就可以执行了,我们来检测下。
文件并不能执行,只有当我输入./后才可执行,./表示当前目录。这就涉及到环境变量了。
通俗的讲,环境变量就是告诉电脑 (实际是操作系统) 几个目录。这几个目录下存储又可执
行文件,如前面显示的/usr/bin 目录,大部分的系统命令都在这个目录下。
当我们输入命令 mkdir 时,系统就会在环境变量所代表的几个目录从前都后去查找,哪个里面有 mkdir 文件,然后去执行 mkdir 命令。
系统中环境变量的名字是 PATH,其内容可通过下面的命令显示 (根据操作系统不同和配置不同,略有差别,但格式是统一的,: 分割的一堆路径):
所以如果我们想让自己的命令能被系统找到,就需要把命令所在的目录加到环境变量里面。
加到环境变量的路径必须是全路径,全路径指以/开头或已 ~ 开头的路径 (~ 开头的路径只能个人用户有效)。
export PATH=$PATH:`pwd`/ #使用export添加环境变量,PATH是shell变量,第一次PATH是定义,不用$,第二次$PATH是以前的变量,引用要用$,pwd查看当前目录
example.txt
所以在以后安装了新的软件,或者写了新的脚本后,都把软件的可执行程序和可执行的脚本所在的目录,加到环境变量里面就可以了。
但是,在命令行中执行 export,对环境变量所做的修改,只对当前终端有效,退出后就无效了。为了使得这一操作长期有效,我们需要把这句话写入一个文件中,即.bashrc中。
2 安装软件的方式
2.1 系统包管理器安装
软件安装最方便的、一般也不容易出问题的是利用系统自带的包管理工具,可以解决大部分的依赖问题。
打开Ubuntu软件,搜索,找到要安装的软件,点击安装,授权即可。但很多软件找不到,而且如果系统是旧版的话,安装的软件也是旧版的。
2.2 下载二进制文件(安装bowtie2)
解决这些问题,就需要自己去软件官网查找最新的分法包,又有两种可能,一种是分法包直接就是编译好的软件,下载下来设置下可执行属性并放入环境变量就可以运行了,如 bowtie 这样的工具。
在bowtie2官网下载
unzip bowtie2-2.3.5-source.zip #解压zip文件
echo 'export PATH=$PATH:'`pwd`/ >>~/.bashrc 添加到环境变量
source ~/.bashrc
2.3 源码安装samtools(参考生信宝典)
源码一般三步configure, make, make install。
• configure 是检查系统的库文件、类文件、依赖软件是否存在以及它们的版本是否满足需求,并根据实际检测结果生成 Makefile 的工具。
• make 则是具体的编译过程。编译的语句都写在了 Makefile 中。make 默认编译 Makefile 中出现的第一个 target,也可以指定 target 编译,并根据 Makefile 的设置方式依次编译所有依赖的东西。
有些软件的安装,在执行完 make 后就获得了可执行程序,可以跳过 make install 的过程,只需要把可执行程序放入环境变量就可以运行了。但部分软件还需要一些依赖关系,所以需要执行 make install 才算完成了完整的安装。
• make install 通常是拷贝 make 编译出来的可执行文件或者依赖的库文件 (如果有的话) 到 configure 时的--prefix 指定的目录下。
例如安装samtools,到http://samtools.sourceforge.net/下载文件
unzip samtools-develop.zip #解压文件
cd samtools-develop/
find configure #查看是否有configure文件,结果没有,接下来按照官网说明产生configure文件
autoheader # Build config.h.in (this may generate a warning about
# AC_CONFIG_SUBDIRS - please ignore it).
autoconf -Wno-syntax # Generate the configure script
./configure # Needed for choosing optional functionality
#报错,没有HTSlib 库
下载htslib
tar zxvf htslib-1.9.tar.gz #解压文件
cd htslib-1.9/
ls #查看是否存在configure;不存在
autoconf #编译产生configure
./configure #检查依赖,报错,没有liblzma
sudo apt-get install liblzma-dev #安装liblzma
./configure #再次检查依赖,没有报错
make
sudo make install #需要管理员权限
samtools #检查是否安装成功
总结:安装时没有configure文件是可以autoconf产生;在检查依赖时一定要查看是否报错,报错则缺少相关依赖的文件库,x需要依次安装。