Netflix Streaming Box – talk me out of it, please

Gizmodo’s got a good write up of it and I am seriously wanting to buy one of these $100 toys. Satellite TV used to cost me $120 a month and when I went through a recent unemployment stint I canceled it. But I love watching older films and older TV shows. This would pipe non-HD content straight to my TV via wifi or Cat5. And it’s only a $100? And there’s no hard drive or fan to make noise to wear out?

I am not kidding you here. I am having a really hard time convincing myself to not buy one of these. Anyone have a good counter argument? I don’t do HD so that won’t help. Bueler? Bueler?

Mark Shuttleworth on Testing Driven Development(TDD)

Mark Shuttleworth, father of the de facto linux desktop OS — Ubuntu, recently weighed in on a few different issues. He wanted to address some recent moves towards getting the Gnome and KDE crowd to talk nice to one another. The continual effort to make the linux desktop something that is more stable and recognizable to normal non geek users is something I have to applaud unendingly. If it wasn’t for all his work in that arena I would probably be considering what version of nastiness that is called Vista I would run next year.

He also talked a little bit about Source Control Management(SCM). SCM is just a fancy name for the overall business practice of making sure developer’s develop and collaborate in a way that makes sense. Oh, we screwed up with this idea 3 weeks ago? Well, let’s pull that code out of there. That sounds simple enough, but as it turns out the other thousand employees in your company have continued to write new code from when you started this change 3 weeks ago. So if you just back your change out, it might not work with the code they wrote over the last 3 weeks.

One of the tools used to handle these sort of problems is called a Version Control System(VCS) and there are hundreds if not thousands of these things. You’ll recognize them by names like CVS, Subversion, etc. Apparently Mark is hot to trot for one that’s called Bazaar.

Another tool, and the point of this post, is that you need a testing tool/suite and a methodology. Now I wish Mark had talked about the name of his testing suite, but the more important thing is how he changed the way the code is written. By implementing or creating Testing Driven Development he basically put a stake in the ground and said, “You will not check code back into the repository unless it passes tests.”

That doesn’t sound that revolutionary, but it’s not how code is traditionally written. Most developers write and write and write, checking in code all the while and then they test. Well, frankly that may be a bit of a waste of time. If it turns out that your basic idea sucked, then wouldn’t it be better to figure that out at the starting point? And it also disciplines lazy programmers to correctly code their exit codes and other basic frameworks of good code right at the beginning, rather than trying to put all that “boring stuff” in at the last few days before the release.

His methodology probably feels like he’s slowing down the development process, but in the long run it’s probably as efficient and it also probably makes the prediction of release schedules more accurate.

Finally, how does this apply to me and possibly you? Well, I always swear I’ll set up a testing suite for what I do, but I don’t really do a dev/test/production cycle for WordPress. I think that the next time I actually write a full application I will probably find a VCS and Test Suite combo that will allow me to implement TDD. I’m just as lazy as the next programmer and so having a computer add a little discipline wouldn’t be a bad thing.

For WordPress, I think I’m going to set up some basic monitoring. I already monitor uptime, but page load times I’m not and I’m unhappy with how the ads are bogging my load time down. If I don’t measure that, then I’m sure I’ll never start working on it. Also, the ability to comment on posts is something that I haven’t been monitoring and it’s something that has already broken during one upgrade. Drive space is rarely an issue because Dreamhost sells me so much but it wouldn’t hurt to monitor.

Well, that’s my plan. Do any of you plan on using any of these sorts of development tools?

Marc Andreessen follows Linus Torvalds example

A few months ago Linus Torvalds was interviewed by Lifehacker Australia. Unfortunately the link appears to be messed up at the moment or else I would link to it. Lifehacker really digs into the tools and methodologies people use in order to get things done. An interesting tidbit popped up in their interview with Linus. Apparently after a few years in the limelight, he tired of speaking at public engagements. I don’t know if he was tired of boring questions, the adulation of geeks or was just frustrated that he wasn’t able to get much done when he was talking all the time. But he apparently started cherry picking the events he wanted to speak at.

And recently Marc Andreessen, co-founder of Netscape and investor of Digg and Twitter, followed suit declaring that he would stop speaking publicly and blog more. John C Abell, of Wired, writes in his blog that this has to do with Marc being unhappy with the quality of journalism today. Well, if that was the reason for Marc to stop doing interviews I’d have a hard time arguing with him. Media Consolidation has left us with a lot more people re-broadcasting and re-interpreting other people’s stories. Heck, even this post is a bit of a reinterpretation. But I suspect the reality may be that Marc, like Linus, would rather be actually getting some things done than talking about getting things done.

Need to publish data but not ALL of the data

Frequently you’re asked to prepare documentation for an internal report that may discuss embarrassing or proprietary issues. For instance, you were instrumental in locating a problem with lost revenue due to a programming error and now it’s time to explain to the Vice Presidents how this ever happened and how you’re going to prevent it from happening again.

Every once in a while you may do such a good job of this presentation that you’ll be asked to present it at a conference. Or, depending on the Machiavellian nature of internal politics, you may have a peer request that you send them your powerpoint so that they can present it to other executives and act like the work to produce this document is actually their own.

In those cases, it’s useful to know how to sanitize a document of it’s tantalizing private data. Now if you don’t know much about Microsoft Office you may think you can just delete some of that data and it will be gone. But alas, poor Yoric, Microsoft is going to try to save your butt and may retain your changes just in case you decide later on that you want to undo those changes. Well you know who’s great at keeping their secrets? The NSA.

Yup, that’s right, the NSA put out a guide on how to avoid all this. And those persistent scientists over at FAS have a copy of it they obtained, probably via the Freedom of Information Protection Act. So, without further ado, here is Redacting with Confidence: How to Safely Publish Sanitized Reports Converted From Word to PDF

It’s Lives, My WebMonkey LIVES!!!!!

Long ago, when dial-ups were the norm unless you were on campus and ISPs set you up by giving you a CD that would load Netscape onto your computer with their particular settings, there was a website.  It helped me publish my first website which, embarrassingly enough, was a bunch of high school poetry.  It had these tutorials that would tell you how to load and set up some technology and then you could play around with that technology.  It was called Web Monkey and I knew about it because I was a serious Wired Magazine devotee.

A few years back, Wired decided that it was time for the Monkey to retire.  But something a little strange happened.  They retired it, but I could still get to their content, like their HTML Cheat Sheet.  So, I kept hoping and hoping that it would come back to life some day.

Well apparently the time has come.  In Wired Digital’s infinite wisdom they bought the rights back to the website and are going to bring it back as a Wiki.  I love Wiki’s and I love me some Web Monkey, so this is right up my alley.  Who knows, maybe I’ll actually start developing again instead of sitting on the sidelines and commenting.

Punch the Monkey to give it a shot:

webmonkey

Text Messaging Roundup

Well, I haven’t texted any of my friends in my sleep yet. But I have woken up and silenced alarms on my phone when I wasn’t on-call. I have to change my ringers when I’m on-call just to make sure those sorts of things don’t happen to me.

But I was surprised today to find out that some people are now texting in their sleep. I remember way back in the day when I’d be in chat rooms and almost falling asleep on the keyboard. Or one time when I helped a friend move their business overnight I stopped being able to speak very intelligbly, so I told her I had to nap and got back at it in a few hours.

And I shouldn’t be surprised that Marketing Campaign Managers are now coming with the capability to send voicemails and text messages. Soundbite just announced their intent to launch their Intelligent Communications Platform in 3Q 2008 and it is supposed to help Fortune 1000 companies market to their customers via email, voicemail and text messages. I am a little interested in how the product is planning on plugging into the SMS channels of various Voice Networks. The only reliable way would be to come in as partner through a firewall and plug directly into the systems. They could attempt to work it via SMTP but the system would rapidly be shut down by anti-spam systems.

And finally, who could be surprised that eventually someone sued Mobile Carriers for not providing an option to opt out of text messaging and then charging customers if they still get texts even if they’re unwanted.

Web 2.0 technologies leverage voter enthusiasm

You’ll have to excuse me because I wasn’t a Dean fan even before he made the blood curdling scream that halted his forward progress.  I ask for your forgiveness because I can not report on how he was using technology to get people involved in his campaign.

