序言

上一篇我们了解啦Linux系统中,根目录下的各个文件夹是做什么用的啦,也学会文件如何压缩打包。那么接下来我们就该用到这个系统啦。用这个系统,就是用这个系统的软件,那么我们对我们需要的软件如何安装,对不需要的软件如何卸载,本篇就此做个详解。

我们针对的系统为Centos,那么Centos的主要软件管理有3种,源码与tarball,rpm与srpm,yum。

我会在讲解每一种安装方式的同时,写一个我们开发常用到的软件实例的安装,源码安装redis,rpm安装rabbitmq,yum安装nginx。

源码与tarball方式安装软件的几个名词

在安装之前我们先说几个名词,对于开发人员来说应该是一目了然的。

开放源码:就是用编程语言写的程序代码,人懂机器不懂,无法在系统中执行。

编译程序:将程序代码转译成为机器看得懂的语言。

gcc:Liunx系统中最常见的语言为c语言,而c语言在linux上面最标准的编译程序就是gcc。它是由GNU计划所维护。对GNU有兴趣的话大家可以网上搜下资料。

利用gcc编译器进行程序的编译流程示意图:

可执行文件:经过编译程序变成二进制程序后机器能够看得懂所以称为可执行的文件。

函数库:类似子程序的角色,可以被调用来执行的一段功能函数。又分为动态函数库与静态函数库,动态函数库以so结尾,通常被命名为libxxx.so,编译时程序中只保存起指向地址,不合并到主程序中,所以主程序不能独立运行,需包含动态库,且动态库不可随意修改路径。静态函数库以.a结尾,通常被命名为libxxx.a,编译时会将其功能合并至主程序中,运行是不需要静态库的支持。

程序执行时引用外部动态函数库的示意图如下:

Tarball:这个更容易理解啦,就是为啦方面在网络上下载,软件开发者把源码打包压缩后,放到网上发布的软件文件。一般包含,源代码文件,检测程序文件(可能是configure或config等文件名),本软件的简易说明与安装说明(install或readme)。

Tarball方式安装Redis实例演练

基本步骤:

1、下载源文件至/usr/local/src目录下解压缩。

2、取得步骤流程:进入新建的目录下面,去查阅install与readme等相关文件内容。

3、相关属性软件安装:根据install与readme的内容查看并安装好一些相关的软件

4、建立makefile:以自动检测程序(configure或config)检测操作环境,并建立makefile这个文件

5、编译:以make这个程序并使用该目录下的makefile作为他的参数配置文件,进行make(编译)操作

安装:以make这个程序,并以makefile这个参数配置文件,依据install这个目标的指定来安装到正确的路径。

常用命令:

./configure:这个步骤就是在创建 Makefile 这个文件啰!通常程序开发者会写一支 scripts 来检查你的 Linux 系统、相关的软件属性等等,这个步骤相当的重要, 因为未来你的安装信息都是这一步骤内完成的!另外,这个步骤的相关信息应该要参考一下该目录下的 README 或 INSTALL 相关的文件!

make clean:make 会读取 Makefile 中关于 clean 的工作。这个步骤不一定会有,但是希望执行一下,因为他可以去除目标文件!因为谁也不确定源代码里面到底有没有包含上次编译过的目标文件 (*.o) 存在,所以当然还是清除一下比较妥当的。 至少等一下新编译出来的可执行文件我们可以确定是使用自己的机器所编译完成的嘛!

make:make 会依据 Makefile 当中的默认工作进行编译的行为!编译的工作主要是进行 gcc 来将源代码编译成为可以被执行的 object files ,但是这些 object files 通常还需要一些函数库之类的 link 后,才能产生一个完整的可执行文件!使用 make 就是要将源代码编译成为可以被执行的可可执行文件,而这个可可执行文件会放置在目前所在的目录之下, 尚未被安装到预定安装的目录中;

make install:通常这就是最后的安装步骤了,make 会依据 Makefile 这个文件里面关于 install 的项目,将上一个步骤所编译完成的数据给他安装到预定的目录中,就完成安装啦!

通过configure与make进行编译的示意图如下:

Redis实例安装:

下载:

解压:

编译:

设置配置参数:

启动:

验证使用redis:

总结下:其实在安装某些软件时,可能没有那么繁琐,就比如redis官方也有安装示例,大家看看就会啦,安装的方式有很多种,不必过于居于模式,但是一定要看官方的文档,不能胡乱一起瞎搞。

