Arch Linux Newsletter

Apr 03, 2008
1.0.0

Eduardo "kensai" Romero - "Newsletter Author" - Web Log

Welcome

So, we meet again. I have a lot of new information. Since the last newsletter there have been some changes; they should not go unnoticed. The first is that we are changing our release basis to a monthly schedule, instead of the bi-monthly schedule I have tried to stick to. This should mean more robust information included in the newsletter, and better overall quality. Now there is more time for coordination, organization and no procrastination (It just sounded cool, didn't it?).

Another change is the addition of contributed articles, that's right, you are encouraged to write an article, and email it to me. I will put it here in the newsletter so all of our readers can enjoy. Branko Vukelić (foxbunny) took the first shot at contributing an article. Feel free to contribute your own ideas. All of this and more amounts to a good newsletter release, one that we hope you will enjoy.

All of this wouldn't be possible if it weren't for the help of the hard-working newsletter team. I owe you guys so much, you have been supporting this effort in ways I could have not imagined possible. Keep up the awesome work guys!

- Eduardo "kensai" Romero

Table Of Contents

Front Page News

Dangerous dbus update for testing

There's a dangerous dbus update coming up for the testing repository. The package itself isn't so special, as it works fine, but the fact that every dbus-daemon process on your system will crash during the upgrade can lead to unpleasant surprises.

Testing users: please be aware of this and run your upcoming upgrades from a plain text console instead of from X. One of the unpleasant surprises is that xorg-server in testing goes down with dbus while it's upgrading, leading to loss of important work or an interrupted package upgrade process.

Perl 5.10.0 moved to core

The latest release of perl 5.10.0 has been moved to core. This package is built following the Perl Policy document found on the wiki. Pay attention to the upgrade notes because some things have changed and may require some action.

netcfg v2 has replaced netcfg from initscripts

netcfg v2 is a complete rewrite of the netcfg that was previously included within 'initscripts'. netcfg v2 has been moved into a different package 'netcfg'.

netcfg v2 is feature compatible, but not configuration compatible. Configurations need to be rewritten for netcfg v2, and examples are included in /etc/network.d/examples.

For more information on transitioning to netcfg v2, please check the wiki:
http://wiki.archlinux.org/index.php/Network_Profiles

Arch in the Media

Arch Linux: Popular KISS distro

"Arch Linux is one of the more popular KISS distributions out there. What's it all about? To help us understand what make Arch Linux so great, we've asked the lead-developer - Aaron Griffin - some questions."

A History Lesson

Contributed by: Dusty Phillips

Wiki History

Believe it or not, one of the primary complaints about Arch when I started was how little documentation it had. You were expected to know what you were doing. Always. Questions were asked repeatedly on the forum and mailing list and your only resource for documentation was a search of these archives.

Markku (rasat) instantiated the first attempt at a wiki-like system by creating a 'wiki' user account on the forum and publishing the password (its 'wiki' and the account is still active!). The idea was that anyone could edit existing forum posts and howtos and he'd sticky them. It didn't catch on.

Markku and I were primarily responsible for setting up the first phpwiki. I ported many HOWTOs and articles that had been posted to the forum and wrote several new ones. Community involvement steadily increased and we ended up with...

...an incredible mess. Phpwiki didn't scale well. Eliott (cactus) was responsible for porting us over to mediawiki, basically single handedly. We had a big wiki migration day where everyone pitched in to help clean up articles that had been converted to Mediawiki syntax using some automated scripts he had scavanged off the internet and authored himself.

But we still had an incredible mess. The wiki improved slowly after this. It was still disorganized and unprofessional. Branko (foxbunny) was largely responsible for improving the organization and categorization last year with plenty of discussion. The wiki has really come into its own since then, especially with the recent massive improvements Jules (Misfit138) has made to the Beginner's Guide.

General Linux News

Linux gains new architecture support

"Dozens of network-attached storage (NAS) servers and other consumer appliances are about to gain mainline kernel and Debian GNU/Linux support. The 2.6.25 kernel, currently in the final stages of testing, will support Marvell's Feroceon micro-architecture and "Orion" SoCs, with Debian support close behind, sources say."

Happy Document Freedom Day, a day of "document liberation"

"March 26 marks the day that Thessaly became part of Greece again, the occasion of Queen Elizabeth II sending out the first royal e-mail, and country singer Kenny Chesney's birthday. Now, March 26 will also be known as Document Freedom Day, designed to raise awareness about free document formats and Open Standards. According to Document Freedom Day's about page, the day represents 'a global day for document liberation.'"

Featured Interview

Dan McGee

  1. Why did you choose Arch Linux?

    To be honest, I didn't do as much shopping around as most people do. Arch was the first Linux distribution I installed on my primary computer, and it has been there ever since. I used Linux quite a bit in university, and I decided to install it on my machine because I liked the power and control it gave the user. With that in mind, I went looking for a distribution that would put the power and control in my hands, and something I could do exactly what I wanted with. Arch seemed to fit the bill for most every thought that came in my mind. It was very KISS, but it still had a package manager. It was optimized, but it wasn't source-based requiring time-consuming compiles. And one of the most important things was that it would force me to learn how to do routine tasks from the command line. My initial install experience was not pretty, but it taught me a lot. :)

  2. What is your job on Arch Linux, can you go into details?

    My primary job would be "Pacman developer", although I have my hands dirty in a lot of other things. When I became a developer, it was because of my contributions to the pacman code rather than maintaining packages, and I've tried to keep doing that. At the time I came into the developers circle, pacman was in a bit of a limbo with regards to development- Judd didn't quite have the time anymore, and Aaron was trying to pick things up and maintain the code. Since the pacman 3.0 release, I've become more of the lead developer for pacman, as Aaron now has to lead the whole Arch team. This means I am in charge of deciding where pacman should head with regards to new features, managing bugs, and reading over patches from those people on the pacman-dev mailing list. And every once in a while, I actually get to do some coding myself.

  3. Is working for Arch Linux fun, or has it become more of a responsibility?

    It is a bit of both. I think balancing the two is key.

    When I initially stepped into pacman development, I was doing it purely because it was enjoyable. I wanted something to hack at besides school work, and I hadn't done much C coding in a while. Looking at some of the pacman code and seeing practical applications for the stuff I learned in algorithms classes was pretty cool. I still have moments like this, but once you have the official title of developer, a lot more responsibility falls on your shoulders. If we have a bug in pacman, I do feel like it is my responsibility to try and fix it, which can be burdensome. But I still try to spend a lot of my working time doing the stuff I want to do rather than just fix users bugs or feature requests.

    At times (like when reading an angry bug report) I think users can forget that the developers are just volunteers that signed up for something they found fun. Telling us we have a responsibility to fix their problem makes us a whole lot less willing to work with them to fix their problem. So keep this in mind, users. :)

  4. What does the "Arch Way" means to you?

    To me, it means simple and clean. I want a simple system that does what I say and nothing more. I want tools that don't get in my way. I want a fast system. You'll notice I've used "I want" a few times here- the Arch Way is something that developers have really defined themselves, as far as I can tell. We do what we think is ideal, and we have managed to get quite a following this way.

  5. Can you go into details on your future plans for the pacman package manager?

    There are two sets of plans- the realistic ones, and the ones that we could accomplish with infinite time.

    Realistically, my plans are for steady improvement. Many people may not know this, but pacman 2.9.8 would probably fail close to 50% of the scenarios we now have test cases for in our codebase with regards to conflict checking, dependency resolution, and installs slightly more complicated than single packages. With the help of others on the list, we have made a lot of progress towards ensuring correctness within pacman. This is one point that we will continue to improve on.

    Other things are also under development. We recently revamped a lot of the memory allocation within pacman, meaning it uses less than 50% of the memory it used to during a base install. A lot of code cleanup work has been done, resulting in easier development under the hood. We are also looking to make several efficiency improvements, such as reading tar.gz databases directly rather than unzipping them to disk, which should address a long-standing complaint of pacman being slow the first time you use it.

    Although I am the lead developer, I can only do so much work on my own. Other people on the pacman-dev mailing list, notably Xavier and Nagy, have made great contributions to the development of pacman. Much of the future plans come from those that have an idea and implement it. I think most people would agree that pacman is already a pretty good package manager though, so I'm not too worried we don't have some grand plan of where we are going.

  6. Do you have to deal with an addiction to tacos?

    My second title for Arch is "official taco chef", so you tell me.

  7. I get the feeling you are sane, Do you actually think Aaron Griffin can lift a car over his head?

    I have seen him do this with my own eyes, so I know he can.