What I can say is that Obama has, hands down, the most intelligent use of Web 2.0 technologies that I’ve ever seen.  I first ran into this when I went out to his web site just to see what sort of page he was sporting.  I hadn’t really decided on who I wanted to get behind yet, and since I want this blog to say non-political I’ll pretty much leave that fork of the conversation unfinished.  I had heard on NPR that Obama were releasing their supporter’s information online and that this was an unheard of act.  Historically politicians guarded their supporter information very closely.  I think it was so that people wouldn’t harass or attempt to confuse them?

Anyhow, imagine my surprise when I found that Obama had an easy way for supporters to log into his website and then reach out to undecided voters in other states.  You don’t have to get in a car, go to a call center, sweat with other people, use crappy phones and then try to stay enthusiastic while talking to people about your favorite candidate.  Instead you could call from a coffee shop, from your home, inbetween classes.  And Obama had made it competitive.  You could try to be the biggest caller of the day, or of the month.  And you could step into forums and trade ideas with other people online.

Also, Obama is the only candidate with a Short Code.  A short code is a 4-9 digit code that people can text message.  If you’ve texted in who you want to win on American Idol, you know what a short code is.  It helps make it easier to get people involved in a campaign, because it’s easier to text to o-b-a-m-a than it is to text to 9137079131(completely made up number.)  And it’s easier to tell other people to text obama than it is to tell them to go google it.

The funny thing about these technologies is that they’re not very difficult to set up.  Yet millions are spent by all the candidates and each dollar usually only gets them a dollar’s worth of support.  But when you give people technology like this, they start using their own talk time on their phone or skype account to call people.  Or they manage to stay upbeat about the campaign when they talk to others.  It’s just smart economic spending.

Command Line Editor Withdrawal

It’s a serious problem that’s been troubling admin’s for over a decade now.  You sit, sweating in your cubicle waiting for the demand that you know is coming.  Suddenly you will need to replace 17 patterns in a 20k line document or else your boss will be up your behind.  Sure, you could SSH to some development box that someone barely knows exists.  Or you may be lucky/demanding and have a jump box just waiting for your every command.

But what about that screaming fast, multi-core laptop that your company issued to you?  Sure, it’s running winbloze, but that doesn’t make it useless.  You know what you need?  Some freeware loving, buddy.  And here it comes in the guise of Gnu VIM client for Win32.  You know it’s good for you, come on, it’s Gnu!vim

Deleting channel from Redhat Satellite Server

Preface

Redhat licenses a product called a Satellite Server. It’s useful for maintaining your patch levels on your systems and keeping a uniform image of your systems by keeping your kickstart images in one place. It’s quite similar to HP’s Ignite product line and Sun’s Jumpstart product line.

Main

There are times when you no longer need to have a channel in your Redhat Satellite Server. Perhaps you added one by mistake or perhaps you have now upgraded all of your servers off of an old version of Red Hat. You can now remove that channel in order to save some space, decrease backup times, increase the simplicity of your configuration and just generally justify yourself as a good admin to your boss and peers.

The following procedure is not supported by RedHat in so much as they won’t help you if you call them up and ask for help on the issue. But it relies upon a script that is actually included with the Satellite Server when you install it. So while it’s a hack, I consider it’s risk to be fairly low. YMMV, so be sure to perform good backups before attempting this.

Check to make sure that the unwanted channel is still there.

