• win7环境下,vagrant,在启动虚拟机的时候报错io.rb:32:in `encode': incomplete "xC8" on GBK (Encoding::InvalidByteSequenceError)


    描述

      这几天在windows环境上,部署了vagrant,在启动虚拟机的时候报错:

    [c:~]$ vagrant up
    Bringing machine 'default' up with 'virtualbox' provider...
    ==> default: Importing base box 'centos'...
    ==> default: Matching MAC address for NAT networking...
    ==> default: Setting the name of the VM: Sessions_default_1566958579504_77159
    ==> default: Destroying VM and associated drives...
    D:/tools/HashiCorp/Vagrant/embedded/gems/2.2.5/gems/vagrant-2.2.5/lib/vagrant/util/io.rb:32:in `encode': incomplete "xC8" on GBK (Encoding::InvalidByteSequenceError)
        from D:/tools/HashiCorp/Vagrant/embedded/gems/2.2.5/gems/vagrant-2.2.5/lib/vagrant/util/io.rb:32:in `read_until_block'
        from D:/tools/HashiCorp/Vagrant/embedded/gems/2.2.5/gems/vagrant-2.2.5/lib/vagrant/util/subprocess.rb:194:in `block in execute'
        from D:/tools/HashiCorp/Vagrant/embedded/gems/2.2.5/gems/vagrant-2.2.5/lib/vagrant/util/subprocess.rb:192:in `each'
        from D:/tools/HashiCorp/Vagrant/embedded/gems/2.2.5/gems/vagrant-2.2.5/lib/vagrant/util/subprocess.rb:192:in `execute'
        from D:/tools/HashiCorp/Vagrant/embedded/gems/2.2.5/gems/vagrant-2.2.5/lib/vagrant/util/subprocess.rb:22:in `execute'

    解决过程

      找了好久,都没有说明白,后来在国外的github上看到了解决的方案。

    参考地址:https://github.com/hashicorp/vagrant/issues/9368

    参考内容:

    My Solution
    
    With the help of a non vagrant-related StackOverflow solution, I solved the issue by changing the line 32 in "Vagrantembeddedgemsgemsvagrant-2.0.1libvagrantutil" as:
    
    data << io.readpartial(READ_CHUNK_SIZE).encode('UTF-8', invalid: :replace, undef: :replace, replace: '?')

     即修改源代码,说改就改:

    1.找到D:/tools/HashiCorp/Vagrant/embedded/gems/2.2.5/gems/vagrant-2.2.5/lib/vagrant/util/io.rb文件,找到32行

    data << io.readpartial(READ_CHUNK_SIZE).encode("UTF-8", Encoding.default_external)

     2.将这行注释掉,下面加入参考github上的代码

                  #data << io.readpartial(READ_CHUNK_SIZE).encode("UTF-8", Encoding.default_external)
                  data << io.readpartial(READ_CHUNK_SIZE).encode('UTF-8', invalid: :replace, undef: :replace, replace: '?')

     3.修改之后,重新执行命令vagrant up

    [c:~]$ vagrant up
    Bringing machine 'default' up with 'virtualbox' provider...
    ==> default: Importing base box 'centos'...
    ==> default: Matching MAC address for NAT networking...
    ==> default: Setting the name of the VM: Sessions_default_1566958795239_49467
    Vagrant is currently configured to create VirtualBox synced folders with
    the `SharedFoldersEnableSymlinksCreate` option enabled. If the Vagrant
    guest is not trusted, you may want to disable this option. For more
    information on this option, please refer to the VirtualBox manual:
    
      https://www.virtualbox.org/manual/ch04.html#sharedfolders
    
    This option can be disabled globally with an environment variable:
    
      VAGRANT_DISABLE_VBOXSYMLINKCREATE=1
    
    or on a per folder basis within the Vagrantfile:
    
      config.vm.synced_folder '/host/path', '/guest/path', SharedFoldersEnableSymlinksCreate: false
    ==> default: Clearing any previously set network interfaces...
    ==> default: Preparing network interfaces based on configuration...
        default: Adapter 1: nat
    ==> default: Forwarding ports...
        default: 22 (guest) => 2222 (host) (adapter 1)
    ==> default: Booting VM...
    ==> default: Waiting for machine to boot. This may take a few minutes...
        default: SSH address: 127.0.0.1:2222
        default: SSH username: vagrant
        default: SSH auth method: private key
        default: Warning: Connection reset. Retrying...
        default: Warning: Connection aborted. Retrying...
        default: Warning: Remote connection disconnect. Retrying...
        default: 
        default: Vagrant insecure key detected. Vagrant will automatically replace
        default: this with a newly generated keypair for better security.
        default: 
        default: Inserting generated public key within guest...
        default: Removing insecure key from the guest if it's present...
        default: Key inserted! Disconnecting and reconnecting using new SSH key...
    ==> default: Machine booted and ready!
    ==> default: Checking for guest additions in VM...
        default: The guest additions on this VM do not match the installed version of
        default: VirtualBox! In most cases this is fine, but in rare cases it can
        default: prevent things such as shared folders from working properly. If you see
        default: shared folder errors, please make sure the guest additions within the
        default: virtual machine match the version of VirtualBox you have installed on
        default: your host and reload your VM.
        default: 
        default: Guest Additions Version: 4.3.30
        default: VirtualBox Version: 6.0
    ==> default: Mounting shared folders...
        default: /vagrant => C:/Users/Administrator/Documents/NetSarang/Xshell/Sessions

    顺利通过!

    文档创建时间:2019年8月28日10:44:13

  • 相关阅读:
    R语言编程艺术(2)R中的数据结构
    R语言编程艺术(1)快速入门
    R语言实战(十)处理缺失数据的高级方法
    R语言实战(九)主成分和因子分析
    R语言实战(八)广义线性模型
    R语言实战(七)图形进阶
    R语言实战(六)重抽样与自助法
    R语言实战(五)方差分析与功效分析
    R语言实战(四)回归
    R语言实战(三)基本图形与基本统计分析
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/11422662.html
Copyright © 2020-2023  润新知