美文网首页Java互联网科技
为什么linux安装程序会很麻烦?

为什么linux安装程序会很麻烦?

作者: 晴栀吖 | 来源:发表于2019-08-21 15:30 被阅读1次

Linux下安装软件其实可以和Windows一样简便(其实是远比Windows简便);但安装软件的方式不止一种:和Windows下一样,你可以用正规的msi包自动安装;也可以从别人的机器把PS/CS/SC之类软件拷贝过来、甚至是直接拷源码自己编译。

不同之处在于,Windows下,msi/*install.exe这种标准方式,有程序员专门写了全套的安装配置程序,所以你一点就能装、装完能在开始菜单/桌面/系统控制面板的软件列表中看到它;但直接拷贝过来的,你得自己建立快捷方式、自己处理它在注册表和/或其他地方的注册/配置信息(否则可能压根无法运行)、稍有不匹配就无法运行——总之极为繁琐,而且往往“集成”不到控制面板。

Linux下也一样。

不过,Linux下,软件的维护较为简单,不像Windows那样“曲折隐晦”;因此如果你懂的话,也可以做到“手工安装”。

因此,网上就有了很多很多一知半解的劣质教程,热衷于教人从源码安装、从非正规来源强行安装——然后还可能和系统原有的软件产生冲突,产生种种棘手问题。

这种垃圾信息,中文互联网上尤其多——或者说,中文互联网反而极少正规的安装教程,越发凸显了这类不走正规路线的教程之多。

Linux下的软件安装,实质上有如下四种,“正规”程度依次递减:

1、使用标准的yum/apt/yast包管理程序安装

2、使用标准rpm/deb或厂商自己的安装包(比如nVidia的显卡驱动用的bin包)安装

3、直接解压软件开发者的tar.gz包

4、自源码编译

其中:

1、使用标准的yum/apt/yast包管理程序安装

这种安装方式相当于苹果/安卓平台上的“应用商店”安装,是最安全可靠的安装模式。

通过这种方式安装的软件,不仅完全契合你的操作系统本身,而且可以保证和系统其他软件包的相容性,一般来说是不可能遇到冲突的。

Linux有很多发行版;其中一些面对服务器的版本会非常保守,里面的每一个软件都会经过连续多年的测试,稳定度极高。但相应的,这里面的软件就会老旧一些。典型如Redhat/CentOS/Debian(stable版)等。用这类版本就很容易遇到“急需的软件找不到”问题——因此,不建议你在桌面使用它们。

fedora、Ubuntu、Debian(testing)等版本内容相对较新,稳定度也还不错,建议用它们当桌面使用。这可以尽量减少你“找不到较新软件”的困扰。

2、使用标准rpm/deb或厂商自己的安装包(比如nVidia的显卡驱动用的bin包)安装

这种方式相当于Windows下的安装包安装,安全性/稳定度都还不错;但可能会因为你用了过新/过旧的安装包而和系统其他部分产生相容性问题——比如系统用python2.4你到网上拖了个python3或python1.5、又强行把它装上去还附加到路径最前,那么很可能就会造成其他依赖python的软件出现混乱。

另一个典型案例就是你装了nVidia的bin包之后,经常在系统更新(尤其是更新内核之后)无法进入图形界面。这就是因为nVidia的显卡驱动并没有被Linux软件仓库自动管理,因此出现了内核-驱动之间的不匹配问题。

所以,重复一遍:建议优先使用yum/apt/yast等命令,通过系统软件仓库安装应用。不建议自己下软件包安装。

哪怕是在Redhat系上安装其他地方下载的标准rpm包,都是不建议的。

3、直接解压软件开发者的tar.gz包

这种类似于Windows的“免安装绿色版”软件。

你可以把它解压到你自己的用户目录,然后在自己的bash.rc之类配置文件中,用export把它加入path——这样你才可以直接在shell中敲它提供的新命令。

这种方式适用于试用新软件、或者仅为自己使用而下载软件;不建议把它加入系统路径——也就是不建议用su取得超级用户权限、把它安装到系统目录。

因为这种东西和系统的相容性未经测试,后果完全不可预料。

4、自源码编译

这个方式和3类似,也不建议安装到系统目录。

因为它比3更不可靠:编译后的库文件、应用可能散落在诸多目录,一不小心就弄得到处都是垃圾、甚至可能覆盖掉系统本身自带的关键库,引起系统崩溃。

这种东西和3一样,未经系统包管理器“把关”,无法保证它不和系统组件相互覆盖。

除非你完全明白Linux里里外外都是怎么回事,否则不建议使用3/4安装方式。

当然,编译,然后放自己用户目录使用,这样还是安全的——换句话说,只要不动用root权限,随你怎么折腾。

5、其他特殊情况

python有个pip包管理器,可以自动安装各种python软件包,比如Django之类东西。

pip可以把软件安装到用户目录,也可以通过root权限安装到系统目录;但强烈不建议你动用root权限。

事实上,大多数Linux发行版的包管理器本身就可以通过系统软件仓库安装Django;你应该优先使用它而不是pip。因为前者可以保证不出现相容性问题。

当然,很多时候,Linux本身的软件仓库可能稍微“老旧”一些,让你得不到最新版的Django或者其他软件包;甚至有时候,它压根就没有某个流行python包。

这时候你可能不得不使用pip;那么,记住不要用su提升权限,让pip把软件包装给你自己用就行——如果的确需要多个账户一起用,那么可以把它安装到opt/var之类目录,但尽量不要让它直接进系统目录,以免造成混乱。

总结起来其实就一句话:如果你有丝毫含糊,请用系统软件仓库(yum/apt/yast),不要碰你不懂的东西!

——换句话说:对初学者来说,一个能解决你几乎所有需求的软件仓库才是最实惠的;因此请寻找软件仓库最新最全的Linux发行版(fedora/Ubuntu等),千万不要听所谓的“老鸟”瞎忽悠。

——同样的,如果你要寻找某个软件的安装/配置教程,请寻找和你使用的系统相同的、直接通过标准软件仓库(yum/apt/yast)安装的那种。除非是极不常见的小众软件、或者为了尝鲜某个软件最新版的某个新特性,凡让你绕开系统软件仓库的教程都是垃圾。

其实也不需要多么小心谨慎。关键是你得知道它是靠什么管理软件包的,尽量不要破坏它——那些著名发行版的测试还是非常完善的,极少出错(真错了你还可以提交个bug报告让他们改)。

换句话说,和Windows不同,Linux基础系统提供了太过丰富的内容、这些内容又组合起来、彼此互为基础的给你提供了很多很多的便利工具——这就使得这么多的库、编程语言、shell、shell script彼此依赖,成了一张网。

那么,当你安装一个基础软件(如python解释器)时,就很容易破坏软件网之间的依赖——相比之下,Windows因为默认不提供python/php/perl等等等等支持而显得清爽干净、不易出错。

但如果你的确需要这么多支持,那么你还是要在Windows上装它们、依赖它们、维护它们。这时候反而更加耗费精力。

Linux则有一个强大的社区,他们帮你把所有这些软件维护的井井有条、帮你解决了所有这些软件包之间的依赖问题,使得你可以“开箱即用”。

那么,你要做的,就是尽量配合他们,不要破坏他们已经解决好了的依赖网——对于真正用Linux而不是玩Linux的人来说,这才是选择不同发行版的最佳依据。

因此,强烈建议使用发行版自带的包安装工具,因为这样你才能真正利用好社区为你维护好的软件仓库。

如果迫不得已使用了你的Linux发行版软件仓库之外的软件,请尽量把它隔离出去——隔离的办法有很多很多,从设置路径前缀(从而把它安装到/opt或/var或其他位置)、利用chroot……不一而足。

反之,如果你像那些半瓶子咣当的教程一样,把软件make install到系统目录,你就不得不经常性的手动调整它们的依赖关系——这时候,你才不得不“小心谨慎”。

相关文章

  • 为什么linux安装程序会很麻烦?

    Linux下安装软件其实可以和Windows一样简便(其实是远比Windows简便);但安装软件的方式不止一种:和...

  • Linux(3) | Linux实践

    Linux实践 Linux安装程序 Linux安装程序的方法: 二进制文件安装 rpm -ivh *.rpm Y...

  • CentOS 7.4下安装Oracle 11.2.0.4数据库

    在Linux下安装Oracle数据库是一件较为麻烦的事情。 由于Linux的安装过程中可能会选择不同的安装包,会导...

  • 2020-08-11--docker

    1.什么是、好处:linux安装mysql、redis等环境的时候很麻烦,一个环境装错了可能会影响其他环境的使用、...

  • 从零开始学Linux二1120

    Linux课程---生信技能树(卖萌哥) 01-介绍篇 1.为什么用conda,因为源代码安装太麻烦。Linux系...

  • Linux操作系统day03

    Linux安装软件的三种方式 rpm安装 yum安装 源码安装 配置 编译 安装 编译型程序和解释型程序 程序语言...

  • archlinux手动安装mysql5.6.42

    不像之前那样,一条命令就可以安装好,手动安装真的很麻烦。但是这么麻烦为什么还要安装呢?还不是因为mysql5.7以...

  • R的安装与配置

    linux安装首推condaconda install R -p

    也可以手动安装,比较麻烦,未尝试wge...

  • linux 文件系统

    1 Linux文件系统基础知识 1.1 文件结构 Linux使用标准的目录结构,在Linux安装的时候,安装程序就...

  • Linux系统安装nginx

    Linux安装软件常用方法 rpm(或pkg)安装,类似于Windows安装程序,是预编译好的程序。 1.1...

网友评论

    本文标题:为什么linux安装程序会很麻烦?

    本文链接:https://www.haomeiwen.com/subject/ujtisctx.html