Posts tagged ‘Ubuntu’

Sharing Files with Windows from Ubuntu Karmic

We got a desktop running Windows 7 over the Christmas holidays. I hadn’t been faced with the prospect of sharing files with it up until I wanted to play an MP3 file located on my laptop — which is running Ubuntu — from the desktop, which is connected to a better speaker system. As it turns out, sharing files with Windows from Ubuntu has gotten a lot easier with Ubuntu 9.10 Karmic Koala.

Open Nautilus and navigate to the parent directory of the one you’d like to share. Right-click on that directory and select the option “Sharing Options.” In the window that appears, check “Share this folder.” If Samba is not already installed on your system, this will prompt you to install it. The nice thing is that it handles all the interaction with APT and configuration of user accounts and shares for you versus the manual approach that’s been required in the past.

Once the service is installed, if you’d like to share the directory with users without requiring them to enter user credentials, check the box “Guest access.” Finally, click the “Create Share” button. You’ll receive a prompt to restart your session so the setting changes can take effect; go ahead and do this.

When I tried to access the directory from the Windows 7 desktop at this point, I still got prompted for credentials. I tried manually rebooting my laptop and at that point was able to access the files anonymously without further issue. I don’t know if a manual restart is always required, but it did the trick for me.

Hope this helps someone!

PHPUnit and Xdebug on Ubuntu Karmic

This is just a quick post to advise anyone who may be using PHPUnit and Xdebug together on Ubuntu Karmic. If you try to upgrade to PHPUnit 3.4.6 and you’re using the php5-xdebug Ubuntu package (which is Xdebug 2.0.4), you may get output that looks like this:

$ sudo pear upgrade phpunit/PHPUnit
Did not download optional dependencies: pear/Image_GraphViz, pear/Log, use --alldeps to download automatically
phpunit/PHPUnit can optionally use package "pear/Image_GraphViz" (version >= 1.2.1)
phpunit/PHPUnit can optionally use package "pear/Log"
phpunit/PHPUnit can optionally use PHP extension "pdo_sqlite"
phpunit/PHPUnit requires PHP extension "xdebug" (version >= 2.0.5), installed version is 2.0.4
No valid packages found
upgrade failed

There are two ways to deal with this situation. First off, note that the newer Xdebug 2.0.5 version includes several bugfixes including one related to code coverage reporting. That said, if you still want to continue using the php5-xdebug package anyway, you can force the upgrade by having the PEAR installer ignore dependencies like so:

sudo pear upgrade -n phpunit/PHPUnit

The other method involves installing Xdebug 2.0.5. First, if you have the php5-xdebug package, remove it.

sudo apt-get remove php5-xdebug

Next, use the PECL installer to install Xdebug. This requires that you have the php5-dev package installed so that the extension can be compiled locally.

sudo apt-get install php5-dev
sudo pecl install xdebug

At this point, create the file /etc/php5/conf.d/xdebug.ini if it doesn’t already exist and populate it with these contents:


Then bounce Apache so that the new extension will be loaded.

sudo apache2ctl restart

That’s it. Hope someone finds this helpful.

OpenOffice Batch Export

I’m currently using Ubuntu Jaunty 9.04 as my primary operating system. I’ve been working with a set of presentation files that were originally in Microsoft PowerPoint format (PPT), but that I converted to OpenOffice Impress format (ODP) when it appeared that OpenOffice had an issue with retaining content formatting when exporting to PPT.

Multiple people have to handle these presentation files, though, and PPT is the most universal format supported by presentation programs like OpenOffice Impress and Keynote. Additionally, when the presentations are actually used, PDF is the required final format.

To alleviate myself of the need to export the ODP version to PDF and PPT manually each time I made changes to a presentation, I did some digging and came across the wonderful unoconv utility, which uses the OpenOffice UNO bindings to allow for conversion of documents between OpenOffice-supported formats.

If you have Ubuntu, installing the unoconv package via synaptic is all it takes to make this utility available to you. The only issue I ran into with that package is that the –list flag to return a list of supported formats returns the error "unable to get gail version number" without any output. Actual document conversion seems to work without issue.