rpm与srpm基础理解

RPM全名是“RedHat Package Manager”,是RedHat公司发展出来的以一种数据库记录的方式来将你所需要的软件安装到linux系统的一套管理机制。

那么什么叫一种数据库记录的方式呢?就是开发发布者将软件编译过之后,打包成rpm基础的包文件,包中的软件都有头文件,头文件中记录这个软件需要依赖的软件,所需的服务器配置,及自身版本的一些信息,当我们安装这个软件时,rpm会根据这个头文件与liunx主机中的安装软件的记录信息做匹配,然后反馈环境是否满足,是否已存在,等等信息。

那么编译过后的软件,直接安装有什么优缺点呢?优点不用编译可快速安装,缺点:我们安装的主机环境必须要跟开发发布者编译时的环境一致。

那么什么叫做依赖的软件呢?很简单就想你安装MSSQL需要.NetFramwork一样,安装rabbitmq需要安装erlang环境一样。他们安装时都有依赖的软件或平台。

那么rpm与srpm的区别是什么呢?一张图搞定,如下:

rpm的包是什么样子呢?

首先先挂载cdrom到media下

查看rpm什么样子

看看有多少自带的Rpm包

哇自带3725个,基本够你用的啦。如果处理一些依赖软件或者自带的不能满足你的话,除啦软件官网下载之外,哥哥推荐三个网站:

http://rpm.pbone.net/

http://rpmfind.net/

http://www.rpmseek.com/index.html

Rpm命名规则

操作硬件平台

Rpm安装语法:

[root@localhost ~]# rpm -ivh package_name

选项与参数:

-i :install 的意思

-v :察看更细部的安装信息画面

-h :以安装信息列显示安装进度

一般情况下这一句命令,配上系统自带的rpm包与上面三个网站中的包就足够啦,如果不能解决你的问题的话,那要查看软件官方提供的安装文档。

如果你对软件足够的熟悉那么也可以采用下面的参数进行安装。

Rpm的升级与更新

Rpm的查询

Rpm验证与数码签章

上面查询是否被改动过中有......T. 这是什么意思呢?

  • S :(file Size differs) 文件的容量大小是否被改变
  • M :(Mode differs) 文件的类型或文件的属性 (rwx) 是否被改变?如是否可执行等参数已被改变
  • 5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
  • D :(Device major/minor number mis-match) 设备的主/次代码已经改变
  • L :(readLink(2) path mis-match) Link 路径已被改变
  • U :(User ownership differs) 文件的所属人已被改变
  • G :(Group ownership differs) 文件的所属群组已被改变
  • T :(mTime differs) 文件的创建时间已被改变
  • P :(caPabilities differ) 功能已经被改变

如果一个文件都被改动过,那么如下显示:SM5DLUGTP c filename

至于那个 c 代表的是“ Config file ”的意思,也就是文件的类型,文件类型有下面这几类:

  • c :配置文件 (config file)
  • d :文件数据文件 (documentation)
  • g :鬼文件~通常是该文件不被某个软件所包含,较少发生!(ghost file)
  • l :授权文件 (license file)
  • r :读我文件 (read me)

Rpm反安装与重建数据库

rpm --rebuilddb   ==重建数据库

Rpm安装rabbitmq实战

首先打开rabbitmq.com官网,他的安装页有rpm包。安装文档指示我们安装rabbitmq需要2大步骤。

1、先安装erlang环境,2、安装rabbitmq。

由此可知rabbitmq是依赖erlang环境的,下面我们先安装下erlang。

