Thursday, November 30, 2006

Book of Mozilla

If you are in a Mozilla browser, click this link here. Happy Easter!



(Thanks to nixCraft)




Sunday, November 26, 2006

Officially Awesome

The aforementioned PC-BSD v1.3 beta 2 has finally be officially released and I'm downloading it now. It really was an amazingly smooth installation and I'm looking forward to seeing if this final beta version is the same.



1.3 BETA2 Released!





Friday, November 24, 2006

Turkey Tech Toys

So I couldn't resist a quick trip to the store this morning to buy some new tech toys. For those international types, yesterday was the Thanksgiving holiday, whereby we eats lots of food and watch plenty of (American) football. And today, the day after turkey day, has become something of a shopping holiday, where the stores open at 5am (or earlier!), offering "incredible" deals. Generally, I don't bother with it, as I think the deals are vastly overrated.



But Friday is one of my hockey mornings, so I'm up early anyway, so I checked out the deals at some of the tech stores. And found some sweet ones at CompUSA and Staples, which just so happen to be next to each other in a little plaza on my way back from hockey, so it worked out nicely. I grabbed six things, and now I just have to worry about getting the rebates in before they timeout. Here's what I got:




  • 200gb Maxtor EIDE drive (US$20) - yup, you read that right - 200 gigabytes for $19.99, after rebates. I didn't even need another hard drive, but I couldn't resist

  • Saitek Gamers keyboard ($20) - My keyboard and mouse were getting a little long in the tooth (I use them about 10 hours a day usually), so I'd been thinking about upgrading. I just couldn't pull the trigger on the fancy Logitech gamer's keyboard, with the little LCD screen. It was $50 while the Saitek was only $20. Both are backlit, so that's pretty cool. But I'm a "Natural" keyboard guy, so I'm not sure I'm going to be able to use this fulltime. But at least when gaming.

  • Logitech G7 Laser mouse - with the money I saved on the keyboard, I splurged on the mouse. Very nice 2000dpi laser mouse, with on-the-fly sensitivity adjustment and two batteries. Very nice looking mouse (nope, this keyboard just won't work full time. My fingers feel cramped and my arms are already tired. Gonna have to splurge on a new Natural one).

  • 5 outlet strip (free!) - can always use another one of these

  • 60 pack DVD-R ($3) - don't really use DVD-R much, but for a nickel each, I can learn to do backups with them. I noticed my BootIT NG will make an image of a partition using one too.

  • 2 1gb SD memory cards ($20) - My wife's Treo uses SD cards and this was a real deal. Will make a great stocking stuffer (can you tell she isn't interested in my blog?)



So it was a very productive morning. Like I said, I don't think this keyboard is going to work out as a full time one, but it should work for my gaming needs. I reboot into Windows to play games, so it won't be hard to just plug this USB keyboard in on the way.




Tuesday, November 21, 2006

Bullets Over Broadway



What language do you want?

A couple of interesting programming language links to pass along.



First up is a page which gives you the source code to print out the lyrics to the (in)famous road song, "99 Bottles of Beer", in over 600 programming languages, from the popular (Java) to the obscure (Piet - programming in color). Very cool list of virtually all computer programming languages:


99 Bottles of Beer


Here we have a page that attempts to rank programming languages based upon popularity, using a bunch of different sources. As someone who does most of his programming in C++ and C, I'm glad to see them maintaining their ranking!



TIOBE Software - The Coding Standards Company





Saturday, November 18, 2006

She Sells Sea Shells

I've been thinking I should investigate shells. No, not seashells, silly, but rather command shells. I've always used bash, but more because I do so much of my work on Linux and it is the default shell then any real comparison between any of the myriad shells offered. Some people are voracious tcsh defenders, which is the "out of the box" shell found on FreeBSD (and, of course, PC-BSD). Other popular shells include ksh (kornshell), pdksh (a very close ksh relative), and zsh. And I won't get into the ancient ones, like sh (the original Bourne shell) and csh, as those are old and crufty, although 'sh' is the scripting language of choice, due to its power and widespread availability.



Anyway, I was reading FreeBSD 6 Unleashed on Safari (pretty good service, an article for another day), when I came across the chapters on command lines, and the part where they talk about the various shells. It was a very good overview of the various shells, ending with:




Which Shell to Choose?


Which shell, then, should you choose? For most of this chapter, it doesn't really matter. Most of the standard FreeBSD commands work the same way under all shells. It is only when you want to start performing advanced tasks, such as changing shell variables, setting aliases, and writing shell programs, that the differences between the shells really become apparent. In day-to-day use, you'll find that some of the features of more advanced shells (such as the ability to recall your previously issued commands using the arrow keys, and to complete command names with the Tab key) are crucial to your ease of use and peace of mind. This means using pdksh, bash, or the shell endorsed by FreeBSD, tcsh.



If you don't plan to do any shell programming, tcsh (which in FreeBSD is the same thing as csh) is a fine choice. If you are interested in learning shell programming, choose pdksh or bash because you won't have to unlearn anything when you start programming, and all the commands you learn for operating within the shell can be applied directly to programming within it.





So I suppose I should just tackle tcsh, a shell that I used to use in days gone by, but haven't done much with lately. But although they didn't mention zsh in this overview, their description was intriguing enough that I thought I would give it a try:



The zsh Shell



The Z Shell, or zsh, is a shell designed to cover all the bases. Its basic design is Korn-like, and it incorporates all the popular features of both bash and tcsh (and it attains a large size and memory footprint because of it); but its unique features such as advanced globbing (filename matching), command line editing, and key binding makes it a favorite for hard-core UNIX users, especially those accustomed to the binding-rich Emacs editor.



It was that bit about Emacs that attracted me, of course, being the Emacs aficionado that I am. So I've installed zsh and am playing with it a bit. The initial setup is quite daunting! There is a very long customization script that runs to get some things set up, and there is surely enough options to keep me dizzy for weeks. I'm going to be playing with it over the next few weeks to see how it works out and if I can notice any major differences in daily usage.



I also want to get much more into scripting. It's something I used to do quite frequently on Windows, ironically enough, where I've been using the incredibly powerful 4nt for ten years or more and find it very intuitive to write small batch files to do my work. But I've never felt comfortable enough with sh or bash to do the same on Unix / Linux. But now that PC-BSD is my everyday environment, I figure I must get better at it.



Addendum: Here is another excellent overview of the popular shells: UNIX shell differences




Friday, November 17, 2006

Build yer own

