在企业内部的机器中,为了业务和安全考虑,有一些服务器是禁止互联网的,但这些机器也有安装软件包、更新补丁的诉求。如何为不能联网的机器,安装软件呢?下面整理三种方法:
注三种方法,都必须额外有一台能上网的Ubuntu电脑,并且最好与离线Ubuntu是相同的大版本,如20.04;如果不是一个大版本,那可以临时修改有网Ubuntu的更新源与离线Ubuntu一致。
手动下载离线包安装
此方法适用于少量软件的情况,纯手工安装。下面是安装nginx的例子:
-
在有网Ubuntu上查看安装nginx都需要什么软件包:
~# apt-get --print-uris install nginx | grep "^'" | cut -d"'" -f2 https://mirrors.aliyun.com/ubuntu/pool/main/n/nginx/nginx-common_1.18.0-0ubuntu1.7_all.deb https://mirrors.aliyun.com/ubuntu/pool/main/n/nginx/libnginx-mod-http-image-filter_1.18.0-0ubuntu1.7_amd64.deb https://mirrors.aliyun.com/ubuntu/pool/main/n/nginx/libnginx-mod-http-xslt-filter_1.18.0-0ubuntu1.7_amd64.deb https://mirrors.aliyun.com/ubuntu/pool/main/n/nginx/libnginx-mod-mail_1.18.0-0ubuntu1.7_amd64.deb https://mirrors.aliyun.com/ubuntu/pool/main/n/nginx/libnginx-mod-stream_1.18.0-0ubuntu1.7_amd64.deb https://mirrors.aliyun.com/ubuntu/pool/main/n/nginx/nginx-core_1.18.0-0ubuntu1.7_amd64.deb https://mirrors.aliyun.com/ubuntu/pool/main/n/nginx/nginx_1.18.0-0ubuntu1.7_all.deb -
在有网Ubuntu上将上面的deb包都下载下来
wget 'https://mirrors.aliyun.com/ubuntu/pool/main/n/nginx/nginx-common_1.18.0-0ubuntu1.7_all.deb' .... -
将这一堆deb包拷贝到离线Ubuntu机器中
-
在离线Ubuntu中安装,
sudo dpkg -i *.deb -
如果有依赖问题,则执行
sudo apt --fix-broken install
使用apt-offline命令安装
如果遇到大量软件,或者想执行批量更新的情况,手动安装就不太现实了,可以使用apt-offline命令。不过,尴尬的是,apt-offline这个软件本身是不包含在Ubuntu系统中的,需要手动先安装好。
apt-offline的原理很简单,先在离线Ubuntu上检测都缺失哪些包,把缺失的包都记录到文件中,然后有网Ubuntu根据这个文件去下载所有的包,最后把这些包再手工拷贝到离线Ubuntu中安装。原理跟手动安装一样,只是提高了效率。
-
在离线Ubuntu上检测缺失什么包,将结果保存到apt-nginx.sig中
apt-offline set --install-packages nginx -- apt-nginx.sig - 将apt-nginx.sig这个文件拷贝到有网Ubuntu中
-
在有网Ubuntu中下载依赖的包,并打包成nginx-bundle.zip压缩包
apt-offline get --bundle nginx-bundle.zip apt-nginx.sig - 将nginx-bundle.zip压缩包拷贝到离线Ubuntu中
-
在离线Ubuntu中加载离线包
apt-offline install nginx-bundle.zip -
在离线Ubuntu中安装nginx,如果有依赖顺序问题,可先执行
apt --fix-broken installapt install nginx
使用内部Ubuntu代理apt仓库(最推荐)
类似java语言的Maven私服,可以在有网Ubuntu中安装一个apt代理仓库,开放给离线Ubuntu使用;离线Ubuntu在下载、更新时,请求的是内部的apt代理,如果apt代理中已经有了相关包,则直接下载;没有的话,由apt代理再去外网请求下载。apt-cacher-ng是个比较好的解决办法。
-
在有网Ubuntu中安装apt-cacher-ng,安装后默认端口3142
sudo apt install apt-cacher-ng -
在离线Ubuntu中配置apt仓库代理,编辑/etc/apt/apt.conf.d/01proxy
Acquire::http::Proxy "http://有网ubuntu up地址:3142"; -
离线Ubuntu即可正常使用apt
sudo apt update sudo apt install XXX sudo apt upgrade
可以通过http页面查看apt代理仓库的情况,http://有网ubuntu ip地址:3142/acng-report.html

原创文章,转载请注明: 转载自空空博客
本文链接地址: Ubuntu离线更新或者安装软件包
文章的脚注信息由WordPress的wp-posturl插件自动生成
近期评论