重学操作系统(九)

重学操作系统(九)

前言

今天说一下在Linux(当然,我用的是Mac,不过差不多)下安装程序的一些知识点。我们知道,Linux安装程序一般就是两种方式:

  1. 下载源码然后编译
  2. 使用包管理器

第一种方式当然只针对开源项目,不过Linux大多数软件都是开源的。


贯穿全文的一道题:编译安装和包管理器安装有什么优势和劣势?


包管理器安装

也许很多接触Linux的人,都听说过dpkg和rpm。他们两个可以相当于包管理器,同时也可被认为是安装包的格式,或者安装包的机制。

Linux系统两大分类

1. RedHat系列:Redhat, Centos,Fedora等
2. Debian系列:Debian,Ubuntu等

Redhat系列:

* 常见的安装包格式是rpm
* 包管理工具是yum

Debian系列:

* 常见的包格式是deb
* 包管理工具apt-get

他们提供的功能主要包括:

1. 查询是否安装某个软件
2. 查询所有安装的软件包
3. 安装一个软件包
4. 删除一个安装好的软件包

但是他们也有自己的缺点,主要就是,如果某个包依赖很多其它的包,他们不会对此进行处理,先安装依赖包。因此,出现了yum和apt两个自动包管理工具。

自动依赖管理

yum

yum全称是Yellow Dog Updator, Modified,基于Yellow Dog Updator修改而来的。Yellowdog Updator是Yellow Dog Linux的包管理工具。后面Yellow Dog Linux也使用yum了。

yum是Python开发的,提供rpm安装包,因此只有Redhat系列的Linux系统可用,如Centos。yum可以做到在安装软件包前,帮你下载并安装相关依赖。

命令:yum install vim

apt

apt全称是Advanced Packaging Tools,是debian系列Linux系统的包管理器。它能提供和yum类似的下载和安装依赖的能力。

主要常用的命令如:

apt remove xxx
apt install xxx
apt search xxx

剩下可以通过man apt命令去查看。

编译安装

  1. 第一步:下载源码,可以使用wget下载,如果没有,可以用apt或者yum安装。

  2. 解压下载好的源码:

    tar -xzvf xxxx.tar.gz

    tar是解压和打包用的命令。之所以叫tar,主要是t代表tape,ar代表archive。因为早期存储介质较小,人们习惯把文件打包然后存储在磁带上,那时候Unix用的命令就是tar,之后Linux延续这个用法。

    -x代表extract(提取);-z代表gzip,解压gz类型文件;-v是verbose,用来显示解压过程,没这个选项,就不显示解压过程;-f是file,指的是要操作的是文件。tar解压的话,一般都有x,f选项,打包一般用c。

  3. 配置和解决依赖

    一般解压后,进入文件目录,会有configure文件,是一个可执行文件。一般需要执行这个配置文件,进行配置。如果执行后,报错,例如:

     xxx is not found
    

    这是依赖检查报错,需要安装相应的依赖,才能继续安装这个软件包。

  4. 编译和安装

    通常配置完后,一般输入make && sudo make install来编译和安装。

    make是Linux下面一个构建工具。在执行完配置文件后,通常会生成一个叫MakeFile的文件,make命令会根据MakeFile文件编译整个项目。编译完成后,能够形成可执行的二进制文件,make install便可以进行安装。&& 符号表示顺序执行。

总结

目前大部分包都可以通过自动依赖管理器进行安装,但是如果一个包没有在相应的包平台注册,我们就需要通过编译安装来进行安装。

包管理工具的优点不必多说,现在说下缺点:

1. 不是所有包都一定编译并发布到相应的平台,这时候需要用编译安装。
2. 如果一个软件定制度很高,编译阶段需要传入参数,这时候需要编译安装。

Q:如果你在编译安装 MySQL 时,发现找不到 libcrypt.so,应该如何处理?

A:安装libcrypt.so然后添加到相应路径。

参考

[1] https://kaiwu.lagou.com/course/courseInfo.htm?courseId=478&sid=20-h5Url-0&buyFrom=2&pageId=1pz4#/detail/pc?id=4614

[2] https://blog.csdn.net/lu_embedded/article/details/51994466


 上一篇
重学操作系统(十) 重学操作系统(十)
重学操作系统(十)前言之前看了很多Linux相关的内容,最后有分析日志和自动化运维的一些知识,有些太深入了,所以只是看了下,跟着做了下练习,没有写成文章。 今天继续,来说一下Windows和Linux的区别。 Windows,Linux,M
下一篇 
重学操作系统(八) 重学操作系统(八)
重学操作系统(八)前言距离上次整理关于操作系统相关知识点,已经过去几周了,现在找到时间,继续看相关文章,继续总结。 今天看的文章是关于Linux网络指令相关的知识点。 贯穿全文的一道题:如何查看一个域名有哪些NS(Name Server)
  目录