当前位置: 首页 > news >正文

linux:二进制包安装与源码包安装详解

一. 软件包安装

       Linux中软件包分为 源码包 和二进制包

1. 源码包


(1) 概述
       源码包就是作者直接将源程序发布在网上,我们直接下载源文件,自己编译成二进制程序使用。


(2) 优点
       开源,可修改源代码;

       可自由选择所需要的功能;

       编译安装,更加适合自己的系统,更加稳定效率更高;

       卸载方便也更加干净;


(3) 缺点
       安装步骤过多,容易出现错误;

       编译过程较长,安装比二进制包安装时间长;

2. 二进制包


(1) 分类
       DPKG包:由 Debian Linux开发出的包管理机制,主要应用于Debian和Ubuntu中;

       RPM包:由Ret Hat开发的包管理系统,安装,升级,卸载非常方便。主要应用于Centos, Fedora等等。


(2) 优点
       包管理系统简单,只需要几个命令即可实现安装,卸载等等;

安装速度比源码包安装快很多;


(3) 缺点
       不是开源的,看不到源代码;

       功能选择不如源代码灵活;

       安装软件包需要依赖于其他的软件包;

3. 软件包选择

       如果安装的服务是给大量客户端使用的,建议使用源码包安装,效率更高;

       如果安装的服务是给少量用户使用的,或者本地使用的,建议RPM包安装,因为包管理方便;

(二) RPM安装

1、RPM包手动安装


       手动安装非常地麻烦,需要自己找依赖的包与库函数,艹。

rpm -ivh 包全名

       -i: install安装

       -v: 显示更详细的信息(verbose)

       -h: 打印#显示安装进度(hash)

       包全名后面还可以接设置参数,如下所示:

       --nodeps: 不检测依赖性安装,这样安装的软件基本上无法使用,不建议;

       --force: 直接强制安装,当该服务的某些文件找不到时,此命令可以重新安装找回;

       --test: 测试安装,不会实际安装,仅仅检测依赖性;

2、RPM包默认安装位置


       /etc/ 配置文件安装目录

       /usr/bin: 可执行的命令安装目录

       /usr/lib: 程序使用的函数库保存位置

       /usr/share/doc: 软件使用手册位置

       /usr/share/man/ 帮助文件位置

       RPM包建议安装在默认路径中,因为系统中的其他服务会根据默认的路径查找安装的服务,且RPM包管理系统是由卸载命令的,可以根据数据库记录的安装位置来卸载。而源码包安装时必须指定安装路径,因为当要卸载源码包安装的目录时直接删除即可,如果不指定安装目录,服务会安装在系统的各个位置,没有卸载命令,需要一个个地手动删除,非常麻烦。

  3、服务启动命令

service 服务名  start|stop|restart|status 

systemctl restart 服务名

4、RPM包升级

rpm -Uvh 包全名
  • 1

       -U:升级安装,如果没有安装过,则直接安装;如果安装的版本太旧,则升级;

5、RPM包卸载

rpm -e 包名

       -e 卸载

       注意,RPM包在卸载时也是有依赖性的,安装时是从下往上依赖,卸载时就是从上往下依赖了。卸载某个包,那么其上的那些包都会被卸载掉。

 6、RPM包查询

1. 查询软件包是否安装
rpm -q 包名

 2、查询软件包的文件列表

rpm -ql 包名

RPM包安装不建议自己指定安装位置,建议安装在默认的位置,因为RPM包有标准的卸载命令,即使各个文件安装在系统的不同位置,也能够卸载干净:

如 安装httpd,各个文件的位置:

       配置文件: /etc/httpd/conf/httpd.conf

       网页位置: /var/www/html/

       日志位置: /var/log/httpd/

       启动方法: service httpd restart 或是 /etc/rc.d/init.d/httpd restart ,其实第一个命令就是到第二个命令的目录下找执行脚本的。

       源码包安装必须指定安装位置,因为没有安装数据库,没有卸载命令,很难卸载干净。当指定了安装目录后,很容易找到安装的文件。

同样的安装httpd:
       配置文件: /usr/local/apache2/conf/httpd/conf

       网页文件: /usr/local/apache2/htdocs

       日志位置: /usr/local/apache2/logs

       启动方法: /usr/local/apache2/bin/apache2ctl start

 三、源码包安装

 源码包安装必须指定安装位置,因为没有安装数据库,没有卸载命令,很难卸载干净。当指定了安装目录后,很容易找到安装的文件。

