Nexenta and GUI

I’ve been asked this question multiple times by mail and other forums, and it also pops up quite frequently on IRC. Does Nexenta have a GUI?

The Nexenta desktop

The Nexenta desktop

Short answer

Yes, but not by default.

Long answer

Nexenta started off as a clone of ubuntu with a Solaris kernel. These versions were quite popular and got a whole lot of users. However, maintaining and supporting a large selection of packages that go into a desktop was impossible for the developers.

This was when the focus of Nexenta changed from a desktop to a core platform. The idea is to build a solid core, and allow developers to build on top of this. Thus the Nexenta Core platform was born, also sortly and lovingly called NCP. NCP provides all the packages from Ubuntu’s main repository. The NCP cd builds do not include any WM.

However –theres always a however ;) — older repositories do contain Gnome and KDE and XFCE packages. So to get a GUI environment, you’ll have to manually install those packages. This repositoy is the unstable elatte repository. The following line in your /etc/apt/sources.list should get you the packages.

deb http://www.nexenta.org/apt-gnusolaris elatte-unstable main contrib non-free

Going ahead..

All this talk is for the NCP1 (codename elatte) release. NCP2 is currently in alpha stage. Our plan for this release is to populate the repository completely with all GUI packages, so a desktop is only an apt-get install gnome-desktop away.

We cannot include this by default is because we wont be able to maintain it ourselves. We have fuzzy plans for a GUI version in the long term, but nothing concrete. We are looking for developers and enthusiasts to build distributions on top of NCP, and have various variants. So come join the community and be the Linux Mint to our Ubuntu. The nexenta-builder package is where you start.

Join us on IRC #nexenta@irc.freenode.net. You can also take a look at my 2 part development introduction to Nexenta here and here.

Pointless stuff: 1

I’ve decided to post pointless stuff I create on the web. Who knows, I may be the proverbial 3M who does not know the value of the proverbial Post-It note glue I create.

This is an origamical creation that I call “Paper table standing on springy legs”

Paper table standing on springy legs

Paper table standing on springy legs

Unmetlist: apt-cache unmet listing search tool

To put into use my newbie python skills, I wrote a tool that searches the output of apt-cache unmet -i

When populating a newly built repository, I often run into instances where I want to find all the unbuilt packages that depend on kdelibs, or all packages that have openoffice as a dependency. In general I want to know if what packages wont build without X.

So I wrote unmetlist. This will help debian/equivalent and apt developers list out packages that aren’t built, and required in the repository. It can look for (reverse) dependencies, suggests, etc. The difference between apt-cache’s inbuilt search and this tool is that apt-cache searches for the exact package name specified, where as unmetlist searches for the pattern (so kde will match kde-code, kde-libs, etc).

root@oahu:~/src/work3# ./unmetlist
Ver 0.1
Usage
./unmetlist <option>  <package> <unmet_listing_file>
Option can be one of the following
search : search for the <package> in listing and print full listing
depends : find dependencies of <package>
rdepends : find which packages depend on <package>
suggests : find suggested packages for <package>
rsuggests : find which packages suggest <package>
recommends : find recommended packages for <package>
rrecommends : find which packages recommend <package>

To run it first generate the unmet listing using

apt-cache unmet -i > /tmp/unmetfile

and use as follows

./unmetlist rdepends openoffice /tmp/unmetfile

Its still new had edges, but it works.

Get the tool here. (right click>save as..) and be sure to chmod +x the file. Let me know if you find this useful, have suggestions, or want to request a feature.

Oh, and python is a pleasure to work with. String processing has never been easier :)

Guitar Update

So I’ve been learning to play the guitar for around 3 months now.

It’s coming along well :)

I figured I’d plug Tuxguitar and a few sites/apps I’ve been using.

Windows users might know of Guitar Pro which is a software that allows creation of tabs and plays them back.

However what most users dont know is that a free (gratis) and open source equivalent called tuxguitar exists.

This will be very helpful when viewing the *.gp3, *.gp4 and other files that are available on various guitar tab sites.

(Or view those rumoured hundreds of thousands of tabs I’d heard are available on some peer2peer technologies ;) )

It is written in Java and is thus available on Windows, Linux, Solaris or any architecture with a JVM. Tuxguitar in the Ubuntu 8.04 repository has known sound issues on AMD64.. so you better get the latest version directly from the site.

Also very useful to practice your strumming is GTick (On ubuntu simple apt-get install gtick). One good page to learn strumming is here.

Happy guitaring.

Nexenta on OSnews

I wrote an article laying out Nexenta’s advantage to Debian/Ubuntu developers.

OSNews has been reporting on the Debian/Ubuntu/GNU/Opensolaris hybrid for several years. But for those of you who’ve never looked more closely at this interesting OS, a Nexenta developer has laid out some of its more noteworthy features and advantages.

Read the whole article on osnews.com.

Why I love slashdot

The comments are pure gold, in their insight and humour. Take a discussion on the oldest skeleton found on earth.

One comment starts off with a comment on the earth being 6000 years old (which is a popular loony creationist belief). Thereafter the comments are as follows

“The Earth *IS* only 6,000 years old. Give or take 4.54 billion years”

–”So…. Within that margin of error, the earth may not have been created yet?”

—-”Scary, but that DOES go along with how I feel some Monday mornings….”

—-”Don’t tell anyone, but we’re doing the public beta stress test, so the publisher can know how many players per server he can expect. There’ve been some bugs and balance problems found, though, so they might push back the actual release for another billion years. Although the publisher is calling it good enough and might shove it out the door as it is.”

——–”A billion year beta? I didn’t realize Google was the creator!”

————”Well, it is called Google Earth”

:) Follow this thread here.

