本节概要
Linux软件包介绍
rpm包管理
yum 包管理
源码安装软件
nohup 进程后台运行
环境准备
操作系统:Centos6.5,Centos7.2
一、Linux 软件包介绍
软件包管理工具的作用是在操作系统中安装、升级和卸载需要的软件,并提供对系统所有软件状态信息的查询。
Linux 操作系统中最常见的两类软件包管理工具为RPM和DPKG(Debian系列),分别对应基于RPM软件包的Linux发行版和DEB软件包的Linux发行版。
1. RPM
RPM全称为Readhat Package Manager,最早由Redhat公司制定实施,只能用于RHEL系列。一般以.rpm作为包的扩展名,缺点是rpm包间的依赖需要自己进行处理,管理命令rpm。
2. DEB
一个DEB包中包含了已经压缩的软件文件以及该软件的内容信息,一般以.deb作为包的扩展名,管理命令dpkg。具体使用可自己查阅,本节不做讲解。
3. YUM
YUM基于rpm包管理工具,可从指定的源空间(远程服务器、本地目录等)自动下载目标rpm包并安装,可自动处理rpm包之间的依赖关系。另外YUM可进行系统中所有软件的升级。
4. APT
APT全称为Advanced Packaging Tools,最早被设计成DPKG的前端软件,通过apt-rpm可以支持rpm的管理,APT主要的包管理工具为APT-GET,可以满足和YUM类似的功能要求。
可以借助工具Alien将RPM软件包转换成DEB软件包,或者将DEB软件包转为RPM包。
5. 源码编安装
无论是使用rpm还是yum安装都是使用的已经编译好的程序包,在整个安装过程中用户只需执行一条命令即可完成程序的安装,非常方便。
跨平台,但是由于使用的是已经编译好的安装包,所以用户的系统平台环境与rpm包提供者的环境需要是一致的。另外如果用户需要使用的是程序的某个功能而rpm包作者在编译过程中没有指定该功能此时可以使用源码编译的方式进行安装。
安全性,黑客对漏洞的利用一般需要先探查目标应用的版本,使用源码编译则可以在编译之前对应用的源代码进行修改,隐藏或者修改掉程序的版本信息。
二、软件包管理
1. RPM包管理
常用rpm包下载地址: http://rpm.pbone.net/,下载时需要看下rpm包适用的系统版本,也可查看到当前rpm包的依赖:
参数:
-q 查询软件或包的信息,判断软件是否安装
-i 安装软件
-U 升级软件
-e 卸载软件
-v 详细安装过程
-qlp 查询rpm包中包含的文件列表
-qip 查询某个RPM包的内容信息
举例:
以zsh(zsh rpm包可以在本节文件下载地址查看)为例,描述rpm包管理:
升级软件包:
[root@localhost ~]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:zsh-5.0.2-28.el7 ################################# [100%]
安装rpm包:
[root@localhost ~]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:zsh-5.0.2-28.el7 ################################# [100%]
[root@localhost ~]#
查询rpm包生成的文件,包未安装时也可查看:
[root@localhost ~]# rpm -qpl zsh-5.0.2-28.el7.x86_64.rpm
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
查询rpm包中包含的内容信息:
[root@localhost ~]# rpm -qpi zsh-5.0.2-28.el7.x86_64.rpm
Name : zsh
Version : 5.0.2
Release : 28.el7
Architecture: x86_64
Install Date: (not installed)
…
列出当前系统中所有已经安装的rpm包:
[root@localhost ~]# rpm -qa
gnupg2-2.0.22-3.el7.x86_64
libusal-1.1.11-22.el7.x86_64
gnome-shell-extension-alternate-tab-3.8.4-12.el7.noarch
pyparted-3.9-11.el7.x86_64
…
卸载rpm包:
[root@localhost ~]# rpm -e zsh
如果卸载的软件有依赖的话需要先卸载掉依赖。
2. yum 进行包管理
举例:
安装软件
yum install –y package-name
列出系统中已经安装的软件
yum list
升级软件
yum update package-name
列出系统中可升级的软件
yum check-update
升级系统中可升级的所有软件
yum update
卸载软件
yum remove package-name
3. 源码编译安装软件
程序的源码编译安装过程一般分为:./configure -> make -> make install。
./configure 是一个配置脚本,用于检测系统环境,查看当前的环境是否满足接下来要编译的程序。
make 对代码进行编译,不指定核心数默认是单线程编译。
make install a安装,默认单线程。
源码编译安装nginx:
安装依赖软件:
yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
下载nginx源码压缩包:
wget http://nginx.org/download/nginx-1.6.2.tar.gz
解压源码包:
tar -zxvf nginx-1.6.2.tar.gz
编译安装nginx:
cd nginx-1.6.2/
./configure --prefix=/usr/local/nginx-1.6.2 --sbin-path=/usr/bin/nginx
make #编译
make install #安装
nginx #启动nginx
nginx –v #安装成功可以查看到nginx的版本
ps –ef | grep nginx #查看nginx是否在运行
三、nohup 进程后台运行
应用部署完后需要将应用运行起来,对外或者对内提供服务,根据应用的不同可以采用不同的运行方式。
1. 守护进程
守护进程(daemon)是脱离终端并且在后台运行的进程,脱离终端是为了避免进程在执行过程中信息在终端显示,这样进程在运行过程中也不会被任何终端产生的信息打断,如果程序是一个守护进程,则可以在程序启动命令的结尾加&让程序在后台持续运行,比如在后台运行mysql进程: / usr/local/mysql/bin/mysqld_safe –user=mysql &
常见服务一般都是在后台运行,如httpd、nginx、redis-server等。
2. 非守护进程
程序如果不是守护进程,直接在程序启动命令后加&后,如果关闭控制台终端则程序会停止运行,此时可以借助nohup实现程序在后台的持续运行。
以node.js应用为例,使用nohup启动时命令如下:
nohup /usr/local/node/bin/node /www/app.js >> /usr/local/node/output.log 2>&1 &
参数解释:
/usr/local/node/bin/node : node的路径
/www/app.js :应用
output.log : 应用日志的输出位置,包含正常日志和错误信息的日志
2>&1 & :表示标准错误的输出也输出到标准输出中,即output.log文件中。
如果不指定日志输出的位置,默认会在当前路径下自动生成一个output.log文件。