Windows Update is a broken-ass buggy piece of shit



  • So, all I'm trying to do is build a Windows server VM with something slightly more modern on it than Windows Server 2003. It's not gone well.

    I was pleased by the smoothness of the initial setup process for Server 2008R2 compared to Server 2003. Device driver installation for the paravirtualized disk and LAN devices also went off without a hitch. Then came installing all available updates, and that's been an experience like driving a Ferrari into a deep bog of liquid shit.

    So tonight I gave up trying to persuade Server 2008R2 to bring itself up to date after fighting with it for three solid days, and tried my luck with Server 2012 Datacenter instead. Which, apart from the hideous new UI, worked slightly less badly than 2008R2. For a start there were only 18 updates to apply instead of 99, and to its credit the thing did actually manage to apply 11 of them before shitting its pants. The last seven, though, were just not going to happen: alone or in any combination, they failed with error 80246002. But hey, at least the 2012 version of wuauserv and BITS didn't seem to eat 100% CPU on failure the way the 2008R2 versions were doing.

    The clue was in my Squid proxy logs, showing that the VM concerned was making seven HEAD requests for the seven failed updates every time I told it to try them again. Never GET; just HEAD. Turns out that the update setting "Check for updates but let me choose whether to install them" actually means "Check for updates but don't ever let me install any ever".

    To make the fucking thing actually work it seems it's mandatory to pick one of the settings where shit gets downloaded in the background. Apparently the simple act of downloading a fucking update file in one fucking piece but only when explicitly fucking well asked to is beneath the dignity of the Bastard Idiot Transfer Shitbag.

    Fuck I hate Windows. What an over-complicated, under-designed, broken-ass bug-ridden mountain of shit it is.

    This exercise has also been the first time I've actually tried to be productive with PowerShell, mainly because its launcher is just sitting there on the task bar for these server systems. Just looking at descriptions has always led me to write it off as yet another total failure by MS to grok any of Unix's good points; actually trying to use it as a shell has reinforced that impression. Fuck it's verbose. And who thought red text on a dark blue background was a good choice for its typical six line error messages? And how does a six line error message manage to remain so completely inscrutable? And where is the tail -f you absolutely need for watching C:\Windows\WindowsUpdate.log? No, gc -wait won't do, not for a multi-megabyte log file. PieceaShit takes 50 times longer than cmd.exe to start up, too.

    I'll stick with 2012 now it's up and going, even though I'm almost certain that the same simple download settings choice would have been all that was required to get the much prettier 2008R2 to work. Seriously, 2012 is ugly as fuck. I simply do not undersand why MS decided to throw out years of incremental UI improvement in favour of something visually akin to a colored-in Windows 3.1. Getting the mouse pointer right into the corners to make the menus appear is no fun in a VM remote window, either. At least somebody has a clue.



  • @flabdablet said:

    he clue was in my Squid proxy logs
    Maybe that (and you) is TRWTF?



  • Don't try to do Blakeyrat, only Blakeyrat can do Blakeyrat.


  • Winner of the 2016 Presidential Election

    @flabdablet said:

    This exercise has also been the first time I've actually tried to be productive with PowerShell, mainly because its launcher is just sitting there on the task bar for these server systems. Just looking at descriptions has always led me to write it off as yet another total failure by MS to grok any of Unix's good points; actually trying to use it as a shell has reinforced that impression. Fuck it's verbose. And who thought red text on a dark blue background was a good choice for its typical six line error messages? And how does a six line error message manage to remain so completely inscrutable? And where is the tail -f you absolutely need for watching C:\Windows\WindowsUpdate.log? No, gc -wait won't do, not for a multi-megabyte log file. PieceaShit takes 50 times longer than cmd.exe to start up, too.

    Cygwin+MinTTY is a fairly tolerable Bash UI in Windows.

    I hated Cygwin until I found MinTTY.



  • @flabdablet said:

    And where is the tail -f you absolutely need for watching C:\Windows\WindowsUpdate.log?
     

    I have (had?) the Berkeley DOS utils package which contained ports of common *nix utils, including tail. Seems many download links are broken, even those on PerlMonks.

    If you want a copy and can't locate them, give a yell and I'll tar up mine.

    @alegr said:

    @flabdablet said:
    he clue was in my Squid proxy logs
    Maybe that (and you) is TRWTF?

    Expand....

     




  • Powershell does have some advantages over bash, like not needing to call a text processing language for data processing. (Unless you think it's possible to do a task of nontrivial complexity in bash without sed, awk, or perl.)

    You did neglect to mention TRWTF in PowerShell is that scripts by default have to be signed. At that point it's exactly as much work just to fire up Visual Studio and write a short C# or VB program.



  • Aren't you the same guy that complains that blakeyrat and others "dont understand the OS principles" when they have similar issues with *nix?



  • @BC_Programmer said:

    Aren't you the same guy that complains that blakeyrat and others "dont understand the OS principles" when they have similar issues with *nix?

    Windows principles:

    1. For minor problems, restart. For major problems, reinstall.
    2. All native tools shall be as clumsy as possible, and none shall be designed to address more than one kind of problem.
    3. Any change to the default configuration will cause endless grief.

    Did I miss one?



  • @flabdablet said:

    Did I miss one?

    Come to think of it, I missed two.

    1. Windows Help and Support shall provide neither help nor support.
    2. No inbuilt troubleshooter shall ever find or fix any trouble*.

    *with the notable exception of the "repair" option for network connections, which worked so well that MS was obliged to remove it from systems newer than XP.



  • Add in "4. All native tools shall be named as stupidly as possible" and you've just described the vast majority of Linux distributions as well.



  • @flabdablet said:

    @BC_Programmer said:
    Aren't you the same guy that complains that blakeyrat and others "dont understand the OS principles" when they have similar issues with *nix?

    Windows principles:

    1. For minor problems, restart. For major problems, reinstall.
    2. All native tools shall be as clumsy as possible, and none shall be designed to address more than one kind of problem.
    3. Any change to the default configuration will cause endless grief.

    Did I miss one?

    I agree with Salamander. This is essentially Linux-based systems in a nutshell.

    Unless you want to tell me what magic combination of `dhclient`, `dhclient -r`, and `/etc/init.d/networking` restart will make Debian ask the DHCP server for a new IP, why shutting down a system is `shutdown -h now` when rebooting is just `reboot`, why mod_mono's settings completely contradict what's in httpd.conf, even after restarting Apache several times, and many other gripes I'm sure I'll come up against as I keep using Linux on an old PC as my NAS against my better judgement.



  • @MiffTheFox said:

    Unless you want to tell me what magic combination of dhclient, dhclient -r, and /etc/init.d/networking restart will make Debian ask the DHCP server for a new IP

    su

    ifdown eth0; ifup eth0

    Best done through an ILO/RIB/LOM/etc.-type connection, although if you do it from an SSH connection and DHCP succeeds you'll be able to SSH back into the server.  But it's up to the DHCP server's configuration to determine whether it will give you a new IP address or not.  In my environment, if you're still on the same subnet, you'll get the same address back.  Yes, the IP is released, but so long as it hasn't been assigned to another device, you'll still get the same IP.  Move to a different subnet and, of course, you'll get a brand new IP.

    @MiffTheFox said:

    why shutting down a system is shutdown -h now when rebooting is just reboot

    su

    poweroff

    reboot

    Never used mod_mono, so can't comment on that.



  • @nonpartisan said:

    su

    ifdown eth0; ifup eth0

    Best done through an ILO/RIB/LOM/etc.-type connection, although if you do it from an SSH connection and DHCP succeeds you'll be able to SSH back into the server.

    But make sure you don't hsl the DHSQ when you P098b the FDLLAM or you might have a problem where your LHJ doesn't frob UTXX in time.



  • 1) I spin up many (25+) 2008R2 Vm's per week. NEVER have had a problem with Windows Update. And yes, I do use "check for update and let me decide".

    2) I have been using 2012 for about 3 months - nice performance and even better stability. Yes, the UI is different, but I have actually come to prefer it in many (not all) cases)

    3) PowerShell is incredibly powerful. Remember you have the complete capability of .NET right in a script!!

    4) The PowerShell default of requiring signed, makes 100% sense to me. ALWAYS default to the safest behavior. If the factory default is not to your liking, then Change it ONCE (obviously on each machine) and never worry about it again



  • @nonpartisan said:

    su

    ifdown eth0; ifup eth0

    Didn't work for me. When the connection came back up it was the same old cached IP. Also Debian doesn't use su, it uses sudo.

    But that's a problem with "Linux" that doesn't port back over to Windows: the diaspora of fundamentally different OS's being treated as a single unified one.



  • @MiffTheFox said:

    @nonpartisan said:

    su

    ifdown eth0; ifup eth0

    Didn't work for me. When the connection came back up it was the same old cached IP.

     

    Perhaps it was the same new IP, because your DHCP server decided that it's good enough for this machine?

     @MiffTheFox said:

    Also Debian doesn't use su, it uses sudo.

     Well, Debian has "su" AND "sudo" ... you know, it's an Enterprisey system! Oh wait, nearly all distributions have both since a few years.

     @MiffTheFox said:

    But that's a problem with "Linux" that doesn't port back over to Windows: the diaspora of fundamentally different OS's being treated as a single unified one.
     

    Yes, that's a real advantage. But it seems you don't recognize it as such.

    I guess that Windows ME and Windows XP were much more distant cousins than Debian and, say, RHEL are. There's even a systemd for Debian, so while there is (and will always be) some differentiation between distributions, in the long run they'll consolidate the userspace again - it's too much work to keep 10 different implementations alive. (Of course, by then other things will be different - and that's a good thing, unless you happen to believe in the One Big Creationist.)

     



  • @MiffTheFox said:

    Also Debian doesn't use su, it uses sudo.
    Those are two totally different things. One actually changes your user, the other performs an action as if you were another user but as your current user, (the usual case being doing something as if you were root without actually being root.)



    Which doesn't touch on why the egregious use of sudo is, under most circumstances (unless you're using Ubuntu of course,) considered bad.



  • @blakeyrat said:

    Don't try to do Blakeyrat, only Blakeyrat can do Blakeyrat.
     

    Sturm und Drang, sir, Sturm und Drang.



  • @MiffTheFox said:

    Unless you want to tell me what magic combination of dhclient, dhclient -r, and /etc/init.d/networking restart will make Debian ask the DHCP server for a new IP

    If your Debian box has Network Manager installed (aptitude show network-manager | grep ^State will tell you) then you will probably find that its daemon will stomp all over your attempts to control your interfaces from the CLI; network-manager is a fine thing on desktops but installing it on a headless box is probably a mistake.

    Assuming no interference from network-manager, the commands I generally use to cause a new DHCP transaction are e.g. dhclient -r eth0 to release any existing lease for interface eth0 and dhclient eth0 to ask for a new one. Do those not work for you?

    /etc/init.d/networking restart (or its more polite near-equivalent, service networking restart) will only affect network interfaces for which entries exist in /etc/network/interfaces (man interfaces will tell you what goes in there) and if you have those set up properly you should also be able to release a lease with ifdown eth0 and acquire a new one with ifup eth0. In fact service networking restartjust runs ifdown on each of those interfaces, then ifup.

    Having interfaces listed in /etc/network/interfaces should also stop network-manager trying to interfere with them, though network-manager does have a reputation for being overzealous (it's a mainly GUI-based tool that does its work over the object-oriented D-Bus, which makes figuring out what it's actually up to needlessly complicated).

    You also have the option of using the low-level ifconfig tool to manipulate your interfaces directly, without running the helper scripts you get with ifup and ifdown. In particular, ifconfig eth0 down will disable interface eth0 altogether. ifconfig eth0 up will bring it back up without assigning it an IP address; you can then do dhclient eth0 if you want it to get one via DHCP, or something like ifconfig eth0 192.168.1.22 to give it one by hand.

    @MiffTheFox said:

    why shutting down a system is shutdown -h now when rebooting is just reboot

    On any Debian box that's not completely ancient, instead of shutdown -h now you can just use halt. If your box is not in runlevel 0 (starting up) or 6 (preparing for shutdown) then halt will just invoke shutdown -h now for you; only in one of those special runlevels, or if you give the -f (force) option, does halt actually stop the box immediately.

    In fact reboot and poweroff are typically just symlinks to halt, so if you already know that reboot works correctly on your box then so will the other two. See man halt for details and options.

    If you could alert me to something baked into Windows that's similarly concise and replaces shutdown -s -f -t 0 I'd appreciate it.

    Can't help you with mod_mono - never used it.



  • Ignoring that post's horrific overuse of colour, it doesn't really explain why sudo is considered bad. It rants on about how it lets users use their own password to run root commands, but not why that is a bad thing.


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.