发布网友 发布时间:2022-04-26 09:35
共1个回答
热心网友 时间:2022-06-26 21:16
回答你的问题之前先来谈谈这个yum及apt的安装过程。使用yum/apt之前,你很可能会遇到配置源(ubuntu下一般内置的就比较好,所以可能很少人手动配置),那这个源是什么呢,就是告诉apt/yum,安装软件的时候你要从哪里下载。比如你使用163的源,然后你apt-get/yuminstallxxx的时候,就从你的源配置文件中读取位置(这里是163的服务器),然后可能在第一次会更新本地数据库(这个数据库中记录163服务器上拥有的软件包,软件包的依赖情况等),本地更新完了就从本地缓存数据库中读取依赖情况以及软件包的具体url,然后就会下载到本地缓存目录。下载完成后执行安装操作。说到安装操作,就要谈谈两种方式获取到的包的区别。yum获取到的是rpm,apt获取的是deb,其实你都可以看成是一个压缩包。里面有对应的软件。因为开发者不一样,所以两种软件包的解包方式不一样,和gz,rar包差不多,需要特定的命令去解,rpm包是rpm命令,deb是dpkg命令。那解开后能不能通用呢(比如把deb解开后放到rhel中运行)。这个也不是不行但是要考虑到很多因素,假设包中是经过编译的二进制文件(就像windows下的可执行文件),那么就要考虑到依赖。如果是脚本文件就要好些,因为大部分脚本兼容性都比较好。这个依赖,就比较复杂了,当然也可以简单的说说,和windows的.dll类似,linux也有动态链接库文件,后缀一般为so,某些软件可能会依赖这些库,本来你的系统glibc是2.12版本的,而你移植过来是需要2.14版本的,你会发现运行不了。当然,是可以解决的,只是解决起来也麻烦好了,回到yum/apt了,apt/yum可以自动解决依赖,但是有个问题,比如刚刚那个移植过来的软件,你安装的时候回提示glibc版本过低需要升级,但是升级就意味着你升级过后,原有的依赖glibc的软件,会发现glibc版本过高,可能不兼容,然后就冲突了,到底是你要满足旧的软件还是满足新的软件呢。如果你全交给apt/yum解决,结果是软件遇到大更新,更新结果软件冲突咱先不说,你就为了安装一个apache,导致你下载几百兆甚至几个G的东西,你这不是更麻烦了吗。如果你真有需要,你可以先apt-getsource之类的命令下载源码,放到另一个系统中尝试编译,或者apt-getdownload下载deb包然后解开,拷贝到另一个系统,尝试手动解决依赖。你的问题理论上可以实现,但是很少人会去实现,反正我没做过。不过也并不一定不值得去做。很多时候别人说的,和实际情况会不一样,实践出真理。