[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7905":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":16,"rankGlobal":10,"rankLanguage":10,"license":17,"archived":18,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},7905,"vagrant-vbguest","dotless-de\u002Fvagrant-vbguest","dotless-de","A Vagrant plugin to keep your VirtualBox Guest Additions up to date","",null,"Ruby",2867,218,1,0,59.02,"MIT License",true,false,"main",[],"2026-06-12 04:00:36","# vagrant-vbguest\n\n**Please note that as of 2023-12-17, this project is archived and will not receive further updates or support from me.**  \n**However, the existing codebase will remain available for reference and use under the project's open-source license.**\n\n---\n\n*vagrant-vbguest* is a [Vagrant](http:\u002F\u002Fvagrantup.com) plugin which automatically installs the host's VirtualBox Guest Additions on the guest system.\n\n[![Join the chat at https:\u002F\u002Fgitter.im\u002Fdotless-de\u002Fvagrant-vbguest](https:\u002F\u002Fbadges.gitter.im\u002FJoin%20Chat.svg)](https:\u002F\u002Fgitter.im\u002Fdotless-de\u002Fvagrant-vbguest?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Code Climate](https:\u002F\u002Fcodeclimate.com\u002Fgithub\u002Fdotless-de\u002Fvagrant-vbguest.svg)](https:\u002F\u002Fcodeclimate.com\u002Fgithub\u002Fdotless-de\u002Fvagrant-vbguest)\n[![Inline docs](http:\u002F\u002Finch-ci.org\u002Fgithub\u002Fdotless-de\u002Fvagrant-vbguest.svg?branch=main)](http:\u002F\u002Finch-ci.org\u002Fgithub\u002Fdotless-de\u002Fvagrant-vbguest)\n[![Gem Version](https:\u002F\u002Fbadge.fury.io\u002Frb\u002Fvagrant-vbguest.svg)](https:\u002F\u002Fbadge.fury.io\u002Frb\u002Fvagrant-vbguest)\n\n## Installation\n\nRequires vagrant 1.3 or later\n\n### Vagrant ≥ 1.3\n\n```bash\nvagrant plugin install vagrant-vbguest\n```\n\n## Configuration \u002F Usage\n\nIf you're lucky, *vagrant-vbguest* does not require any configuration.\nHowever, here is an example of `Vagrantfile`:\n\n```ruby\nVagrant.configure(\"2\") do |config|\n  # we will try to autodetect this path. \n  # However, if we cannot or you have a special one you may pass it like:\n  # config.vbguest.iso_path = \"#{ENV['HOME']}\u002FDownloads\u002FVBoxGuestAdditions.iso\"\n  # or an URL:\n  # config.vbguest.iso_path = \"http:\u002F\u002Fcompany.server\u002FVirtualBox\u002F%{version}\u002FVBoxGuestAdditions.iso\"\n  # or relative to the Vagrantfile:\n  # config.vbguest.iso_path = \"..\u002Frelative\u002Fpath\u002Fto\u002FVBoxGuestAdditions.iso\"\n  \n  # set auto_update to false, if you do NOT want to check the correct \n  # additions version when booting this machine\n  config.vbguest.auto_update = false\n  \n  # do NOT download the iso file from a webserver\n  config.vbguest.no_remote = true\nend\n```\n\n### Config options\n\n* `iso_path` : The full path or URL to the VBoxGuestAdditions.iso file. \u003Cbr\u002F>\nThe `iso_path` may contain the optional placeholder `%{version}` replaced with detected VirtualBox version (e.g. `4.1.8`).\nRelative paths are tricky, try to use an absolute path where possible. If not, the path is relative to the current working directory, that is where the `vagrant` command is issued. You can make sure to always be relative to the `Vagrantfile` with a little bit of ruby: `File.expand_path(\"..\u002Frelative\u002Fpath\u002Fto\u002FVBoxGuestAdditions.iso\", __FILE__)`\nThe default URI for the actual iso download is: `https:\u002F\u002Fdownload.virtualbox.org\u002Fvirtualbox\u002F%{version}\u002FVBoxGuestAdditions_%{version}.iso`\u003Cbr\u002F>\nvbguest will try to autodetect the best option for your system. WTF? see below.\n* `iso_upload_path` (String, default: `\u002Ftmp`): A writeable directory where to put the VBoxGuestAdditions.iso file on the guest system.\n* `iso_mount_point` (String, default: `\u002Fmnt`): Where to mount the VBoxGuestAdditions.iso file on the guest system.\n* `auto_update` (Boolean, default: `true`) : Whether to check the correct additions version on each start (where start is *not* resuming a box).\n* `auto_reboot` (Boolean, default: `true` when running as a middleware, `false` when running as a command) : Whether to reboot the box after GuestAdditions has been installed, but not loaded.\n* `allow_downgrade` (Boolean, default: `true`) : Allow to install an older version of Guest Additions onto the guest. (Eg. you are running a host with VirtualBox 5 and the box is already on 6).\n* `no_install` (Boolean, default: `false`) : Whether to check the correct additions version only. This will warn you about version mis-matches, but will not try to install anything.\n* `no_remote` (Boolean, default: `false`) : Whether to *not* download the iso file from a remote location. This includes any `http` location!\n* `installer` (`VagrantVbguest::Installers::Base`, optional) : Reference to a (custom) installer class or a named installer.\n  Build-in named installers are:\n  * `:arch`, `:archlinux`, `:arch_linux` : Arch Linux\n  * `:centos`, `:cent_os` : CentOS\n  * `:debian` : Debian\n  * `:fedora` : Fedora\n  * `:opensuse`, `:open_suse` : openSUSE\n  * `:oracle`, `:oraclelinux`, `:oracle_linux` : Oracle Linux\n  * `:redhat`, `:red_hat` : Red Hat\n  * `:suse` : SUSE\n  * `:ubuntu` : Ubuntu\n  * `:windows` : Windows\n* `installer_arguments` (Array, default: `['--nox11']`) : List of additional arguments to pass to the installer. eg: `%w{--nox11 --force}` would execute `VBoxLinuxAdditions.run install --nox11 --force`\n* `installer_options` (Hash, default: `{}`) : Configure how a Installer internally works. Should be set on a `vm` level.\n* `installer_hooks` (Hash, default: `{}`) : Configure scripts to be run before\u002Fafter installer steps.\n* `yes` (Boolean or String, default: `true`): Wheter to pipe `yes` to the installer. If `true`, executes `yes | VBoxLinuxAdditions.run install`. With `false`, the command is executed without `yes`. You can also put in a string here for `yes` (e.g. `no` to refuse all messages)\n\n#### Installer Specific Options (`installer_options`)\n\nThose settings are specific for OS-specific installer. Especially in a multi-box environment, you should put those options on the box configuration like this:\n\n```ruby\nVagrant.configure(\"2\") do |config|\n  config.vm.define \"my_cent_os_box\" do |c|\n    c.box = \"centos\u002F8\"\n    c.vbguest.installer_options = { allow_kernel_upgrade: true }\n  end\nend\n```\n\nNote that box-specific settings overwrite earlier settings:\n\n```ruby\nVagrant.configure(\"2\") do |config|\n  config.vbguest.installer_options = { foo: 1, bar: 2 }\n\n  config.vm.define \"a\" do |box_config|\n    # not setting any `installer_options` will inherit the \"global\" ones\n    # installer_options => { foo: 1, bar: 2 }\n  end\n\n  config.vm.define \"b\" do |box_config|\n    # setting any `installer_options` will start from scratch\n    box_config.vbguest.installer_options[:zort] = 3 # => { zort: 3 }\n  end\n\n  config.vm.define \"c\" do |box_config|\n    # however, you can explicitly merge the global config\n    box_config.vbguest.installer_options = config.vbguest.installer_options.merge(zort: 3) # => { foo: 1, bar: 2, zort: 3 }\n  end\nend\n```\n\n##### Linux\n\nThis option is available on all Linux type installers.\n\n* `:running_kernel_modules` (default: `[\"vboxguest\", \"vboxsf\"]`) The list used to check for the \"running\" state. Each of these modules need to appear at the beginning of a line in `\u002Fproc\u002Fmodules`.\n\n##### CentOS\n\n* `:allow_kernel_upgrade` (default: `false`): If `true`, instead of trying to find matching the matching kernel-devel package to the installed kernel version, the kernel will be updated and the (now matching) up-to-date kernel-devel will be installed. __NOTE__: This will trigger a reboot of the box.\n* `:reboot_timeout` (default: `300`): Maximum number of seconds to wait for the box to reboot after a kernel upgrade.\n* `:enablerepo`: (default: `false`) Configure `yum --enablerepo` settings. Possible values are:\n  * Single String: `\"C*-base\"` converts to `--enablerepo=C*-base`\n  * Array of Strings: `['C*-base', 'C*-updates']` converts to `--enablerepo=C*-base --enablerepo=C*-updates`\n  * `true`: Enables `C${release_version}-base` and `C${release_version}-updates` with release_version read from `\u002Fetc\u002Fcentos-release` if the repo exists, otherwise `*`.\n  * `false`: Does not set any `--enablerepo`\n\n#### Global Configuration\n\nUsing [Vagrantfile Load Order](https:\u002F\u002Fwww.vagrantup.com\u002Fdocs\u002Fvagrantfile\u002F#load-order-and-merging) you may change default configuration values.\nEdit (create, if missing) your `~\u002F.vagrant.d\u002FVagrantfile` like this:\n\nFor Vagrant >= 1.1.0 use:\n\n```ruby\nVagrant.configure(\"2\") do |config|\n  config.vbguest.auto_update = false\nend\n```\n\nFor older versions of Vagrant:\n\n```ruby\n# vagrant's autoloading may not have kicked in\nrequire 'vagrant-vbguest' unless defined? VagrantVbguest::Config\nVagrantVbguest::Config.auto_update = false\n```\n\nSettings in a project's `Vagrantfile` will overwrite those setting. When executed as a command, command line arguments will overwrite all of the above.\n\n#### Installer Hooks (`installer_hooks`)\n\nAdditionally to the build-in `installer_options`, you can configure to execute scripts around the install steps `install`, `rebuild` and `start`.\nAccepts either a single command or and array of commands. Box-specific settings overwrite earlier settings, just like with `installer_options`.\n\nUse this make changes to the guest, for example to install specific dependencies or tweak the network setup.\n\n* `before_install`\u002F`after_install`: Runs before\u002Fafter the install step. That is before uploading the iso file into the guest and after unmounting the iso file.\n* `before_rebuild`\u002F`after_rebuild`: Runs before\u002Fafter the installer runs a command to let the GuestAdditions rebuild itself.\n* `before_start`\u002F`after_start`: Runs before\u002Fafter the installer runs a command to start the GuestAdditions service.\n\n```ruby\nVagrant.configure(\"2\") do |config|\n  config.vm.define \"my_cent_os_box\" do |c|\n    c.vbguest.installer_hooks[:before_install] = [\"yum install -y epel-release\", \"sleep 1\"]\n  end\nend\n```\n\n### Running as a middleware\n\nRunning as a middleware is the default way of using *vagrant-vbguest*.\nIt will run automatically right after the box started. This is each time the box boots, i.e. `vagrant up` or `vagrant reload`.\nIt won't run on `vagrant resume` (or `vagrant up` a suspended box) to save you some time resuming a box.\n\nYou may switch off the middleware by setting the vm's config `vbguest.auto_update` to `false`.\nThis is a per box setting. On multi vm environments you need to set that for each vm.\n\nWhen *vagrant-vbguest* is running it will provide you some logs:\n\n```log\n[...]\n[default] Booting VM...\n[default] Booting VM...\n[default] Waiting for VM to boot. This can take a few minutes.\n[default] VM booted and ready for use!\n[default] GuestAdditions versions on your host (4.2.6) and guest (4.1.0) do not match.\nstdin: is not a tty\nReading package lists...\nBuilding dependency tree...\nReading state information...\nThe following extra packages will be installed:\n  fakeroot linux-headers-2.6.32-33 patch\n\n[...]\n\n[default] Copy iso file \u002FApplications\u002FVirtualBox.app\u002FContents\u002FMacOS\u002FVBoxGuestAdditions.iso into the box \u002Ftmp\u002FVBoxGuestAdditions.iso\nstdin: is not a tty\n[default] Installing Virtualbox Guest Additions 4.2.6 - guest version is 4.1.0\nstdin: is not a tty\nVerifying archive integrity... All good.\nUncompressing VirtualBox 4.2.6 Guest Additions for Linux...........\nVirtualBox Guest Additions installer\nRemoving installed version 4.1.0 of VirtualBox Guest Additions...\ntar: Record size = 8 blocks\nRemoving existing VirtualBox DKMS kernel modules ...done.\nRemoving existing VirtualBox non-DKMS kernel modules ...done.\nBuilding the VirtualBox Guest Additions kernel modules ...done.\nDoing non-kernel setup of the Guest Additions ...done.\nYou should restart your guest to make sure the new modules are actually used\n\nInstalling the Window System drivers ...fail!\n(Could not find the X.Org or XFree86 Window System.)\nstdin: is not a tty\n[default] Restarting VM to apply changes...\n[default] Attempting graceful shutdown of VM...\n[default] Booting VM...\n[default] Waiting for VM to boot. This can take a few minutes.\n[default] VM booted and ready for use!\n[default] Configuring and enabling network interfaces...\n[default] Setting host name...\n[default] Mounting shared folders...\n[default] -- v-root: \u002Fvagrant\n[default] -- v-csc-1: \u002Ftmp\u002Fvagrant-chef-1\u002Fchef-solo-1\u002Fcookbooks\n[default] Running provisioner: Vagrant::Provisioners::ChefSolo...\n[default] Generating chef JSON and uploading...\n[default] Running chef-solo...\n[...]\n```\n\nThe plugin's part starts at `[default] Installing Virtualbox Guest Additions 4.1.14 - guest's version is 4.1.1`, telling you that:\n\n* the guest addition of the box *default* is outdated (or mismatching)\n* which guest additions iso file will be used\n* which installer script will be used\n* all the VirtualBox Guest Additions installer output.\n\nNo worries on the `Installing the Window System drivers ...fail!`. Most dev boxes you are using won't run a Window Server, thus it's absolutely safe to ignore that error.\n\nWhen everything is fine, and no update is needed, you see log like:\n\n```log\n[...]\n[default] Booting VM...\n[default] Waiting for VM to boot. This can take a few minutes.\n[default] VM booted and ready for use!\n[default] GuestAdditions 4.2.6 running --- OK.\n[...]\n```\n\n### Running as a Command\n\nWhen you switched off the middleware auto update, or you have a box up and running you may also run the installer manually.\n\n```bash\nvagrant vbguest [vm-name] [--do start|rebuild|install] [--status] [-f|--force] [-b|--auto-reboot] [-R|--no-remote] [--iso VBoxGuestAdditions.iso] [--no-cleanup]\n```\n\nFor example, when you just updated VirtualBox on your host system, you should update the guest additions right away. However, you may need to reload the box to get the guest additions working.\n\nIf you want to check the guest additions version, without installing, you may run:\n\n```bash\nvagrant vbguest --status\n```\n\nTelling you either about a version mismatch:\n\n```log\n[default] GuestAdditions versions on your host (4.2.6) and guest (4.1.0) do not match.\n```\n\nor a match:\n\n```log\n[default] GuestAdditions 4.2.6 running --- OK.\n```\n\nThe `auto-reboot` is turned off by default when running as a command. Vbguest will suggest you to reboot the box when needed. To turn it on simply pass the `--auto-reboot` parameter:\n\n```bash\nvagrant vbguest --auto-reboot\n```\n\nYou can also pass vagrant's `reload` options like:\n\n```bash\nvagrant vbguest --auto-reboot --no-provision\n```\n\nWhen running the install step manually like this: `vagrant vbguest --do install`, adding `--no-cleanup` keeps the downloaded, uploaded files and mounted iso in their place. Happy debugging ;)\n\n### ISO autodetection\n\n*vagrant-vbguest* will try to autodetect a VirtualBox GuestAdditions iso file on your system, which usually matches your installed version of VirtualBox. If it cannot find one, it downloads one from the web (virtualbox.org).  \nThose places will be checked in order:\n\n1. Checks your VirtualBox \"Virtual Media Manager\" for a DVD called \"VBoxGuestAdditions.iso\"\n2. Guess by your host operating system:\n\n* for linux : `\u002Fusr\u002Fshare\u002Fvirtualbox\u002FVBoxGuestAdditions.iso`\n* for Mac : `\u002FApplications\u002FVirtualBox.app\u002FContents\u002FMacOS\u002FVBoxGuestAdditions.iso`\n* for Windows : `%PROGRAMFILES%\u002FOracle\u002FVirtualBox\u002FVBoxGuestAdditions.iso`\n\n### Automatic reboot\n\nThe VirtualBox GuestAdditions Installer will try to load the newly built kernel module. However the installer may fail to load, just as it is happening when updating GuestAdditions from version 4.1 to 4.2.\n\nHence, vbguest will check for a loaded kernel module after the installation has finished and reboots the box, if it could not find one.\n\n## Advanced Usage\n\nvagrant-vbguest provides installers for generic linux and debian\u002Fubuntu.  \nInstallers take care of the whole installation process, that includes where to save the iso file inside the guest and where to mount it.\n\n```ruby\nclass MyInstaller \u003C VagrantVbguest::Installers::Linux\n\n  # use \u002Ftemp instead of \u002Ftmp\n  def tmp_path\n    '\u002Ftemp\u002FVBoxGuestAdditions.iso'\n  end\n\n  # use \u002Fmedia instead of \u002Fmnt\n  def mount_point\n    '\u002Fmedia'\n  end\n\n  def install(opts=nil, &block)\n    communicate.sudo('my_distos_way_of_preparing_guestadditions_installation', opts, &block)\n    # calling `super` will run the installation\n    # also it takes care of uploading the right iso file into the box\n    # and cleaning up afterward\n    super\n  end\nend\n\nVagrant::Config.run do |config|\n  config.vbguest.installer = MyInstaller\nend\n```\n\n### Extending vbguest (aka Very Advanced Usage)\n\nIf you find yourself copying the same installer in each of your vagrant project, it might be a good idea to make it a plugin itself. Like vagrant-vbguest itself, installers can be [distributed as ruby gems](http:\u002F\u002Fguides.rubygems.org\u002Fpublishing\u002F)\n\nThis project contains a [sample installer gem](https:\u002F\u002Fgithub.com\u002Fdotless-de\u002Fvagrant-vbguest\u002Ftree\u002Fmain\u002Ftestdrive\u002Fvagrant-vbguest-unikorn) which might serve as an boilerplate.\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at \u003Chttps:\u002F\u002Fgithub.com\u002Fdotless-de\u002Fvagrant-vbguest>.\n\nFor the foreseeable future, no more pull requests will be accepted which add new guest support\u002Finstallers. Please build your gem as a plugin to vbguest (see \"Very Advanced Usage\" section of this file). In fact, please open a pull request to remove support for a guest system if feel confident that your solution is better.\n\n## Known Issues\n\n* The installer script, which mounts and runs the GuestAdditions Installer Binary, works on Linux only. Most likely it will run on most Unix-like platforms.\n* The installer script requires a writeable upload directory on the guest system. This defaults to `\u002Ftmp` but can be overwritten with the `iso_upload_path` option.\n* The installer script requires a valid mount point on the guest system. This defaults to `\u002Fmnt` but can be overwritten with the `iso_mount_point` option.\n* On multi vm boxes, the iso file will be downloaded for each vm.\n* The plugin installation on Windows host systems may not work as expected (using `vagrant gem install vagrant-vbguest`). Try `C:\\vagrant\\vagrant\\embedded\\bin\\gem.bat install vagrant-vbguest` instead. (See [issue #19](https:\u002F\u002Fgithub.com\u002Fdotless-de\u002Fvagrant-vbguest\u002Fissues\u002F19#issuecomment-7040304))\n* The Windows guest additions installer will only properly install virtual drivers (enabling e.g. seamless resizing) if a user is logged in during the install. Automatic login is recommended for Windows Vagrant boxes.\n* Uploading GuestAdditions into a Windows guest might take longer than expected.\n","vagrant-vbguest 是一个 Vagrant 插件，用于自动在虚拟机上安装与主机版本匹配的 VirtualBox Guest Additions。该插件能够确保 Guest Additions 始终保持最新状态，从而提升虚拟机的性能和功能，例如更好的屏幕分辨率支持、文件共享等。使用 Ruby 语言编写，支持 Vagrant 1.3 及以上版本，用户只需通过简单的命令即可完成安装。适用于需要频繁更新 Guest Additions 或希望简化这一过程的开发和测试环境。尽管项目自2023年12月17日起已归档不再维护，但其代码库仍可作为参考继续使用。",2,"2026-06-11 03:14:59","top_language"]