If you don’t have Ubuntu, the unoconv web site makes Red Hat and Debian packages available as well as a tarball of the source code.

Below is the bash script I used.

for file in `ls -1 *.odp`; do
    unoconv -d presentation -f pdf --stdout $file > PDF/${file/%odp/pdf};
    unoconv -d presentation -f ppt --stdout $file > .PPT/${file/%odp/ppt};

Building PHP-GTK with Cairo Support on Ubuntu Jaunty

Elizabeth Smith managed to pique my interest and maintain the patience of Job long enough for me to successfully build PHP 5.3.0RC1 with PHP-GTK including Cairo support on Ubuntu Jaunty. The process was a bit arduous, as Ubuntu apparently has a rather “interesting” automake package, so I thought I’d document it here for anyone who might be interested in repeating the process.

I’m assuming here that you want to use as many available Ubuntu packages as is feasible, aside from maybe PHP itself, in order to minimize the amount of manual compilation necessary. To that end, there are a number packages you will need to install before getting started that do not come with a standard Jaunty installation.

sudo apt-get install subversion cvs libcairo2-dev libgtk2.0-dev

If you plan to build PHP from source, you will also need a few more packages.

sudo apt-get install build-essential autoconf libxml2-dev

Once you’ve got all the dependencies installed, the first step will be to grab a copy of PHP. You’ve got a few options in that regard.

Assuming you do a custom build, here’s how I did it.

./configure --with-gettext --disable-cgi --without-pear \
make install

Next, use Subversion to check out a copy of Cairo extension. If you did a custom PHP build, you can just place it on the same directory level as that.

svn co svn:// cairo

At the present moment, the easiest way to install the Cairo extension is manually as a PECL extension. So, compile using the phpize utility in your PHP build.

cd cairo
./configure --prefix=`pwd`/build/php_build \

It’s at this point that Ubuntu’s “interesting” automake package comes into play. The Makefile generated by phpize will be missing a critical flag -DCOMPILE_DL_CAIRO in its CFLAGS setting value. Open the Makefile in any text editor and find the line that looks like this.

CFLAGS = -g -O2

Append the missing flag to the line so it looks like this, then save it.


At that point, just continue the compilation process for the Cairo extension as normal.

make install

Now use CVS to check out a copy of the PHP-GTK extension. Place it on the same directory level as cairo.

cvs -q checkout -P php-gtk

If the phpize utility is not in your PATH, you’ll have to assign it to an environmental variable as those are the only two ways that the buildconf utility you’re about to use will pick it up.

export PHPIZE=../php-5.3.0RC1/build/php_build/bin/phpize

Execute the buildconf utility to generate the configure script, then execute it.

./configure --prefix=`pwd`/build/php_build \

To have the PHP-GTK extension take advantage of the presence of the Cairo extension, you’ll need to add a flag to the CFLAGS setting in its Makefile. Open that, find the line that looks exactly like the original one modified in the Cairo Makefile, and append the flag -DHAVE_CAIRO to it so it looks like this.


At that point, continue the compilation process normally just as with the Cairo extension. Once that’s done, since the extensions were compiled as PECL extensions, you’ll need to enable them in your php.ini file.

If you did a custom build of PHP, just copy the php.ini-development file in the root of the extracted tarball directory to lib/php.ini within your build directory as this is where PHP will look for it by default. If you’re using PHP 5.3.0RC1, there is a syntax error around line 581 of that file. A URL should be commented out using a semicolon but isn’t. Note that the extension_dir setting needs to be set and, if you use a relative path, it must be relative to the current working directory from which PHP is invoked (the root PHP build directory in my case).

extension_dir = "lib/php/extensions/no-debug-non-zts-20090115"

At this point, if you execute your php binary with the -m switch, you should get a list of extensions loaded. cairo and php-gtk should be among them and you shouldn’t see any errors before the extension listing. To take this for a test spin, there’s a particular demo file for PHP-GTK with Cairo support in the php-gtk checkout.

cd php-5.3.0RC1/build/php_build
bin/php php-gtk/demos/examples/cairo_support.php

If this works as expected, you should see a nifty little PHP-powered clock widget on your desktop.

