本文转载自:http://www.360doc.com/content/15/0626/16/734073_480852838.shtml

使用Linux尤其是CentOS会遇到一些坑,或是一些有洁癖的人不能忍的事情:

  • 官方源中的软件包版本太老,在功能上无法满足需求;

  • 多个源的软件包存在版本冲突;

  • 手动编译软件,默认会将不同文件放置在/usr/local下不同的子目录下,使得软件的更新和删除变得麻烦。

  • 等等…

在经历了几次重装CentOS之后,特总结出如下几条软件安装的方法与原则,以尽可能保证当前系统的稳定、整洁,尽可能降低系统洁癖引起的重装冲动。

以下所说,仅限于CentOS7,对其他发行版,或许有借鉴意义。
1.使用源安装
1.1官方源

CentOS自带的四个官方源中,默认打开的有base、updates、extras,这三个源中包含了约9000个软件包,是最稳定、也是最值得信赖的源。

因而若一个软件包在官方源内,则应通过官方源安装:

sudo yum install PackageName

1.2第三方源

官方源虽然包含了很多软件包,但无法满足日常需求。幸好有第三方源,可以作为官方源的补充。

在使用第三方源的过程中,最怕遇到这两个问题:

  • 第三方源和官方源中有相同的包,导致官方源的包被第三方源替代;
  • 多个第三方源中存在同一个软件包,且版本不一致,存在冲突;

这两个问题经常是致命的,出现各种预料不到的后果,因而选择第三方源要遵循如下原则:

  • 只选择可靠的第三方源,要确保第三方源不会替换官方源中的包;
  • 使用尽量少的第三方源,以保证第三方源之间不会冲突;

就CentOS而言,根据以上的原则,使用如下第三方源:

  • 大型第三方源,已确认不会替换官方源的包,且相互之间无冲突
    EPEL:包含6500多个软件,科研必备
    ELRepo:包含几十个各种硬件的驱动程序
  • 有些小型第三方源,仅包含了几个软件,确认与官方源和EPEL源不会冲突,也可以添加:
    Google Chrome:包含了Google Chrome,不会与官方源和EPEL源冲突;
    Adobe:仅包含flash插件,已确认不会冲突;
    dropbox:仅包含dropbox一个软件,已确认不会冲突;

因而,若一个软件包位于EPEL、ELRepo中,或一些小型的第三方源中,则添加该第三方源,并用yum命令安装:

sudo yum install PackageName
//原文基础上的补充。例如:下载并安装EPEL
[root@localhost ~]# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  //wget是linux最常用的下载命令, 一般的使用方法是: wget + 空格 + 要下载文件的url路径
[root@localhost ~]# rpm -ivh epel-release-latest-7.noarch.rpm
[root@localhost ~]# yum repolist      ##检查是否已添加至源列表

原文基础下补充:
RPM Package Manager(原Red Hat Package Manager,现在是一个递归缩写)
注解:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件

2.使用官方rpm包安装

大部分非开源的软件,在CentOS官方源或EPEL中是没有的。有些软件的官方网站会提供官方rpm包。此时可以从官方网站下载与当前系统对应的rpm包,直接用如下命令安装:

sudo rpm -i PackageName.rpm  //sudo,允许普通用户使用root的权利
//或者
rpm -ivh PackageName.rpm //rpm -ivh rpm文件【安装】
//rpm -Uvh rpm文件【更新】
//2)删除一个rpm 包:  rpm -e 软件名

比如,WPS for Linux就是其中一个。在安装的过程中rpm命令会自动检查依赖关系,若该软件所依赖的包在官方源和EPEL源中可以找到,则自动安装。

直接安装rpm包的做法相当省事,但该软件不能由yum更新,稍稍麻烦一点。有些软件,比如前面提到的Google、Dropbox和Adobe其实也可以通过这种方法安装,在安装的同时会给系统添加源,对于这类软件依然可以很方便的更新与删除。
3.解压即用

有些软件,官方提供了压缩包,解压之后即可直接运行其中的二进制文件,比如很多Java写的软件。这类软件没有给源代码,而是给了可以在当前平台下直接执行的二进制文件。大多数非开源的商业软件都采取这种办法。

比如sublime_text、pycharm、mendeley、TauP、sac等,直接解压,然后将解压后的文件夹复制到/opt目录下,然后将该软件的bin目录加入到PATH中即可。
比如Mathematics、Matlab、intel studio,软件包中提供安装脚本,执行该脚本即可安装;

Linux下的习惯是,商业软件或第三方软件都安装到/opt目录下,这也是大多数商业软件包的默认安装路径,尽量遵循该习惯。
4.第三方rpm包

