VMware vSphere 离线虚拟机安装软件
在 Debian 9.11 下 (apt-get) 离线下载、安装软件包
相当费劲,我只想说相当费劲,好家伙折腾了我一天,真的有些问题我很郁闷,在这里记录一下:
!!!!! 相当费劲!
1. 在 Debian 下,使用离线软件包源,安装 BIND9 依赖总是出错...出错...出错...
下载过程 - 联网的环境操作
这个问题相当头疼,最后还是解决了,解决的办法借用了网上的办法,因为依赖的问题非常麻烦,借鉴了一下网上的办法,然后自己改进了一下,最后解决了依赖下载的问题。
输入下边的指令:
$ sudo apt-get install --reinstall -d `sudo apt-cache depends bind9 bind9utils bind9-doc | grep Depends| cut -d: -f2 | tr -d "<>"`
出现了报错!.... 好像是因为版本的问题:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package debconf-2.0 is a virtual package provided by:
debconf 1.5.61
cdebconf 0.227
You should explicitly select one to install.
E: Package ‘debconf-2.0‘ has no installation candidate
- 改进一下上边的命令,将
debconf
包进行跳过,即不进行安装;
$ sudo apt-get install --reinstall -d `sudo apt-cache depends bind9 bind9utils bind9-doc | grep Depends| grep -v debconf |cut -d: -f2 | tr -d "<>"`
- 就可以正常下载了,最后再下载上边没有下载成功的
debconf
,所有的安装包都被安装在了
$ sudo apt-get install --reinstall -d debconf cdebconf
- 当然,最后不要忘记使用
dpkg-scanpackages
命令 为所有的包添加索引文件,因为apt-get
是建立在dpkg
工具索引上的;
添加的命令为: (所有的软件和依赖被保存在 /var/cache/apt/archives
)
/var/cache/apt $ sudo dpkg-scanpackages ./archives/ /dev/null | gzip > ./archives/Packages.gz
以上的所有步骤都是在连接互联网的相同 Debian 操作系统版本的虚拟机环境进行操作的,需要将 /var/cache/apt/archives
文件下的所有内容复制到一个新的文件夹,使用的方法是创建一个虚拟共享文件夹,网上有很多这方面的教程,其路径为:
/mnt/hgfs/DNS/software
命令如下:
$ sudo cp -r /var/cache/apt/archives/* /mnt/hgfs/DNS/software
$ sudo chmod 777 -R /mnt/hgfs/DNS/sooftware
安装过程 - 离线的虚拟机操作
- 将上边的文件见拷贝到目标虚拟机的根目录下, 设置一个新的软件依赖源文件夹,目录路径为
/software
$ ls /
...
software
...
- 修改 离线虚拟机
apt
的 源配置文件,你可以将原来的内容注释掉,加入新的目标文件夹路径;
$ sudo nano /etc/apt/sources.list
# deb http://security.debian.org/debian-security buster/updates main
# deb-src http://security.debian.org/debian-security buster/updates main
# 新加上一个新的路径
deb file:/// software/
注意: software 前有一个空格!!!!
- 最后必须要更新一下源,中间可能有很多信息,不去管他们:
$ sudo apt-get update
- 就可以正常使用离线软件源下载了,但是因为这个离线软件源并没有配置
Release
文件信息,因此被认为是不安全的,需要安装的时候加上--allow-unauthenticated
:
$ sudo apt-get install bind9 bind9utils bind9-doc --allow-unauthenticated
2. 在 Debian下,ISO 中文件保存在本地后文件名会莫名的发生变化
背景:
- 在离线的 Debian 虚拟机上没有安装
vsftpd
软件,无法通过 FTP 端口传输文件; - 不知道 怎么打开 Debian 预先安装的 FTP 服务软件,各种找不到相关文件传输服务;
- 最后只能通过挂载
iso
镜像文件来做到vSphere
与esxi
服务端的文件传递;
问题重现:
在上边的步骤已经生成了新的文件夹: /software
,现在需要将这个文件夹做成 iso
文件挂在在虚拟机上的 CD ROM 上传输数据,源文件名的截图如下:
源文件名: libxml2_2.9.4+dfsg1-2.2+deb9u3_amd64.deb
生成的 包索引文件名: Packages.gz
制作成 ISO 镜像之后在 Debian 系统 打开之后文件名悄然变化:
挂载到 Debian 系统上,之后的文件名: libxml2_294+dfsg1-22+deb9u.deb
丢失了第一个 .
;
索引包的文件名变成了: package.gz
第一个字母没有大写;
原因分析:
- 可能是 MAC OS 环境下的文件命名问题,我并不认为是 Debian 文件系统的设定问题,所以其原因我更偏向于 MAC OS 文件系统的问题 或者其他原因,查了一下资料我也搞不懂.... 反正确实在实际过程中有这个问题存在导致软件包安装失败;
解决方法:
-
将准备拷贝的文件夹压缩成一个压缩包,就上边生成的
software
文件夹为例子:/var/cache/apt$ tar -zcvf software.tar.gz ./software
-
将这个文件制作成一个 ISO 文件, 制作的方法: 在 Mac 下 使用 Keka 来制作...
-
最后将这个ISO文件挂载在 Debian CD ROM 上,最后 解压 压缩包
softwaretar.gz
就好了... 没错... 第一个.
也丢了不知道为什么...