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

谷歌搜图柳市网站优化

谷歌搜图,柳市网站优化,销售部网站建设费,网站开发ui计算机原理系列 欢迎大家关注「海拉鲁知识大陆」 多交流不迷路 Linux入门(五) 今天我们的问题是:Linux中编译安装和包管理器安装有什么优势和劣势? 在 Linux 上安装程序大概有 2 种思路: 直接编译源代码;使…

计算机原理系列

欢迎大家关注「海拉鲁知识大陆」 多交流不迷路

Linux入门(五)

今天我们的问题是:Linux中编译安装和包管理器安装有什么优势和劣势?

在 Linux 上安装程序大概有 2 种思路:

  • 直接编译源代码;
  • 使用包管理器。

1.包管理器使用

Linux下的应用程序多数以软件包的形式发布,用户拿到对应的包之后,使用包管理器进行安装。说到包管理器,就要提到dpkg和rpm。

我们先说说包。 Linux下两大主流的包就是rpm和dpkg。

  • dpkg(debian package),是linux一个主流的社区分支开发出来的。社区就是开源社区,有很多世界顶级的程序员会在社区贡献代码,比如github。一般衍生于debian的Linux版本都支持dpkg,比如ubuntu。
  • rpm(redhatpackage manager)。就是RedHat公司也有自己的Linux,就叫作
    RedHat。RedHat系比较重要的Linux有RedHat/Fedora等。

无论是dpkg还是rpm都抽象了自己的包格式,就是以.dpkg或者.rpm结尾的文件。

dpkg和rpm也都提供了类似的能力:

  • 查询是否已经安装了某个软件包;
  • 查询目前安装了什么软件包;
  • 给定一个软件包,进行安装;
  • 删除一个安装好的软件包。

关于dpkg和rpm的具体用法,大家可以用man进行学习。接下来我们聊聊yum和apt。

2.自动依赖管理

Linux是一个开源生态,因此工具非常多。工具在给用户使用之前,需要先打成dpkg或者rpm包。 有的时候一个包会依赖很多其他的包,而dpkg和rpm不会对这种情况进行管理,有时候为了装一个包需要先装十几个依赖的包,所以现在多数情况都在用yum和apt。

yum
你可能会说,我不用yum也不用apt,我只用docker。首先给你一个赞,然后如果你做docker镜像,那么还是要用到yum和apt,因此还是有必要了解一下。

yum的全名是Yellodog Updator,Modified。它是基于Yellodog Updator这款软件修改而来的一个工具。yum是Python开发的,提供的是rpm包,因此只有redhat系的 Linux。yum的主要能力就是帮你解决下载和依赖两个问题。

  • 下载的问题,是因为Linux生态非常庞大,有时候用户不知道该去哪里下载一款工具。比如用户想安装vim,只需要输入sudo yum install vim就可以安装了。yum的服务器收集了很多linux软件,因此yum会帮助用户找到vim的包。
  • 帮助用户解决了很多依赖问题,假如安装一个软件依赖了10个其他的软件,yum会把这11个软件一次性的装好。

apt
接下来我们聊聊apt,apt全名是Advanced Packaging Tools,是一个debian及其衍生 Linux 系统下的包管理器。由于advanced是相对于dpkg而言的,因此它也能够提供和yum类似的下载和依赖管理能力。

3.编译安装 Nginx

接下来我们说说编译安装Nginx,是一个的Web服务器。 主要目的是解决同一个互联网节点同时进入大量并发请求的问题。注意,大量并发请求不是大量QPS的意思,QPS是吞吐量大,需要快速响应,而高并发时则需要合理安排任务调度。现在基本上国内大厂的Web服务器都是基于Nginx,只不过有的可能进行了特殊的修改,比如淘宝用Tengine。

下面我们再来看看源码安装,在Linux上获取nginx源码,可以去搜索Nginx官方网站:https://nginx.org/en/download.html,一般都会提供源码包。
图片
如上图所示,可以看到nginx-1.18.0的网址是:https://nginx.org/download/nginx-1.18.0.tar.gz。然后我们用wget去下载这个包。wget是GNU项目下的下载工具,GNU是早期unix项目的一个变种。linux下很多工具都是从unix继承来的,这就是开源的好处,很多工具不用再次开发了。所以很难想象windows下的命令工具可以在linux下用,但是linux下的工具却可以在任何系统中用。 所以linux下面的工具发展速度很快,如今已成为最受欢迎的服务器操作系统。

当然也有同学的机器上没有wget,那么你可以用apt安装一下。

第一步:下载源码。我们使用wget下载nginx源码包:
图片
第二步:解压。我们解压下载好的nginx源码包。
图片
用ls发现包已经存在了,然后使用tar命令解压。

tar是用来打包和解压用的。之所以叫作tar是有一些历史原因:t代表tape(磁带);ar是archive(档案)。

  • -x代表 extract(提取)。
  • -z代表gzip,也就是解压gz类型的文件。
  • -v代表 verbose(显示细节),如果你不输入-v,就不会打印解压过程了。
  • -f代表 file,这里指的是要操作文件,而不是磁带。

所以tar解压通常带有x和f,打包通常是c就是 create 的意思。

