引言
很多软件迭代版本较快,导致其依赖项也有许多版本,这种快速迭代造成如果向安装低版本可能ubuntu的apt里面没有对应版本的软件源,这种时候最好的版本就是自己去官网找到对应的deb安装包来安装。
一.查看官网的依赖关系并得到安装包
rabbitmq需要先安装erlang环境,这里的给出官网连接。这里rabbitmq依赖的是erlang19.3以下。
接下来就是去erlang的官网找到对应版本的安装包,这里给一个软件集合目录,一般百度下基本就出来了,没有的话去git上看看,对于ubuntu,最好是找到自己的ubuntu版本对应的代号,我这边的是ubuntu20,对应的是Focal(这个代号没啥好记的,用的时候找找就行,纯粹为了代号而代号,没啥实际意义),所以我就下载了esl-erlang_19.3.6-1ubuntuzesty_amd64.deb,因为这个版本ubuntu20还没出来,就随便选了一个,可以的话版本号最好还是要对上。
另外rabbitmq可以直接在github上找对应release,选择rabbitmq-server_3.6.9-1_all.deb下载即可,一般这种一堆安装包的先找带all的名字的,在尝试找ubuntu版本代号对应的tar.gz/deb,最后再找debian的包,因为ubuntu和debian的包虽然大部分情况下都可以兼容,但是想少出点bug还是老老实实找对应版本的包好点。
二.执行安装指令
将deb包通过scp或sftp弄到自己服务器上,随后执行
sudo dpkg -i xxx.deb
这里的问题在于包与包之间有依赖关系,装着装着会抱错缺少依赖的包,比如这样
Unpacking esl-erlang (1:19.3.6) ...
dpkg: dependency problems prevent configuration of esl-erlang:
esl-erlang depends on libssl1.0.0 | libssl1.0.2; however:
Package libssl1.0.0 is not installed.
Package libssl1.0.2 is not installed.
esl-erlang depends on libwxgtk2.8-0 | libwxgtk3.0-0 | libwxgtk3.0-0v5; however:
Package libwxgtk2.8-0 is not installed.
Package libwxgtk3.0-0 is not installed.
Package libwxgtk3.0-0v5 is not installed.
esl-erlang depends on libsctp1; however:
Package libsctp1 is not installed.
直接吧缺少的包+版本号拿去社区找找,找到下载连接就直接wger下下来就可,找不到就看看换一个包或百度,这种基本上不会你第一个碰见的问题,多少都会有人写博客告诉你资源在哪,下好安装就行。
三.卸载残留
一般来说往往不小心apt install或执行过dpkg -i会导致系统中有残留的软件引起冲突,以erlang为例子,这种情况下,首先用这个
sudo apt remove erlang-*
这里要看清提示,把所以与它依赖有关的东西全删了,随后查看其本地留下的一些文件
whereis erlang
把找到的东西也删掉基本就卸载干净了,剩下的就是尝试重装或别的啥