This may sound a little silly, but this command will give you two things. A) a way to check your work after you’ve removed the channel and B) ensures that another admin on your team hasn’t actually already removed the channel before you got around to it.
[root@satellite-1 rhn]# satellite-sync –list-channels
16:51:13 Red Hat Network Satellite – live synchronization
16:51:13    url: https://satellite.rhn.redhat.com
16:51:13    debug/output level: 1
16:51:14    db:  rhnsat/<password>@rhnsat
16:51:14
16:51:14 Retrieving / parsing channel-families data
16:51:14 channel-families data complete
Pushing scout configs to all monitoring scouts
16:51:22
16:51:22 Retrieving / parsing channel data
16:51:38    p = previously imported/synced channel
16:51:38    . = channel not yet imported/synced
16:51:38    base-channels:
16:51:38       p redhat-advanced-server-i386              3707
16:51:38       . redhat-ent-linux-i386-es-2.1             3198
16:51:38       . redhat-linux-alpha-6.2                   1184
16:51:38       . redhat-linux-alpha-7.0                   1412
16:51:38       . redhat-linux-alpha-7.1                   1487
16:51:38       . redhat-linux-as-2.1-IPF                  3157
16:51:38       . redhat-linux-ee-i386-6.2                   13
16:51:38       . redhat-linux-i386-6.2                    1357
16:51:38       . redhat-linux-i386-7.0                    1615
16:51:38       . redhat-linux-i386-7.1                    2046
16:51:38       . redhat-linux-i386-7.2                    2338
16:51:38       . redhat-linux-i386-7.3                    2481
16:51:38       . redhat-linux-i386-8.0                    2316
16:51:38       . redhat-linux-i386-9                      1864
16:51:38       . redhat-linux-iSeries-7.1                 1135
16:51:38       . redhat-linux-ia64-7.1                    1392
16:51:38       . redhat-linux-ia64-7.2                    1886
16:51:38       . redhat-linux-pSeries-7.1                 1135
16:51:38       . redhat-linux-s390-7.2                    1447
16:51:38       . redhat-linux-s390x-7.1                    977
16:51:38       . redhat-linux-severn-i386-9.0.93          1455
16:51:38       . redhat-linux-sparc-6.2                   1201
16:51:38       . rhel-i386-as-3                           4910
16:51:39       . rhel-i386-as-4                           5235
16:51:39       . rhel-i386-es-3                           4929
16:51:39       . rhel-i386-es-4                           5235
16:51:39       p rhel-i386-server-5                       3299
16:51:39       . rhel-ia64-as-3                           5147
16:51:39       . rhel-ia64-as-4                           5553
16:51:39       . rhel-ia64-es-3                           4683
16:51:39       . rhel-ia64-es-4                           5552
16:51:39       . rhel-ia64-server-5                       3389
16:51:39       . rhel-ppc-as-3                            5251
16:51:39       . rhel-ppc-as-4                            5884
16:51:39       . rhel-ppc-server-5                        4265
16:51:39       . rhel-x86_64-as-3                         5403
16:51:39       . rhel-x86_64-as-4                         5993
16:51:39       . rhel-x86_64-es-3                         4907
16:51:39       . rhel-x86_64-es-4                         5993
16:51:39       p rhel-x86_64-server-5                     4324
16:51:39       . severn-beta2-i386                        1466
16:51:39    redhat-advanced-server-i386:
16:51:39       . rhn-tools-rhel-2.1-as-i386               1524
16:51:39    redhat-ent-linux-i386-es-2.1:
16:51:39       . rhn-tools-rhel-2.1-es-i386               1524
16:51:39    redhat-linux-alpha-6.2:
16:51:39       . redhat-powertools-alpha-6.2               532
16:51:39    redhat-linux-alpha-7.0:
16:51:39       . redhat-powertools-alpha-7.0               461
16:51:39    redhat-linux-alpha-7.1:
16:51:39       . redhat-powertools-alpha-7.1               459
16:51:39    redhat-linux-as-2.1-IPF:
16:51:39       . rhn-tools-rhel-2.1-as-ia64               1192
16:51:39    redhat-linux-i386-6.2:
16:51:40       . redhat-powertools-i386-6.2                584
16:51:40    redhat-linux-i386-7.0:
16:51:40       . redhat-powertools-i386-7.0                520
16:51:40    redhat-linux-i386-7.1:
16:51:40       . redhat-powertools-i386-7.1                541
16:51:40    redhat-linux-i386-7.2:
16:51:40       . k12ltsp-i386-7.2                           63
16:51:40    redhat-linux-i386-7.3:
16:51:40       . redhat-gcc3.1-i386-7.3                     12
16:51:40       . education-k12ltsp-i386-7.3                 82
16:51:40       . education-general-i386-7.3                  7
16:51:40    redhat-linux-i386-8.0:
16:51:40       . education-k12ltsp-i386-8.0                122
16:51:40    redhat-linux-i386-9:
16:51:40       . rhn-tools-redhat-linux-i386-9            1514
16:51:40       . education-k12ltsp-i386-9                  123
16:51:40    redhat-linux-severn-i386-9.0.93:
16:51:40       . redhat-linux-severn-i386-9.0.93-updates  2388
16:51:40    redhat-linux-sparc-6.2:
16:51:40       . redhat-powertools-sparc-6.2               480
16:51:40    rhel-i386-as-3:
16:51:40       . rhel-i386-as-3-fastrack                    56
16:51:40       . rhel-3-as-i386-rhds-2                      27
16:51:40       . rhel-i386-as-3-cluster                     33
16:51:40       . rhel-i386-as-3-hwcert                       9
16:51:40       . rhn-tools-rhel-3-as-i386                 1545
16:51:40       . rhel-i386-as-3-devsuite                     6
16:51:40       . rhel-i386-as-3-extras                     150
16:51:40    rhel-i386-as-4:
16:51:40       . rhel-i386-as-4-fastrack                   208
16:51:40       . rhel-4-as-i386-rhds-2.1                    15
16:51:40       . rhel-i386-as-4-hwcert                      18
16:51:40       . rhel-i386-as-4-sdk                          1
16:51:40       . rhel-4-as-i386-rhds-3                     145
16:51:40       . rhel-i386-as-4-extras                     218
16:51:40       . rhel-i386-as-4-cluster                    345
16:51:40       . rhn-tools-rhel-4-as-i386                 1274
16:51:40    rhel-i386-es-3:
16:51:40       . rhel-i386-es-3-extras                     150
16:51:40       . rhel-3-es-i386-rhds-2                      27
16:51:40       . rhn-tools-rhel-3-es-i386                 1545
16:51:40       . rhel-i386-es-3-fastrack                    56
16:51:40       . rhel-i386-es-3-devsuite                     6
16:51:40       . rhel-i386-es-3-cluster                     33
16:51:40    rhel-i386-es-4:
16:51:40       . rhel-4-es-i386-rhds-3                     145
16:51:40       . rhel-i386-es-4-sdk                          1
16:51:40       . rhn-tools-rhel-4-es-i386                 1274
16:51:40       . rhel-i386-es-4-extras                     218
16:51:40       . rhel-i386-es-4-fastrack                   208
16:51:40       . rhel-4-es-i386-rhds-2.1                    15
16:51:40       . rhel-i386-es-4-cluster                    345
16:51:40    rhel-i386-server-5:
16:51:40       . rhel-i386-server-supplementary-5          183
16:51:40       . rhel-i386-server-cluster-storage-5        116
16:51:40       . rhel-i386-server-productivity-5           460
16:51:40       . rhel-i386-server-vt-5                      71
16:51:40       . rhn-tools-rhel-i386-server-5              371
16:51:40       . rhel-i386-server-hts-5                      7
16:51:40       . rhel-i386-server-cluster-5                 73
16:51:40       . rhel-i386-server-fastrack-5               170
16:51:40    rhel-ia64-as-3:
16:51:40       . rhel-ia64-as-3-extras                      92
16:51:40       . rhel-ia64-as-3-cluster                     28
16:51:40       . rhel-ia64-as-3-devsuite                     3
16:51:40       . rhel-3-as-ia64-rhds-2                      27
16:51:40       . rhel-ia64-as-3-hwcert                       9
16:51:40       . rhn-tools-rhel-3-as-ia64                 1213
16:51:40       . rhel-ia64-as-3-fastrack                    61
16:51:40    rhel-ia64-as-4:
16:51:40       . rhel-4-as-ia64-rhds-3                     145
16:51:40       . rhel-4-as-ia64-rhds-2.1                    15
16:51:40       . rhn-tools-rhel-4-as-ia64                 1214
16:51:40       . rhel-ia64-as-4-hwcert                      18
16:51:40       . rhel-ia64-as-4-extras                      90
16:51:40       . rhel-ia64-as-4-fastrack                   228
16:51:40       . rhel-ia64-as-4-cluster                    229
16:51:40    rhel-ia64-es-3:
16:51:40       . rhel-ia64-es-3-extras                      92
16:51:40       . rhel-ia64-es-3-devsuite                     4
16:51:40       . rhel-3-es-ia64-rhds-2                      27
16:51:40       . rhel-ia64-es-3-cluster                     28
16:51:40       . rhn-tools-rhel-3-es-ia64                 1213
16:51:40       . rhel-ia64-es-3-fastrack                    61
16:51:40    rhel-ia64-es-4:
16:51:40       . rhel-4-es-ia64-rhds-2.1                    15
16:51:40       . rhel-ia64-es-4-extras                      90
16:51:40       . rhel-ia64-es-4-cluster                    229
16:51:40       . rhel-ia64-es-4-fastrack                   228
16:51:40       . rhn-tools-rhel-4-es-ia64                 1214
16:51:40       . rhel-4-es-ia64-rhds-3                     145
16:51:40    rhel-ia64-server-5:
16:51:40       . rhel-ia64-server-cluster-storage-5         95
16:51:40       . rhel-ia64-server-cluster-5                 73
16:51:40       . rhel-ia64-server-vt-5                      70
16:51:40       . rhel-ia64-server-supplementary-5           57
16:51:40       . rhel-ia64-server-fastrack-5               170
16:51:40       . rhn-tools-rhel-ia64-server-5              371
16:51:40       . rhel-ia64-server-hts-5                      7
16:51:40    rhel-ppc-as-3:
16:51:40       . rhel-ppc-as-3-fastrack                     61
16:51:40       . rhel-ppc-as-3-hwcert                       16
16:51:40       . rhel-3-as-ppc-rhds-2                       25
16:51:40       . rhel-ppc-as-3-extras                       75
16:51:40    rhel-ppc-as-4:
16:51:40       . rhel-ppc-as-4-cluster                      82
16:51:40       . rhn-tools-rhel-4-as-ppc                     0
16:51:40       . rhel-ppc-as-4-extras                       95
16:51:40       . rhel-ppc-as-4-hwcert                       26
16:51:40       . rhel-4-as-ppc-rhds-2.1                     15
16:51:40       . rhel-ppc-as-4-fastrack                    228
16:51:40       . rhel-4-as-ppc-rhds-3                      151
16:51:40    rhel-ppc-server-5:
16:51:40       . rhel-ppc-server-hts-5                       7
16:51:40       . rhel-ppc-server-supplementary-5            93
16:51:40       . rhel-ppc-server-fastrack-5                197
16:51:40       . rhn-tools-rhel-ppc-server-5                13
16:51:40    rhel-x86_64-as-3:
16:51:40       . rhel-x86_64-as-3-fastrack                  60
16:51:40       . rhel-x86_64-as-3-hwcert                     9
16:51:40       . rhn-tools-rhel-3-as-x86_64               1424
16:51:40       . rhel-x86_64-as-3-devsuite                   2
16:51:40       . rhel-x86_64-as-3-cluster                   28
16:51:40       . rhel-x86_64-as-3-extras                    85
16:51:40    rhel-x86_64-as-4:
16:51:40       . rhel-x86_64-as-4-fastrack                 231
16:51:40       . rhel-x86_64-as-4-extras                   160
16:51:40       . rhel-x86_64-as-4-sdk                        1
16:51:40       . rhn-tools-rhel-4-as-x86_64               1274
16:51:40       . rhel-x86_64-as-4-cluster                  329
16:51:40       . rhel-4-as-x86_64-rhds-3                   145
16:51:40       . rhel-4-as-x86_64-rhds-2.1                  15
16:51:40       . rhel-x86_64-as-4-hwcert                    18
16:51:40    rhel-x86_64-es-3:
16:51:40       . rhel-x86_64-es-3-fastrack                  60
16:51:40       . rhel-x86_64-es-3-cluster                   28
16:51:40       . rhn-tools-rhel-3-es-x86_64               1424
16:51:40       . rhel-x86_64-es-3-extras                    85
16:51:40       . rhel-x86_64-es-3-devsuite                   4
16:51:40    rhel-x86_64-es-4:
16:51:40       . rhel-4-es-x86_64-rhds-2.1                  15
16:51:40       . rhel-x86_64-es-4-extras                   160
16:51:40       . rhel-x86_64-es-4-fastrack                 231
16:51:40       . rhel-x86_64-es-4-cluster                  329
16:51:40       . rhel-4-es-x86_64-rhds-3                   145
16:51:40       . rhn-tools-rhel-4-es-x86_64               1274
16:51:40       . rhel-x86_64-es-4-sdk                        1
16:51:40    rhel-x86_64-server-5:
16:51:40       . rhel-x86_64-server-fastrack-5             201
16:51:40       . rhel-x86_64-server-hts-5                    7
16:51:40       . rhel-x86_64-server-vt-5                    81
16:51:40       . rhel-x86_64-server-cluster-5               73
16:51:40       . rhn-tools-rhel-x86_64-server-5            371
16:51:40       . rhel-x86_64-server-productivity-5         504
16:51:40       . rhel-x86_64-server-supplementary-5        232
16:51:40       . rhel-x86_64-server-cluster-storage-5       95
16:51:40    severn-beta2-i386:
16:51:40       . severn-beta2-i386-updates                1878
16:51:40
Import complete:
Begin time: Mon Apr 14 16:51:13 2008
End time:   Mon Apr 14 16:51:40 2008
Elapsed:    0 hours, 0 minutes, 26 seconds

