॥ स्वक्ष ॥

To content | To menu | To search

Tag - Ubuntu

Entries feed

2010 October 11 [Monday]

Extract msi archive format on Ubuntu

I was googling for some information which was only available in a .msi archive format which I could not extract directly on ubuntu. Since I didnt have windows on the machine, I could not extract it there and just copy the files over to linux.

On ubuntu, installing WINE (and trying to extract with msiexec) didnt work -- wine kept whining about it not being an executable (on linux? *g*), the source being from an untrusted source, etc...

Next, I tried p7zip -- install it with

sudo apt-get install p7zip-full

Then, change directories, and type:

7z x filename.msi

While this extracts all the files, it will still not be easily viewable nor is it usable -- windows executable dlls, bitmaps, windows installer package, microsoft cabinet archive, some icons, and other useless cruft compressed in the folder. Other than manually digging out text files for the information, there was no easy option.

The data was locked inside the database (hint, extract the cabinet archive) in the .mbd (MS Access) format. Google threw some perl modules to convert a .mbd file to .txt. BUT there was a gnome mbd-reader tool which you can easily install with

sudo apt-get install mdbtools

sudo apt-get install mdbtools-gmdb

Then, click on Applications>Office>MDB Viewer.

In Ubuntu, mdbtools includes command line tools such as mdb-export and mdb-schema and to export data from the MS Access .mdb files, extract contents from each table from each .mdb file through the shell --for which one needs to determine table names before using:

mdbtools <filename.mdb> <table name> <output_filename.txt>

mdb-export filename.mdb tblfoo

The compressed archice included among other things, files with .ocx and .tlb extensions. More googling (yay!)

TLB, a Visual Basic OLE Type Library, is a binary file containing all the type information for using procedures or classes in DLLs.

LINKS:

o. mdb-tools and postgresql script

2010 July 26 [Monday]

Patches and the Packaging toolchain

Background assumptions::
o. A clean ubuntu hardy installation.
o. Some familiarity with command-line basics.
o. Have installed pbuilder.

That done, we can continue...

What is PACKAGING?

If you have ever used the apt-get or aptitude {Aaron has a nice writeup on aptitude Vs. apt-get} command : "sudo aptitude install <packagenames>"  on your Debian/Ubuntu system you used a tool that automatically installs a packaged software on your system. This would automatically pull all the dependencies for your Linux system to run smoothly. It saves you the pain of having to install software manually by pulling code in a tar.gz folder, extracting, etc...

Secondly, when you download a source package from a Debian/Ubuntu "deb-src" repo, its already a debian package.i.e the source files have been placed in a suitable directory tree, appropriate configuration files have been added, and the package contains scripts to help with the building and installation of the package. This is what allows you to just install from source with "apt-get -b source some-package-name" as mentioned before.

This post is different. As in, its not a path of least resistance (packaging an existing debianized package for Ubuntu). This is about creating a binary package from a source package, with customization, modification, or other tedious trouble. To do so, you do the following :

Wikipedia says,

The Debian build toolchain is a collection of software utilities used to create Debian source packages (.dsc) and Debian binary packages (.deb files) from upstream source tarballs.

These tools are used in the Debian project and also in Debian-based distributions such as Ubuntu.

One of the first steps was creating a .dsc as outlined at  https://wiki.ubuntu.com/PackagingGuide/Python

I had already pulled the stable source from LP [bzr branch lp:systers] but noticed that none of the files had copyright or license notices. I also had a number of questions on patching the current systers stable branch for releases and another part of the project as mentioned on the wiki was to work with the MM 3.0 port team. So I requested an upstream MM core-dev to comment on the following:

  • Q0. Currently systers runs only on Ubuntu-Hardy with python2.5 and systers has the habit of working only with ubuntu- LTS releases, hence Lucid could be the porting target.  I feel the tasks involved are -- convert  all .py programs compatible to python  2.6 or 2.7;  carry out code changes if any on the 2.6 or 2.7 .py files to make them work on lucid or Hardy , make package and test the package.
  • Q1. Currently systers code uses python2.5 and I'd like to know if it has to run/port compatibly on Lucid would that involve converting code to python2.7 (or python2.6)? That seems like a large task so I'd like to hear your comments. 
  • Q2. Would it involve making these python programs of systers which is currently compatible with 2.1.10 to be made compatible to mailman 3.0-- I'm not sure how different MM-2.1.10 is from MM-3.0 and assume this involves changes in code.  So what does working with the MM 3.0 port team entail?
  • Q3. According to the debian manuals the existing stable branch should contain licences for all files, to be packaged since GNU-Mailman would require this. Currently none of the stable branches or code fixes pulled from the systers repo have any license files. Am I supposed to contact the individual authors (I dont know them all) or should I just ask Jennifer/Robin ?

