Ubuntu离线更新软件包

1. apt-offline 简介

参考:

http://manpages.ubuntu.com/manpages/precise/en/man8/apt-offline.8.html

apt-get 是一个在线安装工具,当离开有效的网络环境时,apt-get 则无法安装软件包。尤其当服务器部署到生产环境,因各种原因不能连接到互联网的情况,而我们又想升级服务器,或者安装某些复杂的软件,那么我们如何利用强大的 APT 工具升级Ubuntu 系统呢?

这里用到一个python写的软件包:apt-offline,它是一个离线的 APT 包管理器,它要求python2.7.x版本支持。假设我们离线的Ubuntu计算机为 A,在线的Ubuntu计算机为B,apt-offline 的使用过程是:

第一步,在离线的Ubuntu计算机A上,产生一个要更新的软件包的签名文件:

$ sudo apt-offline set --update --upgrade --install-packages [your-pkgs1 your-pkgs2 your-pkgs3 ...] -- apt-offline.sig

上面的命令将生成一个 apt 升级数据库所需的信息文件apt-offline.sig。

第二步,在在线的Ubuntu计算机B上,根据签名文件apt-offline.sig下载数据,并把软件包打成一个包 apt-offline-pkgs.zip:

apt-offline get ./apt-offline.sig --threads 2 --bundle apt-offline-pkgs.zip

第三步,把apt-offline-pkgs.zip拷贝回离线的Ubuntu计算机A上,执行离线更新:

$ sudo apt-offline install ./apt-offline-pkgs.zip

上面的apt-offline.sig,apt-offline-pkgs.zip可以改成你自己喜欢的名称。

*注意:在我的Ubuntu Server 12.10 amd64上,执行上面的命令之后,并没有自动安装软件包,而是把软件包解压到 /var/cache/apt/archives/ 下,因此第三步修订如下:

1)# 清除/var/cache/apt/archives/ 下的全部*.deb文件:

$ sudo apt-get clean

2)解压apt-offline-pkgs.zip到/var/cache/apt/archives/ 下:

$ sudo apt-offline install ./apt-offline-pkgs.zip

3)安装/var/cache/apt/archives/ 下的全部*.deb文件:

$ sudo apt-get install /var/cache/apt/archives/*.deb

这样离线安装软件包就安装好了。

1.1 下载 apt-offline

进入下面的页面:

https://launchpad.net/ubuntu/precise/amd64/apt-offline/1.1.1

点击下面的链接,下载 apt-offline_1.1.1_all.deb:

http://launchpadlibrarian.net/76506629/apt-offline_1.1.1_all.deb

1.2 安装 apt-offline

$ sudo dpkg -i apt-offline_1.1.1_all.deb

2. apt-offline 使用

假设我们离线的Ubuntu计算机为 A,在线的Ubuntu计算机为B。在A上执行

$ easy_install

如果显示为:

error: can't create or remove files in install directory

......
表示已经安装了python-setuptools python-dev,为了演示如何安装离线包,那么执行下面的命令将删除已经安装的easy_install:

$ sudo apt-get remove python-setuptools python-dev --purge

下面开始安装离线包:

1)在A上,生成要更新的软件包的签名文件python-pkgs.sig。然后把签名文件python-pkgs.sig拷贝到B:

$ sudo apt-offline set --install-packages python-setuptools python-dev -- python-pkgs.sig

2)在B上,下载我们需要的软件包,并打包成pkgs.zip。然后把pkgs.zip拷贝到A:

$ apt-offline get ./python-pkgs.sig --threads 2 --bundle pkgs.zip

3)在A上,离线安装软件包pkgs.zip:

$ sudo apt-get clean

$ sudo apt-offline install ./pkgs.zip

$ sudo dpkg --install /var/cache/apt/archives/*.deb

3. apt-get 安装离线包

这里再介绍一种安装离线包的方法:

1)在在线的机器B上执行下面的命令,把要安装的软件包下载到指定的目录dl-pkgs下:

$ sudo apt-get remove python-setuptools python-dev --purge        # 删除已经安装的软件包

$ sudo apt-get install -d -o dir::cache=./dl-pkgs python-setuptools python-dev     # 下载软件包到指定的目录下 dl-pkgs

$ sudo tar -czvf pkgs.tar.gz ./dl-pkgs/*    # 打包压缩到 pkgs.tar.gz

然后把 pkgs.tar.gz 拷贝到离线机器A上

2)在离线机器A上执行下面的命令,把pkgs.tar.gz安装到离线的系统中:

$ sudo tar -xzvf  pkgs.tar.gz ./dl-pkgs/

$ sudo dpkg --install ./dl-pkgs/archives/*.deb

4. 总结

本文提供了安装离线包的2种办法,其中一种是使用apt-offline这个软件,另一种是直接使用apt-get的下载功能。

apt-offline可以把目标离线机器上的软件依赖关系自动保存到签名文件sig中,然后在在线的机器上,根据这个sig文件,下载软件到一个包中,接着使用dpkg --install的功能安装包中的全部.deb文件即可。

apt-get更加自动化,但是如果目标离线机器A和在线的机器B存在包不一致的情况,这个安装方式就会引起混乱。

具体采用哪个方法,或者结合使用2者,看具体情况而定。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值