linux下的软件安装有两种:编译源码和包安装
编译源码:
一般就是下载*.tar.gz包,解压,./configure make make install。
然而在安装的时候会遇上包依赖问题,还有如果没有root权限,在make install的时候会被拒绝。
以memcached为例就是需要libevent包的支持,所以在安装的时候需要先安装libevent。然而我们怎么知道每个软件需要依赖什么包呢然是看错误提示了。错误提示会告诉我们,这个包需要些什么包,将其一一安装就可以了。这时其实可以通过apt-get(Ubuntu)和yum(RedHat)方式在线安装的。或者先下载下来按照源码方式安装。下面以memcached的安装为例
下载memcached源码包memcached-1.4.0.tar.gz和libevent-2.0.13-stable.tar.gz
先安装libevent:
1. #cd /Downloads
2. #tar zvxf libevent-2.0.13-stable.tar.gz
3. #cd libevent-2.0.13-stable
4. #./configure –prefix=/usr
5. #make
6. #make install
注意./configure后面的–prefix=部分,这里指定的就是libevent的安装目录,如果没有root权限,一般情况下是不能安装到/usr目录下的(因为我们没有对这个文件夹下创建文件,读写等权限),这是可以指定自己本用户下的目录如/home/username/libevent
同理安装memcached:
1. #cd ..
2. #tar zxvf memcached-1.4.0.tar.gz
3. #cd memcached-1.4.0
4. # ./configure –prefix=/ —with-libevent=/usr
5. # make
6. # make install
同样,–prefix是指定memcached安装目录的,而–with-libevent=/则是指定memcached依赖的libevent包的。这里如果安装其他软件,在readme里应该会说明的,依赖包的参数路径依赖应该怎么写。具体好好看看readme肯定能找到的。同样强调,如果是非root权限,那就安装到本用户目录下。
包安装方式:
RedHat的rpm安装,下载rpm形式的包,直接rpm -ivh *.rpm即可。
rpm的是软件管理工具,会有自己数据库,记录着软件的安装信息,包括依赖等。如何依赖某些软件他会自动的进行安装。不过这需要我们系统的环境与当初打这个*.rpm的包的环境是一样的。因为这里都是编译好的啊,而且是根据当初编译的环境编译的,我们的环境当然要一样才可以了。所以选择好版本很重要。
rpm软件管理很方便的是,他还可以查询,比如rpm -ql 软件名,就能查找到该软件的安装位置。而源码安装只能记住当初自己安装的目录了,当然还是有grep可以帮助查找的。ls -la /usr/local |grep 软件名
升级:混合安装
软件的查找上面说了,rpm -ql 软件名 可以查找rpm安装的软件,但是这种方式却无法查找到用源码安装的软件。因为源码安装不会在rpm的软件管理数据库中写入任何东西的。所以当然查不到了。
然而如果我们开始用rpm安装了软件,但是现在想升级了,当然如果还用rpm方式升级很简单,一般rpm会帮我们管理哪些需要在多安装的,我们只需要rpm -Uvh或者rpm -Fvh就行了。具体的含义如下
-Uvh后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自劢更新至新版;
-Fvh如果后面接的软件幵未安装到你的 Linux 系统上,则该软件丌会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』!
如果是源码安装的方式,给原来的删除,重新再./configure make make install就好了啊
那么问题来了:开始用rpm安装,升级用源码升级,这怎么办呢/p>
一般会发现,用源码安装后,rpm -ql 软件名 得到的依然是旧版的软件。这是一定的啦,因为源码安装方式本来rpm就看不到嘛!可是,我们怎么确定是不是以后应用中是不是用的升级过的软件啊。
好办,用rpm找到旧版的安装目录,用源码安装是./configure 配置到那个目录下就可以了啊。
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24701 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!