The reply I got was lucid (could not resist a pun) and in sum, I'd heard some of the packaging stuff before (in Debian? or was it in Ubuntu?):

  • o. Core-devs dont usually work on maintaining non-mainline stuff unless it's their own. So if you want your "feature-changes-patch" included in upstream, you'd have to be willing to maintain them long-term and that would involve a large commitment. If its not in mainline upstream, there is nobody to coordinate packaging or patches. As the developer of your "feature-changes-patch", its your baby which you should be willing to test and maintain each time mainline changes.
  • o. Ubuntu packaging of Mailman 2.1 introduces some bugs -- best compiled from source. Bringing another package (mailman-systers?) for an existing upstream package within Ubuntu could be an issue.
  • o. Mailman 2.1 and Mailman 3.0 are *entirely* different code bases. That means these wonderful systers feature changes would have to be re-implemented, not ported. Porting (as I asked above in Q0, Q1,Q2) would involve moving between python versions and this changes so many things when you are moving between two OS releases (in this case, Ubuntu hardy and lucid). Besides MM3.0 (in alpha stage) was an entirely different code base compared to 2.1 which is in feature freeze.
  • o. While it would be better to contribute code directly to MM3.0 ...BUT... using the existing code raises the license issues in Q3 above. This is something I cant answer as "legalese" is beyond me. Technically, all GPL code (for a FLOSS project) requires authors be willing to assign their work to the free software foundation, as explained in the gnu-licenses page: http://www.gnu.org/licenses/why-assign.html. IIRC, Ubuntu and Debian would require the license.txt file for packaging too. There is a list of FSF approved software licenses.

2010 July 17 [Saturday]

SoftwareHardware fails

Ever been in a situation where you are trying to solve one problem but have more hoops to jump than necessary!?
This rant has been building up this past week and it all started with bzr: ERROR: Unknown branch format: 'Bazaar Branch Format 7 (needs bzr 1.6)\n'

Seems that bzr has to be upgraded on hardy {--And now this? --after I had purged and re-installed bzr because the earlier installation was giving weird errors and I didnt want to waste time going off on a tangent. argh, I was wrong about wasting time with bugs!

I was suggested a PPA but for that was not an optimal path for me. Besides, here I was trying to pull a MM revision from LP, but instead have to build bzr and then work on MM..... ~fun.

Alan (thanks :)) suggested I edit the sources.list and add "deb http://ppa.launchpad.net/bzr/ppa/ubuntu hardy main" and then do an apt-get update, then apt-get upgrade which would upgrade bzr to the version in the ppa without all the compiling and building hoop jumping.

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
bzr
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

What a killjoy !!

$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
python-configobj
The following packages will be upgraded:
bzr
[.....................]
Setting up bzr (2.1.2-1~bazaar2~hardy1) ...
removing incorrectly installed bash example /etc/bash_completion.d/bzr

Finally.... I upgraded bzr which allowed me to pull the branch: $ sudo bzr branch lp:mailman/2.1. An hour later.......gee, where was I now? The download was still 'in progress' and was'nt all this supposed to be incidental to testing Mailman...!? That was the night before. The next morning after yet-another-regular-unscheduled-power-outage, it was LaunchPad going down for an hour or so --some twit was DDOSing their server. What an incredibly productive activity!

LP returns and the development machine decides to die with a "/dev/sda1 error : fsck died with exit status 4". Now I knew this was my lucky day!!

Dug out a liveCD and ran 'fsck -f /dev/sda1' manually, where:

-f = force fsck even if filesystem seems clean
-cc = run badblocks check with a non-destructive test
-k = write new list of badblocks to current list
-p = automatically repair errors if possible without requiring human input
-v = verbose output

It found 5 inodes containing multiply claimed blocks and repaired it but for a while everything was in slow-motion --  I panicked about it taking ages to check a mere 40 gb of inodes and blocks. Colourless did the math on why it will take ages "just consider the sustained transfer rate of the drive which will probably be in the low 10s of mb/s. lets say you are getting 20mb/s second transfer, that is still going to be 2000 seconds to scan the disk, or 33 minutes".

