用CentOS 7打造合适的科研环境

给你一囗甜甜゛ 提交于 2019-12-02 02:56:41

这篇博文记录了我用CentOS 7搭建地震学科研环境的过程,仅供未来重新装机时参考。

准备工作

  • U盘一个,用于制作CentOS启动盘,U盘容量700M以上;
  • 下载CentOS 7的LiveCD ISO镜像文件
  • 下载Windows下的启动盘制作工具Universal USB installer
  • 利用Universal USB installer将CentOS的镜像文件写入U盘
  • 插入U盘,重启电脑,进入BIOS选择从U盘启动,进入CentOS的LiveCD

注:

  1. Linux下可以通过dd命令制作启动盘,但由于对原理不够了解,偶尔会导致制作失败,或制作成功后U盘容量有问题。

安装过程

CentOS 7的安装过程与其他Linux发行版的安装过程差不多。

分区

  • 先让安装程序帮忙分区,然后再根据需要增删分区以及修改细节;
  • 默认的分区方案是使用LVM,一个好处在于“当机器有多块硬盘时,使得看上去只有一块”。
  • 默认的文件系统为XFS;
  • 分区细节
    • /boot:CentOS自动分配了100M;
    • /:30G
    • swap:64G(与实际内存大小一致)
    • /opt:70G
    • /home:余下的全部空间

一些原则

为了尽可能地避免因为瞎折腾而导致不得不重装系统,设定如下系统使用原则:

  1. 仅使用CentOS官方源以及EPEL源,以避免一个软件包同时存在于多个源可能引起的版本冲突;
  2. 对于系统级别或较底层的软件包,只使用yum安装,绝不自己编译源代码;
  3. 对于源中没有的软件包,一律编译并安装至/opt目录下;
  4. 对于不需要编译,解压即可使用的软件包,一律编译并安装至/opt/目录下;
  5. 对于编译后只生成一两个二进制文件的小型代码,一律将二进制文件复制到${HOME}/bin下;

对系统的一些修改

给当前用户root权限

CentOS默认没有给一般用户root权限,所以安装软件的时候经常需要su切换到root用户再进行操作。相对来说很麻烦。因而需要给当前用户root权限。

su切换至root用户,用如下命令编辑sudo的配置文件:

sudoedit /etc/sudoers

在其中找到语句root ALL=(ALL) ALL,在其下添加如下语句:

seisman ALL=(ALL)       ALL

其中seisman为当前用户名。

修改主机名

  1. 修改/etc/hostname,将其中的localhost.localdomain改成saturn.geolab。(装机过程中若填入了主机名,则可能该文件不需要修改)

  2. 修改/etc/hosts将其中的:

    127.0.0.1               localhost.localdomain localhost

    改成:

    127.0.0.1               saturn.geolab saturn
  3. 重启网络:

    sudo service network restart

添加EPEL源

EPEL即Extra Packages for Enterprise Linux 。CentOS为了保证系统的稳定性,只提供了少量的软件包,无法满足更多的需求。EPEL为CentOS提供了额外10000多个软件包, 而且在不替换系统组件方面下了很多功夫,因而可以放心使用。

1
2
3
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
sudo rpm -ivh epel-release-7-2.noarch.rpm
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

除了EPEL之外,还有很多第三方软件源,如rpmforge等,具体可以参考CentOS的wiki页面,但由于不同软件源之间可能存在相同名称不同版本的软件,因而同时使用多个软件源时可能会造成冲突。因而只建议使用EPEL软件源。

安装yum-axelget

yum-axelget是yum的一个插件,使用该插件后用yum安装软件时可以并行下载,大大提高了软件的下载速度。

sudo yum install yum-axelget

第一次全面升级

sudo yum update

这个升级估计需要一段时间。。

编程环境的安装

GCC系列

yum install gcc                         # C编译器
yum install gcc-c++                    # C++编译器
yum install gcc-gfortran                # Fortran编译器
yum install compat-gcc-44               # 兼容gcc 4.4
yum install compat-gcc-44-c++           # 兼容gcc-c++ 4.4
yum install compat-gcc-44-gfortran      # 兼容gcc-fortran 4.4
yum install compat-libf2c-34            # g77 3.4.x兼容库
yum install gdb                         # 代码调试器

Intel系列

Intel的大部分软件都是非开源且收费的,但同时部分软件也提供了Linux下的非商业免费版。比如icc、ifort、mkl数学库以及代码性能分析工具等。