Note the three channels that I’m already syncing are listed with p’s next to them instead of .’s next to them.  The channel in particular that we’re looking to drop is redhat-advanced-server-i386.

Now you should only remove a channel if it is not being used anymore.  Red Hat defines the unused state, in this knowledgebase article, as:
* There are no systems registered to the channel that is going to be deleted from the Satellite.
* There are no kickstart profiles using the channel.
* There are no activation keys defined that refer to the channel.
* There are no custom channels or packages depending on the channel.

My channel was added by mistake, but if you’re retiring an old channel, you should perform those checks now.

Database Backup

Now it’s time to get a cold backup of your Oracle database.  That’s RedHat’s recommendation.  Since I’m using the Oracle DB that is incorporated with Satellite Server, I didn’t mind performing this step.  If you’re riding on a full Oracle instance that rides on another machine, then getting a cold snapshot will be something you’ll have to work out with your DBA.  Since a DB has to be completely down and quiesced, it’s pretty rare to be able to convince a DBA that you need one unless it’s a huge change to your infrastructure.  You should be able to get away with a warm backup for recovery, but that is not what Red Hat recommends.

Before you get the cold snapshot, you need to stop the Satellite Server.

[root@satellite-1 redhat]# service rhn-satellite stop
Shutting down rhn-satellite…
2008-04-14 16:33:25 Monitoring: Debug level = 0
2008-04-14 16:33:25 Monitoring: Switches: stop
2008-04-14 16:33:25 Monitoring: STOPPING
2008-04-14 16:33:25 TSDBLocalQueue: STOPPING
2008-04-14 16:33:27 TSDBLocalQueue: STOPPED OK
2008-04-14 16:33:27 TSDBLocalQueue: ============ STATUS ===============
2008-04-14 16:33:27 TSDBLocalQueue: Last action: stop
2008-04-14 16:33:27 TSDBLocalQueue: ** Can be installed for SysV startup **
2008-04-14 16:33:27 TSDBLocalQueue: Run levels: 3
2008-04-14 16:33:27 TSDBLocalQueue: Start sequence: 81
2008-04-14 16:33:27 TSDBLocalQueue: Stop sequence: 30
2008-04-14 16:33:27 TSDBLocalQueue: STOPPED
2008-04-14 16:33:27 TSDBLocalQueue: GoGo options:
2008-04-14 16:33:27 TSDBLocalQueue: –fname=TSDBLocalQueue
2008-04-14 16:33:27 TSDBLocalQueue: –command=/home/nocpulse/bin/TSDBLocalQueue.pl
2008-04-14 16:33:27 TSDBLocalQueue: –user=apache
2008-04-14 16:33:27 TSDBLocalQueue: ===================================
2008-04-14 16:33:27 AckProcessor: STOPPING
2008-04-14 16:33:29 AckProcessor: STOPPED OK
2008-04-14 16:33:29 AckProcessor: ============ STATUS ===============
2008-04-14 16:33:29 AckProcessor: Last action: stop
2008-04-14 16:33:29 AckProcessor: ** Can be installed for SysV startup **
2008-04-14 16:33:29 AckProcessor: Run levels: 3
2008-04-14 16:33:29 AckProcessor: Start sequence: 71
2008-04-14 16:33:29 AckProcessor: Stop sequence: 41
2008-04-14 16:33:29 AckProcessor: STOPPED
2008-04-14 16:33:29 AckProcessor: GoGo options:
2008-04-14 16:33:29 AckProcessor: –fname=AckProcessor
2008-04-14 16:33:29 AckProcessor: –command=/opt/notification/scripts/ack-processor
2008-04-14 16:33:29 AckProcessor: –user=nocpulse
2008-04-14 16:33:29 AckProcessor: –hbfile=/var/tmp/ack_handler.log
2008-04-14 16:33:29 AckProcessor: –hbfreq=300
2008-04-14 16:33:29 AckProcessor: –hbcheck=600
2008-04-14 16:33:29 AckProcessor: ===================================
2008-04-14 16:33:29 Notifier: STOPPING
2008-04-14 16:33:31 Notifier: STOPPED OK
2008-04-14 16:33:31 Notifier: ============ STATUS ===============
2008-04-14 16:33:31 Notifier: Last action: stop
2008-04-14 16:33:31 Notifier: ** Can be installed for SysV startup **
2008-04-14 16:33:31 Notifier: Run levels: 3
2008-04-14 16:33:31 Notifier: Start sequence: 71
2008-04-14 16:33:31 Notifier: Stop sequence: 41
2008-04-14 16:33:31 Notifier: STOPPED
2008-04-14 16:33:31 Notifier: GoGo options:
2008-04-14 16:33:31 Notifier: –fname=Notifier
2008-04-14 16:33:31 Notifier: –command=/opt/notification/scripts/notifier
2008-04-14 16:33:31 Notifier: –user=nocpulse
2008-04-14 16:33:31 Notifier: –hbfile=/opt/notification/var/notifier.log
2008-04-14 16:33:31 Notifier: –hbfreq=300
2008-04-14 16:33:31 Notifier: –hbcheck=600
2008-04-14 16:33:31 Notifier: ===================================
2008-04-14 16:33:31 NotifLauncher: STOPPING
2008-04-14 16:33:33 NotifLauncher: STOPPED OK
2008-04-14 16:33:33 NotifLauncher: ============ STATUS ===============
2008-04-14 16:33:33 NotifLauncher: Last action: stop
2008-04-14 16:33:33 NotifLauncher: ** Can be installed for SysV startup **
2008-04-14 16:33:33 NotifLauncher: Run levels: 3
2008-04-14 16:33:33 NotifLauncher: Start sequence: 71
2008-04-14 16:33:33 NotifLauncher: Stop sequence: 41
2008-04-14 16:33:33 NotifLauncher: STOPPED
2008-04-14 16:33:33 NotifLauncher: GoGo options:
2008-04-14 16:33:33 NotifLauncher: –fname=NotifLauncher
2008-04-14 16:33:33 NotifLauncher: –command=/opt/notification/scripts/notif-launcher
2008-04-14 16:33:33 NotifLauncher: –user=nocpulse
2008-04-14 16:33:33 NotifLauncher: –hbfile=/opt/notification/var/notif-launcher.log
2008-04-14 16:33:33 NotifLauncher: –hbfreq=300
2008-04-14 16:33:33 NotifLauncher: –hbcheck=600
2008-04-14 16:33:33 NotifLauncher: ===================================
2008-04-14 16:33:33 NotifEscalator: STOPPING
2008-04-14 16:33:35 NotifEscalator: STOPPED OK
2008-04-14 16:33:35 NotifEscalator: ============ STATUS ===============
2008-04-14 16:33:35 NotifEscalator: Last action: stop
2008-04-14 16:33:35 NotifEscalator: ** Can be installed for SysV startup **
2008-04-14 16:33:35 NotifEscalator: Run levels: 3
2008-04-14 16:33:35 NotifEscalator: Start sequence: 70
2008-04-14 16:33:35 NotifEscalator: Stop sequence: 40
2008-04-14 16:33:35 NotifEscalator: STOPPED
2008-04-14 16:33:35 NotifEscalator: GoGo options:
2008-04-14 16:33:35 NotifEscalator: –fname=NotifEscalator
2008-04-14 16:33:35 NotifEscalator: –command=/opt/notification/scripts/notif-escalator
2008-04-14 16:33:35 NotifEscalator: –user=nocpulse
2008-04-14 16:33:35 NotifEscalator: –hbfile=/opt/notification/var/notif-escalator.log
2008-04-14 16:33:35 NotifEscalator: –hbfreq=300
2008-04-14 16:33:35 NotifEscalator: –hbcheck=600
2008-04-14 16:33:35 NotifEscalator: ===================================
2008-04-14 16:33:35 GenerateNotifConfig: STOPPING
2008-04-14 16:33:37 GenerateNotifConfig: STOPPED OK
2008-04-14 16:33:37 GenerateNotifConfig: ============ STATUS ===============
2008-04-14 16:33:37 GenerateNotifConfig: Last action: stop
2008-04-14 16:33:37 GenerateNotifConfig: ** Can be installed for SysV startup **
2008-04-14 16:33:37 GenerateNotifConfig: Run levels: 3
2008-04-14 16:33:37 GenerateNotifConfig: Start sequence: 70
2008-04-14 16:33:37 GenerateNotifConfig: Stop sequence: 40
2008-04-14 16:33:37 GenerateNotifConfig: STOPPED
2008-04-14 16:33:37 GenerateNotifConfig: GoGo options:
2008-04-14 16:33:37 GenerateNotifConfig: –fname=GenerateNotifConfig
2008-04-14 16:33:37 GenerateNotifConfig: –command=/opt/notification/scripts/generate-config
2008-04-14 16:33:37 GenerateNotifConfig: –user=nocpulse
2008-04-14 16:33:37 GenerateNotifConfig: –hbfile=/opt/notification/var/generate_config.log
2008-04-14 16:33:37 GenerateNotifConfig: –hbfreq=300
2008-04-14 16:33:37 GenerateNotifConfig: –hbcheck=600
2008-04-14 16:33:37 GenerateNotifConfig: ===================================
2008-04-14 16:33:37 InstallSoftwareConfig: STOPPING
2008-04-14 16:33:37 InstallSoftwareConfig: STOPPED OK
2008-04-14 16:33:37 InstallSoftwareConfig: ============ STATUS ===============
2008-04-14 16:33:37 InstallSoftwareConfig: Last action: stop
2008-04-14 16:33:37 InstallSoftwareConfig: STOPPED
2008-04-14 16:33:37 InstallSoftwareConfig: ===================================
2008-04-14 16:33:37 Monitoring: STOPPED OK
2008-04-14 16:33:37 Monitoring: ============ STATUS ===============
2008-04-14 16:33:37 Monitoring:    ++++ Monitoring backend functionality is enabled
2008-04-14 16:33:37 Monitoring:    —- Monitoring scout functionality is disabled
2008-04-14 16:33:37 Monitoring: Last action: stop
2008-04-14 16:33:37 Monitoring: ** Installed for SysV startup **
2008-04-14 16:33:37 Monitoring: STOPPED
2008-04-14 16:33:37 Monitoring: ===================================
Stopping httpd:                                            [  OK  ]
waiting for processes to exit                              [  OK  ]
waiting for processes to exit
Stopping RHN Taskomatic…
Stopped RHN Taskomatic.
Shutting down osa-dispatcher:                              [  OK  ]
Shutting down rhn-database:                                [  OK  ]
Shutting down Jabber router:                               [  OK  ]
Done.

