fixed update_gpfs_software() to return a dictionary, and dry_update
    properly merges dictionary updates
actual updates work