软件的申请以及安装参考《Intel非商业免费开发工具》。

Clang系列

Clang是一个C、C++、Objective-C和Objective-C++编程语言的编译器前端,其采用了LLVM作为其后端。它的目标是提供一个GCC的替代品。包括Clang前端和Clang静态分析器两个部分。

yum install clang               # clang编译器
yum install clang-analyzer      # clang静态分析器

其中clang静态分析器可以用于分析代码中可能出现的bug。

Java环境

yum install java                        # java运行环境

Perl环境

CentOS 7.0自带了perl 5.16.3,大概是两年前发布的版本,基本够用。

在需要安装某perl模块时,先使用yum搜索源中是否有别人准备好的包,若有则直接安装。尽量不要使用cpan安装模块。

Python环境

CentOS 7.0自带Python 2.7.5,基本可以满足需求。与Perl类似,需要相关模块时优先使用yum源中提供的包,尽量避免使用pip安装模块。

由于Python2和Python3的不完全兼容,因而很多时候还需要安装一个Python3,这就需要管理多个Python版本。

  • 安装pyenv来管理多个Python版本
  • 利用pyenv安装anaconda3(即Python 3.4)。
  • 申请anaconda的学术版License,并更新anaconda。

其他软件

yum install cmake

驱动安装

安装显卡驱动

Linux默认只使用开源的显卡驱动,就目前的情况来看,开源驱动的效果还是不错的,但跟官方的闭源驱动相比还是有一定差距的。最明显的区别是,在使用SAC的ppk功能放大波形时,使用开源驱动会出现延迟,而使用官方闭源则整个过程非常顺畅。

驱动的安装过程参考”安装NVIDIA显卡驱动“ 一文。需要注意的是,在安装显卡驱动之后,若更新了kernel,会出现无法进入kernel的情况,即每次更新kernel之后都需要重新安装显卡驱动,这点需要注意。

日常软件安装

办公软件

办公软件可以选择大多数Linux发行版都有的LibreOffice:

sudo yum install libreoffice

LibreOffice与Microsoft Office的兼容性不太好,操作界面与MS Office也有较大差异,让人不太习惯。

如果在Linux对于文档处理有更高一些的要求,可以尝试目前还处于测试版的WPS Office for Linux,安装过程参考CentOS下安装WPS Office一文。WPS Office的兼容性以及界面都比LibreOffice要好很多,值得期待,当然还是不能做到完全兼容MS Office。

Google Chrome浏览器

在/etc/yum.repo.d/目录下新建文件google-chrome.repo,向其中添加Google Chrome源,内容如下:

