linux离线安装软件
有时候我们会遇到一些特殊的环境配置要求,或许出于安全、也或许是保密、也或许其他环境,总而言之,言而总之。给了一台linux,但没有网络。这种情况就日了狗了,我们现在就解决这种情况。
以ubuntu18.04为例。安装php7.2环境
废话少说,干
假如,假如有网络的话,安装容易的很:
sudo apt install -y --no-install-recommends php7.2 php7.2-bcmath php7.2-cli php7.2-common php7.2-curl php7.2-fpm php7.2-gd php7.2-mbstring php7.2-mysql php7.2-xml php7.2-zip php7.2-soap就这样一下就可以了,前提是有网络。
那现在没网络怎么办?
思路:我们在有网络的服务器上(相同版本的服务器),先把这些包给拉下来,先不考虑依赖。怎么拉?总不能一个一个去找吧?太麻烦。我们借用 apt-get download命令即可。还是上面那些包,apt-cache depends -i:下载相关依赖,执行一下:
格式:
apt-get download 要下载的软件包 && apt-cache depends -i 要下载的软件包 | awk '/Depends:/ {print $2}' | xargs apt-get download执行下载php:
apt-get download php7.2 php7.2-bcmath php7.2-cli php7.2-common php7.2-curl php7.2-fpm php7.2-gd php7.2-mbstring php7.2-mysql php7.2-xml php7.2-zip php7.2-soap && apt-cache depends -i php7.2 php7.2-bcmath php7.2-cli php7.2-common php7.2-curl php7.2-fpm php7.2-gd php7.2-mbstring php7.2-mysql php7.2-xml php7.2-zip php7.2-soap | awk '/Depends:/ {print $2}' | xargs apt-get download执行完毕,这些包在哪里?打开:/var/cache/apt/archives 目录,先提前把这个目录的deb清理一下,可以备份到其他目录,不然分不清楚。
我们把这些包搞下来,在服务器上安装这些包就可以了,但是安装是有先后顺序的,怎么知道?我们可以在有网络的服务器上,把本文开头的第一条命令实际执行一下:这是执行完后留下来的痕迹
看见没,这就是执行顺序,我们按照这个顺序执行就行了,sudo dpkg -i,但这里有个问题,上面红色的框框没有。我们用同样的办法,把上面红色框框的软件,拉下来
apt-get download libsodium23
这时候就按照上图顺序依次执行,执行第一个
sudo dpkg -i libsodium23_1.0.16-2_amd64.deb成功后再干第一个,这种方法搞不定依赖中的依赖,所以如果有遇到依赖,我们用同样的方法,把某个依赖在另外一台服务器上干下来,然后再传过来即可。这样做的目的我们不用考虑版本型号是否正确,不要到处去找这些玩意儿。