Okay, your hardware project for this weekend (and maybe I'll even extend the deadline through the upcoming US Thanksgiving holiday), is to build your own MP3 player:



Daisy_mp3




Thursday, November 16, 2006

And we have a winnah!

I was thrilled to get a sneak peek at the upcoming PC-BSD 1.3 Beta2, so I immediately gave it a try on my test machine. Mind you, this isn't even an "official" beta release (sort of a beta of a beta!), but it worked so incredibly well I wanted to talk about it anyway. You also have to realize my test machine is a real brute - old and weird. A 900mhz "overclocked" Celeron with 768mb of RAM, an onboard HighPoint Technologies UDMA66 controller, 3 different hard drives, with the main one being on the HPT controller. It gave various iterations of earlier PC-BSD CDs the fits. Sometimes the CD wouldn't work, sometimes it would install but not boot and so on. I did finally get the final PC-BSD v1.2 installer to work, but it took some tweaks.



And the first beta of 1.3 fared no better. In fact, it fared considerably worse, in that it immediately hung after finishing the boot screen. Oh, and one thing I've learned - burn the ISO image using no faster than about 10x or it won't work at all. The CD just won't read, even with the CD is was burned on. I wonder if this is an artifact of the PC-BSD ISO, as I don't remember having this problem with the myriad other install ISOs I've burned. And I had problems getting K3b to burn the CD, ending up with quite a number of coasters. This is with my new Panasonic DVD/CD burner. But once again, I think the defaults burned me, as it defaulted to DAO (which is, I think, "Disk At Once"). After failing a couple of times with that, I finally figured out what it meant by telling me that this sort of error is often fixed by selecting "TAO" ("Track At Once", I think). Well, that didn't help either, but RAW mode worked, and I'm sticking with that.



Anyway, I got a pointer to the Beta2 and finally got a working CD. This time, the install went off without a hitch. In fact, it could very well have been the easiest install I've ever done on this machine. No problems booting the CD and off I went. I selected one of the 40gb partitions on my 160gb hard drive that I use to play with (can you believe it, a 160gb hard drive to play with - I saw an ad for a 750(sic) gigabyte hard drive for around US$300 - unbelievable!), picked the default workstation installation and off it went. Due to the slow burn speed (10x) and the slow cd rom, it took about 45 minutes to pull everything off, but it finished. Then I rebooted and held my breath...



After a small tweak to my BootIT NG setup, I selected the 1.3 partition and booted right into it. It looks real nice and once again it found all my other local partitions, something many Linux distros seem to have a problem with. Samba didn't see my Windows network out of the box, but a guess that it was a firewall issue proved true after a little detective work. Seems PC-BSD 1.3 uses the OpenBSD pf as its firewall and I had to disable it to get Samba working via the # pfctl -d command. Then it found my network just fine. Cool!



So I really think they have a winner here. There was a long discussion in the middle of a thread over on the PC-BSD Forums about whether to stay with PC-BSD or change to FreeBSD. My thinking along those lines is that I don't see any reason why 90% of the people wouldn't use PC-BSD instead of FreeBSD. The only bad part to using PC-BSD is if you are a real control freak about what gets installed, and with PC-BSD the decision has been made for you, most notably in the choice of KDE as a X front end as opposed to GNOME. But seeing as the FreeBSD packages and ports are available to you, with the addition of the overrated PBIs specific to PC-BSD, you can set up your machine however you want. And with the installation choice of Server or Workstation, you can fine tune it a little more than ever before.



I suppose I should clarify my controversial remark that I think PBIs (PC-BSD's installation packager) is overrated. While I think PBIs are a good idea in theory, I don't think they work all that well in practice. In theory, a PBI contains everything a program could possibly need to run - all the support libraries, config files, etc. It all comes in one package and gets installed in one place, making for an isolated installation, easy to remove. But that theory quickly falls apart in practice, as it become very difficult, if not impossible, to sufficiently isolate a program from all its system dependencies. And unless that process is automated, PBIs rapidly become stale, as they are at least two steps removed from the original application, as most of them depend on the port or package getting updated first, then the PBI gets updated. It is a very tedious process and one very likely to get delayed or ignored. So I think the PBI advantage is overstated in most quicky reviews, but it's still a viable option for some applications.



But as far as a way to get up and running with FreeBSD, and keeping it up to date, nothing beats PC-BSD. And 1.3 Beta2 is a huge step forward, and one anyone interested in a Windows alternative owes it to themselves to check it out.



Here's the list of pre-installed packages, courtesy of the only port I installed on my vanilla 1.3 install, portmanager:




------------------------------------------------------------------------
Port Status Report
------------------------------------------------------------------------
00001 have:libiconv-1.9.2_2 /converters/libiconv CURRENT
00002 have:libsvg-0.1.4 /graphics/libsvg CURRENT
00003 have:pkg-config-0.21 /devel/pkg-config CURRENT
00004 have:fontconfig-2.3.2_6,1 /x11-fonts/fontconfig CURRENT
00005 have:png-1.2.12_1 /graphics/png CURRENT
00006 have:jpeg-6b_4 /graphics/jpeg CURRENT
00007 have:libxml2-2.6.26 /textproc/libxml2 CURRENT
00008 have:gmake-3.81_1 /devel/gmake CURRENT
00009 have:freetype2-2.2.1_1 /print/freetype2 CURRENT
00010 have:expat-2.0.0_1 /textproc/expat2 CURRENT
00011 have:libtool-1.5.22_2 /devel/libtool15 CURRENT
00012 have:gettext-0.14.5_2 /devel/gettext CURRENT
00013 have:mplayer-skins-1.1.2_5 /multimedia/mplayer-skins CURRENT
00014 have:imake-6.9.0 /devel/imake-6 CURRENT
00015 have:perl-5.8.8 /lang/perl5.8 CURRENT
00016 have:glib-2.12.4 /devel/glib20 CURRENT
00017 have:xorg-libraries-6.9.0 /x11/xorg-libraries CURRENT
00018 have:libdrm-2.0.2 /graphics/libdrm CURRENT
00019 have:qmake-3.3.6 /devel/qmake CURRENT
00020 have:libmng-1.0.9 /graphics/libmng CURRENT
00021 have:lcms-1.15_1,1 /graphics/lcms CURRENT
00022 have:libXft-2.1.7_1 /x11-fonts/libXft CURRENT
00023 have:eject-1.5_2 /sysutils/eject CURRENT
00024 have:libglut-6.4.2 /graphics/libglut CURRENT
00025 have:xorg-clients-6.9.0_3 /x11/xorg-clients built with OLD dependency: xterm-222
00026 have:xterm-220 /x11/xterm OLD available: xterm-222
00027 have:m4-1.4.4 /devel/m4 CURRENT
00028 have:atk-1.12.3 /accessibility/atk CURRENT
00029 have:libmodplug-0.8 /audio/libmodplug CURRENT
00030 have:nas-1.8 /audio/nas CURRENT
00031 have:qt-3.3.6_2 /x11-toolkits/qt33 OLD available: qt-3.3.6_3
00032 have:cups-base-1.2.2 /print/cups-base built with OLD dependency: gnutls-1.4.5
00033 have:tiff-3.8.2 /graphics/tiff CURRENT
00034 have:gnutls-1.4.4_1 /security/gnutls OLD available: gnutls-1.4.5
00035 have:libgcrypt-1.2.3_1 /security/libgcrypt CURRENT
00036 have:libgpg-error-1.4 /security/libgpg-error CURRENT
00037 have:dri-6.4.1,2 /graphics/dri CURRENT
00038 have:kdehier-1.0_11 /misc/kdehier CURRENT
00039 have:ghostscript-gnu-7.07_15 /print/ghostscript-gnu CURRENT
00040 have:gsfonts-8.11_2 /print/gsfonts CURRENT
00041 have:libusb-0.1.12_1 /devel/libusb CURRENT
00042 have:OpenEXR-1.2.2_1 /graphics/OpenEXR CURRENT
00043 have:libmad-0.15.1b_2 /audio/libmad CURRENT
00044 have:libaudiofile-0.2.6 /audio/libaudiofile CURRENT
00045 have:foomatic-filters-3.0.2_4 /print/foomatic-filters CURRENT
00046 have:xv-3.10a_6 /graphics/xv CURRENT
00047 have:libogg-1.1.3,3 /audio/libogg CURRENT
00048 have:kde-xdg-env-1.0_1,1 /misc/kde-xdg-env CURRENT
00049 have:pcre-6.7 /devel/pcre CURRENT
00050 have:pilot-link-0.12.1_1,1 /palm/pilot-link CURRENT
00051 have:denyhosts-2.5 /security/denyhosts CURRENT
00052 have:python24-2.4.3_3 /lang/python24 CURRENT
00053 have:libvorbis-1.1.2,3 /audio/libvorbis CURRENT
00054 have:portaudio-18.1_2 /audio/portaudio CURRENT
00055 have:unzip-5.52_2 /archivers/unzip CURRENT
00056 have:libsndfile-1.0.17 /audio/libsndfile CURRENT
00057 have:flac-1.1.2_1 /audio/flac CURRENT
00058 have:nasm-0.98.39,1 /devel/nasm CURRENT
00059 have:jackit-0.101.1_1 /audio/jack CURRENT
00060 have:arts-1.5.4,1 /audio/arts built with OLD dependency: qt-3.3.6_3
00061 have:openslp-1.2.1_2 /net/openslp CURRENT
00062 have:pth-2.0.7 /devel/pth CURRENT
00063 have:dirmngr-0.9.6_1 /security/dirmngr built with OLD dependency: openldap-client-2.3.30
00064 have:libassuan-0.6.10 /security/libassuan CURRENT
00065 have:libksba-1.0.0_1 /security/libksba CURRENT
00066 have:openldap-client-2.3.27 /net/openldap23-client OLD available: openldap-client-2.3.30
00067 have:kaffeine-mozilla-0.2_6 /multimedia/kaffeine-mozilla CURRENT
00068 have:kaffeine-0.8.2_1 /multimedia/kaffeine built with OLD dependency: qt-3.3.6_3
00069 have:gstreamer-plugins80-0.8.12_2,1 /multimedia/gstreamer-plugins80 CURRENT
00070 have:libxine-1.1.2_2 /multimedia/libxine built with OLD dependency: gnome-mime-data-2.4.3
00071 have:cdparanoia-3.9.8_8 /audio/cdparanoia CURRENT
00072 have:kdelibs-3.5.4_3 /x11/kdelibs3 OLD available: kdelibs-3.5.4_4
00073 have:gnomehier-2.2 /misc/gnomehier CURRENT
00074 have:gstreamer80-0.8.12_2 /multimedia/gstreamer80 CURRENT
00075 have:popt-1.7_1 /devel/popt CURRENT
00076 have:libdts-0.0.2_2 /multimedia/libdts CURRENT
00077 have:sdl-1.2.11,2 /devel/sdl12 CURRENT
00078 have:intltool-0.35.0 /textproc/intltool CURRENT
00079 have:gnome-mime-data-2.4.2_2 /misc/gnome-mime-data OLD available: gnome-mime-data-2.4.3
00080 have:speex-1.0.5_1,1 /audio/speex CURRENT
00081 have:libdvdread-0.9.4_1 /multimedia/libdvdread built with OLD dependency: libdvdcss-1.2.9_2
00082 have:libfame-0.9.1_2 /multimedia/libfame CURRENT
00083 have:libcdio-0.77_1 /sysutils/libcdio built with OLD dependency: libcddb-1.2.2
00084 have:vcdimager-0.7.23_3 /multimedia/vcdimager CURRENT
00085 have:libtheora-1.0.a7 /multimedia/libtheora CURRENT
00086 have:samba-libsmbclient-3.0.23c /net/samba-libsmbclient CURRENT
00087 have:aalib-1.4.r5_2 /graphics/aalib CURRENT
00088 have:ImageMagick-6.2.9.8 /graphics/ImageMagick CURRENT
00089 have:esound-0.2.36_1 /audio/esound CURRENT
00090 have:gconf2-2.16.0 /devel/gconf2 built with OLD dependency: openldap-client-2.3.30
00091 have:gnome-vfs-2.16.1 /devel/gnome-vfs OLD available: gnome-vfs-2.16.2_1
00092 have:gtk-2.10.6_1 /x11-toolkits/gtk20 OLD available: gtk-2.10.6_2
00093 have:libbonobo-2.16.0 /devel/libbonobo OLD available: libbonobo-2.16.0_1
00094 have:libIDL-0.8.7 /devel/libIDL CURRENT
00095 have:linc-1.0.3_6 /net/linc CURRENT
00096 have:ORBit2-2.14.3 /devel/ORBit2 CURRENT
00097 have:pango-1.14.7 /x11-toolkits/pango built with OLD dependency: cairo-1.2.6
00098 have:xorg-fonts-truetype-6.9.0 /x11-fonts/xorg-fonts-truetype CURRENT
00099 have:xorg-fonts-encodings-6.9.0_1 /x11-fonts/xorg-fonts-encodings CURRENT
00100 have:hicolor-icon-theme-0.9_1 /misc/hicolor-icon-theme OLD available: hicolor-icon-theme-0.9_2
00101 have:libart_lgpl2-2.3.17_1 /graphics/libart_lgpl OLD available: libart_lgpl-2.3.17_1
00102 have:aspell-0.60.4_4 /textproc/aspell CURRENT
00103 have:mDNSResponder-108 /net/mDNSResponder CURRENT
00104 have:libidn-0.6.7 /dns/libidn OLD available: libidn-0.6.8
00105 have:jasper-1.701.0_1 /graphics/jasper CURRENT
00106 have:libthai-0.1.5_1 /devel/libthai built with OLD dependency: autoconf-2.59_2
00107 have:libxslt-1.1.17 /textproc/libxslt CURRENT
00108 have:fam-2.6.10_1 /devel/fam built with OLD dependency: autoconf-2.59_2
00109 have:bison-1.75_2,1 /devel/bison CURRENT
00110 have:svgalib-1.4.3_5 /graphics/svgalib CURRENT
00111 have:p5-XML-Parser-2.34_2 /textproc/p5-XML-Parser CURRENT
00112 ----:libdvdcss-1.2.9_2 /multimedia/libdvdcss MISSING
00113 have:libcddb-1.2.1_1 /audio/libcddb OLD available: libcddb-1.2.2
00114 ----:autoconf-2.59_2 /devel/autoconf259 MISSING
00115 have:mpeg2codec-1.2_1 /multimedia/mpeg2codec CURRENT
00116 have:libfpx-1.2.0.12 /graphics/libfpx CURRENT
00117 have:jbigkit-1.6 /graphics/jbigkit CURRENT
00118 have:libltdl-1.5.22 /devel/libltdl15 CURRENT
00119 have:shared-mime-info-0.19 /misc/shared-mime-info CURRENT
00120 have:hal-0.5.8.20060917_1 /sysutils/hal OLD available: hal-0.5.8.20061107
00121 have:avahi-0.6.14 /net/avahi OLD available: avahi-0.6.15
00122 have:cairo-1.2.4 /graphics/cairo OLD available: cairo-1.2.6
00123 have:bitstream-vera-1.10_2 /x11-fonts/bitstream-vera CURRENT
00124 ----:automake-1.5_2,1 /devel/automake15 MISSING
00125 ----:automake-1.9.6 /devel/automake19 MISSING
00126 have:help2man-1.36.4_1 /misc/help2man CURRENT
00127 have:pciids-20060929 /misc/pciids OLD available: pciids-20061026
00128 have:cdrtools-2.01_5 /sysutils/cdrtools built with OLD dependency: libcddb-1.2.2
00129 have:dmidecode-2.8 /sysutils/dmidecode CURRENT
00130 ----:gnome_subr-1.0 /sysutils/gnome_subr MISSING
00131 have:policykit-0.1.20060514_2 /sysutils/policykit OLD available: policykit-0.1.20060514_3
00132 ----:libvolume_id-0.71.0 /devel/libvolume_id MISSING
00133 have:libdaemon-0.10_1 /devel/libdaemon CURRENT
00134 have:dbus-glib-0.71 /devel/dbus-glib OLD available: dbus-glib-0.72
00135 have:gdbm-1.8.3_2 /databases/gdbm OLD available: gdbm-1.8.3_3
00136 ----:autoconf-2.53_3 /devel/autoconf253 MISSING
00137 have:p5-gettext-1.05_1 /devel/p5-Locale-gettext CURRENT
00138 have:dbus-0.93_2 /devel/dbus OLD available: dbus-1.0.0
00139 have:fftw3-3.1.2 /math/fftw3 CURRENT
00140 have:localedata-5.4 /misc/localedata CURRENT
00141 have:lua-5.1.1_2 /lang/lua CURRENT
00142 have:kdeaddons-konq-plugins-3.5.4 /misc/konq-plugins built with OLD dependency: qt-3.3.6_3
00143 have:kdebase-3.5.4_4 /x11/kdebase3 built with OLD dependency: qt-3.3.6_3
00144 have:kdebase-kompmgr-3.5.4 /x11-wm/kompmgr built with OLD dependency: qt-3.3.6_3
00145 have:artswrapper-1.5.3 /audio/artswrapper CURRENT
00146 have:cyrus-sasl-2.1.22 /security/cyrus-sasl2 CURRENT
00147 have:bsdstats-4.8_1 /sysutils/bsdstats OLD available: bsdstats-4.8_2
00148 have:gtar-1.15.1_2 /archivers/gtar OLD available: gtar-1.16
00149 have:bash-3.1.17 /shells/bash CURRENT
00150 have:gimp-print-4.2.7_2 /print/gimp-print CURRENT
00151 have:libijs-0.35_1 /print/libijs CURRENT
00152 have:kdegames-3.5.4 /games/kdegames3 built with OLD dependency: qt-3.3.6_3
00153 have:py24-gobject-2.12.2 /devel/py-gobject CURRENT
00154 have:xmlcatmgr-2.2 /textproc/xmlcatmgr CURRENT
00155 have:ruby18-bdb1-0.2.2 /databases/ruby-bdb1 built with OLD dependency: ruby-1.8.5_4,1
00156 have:ruby-1.8.5_3,1 /lang/ruby18 OLD available: ruby-1.8.5_4,1
00157 have:foomatic-db-engine-20060922,1 /print/foomatic-db-engine OLD available: foomatic-db-engine-20061031,1
00158 have:curl-7.15.5 /ftp/curl OLD available: curl-7.15.5_1
00159 have:kdeartwork-3.5.4_2 /x11-themes/kdeartwork3 built with OLD dependency: qt-3.3.6_3
00160 have:py24-gtk-2.10.3 /x11-toolkits/py-gtk2 built with OLD dependency: gtk-2.10.6_2
00161 have:py24-cairo-1.2.2 /graphics/py-cairo built with OLD dependency: cairo-1.2.6
00162 have:py24-numeric-24.2 /math/py-numeric CURRENT
00163 have:libglade2-2.6.0_2 /devel/libglade2 built with OLD dependency: gtk-2.10.6_2
00164 have:glib-1.2.10_12 /devel/glib12 CURRENT
00165 have:kdenetwork-kopete-0.11_1 /net-im/kopete OLD available: kdenetwork-kopete-0.11_2
00166 have:qca-tls-1.0_1 /security/qca-tls built with OLD dependency: qt-3.3.6_3
00167 have:ttmkfdir-3.0.9,1 /x11-fonts/ttmkfdir CURRENT
00168 have:neon-0.25.5 /www/neon CURRENT
00169 have:py24-sip-4.4.5 /devel/py-sip CURRENT
00170 have:cmpsfont-1.0_5 /print/cmpsfont CURRENT
00171 have:p5-type1inst-0.6.1_2 /x11-fonts/p5-type1inst CURRENT
00172 have:kdeadmin-3.5.4 /sysutils/kdeadmin3 built with OLD dependency: qt-3.3.6_3
00173 have:samba-3.0.23c_2,1 /net/samba3 built with OLD dependency: openldap-client-2.3.30
00174 have:t1lib-5.1.0_1,1 /devel/t1lib CURRENT
00175 have:fribidi-0.10.7 /converters/fribidi CURRENT
00176 have:open-motif-2.2.3_2 /x11-toolkits/open-motif CURRENT
00177 have:taglib-1.4_2 /audio/taglib CURRENT
00178 have:gstreamer-0.10.10 /multimedia/gstreamer OLD available: gstreamer-0.10.10_1
00179 have:compat5x-i386-5.4.0.8_7 /misc/compat5x CURRENT
00180 have:csup-20060318 /net/csup CURRENT
00181 have:xorg-server-6.9.0_5 /x11-servers/xorg-server CURRENT
00182 have:libgmp-4.2.1_1 /math/libgmp4 CURRENT
00183 have:gnupg-devel-1.9.22 /security/gnupg-devel CURRENT
00184 have:gnupg-1.4.5_1 /security/gnupg built with OLD dependency: curl-7.15.5_1
00185 have:akode-plugins-resampler-2.0.1,1 /audio/akode-plugins-resampler CURRENT
00186 have:libsamplerate-0.1.2_2 /audio/libsamplerate CURRENT
00187 have:akode-plugins-oss-2.0.1,1 /audio/akode-plugins-oss CURRENT
00188 have:poppler-0.5.4_1 /graphics/poppler OLD available: poppler-0.5.4_2
00189 have:poppler-data-0.1 /graphics/poppler-data CURRENT
00190 have:libpaper-1.1.14.3_1 /print/libpaper CURRENT
00191 have:libsvg-cairo-0.1.6_2 /graphics/libsvg-cairo built with OLD dependency: cairo-1.2.6
00192 have:xorg-fonts-miscbitmaps-6.9.0_1 /x11-fonts/xorg-fonts-miscbitmaps CURRENT
00193 have:kdepim-3.5.4_1 /deskutils/kdepim3 built with OLD dependency: qt-3.3.6_3
00194 have:gpgme-1.1.2_1 /security/gpgme CURRENT
00195 have:libmal-0.42_1 /palm/libmal CURRENT
00196 have:gstreamer-plugins-0.10.10,2 /multimedia/gstreamer-plugins built with OLD dependency: gstreamer-0.10.10_1
00197 have:v4l_compat-1.0.20060801 /multimedia/v4l_compat CURRENT
00198 have:liboil-0.3.9_1 /devel/liboil CURRENT
00199 have:dejavu-2.11 /x11-fonts/dejavu CURRENT
00200 have:xpdf-3.01_3 /graphics/xpdf CURRENT
00201 have:idesk-0.7.5 /x11/idesk built with OLD dependency: autoconf-2.59_2
00202 have:imlib2-20060926,1 /graphics/imlib2 OLD available: imlib2-20060926_1,1
00203 have:libungif-4.1.4_1 /graphics/libungif CURRENT
00204 have:libid3tag-0.15.1b /audio/libid3tag CURRENT
00205 have:foomatic-db-20060922 /print/foomatic-db OLD available: foomatic-db-20061031
00206 have:texinfo-4.8_3 /print/texinfo CURRENT
00207 have:cups-pstoraster-8.15 /print/cups-pstoraster CURRENT
00208 have:akode-plugins-mpeg-2.0.1,1 /audio/akode-plugins-mpeg CURRENT
00209 have:amspsfnt-1.0_4 /print/amspsfnt CURRENT
00210 have:kdegraphics-3.5.4 /graphics/kdegraphics3 built with OLD dependency: qt-3.3.6_3
00211 ----:teTeX-base-3.0_10 /print/teTeX-base MISSING
00212 have:poppler-qt-0.5.4 /graphics/poppler-qt built with OLD dependency: qt-3.3.6_3
00213 ----:teTeX-texmf-3.0_5 /print/teTeX-texmf MISSING
00214 ----:tex-texmflocal-1.9 /print/tex-texmflocal MISSING
00215 have:texi2html-1.76_1,1 /textproc/texi2html CURRENT
00216 have:libwww-5.4.0_3 /www/libwww CURRENT
00217 have:gd-2.0.33_4,1 /graphics/gd CURRENT
00218 have:portaudit-0.5.11 /security/portaudit CURRENT
00219 have:zip-2.32 /archivers/zip CURRENT
00220 have:net-snmp-5.2.3_3 /net-mgmt/net-snmp built with OLD dependency: autoconf-2.59_2
00221 have:akode-plugins-xiph-2.0.1,1 /audio/akode-plugins-xiph CURRENT
00222 have:kdeutils-3.5.4 /misc/kdeutils3 built with OLD dependency: qt-3.3.6_3
00223 have:kdeaccessibility-3.5.4 /accessibility/kdeaccessibility built with OLD dependency: qt-3.3.6_3
00224 have:lame-3.97_1 /audio/lame CURRENT
00225 have:kde-windeco-crystal-1.0.2 /x11-themes/kde-windeco-crystal built with OLD dependency: qt-3.3.6_3
00226 have:qscintilla-1.6 /x11-toolkits/qscintilla built with OLD dependency: qt-3.3.6_3
00227 have:kde-style-lipstik-2.2_1 /x11-themes/kde-style-lipstik built with OLD dependency: qt-3.3.6_3
00228 have:zh-ttfm-0.9.5_1 /chinese/ttfm CURRENT
00229 have:py24-qt-3.16 /x11-toolkits/py-qt built with OLD dependency: qt-3.3.6_3
00230 have:py24-kde-3.15.2,1 /x11-toolkits/py-kde built with OLD dependency: qt-3.3.6_3
00231 have:kdenetwork-3.5.4 /net/kdenetwork3 built with OLD dependency: qt-3.3.6_3
00232 have:cups-smb-backend-1.0 /print/cups-smb-backend CURRENT
00233 have:djbfft-0.76_2 /math/djbfft CURRENT
00234 have:akode-plugins-mpc-2.0.1,1 /audio/akode-plugins-mpc CURRENT
00235 have:akode-2.0.1,1 /audio/akode CURRENT
00236 have:fastest_cvsup-0.2.9_4 /sysutils/fastest_cvsup CURRENT
00237 have:kdemultimedia-3.5.4_1 /multimedia/kdemultimedia3 built with OLD dependency: qt-3.3.6_3
00238 have:x264-0.0.20060926_2 /multimedia/x264 OLD available: x264-0.0.20061030
00239 have:gpac-libgpac-0.4.2.r2,1 /multimedia/gpac-libgpac CURRENT
00240 have:scrollkeeper-0.3.14_5,1 /textproc/scrollkeeper built with OLD dependency: docbook-xsl-1.71.1_1
00241 have:docbook-sk-4.1.2_3 /textproc/docbook-sk CURRENT
00242 have:docbook-xsl-1.70.1 /textproc/docbook-xsl OLD available: docbook-xsl-1.71.1_1
00243 have:docbook-xml-4.2_1 /textproc/docbook-xml CURRENT
00244 have:sdocbook-xml-4.1.2.5_2 /textproc/sdocbook-xml OLD available: sdocbook-xml-1.1,1
00245 have:chmlib-0.38 /misc/chmlib CURRENT
00246 have:xvid-1.1.0,1 /multimedia/xvid CURRENT
00247 have:gtk-1.2.10_17 /x11-toolkits/gtk12 CURRENT
00248 have:gtkglarea-1.2.3_1 /x11-toolkits/gtkglarea CURRENT
00249 have:gdk-pixbuf-0.22.0_5 /graphics/gdk-pixbuf CURRENT
00250 have:libxml-1.8.17_4 /textproc/libxml CURRENT
00251 have:imlib-1.9.15_4 /graphics/imlib CURRENT
00252 have:ORBit-0.5.17_3 /devel/ORBit CURRENT
00253 have:gnome-libs-1.4.2_6 /x11/gnome-libs CURRENT
00254 have:gnomecanvas-0.22.0_5 /graphics/gnomecanvas CURRENT
00255 have:gnome-print-0.37_3 /print/gnome-print CURRENT
00256 have:guile-1.6.8 /lang/guile CURRENT
00257 have:oaf-0.6.10_4 /devel/oaf CURRENT
00258 have:bonobo-1.0.22_3 /devel/bonobo CURRENT
00259 have:gconf-1.0.9_9 /devel/gconf CURRENT
00260 have:libgda-0.2.96_5 /databases/libgda built with OLD dependency: gdbm-1.8.3_3
00261 have:gnome-db-0.2.96_6 /databases/gnome-db CURRENT
00262 have:libglade-0.17_4 /devel/libglade CURRENT
00263 have:kchmviewer-2.6 /deskutils/kchmviewer built with OLD dependency: qt-3.3.6_3
00264 have:portupgrade-2.1.3.3_1,2 /sysutils/portupgrade built with OLD dependency: ruby-1.8.5_4,1
00265 have:gkrellm-2.2.9_1 /sysutils/gkrellm2 OLD available: gkrellm-2.2.10
00266 have:desktopbsd-tools-1.1 /sysutils/desktopbsd-tools built with OLD dependency: xterm-222
00267 have:boxtools-0.70.1 /x11-wm/boxtools CURRENT
00268 have:fluxbox-0.1.14_2 /x11-wm/fluxbox CURRENT
00269 have:ezm3-1.2_1 /lang/ezm3 CURRENT
00270 have:libgnome-2.16.0 /x11/libgnome built with OLD dependency: gnome-mime-data-2.4.3
00271 have:libgnomecanvas-2.14.0_2 /graphics/libgnomecanvas built with OLD dependency: gtk-2.10.6_2
00272 have:libbonoboui-2.16.0 /x11-toolkits/libbonoboui built with OLD dependency: gnome-mime-data-2.4.3
00273 have:gtk-qt-engine-0.7_3 /x11-themes/gtk-qt-engine OLD available: gtk-qt-engine-0.7_4
00274 have:cvsup-without-gui-16.1h_2 /net/cvsup-without-gui CURRENT
00275 have:python-2.4.3,1 /lang/python CURRENT
00276 have:mplayer-0.99.8_5 /multimedia/mplayer built with OLD dependency: win32-codecs-3.1.0.p8_1,1
00277 ----:win32-codecs-3.1.0.p8_1,1 /multimedia/win32-codecs MISSING
00278 have:zh-arphicttf-2.11_1 /chinese/arphicttf CURRENT
00279 have:ja-vlgothic-20061026 /japanese/vlgothic CURRENT
00280 have:portmanager-0.4.1_6 /sysutils/portmanager CURRENT



Wednesday, November 15, 2006

Locate This!

I can never remember how to update my locate database. locate is a very useful little command, which searches your hard drive for any file or path name that contains the letters you ask for. It works much faster than doing find because it builds a database of filenames and searches that rather than actually running around the disk hierarchy.



But it requires that the database be kept up to date. This is one case where the Linux world has it all over the FreeBSD world. The GNU locate updates itself just by passing it the '-u' flag. But the FreeBSD locate doesn't do this. Rather it has a couple of mysterious command files that are carefully hidden away in the bowels of FreeBSD. The main file, as documented in the man page, is /etc/periodic/weekly/310.locate. This is one of the periodic commands that is run, but it, for some reason, is only run weekly, which doesn't seem to me to be often enough. I've moved it to be /etc/periodic/daily/305.locate, to get it to run every night. Not sure if that's a good idea, but I like my /var/db/locate.database to be more up to date! Oh, and I had to edit the /etc/periodic.conf file to move it up to a daily ritual. This file overides the /etc/defaults/periodic.conf file, so it now includes:




# Make the update locate db script run nightly

# 305.locate
daily_locate_enable="YES" # Update locate *daily*!


The other option is the script /usr/libexec/locate.updatedb. If you run this as root, it complains that it would expose every file on the computer and you probably don't want to do that. The 310.locate script runs it as "nobody", which only picks up files and directories that are world readable, which is less of a security threat. And you can't run it unless you are root anyway, because root can't update the database. So it is easier to just run the periodic script if you need to update it on the fly. But if I run this every night, that should be enough.




Tuesday, November 14, 2006

Fox Flashing

Another dragon slayed! This time, I really needed to get Flash working in my Firefox browser. Mind you, I'm not crazy about it, and as I've mentioned in the past, I don't mind running another program temporarily to use Flash. It is just too abused by advertisers, as it is a good way to get around popup blockers. And the annoying blinking ads make me want to scream!



But if I wanted to listen to music or watch videos or even get the weather, I needed to have Flash running. The easiest way to do this seemed to be to install the www/linux-firefox port, as purportedly the Flash installer worked under FreeBSD's pretty solid Linux emulation layer. But it felt like it was going to be complicated, so I held off.



The I realized just how much I missed the Google Toolbar, especially its spellchecking. It wouldn't install in FreeBSD, but I did find one site that installed it in another Linux by removing the "platform specification" tag from the install.rdf file found in the XPI installer. So I tried to modify that, but the installer complained about "signing could not be verified", so it must have some kind of checksum for the file and noticed it had been changed. So that didn't work.



So I bit the bullet and installed the linux-firefox port. I was very afraid it was going to go off and pull in dozens of other ports and take all day to build, but it actually went very smoothly and finished in about 30 minutes. Here's the packages portmanager said it wanted:




------------------------------------------------------------------------
Port Status Report
------------------------------------------------------------------------
00001 ----:linux-firefox-2.0 /www/linux-firefox MISSING
00002 ----:linux-gtk2-2.6.10 /x11-toolkits/linux-gtk2 MISSING
00003 ----:linux-atk-1.9.1 /accessibility/linux-atk MISSING
00004 ----:linux-pango-1.8.1 /x11-toolkits/linux-pango MISSING
00005 ----:linux-glib2-2.6.6 /devel/linux-glib2 MISSING
00006 have:linux-fontconfig-2.2.3_5 /x11-fonts/linux-fontconfig CURRENT
00007 ----:linux-hicolor-icon-theme-0.5_1 /x11-themes/linux-hicolor-icon-theme MISSING
00008 have:linux_base-fc-4_9 /emulators/linux_base-fc4 CURRENT
00009 have:rpm-3.0.6_13 /archivers/rpm CURRENT
00010 have:linux-jpeg-6b.34 /graphics/linux-jpeg CURRENT
00011 ----:linux-png-1.2.8_2 /graphics/linux-png MISSING
00012 ----:linux-tiff-3.7.1 /graphics/linux-tiff MISSING
00013 have:linux-xorg-libs-6.8.2_5 /x11/linux-xorg-libs CURRENT
00014 have:linux-expat-1.95.8 /textproc/linux-expat CURRENT
00015 have:hicolor-icon-theme-0.9_2 /misc/hicolor-icon-theme CURRENT
00016 have:gmake-3.81_1 /devel/gmake CURRENT
00017 have:automake-1.4.6_2 /devel/automake14 CURRENT
00018 have:autoconf-2.13.000227_5 /devel/autoconf213 CURRENT
00019 have:libtool-1.5.22_2 /devel/libtool15 CURRENT
00020 have:popt-1.7_1 /devel/popt CURRENT
00021 have:gettext-0.14.5_2 /devel/gettext CURRENT
00022 have:perl-5.8.8 /lang/perl5.8 CURRENT
00023 have:m4-1.4.4 /devel/m4 CURRENT
00024 have:libiconv-1.9.2_2 /converters/libiconv CURRENT


So not too bad, really. Eight missing packages and all built without a problem. So I jump back into X and run 'linux-firefox'. It turns out to be Firefox 2.0, which was a pleasant surprise and it picked up most of my extensions without a problem. Only my Colorful Tabs extension wasn't up to date, and even that had one ready to go. And it looks pretty nice, a little better than my native version did, even after my tweaks.



So I head on over the Pandora and click on the "Missing Plugin" box. It skips over to Macromedia and downloads the Flash player, which installs without a hitch. Back to Pandora and now I have a working Pandora music player. And now YouTube.com works fine as does pretty much everything else. I am psyched!



Google Toolbar installed just fine too, although ironically enough, with Firefox 2.0's builtin spell checker, I don't really need it as much as I did before!



Monday, November 13, 2006

Under A Microscope

Comprehensive review of PC-BSD by frequent PC-BSD forums contributeer Terry. He goes over all the pieces found in PC-BSD, which is a very nice setup, trust me!



sas_spidey01: PC-BSD Users Review




Sunday, November 12, 2006

Brand New Babies

A couple of new FreeBSD family members have shown up for download. FreeBSD 6.2 BETA3 was just announced. I haven't tried any of the 6.2 releases, as I'm hoping the next release of PC-BSD will incorporate it, although I couldn't get PC-BSD 1.3 Beta1 to install on my test machine:



Development Release: FreeBSD 6.2-BETA3


And my favorite FreeBSD-based LiveCD has just announce a new beta as well. FreeSBIE has announce FreeSBIE 2.0 Beta is now available for download. I'll need to do this one too. I like having a nice Live FreeBSD around.



Development Release: FreeSBIE 2.0 BETA.




Saturday, November 11, 2006

Securely Tied

Very nice tutorial on getting going with ssh, the secure shell. ssh lets you log into remote computers, while encrypting the communications so network "sniffers" can't decode what you're trying to do. But it does lots more than that, including nicely forwarding X so that you can run X clients locally from remote computers. This page also shows you how to set up the key files so you don't even need to type in a password. After spending a few minutes getting this set up, I was very happy! Now I just have to remember to start out by typing $ ssh-agent startx when I fire up my X, so that the agent is ready and willing to answer calls for authorization.




Getting started with SSH - Kimmo Suominen

Added note: Just found out how to make it so I don't have to remember to using 'ssh-agent' when starting KDE. According to the FAQ, I just need to add script to ~/.kde/env/ and it will fire it up. So here is my script:



#!/bin/sh
eval `ssh-agent -s`


And here's another couple of nice pages on ssh and ssh-agent:



SSH User Identities

SSH and ssh-agent



Friday, November 10, 2006

sudo Humor





Software Sorcery

I spent some time last night installing Trac (a project wiki/source viewing/issue tracking system) and Subversion, a version control system on my FreeBSD server. The process went pretty smoothly - once again, the pile o' praise I heap on the ports system continues to grow. I would still like more info when an options dialog pops up, so I can make better decisions, but besides that, it went like clockwork.



Personally, I'm a Perforce man when it coms to SCCS. I've been using it for years, and really feel like it is an excellent client/server system. The support has always been phenomenal and I've brought it along to several jobs since I first began using it. The biggest problem with Perforce is that it is incredibly expensive. It is a real "enterprise solution" and charges as such. It cost US$800 for each license! They do have a free evaluation, where you can create two users but only five clients (local views of the source tree), which is too limited for any kind of real usage. I used to have a single developer license for it, but I don't have that any more. They also have a free version for Open Source projects, but as I'm not sure where, if anywhere, we're going with our little project, it doesn't seem like it fits.



So the next option looks to be Subversion, an open source CVS replacement, that is also supported by Trac "out of the box". It was reasonably easy to set up, although getting it "locked down" was hard to figure out. I wish these things would be installed with no access and then force me to open them up, rather than the other way around. I do like the idea of the SSL that is built into svnserve, although it seemed complicated to set up, so I passed on that for now. It also occured to me that Subversion doesn't let you know when another developer is working on code, as you "check out" the entire source tree when you begin work and then just "commit" your changes to it. I like being able to see in Perfore when someone else has a file checked out, so I know if I should ask about it first, or just be sure to get my changes checked in quickly and force the other developer to deal with merges!-)



The devel/subversion-python port installed /usr/local/etc/rc.d/svnserve.sh, which is the spot where startup scripts are supposed to go, so always look there when you install a new server. For some reason, the test install on my PC-BSD called the file just 'svnserve'. Odd. Anyway, if you look in that file, it graciously tells you the options that need to be set in the /etc/rc.conf file in order for the server to run and to get going at start up. It says:




# Add the following line to /etc/rc.conf to enable SVNServe:
#
# svnserve_enable="YES"
# # optional
# svnserve_flags="-d --listen-port=3690"
# svnserve_data="/usr/local/repositories"
# svnserve_user="svn"
# svnserve_group="svn"


So I put my own values in there and started it up. I had to add "--listen-hostname=amazingdev.com" to the svnserve_flags line, as my machine hosts several domains and the connection didn't work at first. It must verify a hostname or something. I ran the svnadmin create command to initially set up the "repository" (I like Perforce's nomenclature of "depot" better - sounds less like an anal medicine:-), but it's off to the races!



Then I installed www/trac, which seems like a nice integrated web-based project site. It includes a wiki area, a way to browse syntactically colored source files in your Subversion repository, as well as bug tracking (it calls them "tickets"). It also keeps track of all changes and allows you to create milestones. Once again, the installation went smoothly, with a single prompt asking if I wanted to use Silvercity for syntax highlighting. Luckily, I had looked at the web site and noticed a caveat warning that Python highlighting doesn't work with the 0.9.6 version of Silvercity, which is what is currently in the ports. Seeing as textutils/enscript-letter works just as well, albeit perhaps slower but with more options, it doesn't seem like a big loss to not add it in, as I'm not sure you can get the 0.9.5 version recommended on the Trac website.



The one thing the port didn't do was to put a startup script for the builtin tracd server into the /usr/local/etc/rc.d folder, like the Subversion port did. Not sure why it didn't, as there isn't a real downside to putting one there, as it won't run until the admin modifies /etc/rc.conf. Maybe the port maintainer uses the Apache mod_python version of Trac? Anyway, using the svnserve.sh file as a model, I created my own tracd.sh file:




#!/bin/sh
#
# tracd.sh for rc.d usage (c) 2006 Jonathan Arnold
# $Id$

# PROVIDE: tracd
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable Tracd:
#
# tracd_enable="YES"
# # optional
# tracd_flags="-d --listen-port=3690"
# tracd_data="/usr/local/path/to/project"

. "/etc/rc.subr"

# Set some defaults
tracd_enable=${tracd_enable:-"NO"}
tracd_flags=${tracd_flags:-"-d --port=8080 --pidfile=/var/run/tracd.pid "}
tracd_data=${tracd_data:-"/usr/local/trac"}
tracd_pidfile=${tracd_pidfile-"/var/run/tracd.pid"}

name="tracd"
rcvar=`set_rcvar`
load_rc_config $name
command=/usr/local/bin/tracd
command_args=" ${tracd_data}"
command_interpreter="/usr/local/bin/python"
pidfile="${tracd_pidfile}"

run_rc_command "$1"


I had to modify a few things from the svnserve.sh file. Most importantly, tracd is a python script, so you need to add the "command_interpreter" line, as the standard startup/shutdown commands look at the name of the process attached to the pid and if it doesn't match 'name', it won't kill it. But it will first check for 'command_interpreter' to check against. I also added the --pidfile option to the command arguments, so tracd would write out its PID to a standard place. And then tell the standard scripts where this is. But other than that, it was pretty easy and now I have a script to start up the builtin trac server by adding tracd_enable="YES" to my /etc/rc.conf file.



Thursday, November 9, 2006

We've got another live one

Another entry into the FreeBSD LiveCD pool. This one is called TrueBSD and has the excellent new feature whereby you can actually eject the boot CD and still run the OS. Now that's independence!



Official Web-site operation system TrueBSD






Monday, November 6, 2006

Permission Granted

Informative and very complete page explaining just what those pesky Unix file permissions bits mean. Carefully details each bit, along with some history and other tidbits. Looks like a nice wiki in general.



Unix Permissions



Sunday, November 5, 2006

Cleaning up after yourself

A few interesting things came up on the .ports mailing list vis-a-vis cleaning up the ports. After you've done a make in the ports, a "work" folder is created. In here, the package is unzipped and then built, so there's a bunch of mostly wasted space, because chances are you don't care about the intermediary files. So if you do a # make clean after you've done the # make install, you'll clean up these temporary files.



But what if you forget to do the make clean? Or you don't normally do it, but at some point you want to clean it all up? JR Lenz posted the following shell script to do this for you:




#!/bin/sh
#
# remove_work.sh
# removes nasty, disk-hogging source code
# and compiled objects from ports tree
#
# J. Ralf Lenz
#

for i in `ls -Ad *`
do
if [ -d /usr/ports/$i ]; then
cd $i
DIR=`pwd`
DESIRED_PATH=/usr/ports/$i
if [ "${DIR}" = "${DESIRED_PATH}" ]; then
for j in `ls -Ad *`
do
if [ -d /usr/ports/$i/$j ]; then
cd /usr/ports/$i/$j
if [ -d /usr/ports/$i/$j/work ]; then
CUR_DIR=`pwd`
echo "Removing ${CUR_DIR}/work..."
rm -rf work
fi
cd /usr/ports/$i
fi
done
cd /usr/ports
fi
fi
done


While this is a usefully informative script, this also does the trick, albeit in a more arbitrary fashion:



# rm -rf /usr/ports/*/*/work


Boom - find all the port subfolders called 'work' and just remove them.



You can also change where the port system puts the work files by defining the WRKDIRPREFIX in /etc/make.conf (you can see other interesting variables for make.conf in the file /usr/ports/Mk/bsd.port.mk). WRKDIRPREFIX is explained thusly:



# WRKDIRPREFIX	- The place to root the temporary working directory
# hierarchy.


So if you don't want it to go into the port subfolder, just set it in /etc/make.conf. So to put the work folders into /usr/obj, add this:



WRKDIRPREFIX=/usr/obj

And, lastly, don't forget the 'portsclean' command. I guess the magic flags for this command would be:



# portsclean -CDLP

I don't see portsclean in the online man pages, so I'm not sure if it is a standard command or came in with some other port. As I generally use portmanager, which I believe does a clean, I don't worry about it. And if I do a make, I do a # make all && make install && make clean command.





Saturday, November 4, 2006

Flashy Firefox

One of the most common complaints about FreeBSD is that Flash doesn't work "out of the box", with either Firefox or Opera. For me, that's not such a bad thing generally, as I find 90% of the Flash usage to be for annying blinking ads. But there a few sites that require it, including most video sites for some reason. So on my old Windows box, I never did install it on Firefox, my main browser, but when I needed to open a Flash site, I would just use the extension to either open IE in a tab or a standalone Opera. Worked very nicely.



But that doesn't work on BSD, because there isn't a running Flash. There's plenty of pages out there that purport to get it to run, usually using the Linux emulation layer, linux-firefox and the Flash plugin, although the current Flash version is quite old and has some serious security holes. But here's Yet Another page that shows you how to do it, if you feel the need. For me, I just swap to my Windows box if I really really need to get Flash'ed.



Flash Plugin on FreeBSD



And here's another one: http://www.jail.se/freebsd.html



Here is a very long thread on the PC-BSD forums on how to get it to run on PC-BSD:



Flash7 with FreeBSD Firefox 1.5





Friday, November 3, 2006

Fire On BSD

Someone is porting the FireGL ATI Linux driver to BSD, which would be a wonderful thing if it were to come off. I'll have to give this a try.



ATI on FREEBSD FireGL Linux Driv



Monster Mash

Whatever you do, don't try this at home! I was trying to rebuild something (it was so long ago I don't even remember what it was!), when I interrupted the process because I needed to reboot. That's one thing with ports - you go to build something and it needs something else and before you know it, you're an hour into the building process and no idea how much longer it is going to take. So I killed the portmanager build, logged out and rebooted.



