重学操作系统(九)
前言
今天说一下在Linux(当然,我用的是Mac,不过差不多)下安装程序的一些知识点。我们知道,Linux安装程序一般就是两种方式:
- 下载源码然后编译
- 使用包管理器
第一种方式当然只针对开源项目,不过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命令去查看。
编译安装
第一步:下载源码,可以使用wget下载,如果没有,可以用apt或者yum安装。
解压下载好的源码:
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。
配置和解决依赖
一般解压后,进入文件目录,会有configure文件,是一个可执行文件。一般需要执行这个配置文件,进行配置。如果执行后,报错,例如:
xxx is not found这是依赖检查报错,需要安装相应的依赖,才能继续安装这个软件包。
编译和安装
通常配置完后,一般输入make && sudo make install来编译和安装。
make是Linux下面一个构建工具。在执行完配置文件后,通常会生成一个叫MakeFile的文件,make命令会根据MakeFile文件编译整个项目。编译完成后,能够形成可执行的二进制文件,make install便可以进行安装。&& 符号表示顺序执行。
总结
目前大部分包都可以通过自动依赖管理器进行安装,但是如果一个包没有在相应的包平台注册,我们就需要通过编译安装来进行安装。
包管理工具的优点不必多说,现在说下缺点:
1. 不是所有包都一定编译并发布到相应的平台,这时候需要用编译安装。
2. 如果一个软件定制度很高,编译阶段需要传入参数,这时候需要编译安装。
Q:如果你在编译安装 MySQL 时,发现找不到 libcrypt.so,应该如何处理?
A:安装libcrypt.so然后添加到相应路径。
参考
[2] https://blog.csdn.net/lu_embedded/article/details/51994466