同样的安装httpd:
       配置文件: /usr/local/apache2/conf/httpd/conf

       网页文件: /usr/local/apache2/htdocs

       日志位置: /usr/local/apache2/logs

       启动方法: /usr/local/apache2/bin/apache2ctl start

安装过程


1.下载源码包解压缩

wget 源码下载地址

2.进入解压目录

tar xf 源码包文件名

3、安装依赖

yum install -y pcre-devel gcc gcc-c++ make zlib-devel openssl-devel

4.编译前准备 ./configure脚本(生成配置信息和Makefile文件)

这个命令有三个作用:

(1) 检测系统环境是否符合要求

(2) 定义需要的功能选项

(3) 将系统环境的检测结果和定义好的功能选项写入Makefile文件中,后续的编译和安装需要依赖这个文件的内容。

一般通过如下参数来指定安装路径:

./configure --prefix=路径名(一般是/usr/local/文件名)

5.make 编译(执行makefile文件并生成软件)


       make会调用gcc编译器,读取Makefile文件中的信息进行系统软件编译,编译就是为了将源码程序转变为能被Linux识别的可执行文件,保存在当前目录下。


6.make clean 清空编译内容


       若在./configure 或 make 命令后报错,则需要清空生成的Makefile文件或编译生成的.o文件。


7.make install 编译安装(将软件安装到指定目录)


       真正的安装过程,需要写清楚程序的安装位置,便于删除。如果在这一步报错,需要将整个文件夹删除,重新走一遍安装流程。因为编译安装这一步有写入操作,之前的./configure和 make 都只是生成临时文件,用make clean 删除即可。


8、 删除


       源码包没有删除命令,直接删除安装目录即可。

9、启动软件

以nginx为例,nginx会安装到/usr/local/nginx下

nginx下的文件目录为:

conf:配置文件

html:静态文件

logs:nginx软件的启动日志

sbin:启动文件

我们进入sbin目录下,会有一个绿色的nginx的文件,绿色代表可执行文件

我们执行./nginx就启动了nginx软件或服务

(首先去配置文件中,将端口号修改一下),我们在浏览器中输入服务器地址和端口,就可以看到nginx的html

nginx命令

1、nginx:启动

2、nginx-s reload :重新加载,修改配置文件

3、nginx -s restart :重启

4、nginx -s stop:停止

在任意目录下敲nginx就可以执行,需要配置软链接

1)ln -s /usr/local/nginx/sbin/nginx /sbin/nginx

2)把/usr/local/nginx/sbin/nginx 放到环境变量中

3)制作成systemctl系统服务

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【计组】第三章和第四章
  • 【考研数学】概率论:4 种方法解答一道题,你觉得哪种方法又快又好呢?
  • postman请求JSON格式,后台@RequestBody实体类接收不到数据
  • 30.x86游戏实战-遍历背包数组
  • Scrapy 爬取旅游景点相关数据(七):利用指纹实现“不重复爬取”
  • 怎么评价程序员40岁了竟然还在撸代码?
  • Python爬虫入门03:用Urllib假装我们是浏览器
  • 【MySQL】表的约束{ 常见约束 空属性 默认值 列描述comment zerofill 主键 复合主键 自增长 唯一键 外键 }
  • 15.3 zookeeper实现分布式锁
  • 强化学习时序差分算法之多步Sarsa算法——以悬崖漫步环境为例
  • 什么是虚拟化技术,有什么优缺点?
  • 76.SAP ME - 归档
  • World of Warcraft [retail] 100G download 2024.07.31
  • 数据透视表(三)
  • Flutter自定义通用防抖的实现
  • 0x05 Python数据分析,Anaconda八斩刀
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript对象详解
  • Laravel核心解读--Facades
  • Meteor的表单提交:Form
  • React16时代,该用什么姿势写 React ?
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • SpiderData 2019年2月23日 DApp数据排行榜
  • yii2中session跨域名的问题
  • 从0实现一个tiny react(三)生命周期
  • 从tcpdump抓包看TCP/IP协议
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 手机端车牌号码键盘的vue组件
  • 微服务核心架构梳理
  • 新书推荐|Windows黑客编程技术详解
  • 一些关于Rust在2019年的思考
  • 找一份好的前端工作,起点很重要
  • 如何在招聘中考核.NET架构师
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​批处理文件中的errorlevel用法
  • # Kafka_深入探秘者(2):kafka 生产者
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (pytorch进阶之路)扩散概率模型
  • (solr系列:一)使用tomcat部署solr服务
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • .Net mvc总结
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET多线程执行函数
  • .NET命名规范和开发约定
  • /etc/fstab和/etc/mtab的区别
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [《百万宝贝》观后]To be or not to be?