程序包管理:rpm , yum ,与编译

1.RPM,Redhat Package Manager。是Redhat和CentOS等Linux系统上常见的软件安装工具。

软件安装:

常见选项

-i                #install,安装
-v                #详细信息
-vv               #更加详细的信息
-h                #显示进度条,一个#表示2%
--test            #测试安装,但不是真正执行安装,dry run 模式
--nodeps          #忽略依赖关系
--replacepkgs     #重新安装
--nodigest        #不检查完整性
--nosignature     #不检验来源

软件升级:

rpm {U|--upgrade} [install-options] package_file...
rpm {F|--freshen} [install-options] package_file...
    upgrade            #系统已经安装了旧版程序的,则升级;没有安装过程序的,则安装。
    freshen            #系统已经安装了旧版程序的,则升级;没有安装过程序的,不安装。
    --oldpackage       #降级
    --force            #强制升级

软件卸载:

-e               #earse,卸载

rpm.png

rpm安装的常见选项配搭是ivh。加上v和h是为了更加美观,和能够看安装状况。

但是我们可以看见rpm在卸载和安装的时候,有时候会由于依赖关系而安装失败。

而且这些依赖关系要安装软件的人手动解决,如果依赖关系真是费时费力。

所以在安装软件的时候,可以选择自动解决依赖关系的yum。

软件查询 Query

rpm {-q|--query} [select-option] [query-option]
一般选项:
-a            #列出所有系统安装了的包
-f            #根据文件查询指定文件是由哪一个包 安装而来
-p            #查询未安装的包所提供的文件

[query-option]#特定选项
-i            #information,查看包的介绍信息
-c            #configfile,查看提供的配置文件
-d            #doc,程序软件提供的帮助文档类文件
-l            #查看指定程序包安装后生成的所有文件
-R            #查询指定程序包所依赖的CAPABILITY
--scripts     #查看程序包所带的四种脚本
--provides    #列出程序包所提供的功能(capability)

常见组合: qf、qi、qc

qf_qi_qc.png

我们可以通过-qf选项来查找出命令 是由什么包安装而来。

接着,我们也可以使用命令引用,把-qf输出的包名输出,再给-qi来查询包的详细信息

而-qc和-qd选项则可以只输出这个包中的配置文件,和帮助文档。

qRequire.png

-R选项,则是Require的缩写。具体是列出包所依赖的功能(capability),具体也就是一些模块或者其他的软件。

大概是用来解决依赖关系,但是后来的yum由于可以通过repodata文件来自动分析,所以现在一般很少用。

--provide.png

而–provides选项则用来输出这个包提供了一些什么模块,或者功能(capability)。

由于coreutils提供的是一些主要的常用软件,所以能看见提供了很多命令。

假如我们查询的是一个没有安装过的包,也就是特定路径下的rpm包,要使用-i,-c,-d,则需要配合-p选项。如,-qpi

qpi.png

2.yum文件包管理     Yellowdog Update Modifier

yum安装软件的优势

yum会从yum源中获取文件列表和依赖关系。

每一次创建cache的时候都会请求文件列表的校验码,来识别软件包是否有更新(repodata.xml)

配置文件

