docs: def get_distro_info(self, loglevel=logging.DEBUG):
  		"""Get information about which distro we are using, placing it in the environment object.
  
  		Fails if distro could not be determined.
  		Should be called with the container is started up, and uses as core info
  		as possible.
  
  		Note: if the install type is apt, it issues the following:
  		    - apt-get update
  		    - apt-get install -y -qq lsb-release
  
  		"""
  		shutit = self.shutit
  		install_type   = ''
  		distro         = ''
  		distro_version = ''
  		if shutit.build['distro_override'] != '':
  			key = shutit.build['distro_override']
  			distro = shutit.build['distro_override']
  			install_type = package_map.INSTALL_TYPE_MAP[key]
  			distro_version = ''
  			if install_type == 'apt' and shutit.build['delivery'] in ('docker','dockerfile'):
  				if not self.command_available('lsb_release'):
  					if not shutit.get_current_shutit_pexpect_session_environment().build['apt_update_done'] and self.whoami() == 'root':
  						shutit.get_current_shutit_pexpect_session_environment().build['apt_update_done'] = True
  						self.send(ShutItSendSpec(self,
  						                         send='DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -qq lsb-release',
  						                         loglevel=loglevel,
  						                         ignore_background=True))
  				d = self.lsb_release()
  				install_type   = d['install_type']
  				distro         = d['distro']
  				distro_version = d['distro_version']
  			elif install_type == 'yum' and shutit.build['delivery'] in ('docker', 'dockerfile'):
  				if self.file_exists('/etc/redhat-release'):
  					output = self.send_and_get_output(' command cat /etc/redhat-release',
  					                                  echo=False,
  					                                  loglevel=loglevel)
  					if re.match('^centos.*$', output.lower()) or re.match('^red hat.*$', output.lower()) or re.match('^fedora.*$', output.lower()) or True:
  						self.send_and_match_output('yum install -y -t redhat-lsb',
  						                           'Complete!',
  						                           loglevel=loglevel)
  				else:
  					if not self.command_available('lsb_release'):
  						self.send(ShutItSendSpec(self,
  						                         send='yum install -y lsb-release',
  						                         loglevel=loglevel,
  						                         ignore_background=True))
  				install_type   = d['install_type']
  				distro         = d['distro']
  				distro_version = d['distro_version']
  			elif install_type == 'apk' and shutit.build['delivery'] in ('docker','dockerfile'):
  				if not shutit.get_current_shutit_pexpect_session_environment().build['apk_update_done'] and self.whoami() == 'root':
  					self.send(ShutItSendSpec(self,
  					                         send='apk -q update',
  					                         ignore_background=True,
  					                         loglevel=logging.INFO))
  					shutit.get_current_shutit_pexpect_session_environment().build['apk_update_done'] = True
  				self.send(ShutItSendSpec(self,
  				                         send='apk -q add bash',
  				                         ignore_background=True,
  				                         loglevel=loglevel))
  				install_type   = 'apk'
  				distro         = 'alpine'
  				distro_version = '1.0'
  			elif install_type == 'pacman' and shutit.build['delivery'] in ('docker','dockerfile') and self.whoami() == 'root':
  				if not shutit.get_current_shutit_pexpect_session_environment().build['pacman_update_done']:
  					shutit.get_current_shutit_pexpect_session_environment().build['pacman_update_done'] = True
  					self.send(ShutItSendSpec(self,
  					                         send='pacman -Syy',
  					                         ignore_background=True,
  					                         loglevel=logging.INFO))
  				install_type   = d['install_type']
  				distro         = d['distro']
  				distro_version = '1.0'
  			elif install_type == 'emerge' and shutit.build['delivery'] in ('docker','dockerfile'):
  				if not shutit.get_current_shutit_pexpect_session_environment().build['emerge_update_done'] and self.whoami() == 'root':
  					# Takes bloody ages!
  					#self.send(ShutItSendSpec(self,send='emerge --sync', loglevel=loglevel,timeout=9999,ignore_background=True))
  					pass
  				install_type = 'emerge'
  				distro = 'gentoo'
  				distro_version = '1.0'
  			elif install_type == 'docker' and shutit.build['delivery'] in ('docker','dockerfile'):
  				distro = 'coreos'
  				distro_version = '1.0'
  		elif self.command_available('lsb_release'):
  			d = self.lsb_release()
  			install_type   = d['install_type']
  			distro         = d['distro']
  			distro_version = d['distro_version']
  		else:
  			issue_output = self.send_and_get_output(' command cat /etc/issue',
  			                                        echo=False,
  			                                        ignore_background=True,
  			                                        loglevel=loglevel).lower()
  			if not re.match('.*No such file.*',issue_output):
  				for key in package_map.INSTALL_TYPE_MAP:
  					if issue_output.find(key) != -1:
  						distro       = key
  						install_type = package_map.INSTALL_TYPE_MAP[key]
  						break
  			elif self.file_exists('/cygdrive'):
  				distro       = 'cygwin'
  				install_type = 'apt-cyg'
  			if install_type == '' or distro == '':
  				if self.file_exists('/etc/os-release'):
  					os_name = self.send_and_get_output(' command cat /etc/os-release | grep ^NAME',
  					                                   echo=False,
  					                                   ignore_background=True,
  					                                   loglevel=loglevel).lower()
  					if os_name.find('centos') != -1:
  						distro       = 'centos'
  						install_type = 'yum'
  					elif os_name.find('red hat') != -1:
  						distro       = 'red hat'
  						install_type = 'yum'
  					elif os_name.find('fedora') != -1:
  						# TODO: distinguish with dnf - fedora 23+? search for dnf in here
  						distro       = 'fedora'
  						install_type = 'yum'
  					elif os_name.find('gentoo') != -1:
  						distro       = 'gentoo'
  						install_type = 'emerge'
  					elif os_name.find('coreos') != -1:
  						distro       = 'coreos'
  						install_type = 'docker'
  				else:
  					uname_output = self.send_and_get_output(" command uname -a | awk '{print $1}'",
  					                                        echo=False,
  					                                        ignore_background=True,
  					                                        loglevel=loglevel)
  					if uname_output == 'Darwin':
  						distro = 'osx'
  						install_type = 'brew'
  						if not self.command_available('brew'):
  							shutit.fail('ShutiIt requires brew be installed. See http://brew.sh for details on installation.') # pragma: no cover
  						if not self.file_exists('/tmp/shutit_brew_list'):
  							if self.whoami() != 'root':
  								self.send(ShutItSendSpec(self,
  								                         send=' brew list > .shutit_brew_list',
  								                         echo=False,
  								                         ignore_background=True,
  								                         loglevel=loglevel))
  							else:
  								pass
  						for package in ('coreutils','findutils','gnu-tar','gnu-sed','gawk','gnutls','gnu-indent','gnu-getopt'):
  							if self.send_and_get_output(' command cat .shutit_brew_list | grep -w ' + package,
  							                            echo=False,
  							                            loglevel=loglevel) == '':
  								self.send(ShutItSendSpec(self,
  								                         send='brew install ' + package,
  								                         ignore_background=True,
  								                         loglevel=loglevel))
  						self.send(ShutItSendSpec(self,
  						                         send='rm -f .shutit_brew_list',
  						                         echo=False,
  						                         ignore_background=True,
  						                         loglevel=loglevel))
  					if uname_output[:6] == 'CYGWIN':
  						distro       = 'cygwin'
  						install_type = 'apt-cyg'
  				if install_type == '' or distro == '':
  					shutit.fail('Could not determine Linux distro information. ' + 'Please inform ShutIt maintainers at https://github.com/ianmiell/shutit', shutit_pexpect_child=self.pexpect_child) # pragma: no cover
  			# The call to self.package_installed with lsb-release above
  			# may fail if it doesn't know the install type, so
  			# if we've determined that now
  			if install_type == 'apt' and shutit.build['delivery'] in ('docker','dockerfile'):
  				if not self.command_available('lsb_release'):
  					if not shutit.get_current_shutit_pexpect_session_environment().build['apt_update_done'] and self.whoami() == 'root':
  						shutit.get_current_shutit_pexpect_session_environment().build['apt_update_done'] = True
  						self.send(ShutItSendSpec(self,
  						                         send='DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y -qq lsb-release',
  						                         loglevel=loglevel,
  						                         ignore_background=True))
  					self.send(ShutItSendSpec(self,
  					                         send='DEBIAN_FRONTEND=noninteractive apt-get install -y -qq lsb-release',
  					                         loglevel=loglevel,
  					                         ignore_background=True))
  				d = self.lsb_release()
  				install_type   = d['install_type']
  				distro         = d['distro']
  				distro_version = d['distro_version']
  			elif install_type == 'yum' and shutit.build['delivery'] in ('docker','dockerfile'):
  				if self.file_exists('/etc/redhat-release'):
  					output = self.send_and_get_output(' command cat /etc/redhat-release',
  					                                  echo=False,
  					                                  loglevel=loglevel)
  					if re.match('^centos.*$', output.lower()) or re.match('^red hat.*$', output.lower()) or re.match('^fedora.*$', output.lower()) or True:
  						self.send_and_match_output('yum install -y -t redhat-lsb',
  						                           'Complete!',
  						                           loglevel=loglevel)
  				else:
  					if not self.command_available('lsb_release'):
  						self.send(ShutItSendSpec(self,
  						                         send='yum install -y lsb-release',
  						                         ignore_background=True,
  						                         loglevel=loglevel))
  				d = self.lsb_release()
  				install_type   = d['install_type']
  				distro         = d['distro']
  				distro_version = d['distro_version']
  			elif install_type == 'apk' and shutit.build['delivery'] in ('docker','dockerfile'):
  				if not shutit.get_current_shutit_pexpect_session_environment().build['apk_update_done'] and self.whoami() == 'root':
  					self.send(ShutItSendSpec(self,
  					                         send='apk -q update',
  					                         ignore_background=True,
  					                         loglevel=logging.INFO))
  					shutit.get_current_shutit_pexpect_session_environment().build['apk_update_done'] = True
  				self.send(ShutItSendSpec(self,
  				                         send='apk -q add bash',
  				                         ignore_background=True,
  				                         loglevel=loglevel))
  				install_type   = 'apk'
  				distro         = 'alpine'
  				distro_version = '1.0'
  			elif install_type == 'emerge' and shutit.build['delivery'] in ('docker','dockerfile'):
  				if not shutit.get_current_shutit_pexpect_session_environment().build['emerge_update_done'] and self.whoami() == 'root':
  					# Takes bloody ages!
  					#self.send(ShutItSendSpec(self,send='emerge --sync', loglevel=logging.INFO,ignore_background=True))
  					pass
  				install_type = 'emerge'
  				distro = 'gentoo'
  				distro_version = '1.0'
  		# We should have the distro info now, let's assign to target config
  		# if this is not a one-off.
  		self.current_environment.install_type   = install_type
  		self.current_environment.distro         = distro
  		self.current_environment.distro_version = distro_version
  		return True