当前位置 : 主页 > 操作系统 > centos >

Linux软件安装-详细源码安装过程

来源:互联网 收集:自由互联 发布时间:2022-06-20
1.简介 软件的安装是linux学习时的重中之重,*nux上重要思维哲 学组合若干小功能进而成为一个可用可维护的系统平台.那么在 操作系统构建完成之时,除非内核等支持系统必需软件之外,可

1.简介

       软件的安装是linux学习时的重中之重,*nux上重要思维哲

学组合若干小功能进而成为一个可用可维护的系统平台.那么在

操作系统构建完成之时,除非内核等支持系统必需软件之外,可

拓展可维护的任务都是要交与管理员完成,这里面包括了基本的

软件安装.那今天我们就总结归纳一下在linux上软件安装的方式

方法.


2.分类

   a) 包管理工具

   rpm(redhet package manager),deb 与 yum 前端管理

   工具

   b) 源码形式

   提供src源码,常见 tar.gz,tar.xz,tar.zip 通常需要在

   机器上先编译之后才能去安装

   c) 二进制格式

   已经编译成为二进制格式,可以在没有编译环境下的机器上运行.

   当然这种形式随着包管理工具的成熟被逐渐消亡,并不在本文讨

   论的范围内.


3.使用

a) 包管理工具

   rpm包含类redhat系完整的一套关于软件的安装维护的可行性

   方案,所有rpm包遵循事实标准,这样避免了我们在使用时的成本

   .rpm包的命名也有一定规则,例如 mysql-5.1.66-2.el6_3.

   x86_64.rpm产品名称-产品版本号-rpm包版本号-适合操作系

   统-计算架构.rpm

       i) 安装/升级/重装

rpm -i/U/Fvh mysql-5.1.66-2.el6_3.x86_64.rpm i install 安装包(可接网络地址) v verbose 安装详情 h hash sign #表示的安装进度 2%一个#号 --nodeps 忽略包之间的依赖关系

       ii) 移除

rpm -e mysql e erase 移除当前包 --nodeps 移除包忽略包之间的依赖关系

       iii) 查询

rpm -q mysql q query 查询包是否以安装 qa query all 查询所有安装的包 qd query document 查询安装过后的文档信息 如man信息 qi query information 安装后查询包信息 包括包名,版本 ,大小组别信息,url,license,url,描述信息等等 qc query configure 安装后配置文件所在位置 ql query list 安装所产生所有文件列表 # p 参数可以与之前参数配合 qpa qpi等等

       iv) 校验

       我们维护的绝大数机器都是生产工具,不容懈怠.所以对于软件

       的管理不容出现纰漏,那么对于互联网内容我们只能怀着批判

       的情怀来进行使用.这里就需要做包完整校验与身份校验,用来

       确保我们所使用的包都是没有病毒后门程序的