Devland

Contributed by: Renato Leão

Forum Highlights

Contributed by: Dusty Phillips

Mailing List Highlights

Contributed by: Renato Leão

Expand your Knowledge

Five more PHP design patterns

"PHP V5's object-oriented features give you the ability to implement design patterns to improve your code's design. When you improve your code's design in this way, it becomes more readable, more maintainable, and more robust to absorb changes."

Hidden Linux : Doing the splits

"I've recently been converting a bunch of old spoken-word cassette tapes to digital format. The Audacity audio editor (also available for Windows and Mac users) is the ideal tool. It's built-in effects -- which include normalising and noise removal -- make it even more useful, and it can save files in a variety of formats including WAV, AIFF, FLAC, OGG and MP3. But there's one trick it can't handle..."

Contributed Article

Setting up NetBeans for Ruby on Rails development (on Arch Linux, of course)

by Branko Vukelić

In this article, I'll give you a quick overview of setting up NetBeans for Ruby on Rails development on our beloved Arch Linux. This tutorial is Arch-specific, but parts of it can probably be applied on most distributions, since I basically stole some of the instructions from resources on other distributions. :)

I dedicate this article to my great friend, and the grandmaster of the Arch Linux Newsletter, Eduardo "k3nsai" Romero. Good luck with your programming, man, and don't edit this part out. :)