[root@localhost src]# wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_19.2~centos~7_amd64.rpm
--2017-02-07 14:10:27-- https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_19.2~centos~7_amd64.rpm
正在解析主机 packages.erlang-solutions.com (packages.erlang-solutions.com)... 31.172.186.53
正在连接 packages.erlang-solutions.com (packages.erlang-solutions.com)|31.172.186.53|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:43611864 (42M) [application/x-redhat-package-manager]
正在保存至: “esl-erlang_19.2~centos~7_amd64.rpm” 100%[==================================================================================================================================>] 43,611,864 446KB/s 用时 80s 2017-02-07 14:12:04 (530 KB/s) - 已保存 “esl-erlang_19.2~centos~7_amd64.rpm” [43611864/43611864]) [root@localhost src]# rpm -ivh esl-erlang_19.2~centos~7_amd64.rpm
错误:依赖检测失败:
libodbc.so.2()(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_baseu-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_baseu-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_baseu_xml-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_adv-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_adv-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_aui-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_aui-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_aui-2.8.so.0(WXU_2.8.5)(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_core-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_core-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_core-2.8.so.0(WXU_2.8.10)(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_gl-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_gl-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_html-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_html-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_stc-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_stc-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_xrc-2.8.so.0()(64bit) 被 esl-erlang-19.2-1.x86_64 需要
libwx_gtk2u_xrc-2.8.so.0(WXU_2.8)(64bit) 被 esl-erlang-19.2-1.x86_64 需要

由此可见安装erlang环境也是需要环境支持的。那么我们安装erlang需要的安装环境,那么我们首先需要安装非默认的第三方yum库。

[root@localhost bin]# yum install epel-release

然后安装erlang需要的安装环境

[root@localhost bin]# yum install unixODBC unixODBC-devel wxBase wxGTK SDL wxGTK-gl
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirror.premi.st
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
软件包 unixODBC-2.3.1-11.el7.x86_64 已安装并且是最新版本
软件包 unixODBC-devel-2.3.1-11.el7.x86_64 已安装并且是最新版本
软件包 wxBase-2.8.12-20.el7.x86_64 已安装并且是最新版本
软件包 wxGTK-2.8.12-20.el7.x86_64 已安装并且是最新版本
软件包 SDL-1.2.15-14.el7.x86_64 已安装并且是最新版本
软件包 wxGTK-gl-2.8.12-20.el7.x86_64 已安装并且是最新版本

然后就可以顺利的把erlang安装上啦

[root@localhost src]# rpm -ivh esl-erlang_19.2~centos~7_amd64.rpm

最后安装rabbitmq那也是顺溜的很啦。

[root@localhost src]# rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm 

启动/关闭rabbitmq服务

  • Whereis rabbitmq 找到bin/rabbitmq-server
  • ./rabbitmq-server 启动  Starting broker... completed with 0 plugins.  说明安装成功。
  • ./rabbitmq-server  -detached 后台启动方式
  • ./rabbitmqctl stop 关闭

启动端口

找到/etc/sysconfig/iptables ,如果不存在,随便一个iptalbles命令即可出现,如iptables -F 清除iptables已有的所有规则。配置如下端口对外开放。

[root@localhost src]# vim /etc/sysconfig/iptables
#RabbitMQ  
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT  
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT  
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT  
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT  
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5671 -j ACCEPT  
#RabbitMQ  

启动插件

./rabbitmq-plugins enable rabbitmq_management(执行一次以后不用再次执行)

客户端打开管理页面

输入:服务器地址:15672    默认gust,不可用。只能在服务端可用。

关于rabbitmq的详细内容以后我还会补充,以前也有一篇我自己的博文,有兴趣的可以点开看下:.Net使用Rabbitmq详解

yum安装软件详细

关于yum的使用是非常简单的,大家可以看下 http://man.linuxde.net/yum 多敲敲练练就会啦。

而文章一开始说yum方式安装nginx,那么命令看仔细啦啊。

[root@localhost src]# yum install nginx

对,你没有看错,在线安装,自动解决软件相互依赖问题,安装成功啦,就是这么简单。

这里值得一说的是yum的包源配置是在下面的文件中:

[root@localhost etc]# ll /etc|grep yum
drwxr-xr-x. 6 root root 95 2月 7 20:09 yum
-rw-r--r--. 1 root root 970 11月 15 23:30 yum.conf
drwxr-xr-x. 2 root root 4096 2月 7 20:10 yum.repos.d

在yum.repos.d这个文件夹下,你如何看懂文件中的内容,以及如何配置,那么你需要自行百度,我不想写啦

总结

接下来是大家最喜欢的总结内容啦,内容有三,如下:

1、希望能关注我其他的文章。

2、博客里面有没有很清楚的说明白,或者你有更好的方式,那么欢迎加入左上方的2个交流群,我们一起学习探讨。

3、你可以忘记点赞加关注,但千万不要忘记扫码打赏哦。

Linux系统(二)软件的安装与卸载的更多相关文章

  1. Linux Centos下软件的安装与卸载方法

    转载于: http://blog.csdn.net/zolalad/article/details/11368879 Linux下软件的安装与卸载   第一章   linux下安装软件,如何知道软件安 ...

  2. Linux基础整理-软件的安装与卸载

    redhat/centos/fedora/suse系列: 摘自网址:http://www.runoob.com/linux/linux-yum.html yum( Yellow dog Updater ...

  3. 在Linux系统(centos7)中,安装VScode,并在VScode上编写HTML网页

    [实验目的] 在Linux系统中,搭建编写HTML网页的环境.在VS code官网上,下载VS code安装程序,进行安装.在VS code软件中编写HTML页面,并正确运行. [实验步骤] 1)   ...

  4. Linux 下configure 参数配置与软件的安装与卸载

    Linux环境下的软件安装,并不是一件容易的事情:如果通过源代码编译后在安装,当然事情就更为复杂一些:现在安装各种软件的教程都非常普遍:但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而 ...

  5. Linux系统上查找已安装软件的路径

    在Linux系统上查找已安装软件路径的命令,以查找pcre的安装路径为例: [root@localhost doc]# rpm -ql pcre /lib64/libpcre.so. /lib64/l ...

  6. Ubuntu 中软件的安装、卸载以及查看的方法总结

    Ubuntu 中软件的安装.卸载以及查看的方法总结 博客分类: Linux UbuntuDebian配置管理CacheF#  说明:由于图形化界面方法(如Add/Remove... 和Synaptic ...

  7. Linux压力测试软件Stress安装及使用指南2

    stress工具使用指南和结果分析 Linux压力测试软件Stress安装及使用指南     一.Stress是什么 stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高 ...

  8. Linux系统中ElasticSearch搜索引擎安装配置Head插件

    近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...

  9. Linux 系统 pptpd+radius+mysql 安装攻略

    分类: 原文地址:Linux 系统 pptpd+radius+mysql 安装攻略 作者:wfeng .你所需要的软件 内核最好能升级到2.6 如果你是centos的用户,可以通过yum update ...

  10. Linux系统中tomcat的安装及优化

    Linux系统中Tomcat 8 安装 Tomcat 8 安装 官网:http://tomcat.apache.org/ Tomcat 8 官网下载:http://tomcat.apache.org/ ...

随机推荐

  1. 485. 找出二进制串中连续的1的个数 Max Consecutive Ones

    Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...

  2. NewTonJson.Net的使用

    1.引用“Newtonsoft.Json” 4.0 版本 2.基础类 using System; using System.Collections.Generic; using System.Linq ...

  3. iOS真机调试配置

    啊!生活不易啊~~~~据说这个过程都可以当做简历技能了... 准备:已经具备了企业开发者账号,和相关证书 目标:让爪机可以真机调试 过程:1.登录官方开发网站 https://developer.ap ...

  4. Ehcache jgroups方式同步缓存出现问题总结

    ehcache配置文件按官网配置如下: <?xml version="1.0" encoding="UTF-8"?> <ehcache> ...

  5. Java解析JSON文件的方法 (二)

    assets文件夹资源的访问        assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件.       1. 先在Activity里面调用g ...

  6. pandas 按照列A分组,将同一组的列B求和,生成新的Dataframe

    对于pandas中的Dataframe,如果需要按照列A进行分组,将同一组的列B求和,可以通过下述操作完成: df = df.groupby(by=['column_A'])['column_B']. ...

  7. HNU 13074 Goldbach’s Conjecture 解题报告

    题目大意:输入一个偶数(x<32000),输出这个偶数是由哪两个素数相加所得. 比如:一个偶数26,它可以是3+23,7+19,13+13,这些素数相加所得. 输入输出样例: Sample In ...

  8. bzoj 3611[Heoi2014]大工程 虚树+dp

    题意: 给一棵树 每次选 k 个关键点,然后在它们两两之间 新建 C(k,2)条 新通道. 求: 1.这些新通道的代价和 2.这些新通道中代价最小的是多少 3.这些新通道中代价最大的是多少 分析:较常 ...

  9. cf734 E. Anton and Tree

    这个题的题意还是很劲的.搞了好久才知道是怎么变得. (假设已经缩好了点,每次边中间颜色不同的,然后和就和他外面的相同,继续再变这个大的,依次类推,最多就是树的直径D/2) (还是英语水平太弱了(吐槽+ ...

  10. xml文档PHP查询代码(学习使用)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org ...