Ah, talk of collective agida!

Earlier today fsck.ext1: No such file or directory while trying to open /dev/hda1. The superblock could not be read or does not describe a correct ext2 filesystem -- the hdd would not be detected and system refused to boot, refused to detect partitions. I spoke too soon earlier. It was super lucky saturday, not lucky friday!! This time the LiveCD was an arm's length away after last night's use and I checked out "fsck", "e2fsck" ...zilch, No response.

There is a good utility called TestDisk, which is available as a package for both debian and ubuntu -- sudo apt-get install testdisk, and you can run it from liveCD if your disk ever fails. It goes without saying that TestDisk will be useful only if your disk is detected by BIOS and hence alive.

Now, the worst I could think was "bad sectors==dead disk" but before that I had to check for loose wiring and then see if the BIOS detected the drive. The disk was spinning as I could hear the 'whrr' sound. Unplugged and re-plugged the wires a few times ...Nada...Bios would not detect the hdd. Convinced that it was the worst "bad sectors==dead disk", I shut everything down. A few hours later I switch it it on and voila the disk was detected and grub was soon asking which OS I wanted to boot into. That means it was just a loose connection (HOPEFULLY :)).

A BIG 'thanks' to ALL the folks who helped out with suggestions and listened to my kvetch. Much appreciated :)  If I'd ever have to calculate "productive time" sans all the idiocy around then its scary to note the amount of time that is wasted scheduling my day around a power outage, hardware issues and software bugs, and then there is this mundane thing called 'life'. I wish I had 10-days of silence instead.


2010 June 17 [Thursday]

howto install funkload on ubuntu8.04 hardy

In between my earlier attempts and patchy internet for almost a week and google searches yielding this:

#0.http://nedbatchelder.com/blog/200810/funkload_ftw.html
#0.http://blog.jbglenn.net/search/label/Funkload and
#0.http://pydanny.blogspot.com/2008/02/funkload-charting-woes.html

It seemed like a challenge to get funkload working on Hardy but Ben had emailed and commented (thanks Ben :-)) that Funkload and TCPWatch package has to be installed manually for all Ubuntu releases below ver8.10 and its packaged for Debian-lenny.

On a clean Hardy/8.04 system, I tried installing funkload, yet again. So I suppose a proper listing of the steps will be useful to others.

Step0:

Installing the package dependencies.

i@ubu804:~$ sudo aptitude install python-dev python-xml python-setuptools python-docutils gnuplot

Step1:

Downloading TCPWatch, extracting and building from source.