第三步:配置和解决依赖。解压完,我们进入nginx的目录看一看。 如下图所示:
图片
可以看到一个叫作configure的文件是绿色的,也就是可执行文件。然后我们执行configure文件进行配置,这个配置文件来自一款叫作autoconf的工具,也是GNU项目下的,说白了就是bash(Bourne Shell)下的安装打包工具(就是个安装程序)。这个安装程序支持很多配置,你可以用./configure --help看到所有的配置项,如下图所示:
图片
这里有几个非常重要的配置项,叫作prefix。prefix配置项决定了软件的安装目录。如果不配置这个配置项,就会使用默认的安装目录。sbin-path决定了nginx的可执行文件的位置。conf-path决定了nginx配置文件的位置。我们都使用默认,然后执行./configure,如下图所示:
图片
autoconf进行依赖检查的时候,报了一个错误,cc没有找到。这是因为机器上没有安装gcc工具,gcc是工具套件,全名是GNU Compiler Collection——里面涵盖了包括 c/c++在内的多门语言的编译器。

我们用包管理器,安装gcc,如下图所示。安装gcc通常是安装build-essential这个包。
图片
安装完成之后,再执行./configure,我们看到配置程序开始执行。但是最终报了一个错误,如下图所示:
图片
报错的内容是,nginx的HTTP rewrite模块,需要PCRE库。PCRE是perl语言的兼容正则表达式库。perl语言一直以支持原生正则表达式,而受到广大编程爱好者的喜爱。接下来我们开始安装PCRE。终于配置成功了。

第四步:编译和安装。通常配置完之后,我们输入make && sudo make install进行编译和安装。make是linux下面一个强大的构建工具。autoconf也就是./configure会在当前目录下生成一个 MakeFile文件。make会根据MakeFile文件编译整个项目。编译完成后,能够形成和当前操作系统以及CPU指令集兼容的二进制可执行文件。然后再用make install安装。&&符号代表执行完make再去执行make installl。

编译这个非常慢的活。等待了差不多1分钟,终于结束了。nginx被安装到了/usr/local/nginx中,如果需要让nginx全局执行,可以设置一个软连接到/usr/local/bin,具体如下:

ln -sf /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx

4.为什么会有编译安装?

了解完整个编译安装Ngnix过程后,思考一下,为什么会有编译安装这么复杂的事情。

原来使用C/C++写的程序存在一个交叉编译的问题。就是写一次程序,在很多个平台执行。而不同指令集的CPU指令,还有操作系统的可执行文件格式是不同的。因此这里有非常多的现实问题需要解决。一般是由操作系统的提供方,比如RedHat来牵头解决这些问题。你可以用apt等工具提供给用户已经编译好的包。apt会自动根据用户的平台类型选择不同的包。

但如果某个包没有在平台侧注册,也没有提供某个Linux平台的软件包,我们就需要回退到编译安装,通过源代码直接在某个平台安装。

5.总结

这次我们学习了解了在Linux上安装软件,简要介绍了dpkg和rpm,然后介绍了能够解决依赖和帮助用户下载的yum和apt。重点带你使用了apt,在这个过程中看到了强大的包管理机制,今天的maven、npm、pip都继承了这样一个特性。

回到开始的题目:编译安装和包管理安装有什么优势和劣势了吗?

【解析】 包管理安装很方便,但是有两点劣势。

  • 第一点是需要提前将包编译好,因此有一个发布的过程,如果某个包没有发布版本,或者在某个平台上找不到对应的发布版本,就需要编译安装。
  • 第二点就是如果一个软件的定制程度很高,可能会在编译阶段传入参数,比如利用configure传入配置参数,这种时候就需要编译安装。
http://www.dtcms.com/a/616272.html

相关文章:

  • C语言编译器的选择与使用
  • Clip:Learning Transferable Visual Models From Natural Language Supervision
  • 湟源县wap网站建设公司十大网页游戏排行
  • 工业皮带怎么做免费的网站加盟产品网站建设方案
  • 哪些可以免费做网站网站开发与设计实训报告1000字
  • 昆明市住房和城乡建设局门户网站军事新闻最新消息中国视频
  • 高端网站建设 房产深圳华强北电子商城
  • 在柬埔寨做网络销售推网站怎样换wordpress域名
  • 万远翔网站建设河南省工程建设业协会网站
  • 新网站seo技术wordpress修改自适应
  • 做标记网站做商城网站的企业
  • 建设银行官方网站公司鹤壁 网站建设
  • 莆田建设信息网站凡科网商城充值
  • 当今做那些网站能致富怎么能创建自己的网站
  • 房产信息查询系统官方网站徐州网站建设网站制作
  • 工作室装修网站源码wordpress 提请审批
  • 网站建设连接数据库佛山市桂城建设局网站
  • 不用备案的网站各种软件开发定制
  • 淮安做网站公司网页制作教程(第三版)
  • C语言在线编译器开发 | 提供高效编程体验与实时错误反馈
  • 上海网站建设021360怎么夸一个网站开发公司
  • 国外特效网站美团网站开发
  • 办个网站多少钱网站数据库迁移
  • 做网站的图片传进去很模糊flash属于网页制作平台吗
  • 附近做网站的公司在线制作国庆头像
  • LLM零样本提示技术:核心要点+实用提示示例
  • 定制型网站 成功案例网络搭建与维护是什么
  • 做零食的网站可以接单做网站的软件
  • 夹江企业网站建设报价wordpress 文章 图片 插件
  • 1m带宽做网站快不网站增加外链方法