前言
文章的内容来源拉钩教育上的课程学习,通过写博客的方式,更好的提高对该知识的掌握。
- 在Linux上安装程序大概有两种思路:
1.直接编译源代码
2.使用包管理器
受开源运动影响,Linux上有很多软件可以拿到源代码,这也是Linux能够取得一个重要原因,接下来我们先尝试用包管理器安装应用,然后再用一个实战的例子,如何编译安装nginx.
一、包管理器使用
-
Linux下的应用程序多以软件包的形式发布,用户拿到对应的包之后,使用包管理进行安装。说到包安装,就要提到dpkg和rpm。
我们先说说包。Linux两大主流的包就是rmp和dpkg。 dpkg(Debian package),是Linux一个主流的社区分支开发出来的。社区就是开源社区,有很多世界顶级的程序员会在这社区贡献代码,如GitHub。一般衍生于debian的Linux版本都支持dpkg,比如Ubuntu。
-
rpm(redhatpackage manager)。
无论是dpkg还是rmp都抽象了自己的包格式,以.dpkg或者.rpm结尾文件。
-
dpkg和rpm也提供了类似的能力:
·查询是否已经安装了某个软件包
·查询目前安装了什么软件包
·给定一个软件包,进行安装
·删除一个安装好的软件包。
-
二、自动依赖管理
- Linux是一个开源生态,因此工具非常多。工具在给定用户使用之前,需要打包成dpkg或者rpm包。有的时候一个包需要安装十几个依赖的包,过程非常艰辛!因此现在多数情况都在使用yum和apt。
- yum
yum的全名是Yellodg Updator,Modified.基于Yellowdog Updator 这款软件修改而来的一个工具。
yum是python开发的,提供rpm包,因此只有redhat系的Linux,如Ferdora,centos支持yum。yum的主要能力就是帮你解决下载和依赖两个问题。下载之所以是问题,是因为Linux生态非常庞大,有时候用户不知道去下载哪一款工具。
比如用户想安装vim,只需要输入sudo yum install vim 就可以安装。另一方面,yum帮助用户解决很多依赖,比如用户安装一个软件依赖了10个其它的软件,yum会把11个软件一次性的装好。 - apt
apt 全名是Advanced Packaging Tools,是一个Debian及其衍生Linux系统的包管理器。
三、编译安装Nginx
- Nginx(engine X),是一个家喻户晓的web服务器。他的发明者是俄国的伊戈尔·赛索耶夫。赛索耶夫 2002 年开始写Nginx,主要目的是解决同一个互联网节点同时进入大量并发请求的问题。注意,大量并发请求不是大量 QPS 的意思,QPS是吞吐量大,需要快速响应,而高并发时则需要合理安排任务调度。
第一步:下载源码
wget http://nginx.org/download/nginx-1.19.2.tar.gz
第二步:解压
tar -xzvf nginx-1.19.2.tar.gz
-
tar是用来打包和解压用的。之所以叫做tar是有一些历史原因:t 代表 tape(磁带);ar是archive(档案)。因为早期的存储介质很小,人们习惯把文件打包然后存储到磁带上,那时候unix用的命令就是tar。因为Linux是个开源生态,所以沿袭下来就继续使用tar。
·-x 代表extract (提取)
·-z代表gzip,也就是gz类型的文件。
·-v代表verbose(显示细节)如果不输入-v ,就不会打印解压过程
·-f 代表file 这里是指要操作的文件,而不是磁带。所以tar 解压通常带有x和f
·-c 就是create打包意思
第三步:配置和解决依赖
#进入安装包下
cd nginx-1.19.2
#执行安装配置
./configure
#缺少pcre-devel 进行安装
sudo yum -y install pcre-devel
#缺少zlib依赖 进行安装
sudo yum install -y zlib zlib-devel
#执行配置文件
./configure
第四步:编译和安装
- 通常配置完之后,我们输入make && sudo make install进行编译和安装。make是Linux下面一个强大的构建工具。
- autoconf也就是./configure会在当前目录下生成一个MakeFile文件。make会根据makeFile文件编译整个项目。
- 编译完成后,能够形成和当前操作系统以及CPU指令集兼容的二进制可执行文件。然后用make install 安装 .&& 符号代表执行完make 再去执行 make install。
#编译和安装
make && sudo make install
如果让nginx全局执行,可以设置一个软链接到/usr/local/bin
ln -sf /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
为什么会有编译安装?
- 使用c/c++写的程序存在一个交叉编译的问题。就是写一次程序,在很多个平台执行。而不同指令的CPU指令,还有操作系统的可执行文件格式是不同的,如果某给包没有在平台注册,也没有提供某个Linux平台的软件包,我们就需要退回到编译安装,通过源代码直接安装在某个平台安装。
Linux包管理与Nginx编译安装详解
本文介绍了Linux系统中使用包管理器(dpkg和rpm,以及yum和apt)进行软件安装和依赖管理的方法,并详细阐述了如何编译安装Nginx,包括下载源码、配置、解决依赖及编译安装的步骤。文章强调了包管理器在自动依赖解决方面的便利性,以及编译安装在特定场景下的必要性。
1998

被折叠的 条评论
为什么被折叠?



