Back from FrOSCon
Back from the FrOSCon conference (the only one that has even weirder capitalization than openSUSE ;D).
Mixed feelings. While it was a bit boring during the day as there was pretty much no one passing by the stands (not just ours), I'm not really convinced it's that useful to have a stand there... Of course, the great weather didn't help, as most non-contributor-people who would might have come to the conference out of curiosity will most definitely have preferred making good use of the sunny weather that weekend. Understandable :)
Mind you, I definitely had a good time, as the organization is very well done, the catering is nice (at least for speakers and booth personnel, didn't try the other options), the barbecue with DJ on Saturday evening was excellent, and, of course, I got to see quite a lot of people I know through openSUSE and FOSDEM (quite a lot of people wearing the ultimate street cred t-shirt of FOSDEM supporters, btw ;)), and a few I didn't. Got to chat a lot with core Mageia contributors as well, which was definitely fun and interesting. Hence, lots of great FOSS people around, awesome.
Was obviously also great in the evening/night, chatting around beers (even if it was Kölsch (yellow water with a tiny bit of alcohol and some bitter)) with fellow contributors across different projects. Also got to meet Jan Krings for the first time (as well as Marcus Möller, Jan Krings and Jan Weber, which I've met IRL before).
If you've never been at such events (even more striking at FOSDEM methinks, because there's a huge crowd, with lots and lots of projects there, and a lot of discussions and cross-pollination going around), and are mostly on the "user" side of things, then just stop the hate. Forget about distrowars, competition, and all that. That's just totally not how it works for almost all the people who actively contribute to their projects. Even between BSD and Linux. We may have our differences and preferences, but we all respect the work, brains, excellence, and love everyone is putting into their respective undertakings.
But in terms of audience, I wonder whether FrOSCon shouldn't have a sharper focus. At least, the focus wasn't all that clear to me, it seems like the target is "everything". There are stands of distribution projects, which are typically for the non-Linux/BSD-users-yet to grab some DVDs and play with it. There are stands of vendors, who pay for their stand, and whom are either selling books, or showcasing their services and solutions to potential customers, or hunting for highly qualified hackers. That's a pretty different audience already, at least when compared to the more entry-level distribution showcase stands. Then there are tracks and "devrooms" (yes, they really call them the same as at FOSDEM :)), which is .. dunno.. depends, some did sound more advanced, for developers, and some were a lot more entry level (e.g., paraphrasing, "openoffice.org is open source, what does that mean for me, user ?").
Just my 2 cents, but I'm under the impression that it could serve a better purpose to be less general purpose and have a slightly sharper focus in terms of target audience. But hey, maybe it was just the weather (heard from others, e.g. from fellow openSUSEr Jan Weber) that there were clearly a lot more people the years before), and maybe the organizers are just fine with the amount and type of audience that was there.
PackageKit backend for Software Center: pencils down report
Today the official coding period of GSoC 2011 ends. It’s been a four months journey, with challenges, failures and achievements, but nevertheless fun
.
You may be wondering what is the status of my project; here it goes: current version of Software Center can be tested in openSUSE Factory; it can populate its database with data from an AppStream XML; it shows application information (fetched from the package manager); it installs and removes software, in the same friendly manner the ubuntu does (showing progress, handling dependencies).
Moreover, my patches to gobject-introspection, PackageKit and obviously software-center, are all upstream and released; kudos to the project managers and the community for helping me get them there.
There are still parts that need work; some of then have been intentionally left with lower priority from my initial plan, in order to get a functional version up by the end of the program; others weren’t covered by the planed feature set. These are: performance (current version is rather slow on first load, and also on showing list, due to many resolve calls), transaction history (it can be implemented using the almighty PackageKit), reviews (currently these are fetched from ubuntu servers), screenshots (same as reviews). Software Center itself passes a period of active development and changes, once its fancy Gtk+3 interface stabilizes, more work can be done into polishing the <other-distro> experience.
Although I’m generally happy with the result of the project, since this is a report, I want to outline what differed from my expectations and slowed me down from bringing a full feature set cross-distro Software Center:
- fast development – when I started hacking on software-center’s GUI, it was pygtk Gtk+2 based; a Gtk+3 branch existed, but was far from being usable; under the last few weeks, it was merged, and actively developed into a newly designed interface (which will become software-center 5.0);
- Gio, GLib, GMenu, GObject, usually libs starting with a capital G, which introspection bindings are about to stabilize; having to get them from trunk, and dealing with API breakage;
- waiting for the pygobject release; when it came, it broke my pygtk mixed work (since static vs GI are no longer permitted in the same program – which is the right choice. btw), and left me with no working GUI; luckily, I took the best advices on IRC, and also software-center devs fixed things along, so that the new UI isn’t affected by the underlying changes.
Something worth mentioning in this finale post is that OBS totally rocks.
Overall, I hope this effort won’t stop here, and with a bit of luck, it will be shipped by your favorite distribution
PS: for more implementation/testing/plan details, I have created this page on openSUSE wiki, please check it out.
Fix “rake/rdoctask is deprecated. Use rdoc/task instead”
Another problem I’ve run into while starting the obs web server after the system upgrade is:
/build-service/src/webui> ./script/server => Booting WEBrick => Rails 2.3.11 application starting on http://0.0.0.0:3000 No local development environment found: No such file or directory - /home/surfmonkey/branch/build-service/src/webui/config/environments/development.opensuse.rb Using global development environment /home/surfmonkey/branch/build-service/src/webui/config/environments/development_base.rb ** Erubis 2.6.6 Missing these required gems: daemons You're running: ruby 1.8.7.334 at /usr/bin/ruby rubygems 1.5.0 at /home/surfmonkey/.gem/ruby/1.8, /usr/lib/ruby/gems/1.8 Run `rake gems:install` to install the missing gems.
I don’t remember running into this problem before.
$ rake gem:install daemons rake/rdoctask is deprecated. Use rdoc/task instead (in RDoc 2.4.2+) rake aborted! Don't know how to build task 'gem:install'
The stack traces look like the following:
/usr/lib/ruby/gems/1.8/gems/rake-0.9.1/lib/rake/task_manager.rb:49:in `[]' /usr/lib/ruby/gems/1.8/gems/rake-0.9.1/lib/rake/application.rb:111:in `invoke_task' /usr/lib/ruby/gems/1.8/gems/rake-0.9.1/lib/rake/application.rb:90:in `top_level' /usr/lib/ruby/gems/1.8/gems/rake-0.9.1/lib/rake/application.rb:90:in `each' /usr/lib/ruby/gems/1.8/gems/rake-0.9.1/lib/rake/application.rb:90:in `top_level' /usr/lib/ruby/gems/1.8/gems/rake-0.9.1/lib/rake/application.rb:129:in `standard_exception_handling' /usr/lib/ruby/gems/1.8/gems/rake-0.9.1/lib/rake/application.rb:84:in `top_level' /usr/lib/ruby/gems/1.8/gems/rake-0.9.1/lib/rake/application.rb:62:in `run' /usr/lib/ruby/gems/1.8/gems/rake-0.9.1/lib/rake/application.rb:129:in `standard_exception_handling' /usr/lib/ruby/gems/1.8/gems/rake-0.9.1/lib/rake/application.rb:59:in `run' /usr/lib/ruby/gems/1.8/gems/rake-0.9.1/bin/rake:32 /usr/bin/rake:19:in `load' /usr/bin/rake:19
So I open up my Rakefile and make these lines
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
to
require 'rake'
require 'rake/testtask'
require 'rdoc/task'
Supposedly, I should also add gem “rdoc” to my Gemfile:
$ cat /usr/lib/ruby/gems/1.8/gems/jquery-rails-1.0.9/Gemfile source :gemcutter # Specify your gem's dependencies in jquery-rails.gemspec gemspec # Rails is already being pulled in through gemspec # gem "rails", :git => "git://github.com/rails/rails.git" gem "rack", :git => "git://github.com/rack/rack.git" gem "sprockets", :git => "git://github.com/sstephenson/sprockets.git" gem "i18n", "0.6.0beta1"
But I’m unable to overwrite the write permission:
I don’t understand what’s going on. Deleting gemfile.lock wouldn’t help.
Someone on the web suggested adding rdoc/ to my .gitignore, too.
Anyway, I just go ahead and install the daemons:
$ sudo gem install daemons
Fetching: daemons-1.1.4.gem (100%)
Successfully installed daemons-1.1.4
1 gem installed
Installing ri documentation for daemons-1.1.4...
Installing RDoc documentation for daemons-1.1.4...
So what are these daemons, after all?
Daemons provides an easy way to wrap existing ruby scripts (for example, a self-written server) to be run as a daemon and to be controlled by simple start/stop/restart commands. You can also call blocks as daemons and control them from the parent or just daemonize the current process. Besides this basic functionality, daemons offers many advanced features like exception backtracing and logging (in case your ruby script crashes) and monitoring and automatic restarting of your processes if they crash. — RubyGems.org
Finally, I’m able to successfully start the web server:
$ ./script/server
=> Booting WEBrick
=> Rails 2.3.11 application starting on http://0.0.0.0:3000
No local development environment found: No such file or directory - /home/surfmonkey/branch/build-service/src/webui/config/environments/development.opensuse.rb
Using global development environment /home/surfmonkey/branch/build-service/src/webui/config/environments/development_base.rb
** Erubis 2.6.6
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-08-22 16:03:59] INFO WEBrick 1.3.1
[2011-08-22 16:03:59] INFO ruby 1.8.7 (2011-02-18) [i586-linux]
[2011-08-22 16:03:59] INFO WEBrick::HTTPServer#start: pid=9781 port=3000
. . . . . .
libxml2 problems when installing nokogiri
Since I upgraded openSUSE 11.3 to 11.4, the dependencies in my local buildservice repository got updated as well. When I tried to start the web server, it failed:
~/branch/build-service/src/webui> ./script/server => Booting WEBrick => Rails 2.3.11 application starting on http://0.0.0.0:3000 /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:29:in `gem_original_require': no such file to load -- nokogiri (MissingSourceFile)
Nokogiri parses and searches XML/HTML very quickly, and also provides CSS3 selector support and XPath support for document searching.
I installed the nokogiri parser before the system upgrade, but it might’ve gotten lost or updated during the upgrade. So I have to install nokogiri again on 11.4:
~/branch/build-service/src/webui> sudo gem install nokogiri Fetching: nokogiri-1.5.0.gem (100%) Building native extensions. This could take a while... ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. /usr/bin/ruby extconf.rb checking for libxml/parser.h... no ----- libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies. ----- *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.
I remember seeing this problem before. The solution is to simply install the dependencies first:
$ sudo zypper install libxml2
Loading repository data...
Reading installed packages...
'libxml2' is already installed.
No update candidate for 'libxml2-2.7.8-16.17.1.i586'. The highest available version is already installed.
Resolving package dependencies...
Nothing to do.
The trick is to install libxml-devel package instead:
$ sudo zypper install libxml2-devel Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW packages are going to be installed: libxml2-devel ncurses-devel readline-devel 3 new packages to install. Overall download size: 2.6 MiB. After the operation, additional 18.9 MiB will be used. Continue? [y/n/?] (y): y Retrieving package ncurses-devel-5.7-14.1.i586 (1/3), 2.5 MiB (18.4 MiB unpacked) Retrieving: ncurses-devel-5.7-14.1.i586.rpm [done (230.3 KiB/s)] Retrieving package readline-devel-6.1-18.25.1.i586 (2/3), 42.0 KiB (75.0 KiB unpacked) Retrieving: readline-devel-6.1-18.25.1.i586.rpm [done (0 B/s)] Retrieving package libxml2-devel-2.7.8-16.17.1.i586 (3/3), 81.0 KiB (427.0 KiB unpacked) Retrieving: libxml2-devel-2.7.8-16.17.1.i586.rpm [done (165.1 KiB/s)] Installing: ncurses-devel-5.7-14.1 [done] Installing: readline-devel-6.1-18.25.1 [done] Installing: libxml2-devel-2.7.8-16.17.1 [done]
Also, install libxslt-devel:
$ sudo zypper install libxslt-devel Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW packages are going to be installed: libgcrypt-devel libgpg-error-devel libxslt-devel 3 new packages to install. Overall download size: 355.0 KiB. After the operation, additional 2.0 MiB will be used. Continue? [y/n/?] (y): y Retrieving package libgpg-error-devel-1.9-4.1.i586 (1/3), 47.0 KiB (216.0 KiB unpacked) Retrieving: libgpg-error-devel-1.9-4.1.i586.rpm [done (156.2 KiB/s)] Retrieving package libgcrypt-devel-1.4.6-3.1.i586 (2/3), 106.0 KiB (183.0 KiB unpacked) Retrieving: libgcrypt-devel-1.4.6-3.1.i586.rpm [done (213.0 KiB/s)] Retrieving package libxslt-devel-1.1.26-2.1.i586 (3/3), 202.0 KiB (1.6 MiB unpacked) Retrieving: libxslt-devel-1.1.26-2.1.i586.rpm [done (228.3 KiB/s)] Installing: libgpg-error-devel-1.9-4.1 [done] Installing: libgcrypt-devel-1.4.6-3.1 [done] Installing: libxslt-devel-1.1.26-2.1 [done]
It looks like nokogiri needs both of these two dependencies resolved first:
☑ libxml/parser.h ☑ libxslt/xslt.h
Thus, the requirements for installing nokogiri are:
✓ ruby 1.8 or 1.9 ✓ libxml2 ✓ libxml2-dev ✓ libxslt ✓ libxslt-dev
Then, I’m able to install nokogiri:
$ sudo gem install nokogiri Building native extensions. This could take a while... Successfully installed nokogiri-1.5.0 1 gem installed Installing ri documentation for nokogiri-1.5.0... No definition for get_options No definition for set_options No definition for parse_memory No definition for parse_file No definition for parse_with Installing RDoc documentation for nokogiri-1.5.0...
- – – – – – –
Introducing Find Many Strings - A chrome extension
If I am using VIM, I can happily use CTAGS for this. Chrome highlights all the occurrences of the text that you searched for in yellow color. However when you search for another string, the old highlights disappear. It would have been nicer if any new string search starts highlighting in a different color. I could not find any plugin for achieving this, So, I wrote my own Chrome extension for this.
Please visit the extension page: https://chrome.google.com/webstore/detail/phabnclfbnmhmoipebjdfhkiacojlcnc
While I was trying to upload this extension, Google wanted me to make a screencast also. The video of the extension in action is available here (please watch in fullscreen - HD)
![]() |
| Search token input box |
![]() |
| Highlights in action |
This extension though created to satisfy a developer's need, will be very helpful for any common browser user who wants to search and highlight multiple strings in any webpage (say while searching a page with phone list for multiple people etc.)
The extension is open-source - MIT Licensed and is hosted in github. Your comments, patches, feedback, Likes, +1s, Shares, etc. are welcome. Since it is open sourced, you can feel safe about installing the extension :-)
openSUSE-LXDE logo contest starting now!
As recently announced here, the LXDE team is looking for graphics contributors. Trying to involve as much people as possible i created a graphic contest! Is time for you, cool graphics, to create a logo for the openSUSE-LXDE team!
The contest will start tomorrow, everyone is welcome to join!
All the rules are in our wiki!
So? what are you waiting for???
Is just the right time to
Have a lot of fun…
Live Upgrade openSUSE 11.3 to 11.4
Doing a live upgrade in openSUSE to the latest version has certain advantages:
- You only download the packages that need to be upgraded, saving a lot of bandwidth.
- During the upgrade you can still use your system (although this is not recommended); the only downtime will be the reboot after the upgrade.
- You do not have to write an ISO image to a DVD. You could also boot from 1) the Internet; or 2) a USB key, and install the rest from the Internet
The disadvantages:
- If, for any reason, the upgrade is interrupted (e.g., power outages, network disconnect) and the process can’t continue, you could be left with a broken system (that depends on where the process stopped, of course).
- If you have multiple systems to upgrade, you consume bandwidth each time, which is less efficient than downloading an ISO image.
The upgrade can be done on the command line or via the YaST module Wagon (if you are on an OpenSUSE desktop). Since the Wagon method is less tested than the command line update, we will use the command line method here for both servers and desktops.
1. Install the latest updates
Before doing the distribution upgrade, install the latest updates for OpenSUSE 11.3. Open a terminal and run
$ sudo zypper repos --uri
to check what repositories are used and enabled on the system.
Make sure that the line that contains http://download.opensuse.org/update/11.3/ in the URI column reads “Yes” in the “Enabled” column:
# | Alias | Name | Enabled | Refresh | URI
---+-------------------------------------+-------------------------------------+---------+---------+--------------------------------------------------------------------------------------------
1 | Packman Repository | Packman Repository | Yes | Yes | http://ftp.uni-erlangen.de/pub/mirrors/packman/suse/openSUSE_11.3
2 | Updates for openSUSE 11.3 11.3-1.82 | Updates for openSUSE 11.3 11.3-1.82 | Yes | Yes | http://download.opensuse.org/update/11.3/
3 | devel_languages_ruby_extensions | Ruby Extensions (openSUSE_11.4) | Yes | No | http://download.opensuse.org/repositories/devel:/languages:/ruby:/extensions/openSUSE_11.4/
4 | google-chrome | google-chrome | Yes | Yes | http://dl.google.com/linux/chrome/rpm/stable/i386
5 | openSUSE-11.3 11.3-1.82 | openSUSE-11.3 11.3-1.82 | Yes | No | cd:///?devices=/dev/sr0
6 | openSUSE:Tools | openSUSE:Tools | Yes | Yes | http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_11.3/
7 | openSUSE_Tools | openSUSE.org tools (openSUSE_11.3) | Yes | No | http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_11.3/
8 | packman | Packman repository (openSUSE_11.3) | Yes | No | http://packman.inode.at/suse/openSUSE_11.3
9 | repo-debug | openSUSE-11.3-Debug | No | Yes | http://download.opensuse.org/debug/distribution/11.3/repo/oss/
10 | repo-non-oss | openSUSE-11.3-Non-Oss | Yes | Yes | http://download.opensuse.org/distribution/11.3/repo/non-oss/
11 | repo-oss | openSUSE-11.3-Oss | Yes | Yes | http://download.opensuse.org/distribution/11.3/repo/oss/
12 | repo-source | openSUSE-11.3-Source | No | Yes | http://download.opensuse.org/source/distribution/11.3/repo/oss/
13 | ruby-devel | ruby-devel | Yes | No | http://download.opensuse.org/repositories/devel:/languages:/ruby:/extensions/openSUSE_11.3/
14 | server-database-unstable | server-database-unstable | Yes | Yes | http://download.opensuse.org/repositories/server:/database:/UNSTABLE/openSUSE_11.3
If the line reads “No” in the “Enabled” column, enable the repository as follows:
$ sudo zypper modifyrepo --enable #Alias_name
If there’s no repository with the URI http://download.opensuse.org/update/11.3/, then add the repository:
$ sudo zypper addrepo --check --name 'openSUSE-11.3-Update' http://download.opensuse.org/update/11.3/ repo-update
Now, install the latest updates:
$ sudo zypper refresh
Repository 'Packman Repository' is up to date.Repository 'Updates for openSUSE 11.3 11.3-1.82' is up to date.Repository 'Ruby Extensions (openSUSE_11.4)' is up to date.Repository 'google-chrome' is up to date.Repository 'openSUSE:Tools' is up to date.Repository 'openSUSE.org tools (openSUSE_11.3)' is up to date.Repository 'Packman repository (openSUSE_11.3)' is up to date.Repository 'openSUSE-11.3-Non-Oss' is up to date.Repository 'openSUSE-11.3-Oss' is up to date.Repository 'ruby-devel' is up to date.Repository 'server-database-unstable' is up to date.All repositories have been refreshed.
And
$ sudo zypper update
Loading repository data...Reading installed packages...
The following package updates will NOT be installed:
gpg2 gstreamer-0_10 gstreamer-0_10-plugin-gnomevfs gstreamer-0_10-plugins-base k3b k3b-lang kaffeine libassuan0 libgstapp-0_10-0 libgstinterfaces-0_10-0 libgstreamer-0_10-0 libmariadbclient16 libmariadbclient_r16 libmysqlclient16 libsndfile libtag-extras1 libxine1 libxine1-gnome-vfs libxine1-pulse mjpegtools perl-Try-Tiny python-numpy rubygem-actionmailer-2_3 rubygem-actionpack-2_3 rubygem-activerecord-2_3 rubygem-activeresource-2_3 rubygem-activesupport-2_3 rubygem-daemons rubygem-delayed_job rubygem-exception_notification rubygem-libxml-ruby rubygem-rack rubygem-rails-2_3 rubygem-rails_xss rubygem-rake rubygem-sqlite3 taglib
The following NEW packages are going to be installed:
build-mkbaselibs build-mkdrpms libreoffice-languagetool-en obs-service-download_files obs-service-format_spec_file obs-service-source_validator perl-Package-Stash-XS rubygem-rbx-require-relative
The following package is going to be REMOVED:
OpenOffice_org-LanguageTool-en
The following packages are going to be upgraded:
broadcom-wl build chromium-ffmpeg cpanspec dbus-1 flash-player foomatic-filters gimp gimp-help-browser gimp-module-hal gimp-plugins-python glib2 google-chrome-stable icedtea-web inst-source-utils iproute2 kernel-default kernel-desktop libapr1 libapr-util1 libfreetype6 libsndfile libsoup-2_4-1 libxml2 obs-api obs-productconverter obs-server obs-service-extract_file obs-service-recompress obs-service-set_version obs-service-tar_scm obs-source_service obs-utils obs-worker osc osc-source_validator perl-BSSolv perl-Package-Stash perl-Params-Util perl-Parse-CPAN-Packages perl-YAML permissions preload-kmp-default preload-kmp-desktop pullin-msttf-fonts rubygem-columnize rubygem-gem_plugin rubygem-linecache rubygem-mongrel rubygem-ruby-debug rubygem-ruby-debug-base telnet udisks yast2-mail
54 packages to upgrade, 8 new, 1 to remove.Overall download size: 123.6 MiB.
After the operation, additional 11.8 MiB will be used.Continue? [y/n/?] (y): y
In order to install 'flash-player', you must agree to terms of the following license agreement:
Do you agree with the terms of the license? [yes/no] (no): yes
Then kick back, and let zypper retrieve and install / upgrade these packages.
There are some running programs that use files deleted by recent upgrade. You may wish to restart some of them. Run 'zypper ps' to list these programs.
2. Run the distribution upgrade
Now that the latest updates are installed, disable all OpenSUSE 11.3 repositories:
$ sudo zypper modifyrepo --all --disable
Repository 'Packman Repository' has been successfully disabled.
Repository 'Updates for openSUSE 11.3 11.3-1.82' has been successfully disabled.
Repository 'devel_languages_ruby_extensions' has been successfully disabled.
Repository 'google-chrome' has been successfully disabled.
Repository 'openSUSE-11.3 11.3-1.82' has been successfully disabled.
Repository 'openSUSE:Tools' has been successfully disabled.
Repository 'openSUSE_Tools' has been successfully disabled.
Repository 'packman' has been successfully disabled.
Nothing to change for repository 'repo-debug'.
Repository 'repo-non-oss' has been successfully disabled.
Repository 'repo-oss' has been successfully disabled.
Nothing to change for repository 'repo-source'.
Repository 'ruby-devel' has been successfully disabled.
Repository 'server-database-unstable' has been successfully disabled.
And enable the OpenSUSE 11.4 repositories:
$ sudo zypper addrepo --name "openSUSE-11.4 OSS" http://download.opensuse.org/distribution/11.4/repo/oss/ repo-11.4-oss Adding repository 'openSUSE-11.4 OSS' [done] Repository 'openSUSE-11.4 OSS' successfully added Enabled: Yes Autorefresh: No URI: http://download.opensuse.org/distribution/11.4/repo/oss/ $ sudo zypper addrepo --name "openSUSE-11.4 Non-OSS" http://download.opensuse.org/distribution/11.4/repo/non-oss/ repo-11.4-non-oss Adding repository 'openSUSE-11.4 Non-OSS' [done] Repository 'openSUSE-11.4 Non-OSS' successfully added Enabled: Yes Autorefresh: No URI: http://download.opensuse.org/distribution/11.4/repo/non-oss/ $ sudo zypper addrepo --name "openSUSE-11.4 Updates" http://download.opensuse.org/update/11.4/ repo-11.4-update Adding repository 'openSUSE-11.4 Updates' [done] Repository 'openSUSE-11.4 Updates' successfully added Enabled: Yes Autorefresh: No URI: http://download.opensuse.org/update/11.4/
Now, the repositories look like this:
$ sudo zypper repos --uri # | Alias | Name | Enabled | Refresh | URI ---+-------------------------------------+-------------------------------------+---------+---------+-------------------------------------------------------------------------------------------- 1 | Packman Repository | Packman Repository | No | Yes | http://ftp.uni-erlangen.de/pub/mirrors/packman/suse/openSUSE_11.3 2 | Updates for openSUSE 11.3 11.3-1.82 | Updates for openSUSE 11.3 11.3-1.82 | No | Yes | http://download.opensuse.org/update/11.3/ 3 | devel_languages_ruby_extensions | Ruby Extensions (openSUSE_11.4) | No | No | http://download.opensuse.org/repositories/devel:/languages:/ruby:/extensions/openSUSE_11.4/ 4 | google-chrome | google-chrome | No | Yes | http://dl.google.com/linux/chrome/rpm/stable/i386 5 | openSUSE-11.3 11.3-1.82 | openSUSE-11.3 11.3-1.82 | No | No | cd:///?devices=/dev/sr0 6 | openSUSE:Tools | openSUSE:Tools | No | Yes | http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_11.3/ 7 | openSUSE_Tools | openSUSE.org tools (openSUSE_11.3) | No | No | http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_11.3/ 8 | packman | Packman repository (openSUSE_11.3) | No | No | http://packman.inode.at/suse/openSUSE_11.3 9 | repo-11.4-non-oss | openSUSE-11.4 Non-OSS | Yes | No | http://download.opensuse.org/distribution/11.4/repo/non-oss/ 10 | repo-11.4-oss | openSUSE-11.4 OSS | Yes | No | http://download.opensuse.org/distribution/11.4/repo/oss/ 11 | repo-11.4-update | openSUSE-11.4 Updates | Yes | No | http://download.opensuse.org/update/11.4/ 12 | repo-debug | openSUSE-11.3-Debug | No | Yes | http://download.opensuse.org/debug/distribution/11.3/repo/oss/ 13 | repo-non-oss | openSUSE-11.3-Non-Oss | No | Yes | http://download.opensuse.org/distribution/11.3/repo/non-oss/ 14 | repo-oss | openSUSE-11.3-Oss | No | Yes | http://download.opensuse.org/distribution/11.3/repo/oss/ 15 | repo-source | openSUSE-11.3-Source | No | Yes | http://download.opensuse.org/source/distribution/11.3/repo/oss/ 16 | ruby-devel | ruby-devel | No | No | http://download.opensuse.org/repositories/devel:/languages:/ruby:/extensions/openSUSE_11.3/ 17 | server-database-unstable | server-database-unstable | No | Yes | http://download.opensuse.org/repositories/server:/database:/UNSTABLE/openSUSE_11.3
Search for updated openSUSE 11.4 compatible third-party repositories that you used before and add them.
$ sudo zypper addrepo --name <name> <url> <alias>
For example, if you used the VirtualBox repository in 11.3, you can enable the VirtualBox repository in 11.4 like this:
$ sudo zypper addrepo --name "VirtualBox for openSUSE 11.4" http://download.virtualbox.org/virtualbox/rpm/opensuse/11.4 virtualbox-11.4
(Use values for Name and Alias that are not in use yet.) Be aware that using third-party repositories could increase the chances that the upgrade will not complete correctly.
Now, run the full distribution upgrade:
$ sudo zypper ref
This retrieves the metadata for the 11.4 repositories (i.e., openSUSE-11.4 Non-OSS, openSUSE-11.4 OSS, and openSUSE-11.4 Updates), and builds up caches for those repositories.
Retrieving repository 'openSUSE-11.4 Non-OSS' metadata [done] Building repository 'openSUSE-11.4 Non-OSS' cache [done] Retrieving repository 'openSUSE-11.4 OSS' metadata [done] Building repository 'openSUSE-11.4 OSS' cache [done] Retrieving repository 'openSUSE-11.4 Updates' metadata [done] Building repository 'openSUSE-11.4 Updates' cache [done] All repositories have been refreshed.
Then, do
$ sudo zypper dup
This zypper command will download the required packages when it installs them. You may download all packages in advance:
$ zypper dup --download "in-advance"
The lengthy output goes like this:
The following product is going to be upgraded: openSUSE 11.4 The following packages are going to be reinstalled: bind-libs bind-utils flash-player icedtea-web java-1_6_0-sun java-1_6_0-sun-devel libmariadbclient16 libmariadbclient_r16 libreoffice-branding-openSUSE mozilla-js192 mozilla-xulrunner192 mozilla-xulrunner192-gnome perl-Algorithm-C3 perl-Class-C3 perl-Class-C3-XS perl-MRO-Compat perl-Scope-Guard timezone timezone-java The following packages are going to change architecture: ghostscript-fonts-other i586 -> noarch ghostscript-fonts-std i586 -> noarch perl-Archive-Zip i586 -> noarch perl-Digest-HMAC i586 -> noarch perl-Error i586 -> noarch perl-IO-Socket-INET6 i586 -> noarch perl-IO-Socket-SSL i586 -> noarch perl-libwww-perl i586 -> noarch perl-Net-Server i586 -> noarch perl-Parse-RecDescent i586 -> noarch perl-Pod-POM i586 -> noarch perl-Text-Autoformat i586 -> noarch perl-Text-Reform i586 -> noarch perl-URI i586 -> noarch perl-XML-Writer i586 -> noarch python-iniparse i586 -> noarch . . . 1125 packages to upgrade, 74 to downgrade, 165 new, 19 to reinstall, 99 to remove, 42 to change vendor, 16 to change arch. Overall download size: 982.3 MiB. After the operation, 27.9 MiB will be freed. Continue? [y/n/?] (y): y . . .
Then, a bunch of license agreements come up. Press Enter to get to the bottom of the page and type “yes.”
In order to install 'openSUSE 11.4' (product), you must agree to terms of the following license agreement: LICENSE AGREEMENT openSUSE® 11.4 . . . In order to install 'fetchmsttfonts', you must agree to terms of the following license agreement: END-USER LICENSE AGREEMENT FOR MICROSOFT SOFTWARE . . . In order to install 'java-1_6_0-sun-devel', you must agree to terms of the following license agreement: Operating System Distributor License for Java version 1.1 . . . In order to install 'java-1_6_0-sun', you must agree to terms of the following license agreement: Operating System Distributor License for Java version 1.1 . . . In order to install 'flash-player', you must agree to terms of the following license agreement: ADOBE® SOFTWARE LICENSE AGREEMENTNOTICE TO USER . . .
You can run zypper dup from time to time to ensure you have the latest available packages from the various repositories that you have enabled. YOU (Yast Online Update) only addresses security updates from the official repositories.
Lastly, reboot… and enjoy your new OpenSUSE 11.4 system!
- – – – – – –
You can also find this post on my other blog.
Install Broadcom STA wireless driver in openSUSE 11.4 (and other Linux distros)
Broadcom is a real nag. Buying a laptop with Broadcom wireless network card never bothered me until I installed several Linux distros and things started to go less smoothly… especially when you do not have wired ethernet nearby and wireless is all you get.
On the other hand, installing the Broadcom wireless driver for different Linux distros is a great learning experience.
Previously, I talked about how to activate the Broadcom STA wireless driver in Fedora 14. It turns out the activation is slightly different in openSUSE.
The following works on openSUSE 11.3, 11.4, Mint 10 Julia, Ubuntu 10.x, Kubuntu 10.x, and LMDE.
To make Wi-Fi work in openSUSE 11.4, first download the tarball containing Broadcom’s IEEE 802.11a/b/g/n hybrid Linux device driver from http://www.broadcom.com/support/802.11/linux_sta.php
The cards with the following PCI Device IDs are supported with this driver.
Both Broadcom and and Dell product names are described. Cards not listed here
may also work.
BRCM PCI PCI Dell
Product Name Vendor ID Device ID Product ID
------------- ---------- --------- -----------
4311 2.4 Ghz 0x14e4 0x4311 Dell 1390
4311 Dualband 0x14e4 0x4312 Dell 1490
4311 5 Ghz 0x14e4 0x4313
4312 2.4 Ghz 0x14e4 0x4315 Dell 1395
4313 2.4 Ghz 0x14e4 0x4727 Dell 1501
4321 Dualband 0x14e4 0x4328 Dell 1505
4321 Dualband 0x14e4 0x4328 Dell 1500
4321 2.4 Ghz 0x14e4 0x4329
4321 5 Ghz 0x14e4 0x432a
4322 Dualband 0x14e4 0x432b Dell 1510
4322 2.4 Ghz 0x14e4 0x432c
4322 5 Ghz 0x14e4 0x432d
43224 Dualband 0x14e4 0x4353 Dell 1520
43225 2.4 Ghz 0x14e4 0x4357
43227 2.4 Ghz 0x14e4 0x4358
43228 Dualband 0x14e4 0x4359 Dell 1530
To find the Device ID's of Broadcom cards on your machines do:
# lspci -n | grep 14e4
Untar the package:
$ tar -xvf hybrid-portsrc_x86_32-v5_100_82_38.tar.gz
And build this driver from source:
$ make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make: *** /lib/modules/2.6.37.6-0.7-desktop/build: No such file or directory. Stop.
make: *** [all] Error 2
Looks like you yet need to install the proper packages, which will create /lib/modules/”release”/build on your system. Take a quick check on what kernel packages you have:
$ rpm -qva | grep kernel
kernel-desktop-2.6.37.6-0.7.1.i586
kernel-default-2.6.37.6-0.7.1.i586
So, just install ‘kernel-devel’ (Development Package for building kernel modules to match the kernel):
$ sudo zypper install kernel-devel
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following NEW packages are going to be installed:
kernel-default-devel kernel-desktop-devel kernel-devel
3 new packages to install.
Overall download size: 20.9 MiB. After the operation, additional 50.0 MiB will be used.
Continue? [y/n/?] (y): y
Retrieving package kernel-devel-2.6.37.6-0.7.1.noarch (1/3), 7.2 MiB (35.2 MiB unpacked)
Retrieving: kernel-devel-2.6.37.6-0.7.1.noarch.rpm [done (66.3 KiB/s)]
Retrieving package kernel-desktop-devel-2.6.37.6-0.7.1.i586 (2/3), 7.1 MiB (7.8 MiB unpacked)
Retrieving: kernel-desktop-devel-2.6.37.6-0.7.1.i586.rpm [done (71.3 KiB/s)]
Retrieving package kernel-default-devel-2.6.37.6-0.7.1.i586 (3/3), 6.5 MiB (7.1 MiB unpacked)
Retrieving: kernel-default-devel-2.6.37.6-0.7.1.i586.rpm [done (49.2 KiB/s)]
Installing: kernel-devel-2.6.37.6-0.7.1 [done]
Installing: kernel-desktop-devel-2.6.37.6-0.7.1 [done]
Installing: kernel-default-devel-2.6.37.6-0.7.1 [done]
Also, install the GNU Compiler:
$ sudo zypper install gcc
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following NEW packages are going to be installed:
binutils-gold gcc gcc45
3 new packages to install.
Overall download size: 5.6 MiB. After the operation, additional 18.2 MiB will be used.
Continue? [y/n/?] (y): y
Retrieving package binutils-gold-2.21-13.1.i586 (1/3), 699.0 KiB (2.8 MiB unpacked)
Retrieving: binutils-gold-2.21-13.1.i586.rpm [done (36.0 KiB/s)]
Retrieving package gcc45-4.5.1_20101208-9.8.i586 (2/3), 5.0 MiB (15.4 MiB unpacked)
Retrieving: gcc45-4.5.1_20101208-9.8.i586.rpm [done (79.7 KiB/s)]
Retrieving package gcc-4.5-19.1.i586 (3/3), 4.0 KiB (0 B unpacked)
Retrieving: gcc-4.5-19.1.i586.rpm [done (0 B/s)]
Installing: binutils-gold-2.21-13.1 [done]
Installing: gcc45-4.5.1_20101208-9.8 [done]
Installing: gcc-4.5-19.1 [done]
Then, run make again:
$ make KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd` make[1]: Entering directory `/usr/src/linux-2.6.37.6-0.7-obj/i386/desktop' make -C ../../../linux-2.6.37.6-0.7 O=/usr/src/linux-2.6.37.6-0.7-obj/i386/desktop/. CC [M] /home/surfmonkey/broadcom-wl/src/shared/linux_osl.o CC [M] /home/surfmonkey/broadcom-wl/src/wl/sys/wl_linux.o /home/surfmonkey/broadcom-wl/src/wl/sys/wl_linux.c: In function ‘wl_attach’: /home/surfmonkey/broadcom-wl/src/wl/sys/wl_linux.c:485:3: error: implicit declaration of function ‘init_MUTEX’ make[4]: *** [/home/surfmonkey/broadcom-wl/src/wl/sys/wl_linux.o] Error 1 make[3]: *** [_module_/home/surfmonkey/broadcom-wl] Error 2 make[2]: *** [sub-make] Error 2 make[1]: *** [all] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.37.6-0.7-obj/i386/desktop' make: *** [all] Error 2 $ ls -l total 1184 -rw-r--r-- 1 surfmonkey users 8 Aug 13 18:22 built-in.o -rw-r--r-- 1 surfmonkey users 1195817 Aug 13 18:11 hybrid-portsrc_x86_32-v5_100_82_38.tar.gz drwxr-xr-x 2 surfmonkey users 4096 Dec 14 2010 lib -rw-r--r-- 1 surfmonkey users 1134 Dec 14 2010 Makefile drwxr-xr-x 5 surfmonkey users 4096 Dec 14 2010 src
There is still an error building the driver. The expected wl.ko file wasn’t generated.
It turns out there is a compilation problem with kernel versions > 2.6.37. The kernel I have falls right into that range:
$ uname -a
Linux opensuse 2.6.37.6-0.7-desktop #1 SMP PREEMPT 2011-07-21 02:17:24 +0200 i686 i686 i386 GNU/Linux
We need to apply a patch to fix the ‘init_MUTEX’ compile problem on newer (> 2.6.37) kernels.
At the top level of the driver source folder (where ”ls” should show at least src, lib, Makefile), create a file which I named “patch.” Fill in the following lines:
--- src/wl/sys/wl_linux.c 2011-05-20 12:07:25.303356739 -0700
+++ src/wl/sys/wl_linux.c.new 2011-05-20 12:07:13.663356735 -0700
@@ -481,9 +481,9 @@
if (WL_ALL_PASSIVE_ENAB(wl)) {
#ifdef WL_ALL_PASSIVE
spin_lock_init(&wl->txq_lock);
#endif
- init_MUTEX(&wl->sem);
+ sema_init(&wl->sem, 1);
}
if (!(wl->wlc = wlc_attach((void *) wl, vendor, device, unit, wl->piomode,
osh, wl->regsva, wl->bcm_bustype, btparam, &err))) {
Save it, and go back to the command line:
$ patch -p0 < patch
patching file src/wl/sys/wl_linux.c
patch unexpectedly ends in middle of line
Hunk #1 succeeded at 481 with fuzz 1.
Try building the driver again:
$ make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/usr/src/linux-2.6.37.6-0.7-obj/i386/desktop'
make -C ../../../linux-2.6.37.6-0.7 O=/usr/src/linux-2.6.37.6-0.7-obj/i386/desktop/.
CC [M] /home/surfmonkey/broadcom-wl/src/wl/sys/wl_linux.o
CC [M] /home/surfmonkey/broadcom-wl/src/wl/sys/wl_iw.o
LD [M] /home/surfmonkey/broadcom-wl/wl.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: modpost: missing MODULE_LICENSE() in /home/surfmonkey/broadcom-wl/wl.o
see include/linux/module.h for more information
CC /home/surfmonkey/broadcom-wl/wl.mod.o
LD [M] /home/surfmonkey/broadcom-wl/wl.ko
make[1]: Leaving directory `/usr/src/linux-2.6.37.6-0.7-obj/i386/desktop'
Do a quick “ls” to make sure the wl.ko file has been successfully created.
$ ls -l
total 8100
-rw-r--r-- 1 surfmonkey users 8 Aug 13 18:22 built-in.o
drwxr-xr-x 2 surfmonkey users 4096 Dec 14 2010 lib
-rw-r--r-- 1 surfmonkey users 1134 Dec 14 2010 Makefile
-rw-r--r-- 1 surfmonkey users 42 Aug 13 18:30 modules.order
-rw-r--r-- 1 surfmonkey users 0 Aug 13 18:30 Module.symvers
-rw-r--r-- 1 surfmonkey users 437 Aug 13 18:30 patch
drwxr-xr-x 5 surfmonkey users 4096 Dec 14 2010 src
-rw-r--r-- 1 surfmonkey users 3527159 Aug 13 18:30 wl.ko
-rw-r--r-- 1 surfmonkey users 4646 Aug 13 18:30 wl.mod.c
-rw-r--r-- 1 surfmonkey users 39660 Aug 13 18:30 wl.mod.o
-rw-r--r-- 1 surfmonkey users 3488826 Aug 13 18:30 wl.o
Now, let’s do a fresh install of the wl driver, since the system was just upgraded live to openSUSE 11.4 and no previous version of the wl driver has been running.
First, check if there’s any other driver for Broadcom wireless device on the system:
$ lsmod | grep "b43\|ssb\|wl"
$ [blank]
Looks good. If any of these are installed, remove them:
# rmmod b43 # rmmod ssb # rmmod wl
And blacklist these drivers and prevent them from loading in the future:
# echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf # echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf
At root,
# cp wl.ko /lib/modules/`uname -r’/kernel/net/wireless/ # insmod wl.ko insmod: can't read 'wl.ko': No such file or directory
You could skip insmod wl.ko if it doesn’t work.
Make sure you’re root “su –“. Otherwise, you’d get this:
$ sudo insmod wl.ko
root's password:
sudo: insmod: command not found
Proceed to
# modprobe lib80211 # depmod -a # modprobe wl
Now, check your Network Manager, and you should see wireless networks immediately.
In openSUSE, the module will be loaded on boot. In Mint/Ubuntu/Kubuntu/LMDE, users will need to add it manually in /etc/modules file.
- – – – – – – – – –
You can also find this post on my other blog.
i.opensu.se YMP Generator
Bernhard Wiedemann approached me a few days ago to host his YMP generator CGI script on opensu.se.
I wrote it from scratch (it's just a few lines of Perl code really ;)), and it's now up and running on i.opensu.se (follow that link for details and explanation).
In a similar fashion to r.opensu.se, it is meant to be helpful to give support to users, as it is much simpler to hand them a short URL like http://i.opensu.se/utilities/atool than going through the hassle of guiding them through YaST2.
It is especially well suited for twitter, IRC, etc...
The source code is in my git repo at gitorious.