And start reading Slashdot. IT may be a little US-centric at times, but the insight and rational debates that are a part of discussions always leave you better informed.

Firefox like tabs in your console

GNU screen is an extremely useful utility when used on remote machines. If you have a flaky net connection that disconnects often, it can be a boon.

What do mean: “tabs”?

GNU screen emulates a terminal, using your default shell. You start it by simply running

$screen

You get a welcome message and to a working shell. This is your open “tab” or screen. To start a new tab, enter the keys Ctrl-a + c (control-a followed by c). This opens a new tab with an empty shell. the first shell is “0″, second is “1″ and so on.

To move to shell X, use Ctrl-a + X.. so to go back to the first shell, i hit Ctrl-a + 0.

To scroll up in the tab, when text has run through the screen, press Ctrl+[ , and you are now in scroll mode: you can use the arrow keys, home, end, pgup and pgdown, etc to scroll on the screen. Esc closes the scroll mode.

Screens are persistent

So your network was reset and you connection to the remote server lost. Worry not, screen is still running up there. Login to your account again, and run

screen -x

This will attach to your old screen session, and your wordspace and opened tabs are all present :)

You may always want to start off with screen -x initially. If no session exist, this will report an error and you can start a new session using screen. If one does you will attach to it. If more than one does they will all be listed and you can attach to any one of those.

Multiplayer mode

This feature of attaching to open screen sessions isn't restricted to you alone. Another user logged into the system can also enter screen -x, and join you. You can both now collaborate on the screen! This is extrememly useful when you need the help of another person to get something done.. and you get to see live as they do their thing.

So, hope I've sold you on screen. Use it. The official page is on GNU.org, but its probably alreayd a part of your system or available in your distributions package repository.

Screenshots should be listed at google's result.

Default key bindings for various tasks are here and the manpage is here.

[update: To get a bar at the bottom of the console to list all windows + other details, take a look at the guide at redhatmagazine.com]

Nexenta Hackathon

The Nexenta hackathon session starts in about a day. If you’ve been thinking of participating, join in at #nexenta@freenode and request your account.

More on Nexenta development in earlier posts here and here.

Python

So, I’ve finally picked up Python (been meaning to do this for quite some time), and find it to be beautifully intuitive. The ternary operator that goes

result = x if y else z

is an example of this intuitiveness.

Expect many more Pythonic posts in the future. For now, I’m considering the problems from Project Euler

Getting started with Nexenta Development - Part 2

In this part we will take a look at the steps followed to port an application from Ubuntu and build a package.

I decided to do this via a screencast. You may not be able to fastforward or rewind, so I’ve also listed out the steps you will need to follow below the screencast. Click below to open the screencast. Or download it for offline viewing here.

Getting started with Nexenta screencast

Getting started with Nexenta screencast

Getting Access

We have a build machine available at gnusolaris.org where you can login to do your nexenta development (and not have to hassle with installing locally). You will use ssh to login, and can get the details by asking on IRC (#nexenta@freenode), or on the development mailing list gnusol-devel@sonic.net.

Logging in

You can login using your favourite shell and terminal program. The screencast uses gnome-terminal. If you are on Windows you can use the Putty client. Use

ssh username@gnusolaris.org

and enter the password when prompted.

Entering the Devzone

One of the core features of opensolaris is Zones (zfs is currently stealing all the thunder). Since giving root access to everyone is not an option, and building without it is not one either, the Nexenta project has innovated and created the so called development zones. These provide a method to quickly create a developer environment and give you root access to it. When no longer required, this zone can be painlessly removed.

The commands sure would be complex.. right? As simple as

  • devzone_create  — creates a development zone
  • devzone_enter — enter a devzone
  • devzone_free — remove the zone when no longer required :)

Simple as that.

Once you have entered a newly created zone, use the following commands to get it up to date

apt­-get update; apt-­get dist­-upgrade

Also, you will have to create/import your gpg key for signing packages. Further instructions at http://www.nexenta.org/os/CreatePublicGPGKey

Building a package

So now that we have our environment ready, lets build a package. In the screencast we take an example of libid3tag, which is a C library that is used to parse the headers in mp3 files.

First check if the package is available in the repository (Well libid3tag is not, but you would need to check if the package you are trying to port is already in or not)

#apt-cache search package

Searched for the expression package in the repository and lists the matches if present.

If it doesnt exist, you get it from Ubuntu’s repostiory mirror using the apt-upstream-tool

#apt-upstream-tool -e -p package

-e : extract the package

-p : the package name

Once we have the sources.. move into the directory, there would be 2 copies.. one original, and one for us to edit and use.

Move into this directory (this is referred to as the “package root”) and make sure the changelog reflects the distro as Nexenta. You can edit the changelog entry using

#debchange

in the package root.

Next satisfy all the build dependencies of the package.. this is required if the package has to built. Do this via running the following command in the package root.

#apt-satisfydepends

The above tool will lookup all dependencies and install them from the repository if available. (If not, you would also have to port that package)

Once the above completes successfully, create the package using

#dpkg-buildpackage -sa

-sa : Bundle the source code with the package

If the above completes successfully, you will be presented with a prompt to enter your GPG passphrase to sign the package.

Once this is done your package is built and present in the parent directory to the package root. Install all .deb files to verify that they install correctly. Do this using

#dpkg -i packagename.deb

You can also take a look at the contents of the deb using

#dpkg-deb -c *.deb

Once the install goes smoothly and all looks good, upload it to the repository using

#dput *.changes

This will upload the files to the repository, and send out mails to the nexenta-changes mailing list.

Further information is availabe on the Nexenta wiki documentation section and at http://www.nexenta.org/os/BuildingPackages