To Dusty, I know you are Django developer, but hey, you can write about Django next time!

Proofreader Response (Dusty): I know you're a django coder now too! Sorry we couldn't get this published while you were still a rails guy.

About Netbeans

So, have you even heard of NetBeans IDE? Sure you have. You haven't? Well, it's one of the best out there, and, naturally, it's also open-source. But if you are Ruby [on Rails] developer, it gets even better. This is *the* best integrated development environment for Ruby on Linux (and I guess there's hardly any match for it elsewhere, too).

Apart from Ruby and the Ruby on Rails framework, the NetBeans website lists the following technologies as supported: AJAX, C/C++, Java, Javascript, Mobile development, XML. I know for a fact it supports PHP as well through a 3rd party plugin, also UML, and a bunch of Java frameworks. Since I mentioned plugins, you should know that NetBeans is *very* extensible through plugins, and sports a nice plugin manager that not only installs the plugins, but keeps track of available updates (it also self-updates, just so you know).

This IDE is a Java application However, I think it boots much faster than Eclipse, which is also developed in Java, especially if you use the Ruby-only version (which is, of course, the same NetBeans IDE with only Ruby and Rails plugins preinstalled).

NetBeans IDE and Sun Microsystems

NetBeans was originally developed by a group of Czech developers. Their goal was to create an IDE written entirely in Java. Since 1996, when development began, they had released a few versions of the IDE, when Sun noticed it. At the time, Sun didn't have any good development tools (http://www.developer.com/java/other/article.php/631131) so they decided to buy two of the leading Java development tools Forte and NetBeans.

Sun didn't have much luck with Forte, so, in June 2000, they decided to roll out NetBeans as open-source application. Since its release, NetBeans has helped Sun create a loyal developer base around Java, but has also allowed many non-Java developers to use an excellent and well-polished IDE.

Obtaining and installing NetBeans IDE