/etc/yum.conf                #为所有仓库提供公共配置
/etc/yum.repos.d/*.repo      #为仓库的指向提供配置

yum repository:yum repo    yum仓库

储存了众多rpm包,以及包的相关的元数据文件。而yum的配置文件*.repo必须指向repodata目录中repodata.xml所在的地方。

列出当前系统中所有资源库:

yum repolist

yum repolist.png

如何自己手动指定一个yum源?

在/etc/yum.repos.d/创建一个以repo结尾的文件就可以!

假如已经自带的Base文件已经失效,可以在/etc/yum.repos.d/下面随便创建一个文件夹。

然后把原有的repo都复制到里面去,那么系统自带的仓库就都读不到了。

repo.png

repo文件的格式。

这里最主要的是baseurl这个地址,因为这个地址指向服务器repodata文件。

其次name字段则是在初始化仓库的时候显示的名字。

当gpgcheck为0的时候,gpgkey也就不用添加也可以了。

而且enable的默认选项是1,0则表示不启用。

repofile.png

我们可以初始化之后列出的仓库多了一个Mirror_aliyun

看到配置文件的中括号里的内容对应repoid,name字段则对应repo name。

为了提高通用性,repo提供一些变量$basearch以$releasever,

分别表示系统架构以及发行版本,也就是CentOS7的7,以及x86_64.

完成了yum源的配置之后,我们就可以查看或者安装软件了。

yum info.png

yum的info子命令,类似于rpm -qi,同样输出包的信息。

yum install httpd.png

执行yum install httpd

自动解决软件包之间的依赖关系

3.编译安装(CentOS6上)

前期的准备;

首先要安装编译的环境

yum groupinstall "Development Tools" "Desktop Platform Development"

然后要获得源码包,可以通过wget等方式下载到源码包。

然后解压得到的压缩包,并且切换到源码的目录里面

编译的三大步骤:

(1) ./configure      

            #这个脚本主要用于检查各种指定特性所依赖的外部文件

            #配合各种选项,可以启用特性和调整软件的安装路径等。

示例:编译httpd2.2

./configure --prefix=/usr/local/apache --sysconf=/etc/httpd2.2 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

./configure检查期间,假如报错,可能是一些依赖的devel包没有装。

装上特性所依赖的包之后,再执行一次./configure脚本也是没有问题的。

configure.png

       

(2)make

    在./configure文件检查没有问题之后,执行make。就会自动地编译。

make1.png

make2.png

(3)make install

make install命令实际上是把已经编译好的软件复制到对应位置的一个命令。

所以在三大步骤里面,问题最多的是第一步./configure。

makeinstall.png

编译好之后。

  1. 把软件添加到PATH变量的路径中:修改/etc/profile.d/httpd.sh

    添加一行:PATH=程序二进制执行文件所在的目录:$PATH

    如,PATH=/usr/local/apache/bin:$PATH

    那样重新开机之后,系统用户初始化环境的时候就会能在PATH中读到二进制的文件,而不用每次都是用完全的路径。

  2. 添加二进制执行文件所依赖的库文件 到 需要加载的库中

    系统能顺利找到了二进制文件之后,我们还要让系统能顺利找到二进制执行文件所需要的库

  所以我们要在/etc/ld.so.conf.d/目录下创建一个与软件同名的conf文件

    如,/etc/ld.so.conf.d/httpd.conf

  然后再往里面添加一行库所在的目录/usr/local/apache/lib,并使用ldconfig来重新生成缓存

3.导入include头文件

可以选择复制,或者做软连接的方式,把include目录下的文件都复制到/usr/include目录下

include.png

4.导出帮助手册

最后我们编辑一下/etc/man.conf文件,在里面添加一个MANPATH条目

manpath.png

  

最后重新登录一下之后,我们就可以使用apachectl start命令来启动httpd,并使用ss命令查看使用状况

ss-tnl.png

使用浏览器直接访问ip的时候,运行成功。

work.png

原创文章,作者:菠菜,如若转载,请注明出处:http://www.178linux.com/13457

(0)
菠菜菠菜
上一篇 2016-03-25 20:35
下一篇 2016-03-26 11:30

相关推荐

  • iptables 从入门到进阶

    Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(或网络层防火墙)。在Linux中netfilter和iptables都是指Linux防火墙。区别在于: netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于“内核态”的防火墙功能体系。 iptables:指的是…

    Linux干货 2017-01-10
  • 哥是玩程序的

      下面一组有趣的Web示例,这些示例使用Web的一些很“土”控件做出一些很有趣的玩意儿。原来,编程是可以用来玩的,看看这些玩程序的人搞出的这些有意思的玩意,简直是玩得太有意思了。不过,请注意,这些东西只能使用Chrome打开,不然,你看不到相关的效果。 用滚动条做的时间 http://toki-woki.net/p/scroll-clock/,下…

    Linux干货 2015-04-01
  • 磁盘管理——MBR与GPT的分区

    一、硬盘的结构 这里讲的主要是网上所谓的老式磁盘,它是由一个个盘片组成的,我们先从个盘片结构讲起。如下图所示,图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图中蓝色部分)。扇区是磁盘的最小组成单元,通常是512字节           &…

    Linux干货 2016-09-02
  • 马哥教育网络班21期-第三周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who|cut -d" " -f1|uniq -c|awk '{print $2}' 2、取出最后登录到当前系统的用户的相关信息。 last |awk 'NR==1{print $0}' last |sed -n &…

    Linux干货 2016-07-29
  • 第10天:程序包,脚本,sed

    http://note.youdao.com/yws/public/redirect/share?id=b9432a76ff1180b42e01f6eb7c9fc90e&type=false

    Linux干货 2016-08-18
  • 计算机的组成及其功能

    1.计算机的组成及其功能 1.1计算机的硬件基本结构 从ENIAC到当前最先进的计算机都采用的是冯·诺依曼体系结构分别是:控制器,运算器,存储器,输入与输出设备 控制器:将指令逐条从存储器中取出,经译码分析后向全机发出相应         的操作控制信号作用于其他部件,使各部件有…

    Linux干货 2016-10-28