本文共 5095 字,大约阅读时间需要 16 分钟。
相当费劲,我只想说相当费劲,好家伙折腾了我一天,真的有些问题我很郁闷,在这里记录一下:
!!!!! 相当费劲!
下载过程 - 联网的环境操作
这个问题相当头疼,最后还是解决了,解决的办法借用了网上的办法,因为依赖的问题非常麻烦,借鉴了一下网上的办法,然后自己改进了一下,最后解决了依赖下载的问题。
输入下边的指令:
$ sudo apt-get install --reinstall -d `sudo apt-cache depends bind9 bind9utils bind9-doc | grep Depends| cut -d: -f2 | tr -d "<>"`
出现了报错!.... 好像是因为版本的问题:
Reading package lists... DoneBuilding dependency tree Reading state information... DonePackage debconf-2.0 is a virtual package provided by: debconf 1.5.61 cdebconf 0.227You 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
),因为之后创建的文件夹名为:software
,因此这里的命令是在文件夹中创建一个包的索引文件 Packages.gz
:
/var/cache/apt $ sudo cp ./archives ./software/var/cache/apt $ sudo dpkg-scanpackages ./software/ /dev/null | gzip > ./software/Packages.gz
以上的所有步骤都是在连接互联网的相同 Debian 操作系统版本的虚拟机环境进行操作的,需要将 /var/cache/apt/archives
文件下的所有内容复制到一个新的文件夹,使用的方法是创建一个虚拟共享文件夹,网上有很多这方面的教程,其路径为:
/mnt/hgfs/DNS
命令如下:
$ sudo cp -r /var/cache/apt/software /mnt/hgfs/DNS$ 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
背景:
vsftpd
软件,无法通过 FTP 端口传输文件;sudo nestat -lntp
查找了一下服务打开的端口,好家伙端口都没有,算了,就自己制作 ISO 文件挂载安装传递;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
第一个字母没有大写;
原因分析:
解决方法:
将准备拷贝的文件夹压缩成一个压缩包,就上边生成的 software
文件夹为例子:
/var/cache/apt$ tar -zcvf software.tar.gz ./software
将这个文件制作成一个 ISO 文件, 制作的方法: 在 Mac 下 使用 来制作...
最后将这个ISO文件挂载在 Debian CD ROM 上,最后 解压 压缩包 softwaretar.gz
就好了... 没错... 第一个 .
也丢了不知道为什么...
我认为之前以为前两个问题已经很不可思议了,但是最少已经找到了对应的解决办法,因为 apt-get
提供了离线下载安装包及其依赖的办法,至少在没有搭建内网 软件源下载服务器 或者 安装光盘 的情况下,虽然麻烦,也是一种不错的解决办法;
就在我觉得这个方法已经可以一劳永逸地去解决在离线安装的相关问题时,我还是太菜了,安装非常重要的 gcc
以及 build-essential
的时候,我发现了这两个东西的依赖解决问题根本就不能通过上边的方法来进行解决,折磨了我一个下午的时间;
最后发现其实并不需要安装 GCC / Build-essential 也可以运行 queryperf
;
为了解决这个问题,我专门在 Vmware Fusion 软件上搭建一个完全相同的离线虚拟环境,就是为了把这两个东西一定装上,并且能够正确地编译 queryperf
;
我看了一下,网上关于这方面的资料是非常少的,基本上没有详细的介绍完整实现的流程,记录一下,希望看到这篇文章的你不要走我走过的老坑;
网上关于这方面的教程较少,参考 国外的论坛 比如: Stack Overflow 等论坛的方法有以下几种:
apt-offline
生成 sig
的文件进行安装;apt-mirror
制作一个 自定义的镜像,来进行安装部署;但是吧,我就是想折腾一下自己,顺着之前 apt-get install
命令继续做下去;
因为涉及到循环依赖相关问题,需要写一个 SHELL 脚本进行处理,当然,我现在其实不会写 SHELL 脚本,拼凑一下,问题不大!
1.执行一下下边的相关命令,在联网的虚拟机上执行下边的命令下载离线安装包:
$ sudo apt-get install -d --reinstall build-essential...The following NEW packages will be installed: binutils build-essential dpkg-dev fakeroot g++ g++-6 gcc gcc-6 libalgorithm-diff-perl lgorithm-diff-xs-perl libalgorithm-merge-perl libasan3 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-6-dev libitm1 liblsan0 libmpx2 libstdc++-6-dev libtsan0 libubsan0 linux-libc-dev make manpages-dev patch...
2.在 /var/cache/apt
目录下运行下边的脚本,记得给 SHELL 脚本添加 执行权限~
/var/cache/apt $ sudo cat ./script.sh# /bin/bashgcc_require=("make" "patch" "libalgorithm-diff-perl" "libalgorithm-diff-xs-perl" "libalgorithm-merge-perl" "libdpkg-perl" "binutils" "dpkg" "libasan" "libubsan" "libcilkrts" "libmpx" "libtsan" "liblsan" "libitm" "libgcc" "libcc1-0" "gcc-" "gcc_" "libc-dev-bin" "linux-libc-dev" "libc6-dev" "libstdc" "g++-" "g++_" "build-essential" "libfakeroot" "libalgorithm")for i in ${gcc_require[*]}do # 根据你下载安装包的文件夹路径进行修改 dpkg -i /var/cache/apt/archives/$i*.deb | grep "error" if [ $? -ne 0] then echo $? exit 1 fidone/var/cache/apt $ sudo chmod +x ./script.sh
执行完上边的命令,我在 Debian 9.11.0 版本下安装是成功的,如果出现报错请根据相关的错误的错误类型进行处理,一般的错误可能是下载的包没有下载完全,重新下载即可~
现在已经完全安装 build-essential
的相关Packages了~
Enjoy it!
转载地址:http://pmyuz.baihongyu.com/