i@ubu804:~$ wget http://hathawaymix.org/Software/TCPWatch/tcpwatch-1.3.tar.gz
--13:23:27--; http://hathawaymix.org/Software/TCPWatch/tcpwatch-1.3.tar.gz
; => `tcpwatch-1.3.tar.gz'
Resolving hathawaymix.org... 67.161.215.12
Connecting to hathawaymix.org|67.161.215.12|:80... failed: Connection timed out.
Retrying.
--13:26:37--; http://hathawaymix.org/Software/TCPWatch/tcpwatch-1.3.tar.gz
; (try: 2) => `tcpwatch-1.3.tar.gz'
Connecting to hathawaymix.org|67.161.215.12|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13,065 (13K) [application/x-tar]
100%[===================================================================] 13,065; 11.43K/s;
13:26:39 (11.42 KB/s) - `tcpwatch-1.3.tar.gz' saved [13065/13065]

i@ubu804:~$ tar xzvf tcpwatch-1.3.tar.gz
tcpwatch/
tcpwatch/tcpwatch.py
tcpwatch/setup.py
tcpwatch/CHANGES.txt

i@ubu804:~$ cd tcpwatch/

i@ubu804:~/tcpwatch$ ls
CHANGES.txt; setup.py; tcpwatch.py
i@ubu804:~/tcpwatch$ python setup.py build
running build
running build_scripts
creating build
creating build/scripts-2.5
copying and adjusting tcpwatch.py -> build/scripts-2.5
changing mode of build/scripts-2.5/tcpwatch.py from 644 to 755

i@ubu804:~/tcpwatch$ sudo python setup.py install
running install
running build
running build_scripts
running install_scripts
copying build/scripts-2.5/tcpwatch.py -> /usr/bin
changing mode of /usr/bin/tcpwatch.py to 755
running install_egg_info
Writing /usr/lib/python2.5/site-packages/tcpwatch-1.2.1.egg-info

i@ubu804:~/tcpwatch$ cd

Step2:

Installing funkload version 1.12.0.

i@ubu804:~/tcpwatch$ sudo easy_install -U funkload
Searching for funkload
Reading http://pypi.python.org/simple/funkload/
Reading http://funkload.nuxeo.org/
Best match: funkload 1.12.0
Processing funkload-1.12.0-py2.5.egg
funkload 1.12.0 is already the active version in easy-install.pth
Installing fl-credential-ctl script to /usr/bin
Installing fl-monitor-ctl script to /usr/bin
Installing fl-install-demo script to /usr/bin
Installing fl-run-test script to /usr/bin
Installing fl-record script to /usr/bin
Installing fl-build-report script to /usr/bin
Installing fl-run-bench script to /usr/bin
Installing fl-credential-ctl script to /usr/bin
Installing fl-run-test script to /usr/bin
Installing fl-record script to /usr/bin
Installing fl-run-bench script to /usr/bin
Installing fl-monitor-ctl script to /usr/bin
Installing fl-install-demo script to /usr/bin
Installing fl-build-report script to /usr/bin

Using /usr/lib/python2.5/site-packages/funkload-1.12.0-py2.5.egg
Processing dependencies for funkload
Finished processing dependencies for funkload

Step3:

Installing python-gdchart and python-gdchart2

i@ubu804:~$ sudo aptitude install python-gdchart2
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Building tag database... Done
The following NEW packages will be automatically installed:
libgdchart-gd2-noxpm
The following NEW packages will be installed:
libgdchart-gd2-noxpm python-gdchart2
0 packages upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 87.0kB of archives. After unpacking 352kB will be used.
Do you want to continue? [Y/n/?]
Writing extended state information... Done
Get:1 http://np.archive.ubuntu.com hardy/universe libgdchart-gd2-noxpm 0.11.5-4 [46.7kB]
Get:2 http://np.archive.ubuntu.com hardy/universe python-gdchart2 0.beta1-3.4 [40.3kB]
Fetched 87.0kB in 24s (3608B/s)
Selecting previously deselected package libgdchart-gd2-noxpm.
(Reading database ... 151343 files and directories currently installed.)
Unpacking libgdchart-gd2-noxpm (from .../libgdchart-gd2-noxpm_0.11.5-4_amd64.deb) ...
Selecting previously deselected package python-gdchart2.
Unpacking python-gdchart2 (from .../python-gdchart2_0.beta1-3.4_amd64.deb) ...
Setting up libgdchart-gd2-noxpm (0.11.5-4) ...

Setting up python-gdchart2 (0.beta1-3.4) ...

Processing triggers for libc6 ...
ldconfig deferred processing now taking place
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Building tag database... Done

Step4:

Now follow the demo testing steps given here

i@ubu804:~$ fl-install-demo
Extract FunkLoad examples into ./funkload-demo : ...  done.
i@ubu804:~$ cd funkload-demo/xmlrpc/
i@ubu804:~/funkload-demo/xmlrpc$ make test
fl-credential-ctl cred.conf restart
Starting file_credential server at http://localhost:44401/ as daemon.
fl-run-test test_Credential.py -v
test_credential (test_Credential.Credential) ... Ok

----------------------------------------------------------------------
Ran 1 test in 0.038s

OK
fl-credential-ctl cred.conf stop
Server http://localhost:44401/ is stopped.
i@ubu804:~/funkload-demo/xmlrpc$

Step5:

Make bench

i@ubu804:~/funkload-demo/xmlrpc$ make bench
Starting file_credential server at http://localhost:44401/ as daemon.
Starting monitor server at http://localhost:44402/ as daemon.
fl-run-bench -c 1:20:40:60:80:100 -D 10 test_Credential.py Credential.test_credential
========================================================================
Benching Credential.test_credential
========================================================================
Check all credentiald methods
------------------------------------------------------------------------

Configuration
=============

* Current time: 2010-06-17T14:54:09.755672
* Configuration file: /home/i/funkload-demo/xmlrpc/Credential.conf
* Log xml: /home/i/funkload-demo/xmlrpc/credential-bench.xml
* Server: http://localhost:44401/
* Cycles: [1, 20, 40, 60, 80, 100]
* Cycle duration: 10s
* Sleeptime between request: from 0.1s to 0.2s
* Sleeptime between test case: 0.5s
* Startup delay between thread: 0.05s

Benching
========

Cycle #0 with 1 virtual users
-----------------------------

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:54:09.773675
* Starting threads: . done.
* Logging for 10s (until 2010-06-17T14:54:19.830918): ........ done.
* Waiting end of threads: . done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost:  done.
* End of cycle, 12.62s elapsed.
* Cycle result: **SUCCESSFUL**, 8 success, 0 failure, 0 errors.

Cycle #1 with 20 virtual users
------------------------------

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:54:22.385506
* Starting threads: .................... done.
* Logging for 10s (until 2010-06-17T14:54:33.519986): .............................................................................................................................................................................. done.
* Waiting end of threads: .................... done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost:  done.
* End of cycle, 14.33s elapsed.
* Cycle result: **SUCCESSFUL**, 174 success, 0 failure, 0 errors.

Cycle #2 with 40 virtual users
------------------------------

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:54:36.716379
* Starting threads: ........................................ done.
* Logging for 10s (until 2010-06-17T14:54:49.032317): ............................................................................................................................................................................................................................................................................................................................ done.
* Waiting end of threads: ........................................ done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost:  done.
* End of cycle, 14.59s elapsed.
* Cycle result: **SUCCESSFUL**, 316 success, 0 failure, 0 errors.

Cycle #3 with 60 virtual users
------------------------------

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:54:51.301751
* Starting threads: ............................................................ done.
* Logging for 10s (until 2010-06-17T14:55:04.779492): ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ done.
* Waiting end of threads: ............................................................ done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost:  done.
* End of cycle, 15.76s elapsed.
* Cycle result: **SUCCESSFUL**, 464 success, 0 failure, 0 errors.

Cycle #4 with 80 virtual users
------------------------------

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:55:07.066691
* Starting threads: ................................................................................ done.
* Logging for 10s (until 2010-06-17T14:55:21.814678): ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ done.
* Waiting end of threads: ................................................................................ done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost: done.
* End of cycle, 20.69s elapsed.
* Cycle result: **SUCCESSFUL**, 672 success, 0 failure, 0 errors.

Cycle #5 with 100 virtual users
-------------------------------

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:55:27.761091
* Starting threads: .................................................................................................... done.
* Logging for 10s (until 2010-06-17T14:55:43.883081): .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. done.
* Waiting end of threads: .................................................................................................... done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost: done.
* End of cycle, 20.43s elapsed.
* Cycle result: **SUCCESSFUL**, 686 success, 0 failure, 0 errors.

Result
======

* Success: 2320
* Failures: 0
* Errors: 0

Bench status: **SUCCESSFUL**
fl-build-report credential-bench.xml --html
Creating html report: ...done:
/home/i/funkload-demo/xmlrpc/test_credential-20100617T145409/index.html
Server http://localhost:44402/ is stopped.
Server http://localhost:44401/ is stopped.
i@ubu804:~/funkload-demo/xmlrpc$

Step6: Install Zope (installation instructions) and create a sandbox.

i@ubu804:~/funkload-demo/simple$ cat README.txt
====================
FunkLoad demo/simple
====================
$Id: README.txt 53544 2009-03-09 16:28:58Z tlazar $

This is a simple FunkLoadTestCase demonstration.

It requires an web test server (configuration is done for an apache2
default install)

WARNING: You should *not* run this script against a server that is not under
your responsablity as it can result a DOS in bench mode.

1/ Modify the Simple.conf file

  Set the [main] url and pages keys

2/ Test it

verbose mode::

fl-run-test -v test_Simple.py

debug mode::

fl-run-test -d test_Simple.py

view the downloaded page in real time using firefox::

fl-run-test -V test_Simple.py

check performance of a single page::

fl-run-test -l 4 -n 100 test_Simple.py

PS:

I have yet to finish testing so I'll update this entry later as its almost midnight and as usual google threw more to-read stuff for laters... yum !
0. funkload-modules
0. funkload-test-in-few-minutes
0. funkloadtests/INSTALL.txt
0. plone-collective.recipe.funkload
0. set up funkload to do functional tests on a SOAP web service
0. funkload build script
0. collective funkload tests, thread on a plone list
0. plone sprint report
0. functional load testing notes

A nice-to-have feature would be a screen key recording feature in funkload :)

2010 June 6 [Sunday]

funkload installation on ubuntu lucid and hardy

Crediting my earlier failed installation attempt to the owl-like-shift for most of last week, yesterday, I started afresh on Ubuntu Hardy.

Ubuntu Hardy

I tried the installation on Ubuntu Hardy, which is the environment in which funkload will be installed for use. Installing tcpwatch-httpproxy removes procmail and sendmail.

Not good. Those packages are required by other parts of the system. Strangely this does not happen on Ubuntu 10.04, for which I repeated the installation to test separately. Earlier Ben had left a comment offering his help so I've emailed him the logs and am hoping to solve this problem and post another entry about that.

$sudo aptitude install tcpwatch-httpproxy --without-recommends
Reading package lists... Done
Building dependency tree      
Reading state information... Done
Reading extended state information     
Initializing package states... Done
Writing extended state information... Done
Building tag database... Done            
Couldn't find any package whose name or description matched "tcpwatch-httpproxy"
Couldn't find any package whose name or description matched "tcpwatch-httpproxy"
The following packages are unused and will be REMOVED:
  procmail sendmail-base sendmail-cf sensible-mda
0 packages upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
Need to get 0B of archives. After unpacking 3191kB will be freed.
Do you want to continue? [Y/n/?]
Writing extended state information... Done
(Reading database ... 151156 files and directories currently installed.)
Removing sensible-mda ...
Removing procmail ...
Removing sendmail-base ...
Cleaning up the queues...find: /var/spool/mqueue: No such file or directory
done.
Removing sendmail-cf ...
Reading package lists... Done            
Building dependency tree      
Reading state information... Done
Reading extended state information     
Initializing package states... Done
Writing extended state information... Done
Building tag database... Done            


Ubuntu Lucid (10.04)

The experience of installing funkload on Lucid was a little better than Hardy, which was a small step ahead. Even if the installation failed, I tried the test-runner but the tests failed and I wanted to try it again with virtualenv. Likewise, the modules was not loading in TestRunner

(funkload)me@ubuntu10.04:~$ fl-run-test -v myFile.py
Traceback (most recent call last):
  File "/home/me/.virtualenvs/funkload/bin/fl-run-test", line 8, in <module>
    load_entry_point('funkload==1.12.0', 'console_scripts', 'fl-run-test')()
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/TestRunner.py", line 483, in main
    TestProgram(testLoader=test_loader)
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/TestRunner.py", line 342, in __init__
    self.loadTests()
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/TestRunner.py", line 352, in loadTests
    module_relative=False)
  File "/usr/lib/python2.6/doctest.py", line 2419, in DocFileSuite
    suite.addTest(DocFileTest(path, **kw))
  File "/usr/lib/python2.6/doctest.py", line 2338, in DocFileTest
    doc, path = _load_testfile(path, package, module_relative)
  File "/usr/lib/python2.6/doctest.py", line 219, in _load_testfile
    return open(filename).read(), filename
IOError: [Errno 2] No such file or directory: '/home/me/myFile'

Next it was 'make bench' which failed. So too with BenchRunner.

(funkload)me@ubuntu10.04:~$ fl-run-bench -u http://localhost:8080 -c 10:20 -D 30 myFile.py MyTestCase.testSomething
Traceback (most recent call last):
  File "/home/me/.virtualenvs/funkload/bin/fl-run-bench", line 8, in <module>
    load_entry_point('funkload==1.12.0', 'console_scripts', 'fl-run-bench')()
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/BenchRunner.py", line 606, in main
    bench = BenchRunner(args[0], klass, method, options)
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/BenchRunner.py", line 220, in __init__
    mmn_encode(method_name, 0, 0, 0), options)
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/BenchRunner.py", line 123, in load_unittest
    module = __import__(test_module)
ImportError: No module named myFile

2010 June 2 [Wednesday]

Pbuilder installation on UbuntuHardy

Pbuilder, constructs a chroot system and builds a package inside the chroot. It is an ideal system to use to check that a package has correct build dependencies and to build clean packages to be tested and distributed. Debian uses pbuilder for packaging and they have lotsa manuals...

http://www.debian.org/doc/manuals/

http://www.debian.org/doc/FAQ/ch-pkgtools.en.html

http://www.debian.org/doc/manuals/maint-guide/ch-start.en.html

Pbuilder manual - Junichi Uekawa

https://help.ubuntu.com/community/BasicChroot

Ubuntu also uses Pbuilder for all their packaging work. Ubuntu has a Packaging Guide but i was following the instruction on the Ubuntu wiki page while trying to install it on hardy. Installed the dependencies and tried to create it.

$sudo pbuilder create --distribution hardy --othermirror "deb http://archive.ubuntu.com/ubuntu hardy main restricted universe multiverse"

Error!! "Command line parameter [.dsc] is not a valid .dsc file name"

The .pbuilderrc file was supposed to be created automagically but it wasnt.

Grr...stuff.

But it was nigelb and geser to the rescue and its the real-time responses that makes me addicted to IRC but I find it amusing that we use cryptic and terse mode of communication on irc as compared to complete sentences in email/forums. hmmm...not sure if this is good or bad in the long runbut switching modes suddenly makes it kinda weird.

$sudo pbuilder create

$sudo pbuilder update --override-config

Upgrading for distribution hardy
Building the build Environment
extracting base tarball [/var/cache/pbuilder/base.tgz]
creating local configuration
copying local configuration
Installing apt-lines
mounting /proc filesystem
mounting /dev/pts filesystem
policy-rc.d already exists
Refreshing the base.tgz
upgrading packages
Hit http://archive.ubuntu.com hardy Release.gpg
Hit http://archive.ubuntu.com hardy Release
Hit http://archive.ubuntu.com hardy/main Packages
Reading package lists... Done
dpkg - warning: ignoring request to remove lilo which isn't installed.
Obtaining the cached apt archive contents
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version.
dpkg-dev is already the newest version.
apt is already the newest version.
aptitude is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Copying back the cached apt archive contents
unmounting dev/pts filesystem
unmounting proc filesystem
creating base tarball [/var/cache/pbuilder/base.tgz]
cleaning the build env
removing directory /var/cache/pbuilder/build//15479 and its subdirectories

...and pbuilder was ready to be used.

$sudo apt-get update

Next it was pulling a package to build and source it via wget, apt-get, or dget for the .dsc file from packages.ubuntu.com -- only for packages in the ubuntu repo. If your code sits as a branch on your cvs, it wont be pulled from packages.ubuntu.com.

The 'Packaging from Scratch' section asks you to create a directory before using wget but its a different method when you are using a cvs. If its hosted on LP, use bzr to pull it::

$sudo bzr export -r73 /dest/dir lp:~systers/systers/stable

and make sure you dont create the "/dest/dir" by hand as bzr will protest that the file exists in the target directory but the target dir will be empty. Bzr export needs a non-existing destination as it will create the directory owned to root. Somewhere in the middle of changing the ownership it simply locked me out ...wtf? and the next steps failed quite obviously. Then I had to waste a lot of time deleteing each file and folder.

In between this, Bescom decided to be the royal pita that they usually are, conked off power for half the day-- they had some work being done at the supplying station and the engineer was even kind enough to warn the residents of our area that an electric pole was going to be replaced in the street this week so be prepared for power outages at intermittent intervals of 10-15 minutes outage all day as they would be testing. WTF? Telling him that electrical appliances dont tolerate this well got the stock reply "install an UPS". How kind of him to enlighten us. Dont I just love the way our government servants treat the tax-paying citizens.

Adding to the annoyance, nothing worked after that. dh_make, used to create a template for packaging would not be invoked and I recall reading somewhere that dh_make was supposed to be done right the first time, else it would not work. 

$dpkg-source -x *.dsc
dpkg-source: error: cannot open .dsc file ./*.dsc: No such file or directory

Oh ok, now I need to find out a solution for that as well as how to create a .dsc file for the source pulled from LP.

2010 May 5 [Wednesday]

Not so Lucid

Last weekend I upgraded to Lucid (Ubuntu 10.04) and these changes dont bother me at all, albeit the GUI changes were shocking at first-- buttons to close/maximize/minimize your application window are now on the left hand side and each new tab you open pushes the first ones to your right-- but being a forced right handed person has its advantages..... moi does adapt quickly...to the extent that 2-3 days into it, I like this quirky change.

I've always secretly wished a left-alignment over the years, especially when the gui window or browser overshot the screen visibility limits with no way to close the application. The left hand side of the frame is fixed. Its left me wondering why the UI was not developed with left-uppermost in mind --its the way we read and its just seems natural to let the left take over. Pun (un)intended. I might even be tempted to buy a left-handed mouse if the scroll buttons moved over to the left :) YMMV.

However, my personal break point from lucid was for divergent reasons. Its twofold- One, ssh. Although the server I tunnel into had issues with the ISP, the strange weirdness occurs after I tunnel in. Any key I type (even space bar or page down) after ssh'ing into the server throws gibberish :

debug3: Wrote 48 bytes for a total of 61063
debug3: Wrote 48 bytes for a total of 61111
debug3: Wrote 48 bytes for a total of 61159
debug3: Wrote 48 bytes for a total of 61207
debug3: Wrote 48 bytes for a total of 61255
debug3: Wrote 48 bytes for a total of 61303

These debug errors are not much fun when I cant see anything that I type on screen and since the screen scrolls, I am forced to copy paste from a text editor. Ssh just sucks atm.  Other server users dont have the same issue so I am wondering if this is lucid not handling ssh properly. I am not sure and dont have the time to experiment as I need stability ATM, which is tied to the second reason for not using lucid-- development takes place on 8.04 LTS, and I can safely revert  to 9.10 for personal use and not miss much.

UPDATE: No solutions came forth on IRC, except for a 'hald' suggestion which I need to read. Meanwhile, to cross check I tried logging in via another partition that runs 8.04LTS with the same -v (that is the verbose debug option) option that I used on 9.10 and on 10.04. It works like a charm everywhere except on the ubuntu 10.04 partition. On the face of it, it seems like a lucid bug but since I dont have much to go on, i cant file a bug. Arghh..

2009 December 5 [Saturday]

LAN on Ubuntu

Thanks to Broadcom not supporting libre software, wifi with bcm43xx drivers used to be an issue ...see http://bcm43xx.berlios.de/ and http://linuxwireless.org/en/users/Drivers/b43. Earlier, ubuntu 8.10 brought out networking issues on my laptop which worked flawlessly in one city (Bangalore) but suddenly even a wired connection failed. Kinda odd to have no Lan but no  jumping loops for wi-fi drivers because in recent versions of Ubuntu (8.10 onwards) the device driver hardware was detected automagically. After loading Ubuntu (a clean install once in 2 years is better than an upgrade), the user has the option to activate a non-free drivers for Broadcom wi-fi cards so device drivers dont have to be manually loaded now. I cant recall if its from the ugly set of plug-ins and hence less supported.   Anyway, the The ethernet cable would detect a direct connection in Vista but not in my Debian and Ubuntu installations. Time to wade through a list of "lan not working in Ubuntu" bugs for every other laptop model and there was another kernel bug filed but that was an issue I faced in ver 8.10 and before. A few minutes of experimenting and wading through help forums didnt help the LAN detection problem. Then I checked /etc/NetworkManager/nm-system-settings.conf

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

and changed the above value to "true" and then "sudo /etc/init.d/networking restart" solved the lan problem.

2008 October 19 [Sunday]

HDD health with Smartmontools

Noel wrote a nice article on smartmontools, a tool to detect and warn of impending disk failures, a must have if you like to maintain your system.

Adding the line "sudo hdparm -B 254 /dev/sda" in my /etc/rcS.d file to reduce the Load_Cycle_Count (ID#193) results in the Temperature overshooting the limit (it should not be more than 45ºC). This is apparently not good for the disk health. Activating laptop-mode means it fails to function in the battery mode....not nice either!!

According to Noel :

hdparm -B 254 /dev/sda causes that your disk can NOT spin down nor make any kind of power management. Remember always that every single KiloWatt-hour you spend in your computer (or any piece of it, like a hard disc) is a KiloWatt-hour that turns into heat and a KiloWatt-hour you must manage with the cooling system. I strongly suggest against that kind of aggresive performance setting except for dedicated servers in 24×7 attended rooms.

I suggest changing the hdparm value to 127 (or simply to delete that line) AND to better ventilate the disc.


It seems, folks at seagate forums have been complaining about it too...  So is there another solution available to protect laptop disks from frequent head (un)parking AND managing temperature at the same time or are they mutually not feasible in SMART?

Forgot to add about the Bengaluru LUG met yesterday (which was my first LUG meet in this city, the earlier meets being FSUG meets) with Sriram, Kingsly, Rajshekhar, Sandip Bhattacharya, Deepika and me in attendance. The tasty lunch kept up an interesting exchange on a lazy Saturday afternoon and I need to find a way to stay away from Cauvery on MGRoad.

- page 1 of 5