Category Archives: Work

Ramblings from the land of work.


Last night I did what I imagine a lot of people do, click the OK on the Ubuntu package updater, let it do it’s thing and then restart later. I was only doing a bit of late night work and off to bed. This morning… well fire up VMWare Player, start my Ubuntu VM, and it gets as far as where the Login prompt would appear, if I squint I can see the “Ubuntu” logo VERY faintly at the bottom and the dark purplish tint to the screen. The VM is fully unresponsive :/

I have however managed to recover from this. Initially I thought it could be related to the nVidia drivers on the host being updated (Windows 10 Host), tried disabling 3D etc found and followed this helpful guide (not the fix for me) Fix Ubuntu freezing with nVidia but that did at least get me into the system by adding nomodeset to the kernel boot in GRUB.

So at least now I am able to boot, but everything is a bit sluggish, and I cannot enable full screen on the VM. I then found this very helpful page, Rolling back recent updates specifically the 1st answer by “user unknown”.

What I did was to use the info in that page to find what has been updated, and then roll things back in the order that I guessed could be the most likely candidates and attempt to boot again afterwards.

 find /var/lib/dpkg/info/ -name \*.list -mtime -1 | sed 's#.list$##;s#.*/##'

Got me a list of packages that were updated in the last 24 hours. I copied this list to a text editor on the host machine and removed the unlikely candidates (pretty confident LibreOffice is not involved in the graphics drivers or login process in any way 😉 )

With my list of suspects I gathered the install versions with policy

apt-cache policy libgles2:

Which gives an output along the lines of

Installed: 1.0.0-2ubuntu2
Candidate: 1.0.0-2ubuntu2.3
Version table:
*** 1.0.0-2ubuntu2.3 500
500 bionic-updates/main amd64 Packages
1.0.0-2ubuntu2 500
500 bionic/main amd64 Packages
100 /var/lib/dpkg/status