rpm --import key 导入包制作者公钥 rpm -K mysql-5.1.66-2.el6_3.x86_64.rpm


   b) yum前端管理工具

       这是一个将前面的所有rpm包汇总成库在客户端查找库并进行软

       件管理的工具,将易用性进行大大提高,方便用户以多种形式进行

       rpm包的管理操作.常见的方式http,ftp,nfs,file等等.当然

       前提是配置好 /etc/yum.repos.d/*.repo 的参数.

       *.repo参数一览

[media] repoid唯一 name=media name名称自定 baseurl=file:///media/协议路径 enabled=0 是否启用该库 gpgcheck=1 是否进行身份审查 gpgkey=file:///media/RPM-GPG-KEY-CentOS-6 KEY cost=1000 使用库代价(多库)

       # yum 常用命令一览

yum install mysql 安装包 yum erase mysql 卸载包 yum update mysql 可升级一个或多个包 yum list mysql 查看库上所有包 yum repolist 查看库上包数量 yum grouplist 组别信息(分类管理包) yum groupinstall 安装组包 yum groupremove 删除组包


   c) 源码安装

       # 0 首先去内网ftp服务器中下载nginx的源码包,当然你也可以

       去 nginx官网这里download最新的nginx源码

lftp ftp://172.16.0.1/pub/Sources/sources/nginx/ get nginx-1.4.2.tar.gz bye

       # 1 解压缩nginx

tar -xf nginx-1.4.2.tar.gz rm -rf nginx-1.4.2.tar.gz

       # 2 在编译nginx之前,先安装nginx的依赖包pcre-devel

yum -y install pcre-devel

       # 3 完成pcre-delel后,指定nginx编译bin目录及conf文件目录

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf

       # 4 编译并安装nginx

make && make install

       # 5 启动nginx服务

/usr/local/nginx/sbin/nginx

       # 6 查看端口状态,此时应该看到80端口的出现

netstat -tnl | grep ":80"

       # 7 命令测试及查看文件已证安装状态

wget http://localhost stat ./index.html

       # 00 到此为止nginx的安装告一段落,我们可以再处理一些其他事情,

       在 # 5 步骤启动nginx服务的时候,大家可能会发现启动目录过长,

       并且无法去停止nginx,这些问题继续困扰着我们.我们接下来继续处

       理一下这些问题.


       # 01 目录过长解决反感,其实我们希望使用最短命令实现效果,win32

       与linux目标一致,都会有环境变量,这里便是在修改nginx的环境变量,

       使得用户在任意目录都可以直接敲出nginx命令

vim /etc/profile.d/apache.sh PATH=/usr/local/nginx/sbin:$PATH .source /etc/profile.d/apache.sh # 重新读取

       # 02 搭建好了web服务器,我们希望其他人也能访问这里,于是我们

       需要在linux的防火墙上给它留个出口(ps: 大家可以想象互联网就是

       一个大版图,每一台计算机都是一座城池,某天其他城邦的使者来访

       问我,那我必须给它留一个入口)

vim /etc/sysconfig/iptables -I INPUT -p tcp --dport 80 -j ACCEPT service iptables restart

       # 03 开机启动(大家可能会发现刚才配置好的nginx,在机器重启了

       之后不能再用了,检查发现重启后80端口的监听已失效 # 6 操作,

       这些我们需要自己动手去完成一个简单的脚本,使其能够开机启动,

       当然一般情况下nginx会自带这个脚本,我们来去熟悉一下过程 :)

vim /etc/init.d/nginx

       # 03-a 重中之重  linux与win32一样也会有服务这个说法

       # 这里的意思是告诉机器,当前这是一个服务脚本,将来需要添加到

       # 服务列表时起效果

       # chkconfig: 2345 55 25

       # description: nginx service

# chkconfig: 2345 55 25 # description: nginx service

       # 03-b 首先定义了一些基本的变量

       # 包括 路径

PATH=$PATH

       # 软件名

NAME=nginx

       # sbin路径

SBINPATH=/usr/local/nginx/sbin/$NAME

       # 配置文件路径

CONFIGFILE=/usr/local/nginx/$NAME.conf

       # pid文件(linux守护进程文件,简言之线程编号,此文件存在证明nginx

       # 启动了,如果它不在了,nginx可能也不能访问)

PIDFILE=/usr/local/nginx/logs/$NAME.pid

       # 03-d 判断sbin文件与匹配文件是否存在,否则提示

[ -e "$SBINPATH" ] || echo -n "$SBINPATH No such file or directory" [ -e "$CONFIGFILE" ] || exit -n "$CONFIGFILE No such file or directory"

       # 03-e 启动nginx命令  nginx start

start() { $SBINPATH -c $CONFIGFILE || echo -n "nginx already running" }

       # 03-f 关闭nginx命令  nginx stop

stop() { kill -INT `cat $PIDFILE` || echo -n "nginx not running" }

       # 03-g 判断用户输入执行不同的命令

case "$1" in start ) echo -n "$NAME Starting..." start ;; stop ) echo -n "$NAME Stopping..." stop ;; restart ) echo -n "$NAME Restarting..." stop start ;; * ) echo "Usage: /etc/init.d/$NAME {start | stop | restart }" &> /dev/null exit 1 ;; esac exit 0


       # 完整代码 startup.sh

#!/bin/bash # PATH=$PATH NAME=nginx SBINPATH=/usr/local/nginx/sbin/$NAME CONFIGFILE=/usr/local/nginx/$NAME.conf PIDFILE=/usr/local/nginx/logs/$NAME.pid [ -e "$SBINPATH" ] || echo -n "$SBINPATH No such file or directory" [ -e "$CONFIGFILE" ] || exit -n "$CONFIGFILE No such file or directory" start() { $SBINPATH -c $CONFIGFILE || echo -n "nginx already running" } stop() { kill -INT `cat $PIDFILE` || echo -n "nginx not running" } case "$1" in start ) echo -n "$NAME Starting..." start ;; stop ) echo -n "$NAME Stopping..." stop ;; restart ) echo -n "$NAME Restarting..." stop start ;; * ) echo "Usage: /etc/init.d/$NAME {start | stop | restart }" &> /dev/null exit 1 ;; esac exit 0


       # 03-h 退出vim编辑器 , 为当前脚本赋予执行权限

chmod +x /etc/init.d/nginx

       # 03-i 在服务列表中添加nginx服务,如果刚才 #03-a 的重中之重

       你没有听取意见的话这里是没有办法完成的 :)

chkconfig --add nginx

       # 03-j 讲nginx的服务添加的开机选项的345级别

       # 原谅我在最后激动的时刻再啰嗦一下,善哉善哉 :)

       # chkconfig --level 一共分为 0-6 7个级别

       # 这个过程与linux的启动非常有关系,可以参考

       # http://apprectice.blog.51cto.com/2214645/1362564

       # 345 基本可以对应其上的加载过程

chkconfig --level 345 nginx on

       # 03-k 这时候你可以随心所欲的 nginx { start | stop | restart }

       # 停止也不会有问题 :)

nginx start

   d) bin文件安装

       bin文件的安装非常简单,因为它是shell与rpm的结合体,一般情况

       基本不用额外配置,直接执行bin就可以了.


网友评论