Friday, May 17, 2013

Open Software — Followup

Following up on the post below, I offer continuing adventures in open software...

I finally got the underpinnings of my project working, the whole stack of apps and components all connected together and (minimally) running. I don't feel like quite such a dolt tonight, though it may be a while before I feel comfortable developing apps for UNIX-Linux systems. One has to start somewhere.

In this case, my frustration was caused by problems in not just one but two of the four layers, the Tcl/Tk library from ActiveState and the PAGE visual form design tool. Unsurprisingly there were no actual errors in ActiveState Tcl/Tk 8.6, only a misunderstanding on my part as to how it was to be hooked up to the PAGE tool. And PAGE worked fine once I ran a configuration script that determined for PAGE just where it should look for its underpinnings. To complicate matters, versions of Python built in the past few years all have an earlier version of Tcl/Tk built in to the runtime/development environment, so that PAGE was attempting to talk to Tcl/Tk 8.5.11 rather than 8.6 . Both errors on my part were educational; I learned still more about some very basic *nix operations in chasing down the problems. I'm afraid I have a lot more very basic things to learn.

I also learned the challenge of installing and configuring software packages that do not reside in well-defined online repositories, which is how a lot of Linux software is distributed. The tools on Ubuntu (some of them borrowed from other distributions of Linux) do not make it easy to install a single package from a vendor who simply provides a single compressed archive (think: zip file).

One frustration to a newbie like myself is that in the *nix world, hardly anyone writing documentation... man pages, forum posts, introductory articles, whatever... feels a need to explain one single fact more than the minimal amount necessary for an experienced person (user or programmer) to use the software described. One painfully common fault is describing the changes one must make to a configuration file without ever mentioning where to find the file. Fortunately I found a good search tool; I'd have been unbearably taxed by doing all the searching in something as slow at searching as, say, Nautilus. This is a marked difference from the Windows world, where the doc writers' assumption is typically that the consumer of documentation is an utter idiot.

Onward into the fray...


  1. If you are using a RPM-based distribution and you're wanting to find, say, everything tk-ish,

    rpm -qa | grep -i tk

    will get you a list of tk packages. Then pick one and do

    rpm -ql {packagename}

    and there you go.

    On apt-based systems like Ubuntu:

    dpkg -l | grep -i tk

    then if you see something interesting,

    dpkg -L {packagename}

    Pipe to 'less', of course ('less' is more, except less frustrating, thus 'less').

    The canonical mechanism for finding a file on Unix/Linux is 'locate', which is populated by a script that runs once per week.You can either wait for a week for your file to get indexed, or run the indexer manually. I don't know about Ubuntu since I'm not currently running Ubuntu (my bleeding edge is Fedora, my stable web server is Debian), but on Debian that's just 'updatedb' and a while later it's updated.

    One thing to remember is that Linux is not an operating system. Linux is a random grab bag of pieces and parts that you're expected to fetch out of a very large bin and assemble into an operating system all by yourself -- without instructions :). Or roughly Christmas for geeky techie daddies. Heh.

    1. 'tux - thanks for all the info. I can tell 'less' is going to be a great help; despite its being a kitchen sink, the basic commands are a lot better conceived than in 'more'.

      ActiveState provides both a shell script and a visual app to install its Tcl/Tk 8.6; once I stopped and read what I was supposed to do, it was much clearer. RTFM and all that. :-)

      I just looked at 'locate' and 'locatedb'; both seem to work on Ubuntu just as you describe for Debian. Ubuntu seems to owe a lot to Debian in a lot of areas.

      Linux is indeed a grab bag. It grows not as a single well-organized effort, but as the product of the agendas of hundreds of people worldwide. Separating grain from chaff can sometimes be a challenge, especially for a newbie... and so far, I'm always a newbie, no matter how many times I approach Linux.

      So I have to face the underlying question: why am I doing this? Wasn't I involuntarily "retired" by the combined efforts of GeeDubya and O Bummer? Seriously, after 20+ years of constantly learning new software to pursue a succession of clients' needs, I miss the learning process. So here I am again... to good purpose or to no purpose, I feel the need to do this for my own mental health.

  2. "Assumed knowledge" is the default in the -nix world. The only question is how much knowledge is assumed by the person writing the information. About the only time you will get detailed information is when something new is added to the pile.

    Ubuntu is based on Debian, as you discovered, so those are the instructions you need to look for as almost no one ever mentions Ubuntu directly.

    Keep on learning, it holds off dementia by exercising your mind. Everyone needs stimulus.



• Click here to view existing comments.
• Or enter your new rhyme or reason
in the new comment box here.
• Or click the first Reply link below an existing
comment or reply and type in the
new reply box provided.
• Scrolling manually up and down the page
is also OK.

Static Pages (About, Quotes, etc.)

No Police Like H•lmes