Now I wasn’t sure if this satellite server was using the Red Hat internal Oracle instance or if I had an actual Oracle instance.  So here’s how I determined that we were using the Red Hat Oracle instance.

[root@satellite-1 redhat]# service rhn-database status
The database is running and accepting connections.

Yup, we’re using the embedded Oracle database.

Ok, I’ve got an internal Oracle instance, so I’ll use Red Hat’s instructions on how to back it up.  That said, this may not work for you.  If you suspect you have an Oracle instanceon another computer, you could try netstat -an | grep 1521 and see the Satellite Server talking to the far end on port 1521.  There’s probably a way to definitively know

[root@satellite-1 redhat]# su – oracle

-bash-3.00$ mkdir /tmp/dbBackup
-bash-3.00$ db-control backup /tmp/dbBackup
Initiating cold backup of database rhnsat…
/opt/apps/oracle/config/9.2.0/lkRHNSAT -> /tmp/dbBackup/lkRHNSAT.gz … done.
/opt/apps/oracle/config/9.2.0/spfilerhnsat.ora -> /tmp/dbBackup/spfilerhnsat.ora.gz … done.
/rhnsat/data/rhnsat/undo_02.dbf -> /tmp/dbBackup/undo_02.dbf.gz … done.
/rhnsat/data/rhnsat/users_01.dbf -> /tmp/dbBackup/users_01.dbf.gz … done.
/rhnsat/data/rhnsat/data_01.dbf -> /tmp/dbBackup/data_01.dbf.gz … done.
/rhnsat/data/rhnsat/redo_1101.log -> /tmp/dbBackup/redo_1101.log.gz … done.
/rhnsat/data/rhnsat/redo_1102.log -> /tmp/dbBackup/redo_1102.log.gz … done.
/rhnsat/data/rhnsat/control_03.ctl -> /tmp/dbBackup/control_03.ctl.gz … done.
/rhnsat/data/rhnsat/control_01.ctl -> /tmp/dbBackup/control_01.ctl.gz … done.
/rhnsat/data/rhnsat/redo_1001.log -> /tmp/dbBackup/redo_1001.log.gz … done.
/rhnsat/data/rhnsat/data_07.dbf -> /tmp/dbBackup/data_07.dbf.gz … done.
/rhnsat/data/rhnsat/data_08.dbf -> /tmp/dbBackup/data_08.dbf.gz … done.
/rhnsat/data/rhnsat/tools_01.dbf -> /tmp/dbBackup/tools_01.dbf.gz … done.
/rhnsat/data/rhnsat/control_02.ctl -> /tmp/dbBackup/control_02.ctl.gz … done.
/rhnsat/data/rhnsat/data_05.dbf -> /tmp/dbBackup/data_05.dbf.gz … done.
/rhnsat/data/rhnsat/data_04.dbf -> /tmp/dbBackup/data_04.dbf.gz … done.
/rhnsat/data/rhnsat/undo_01.dbf -> /tmp/dbBackup/undo_01.dbf.gz … done.
/rhnsat/data/rhnsat/data_06.dbf -> /tmp/dbBackup/data_06.dbf.gz … done.
/rhnsat/data/rhnsat/data_03.dbf -> /tmp/dbBackup/data_03.dbf.gz … done.
/rhnsat/data/rhnsat/data_02.dbf -> /tmp/dbBackup/data_02.dbf.gz … done.
/rhnsat/data/rhnsat/system.dbf -> /tmp/dbBackup/system.dbf.gz … done.
/rhnsat/data/rhnsat/temp_01.dbf -> /tmp/dbBackup/temp_01.dbf.gz … done.
/rhnsat/data/rhnsat/redo_1002.log -> /tmp/dbBackup/redo_1002.log.gz … done.
/rhnsat/admin/rhnsat/archive/arch_1_1.arc -> /tmp/dbBackup/arch_1_1.arc.gz … done.
Full cold backup complete.
-bash-3.00$

It took my system about 10 minutes to perform the backup.

drop out of Oracle user:

-bash-3.00$ exit
logout

start the Satellite Server back up

