自学Linux Shell9.4-基于Red Hat系统工具包存在两种方式之二:源码包
9.4-基于Red Hat系统工具包存在两种方式之二:源码包
本节主要介绍基于Red Had的系统(测试系统centos)
1. 工具包存在两种方式:RPM包与源码包
- 源码包是开源的,比RPM包安装更自由,但是它安装更慢,更容易报错;
- RPM包是经过编译的,不能看到源代码,但是它安装更快,报错更容易解决,只有依赖性问题。
缺点:安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
- RPM包不需要指定安装位置,它会安装到系统默认位置;
- 源码包是人为手工设置的
- /etc/ 配置文件安装目录
- /usr/bin/ 可执行的命令安装目录
- /usr/lib/ 程序所使用的函数库保存位置
- /usr/share/doc/ 基本的软件使用手册保存位置
- /usr/share/man/ 帮助文件保存位置
- .安装在指定位置当中,一般是/usr/local/软件名/
1.3 安装位置不同带来的影响
- /etc/rc.d/init.d/httpd start
- service httpd start
- /usr/local/apache2/bin/apachectl start
2. 源码包
- 开放源码:就是程序代码,写给人类看的编程语言,但机器并不认识,所以无法执行。
- 编译程序:将程序代码转译成机器看得懂的语言,就类似于翻译者的角色。
- 可执行文件:经过编译程序变成二进制程序后机器看得懂可以执行的文件。
2.1 函数库
类似于子程序的角色,可以被调用来执行的一段功能函数。
2.2 make与configure
使用类似于gcc的编译程序来进行编译的过程并不简单,我么可以使用make这个命令的相关功能来进行编译过程的命令简化。
当执行make时,make会在当前目录下查找Maklefile文本文件,而Makefile文件里面记载了源码如何编译的详细信息。
Makefile文件,通常软件开发商都会写一个检测程序来检测用户的操作环境,以及该操作环境是否有软件开发商所需要的其他功能,检测程序检测完毕后就会主动建立Makefile的规则文件。而这个检测程序的文件名为configure或config。
总结编译过程:
- 执行configure来建立Maklefile,这个步骤一定要成功;
- 以make来调用所需要的数据来编辑即可。
2.3 Tarball软件
Tarball文件其实就是将软件的所有源码文件现以.bar打包,然后在以压缩技术来压缩,通常最常见的就是以gzip来压缩。
Tarball文件一般的扩展名会写成*.tar.gz或者*.tgz 。
Tarball是一个压缩包,将它解压之后,里面的文件通常会有:
- 源代码文件(Source Code)
- 检测程序文件(configure或config);
- 本软件的简易说明与安装说明(INSTALL 和 README)。
Tarball是如何安装的?基本流程如下:
- 取得原始档:将 tarball 文件在 /usr/local/src 目录下解压缩;
- 取得步骤流程:进入新创建的目录底下,去查阅 INSTALL 与 README 等相关文件内容 (很重要的步骤!);
- 相依属性软件安装:根据 INSTALL/README 的内容察看并安装好一些相依的软件 (非必要);
- 创建 makefile:以自动侦测程序 (configure 或 config) 侦测作业环境,并创建 Makefile 这个文件;
- 编译:以 make 这个程序并使用该目录下的 Makefile 做为他的参数配置档,来进行 make (编译或其他) 的动作;
- 安装:以 make 这个程序,并以 Makefile 这个参数配置档,依据install 这个标的 (target) 的指定来安装到正确的路径!
Tarball 安装的命令方式:
- ./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 就不成功了,那么就表示 Makefile无法被创建起来,要知道,后面的步骤都是根据 Makefile 来进行的,既然无法创建 Makefile,后续的步骤当然无法成功罗!
另外,如果在 make 无法成功的话,那就表示原始文件无法被编译成可运行档,那么 make install主要是将编译完成的文件给他放置到文件系统中的,既然都没有可用的运行档了,怎么进行安装?所以罗,要每一个步骤都正确无误才能往下继续做!此外,如果安装成功,并且是安装在独立的一个目录中,例如 /usr/local/packages 这个目录中好了,那么你就必需手动的将这个软件的man page 给他写入 /etc/man.config 里面去。
举例子: 安装ntp
首先下载ntp: http://www.ntp.org/downloads.html #下载ntp
其次 解压下载的ntp的Tarball,并参考README/INSTALL文件:
建议:
- 源码要解压到/usr/loca/src下;
- 软件安装到/usr/local/ntp目录中;
里面有详细的安装介绍。
然后 检查configure支持参数,并实际生成makefile规则文件。
[ ntp.xxx ] ./configure --help | more #查询可用参数有哪些
- #--prefix=PREFIX install architecture-independent files in PREFIX;
- #--prefix=/path 表示软件要安装到哪个目录去,如果没有指定,则默认在/usr/local;
- #--enable-all-clocks + include all suitable non- PARSE clocks:
- #--enable-parse-clocks - include all suitable PARSE clocks:
- #特别要留意关于gcc的检查,最后需要成功的建立Makefile文件才行
最后开始编译与安装:
- make clean;make
- make check
- make install
显示安装在/usr/local/src下
....
自学Linux Shell9.4-基于Red Hat系统工具包存在两种方式之二:源码包的更多相关文章
- 自学Linux Shell9.2-基于Red Hat系统工具包存在两种方式之一:RPM包
点击返回 自学Linux命令行与Shell脚本之路 9.2-基于Red Hat系统工具包存在两种方式之一:RPM包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方 ...
- 自学Linux Shell9.3-基于Red Hat系统工具包:RPM属性依赖的解决方式-YUM在线升级
点击返回 自学Linux命令行与Shell脚本之路 9.3-基于Red Hat系统工具包:RPM属性依赖的解决方式-YUM在线升级 本节主要介绍基于Red Had的系统(测试系统centos) yum ...
- 内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式.
内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式. 一丶IDT解析. 我们知道.IDT表中存放着各种中断信息.比如当我们调用int 3的时候,则会调用IDT表中的第三项来进行调用. 而函数 ...
- nginx 服务器 在 centos7 系统下的两种方式
选用系统 Centos7 < 一 > 使用 yum 安装,该方法比较方便,如果不追求版本推荐使用 01, 添加 nginx 储存库 yum -y install epel-releas ...
- vs2013和.net 4.5.1调用.net core中的Kestrel(基于libuv)的http服务器代码 两种方式
nuget获取相关的包:两个:Microsoft.AspNetCore.Server.Kestrel 和 Microsoft.Extensions.Logging.Console 编译完成后手工将pa ...
- 基于aspectj实现AOP操作的两种方式——注解方式
- 基于aspectj实现AOP操作的两种方式——xml配置
1. 要导入的 jar 包: 常用的aspectj表达式: 权限修饰符可以省略,以下表示:返回值类型为任意,com.chy.service包以及其子包下的.任意类的.参数任意的.任意方法 execut ...
- linux中添加一个用户到指定用户组的两种方式,修改一个用户到指定用户组的一种方式
添加一个用户到指定用户组: gpasswd –a 用户名 组名usermod –G 组名 用户名 //第一种:gpasswd –a 用户名 组名 [root@localhost ~]# id user ...
- Linux:Red Hat系统的安装
今天高兴,所以我写这一期,这一期写的是Red Hat系统的安装,这个开发系统也是红帽企业制作出来的,关于这款系统的相关资料就自行百度吧!话不多说,直接进入这期的内容吧! 安装Red Hat系统 系统下 ...
随机推荐
- odoo 11 实现多个字段对应一个查询参数的查询
在整理英语单词开发模块的过程中,有这样一个需求,就是我在查询界面里输入一个查询的值A,这个A可能是下面的任何一个值 1.一个英语单词 2.汉语文字 3.一个英语单词的部分 这里有两张表:engli ...
- 在SpringMVC中使用HandlerInterceptor来实现拦截器功能
需求:我们需要在请求某些特定的URL(URL格式为Restful格式)时添加拦截器,以实现进行权限控制. 如:/ResourcePlan/projectCode/P1503127828/PROJECT ...
- Asp.Net Core基于Cookie实现同域单点登录(SSO)
在同一个域名下有很多子系统 如:a.giant.com b.giant.com c.giant.com等 但是这些系统都是giant.com这个子域. 这样的情况就可以在不引用其它框架的情况下, ...
- netfilter/iptables 简介
netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制.iptables 则是一个命令行工具,用来配置 netfilter 防火墙.下图展示了一个带有防火墙的简单网络 ...
- linux-文件流4种读取方式
第二种方式 第三种 第四种: 小括号在管道符的右边开辟了两个子进程 大括号在管道符的右边开辟了一个子进程, export 用来导出子进程的 num 还可以借助外部文件进行 七步扩展:
- [what is machine learning?]
1.2 [what is machine learning?] 1.人:observation --> learing --> skill 机器:data --> ML --& ...
- C++课程学习建议
从C到C++,学院都采用了机房授课模式,也在探索更为高效的实践与理论融合的教学方法,对于课程学习来说,仍有以下建议: 1.多看书.看书是理解基本概念的必备手段.也是学习的根本.应将课前预习.课后复习联 ...
- WIN10快捷键
WIN10快捷键 多桌面切换:WIN + CTRL + ←/→ 桌面横竖屏转向:ALT + CTRL + ←/→
- js排序方法
function swap(ary, x, y) { if (x === y) return let temp = ary[x] ary[x] = ary[y] ary[y] = temp } //生 ...
- CentOS yum 安装获取原始rpm文件的方法
1. 有时候 yum install 需要从几个repo下载rpm包速度很慢,不如自己能够将rpm包下载下来继续使用,比较好. 发现yum install 有两种方式能够将下载的rpm包保存下来. 方 ...