Many thanks to Elizabeth for her help in putting this tutorial together and for all the very cool people working on the PHP-GTK project. You can find them in the #php-gtk channel on the Freenode IRC network. At the present time, some of them are in the process of revamping the PHP-GTK docs. In the meantime, you can check out the GTK docs for more current information.

Getting Google Calendars into Thunderbird on Ubuntu

As work-related events recently started piling up, we gained a need to keep them organized. So we got a Google Calendar, shared it between us, and all was dandy. I wanted to be able to pull that into my local e-mail client, though. I’m running Ubuntu Ibex and its Thunderbird package.

My friend and colleague Keith Casey pointed out to me that Thunderbird has a Provider for Google Calendar add-on that works with Lightning, which I already had installed. So I install the GCal add-on and restarted Thunderbird. No visible change. I checked the Add-ons area only to find that the entry for the GCal add-on was displaying the message "Requires additional items" with no way to see what said items were. A search prompted me to check the version of the Lightning add-on, which I found to be 0.8 because I’d already installed the Ubuntu package for it and that was the latest version available.

As it turns out, the Ubuntu wiki has instructions for what I figured out on my own the first time around: version 0.9 of the Lightning extension has to be downloaded and installed manually for 64bit builds. After that, the GCal add-on was right as rain. Adding a calendar was as simply as accessing Google Calendar via the web, going to Calendar Settings for an individual calendar, and using the XML link for that calendar when adding the calendar to Lightning using new new Google Calendar option added by the GCal add-on.

Updating PHP Syntax Highlighting for vim on Ubuntu

This is just a quick post, mostly a "note to self" so I don’t forget how to do this. If you were curious, it was the result of indirect inspiration from these Become a Bash Ninja slides.

If you’re running Ubuntu 8.10 as your desktop OS, have vim installed, and use it for PHP development, you may not be aware that the PHP syntax file that comes bundled with vim is a bit outdated. There’s a fairly simple way to update it, though. In fact, it’s doable with two simple commands from Terminal.

cd /usr/share/vim71;
wget -O - | sudo tar -zxv

Running Spaz on Ubuntu Ibex 64bit

It took some digging to find it, but I finally found a way to make Spaz work on the Ubuntu Ibex installation on my Sony Vaio VGN-NR298E (with an Intel C2D 64bit processor). Up until I figured this out, I had been getting nothing but a non-responsive black box when I tried to launch Spaz.

Most of this comes from this tutorial on getting Twhirl and other AIR-based apps running on Ubuntu 64bit.

  1. Start by creating a new directory and and making it the current working directory. I just called it “Software” in my case.
    mkdir Software
    cd Software
  2. Install the AIR 1.5 SDK for Linux.
    mkdir air_1.5_sdk
    cd air_1.5_sdk
    wget -c
    bunzip2 air_1.5_sdk.tbz2
    tar -xf air_1.5_sdk.tar
    rm -f air_1.5_sdk.tar
    cd ..
  3. Install Spaz.
    mkdir SpazAIR
    cd SpazAIR
    wget -c
    unzip SpazAIR.air
    cd ..
  4. If you’re running 64bit, install the getlibs installer so you can easily get 32bit versions of libraries that AIR needs. Otherwise, skip this step. I believe the KDE equivalent to the libgnome-keyring0 package is kdewallet. Both should be installed by default on 32bit systems.
    wget -c
    chmod +x ./getlibs
    ./getlibs \
  5. Launch Spaz from the directory created in the first step.
    air_1.5_sdk/bin/adl -runtime air_1.5_sdk/runtimes/air/linux \
        -nodebug SpazAIR/META-INF/AIR/application.xml SpazAIR
  6. I didn’t find the default font used in the main tweet area to be very appealing, so I added this line to the User Theme CSS area of Settings.
    div.status-text { font-family: Tahoma; }

The only issue I ran into was receiving this error whenever I try to post: “An ActionScript error has occurred: Error #2044: Unhandled IOErrorEvent:. text=Error #2032: Stream Error.” Oddly, it doesn’t prevent posts from going through, though it is rather annoying. I have brought it up in a Spaz Google Group thread and hope to work with the developer to troubleshoot the issue further at some point in the future.