[root@satellite-1 redhat]# service rhn-satellite start
Starting rhn-satellite…
Starting Jabber services                                   [  OK  ]
Starting rhn-database:                                     [  OK  ]
Starting osa-dispatcher:                                   [  OK  ]
Starting RHN Taskomatic…
Starting tomcat5:                                          [  OK  ]
Starting httpd: Processing config directory: /etc/httpd/conf/rhn/
Processing config file: /etc/httpd/conf/rhn/app.conf
Processing config file: /etc/httpd/conf/rhn/applet.conf
Processing config file: /etc/httpd/conf/rhn/config-management-tool.conf
Processing config file: /etc/httpd/conf/rhn/config-management.conf
Processing config file: /etc/httpd/conf/rhn/package-push.conf
Processing config file: /etc/httpd/conf/rhn/rhn_monitoring.conf
Processing config file: /etc/httpd/conf/rhn/xmlrpc.conf
Processing config file: /etc/httpd/conf/rhn/xp.conf
[  OK  ]
2008-04-14 16:46:39 Monitoring: Debug level = 0
2008-04-14 16:46:39 Monitoring: Switches: start
2008-04-14 16:46:39 Monitoring: STARTING…
2008-04-14 16:46:39 InstallSoftwareConfig: STARTING…
2008-04-14 16:46:39 InstallSoftwareConfig: Grabbing local config info
2008-04-14 16:46:39 InstallSoftwareConfig: STARTED OK
2008-04-14 16:46:39 InstallSoftwareConfig: ============ STATUS ===============
2008-04-14 16:46:39 InstallSoftwareConfig: Last action: start
2008-04-14 16:46:39 InstallSoftwareConfig: STARTED and RUNNING
2008-04-14 16:46:39 InstallSoftwareConfig: ===================================
2008-04-14 16:46:39 GenerateNotifConfig: STARTING…
2008-04-14 16:46:40 GenerateNotifConfig: STARTED OK
2008-04-14 16:46:40 GenerateNotifConfig: ============ STATUS ===============
2008-04-14 16:46:40 GenerateNotifConfig: Last action: start
2008-04-14 16:46:40 GenerateNotifConfig: ** Can be installed for SysV startup **
2008-04-14 16:46:40 GenerateNotifConfig: Run levels: 3
2008-04-14 16:46:40 GenerateNotifConfig: Start sequence: 70
2008-04-14 16:46:40 GenerateNotifConfig: Stop sequence: 40
2008-04-14 16:46:41 GenerateNotifConfig: STARTED and RUNNING
2008-04-14 16:46:41 GenerateNotifConfig: GoGo options:
2008-04-14 16:46:41 GenerateNotifConfig: –fname=GenerateNotifConfig
2008-04-14 16:46:41 GenerateNotifConfig: –command=/opt/notification/scripts/generate-config
2008-04-14 16:46:41 GenerateNotifConfig: –user=nocpulse
2008-04-14 16:46:41 GenerateNotifConfig: –hbfile=/opt/notification/var/generate_config.log
2008-04-14 16:46:41 GenerateNotifConfig: –hbfreq=300
2008-04-14 16:46:41 GenerateNotifConfig: –hbcheck=600
2008-04-14 16:46:41 GenerateNotifConfig: ===================================
2008-04-14 16:46:42 NotifEscalator: STARTING…
2008-04-14 16:46:43 NotifEscalator: STARTED OK
2008-04-14 16:46:43 NotifEscalator: ============ STATUS ===============
2008-04-14 16:46:43 NotifEscalator: Last action: start
2008-04-14 16:46:43 NotifEscalator: ** Can be installed for SysV startup **
2008-04-14 16:46:43 NotifEscalator: Run levels: 3
2008-04-14 16:46:43 NotifEscalator: Start sequence: 70
2008-04-14 16:46:43 NotifEscalator: Stop sequence: 40
2008-04-14 16:46:45 NotifEscalator: STARTED and RUNNING
2008-04-14 16:46:45 NotifEscalator: GoGo options:
2008-04-14 16:46:45 NotifEscalator: –fname=NotifEscalator
2008-04-14 16:46:45 NotifEscalator: –command=/opt/notification/scripts/notif-escalator
2008-04-14 16:46:45 NotifEscalator: –user=nocpulse
2008-04-14 16:46:45 NotifEscalator: –hbfile=/opt/notification/var/notif-escalator.log
2008-04-14 16:46:45 NotifEscalator: –hbfreq=300
2008-04-14 16:46:45 NotifEscalator: –hbcheck=600
2008-04-14 16:46:45 NotifEscalator: ===================================
2008-04-14 16:46:47 NotifLauncher: STARTING…
2008-04-14 16:46:48 NotifLauncher: STARTED OK
2008-04-14 16:46:48 NotifLauncher: ============ STATUS ===============
2008-04-14 16:46:48 NotifLauncher: Last action: start
2008-04-14 16:46:48 NotifLauncher: ** Can be installed for SysV startup **
2008-04-14 16:46:48 NotifLauncher: Run levels: 3
2008-04-14 16:46:48 NotifLauncher: Start sequence: 71
2008-04-14 16:46:48 NotifLauncher: Stop sequence: 41
2008-04-14 16:46:49 NotifLauncher: STARTED and RUNNING
2008-04-14 16:46:49 NotifLauncher: GoGo options:
2008-04-14 16:46:49 NotifLauncher: –fname=NotifLauncher
2008-04-14 16:46:49 NotifLauncher: –command=/opt/notification/scripts/notif-launcher
2008-04-14 16:46:49 NotifLauncher: –user=nocpulse
2008-04-14 16:46:49 NotifLauncher: –hbfile=/opt/notification/var/notif-launcher.log
2008-04-14 16:46:49 NotifLauncher: –hbfreq=300
2008-04-14 16:46:49 NotifLauncher: –hbcheck=600
2008-04-14 16:46:49 NotifLauncher: ===================================
2008-04-14 16:46:51 Notifier: STARTING…
2008-04-14 16:46:52 Notifier: STARTED OK
2008-04-14 16:46:52 Notifier: ============ STATUS ===============
2008-04-14 16:46:52 Notifier: Last action: start
2008-04-14 16:46:52 Notifier: ** Can be installed for SysV startup **
2008-04-14 16:46:52 Notifier: Run levels: 3
2008-04-14 16:46:52 Notifier: Start sequence: 71
2008-04-14 16:46:52 Notifier: Stop sequence: 41
2008-04-14 16:46:53 Notifier: STARTED and RUNNING
2008-04-14 16:46:53 Notifier: GoGo options:
2008-04-14 16:46:53 Notifier: –fname=Notifier
2008-04-14 16:46:53 Notifier: –command=/opt/notification/scripts/notifier
2008-04-14 16:46:53 Notifier: –user=nocpulse
2008-04-14 16:46:53 Notifier: –hbfile=/opt/notification/var/notifier.log
2008-04-14 16:46:53 Notifier: –hbfreq=300
2008-04-14 16:46:53 Notifier: –hbcheck=600
2008-04-14 16:46:53 Notifier: ===================================
2008-04-14 16:46:54 AckProcessor: STARTING…
2008-04-14 16:46:55 AckProcessor: STARTED OK
2008-04-14 16:46:55 AckProcessor: ============ STATUS ===============
2008-04-14 16:46:55 AckProcessor: Last action: start
2008-04-14 16:46:55 AckProcessor: ** Can be installed for SysV startup **
2008-04-14 16:46:55 AckProcessor: Run levels: 3
2008-04-14 16:46:55 AckProcessor: Start sequence: 71
2008-04-14 16:46:55 AckProcessor: Stop sequence: 41
2008-04-14 16:46:56 AckProcessor: STARTED and RUNNING
2008-04-14 16:46:56 AckProcessor: GoGo options:
2008-04-14 16:46:56 AckProcessor: –fname=AckProcessor
2008-04-14 16:46:56 AckProcessor: –command=/opt/notification/scripts/ack-processor
2008-04-14 16:46:56 AckProcessor: –user=nocpulse
2008-04-14 16:46:56 AckProcessor: –hbfile=/var/tmp/ack_handler.log
2008-04-14 16:46:56 AckProcessor: –hbfreq=300
2008-04-14 16:46:56 AckProcessor: –hbcheck=600
2008-04-14 16:46:56 AckProcessor: ===================================
2008-04-14 16:46:58 TSDBLocalQueue: STARTING…
2008-04-14 16:46:59 TSDBLocalQueue: STARTED OK
2008-04-14 16:46:59 TSDBLocalQueue: ============ STATUS ===============
2008-04-14 16:46:59 TSDBLocalQueue: Last action: start
2008-04-14 16:46:59 TSDBLocalQueue: ** Can be installed for SysV startup **
2008-04-14 16:46:59 TSDBLocalQueue: Run levels: 3
2008-04-14 16:46:59 TSDBLocalQueue: Start sequence: 81
2008-04-14 16:46:59 TSDBLocalQueue: Stop sequence: 30
2008-04-14 16:47:00 TSDBLocalQueue: STARTED and RUNNING
2008-04-14 16:47:00 TSDBLocalQueue: GoGo options:
2008-04-14 16:47:00 TSDBLocalQueue: –fname=TSDBLocalQueue
2008-04-14 16:47:00 TSDBLocalQueue: –command=/home/nocpulse/bin/TSDBLocalQueue.pl
2008-04-14 16:47:00 TSDBLocalQueue: –user=apache
2008-04-14 16:47:00 TSDBLocalQueue: ===================================
2008-04-14 16:47:01 Monitoring: STARTED OK
2008-04-14 16:47:01 Monitoring: ============ STATUS ===============
2008-04-14 16:47:01 Monitoring:    ++++ Monitoring backend functionality is enabled
2008-04-14 16:47:01 Monitoring:    —- Monitoring scout functionality is disabled
2008-04-14 16:47:01 Monitoring: Last action: start
2008-04-14 16:47:01 Monitoring: ** Installed for SysV startup **
2008-04-14 16:47:01 Monitoring: STARTED and RUNNING
2008-04-14 16:47:01 Monitoring: ===================================
Done.
[root@satellite-1 redhat]#