The current version as of this writing is 6.0.1. However, the version in the Arch Linux [community] repository is 6.0. When obtaining NetBeans, you therefore have a choice of grabbing the Linux installer from NetBeans website (http://download.netbeans.org/netbeans/6.0/final/), or installing the Arch package with pacman. Some people swear by the latter method, so we'll cover that first.

Type this in your console:

# pacman -Sy netbeans

It wasn't hard was it? There you have it. NetBeans is all yours now.

If you want the recent version, or you prefer to have a Ruby-only version (Ruby on Rails included, of course), you'll want to download from NetBeans website.

This procedure is also deceivingly simple. Simply Click the download link (Ruby version is mere 22 MB), and after you've got the netbeans-6.0.1-ml-ruby-linux.sh file, 'chmod +x' on it (that means give it execute permission, silly) and run the file. It will present you with an easy-to-follow installer, and you'll have NetBeans installed in your home directory in no time at all.

I have found that Ruby-only version of the IDE boots a bit faster and consumes less memory than the full version. So, unless you plan to exploit all supported technologies, I suggest you use the Ruby-only version.

And a word of warning. Don't mix the Arch package with .sh files from netbeans.org. Pick a side eary on, and stick to it. If you want to switch in mid-air, you have to remove the preferences (I think these are in ~/.netbeans).

Setting up Ruby development environment

After (or before) you install NetBeans, you need to set up other things for your ruby development needs.

NOTE: NetBeans IDE comes with jRuby. It is a Java implementation of Ruby and it is integrated into NetBeans. However, for many reasons, it is worth your while to set up a 'real' Ruby development environment on your system. One big advantage is that you can use the FastDebugger that way (jRuby doesn't support FastDebugger). Therefore I strongly suggest following the instructions below and creating a proper Ruby setup.

Setting up Ruby

Installing Ruby is pretty straightforward. Nowadays, every distribution on this Planet has a package for Ruby, and Arch Linux is no exception.

# pacman -Sy ruby

That's it. Proceed to the next section.

Setting up RubyGems

Ruby uses packages called 'gems' to install plugins and libraries. Most of the available gems can be found at RubyForge (http://rubyforge.org/. The package manager for gems is RubyGems (http://www.rubygems.org/). There are two ways to install RubyGems. But both ways have their pros and cons, and you really need to think about what you want here.

The first way is to simply grab rubygems from the Arch repositories.

# pacman -Sy rubygems

Now, if you do this, you will have a LOT of trouble setting up RubyGems for use with NetBeans. You will be able to install gem packages using the command line, but making RubyGems work with NetBeans' built-in gems manager will be tricky.

The other way is to compile RubyGems yourself. It is a bit involved, but it's not too hard either. I'll show you how to do this here. (I'll assume you will be installing into your home directory.)

First off, grab the source tarball:

 $ wget
http://rubyforge.org/frs/download.php/29548/rubygems-1.0.1.tgz 

Note that the version we are using here is 1.0.1 (you may find this version outdated at the time of reading, but this is the latest as of this writing). If the above command doesn't work for you, you can still go to RubyGems page on RubyForge and grab the source package.

Unpack the source:

 $ tar xvf rubygems-1.0.1.tgz 

You will now have a rubygems-1.0.1 folder so 'cd' into it and issue the following commands (this will assume you are okay with installing RubyGems into a hidden .rubygems directory inside your home directory):

  $ export GEM_HOME=/home/your_real_user_name/.rubygems/gems
  $ ruby setup.rb config --prefix=/home/your_real_user_name/.rubygems
  $ ruby setup.rb setup
  $ ruby setup.rb install
  

After you are done with compiling RubyGems, edit your .bashrc file and add the follwing lines:

  export GEM_HOME="/home/your_real_user_name/.rubygems/gems" 
  export GEM_PATH="$GEM_HOME:/usr/local/lib/ruby/gems/1.8"
  export PATH="$PATH:/home/your_real_user_name/.rubygems/bin:/home/your_real_user_name/.rubygems/gems/bin"
  

Save the file, log out, and then back in. There. You installed RubyGems into your home directory, and there was much rejoycing.

Setting up MySQL and Ruby MySQL support

You need to install MySQL as well, if you plan on developing Rails application. Well, not exactly. Rails supports many databases, and the default for the latest Rails 2.0 is SQLite (because most Rails developers use Macs and SQLite ships with OSX). We'll also cover SQLite later.

Installing MySQL is pretty easy.

# pacman -Sy mysql

However, in order for Ruby and Rails to work with it, you need to install the MySQL adapter. So, type this command:

# pacman -Sy mysql-ruby

One more detail. MySQL gem for Rails (I am not really sure you need this, but I always install it just in case).

$ gem install mysql

That's it.

We'll set the root password for MySQL now:

# mysqladmin -u root password PASSWORD (I dare you to think of a better password
# than 'PASSWORD'!)

If you want MySQL to start when your system boots, add 'mysqld' to your daemons list in /etc/rc.conf.

To start MySQL immediately, type this command:

# /etc/rc.d/mysqld start
Setting up SQLite3

If you want MySQL, you may skip this section. However, as we've mentioned before, SQLite is the default database for Rails development. So, when you use the 'rails' command to set up a new project, you will end up with a database configuration file for SQLite, unless, of course, you tell Rails otherwise. On the other hand, when you use NetBeans IDE, MySQL is still the default, because the current version of NetBeans was released before Rails 2.0. Either way, you can easily choose a database during creation of new projects.

Installing SQLite is no more difficult than installing MySQL:

# pacman -Sy sqlite3

As with MySQL, you also need the adaptor for Ruby/Rails:

# pacman -Sy ruby-sqlite3
Database(s) GUI tools

If you like GUI tools, and would like to use them to view and/or edit your projects' databases, you can install a couple of tools for that as well.

For MySQL there is a package called mysql-gui-tools.

# pacman -Sy mysql-gui-tools

There are, of course, other tools, but those are the ones I use.

Apache web server

DISCLAMER: I haven't really done this too many times, and I've tested even less, so this may not work for you (or at all). I use Mongrel for developing Rails apps, and then go straight to deployment on the host. These instructions are basically adapted from various tutorials on the Internet, so Google around if something doesn't work.

If you plan on testing your Rails applications using Apache, you will also need FastCGI. So, let's install everything you will need.

# pacman -Sy apache fcgi

Now you need to edit your httpd.conf. Open the file /etc/httpd/conf/httpd.conf in your editor.

Make sure the following lines are uncommented:

  LoadModule include_module				modules/mod_include.so
  LoadModule rewrite_module				modules/mod_rewrite.so
  LoadModule ssl_module 				modules/mod_ssl.so
  LoadModule suexec_module 			modules/mod_suexec.so
  

To start Apache immediately, type:

# /etc/rc.d/httpd start

If something goes wrong and Apache doesn't start, try this:

# apachectl start

It should give your more details on what went wrong.

To autostart Apache when your system boots, edit the daemons list in /etc/rc.conf and add httpd there.

Finally, edit your /etc/hosts file and add the following line:

127.0.0.1      localhost.localdomain   localhost 
Installing Subversion

Some Rails plugins require you to have Subversion (http://subversion.tigris.org/) installed on your system. Using Subversion with NetBeans, and using Subversion in general is out of this article's scope, so do some Googling if you want to know more.

To install Subversion, do this:

# pacman -Sy subversion
Installing Rails

Rails can be installed as a RubyGems gem. This is how we are going to install. Don't bother installing the Arch package. Installing it as a gem is always the best solution.

Before we install the gem, we need to update the RubyGems (if there are updates available).

$ gem update --system

If you've installed any other gems, update those as well, just in case.

 $ gem update 

Now, there are two ways for installing Rails gems (surprise, surprise!). One is installing using the 'gem' command.

 $ gem install rails 

The other is using the NetBeans' own gem manager. If you want to use the latter approach, open NetBeans IDE (you didn't see that coming, did you?) and click on the RubyGems item in the Tools menu. The Ruby Gems dialogue is pretty straightforward, so I don't need to tell you how to use it. Just go the New tab, and type 'rails' into the search box. It doesn't do search-as-you-type, so you need to hit [ENTER]. And yeah, click on the Install button *after* you've selected the rails gem, not before... err, sorry, I know you knew that.

Installing Mongrel

Rails comes with its own web server based on Ruby's standard WEBrick library. However, this server is rather limited, and most Rails developer prefer using the production-strength Mongrel. Installing Mongrel is very easy, and using it is even more so.

So, let's install mongrel:

 $ gem install mongrel 

You can, of course, install it using the NetBeans' gem manager as well.

Installing ImageMagick and RMagick

Image manipulation is one of common tasks for most web applications. Even for simple image uploads with thumbnailing, it helps to use a ready-made plugin such as attachment_fu, and most of the plugins use any of the Ruby image manipulation libraries. RMagick is one such library and it is also one of the most widely used ones.

RMagick provides a Ruby interface for ImageMagick, so we will install them now.

# pacman -S imagemagick
$ gem install rmagick

Configuring NetBeans IDE

If you installed a classic Ruby development environment as per instruction in previous sections, you can now configure your NetBeans IDE.

Let's start with some plugins.

NetBeans plugins

Go to the Tools menu and select the 'Plugins' item. This will open the NetBeans' plugin manager, very similar to the gem manager. The Ruby-related plugins you will most certainly want to install are the following:

Other interesting plugins are:

=== Configuring Ruby plugin

Once you are done with installing plugins, go to Tools menu and select 'Options'. Click on the Ruby icon and edit the 'Ruby Interpreter' text field to read '/usr/bin/ruby'.

Now, select the 'Fast Debugger (ruby-debug-ide)' radio button (if you haven't installed it yet, you will have a button for installing Fast Debugger instead).

If you want to (or have to) install Fast Debugger from console using the 'gem' command, type this command:

 $ gem install ruby-debug-ide 
=== Changing the color scheme

Now go to the 'Fonts [and] Colors' section and select 'Ruby Dark Pastels' from the list of profiles. This profile has some problems in some cases (like previewing a change since the last revision) readability will be diminished. However, in most cases it is much better than the default color scheme.

When you are done, click OK and restart NetBeans.

== Conclusion

Now you have a perfectly (well, that's questionable, but, hey!, nobody's perfect) set up NetBeans + Ruby and Rails environment.

There are some issues though. Well, only one to be precise. In some rare cases, SQLite3 may not act as expected. Rails developers have dismissed such problems as 'local setup issue', so be warned! I have decided to stick with MySQL, and I suggest others to do so as well, or tell us how to solve SQLite3 problems. ;)

Hope you've enjoyed this article.

Disclaimer: After the writing of this article, Branko Vukelić, has become a Django user and says "it was love at first sight".

Tips and Tricks

Contributed by: Ronald van Haren

Aliasing commands in bash

From the bash manpage, the function of aliases is to 'allow a string to be substituted for a word when it is used as the first word of a simple command'. This basically means that you define an alias for a lengthy command, so next time you type the alias, the command is run.

You can define aliases either from the command line, in ~/.bashrc, or in /etc/profile. The basic syntax is:

 alias name=command 

in which name is an alias for command.

A good and simple example, which is most likely already present in most users ~/.bashrc is

 alias ls='ls --color=auto' 

Whenever you want to (temporarily) unset an alias, you can use

unalias name 

where name should be substituted by the alias you want to unset.

This should give you enough information to start playing with aliases in bash. More information is of course available in the bash manpage.

The Humor Section

Contributed by: Mr. Elendig

 
  -!- mode/#archlinux [+o MrElendig] by ChanServ 
  -!- mode/#archlinux [-b *!n=c858d5d*@*] by MrElendig -!- 
  mode/#archlinux [-o MrElendig] by MrElendig 
  scion: :O 
  scion: +b
 scion: +b 
 MrElendig: scion: he got his whole isp banned earlier :p
 scion: ban someone!  
 Xilon: scion: you?  
 scion: even me i dont care 
 scion: as long as you unban me later 
 MrElendig: sets
 mode +b scion [gtfo :D:D:D:D:D] 
 scion: !insult MrElendig 
 phrik: MrElendig - You are nothing but an it-fowling assload of frothy cat.
 scion: :0 
 MrElendig: I know 
 MrElendig: and I'm proud of it!
 scion: argh 
 scion: :) 
 scion: im leaving on my own then -!-
 scion [n=scion@85.73.223.56] has quit["leaving"] 
 Xilon: scion: What good is a ban when you can't laff at the person who got it? :( 
 Xilon: aww
 
 
boblutz: Is anyone here a Toronto FC supporter?
MrElendig: !406 football 
phrik: Error 406: football Not Acceptable!  
scion: ss 
boblutz: wah!!  
* boblutz runs away
-!- boblutz [n=stansmit@d60-65-93-136.col.wideopenwest.com] has left #archlinux ["Leaving"] 

Closing

We have come to the end, but just for this month, we sincerely hope you enjoyed reading the newsletter. The Arch Linux Newsletter Team enjoyed making it for your reading pleasure. Please, feel free to contact us, and let us know of any opinions and/or suggestions for improvement. Also, we accept contributions, so feel free to contribute.

The best for all of you, from the Arch Linux Newsletter Team