借鉴seisman安装软件时的文件放置选择
对于大型的软件包的安装来说: 当下载成功一个软件的压缩包后:
tar -xvf xxxx.tgz
./configure --prefix=/opt/xxxx
make
sudo make install
一般来说,这类软件的默认安装目录都是 /usr/local ,最终文件会被分别放在 /usr/local 的 bin、lib、share、man 目录下。 我个人非常不喜欢这种方式,因为作为一个通过源码编译的软件来说,意味着编译者 要完全负起管理该软件的义务,这样的放置方式会来更新或卸载软件带来很多麻烦。 所以我总是会在 configure 的时候加上 prefix 手动指定安装路径。要卸载该软件就直接删除 /opt 下对应的目录,要更新的话,也可以先删除,再重新编译一遍。这样做稍微麻烦的一点是, 需要手动将该软件的 bin 目录加入到 PATH 中,还有可能需要修改 LD_LIBRARY_PATH。 但是一般来说,需要编译源码的软件很少,所以不会造成太大的麻烦。
对于小型的软件,有的甚至仅需要其编译成功的二进制文件的软件安装来说:
前一节 “编译源码” 主要针对的是一些大型软件包,这一节 “编译代码” 指的是对一些 专业性很强的小代码包的处理方式。比如有些软件包编译之后实际需要的只是一个 二进制文件,这个时候就没有必要安装到 /opt 了,合适的方式是在自己的 HOME 下 建立 bin 目录,并将其路径加入到 .bashrc 中,然后将编译生成的二进制文件复制 到该目录下即可:
mkdir ${HOME}/bin
echo 'export PATH=${HOME}/bin:$PATH'>> ~/.bashrc
比如seisman的 ${HOME}/bin 目录下有如下文件:
distaz :给出地球上两点经纬度,计算震中距和方位角
pssac :在 GMT 中绘制 SAC 文件
rdseed :SEED 格式转 SAC 格式
win2sac_32 、 catwin32 :Hi-net 网站提供的用于处理 Hi-net 数据的程序
st :sublime_text 被安装到 /opt 目录下,在此建立一个软链接,方便在命令行调用 sublime text
wlt.pl :校内用于登陆网络通的脚本,在命令行修改网络端口,好 happy
fk 、 fk.pl 、 syn 、 trav :Prof. Lupei Zhu 的用于计算合成地震图的程序,源代码有不少,实际需要用的也就这三个可执行文件和一个 perl 脚本。
matlab :指向 matlab 的一个软连接;
不要随便什么二进制文件都往 bin 里放,这里只应放一些常用的命令或很通用的。
要说明的是有一些软件最好自己安装而不是通过源安装:
自成系统的软件 有一类软件,其拥有众多模块或包,为了管理这众多的模块,就需要拥有一个自己的模块 / 包管理器。这其中以 TeX、Perl 和 Python 为代表。对于这一类软件,其众多的模块是最大的优势,也是最值得利用的资源,因而我通常会选择手动安装它们,原因如下: 系统的源中不可能包含该软件的所有模块;
系统的源中该软件的模块的更新要远远滞后于最新版本;
当然,即便是使用系统自带的版本,也依然可以用该软件自带的包管理器来安装模块。但将导致: 部分模块用系统的 yum 管理,部分模块用软件自带的包管理器管理;
yum 安装的模块一般版本较老,软件的包管理器要安装的大多是最新版本;
这一方面会导致模块管理的混乱,另一方面用软件自带的包管理其安装模块时,可能会依赖于其他模块的最新版本,若该模块是通过系统 yum 安装的较旧的版本,则可能导致模块的安装失败。 因而,对于这类软件,一般单独安装,并用各自的包管理器管理模块: TeXLive:通过 TeXLive iso 镜像文件安装,使用其自带的 tlmgr 管理包
Perl:通过 plenv 安装最新版本的 Perl,使用 plenv 自带的 cpanm 安装模块
Python:通过 pyenv 安装最新版本的 Python,使用 Python 自带的 pip 安装模块
虽然如此,一般软件安装 遵行的规则仍是:
为系统添加 EPEL 源、Nux Dextop、ELRepo 源和个别其他小型第三方源
能够从源中安装的就从源中安装
不能从源中安装的尽量找 rpm 包安装
找不到 rpm 包的就试试 linuxbrew
能不手动编译的就不要手动编译
借鉴seisman安装软件时的文件放置选择的更多相关文章
- linux安装软件时/usr/lib/python2.7/site-packages/urlgrabber/grabber.py文件异常
linux安装软件时,经常出现以下异常信息 Traceback (most recent call last): File , in <module> main() File , in m ...
- 在ubuntu中我们使用sudo apt-get install 或者dpkg -i *.deb安装软件时,常常提示“有未能满足的依赖关系“,解决方法
很早之前在ubuntu安装软件时遇到的问题,今天打开ubuntu看到了,总结如下: 在ubuntu中我们使用sudo apt-get install 或者dpkg -i *.deb安装软件常常提示“有 ...
- yum命令安装软件时,出现--centos 7 安装apache 出现 Could not resolve host: mirrorlist.centos.org; 未知的错误"--CentOS网络设置 couldn't resolve host 'mirrorlist.centos.org问题解决
CentOS网络设置 couldn't resolve host 'mirrorlist.centos.org问题解决 今天在虚拟机上安装完CentOS6.5之后,首次使用时yum命令安装软件时,出现 ...
- 【转】ubuntu 11.04使用apt-get安装软件时一直提示E:unable to locate package
问题: VMware虚拟机安装了ubuntu 11.04,在使用apt-get安装软件时一直提示E:Unable to locate package. 百度了原因,说是要更新源,使用命令:sudo a ...
- CentOS yum安装软件时保留安装包及依赖包或者自动下载安装包及相关依赖包
CentOS上安装某个软件一般都有很多相关的依赖包,当然,这也与我们安装时software selection步骤中选择的版本有关系,我们服务器在安装CentOS时一般选择Basic Web Serv ...
- Linux安装软件时90%的人会遇到这个报错,如何解决?
提示 Could not get lock /var/lib/dpkg/lock 报错? 有些小伙伴在使用 apt 包管理器更新或安装软件时,可能会遇到过诸如以下的错误提示: E: Could not ...
- apt-get install安装软件时出现依赖错误解决方式
在使用apt-get install安装软件时,常常会遇到如上图所看到的错误.该错误的意思为缺少依赖软件.解决方式为: aptitude install golang-go
- Ubuntu 安装软件时显示:无法获得锁 /var/lib/dpkg/lock -open(资源暂时不可用)
出错状况:在用 sudo apt-get install 安装软件时,结果终端提示: 无法获得锁 /var/lib/dpkg/lock -open(资源暂时不可用) 无法锁定管理目录(var/lib/ ...
- 安装软件时出现dll文件缺失
其中一个典型的问题就是安装photoshop时出现缺失文件,如下图 一般遇到这种问题我只能卸掉重装,不过现在学到了一种新的方法.下载相应的文件,将其存放到C:\Windows\System目录下即可. ...
随机推荐
- 项目梳理5——修改已生成.nuspec文件
xxxx.nuspec格式如下 <?xml version="1.0"?> <package > <metadata> <id>$i ...
- java反射基础
转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?opt=1最近在接触到框架的底层的时候,遇到了反射,便想好好的学习和总结一下反射,帮助理解java框架的运行流 ...
- 【Coursera】Seventh Week
Application Layer:Use the services of the TCP layer Quick Review Link Layer(Ethernet):gets the data ...
- 词云wordcloud类介绍&python制作词云图&词云图乱码问题等小坑
词云图,大家一定见过,大数据时代大家经常见,我们今天就来用python的第三方库wordcloud,来制作一个大数据词云图,同时会降到这个过程中遇到的各种坑, 举个例子,下面是我从自己的微信上抓的微信 ...
- python3.7 安装pyqt5
pip install pyqt5
- maven 下载不到jar包时候,更改阿里源
maven 源 下载太慢,更改国内的阿里源会快一些 <repositories> <repository> <id>alimaven</id> &l ...
- Cassandra 和 Spark 数据处理一窥
Apache Cassandra 数据库近来引起了很多的兴趣,这主要源于现代云端软件对于可用性及性能方面的要求. 那么,Apache Cassandra 是什么?它是一种为高可用性及线性可扩展性优化的 ...
- php 四种基础排序
1. 冒泡排序算法 * 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来. * 比如:2,4,1 // 第一次 冒出的泡是4 * ...
- CodeSmith公共类维护
CodeSmith在使用过程中,我们经常会出现同一个方法在不同的页面调用,如果我们在每个页面都写一个这样的方法,那么代码量非常大,同时如果以后需要修改也要在每个页面分别去修改,这无疑是劳命伤财,如果能 ...
- js-Client-side web APIs
APIs https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/ 简介: 应用程序接口(API) ...