Red Hat recommends tar’ing, gzipping, and moving the file to another server, but in this case I’m not being that cautious.  If this change doesn’t work, I’ll immediately start rolling the changes back and I don’t expect it to kill the box.

Blow that channel away

Finally, it’s time to annihilate the channel.  First, run the satrm.py script to list the subscribed channels.

[root@satellite-1 redhat]# cd /usr/share/rhn
[root@satellite-1 rhn]# PYTHONPATH=/usr/share/rhn/ python satellite_tools/satrm.py -l
rhel-i386-server-5
rhel-x86_64-server-5
redhat-advanced-server-i386

Now, remove the channel.

[root@satellite-1 rhn]# PYTHONPATH=/usr/share/rhn/ python satellite_tools/satrm.py –channel=redhat-advanced-server-i386

Make sure everything worked and you’re still up and running.

Check your work.

[root@satellite-1 rhn]# PYTHONPATH=/usr/share/rhn/ python satellite_tools/satrm.py -l
rhel-i386-server-5
rhel-x86_64-server-5

and check your satellite-sync results.

[root@satellite-1 rhn]# satellite-sync –list-channels
16:51:13 Red Hat Network Satellite – live synchronization
16:51:13    url: https://satellite.rhn.redhat.com
16:51:13    debug/output level: 1
16:51:14    db:  rhnsat/<password>@rhnsat
16:51:14
16:51:14 Retrieving / parsing channel-families data
16:51:14 channel-families data complete
Pushing scout configs to all monitoring scouts
16:51:22
16:51:22 Retrieving / parsing channel data
16:51:38    p = previously imported/synced channel
16:51:38    . = channel not yet imported/synced
16:51:38    base-channels:
16:51:38       . redhat-advanced-server-i386              3707
16:51:38       . redhat-ent-linux-i386-es-2.1             3198
16:51:38       . redhat-linux-alpha-6.2                   1184
16:51:38       . redhat-linux-alpha-7.0                   1412
16:51:38       . redhat-linux-alpha-7.1                   1487
16:51:38       . redhat-linux-as-2.1-IPF                  3157
16:51:38       . redhat-linux-ee-i386-6.2                   13
16:51:38       . redhat-linux-i386-6.2                    1357
16:51:38       . redhat-linux-i386-7.0                    1615
16:51:38       . redhat-linux-i386-7.1                    2046
16:51:38       . redhat-linux-i386-7.2                    2338
16:51:38       . redhat-linux-i386-7.3                    2481
16:51:38       . redhat-linux-i386-8.0                    2316
16:51:38       . redhat-linux-i386-9                      1864
16:51:38       . redhat-linux-iSeries-7.1                 1135
16:51:38       . redhat-linux-ia64-7.1                    1392
16:51:38       . redhat-linux-ia64-7.2                    1886
16:51:38       . redhat-linux-pSeries-7.1                 1135
16:51:38       . redhat-linux-s390-7.2                    1447
16:51:38       . redhat-linux-s390x-7.1                    977
16:51:38       . redhat-linux-severn-i386-9.0.93          1455
16:51:38       . redhat-linux-sparc-6.2                   1201
16:51:38       . rhel-i386-as-3                           4910
16:51:39       . rhel-i386-as-4                           5235
16:51:39       . rhel-i386-es-3                           4929
16:51:39       . rhel-i386-es-4                           5235
16:51:39       p rhel-i386-server-5                       3299
16:51:39       . rhel-ia64-as-3                           5147
16:51:39       . rhel-ia64-as-4                           5553
16:51:39       . rhel-ia64-es-3                           4683
16:51:39       . rhel-ia64-es-4                           5552
16:51:39       . rhel-ia64-server-5                       3389
16:51:39       . rhel-ppc-as-3                            5251
16:51:39       . rhel-ppc-as-4                            5884
16:51:39       . rhel-ppc-server-5                        4265
16:51:39       . rhel-x86_64-as-3                         5403
16:51:39       . rhel-x86_64-as-4                         5993
16:51:39       . rhel-x86_64-es-3                         4907
16:51:39       . rhel-x86_64-es-4                         5993
16:51:39       p rhel-x86_64-server-5                     4324
16:51:39       . severn-beta2-i386                        1466
16:51:39    redhat-advanced-server-i386:
16:51:39       . rhn-tools-rhel-2.1-as-i386               1524
16:51:39    redhat-ent-linux-i386-es-2.1:
16:51:39       . rhn-tools-rhel-2.1-es-i386               1524
16:51:39    redhat-linux-alpha-6.2:
16:51:39       . redhat-powertools-alpha-6.2               532
16:51:39    redhat-linux-alpha-7.0:
16:51:39       . redhat-powertools-alpha-7.0               461
16:51:39    redhat-linux-alpha-7.1:
16:51:39       . redhat-powertools-alpha-7.1               459
16:51:39    redhat-linux-as-2.1-IPF:
16:51:39       . rhn-tools-rhel-2.1-as-ia64               1192
16:51:39    redhat-linux-i386-6.2:
16:51:40       . redhat-powertools-i386-6.2                584
16:51:40    redhat-linux-i386-7.0:
16:51:40       . redhat-powertools-i386-7.0                520
16:51:40    redhat-linux-i386-7.1:
16:51:40       . redhat-powertools-i386-7.1                541
16:51:40    redhat-linux-i386-7.2:
16:51:40       . k12ltsp-i386-7.2                           63
16:51:40    redhat-linux-i386-7.3:
16:51:40       . redhat-gcc3.1-i386-7.3                     12
16:51:40       . education-k12ltsp-i386-7.3                 82
16:51:40       . education-general-i386-7.3                  7
16:51:40    redhat-linux-i386-8.0:
16:51:40       . education-k12ltsp-i386-8.0                122
16:51:40    redhat-linux-i386-9:
16:51:40       . rhn-tools-redhat-linux-i386-9            1514
16:51:40       . education-k12ltsp-i386-9                  123
16:51:40    redhat-linux-severn-i386-9.0.93:
16:51:40       . redhat-linux-severn-i386-9.0.93-updates  2388
16:51:40    redhat-linux-sparc-6.2:
16:51:40       . redhat-powertools-sparc-6.2               480
16:51:40    rhel-i386-as-3:
16:51:40       . rhel-i386-as-3-fastrack                    56
16:51:40       . rhel-3-as-i386-rhds-2                      27
16:51:40       . rhel-i386-as-3-cluster                     33
16:51:40       . rhel-i386-as-3-hwcert                       9
16:51:40       . rhn-tools-rhel-3-as-i386                 1545
16:51:40       . rhel-i386-as-3-devsuite                     6
16:51:40       . rhel-i386-as-3-extras                     150
16:51:40    rhel-i386-as-4:
16:51:40       . rhel-i386-as-4-fastrack                   208
16:51:40       . rhel-4-as-i386-rhds-2.1                    15
16:51:40       . rhel-i386-as-4-hwcert                      18
16:51:40       . rhel-i386-as-4-sdk                          1
16:51:40       . rhel-4-as-i386-rhds-3                     145
16:51:40       . rhel-i386-as-4-extras                     218
16:51:40       . rhel-i386-as-4-cluster                    345
16:51:40       . rhn-tools-rhel-4-as-i386                 1274
16:51:40    rhel-i386-es-3:
16:51:40       . rhel-i386-es-3-extras                     150
16:51:40       . rhel-3-es-i386-rhds-2                      27
16:51:40       . rhn-tools-rhel-3-es-i386                 1545
16:51:40       . rhel-i386-es-3-fastrack                    56
16:51:40       . rhel-i386-es-3-devsuite                     6
16:51:40       . rhel-i386-es-3-cluster                     33
16:51:40    rhel-i386-es-4:
16:51:40       . rhel-4-es-i386-rhds-3                     145
16:51:40       . rhel-i386-es-4-sdk                          1
16:51:40       . rhn-tools-rhel-4-es-i386                 1274
16:51:40       . rhel-i386-es-4-extras                     218
16:51:40       . rhel-i386-es-4-fastrack                   208
16:51:40       . rhel-4-es-i386-rhds-2.1                    15
16:51:40       . rhel-i386-es-4-cluster                    345
16:51:40    rhel-i386-server-5:
16:51:40       . rhel-i386-server-supplementary-5          183
16:51:40       . rhel-i386-server-cluster-storage-5        116
16:51:40       . rhel-i386-server-productivity-5           460
16:51:40       . rhel-i386-server-vt-5                      71
16:51:40       . rhn-tools-rhel-i386-server-5              371
16:51:40       . rhel-i386-server-hts-5                      7
16:51:40       . rhel-i386-server-cluster-5                 73
16:51:40       . rhel-i386-server-fastrack-5               170
16:51:40    rhel-ia64-as-3:
16:51:40       . rhel-ia64-as-3-extras                      92
16:51:40       . rhel-ia64-as-3-cluster                     28
16:51:40       . rhel-ia64-as-3-devsuite                     3
16:51:40       . rhel-3-as-ia64-rhds-2                      27
16:51:40       . rhel-ia64-as-3-hwcert                       9
16:51:40       . rhn-tools-rhel-3-as-ia64                 1213
16:51:40       . rhel-ia64-as-3-fastrack                    61
16:51:40    rhel-ia64-as-4:
16:51:40       . rhel-4-as-ia64-rhds-3                     145
16:51:40       . rhel-4-as-ia64-rhds-2.1                    15
16:51:40       . rhn-tools-rhel-4-as-ia64                 1214
16:51:40       . rhel-ia64-as-4-hwcert                      18
16:51:40       . rhel-ia64-as-4-extras                      90
16:51:40       . rhel-ia64-as-4-fastrack                   228
16:51:40       . rhel-ia64-as-4-cluster                    229
16:51:40    rhel-ia64-es-3:
16:51:40       . rhel-ia64-es-3-extras                      92
16:51:40       . rhel-ia64-es-3-devsuite                     4
16:51:40       . rhel-3-es-ia64-rhds-2                      27
16:51:40       . rhel-ia64-es-3-cluster                     28
16:51:40       . rhn-tools-rhel-3-es-ia64                 1213
16:51:40       . rhel-ia64-es-3-fastrack                    61
16:51:40    rhel-ia64-es-4:
16:51:40       . rhel-4-es-ia64-rhds-2.1                    15
16:51:40       . rhel-ia64-es-4-extras                      90
16:51:40       . rhel-ia64-es-4-cluster                    229
16:51:40       . rhel-ia64-es-4-fastrack                   228
16:51:40       . rhn-tools-rhel-4-es-ia64                 1214
16:51:40       . rhel-4-es-ia64-rhds-3                     145
16:51:40    rhel-ia64-server-5:
16:51:40       . rhel-ia64-server-cluster-storage-5         95
16:51:40       . rhel-ia64-server-cluster-5                 73
16:51:40       . rhel-ia64-server-vt-5                      70
16:51:40       . rhel-ia64-server-supplementary-5           57
16:51:40       . rhel-ia64-server-fastrack-5               170
16:51:40       . rhn-tools-rhel-ia64-server-5              371
16:51:40       . rhel-ia64-server-hts-5                      7
16:51:40    rhel-ppc-as-3:
16:51:40       . rhel-ppc-as-3-fastrack                     61
16:51:40       . rhel-ppc-as-3-hwcert                       16
16:51:40       . rhel-3-as-ppc-rhds-2                       25
16:51:40       . rhel-ppc-as-3-extras                       75
16:51:40    rhel-ppc-as-4:
16:51:40       . rhel-ppc-as-4-cluster                      82
16:51:40       . rhn-tools-rhel-4-as-ppc                     0
16:51:40       . rhel-ppc-as-4-extras                       95
16:51:40       . rhel-ppc-as-4-hwcert                       26
16:51:40       . rhel-4-as-ppc-rhds-2.1                     15
16:51:40       . rhel-ppc-as-4-fastrack                    228
16:51:40       . rhel-4-as-ppc-rhds-3                      151
16:51:40    rhel-ppc-server-5:
16:51:40       . rhel-ppc-server-hts-5                       7
16:51:40       . rhel-ppc-server-supplementary-5            93
16:51:40       . rhel-ppc-server-fastrack-5                197
16:51:40       . rhn-tools-rhel-ppc-server-5                13
16:51:40    rhel-x86_64-as-3:
16:51:40       . rhel-x86_64-as-3-fastrack                  60
16:51:40       . rhel-x86_64-as-3-hwcert                     9
16:51:40       . rhn-tools-rhel-3-as-x86_64               1424
16:51:40       . rhel-x86_64-as-3-devsuite                   2
16:51:40       . rhel-x86_64-as-3-cluster                   28
16:51:40       . rhel-x86_64-as-3-extras                    85
16:51:40    rhel-x86_64-as-4:
16:51:40       . rhel-x86_64-as-4-fastrack                 231
16:51:40       . rhel-x86_64-as-4-extras                   160
16:51:40       . rhel-x86_64-as-4-sdk                        1
16:51:40       . rhn-tools-rhel-4-as-x86_64               1274
16:51:40       . rhel-x86_64-as-4-cluster                  329
16:51:40       . rhel-4-as-x86_64-rhds-3                   145
16:51:40       . rhel-4-as-x86_64-rhds-2.1                  15
16:51:40       . rhel-x86_64-as-4-hwcert                    18
16:51:40    rhel-x86_64-es-3:
16:51:40       . rhel-x86_64-es-3-fastrack                  60
16:51:40       . rhel-x86_64-es-3-cluster                   28
16:51:40       . rhn-tools-rhel-3-es-x86_64               1424
16:51:40       . rhel-x86_64-es-3-extras                    85
16:51:40       . rhel-x86_64-es-3-devsuite                   4
16:51:40    rhel-x86_64-es-4:
16:51:40       . rhel-4-es-x86_64-rhds-2.1                  15
16:51:40       . rhel-x86_64-es-4-extras                   160
16:51:40       . rhel-x86_64-es-4-fastrack                 231
16:51:40       . rhel-x86_64-es-4-cluster                  329
16:51:40       . rhel-4-es-x86_64-rhds-3                   145
16:51:40       . rhn-tools-rhel-4-es-x86_64               1274
16:51:40       . rhel-x86_64-es-4-sdk                        1
16:51:40    rhel-x86_64-server-5:
16:51:40       . rhel-x86_64-server-fastrack-5             201
16:51:40       . rhel-x86_64-server-hts-5                    7
16:51:40       . rhel-x86_64-server-vt-5                    81
16:51:40       . rhel-x86_64-server-cluster-5               73
16:51:40       . rhn-tools-rhel-x86_64-server-5            371
16:51:40       . rhel-x86_64-server-productivity-5         504
16:51:40       . rhel-x86_64-server-supplementary-5        232
16:51:40       . rhel-x86_64-server-cluster-storage-5       95
16:51:40    severn-beta2-i386:
16:51:40       . severn-beta2-i386-updates                1878
16:51:40
Import complete:
Begin time: Mon Apr 14 16:51:13 2008
End time:   Mon Apr 14 16:51:40 2008
Elapsed:    0 hours, 0 minutes, 26 seconds

