今天一台主机(Ubuntu 14.04)不知道为什么连不上外网了。只能和局域网内的其他主机相互ping通。但是上面一个正在跑的程序出了问题,需要安装两个额外的包,而且这两个包依赖还挺多的样子。这可急死我了。但是我另一台笔记本可以上外网。碰巧也安装的是Ubuntu14.04。我就想能不能把要安装的包先在笔记本上下载好,然后通过U盘转移到前面那台主机上,再在那台主机上通过本地包安装呢?通过网上一番搜索后,终于搞定了。现在总结一下步骤。
在能上网的笔记本上下载好需要的包
$ sudo rm -rf /var/cache/apt/archives/* # 清空缓存目录,这一步也可以不做
$ sudo apt-get -d install <包名>
运行完该命令后,需要的包及依赖都会下载到 /var/cache/apt/archives。
复制到U盘中
将下载好的包( /var/cache/apt/archives目录下的所有文件)复制到U盘中,准备转移。如果你不想拷贝多余的包文件,你可以提前将 /var/cache/apt/archives 目录清空后再下载需要的包。
# 先在U盘中创建好一个目录debs
$ sudo cp -r /var/cache/apt/archives/* /U盘/路径/debs/
下面转到不能上网的主机上操作
在主机上创建包缓存目录
$ sudo mkdir /var/debs
将U盘中下载好的包文件全部复制到/var/debs目录下
$ sudo cp -r /U盘/路径/debs/* /var/debs/
生成包索引文件
$ sudo touch /var/debs/Packages.gz
$ sudo chmod -R 777 /var/debs/ # 这一步是为了获得文件的可写可读可执行权限,要不然后面会失败
$ sudo dpkg-scanpackages debs /dev/null | gzip > debs/Packages.gz # 创建索引
在 /etc/apt/sources.list 中添加本地目录
$ sudo gedit /etc/apt/sources.list
将sources.list 原来的内容都注释掉。在最后添加
$ deb file:/var debs/
注意上面的 /var 和 debs/ 之间的空格,以及 “/”。不要写错/var/debs/路径了。
更新索引
$ sudo apt-get update
结束
现在可以安装包了。运行sudo apt-get install <包名> 就会像以前一样安装好了指定的包了。