有些软件,CentOS源和EPEL源中找不到,官方又没有提供rpm包,但是其他第三方源提供了rpm包。分情况讨论:

  • 若该第三方源只包含了很少量的包,且确定这些包与官方源以及其他已使用的第三方源不冲突,则可以添加该第三方源。

  • 若该第三方源包含了很多软件,很可能与官方源或EPEL源有冲突,则不添加该源

  • 若该软件包没有复杂的依赖关系,则直接安装该源中的rpm包;

  • 若该软件包依赖于该第三方源中的其他包,则放弃,寻找其他方法;

5.第三方包管理器

不同的发行版使用不同的软件包管理器,CentOS使用yum,Ubuntu使用apt-get。近些年又出现了一些与发行版无关的第三方包管理器,比如Linuxbrew、Gentoo Prefix、pkgsrc。
Linuxbrew

Linuxbrew是由OS X平台下非常流行的Homebrew移植到Linux下的。Linuxbrew可以作为系统自带的包管理器的一个补充。其特色在于:

所有软件都安装在${HOME}/.linuxbrew目录下;
软件的版本相对很新;
install、uninstall、info、list、update、upgrade等功能
若库中没有需要的软件包,可以很简单地自己创建formulae

试用了一下,一个比较坑的地方是,linuxbrew会自己内部解决依赖问题。比如,我试着通过linuxbrew安装terminator,然后发现terminator依赖于python,尽管系统已经安装了python,linuxbrew还是会安装一份python,又由于python依赖于更多的东西,导致又安装了更多软件包在home下。而且,linuxbrew是从源码编译软件的,所以相对来说速度较慢。
6.编译源码

大部分软件用前面的几种方法应该都能安装上了。如果没安装上,那就得问问自己,真的需要安装这个软件么。如果不是非常必要的话就不要安装啦。如果是必须的软件,那就必须要手动编译了。

常见的源码编译,一般也就是如下几步。当然,具体情况具体对待:

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。但是一般来说,需要编译源码的软件很少,所以不会造成太大的麻烦。
7.编译代码

好吧,其实我不知道该怎么起标题了。。

前一节“编译源码”主要针对的是一些大型软件包,这一节“编译代码”指的是对一些专业性很强的小代码包的处理方式。比如有些软件包编译之后实际需要的只是一个二进制文件,这个时候就没有必要安装到/opt了,合适的方式是在自己的HOME下建立bin目录,并将其路径加入到.bashrc 中,然后将编译生成的二进制文件复制到该目录下即可:

mkdir ${HOME}/bin
echo 'export PATH=${HOME}/bin:$PATH' >> ~/.bashrc

