在windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续 “下一步” 即可,然而linux系统下安装一个软件似乎并不那么轻松了,因为我们不是在图形界面下。所以你要学会如何在linux下安装一个软件。

在前面的内容中多次提到的yum, 这个yum是Redhat所特有的安装RPM程序包的工具,使用起来相当方便。因为使用RPM安装某一个程序包有可能会因为该程序包依赖另一个程序包而无法安装。而使用yum工具就可以连同依赖的程序包一起安装。当然CentOS同样可以使用yum工具,而且在CentOS中你可以免费使用yum,但Redhat中只有当你付费后才能使用yum,默认是无法使用yum的。在介绍yum之前先说一说RPM相关的东西。

RPM工具

RPM是 “Redhat Package Manager” 的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。

如果你的光驱中还有系统安装盘的话,我们可以通过 mount /dev/cdrom /mnt 命令把光驱挂载到/mnt目录下,那么你会在/mnt/Packages目录下看到很多.rpm的文件,这就是RPM包了。

[root@localhost test]# mount /dev/cdrom /mnt/

mount: /dev/sr0 写保护,将以只读方式挂载

mount: /dev/sr0 已经挂载或 /mnt 忙

/dev/sr0 已经挂载到 /mnt 上

[root@localhost test]# ls /mnt/

每一个rpm包的名称都由 - 和 . 分成了若干部分。就拿 “abrt-cli-2.0.8-15.el6.centos.i686.rpm” 这个包来解释一下, “abrt-cli” 为包名, “2.0.8” 则为版本信息, “15.el6.centos” 为发布版本号, “i686” 为运行平台。其中运行平台常见的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位的平台。另外有些rpm包并没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。例如 “alacarte-0.10.0-1.fc6.noarch.rpm”. 下面介绍一下rpm常用的命令。

1.安装一个rpm包

[root@localhost] cd /mnt/Packages/

[root@localhost Packages]# rpm -ivh /mnt/Packages/libjpeg-turbo-devel-1.2.90-5.el7.x86_64.rpm

准备中... ################################# [100%]

正在升级/安装...

1:libjpeg-turbo-devel-1.2.90-5.el7 ################################# [100%]

“-i” : 安装的意思

“-v” : 可视化

“-h” : 显示安装进度

另外在安装一个rpm包时常用的附带参数有:

--force : 强制安装,即使覆盖属于其他包的文件也要安装

--nodeps : 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包

a.升级一个rpm包

命令 rpm -Uvh filename

“-U” : 即升级的意思

b,卸载一个rpm包

命令 rpm -e filename

这里的filename是通过rpm的查询功能所查询到的,稍后会作介绍。

[root@localhost ~]# rpm -qa |grep libjpeg-turbo-devel

libjpeg-turbo-devel-1.2.1-1.el6.i686

[root@localhost ~]# rpm -e libjpeg-turbo-devel

卸载时 -e后边跟的filename和安装时的是有区别的,安装时是把一个存在的文件作为参数,而卸载时只需要包名即可。

c.查询一个包是否安装

命令 rpm -q rpm包名 (这里的包名,是不带有平台信息以及后缀名的)

[root@localhost ~]# rpm -q libjpeg-turbo-devel

package libjpeg-turbo-devel is not installed

[root@localhost ~]# rpm -ivh /mnt/Packages/libjpeg-turbo-devel-1.2.90-5.el7.x86_64.rpm

Preparing... ########################################### [100%]

1:libjpeg-turbo-devel ########################################### [100%]

[root@localhost ~]# rpm -q libjpeg-turbo-devel

libjpeg-turbo-devel-1.2.90-5.el7.x86_64

我们可以使用 rpm -qa 查询当前系统所有安装过的rpm包,限于篇幅,阿铭只列出前十个。

[root@localhost ~]# rpm -qa |head

d.得到一个已安装rpm包的相关信息

命令 rpm -qi 包名 (同样不需要加平台信息与后缀名)

[root@localhost ~]# rpm -qi libjpeg-turbo-devel

f.列出一个rpm包安装的文件

命令 rpm -ql 包名

[root@localhost ~]# rpm -ql libjpeg-turbo-devel