Well, KDE wouldn't start up, complaining of a missing library. Since I tend to muck about a great deal with my system, I don't have a graphical login screen (gdm or kdm). I log in and then run startx. That way, if my X setup is screwed up, I at least can easily make changes and get logged in. And in this case, KDE complained. So I thought, well, I just rebuild KDE. What was I thinking? The simple command :



# portmanager x11/kde -l

began its work late Wednesday evening and didn't finish until this (Friday!) morning. And even then, important pieces like kdelibs didn't rebuild, for reasons I don't know. One problem I was having was that my machine was freezing after a very short time. I suspected the special 80x60 text mode I had the text console in, as I had noticed if I swapped to it while running X (via the Ctrl-Alt-F2 keystroke), my machine would freeze after a bit. Sure enough, after I put it back into the standard 80x25 video mode via # vidcontrol 80x25 command, it stopped freezing up. So now I'm wondering if that was the cause of some of my other display freezes. Something to be investigated.



Then I restarted the port build (oh man, thanks be to Zeus for the --resume option in portmanager, as the kde port looks at upwards of almost 200 ports!) and went to bed. Thursday morning I was greeted with the sight of a menu from some random library asking for me to pick a single option. I'm not sure if I can do -dBATCH with portmanager, but I'm certainly going to have to find out. Another problem with the options screens for many ports is that you have no idea what they are talking about. Usually it enables some obscure acronym, and you have no idea what the pros and cons for each option are. So I usually just pick the default anyway. So I did in this case, and build trundled on.



And on. And on. Mysterious build commands whizzed by the screen all day long. By mid-afternoon, I got an option screen for KDE asking which KDE apps to install. I once again had a brain cramp and allowed it to install all of them. So dozens more apps that I don't want and don't need, like KOffice, got installed. Then, right around dinner time, it stopped scrolling, as it seemed to be linking some app. So I let it hang around for over two hours, and nothing changed. I couldn't even ctrl-C out of it, as the keystrokes just echoed to the screen. So I ctrl-Z'ed out of it, putting it in the background, and then killed it. But I forgot to check the log file before restarting the build, so I'm not even sure where it hung up.



And that build trundled on, Finally, just this morning it finished, although an important piece, kdelibs, failed to build for some reason. I just didn't have the intestinal fortitude to try and build it again, so here I am with some kind of Frankenstein system, which is seasonally appropriate at least.. Now I can't wait for PC-BSD 1.3 to come out, and I'll just start anew!