比如我的${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里放,这里只应放一些常用的命令或很通用的工具。
8.自成系统的软件

有一类软件,其拥有众多模块或包,为了管理这众多的模块,就需要拥有一个自己的模块/包管理器。这其中以TeX、Perl和Python为代表。对于这一类软件,其众多的模块是最大的优势,也是最值得利用的资源,因而我通常会选择手动安装它们,原因如下:

  • 系统的源中不可能包含该软件的所有模块;
  • 系统的源中该软件的模块的更新要远远滞后于最新版本;

当然,即便是使用系统自带的版本,也依然可以用该软件自带的包管理器来安装模块。但将导致:

  • 部分模块用系统的yum管理,部分模块用软件自带的包管理器管理;
  • yum安装的模块一般版本较老,软件的包管理器要安装的大多是最新版本;

这一方面会导致模块管理的混乱,另一方面用软件自带的包管理其安装模块时,可能会依赖于其他模块的最新版本,若该模块是通过系统yum安装的较旧的版本,则可能导致模块的安装失败。

因而,对于这类软件,一般单独安装,并用各自的包管理器管理模块:

  • TeXLive:通过TeXLive iso镜像文件安装,使用其自带的tlmgr管理包

  • Perl:通过plenv安装最新版本的Perl,使用plenv自带的cpanm安装模块

  • Python:通过pyenv安装最新版本的Python,使用Python自带的pip安装模块

9.例外

有规则总有例外。
第三方源

mosquito-myrepo是一个私人维护的源,其中包含了中文输入法、QQ、飞信、为知笔记、有道词典、百度云以及若干音频、视频播放器。我对这个源的态度是又爱又恨,其提供了很多中国人需要的软件,但因为其依赖于除EPEL外的其他第三方软件源,进而可能导致包冲突。所以对该源的使用,要保持谨慎。
总结

简单总结一下:

  • 为系统添加EPEL源、ELRepo源和个别其他小型第三方源

  • 能够从源中安装的就从源中安装

  • 不能从源中安装的尽量找rpm包安装

  • 找不到rpm包的就试试linuxbrew

  • 能不手动编译的就不要手动编译

自己的补充:
软件安装命令rpm和yum的区别:
yum
yum = Yellow dog Updater, Modified 主要功能是更方便的添加/删除/更新RPM包. 它能自动解决包的倚赖性问题. 它能便于管理大量系统的更新问题

详见:http://blog.163.com/yang_jianli/blog/static/1619900062012912115552188/

CentOS 7下的软件安装方法总结相关推荐

  1. CentOS 7 下的软件安装方法及策略

    原文链接 2010 年开始正式接触 Linux,入门发行版是 Ubuntu 10.10,后来过渡到 Ubunu 11.04, 这其中也尝试了很多其他主流的发行版.进入实验室之后,开始用 CentOS ...

  2. CentOS 7下的软件安装方法及策略

    原文地址 一些废话 2010年开始正式接触Linux,入门发行版是Ubuntu 10.10,后来过渡到Ubunu 11.04,这其中也尝试了很多其他主流的发行版.进入实验室之后,开始用CentOS 5 ...

  3. CentOS7下的软件安装方法及策略详解

    CentOS7下的软件安装方法及策略详解 互联网   01-24 15:15:09   作者:佚名   我要评论 今天小编为大家带来的是CentOS7下的软件安装方法及策略详解:希望对大家安装Cent ...

  4. Linux下的软件安装方法介绍

    本文目录 一.Linux下的软件安装方式 二.在线安装 三.使用dpkg从本地磁盘安装deb软件包 本文目录 一.Linux下的软件安装方式 通常Linux上的软件安装主要有三种方式: 在线安装 从磁 ...

  5. linux下各种软件安装方法详解

    linux 软件安装的七种方法 一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd so ...

  6. linux安装软件imagemagick,linux下的ImageMagick安装方法

    linux下的ImageMagick安装方法 由于没有图形化界面的支持,在Linux(CentOS 6.4 x64)上的配置相对Windows XP还是麻烦了一点. 1.下载ImageMagick和J ...

  7. linux6.6如何装gz软件,Linux下软件安装方法

    对于Linux初学者来说,安装一个很小的软件恐怕都是一件很让人头疼的事,因为在Linux下安装软件不像在 Windows中那样简单.在Linux中大多数软件提供的是源代码,而不是现成的可执行文档,这就 ...

  8. linux7开放svn,CentOS 7 下SVN的安装及基础配置介绍

    CentOS 7 下SVN的安装及基础配置介绍 一.实践环境 二.安装操作系统 三.安装SVN 四.基础配置 五.启动SVN 六.客户端访问 七.常见问题排查 一.实践环境 CentOS 7操作系统( ...

  9. Linux下的软件安装方式+源码安装软件cmatrix代码雨

    Linux下的软件安装方式 1 rpm工具安装 2 yum工具安装 3 源码编译安装 软件包类型 1 二进制软件包(=rpm软件包) 无需编译,直接安装 根据计算机CPU架构类型和操作系统选择合适的软 ...

最新文章

  1. Shell 开发在运维中的经验总结
  2. 定制Apache索引样式
  3. SQL语句中各个部分的执行顺序(转)
  4. 台湾大学林轩田机器学习基石课程学习笔记13 -- Hazard of Overfitting
  5. java substring_java 中 substring()方法
  6. 信息学奥赛一本通,题解列表
  7. python自动化看什么书_《Python编程快速上手:让繁琐工作自动化》(异步图书出品)...
  8. 通用技术和信息技术合格考知识点_小高考信息技术知识点(绪言)
  9. Ms08067联合360漏洞响应平台(SRC)送给白帽子20本“精选的10本安全好书”
  10. 开发人员使用Helix QAC实现静态代码测试合规性的五大原因
  11. 如何通过python实现H.264视频推流与接收
  12. 玲珑杯计算机大赛得奖作品,信阳师范学院学子在第14届中国大学生计算机设计大赛“玲珑杯”省级赛中获奖...
  13. IWAM账号密码不一致引起IIS无法处理ASP文件
  14. 三星A5显示服务器未响应,三星A5手机死机了 屏幕一直亮着 按什么键都没反应==求解答...
  15. 深入理解JVM之四:详解垃圾收集器
  16. 如何怎样在M1芯片Mac上安装PS?M1芯片安装Photoshop详细教学方法2021最新方法
  17. Go语言:模拟鼠标操作(go-vgo/robotgo)
  18. 股指期货交易规则概述—股指期货网
  19. SQL递归查询上级部门树
  20. 关于RM1135/RTS5735主控固态SSD开卡量产工具的使用简介

热门文章

  1. php 正则匹配座机号、手机号
  2. 为什么会有大端/小端之分?(众说纷纭)
  3. 5款值得推荐的工具和软件,让你的工作效率翻倍
  4. Windows无法连接到打印机怎么办?快收藏这些正确做法!
  5. 转:《七周成为数据分析师》总结
  6. matlab读int16读文件_[转载]Matlab中的textread textscan读取文本文件
  7. Camera--(7)手机双摄像头原理及产业解析
  8. 微信 iPad 835协议
  9. 百度富文本编辑器引入问题
  10. js解决浏览器,SpeechSynthesis不能正常合成中文语音