通过上面的命令可以看出文件 “/usr/lib/libjpeg.so” 是通过安装 “libjpeg-turbo-devel” 这个rpm包得来的。那么反过来如何通过一个文件去查找是由安装哪个rpm包得来的?

[root@localhost Packages]# rpm -qf /usr/lib64/libjpeg.so

libjpeg-turbo-devel-1.2.90-5.el7.x86_64

2.yum工具

在前面的章节中,阿铭多次提到yum工具,今天终于该讲它了。这个工具比rpm工具好用多了,当然前提是你使用的linux系统是支持yum的。yum最大的优势在于可以联网去下载所需要的rpm包,然后自动安装,在这个工程中如果要安装的rpm包有依赖关系,yum会帮你解决掉这些依赖关系依次安装所有rpm包。

a.列出所有可用的rpm包 “yum list”

[root@localhost ~]# yum list |head -n 20

限于篇幅,阿铭只列举出来前14个包信息。从上例中可以看到有 “mirrors.btte.net” 信息出现,这是在告诉用户,它是从mirrors.btte.net这里下载到的rpm包资源。从上面的例子中你还可以看到最左侧是rpm包名字,中间是版本信息,最右侧是安装信息,如果安装了就显示类似 “@anaconda-CentOS”, “@base” 或者 “@extras”, 他们前面都会有一个 “@” 符号,这很好区分。未安装则显示base或者extras, 如果是该rpm包已安装但需要升级则显示updates. 如果你看的仔细会发现,”yum list” 会先列出已经安装的包(Installed Packages) 然后再列出可以安装的包(Available Packages)

b.搜索一个rpm包

命令 yum search [相关关键词]

[root@localhost ~]# yum search vim

除了这样搜索外,阿铭常用的是利用grep来过滤

[root@localhost ~]# yum list |grep 'vim'

我们同样可以找到相应的rpm包。

c.安装一个rpm包

如果不加 “-y” 选项,则会以与用户交互的方式安装,首先是列出需要安装的rpm包信息,然后会问用户是否需要安装,输入y则安装,输入n则不安装。而阿铭嫌这样太麻烦,所以直接加上 “-y” 选项,这样就省略掉了问用户是否安装的那一步。

[root@localhost ~]# yum install vim-X11

在这个过程中,它首先会把需要安装的RPM包列出来,如果有依赖关系,也会把所有依赖的包列表出来,然后询问用户是否需要安装,输入y则安装,输入n则不安装,但啊铭觉得这样太麻烦,所以会直接加上-y选项,这样就省略了询问用户是否安装的那一步。

d.卸载一个rpm包

[root@localhost ~]# yum remove vim-X11

卸载和安装一样,也可以直接加上 “-y” 选项来省略掉和用户交互的步骤。在这里阿铭要提醒一下,卸载某个rpm包一定要看清楚了,不要连其他重要的rpm包一起卸载了,以免影响正常的业务。

e.升级一个rpm包

[root@localhost ~]# yum update bash

以上介绍了如何使用yum搜索、安装、卸载以及升级一个rpm包,如果你掌握了这些那么你就已经可以解决日常工作中遇到的与rpm包相关问题了。当然yum工具还有好多其他好用的命令,阿铭不再列举出来,如果你感兴趣就去man 一下吧。除此之外,阿铭还会教你一些关于yum的小应用。

f.使用本地的光盘来制作一个yum源

有时候你的linux系统不能联网,当然就不能很便捷的使用联网的yum源了,这时候就需要你自己会利用linux系统光盘制作一个yum源。具体步骤如下:

1)挂载光盘

[root@localhost ~]# mount /dev/cdrom /mnt

2)删除/etc/yum.repos.d目录所有的repo文件

[root@localhost ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d_bak

[root@localhost ~]# rm -rf /etc/yum.repos.d/*

3) 创建新文件dvd.repo

[root@localhost ~]# vim /etc/yum.repos.d/dvd.repo

加入以下内容:

[dvd]

name=install dvd

baseurl=file:///mnt

enabled=1

gpgcheck=0

4) 刷新 repos 生成缓存

[root@localhost ~]# yum makecache

然后就可以使用yum命令安装你所需要的软件包了

利用yum工具下载一个rpm包

g.利用yum工具下载RPM包