From this I can see that the installed version of libgles2 is 1.0.0-2ubuntu2.3 and there is an older version of 1.0.0-2ubuntu2 available (be wary, there may be security packages between major releases, this may have longer versions with the word git in the version, probably wise to try and go for these.

Now, I attempted to roll this one package back but as it has dependencies with other packages this could upset a great many things. Pay EXTRA special attention to the output from apt-get install You don’t want to be removing your whole desktop system!!! To perform a downgrade

apt-get install libgles=1.0.0-2ubuntu2

This will spit out a whole bunch of dependency errors and things that will be removed. So each needs to be inspected in turn, at one point apt was kindly offering to downgrade some packages and remove most of my system! just say no kids! find the extra missing dependency and you should just see apt DOWNGRADE the packages you have listed.

In my case it took me 4 attempts, it may only have required me downgrading the final set of packages (in my instance mutter) but I haven’t tested combinations so I suggest people check with their own systems and carefully read the outputs. I did also revert the kernel to a previous version too (didn’t work) so this may be part of the issue. By all means attempt the downgrade of mutter first, hopefully that is all it was. Anyway, the full list of downgrades I did in order were as follows:

apt-get install libgles2=1.0.0-2ubuntu2 libegl1=1.0.0-2ubuntu2 libglx0=1.0.0-2ubuntu2 libglvnd0=1.0.0-2ubuntu2 libgl1=1.0.0-2ubuntu2
#Attempt 2:
apt-get install linux-image-generic=
#Attempt 3:
apt-get install mutter=3.28.1-1ubuntu1 gnome-shell=3.28.3+git20190124-0ubuntu18.04.2 gnome-shell-common=3.28.3+git20190124-0ubuntu18.04.2
#Attempt 4:
apt-get install mutter-common=3.28.1-1ubuntu1 gir1.2-mutter-2=3.28.1-1ubuntu1 libmutter-2-0=3.28.1-1ubuntu1

Obviously, check your own install and versions.. this worked for me, and hopefully the details of how I did it will help others (or myself if it happens again 😉 ) I am not responsible if following these steps you trash your system, this is what *I* did to fix *MY* install 🙂

Python on Windows not using Visual Studio C++ compiler

My current work has me using Python2.7, which on occasion requires a package with some yummy C++ at it’s core.  Obviously this will require compiling before it can be used.  This is handled by “pip” quite nicely, but it can be a little brain dead.

As I am also working with various other languages I have Visual Studio 2015 installed, with C++.  So when I came to install a package and pip claimed there was no C++ compiler and to download a custom C++ 9.0 package from Microsoft specifically for Python I was a little confused.. (SPOILER: The Microsoft package, whilst nice of them does seem to be missing a few headers.. stdint.h for one.. *sigh*)..

Anyway, thankfully there is quite a simple fix via the power of environment variables.  If you run the command “env” within a command prompt you will get a list of that instances current environment variables.   Look through them and you should find (in the case of Visual Studio 2015) something like: (If you have a different version of VS installed you will see a different VSnnn)

VS140COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\

Now what the Python build environment is looking for (in the case of 2.7) is “VS90COMNTOOLS” environment variable…

Thankfully the Microsoft compiler takes the same options between versions, so a quick fix is simply:


which will set the environment variable Python2.7 is looking for to point at the VS install.. hey presto!

However! this will only affect the Command Prompt you are currently using.  If you wish to make this more permanent, you should set this on your systems environment variables within control panel (and remember to restart your Command Prompts!)


So, cycling

Yeah, I like cycling now.. quite a bit 🙂

One thing I have noticed a few times on my commutes to and from work is how slow cars actually are. Sure when you are cruising along at 30-40 mph you are going a lot faster than your average cycle commuter.. but.. then comes the traffic…

Tonight for example I noticed a van at a junction heading the same way as myself. It pulled away and disappeared as I merrily peddled away at my usual ~20MPH pace… but then at the next junction/lights I drew parallel to it, this happened several times along probably a 5 mile stretch of road until we finally went our separate ways.

I am a good cyclist, I stop at all red lights (even empty pedestrian crossings) and stay behind the white line at lights (I like not being fined or squished). So it is logical to say that whilst the van could easily hit speeds of 30MPH+ our overall average speed across that distance was the same, but I probably found it less frustrating as I quite enjoy my rides. Also cheaper, less pollution AND (motorists pay attention) I took up a lot less room on the road!

Now if only more people cycled to work, the roads would be a lot more pleasant and we’d probably all be a lot healthier… (and able to eat LOTS of CAKE! 😀 )

Curse you CPAN! (LIBXML2_2.6.0 not defined)

If you have seen the following error, possibly starting up Apache2 on your Linux box and you can’t for the life of you figure out why.. it MIGHT just be CPAN as the ultimate culprit. There is a good chance you may have a conflicting version of libxml2 in /usr/local/lib probably with a bunch of other libs too. As I didn’t install these myself, the only tool I can think of that will have done will be CPAN when a package has been installed via it.

Thankfully the fix is simple, remove the libs from /usr/local/lib that are conflicting, and don’t use CPAN 🙂

This may break your Perl module it installed, but hopefully will restore the usability of your system. My recommendation would be to only use packaged versions of your Perl modules to ensure system integrity, save you some headaches later in life.

Brocade fabric switch error (AD VF conflict)

Just had this error on an ISL link between two switches, my initial Googling didn’t yield too much of use so I thought I may as well blog it and the solution (I used) here, hopefully be of help to others.

The scenario: Connecting a new Brocade 5100 switch with no configuration to an existing Brocade 5000 based fabric that uses Administrative Domains (AD).  Both the new 5100 and the 5000 are running the same release of FabOS, the 5100 has nothing but the barest of bare configurations (it’s IP address and authentication credentials).  With the ports connected, a switch show on the switches yields the following for the ISL port between them:


LS Attributes:    [FID: 128, Base Switch: No, Default Switch: Yes, Address Mode 0]

Index Port Address Media Speed State     Proto
  0   0   0a0000   id    N4   Online      FC  LS E-Port  segmented,(AD VF conflict)


Address Mode:    0

Index Port Address Media Speed State     Proto
  0   0   030000   id    N4   Online      FC  LS E-Port  segmented,(AD conflict)

I have included the last line of the information block as it gives a clue, the 5100 has additional lines here and more features, FID relates to Virtual Fabrics, a feature not supported on the 5000 in this case (I suspect not supported at all on the model but am not 100% sure of this).

The big clue for me is the “(AD VF conflict)” a bit of Googling revealed that it is not permissible to use Virtual Fabrics and Administrative Domains, I believe VF is the new AD, and hence mutually exclusive.  So the fix?

Simple, disable one or the other.  Now as the established fabric in this case is utilising AD, I am not going to disable that (as much as I would love to bin it 🙂 ) so disabling the VF on the new 5100 is the order of the day.  This is thankfully simple enough to do.

Use the command

fosconfig --show

to list all configured VFs and remove all but the default ones.  If you haven’t configured any, you won’t have any.

fosconfig --disable vf

will prompt you to confirm you wish to disable VF, this will require a reboot of the switch you are on, and a full reboot it is too, it will stop passing frames.  Once the reboot has completed, the switch should come back up and happily merge with your existing fabric.

Hopefully this will be of use to someone else, and as with anything I write on here, use this information at your own risk, I am not going to accept responsibility if you wipe out your companies fabric, or set fire to your gran doing this.


I few weeks ago.. well months really we arranged a regular social team event. Namely goto the local (to work) curry emporium (The Copperpot) for a team curry. Turns out the currys (by my reconning are rather nice), the service is pleasant and the establishment is clean and well looked after.

Food is good, you get a complimentary glass of wine (I imagine its nothing amazing, but its nice) and the bill comes with after eights and brandy 🙂

After weeks of training, building my curry-foo, tonight was the night I was going for it, I was going to have a Vindaloo. Having only ever heard the hype of the Vindaloo I was a little worried but egged myself on due to Ade claiming he would match me curry for curry.

I think both myself and Ade were a little concered with what we had done as we finished off the popadums and sauce tray. Thankfully when our lamb Vindaloos arrived, they were not as hot as we had (or my youth had told me) expected. There was deffinately potency there, hopefully it was my training allowing me to tase it, but it was full of flavour and had heat on my whole tongue and a little at the back of the throat. Both myself and Ade finished it all without issue. So my 1st ever Vindaloo, sorted. I can now start to roam the rest of the rather large menu they have at the Copperpot.

(yeah I want a chufty badge, I ate a vindaloo 🙂 )

Debian and VMware server “The path /usr/src/linux/include is a kernel header file directory, but it is not part of kernel source tree.”

Yeah a long name I know, but trying to get it stuck in Google so it will be most helpful.

I hit this snag and did a lot of trawling with little luck. Previously had no issues installing VMWare server, upgrade to Lenny, swap some hardware, decide to get it up and running and POOF! no dice!

Anyway I have solved it (huzzah!) and can finally goto bed 🙂

It seems that the error message is related to the lack of .config and or Makefile in the headers. So a .config or Makefile in /usr/src/linux/.

if you have installed your headers :

apt-get install linux-headers-$(uname -r)

have build-essential installed have set CC to be gcc-4.1 yet still you get grief, heres what I found.

If you look in the headers path, you will see .config and Makefile. Yet no joy!, look closer, the Makefile is a damn pesky SymLink!!! this goes for most if not all of the buggers. What you need along with the headers is:


which should reside in the same directory as your headers:


The SymLinks point into files in there, for some reason (possibly my own stupidity) I didn’t have it, possibly deleted it in a fit of disk space recovery before starting the build.

Hopefully that will be of use for someone out there, if not, I am sure I will find it useful when I next cause myself grief 🙂