[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

安装:

yum install google-chrome-stable

中文输入法

系统自带的中文输入法为ibus,使用效果一般,基于fcitx框架的搜狗输入法是更好的选择。参考CentOS7安装搜狗输入法

其他软件

yum install nfs-utils       # 挂载NFS文件系统所必须
yum install p7zip           # 7z格式压缩和解压
yum install git             # 源码版本控制
yum install xclip           # 终端的文本复制工具
yum install ImageMagick     # 其中的import和convert命令很有用
yum install ntfs-3g         # 用于挂载NTFS格式的硬盘

使用zsh

安装zsh及其配置oh-my-zsh

Mendeley

文献管理软件,需要先安装qtwebkit,然后基本解压后即可使用。

HostTool

修改Google、twitter、youtube、wikepedia、dropbox等的host文件。该软件用Python写成。

HostTool:https://hosts.huhamhire.com/

安装TeXLive 2014

参考本文

地球物理相关

  1. 安装SAC,参考《SAC参考手册》中的相关章节。
  2. 安装GMT4
  3. 安装GMT5
  4. 安装TauP
  5. 安装rdseed(seed格式转SAC格式)
  6. 安装win32tools(Hinet自定义的win32格式转SAC格式)
  7. 安装pssac

模块、插件等等

Python模块

  • python-requests:网页请求
  • PyQT4:Qt4的Python绑定

Perl模块

  • Parallel::ForkManager:并行

Vim插件

  • bundle:vim插件管理
  • powerline:状态栏增强
  • nerdtree:文件浏览器
  • vim-colors-solarized:solarized配色
  • YouCompleteMe:代码补全
  • delimitMate:括号补全
  • indentLine:显示缩进对齐
  • 编程相关软件

    编辑器

  • vim
  • sublime text 3
  • IDE

  • Python IDE:PyCharm Community Edition
  • 日常软件

    Office套件

    LibreOffice

    大多数Linux发行版都自带LibreOffice:

    sudo yum install libreoffice

    LibreOffice与Microsoft Office的兼容性不太好,操作界面与MS Office也有较大差异,让人不太习惯。

    WPS Office

    若在Linux下对于文档处理有更高一些的要求,可以尝试目前还处于测试版的WPS Office for Linux。WPS Office的兼容性以及界面都比LibreOffice要好很多,值得期待,当然还是不能做到完全兼容MS Office。

    安装过程参考CentOS下安装WPS Office一文。

    PS/PDF阅读器

    系统自带的evince阅读器,可以打开PS和PDF文件,基本足够日常的使用了。

    zathura

    zathura可以查看PS、PDF、djvu格式的文件,可以作为evince的替代品:

    sudo yum install zathura zathura-plugins-all

    ghostscript

    sudo yum install ghostscript

    TeXLive 2015

    系统是自带了TeXLive,版本较老,还是安装最新版比较好。

    根据Linux下安装TeXLive一文,从ISO文件中安装TeXLive。

    安装完成后,更新所有模块:

    tlmgr update --all

    Mendeley

    Mendeley是一个跨平台的文献管理软件,其内部自带了一个可以添加注释的PDF阅读器。

    下载Generic Linux (64 bits) :http://www.mendeley.com/download-mendeley-desktop

    安装:

    tar -xvf mendeleydesktop-1.12.3-linux-x86_64.tar.bz2  # 解压
    sudo mv mendeleydesktop /opt  # 复制到/opt下
    cd /opt/mendeleydesktop/bin   # cd进去
    ./install-mendeley-link-handler.sh /opt/mendeleydesktop/bin/mendeleydesktop
    sudo yum install qtwebkit  # 安装依赖包

    注销重新登陆,在Application->Education下即可看到mendeley的相关项目。不过是没有软件的图标的,强迫症不能忍,用下面的命令解决:

    cp /opt/mendeleydesktop/share/icons/hicolor/128x128/apps/mendeleydesktop.png ~/.local/share/icons/

    Google Chrome浏览器

    默认的浏览器是Firefox,还是更喜欢Chrome浏览器。

    在/etc/yum.repos.d/目录下新建文件google-chrome.repo,向其中添加如下内容:

    [google-chrome]
    name=google-chrome
    baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
    enabled=1
    gpgcheck=1
    gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

    安装:

    sudo yum install google-chrome-stable

    由于Google的官方源在国内可能无法正常访问,导致安装失败或安装后无法正常更新。有人在国内服务器上做了Google官方源的镜像,若你相信该镜像是安全的,则可使用此国内镜像代替Google官方源,google-chrome.repo的内容改为:

    [google-chrome]
    name=google-chrome
    #baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
    #gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
    mirrorlist=http://1dot75cm.tk/mirrorlist
    gpgkey=http://1dot75cm.tk/src/linux_signing_key.pub
    gpgcheck=1
    enabled=1

    Opera浏览器

    也可以选择Opera浏览器。

    下载地址:http://www.opera.com/download/guide/?os=linux

    选择CentOS RPM package进行下载。下载完成后,执行:

    sudo yum localinstall opera-12.16-1860.x86_64.rpm

    想要卸载的话,就执行:

    sudo yum remove opera

    Flash插件

    Flash插件主要是看在线视频的时候要用。Google浏览器自带了Flash插件,所以这里安装的flash插件主要是为了firefox。

    sudo rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm
    sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
    sudo yum install flash-plugin

    解压软件

    解压7z或zip格式需要p7zip,由EPEL提供:

    sudo yum install p7zip

    解压rar格式需要unrar,该软件由Nux Dextop提供,但该源与EPEL源有冲突,所以直接下载该rpm进行安装:

    sudo yum localinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/unrar-5.0.12-2.el7.nux.x86_64.rpm

    FTP客户端

    FTP客户端,还是有界面的filezilla比较方便些。

    sudo yum install filezilla

    效率类软件

    这一类工具能够在不同方面提高科研的效率,也提高了使用者的体验。

    终端模拟器

    Gnome自带的终端模拟器是gnome-terminal。经常会需要开十几个终端,切换和管理起来比较麻烦。

    terminator

    terminator有很多功能,我只用到了终端分割的功能。Ctrl+Shift+O对终端水平分隔,Ctrl+Shift+E对终端垂直分隔,Alt+上下左右可以在各子终端中切换。

    sudo yum localinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/terminator-0.97-6.el7.nux.noarch.rpm

    guake

    有些时候需要临时执行一两个命令,但是又不想额外启动一个终端的情况下,guake是个不错的选择。

    sudo yum localinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/guake-0.4.4-11.el7.nux.x86_64.rpm

    安装完成后,在Application->System Tools里找到guake Terminal即可启动。按下F12即可呼出guake,再次按下F12即可隐藏。也可在终端执行guake-prefs对gauke进行配置。

    zsh与oh my zsh

    Linux下有很多shell,比如最常见的bash,除此之外还有csh、ksh。zsh也是一个shell。

    zsh的特点在于:

  • 语法基本完全兼容于bash,一般用户完全体会不到其区别
  • zsh提供命令补全特性,比bash的补全要更好用
  • 可配置性强
  • 完全不经配置的zsh已经很好用了,一般用户也没必要花时间研究配置。oh my zsh是一群人一起维护的一套zsh配置文件。直接用这个配置文件,稍稍了解一点会有更好的体验。

    安装zsh:

    sudo yum install zsh

    安装oh my zsh:

    curl -L http://install.ohmyz.sh | sh

    上面的命令,做了如下几件事情:

  • 下载oh my zsh到~/.oh-my-zsh
  • 备份已有的zsh配置文件~/.zshrc,并复制新的.zshrc文件
  • 将当前用户的默认shell由bash改成zsh
  • 第三步中,会报错如下:chsh: "/usr/bin/zsh" is not listed in /etc/shells.,需要手动修改默认shell:

    chsh -s /bin/zsh

    chsh命令修改的是login shell,因而需要退出当前用户并重新登陆,以后用户的默认shell就从bash变成了zsh,所有的配置都不用写到.bashrc而要写到.zshrc中。

    在.zshrc中可以选择喜欢的主题,以及适当数量的插件。下面列出我在用的插件:

  • git

    该插件为git的众多常用命令提供了更简单的别名,比如git status的别名是gst,大大简写了击键数。但该插件中git mergetool --no-prompt的别名是gmt,与GMT软件冲突,需要将该插件的目录git复制到custom/plugins下,然后删除其中的gmt别名;

  • 命令补全插件: pip, pyenv

  • sudo:按两下ESC即可在当前命令前加上sudo

  • yum:为常见的yum命令提供别名

  • autojump

    autojump是一个非常智能的目录快速切换的工具。简单演示如下:

    $ pwd
    /home/seisman
    $ cd Desktop
    $ cd /opt
    $ cd /usr/local
    
    # 用j命令迅速从/usr/local跳转到与des匹配的目录,这里只有Desktop可以匹配
    $ j des
    $ pwd
    /home/seisman/Desktop

    用法差不多就这样,具体看项目主页。

    安装:

    sudo yum install autojump
    sudo yum install autojump-zsh

    中文输入法

    刚安装的系统可能是没有中文输入法的,源中带的中文输入法应该是ibus,使用效果一般。fcitx是更好的选择,基于fcitx框架的搜狗输入法或许是更好的选择。

    参考CentOS7安装fcitx中文输入法

    HostTool

    科学上网几乎已经成为每个搞科研的人的必备技能。

    科学上网的方式有很多,这里只说HostTool:https://hosts.huhamhire.com/

    HostTool科学上网本质上就是用最新的host文件替代了系统自带的host文件。

    下载解压后,进入目录,直接sudo python2 hoststool.py即可运行,具体的用法自己研究一下。

    等宽字体

    编程要用等宽字体,这点是常识了。一款适合编程的等宽字体,至少要满足如下几个要求:

  • 易于区分“1”、“i”和“l”
  • 易于区分“0”、“o”和“O”
  • 易于区分中文下的左引号和右引号
  • 美观
  • 目前选择的Source Code Pro。将解压后的字体文件放在~/.fonts目录下,并修改终端、gedit以及其他编辑器、IDE等的默认字体。

    虚拟机

    有时候可能需要在Windows下做一些操作,如果机器性能足够好的话,可以安装虚拟机。

    VirtualBox虚拟机

    VirtuabBox的安装:

    wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
    sudo mv virtualbox.repo /etc/yum.repos.d/
    sudo yum install VirtualBox-4.3

    需要注意两点:

  • 若机器性能不够,虚拟机的使用体验会非常差,所以不建议在老机器上使用;
  • 更新kernel之后需要执行sudo /etc/init.d/vboxdrv setup;
  • gnome-boxes

    gnome-boxes是GNOME3开发的一个虚拟机工具:

    sudo yum install gnome-boxes

    同步网盘

    网盘根据功能大概可以分为两类:同步网盘和备份网盘。既然是同步网盘,Linux下的客户端必不可少。就目前已知的情况来看,CentOS7下能使用的同步网盘只有三个:Dropbox、MEGA和坚果云。

    我主要用同步网盘将Linux机器上的PDF文献同步到iPad上。

    Dropbox

    又是一个被墙的工具,熟练掌握科学上网技巧的人可以使用,一般人还是不要用了。

    wget https://www.dropbox.com/download?dl=packages/fedora/nautilus-dropbox-1.6.2-1.fedora.x86_64.rpm
    sudo rpm -i nautilus-dropbox-1.6.2-1.fedora.x86_64.rpm

    MEGA

    MEGA: https://mega.co.nz/

    免费容量50G,作为同步盘来说基本是够用了。

    # 下载主程序
    wget https://mega.nz/linux/MEGAsync/CentOS_7/x86_64/megasync-CentOS_7.x86_64.rpm
    # 下载文件管理器扩展(可选)
    wget https://mega.nz/linux/MEGAsync/CentOS_7/x86_64/nautilus-megasync-CentOS_7.x86_64.rpm
    sudo yum localinstall megasync-CentOS_7.x86_64.rpm
    sudo yum localinstall nautilus-megasync-CentOS_7.x86_64.rpm

    坚果云

    国内的全平台同步网盘,不限空间,但限制每月上传流量1G,下载流量3G。

    # 坚果云依赖于notify-python,该包位于Nux Dextop源中
    sudo yum localinstall http://li.nux.ro/download/nux/dextop/el7/x86_64/notify-python-0.1.1-25.el7.nux.x86_64.rpm
    # 下载
    wget https://jianguoyun.com/static/exe/installer/fedora/nautilus_nutstore_amd64.rpm
    sudo rpm -i nautilus_nutstore_amd64.rpm

    工具软件

    视频下载工具

    you-get和youtube-dl <https://github.com/rg3/youtube-dl>是两个用于从视频网站上下载视频文件的工具。其中,后者支持的网站更多,但前者对国内的视频网站支持更好。

    pip install you-get
    pip install youtube-dl
    # EPEL中提供了youtube-dl包,因而也可以使用yum安装。一般来说,pip安装的版本更新一些

    PDF处理工具

    cpdf是一个跨平台的PDF处理工具,可以完成常见的PDF合并、切割、加密解密、书签、水印等功能。

    下载已编译好的二进制包,解压,并将与自己的平台对应的二进制文件复制到${HOME}/bin目录下即可使用。

    BT软件

    transmission是Linux下常用的Torrent下载软件:

    sudo yum install transmission

    在“Application”->“Internet”->中可以启动transmission。

    其他工具

    sudo yum install nfs-utils     # 挂载NFS文件系统所必须
    sudo yum install xclip         # 终端的文本复制工具
    sudo yum install ImageMagick   # 其中的import和convert命令很有用
    sudo yum install dos2unix unix2dos  # Windows和Linux换行符互相转换

    地球物理相关

  • SAC

    参考《SAC参考手册》中的相关章节。

  • GMT

  • TauP:走时计算工具

  • rdseed:SEED转SAC的工具

  • win32tools:Hinet自定义的win32格式转SAC格式

  • pssac:用GMT绘制SAC文件

  • distaz:根据两点经纬度计算震中距和方位角

  • 娱乐

    sudo yum install 2048-cli   # 2048命令行版

    未完成

    Google Earth

    理论上Google Earth应该可以跟Google Chrome用类似的方法来安装的,但是由于Google Earth的rpm包存在bug,导致无法通过上面的方法安装。

    $ cd -
    $ wget https://dl.google.com/dl/earth/client/current/google-earth-stable_current_x86_64.rpm
    $ rpm2cpio google-earth-stable_current_x86_64.rpm | cpio -div
    $ sudo cp -r opt/google/earth /opt/google/
    $ sudo cp etc/cron.daily/google-earth /etc/cron.daily/
    $ rm -rf usr opt etc
    $ sudo ln -s /opt/google/earth/free/googleearth /usr/bin/google-earth

    安装完成后,启动后奔溃。。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!