在进行下面的操作之前,我们需要先恢复之前的yum源,否则后续使用yum还会出问题,具体操作如下:

rm -rf /etc/yum.repos.d

mv /etc/yum.repos_bak /etc/yum.repos.d

yum list

下载RPM包而不安装命令如下:

[root@localhost ~]# yum install -y yum-presto.noarch --downloadonly --downloaddir=/tmp/

[root@localhost ~]# ls /usr/local/src/

deltarpm-3.5-0.5.20090913git.el6.i686.rpm yum-presto-0.6.2-1.el6.noarch.rpm

如果下载过了,再下载不成功那我们可以这样:

yum reinstall -y bash --downloadonly

ls /var/cache/yum/x86_64/7/..............................

3.安装源码包

其实,在linux下面安装一个源码包是最常用的,阿铭在日常的管理工作中,大部分软件都是通过源码安装的。安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的。

源码包的编译用到了linux系统里的编译器,常见的源码包一般都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它就可以把C语言变成可执行的二进制文件。所以如果你的机器上没有安装gcc就没有办法去编译源码。你可以使用 yum install -y gcc 来完成安装。

安装一个源码包,通常需要三个步骤:

1)./configure

在这一步可以定制功能,加上相应的选项即可,具有有什么选项可以通过 ./configure --help 命令来查看。在这一步会自动检测你的linux系统与相关的套件是否有编译该源码包时需要的库,因为一旦缺少某个库就不能完成编译。只有检测通过后才会生成一个Makefile文件。

2) make

使用这个命令会根据Makefile文件中预设的参数进行编译,这一步其实就是gcc在工作了。

3) make install

安装步骤,生成相关的软件存放目录和配置文件的过程。

上面介绍的3步并不是所有的源码包软件都一样的,阿铭以前也曾经遇到过,安装步骤并不是这样,也就是说源码包的安装并非具有一定的标准安装步骤。这就需要你拿到源码包解压后,然后进入到目录找相关的帮助文档,通常会以INSTALL或者README为文件名。所以,你一定要去看一下。下面阿铭会编译安装一个源码包来帮你更深刻的去理解如何安装源码包。

a.下载一个源码包

下载源码包一定要去官方站点去下载,不要在网上随便下载,那样很不安全。因为你下载到的源码包很有可能是被人修改过的。

[root@localhost src]# cd /usr/local/src/

