Software Installation on Linux
- Linux安装分为rpm包(可通过yum或者是rpm命令安装)和源码包(源代码或者是编译过的二进制码)两种。
- Linux是开源系统,很多应用都是开源以源代码的形式发布的,源代码形式除了阅读和修改方便以外,还可以兼容多平台,不同平台
- rpm包,.rpm结尾,源码编译后的二进制包,看不到源码,但安装速度快,不容易出现安装错误。安装的服务被默认为系统服务(redhat镜像文件本身就是rpm包),包安装在系统默认目录中。程序员在构建rpm包时会约定俗成的指定这些默认目录,使rpm安装的各个文件插入现有系统中的目录(opt,etc...)。删除时使用特定的命令可以自动去多个目录下删除相关文件。
- /etc
- /usr/bin
- /usr/lib
- /usr/share/doc + /usr/share/man
- 源码包安装,.gz结尾,直接解压可以看到原文件。所有的安装文件会在/usr/local 下面,删除一个文件夹即可卸载。因为安装文件仅在/user/local下,不能被一些系统命令启动(root cause系统命令往往是搜索特定路径起作用)如service chkconfig……除非手动去做更改。
- service命令只能启动rpm包安装的命令,因为service命令默认搜索路径/etc/rc.d/init.d/(所有rpm方式安装的文件都会在此目录下保存一个启动文件)。只有rpm包安装才会把启动服务放到该路径下,源码包安装不会,如果把源码包的启动文件拷到init.d目录下,service可以识别。
- chkconfig --list 查询rpm包自启动状态,可以查看系统安装过的所有rpm包,查看不了源码包安装服务状态。
RPM Software management (rpm 命令管理 & yum 管理)
- rpm两种管理方式:rpm命令管理 && yum在线管理
- rpm命名规则:名字-版本号-发布次数-适合的Linux平台.硬件平台.rpm
- rpm最大问题是依赖问题:树形依赖,环形依赖,库依赖。
- noarch 任何硬件平台,不写平台也意味着任何平台
- iso/packages 里会有大部分包,但这些包并不会全部安全,从运行效率和安全性的角度考虑,系统管理员会选择minimum的安装方式。如果要自己增加新的组件,将iso文件挂载,进入光盘目录找到需要的rpm包,运行安装命令。
RPM命令管理
- 可以去 www.rpmfind.net 下载所需要的依赖包,如果是Rhel或者是CentOS 可以去http://mirrors.163.com/centos/6/os/x86_64/Packages/ 下载相关内容
- RPM 安装包(rpm -ivh packagename.rpm)
- i-install安装 v-verbose显示安装信息 h-hash 显示安装过程
- RPM 删除包(rpm -e packagename)
- e - erase
- RPM 查询安装情况(rpm -qi packagename)
- q -query i- information
- 和grep结合起来非常好用 rpm -qa|grep python 就能轻易找到指定关键词相关的安装包名
- rpm -qi python 查询Python安装包的具体信息
- rpm -ql python 查询Python应用所在的所有目录
- rpm -qf filename查询安装程序中某个文件的名字
Yum 命令管理(最好只用于安装,yum删除会产生级联影响)
- 安装前提:需要可以联网,需要设置Yum源
- Yum源设置
- 网络Yum源(Redhat的网络yum源需要收费,因此可以删除yum源再重新安装配置其他yum源)
- 光盘Yum源(挂载redhat/centos.iso,指定光盘为镜像源并进行安装)
- Yum安装软件
- yum -y install packagename
- Yum搜索软件安装情况
- yum search packagename
- Yum删除软件(Yum最好只用来安装)
- yum -y remove packagename(high risk! cascade delete)
- Yum 更新软件
- yum -y update packagename (high risk!)
Source Code Software
management(有些程序官网只提供源代码包,比如python)
- 源代码包安装
- 解压以后查看Install或者是Readme文件,会有详细步骤说明如何安装。
- 源代码包删除
- 删除直接删除整个文件夹
更新Yum源和软件安装
可以有多个随意命名的yum文件,只要在etc/yum.repo下即可。
安装外部yum源
删掉原有配置文件
新增配置文件配置外部yum源即可直接使用
源码包安装:源码包安装步骤基本一致
1.解压下载源码包:tar -xzf 文件
2. 进入目录进行安装前检查和配置:./configure --prefix-指定安装路径,若不指定,默认安装路径/usr/local(累似windows c:programfiles),所有安装后的文件,包括bin和lib都在这个目录下面,删除安装直接删除整个文件夹即可。
3.编译:运行make命令,无需参数,在解压目录下即可
4.安装:makeinstall命令,无需参数,解压目录运行即可
启动服务,源码包安装无法通过service 服务名 start来执行启动或暂停操作,需要进入到相应的bin目录下运行启动或者关闭脚本。相应的,rpm安装方式下的软件对应的bin目录下就没有启动脚本,需要通过service开启或者关闭脚本。
应用程序的不同安装方式导致应用的管理方式也不同。实例:yum方式安装的tomcat和源码包安装的tomcat启动和关闭的方法就不同。
虚拟机上安装网络应用如果希望能被主机掉用,必须关闭防火墙!!!
安装应用必须看清楚对应的操作系统版本!!
不同安装方式的安装位置不同,因此源码包安装和rpm包安装对应的服务启动,停止和重启都不同。
对于源码包,启动停止重启脚本都在/usr/local/appName/bin 下,示例:
./zookeeper start/stop/restart。所有服务相关文件都在/local/appName下(除非配置的时候制定特殊安装目录)。rpm包可以通过 service调用,本质上是因为安装时系统把启动脚本放到/usr/bin,如果给源码包做一个软连接,也可以通过service启动源码包服务。(查 看下文件夹里到底包含什么)
对于rpm包,启动停止可以直接通过服务的
方式运行 service app start/stop/restart,示例:
service tomcat6 start/stop/restart
更改服务自启动状态
rpm 包可以直接通过chkconfig --list 查看各个级别下的默认启动状态,service --status-all查看所有服务的状态是启动启动中还是关闭,源码包安装的服务不可以。对两种安装方式来说,都可以通过/etc/rc.d /rc.local来设置(绝对路径加上 start,具体的启动脚本可以查看install的说明,并不总是服务名,apache的启动脚本就是apachectl)。
Linux的一切都是文件 只要安装位置不同你可以通过多种方式在linux上安装多个同样的应用。