怎样在Linux中安装软件
时间:May.04, 2007 | 分类:Linux
原文: Installing software in Linux 翻译: LinuxRen
在Linux中安装软件和在Windows安装软件是大大不一样的。追其原因是哲学上造诣的差别:-) GNU/Linux是免费的操作系统,同时其下的软件大部分也是免费的。并且这些免费软件之间很多都相互依赖,相互配合地完成用户的工作。
从安装包中安装
这里的安装包可以理解为Windows下的EXE文件,但是在Linux有着不同格式的安装包,分析这些安装包之间的不同不是本文的重点,但是了解一下还是很有用的。最流行的有三种:
RPM:最初出现在RedHat系统中,现在已经被很多系统所支持,比如: Suse, Mandriva, Fedora Core, Yoper 以及 PLD Linux
DEB: Debian格式的安装包,现在在Debian的衍生系统中经常见到, Ubuntu, MEPIS, Xandros 和 Knoppix
TGZ: 被 Slackware Frugalware, KateOS Arch Linux以及大部分Linux系统所支持的传统安装包,
DEB和RPM双击就可以自动安装,但是你也可以使用命令的方式来安装。
RPM:
rpm -Uvh package_name.rpm
DEB:
dpkg -i package_name.deb
假如你要安装的软件包有依赖性的话,那么这种办法就很愚笨,心烦了。使用包管理器可以解决这个问题。
从包管理器中安装
为了使得软件的安装更加简便,各Linux发行版本都有一个叫做包管理器(software
repositories)的应用程序来同意管理已安装和未安装的应用程序,函数库,驱动以及文档。常见的包管理器有:APT (Debian系统), Yast (Suse系统) and Smart (Mandriva, Yoper, 等)。包管理器这一概念是革命性的,通常安装软件的步骤是在网络上寻找,下载,双击安装,然后一路”Next”。而在Linux中,一个简单的命令可以代替所有上诉的一切,包括环境配置,听起来不错吧。
大多数的Linux发行版本都提供这样的包管理器来安装,配置,卸载软件,并且都提供命令行以及用户界面的方式。当你知道你要安装什么软件的时候,命令行会是非常快的一种方式。比如下面的命令会在Ubuntu或者Debian中安装Mozilla Firefox:
apt-get install firefox
而下面的命令会搜寻所有的编码器:
apt-cache search codecs
相应地,Mandriva有urpmi和smart, Fedora有yum, Arch有pacman,但是功能都是相似的。最著名的提供用户界面方式的软件是Synaptic。
对于大多数Linux发行版本来说,我们推荐您从保管理器中安装软件,主要的原因是这样可以解决软件的依赖性。除非在默认的包管理器中没有找到你要安装的软件的时候,才使用其他的方式。但是这些包往往会被添加到保管理器中,并且很容易找到的。
以二进制的方式安装
这种方式来自于Windows的系统。由于一些程序的许可并不希望你看到其源代码,比如NVIDIA 和ATI的驱动(尽管有很多人开发出了仿制的驱动),为了保护起见,你得到的仅仅是一个黑盒子,你不知道里面有什么,并且祈祷你所安装的软件可以运
行。
需要注意的是如果你以root的方式安装二进制安装包的话,很有可能对系统有一定的危害,因为你不是这个安装包的作者,你不知道里面有什么。还是小心为妙。
其实安装二进制安装包也非常容易,为了能够运行,待安装的包需要有运行权限,所以在运行之前需要授予其执行的权限:
chmod u+x the_file
之后就可以运行该安装包了
./the_file
前面的./表示在当前目录下找文件the_file。
编译安装
手工编译是安装软件最传统的方式,GPL协议的程序都提供相应的源代码,意味着你可以手工编译安装它们。在Gentoo系统以及大多数的BSD系统中,使用这种方法安装软件比较好。如果合理的对安装选项进行配置的话,安装后的软件会运行的很快。但是另一方面,手工安装并不好使,因为你需要手工解决软件依赖性问题。并且很浪费时间(编译KDE或OpenOffice会花费你几天的时间)。
为了编译软件,我们需要一个编译器,通过执行下面的命令可以查看我们的系统中是否有编译器
gcc --version
如果没有的话,就需要安装上(推荐使用包管理器安装)。在一些Linux发行版当中,编译软件所需要的所有程序都被放在一个包中,比如Ubuntu上这样的包叫做build-essenctial
下面是安装二进制安装包的一般步骤,注意,这些命令需要在安装包所在的当前文件夹中运行。
./configure
make
make install
运行完后,程序应该安装到了我们的系统当中。如果过程中出现错误的话,我们需要仔细地阅读错误信息,或者安装其他的软件来解决软件的依赖性。一般所依赖的软件都在随包的INSTALL文件或者README文件中列出来了。
如前所述,在像Gentoo的系统中,以二进制包安装软件是系统默认的方式,但是Portage却可以使得这一过程变得简单一些。看起来跟使用APT或者urpmi很类似,在Gentoo中相应的命令是emerge,比如
emerge mozilla-firefox
这个命令会从网路上自动下载firefox的源代码,并且自动编译,然后将其安装到我们的系统当中。如果出现软件依赖性的话,那么相应的所依赖的软件包也会被自动下载,编译,安装,这种方式不错,唯一的缺点是编译软件很费时。
但是自己编译软件确有自己的好处,我们可以根据自己的需要自己定制要安装的软件。你可以删除不需要的功能,并且将默认不会安装的功能激活。所以,当你需要一些特殊的功能,或者一些处于测试期的功能的时候,从源代码编译软件是唯一的选择。
软件依赖性
我们一直提到软件依赖性,那么什么叫软件依赖性呢?简短的描述就是一个软件如果要正常地工作的话,需要系统中预先安装有另外一个软件。为什么会这样呢?这就要上述到Linux以及免费软件的历史时期了,GNU/Linux是由不同的模块组件起来的,每个模块各司其职,并且很好的完成了各自的任务。每个模块之间通过一些API可以相互之间进行通信,并且使用彼此的功能。所以当不同软件有着不同的功能的时候,那么我们就不需要重新写代码了,而是共享这一代码。这样程序员和用户都节省时间。
解决软件依赖性的方法有两种,一个是安装static packages,里面包含有所有依赖性的软件,可以解决软件依赖性问题,但是却需要太多的磁盘空间。另外就是dynamic packaging,也就是平时保管理器会自动处理的,但是却会出现dependency hell问题。唯一使用static packages的是PC-BSD系统
如何运行我刚才安装的软件
一般情况下,所安装的程序不会自动创建快捷方式,如果需要的话,可以自己创建,一般情况下,软件会安装在两个系统目录中,如果你使用包管理器安装的话,会出现在
/usr/bin
而手动编译安装的会出现在
/usr/local/bin
在上面的两个目录中找到你安装的程序,运行就对了:-)
May 4th, 2007 on 6:42 am
Hi, I see you transleted some of the articles From PolishLinux.org. Perhaps you wuld like to think about working together with other Chinese PolishLinux readers and produce a Chinese version of the whole website? The guys at http://wiki.perchelinux.org/ are doing great job at translating to Italian, so why not Chinese? Please consider this.
michuk
May 4th, 2007 on 3:02 pm
[Comment ID #55643 Will Be Quoted Here]
Hi, Im that Tristan who left a message on your website. Yeah, the translation has been started, and I’ll continue to translate more articles. The only thing worried me is that I’m not sure all the articles can be translated correctlly, since i’m not a linux programmer, but just a fan. I studied most of the linux knowledges in college, so there’re still lots of things i dunno.
Up to now, as i know, im the only one that who want to translate the PolishLinux to Chinese, and I only do the translation work in spare time. I’ll do the job myself before some other ppl joined the translation. When almost all the translations are done, I’ll publish these things as a brand new site, and I hope you can help me, coz I’m not good at wordpress.
Polishlinux really is a good website for linux newbies to begin with.
Sorry for my bad english.
Tristan.
May 13th, 2007 on 4:36 pm
I think it would be the best idea to translate the vortal on a wiki-driven page like the Italian translation (on wikidot) and them put it on a Wordpress-driven site just like the current Polish and English versions.
I will create such a site (by copying the English vortal into another wordpress instance) and then you could copy the translations From Wiki to Wordpress (using the Wordpress admin tools).
Announcing the translation on some Chinese Linux forums and usenet groups could be a good idea and could bring you more translators to make the process faster.
Anyway I fully support the project and if you need technical help pleas do not hesitate to ask me (either by e-mail: michuk@polishlinux.org or via Jabber: michux@jabber.org).
May 13th, 2007 on 6:47 pm
BTW, I created a topic on our forum about this: http://www.nuxified.org/topic/chinese_translation_anyone
Hopefully there will be some feedback.
May 16th, 2007 on 3:03 pm
[...] PolishLinux是一个面向Linux初学者的网站,网站内容是从一个波兰语的Linux网站翻译过来的,前些时候随便翻译了几篇文章就被作者盯上了,怎么也要让给弄个中文版本的PolishLinux,几次催促之下,我也下了决心。 [...]