[root@localhost src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.27.tar.gz

解压源码包

[root@localhost src]# tar zxvf httpd-2.4.27.tar.gz

配置相关的选项,并生成Makefile

[root@localhost src]# cd httpd-2.2.27

[root@localhost httpd-2.2.27]# ./configure --help |less

后面的内容阿铭省略掉了,阿铭使用 ./configure --help 命令查看可以使用的选项。一般常用的有 --prefix=PREFIX 这个选项的意思是定义软件包安装到哪里。到这里,阿铭再提一个小小的建议,通常源码包都是安装在/usr/local/目录下的。比如,我们把apache安装在/usr/local/apache2下,那么这里就应该这样写 --prefix=/usr/local/apache2 其他还有好多选项,如果你有耐心可以挨个去看一看都有什么作用。

[root@localhost httpd-2.2.27]# ./configure --prefix=/usr/local/apache2

checking for chosen layout... Apache

checking for working mkdir -p... yes

checking build system type... i686-pc-linux-gnu

checking host system type... i686-pc-linux-gnu

checking target system type... i686-pc-linux-gnu

Configuring Apache Portable Runtime library ...

checking for APR... reconfig

configuring package in srclib/apr now

checking build system type... i686-pc-linux-gnu

checking host system type... i686-pc-linux-gnu

checking target system type... i686-pc-linux-gnu

Configuring APR library

Platform: i686-pc-linux-gnu

checking for working mkdir -p... yes

APR Version: 1.4.6

checking for chosen layout... apr

checking for gcc... no

checking for cc... no

checking for cl.exe... no

configure: error: in `/usr/local/src/httpd-2.2.27/srclib/apr':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details

configure failed for srclib/apr

不幸的是,阿铭一开始就报错了,因为没有gcc编译器,需要先安装一下。

[root@localhost httpd-2.2.27]# yum install -y gcc

由于gcc依赖的包很多,所以安装时间会长一些。安装完后,再继续上面的步骤。

tcode:

[root@localhost httpd-2.2.27]# ./configure --prefix=/usr/local/apache2

验证这一步是否成功的命令是:

[root@localhost httpd-2.2.27]# echo $?

0

返回值如果是 “0” 则执行成功,否则就是没有成功。此时就成功生成 Makefile 了。

[root@localhost httpd-2.2.27]# ls -l Makefile

-rw-r--r-- 1 root root 8954 5月 13 12:02 Makefile

进行编译

[root@localhost httpd-2.2.27]# make

-bash: make: command not found

又发生错误了,提示 “make” 命令没有发现,解决办法是安装make工具。

[root@localhost httpd-2.2.27]# yum install -y make

继续make

[root@localhost httpd-2.2.27]# make

Making all in srclib

make[1]: Entering directory `/usr/local/src/httpd-2.2.27/srclib'

Making all in apr

make[2]: Entering directory `/usr/local/src/httpd-2.2.27/srclib/apr'

make[3]: Entering directory `/usr/local/src/httpd-2.2.27/srclib/apr'

/bin/sh /usr/local/src/httpd-2.2.27/srclib/apr/libtool --silent --mode=compile gcc -g -O2 -pthread -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I./include -I/usr/local/src/httpd-2.2.27/srclib/apr/include/arch/unix -I./include/arch/unix -I/usr/local/src/httpd-2.2.27/srclib/apr/include/arch/unix -I/usr/local/src/httpd-2.2.27/srclib/apr/include -o passwd/apr_getpass.lo -c passwd/apr_getpass.c && touch passwd/apr_getpass.lo

编译的时候,就会出现类似这么多乱七八糟的信息,编译的时间比较长,CPU使用率会很高,这是因为CPU高速计算,编译完后,再使用 echo $? 验证一下是否正常成功。

[root@localhost httpd-2.2.27]# echo $?

0

如果是0的话,就可以执行最后一步了。

安装

[root@localhost httpd-2.2.27]# make install

Making install in srclib

make[1]: Entering directory `/usr/local/src/httpd-2.2.27/srclib'

Making install in apr

make[2]: Entering directory `/usr/local/src/httpd-2.2.27/srclib/apr'

make[3]: Entering directory `/usr/local/src/httpd-2.2.27/srclib/apr'

make[3]: Nothing to be done for `local-all'.

make[3]: Leaving directory `/usr/local/src/httpd-2.2.27/srclib/apr'

当然你也可以使用 echo $? 看看有没有正确安装,执行完这一步,则会在 “/usr/local/apache2” 目录下增加了很多目录。

[root@localhost httpd-2.2.27]# ls /usr/local/apache2/

bin cgi-bin error icons lib man modules

build conf htdocs include logs manual

到此,apache源码的安装就完成了,其实在日常的源码安装工作中,并不是谁都像阿铭这样顺利完成安装的,遇到错误不能完成安装的情况是很多的。通常都是因为缺少某一个库文件导致的。这就需要你仔细琢磨报错信息或者查看当前目录下的 “config.log” 去得到相关的信息。另外,如果自己不能解决那就去网上google一下吧,通常你会得到想要的答案。

转载于:https://www.cnblogs.com/zhougeng/p/7788365.html

第九章-安装RPM包或源码包相关推荐

  1. Redhat linux 安装 gcc编译器,Gcc源码包,rpm包安装方法!

    点评:分两种情况: 先看这篇转过来的文章,俺老孙懒得写了. Linux软件安装通用思路 在Linux系统中,软件安装程序比较纷繁复杂,不过最常见的有两种: 1)一种是软件的源代码,您需要自己动手编译它 ...

  2. 安装RPM包或源码包

    安装RPM包或源码包 一.RPM工具 1.安装RPM包 # cd /mnt/Packages [root@localhost Packages]# rpm -ivh libjpeg-turbo-dev ...

  3. Linux-什么是二进制包,源码包,RPM包,软件仓库

    博文说明[前言]: 本文将通过个人口吻介绍什么是二进制包,RPM包,源码RPM包(SRPM包),源码包,以及RPM常用命令,源码rpm的安装(*.src.rpm),源码包的安装步骤知识(./confi ...

  4. linux系统源码安装教程,linux之源码包安装步骤

    源码:程序代码,人类可看懂的代码 编译程序:将程序代码编译成机器看懂的代码 二进制文件:经过编译程序变为二进制程序后,机器可执行的文件 make和configure: make是一支程序,会自动寻找M ...

  5. yum更换国内源、yum下载rpm包、源码包安装

    2019独角兽企业重金招聘Python工程师标准>>> 更换yum仓库源 cd /etc/yum.repos.d/ rm -f dvd.repo wget http://mirror ...

  6. Linux学习笔记(二十二)yum更换国内源、yum下载rpm包、源码包安装

    一.yum更换国内源 首先 cd /etc/yum.repos.d/ rm -f dvd.repo 删除之前添加的本地仓库,将原来的仓库恢复回来 cp /etc/yum.repos.d.bak/* / ...

  7. yum下载rpm包、源码包安装

    一: yum如何下载rpm包到本地(只下载,不安装) 安装yum-downloadonly yum install -y yum-plugin-downloadonly.noarch 下载包到指定目录 ...

  8. 更换yum源,安装扩展源,yum下载rpm包,源码包安装软件

    2019独角兽企业重金招聘Python工程师标准>>> 更换国内yum源 我们的Linux中默认的yum源是国外的,有的时候网络不好,而我么需要下载的包过大的时候更换成国内的yum源 ...

  9. linux crontab 每5分钟执行一次_第十一章:走进Linux世界——源码包管理and任务计划。...

    一.文件管理 (1)概述 Source Code 源代码经过GCC.C++编译环境编译才能运行 可以设定个人设置,开关功能 (2)源码包管理 获取源码包--官网下载到真机,然后 rz 命令上传到虚拟机 ...

  10. Linux软件安装管理 - CentOS (三) ---- 源码包管理

    1. 软件包管理简介 2. rpm命令管理(Redhat Package Manager) 3. yum在线安装 4. 源码包管理 4.1 源码包和RPM包的区别 4.1.1 区别 安装前:概念上的区 ...

最新文章

  1. opencv图像处理(二)
  2. Python 骚操作!如何让自己在斗图中立于不败之地?
  3. python3 tkinter详解_python tkinter基本属性详解
  4. 用VC写Assembly代码
  5. php用什么电脑,我要学php了买一台什么配置的电脑最好?
  6. 《Arduino家居安全系统构建实战》——1.1 家居安全的基础设施
  7. 企业架构 - 涉众管理(Stakeholder Management)
  8. 数据结构上机实践第11周项目3 - 图遍历算法实现
  9. 1051. Pop Sequence (25)
  10. react-color颜色选择器
  11. Chrome扩展 - 百度识图
  12. 数据变现四大模式释放电信大数据价值
  13. itan:cookie-session简介
  14. 学习java被虐千百遍
  15. 对一个文件夹下的图片进行批量缩放(resize)处理
  16. 矩阵的对数运算公式_2021高考总复习数学对数与对数函数
  17. Day14-正则表达式
  18. 奇迹gm工具 奇迹批量远程工具
  19. OOM异常的发生原因
  20. yolov5-5.0训练模型+瑞芯微rv1126上实现模型部署

热门文章

  1. 感谢这几个公众号,已拿今日头条,蚂蚁金服Offer
  2. 高级编程和编程规范总结
  3. javaweb java代码写在哪里_写了那么多年 Java 代码,终于 debug 到 JVM 了
  4. 超级计算机燕 排名,特斯拉超级计算机算力全球第五,展现无人驾驶领域野心...
  5. access 循环_双11多个品牌创销量新高,ACCESS品牌管理集团背后的全球供应链解码...
  6. php+app接口返回json数据,PHP对接APP的接口类,可返回json数据,xml数据
  7. datastage连接mysql库_Datastage 8.5 连接远程Oracle 数据库
  8. go-结构化,方法的创建以及使用
  9. 传统的6d位姿估计fangfa1_基于视觉的机器人抓取从物体定位、位姿估计到抓取位姿估计 | 公开课预告...
  10. 设计模式系列之过滤器模式(Chriteria Pattern)