[root@satellite-1 rhn]#

Finally, go into your web interface and poke around just to make sure you didn’t break anything.

Congratulations, you’ve just swept up some virtual dust.  Slap yourself on the back, tell the boss you’re awesome and go get a cup of joe.

Dell found a way to keep selling XP

Microsoft is still moving forward with plans to stop selling XP on June 30, but in the meanwhile Dell has found a loophole in the contract that will allow them to sell XP as a downgrade license from Vista. Infoworld wrote about it in their Save Windows XP blog here.

This is a good deal for Dell, but seeing as how Dell’s support structure appears to be going downhill, this isn’t really the answer we need for our solutions. My employers usually give me a laptop to support their operations and for a few years now they’ve been Dell’s. But for my home systems, I just refuse to buy complete systems from integrators like Dell.

This is primarily due to the fact that I refuse to spend time with horrible customer service troubleshooting issues. I’m not commenting on Dell alone at this point, as all desktop support has become a great way to ruin hours and hours of time that you could be earning money, cruising the web or playing computer games. Plus, I require redundancy on all of my filesystems at home which means that as soon as I’m on the phone with tech support I’ve got a problem that they’re incapable of supporting.

Now I’ve already discussed in previous posts that this will be my last install of a Microsoft operating system. Ubuntu has finally produced a decent desktop out of Linux and I plan on building a solid desktop that can do just about everything my current computer can do. But what about games, you say? Well I’ve held out against game consoles for long enough. It’s time for me to bite the bullet and pick up a wii or something else that I will enjoy. And now that vista is so outrageously expensive, the argument is so much easier.

But if you’re in a position where you need to buy desktop computers for a business setting, you probably should consider Dell and their downgrade license.