Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

Catatan Upgrade openSUSE Leap 42.3 ke 15.0

Bismillah ..

Pada tulisan kali ini saya hanya akan menulis bagaimana proses upgrade openSUSE Leap 42.3 ke versi terbaru yaitu 15.0 . Mengenai bagaimana performansi, yang terbaru serta peningkatan di versi tersebut disini Saya tidak akan menuliskannya. Namun Anda bisa membacanya di link official openSUSE atau di beberapa blog yang membahasnya.

Proses upgrade ini sama dengan proses upgrade di versi – versi sebelumnya. Dan Alhamdulillah, ternyata tulisan Saya yang sudah cukup lama masih sangat berguna dan Saya masih menggunakan metode tersebut ketika melakukannya. Anda bisa membacanya di link ini.

Catatan Error

Proses upgrade kali ini ternyata saya menjumpai kendala, dan apa yang menyebabkanya saya tidak tahu. Yang pasti, proses upgrade terhenti ketika menginstal driver broadcom (kalau tidak salah) . Kemudian saya melakukan interupsi dengan menekan kombinasi tombol keyboardd ctrl+c untuk menghentikan proses upgrade. Setelah itu Saya mencoba mengulangi proses upgrade dengan mengetik zypper –no-refresh dup. kemudian muncul error seperti berikut.

zypper: error while loading shared libraries: libzypp.so.1600: cannot open shared object file: No such file or directory

Untuk mengatasi hal tersebut, ikuti langkah – langkah berikut.

  1. Pastikan komputer terhubung dengan LAN atau WiFi
  2. Install paket libzypp melalui Yast Software Manager atau jika Yast tidak berfungsi bisa menginstalnya secara manual dengan mengunduh paket tersebut di website Software openSUSE.
  3. Uninstall paket Zypper kemudian install kembali (re-install)

Setelah itu command zypper bisa berfungsi kembali.

Bisa jadi masalah yang Anda hadapi berbeda, namun dengan berbekal Googling InsyaAllah bisa teratasi.

Keyword : openSUSE 42.3, openSUSE 15.0, Upgrade, Instalasi, Leap

the avatar of Han Wen Kam

Getting XMind 8 to work on openSUSE Leap 15

openSUSE Leap 15 was officially launched on 25th May 2018.  More at https://en.opensuse.org/Portal:15.0

XMind is my go-to mind mapping software for a few years now.  More at https://www.xmind.net/

Challenge:

Using the XMind 8 Linux package (zip file) and following the, albeit brief, instructions at http://support.xmind.net/customer/en/portal/articles/2639667-begin-to-use-xmind-8-on-linux, you will see XMind launch with the GUI Splash screen but the program will fail and exit.




Root-cause:

XMind is a Java-based application and it is sensitive to the version of Java.  The default Java runtime in openSUSE Leap 15 is OpenJDK version 10.0.1 (dated 2018-04-17).


Resolution:

Install the older OpenJDK version 1.8.0.  Instead of removing the default version 10.0.1, I elected to install the older version 1.8.0 alongside and switch the default path for Java to 1.8.0.

Here are my steps:

zypper in java-1_8_0-openjdk



update-alternatives --config java
(followed by picking the newly installed jre-1.8.0)



Validate:  java -version

That's it.  Now, when we execute the XMind program, it will work and launched successfully.  



Keep Calm & Carry On loving Linux!

a silhouette of a person's head and shoulders, used as a default avatar

Leap 15.0 Beta testing: Fujitsu U757 Laptop

2 месяца назад нашел незначительный, но все же баг в ядре openSUSE Leap 15.0 (тогда еще это была Beta, build 174). Баг связан с лептопом Fujitsu U757 и воспроизводиться должен во всех дистрибутивах, т.к. проблема в upstream коде ядра.
Суть проблемы связана с поддержкой мультифункциональных клавиш, отвечающих за включение/выключение wifi.

Чтобы удостовериться, что kernel не обрабатывает нажатие клавиш, можно воспользоваться libinput. Это так называемый input device driver для X.org window system. С его помощью можно легко (в userland) отлавливать события, которые должны быть обработаны ядром. Так вот он показывал, что комбинация клавиш Fn+F5 при нажатии не давала никакого эффекта (F5 – это wifi-клавиша).
Тем не менее, при помощи rfkill wireless можно легко включить/отключить:

# rfkill list
0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no
# rfkill block 0
# rfkill list
0: phy0: Wireless LAN
        Soft blocked: yes
        Hard blocked: no

Как оно обычно и бывавает, много времени уходит на то, чтобы собрать достаточно материала. Долгое время я не был уверен, что делаю все верно. С толку сбивало и то, что в других дистрибутивах проблема воспроизводилась один в один. Я отключил Bluetooth в BIOS, чтобы только одно устройство влияло на работу LED на корпусе лептопа. Таким образом, LED должен был загораться при включении wireless и наоборот – тухнуть при выключении. Этого не происходило…

Я решил опробовать другие ядра. Я ставил ядро из репозиториев Kernel:stable (на тот момент это было ядро 4.15.13) и Kernel:HEAD (4.16 rc7-1). Это не решило проблему.

Спустя какое-то время я нашел в сети описание этой проблемы и патч. Я отправил bugreport. Такаши, один из разработчиков в Kernel Team, сказал мне, что патч будет принят в upstream в 4.17-rc1. В стандартное Leap-ядро этот фикс сразу же не попал, т.к. баг не слишком критичен, НО Такаши пересобрал ядро с этим исправлением для SLE15 и Leap15. Leap пользователи могут установить его отсюда. Это исправление будет в Leap совсем скоро официально, в виде maintenance update.

После установки этого ядра libinput отлавливает events:

# libinput debug-events

 -event7  KEYBOARD_KEY   +3.51s  KEY_RFKILL (247) pressed
  event7  KEYBOARD_KEY   +3.51s  KEY_RFKILL (247) released

В качестве заключения я хочу сказать всем разработчикам: слушайте свою интуицию, не давайте никому сбить вас с толку. Полагайтесь в первую очередь на свой опыт. Не слушайте коллег, которые подгоняют логику под увиденный результат. К сожаленью, часто бывает, когда вы стоите в шаге от правильного решения, но все же решаете посоветоваться, коллеги начинают вас переубеждать. Защайтесь. Не ленитесь перепроверить все еще раз.

Удачи! Have a lot of fun =)

a silhouette of a person's head and shoulders, used as a default avatar

Unit Testing Browser Extensions

This post has been migrated to my new blog that you can find here:

https://pureooze.com/blog/posts/2018-05-21-unit-testing-browser-extensions/

In April I became the maintainer of Saka, a browser extension that allows users to search through their tabs, bookmarks and history. The original goal of Saka was to provide an elegant tab search but this soon evolved to include recently closed tabs, bookmarks and history when the original maintainer eejdoowad recognized that users search for tabs the same way they search bookmarks and history. This was an important insight and it has helped make Saka a valuable productivity tool.

When I became the maintainer I was surprised at the absence of tests in the project. There were several components with complicated logic but no tests to be found anywhere. One of the most important things I have learned as a developer is that tests are the easiest ways to write reliable, easy to refactor code. Was the old maintainer just lazy? Did he simply not care about the quality of his code? No. The opposite in fact, he cared a lot.

Saka, a browser extension for searching tabs, recently closed, bookmarks and history.

The issue is that the lack of documentation on the topic means that almost no one is able to test their extension. Having no confidence in my ability to make changes without breaking the code, this was a big problem. But as fate would have it after trying a dozen different approaches I ended up finding a solution.

Why We Test

As developers we want to be sure that the code we write today is not going to become a burden to maintain later in the lifetime of the application. One way we avoid creating these burdens is by writing tests. The great thing about tests is that outside of just verifying the behavior of functions, tests allow us to provide documentation for future developers. For example by creating unit tests we declare the valid inputs and outputs for a given function. This makes it easier to refactor code because we can have confidence that our code is working correctly when all our tests pass.

The Testing Approach

This post will focus on setting up the environment and writing some basic unit tests. I have a separate post at this link which you can use to perform integration testing.

To read the rest of this post it can be found on my new blog here:

https://pureooze.com/blog/posts/2018-05-21-unit-testing-browser-extensions/


Unit Testing Browser Extensions was originally published in Information & Technology on Medium, where people are continuing the conversation by highlighting and responding to this story.

a silhouette of a person's head and shoulders, used as a default avatar

GPD Pocket with openSUSE Tumbleweed

I’ve been curious and interested with GPD Pocket since last year, when first time it announced (https://www.indiegogo.com/projects/gpd-pocket-7-0-umpc-laptop-ubuntu-or-win-10-os#/).

I bought this tiny machine 3 weeks ago on aliexpress. Shipping take only a day, but custom clearance takes almost two weeks.

First impression about this laptop was cute and good built quality.

Tiny

Installing It with Linux

This machine preinstalled with Windows 10, I think it’s original but who cares. I need running linux on it.

I try Leap 15 for first time. Screen rotated -1 and wifi not working. Then I tried Ubuntu 18.04 and similar thing happen. I use iso from gpd site, Ubuntu 16.04 that already customized for GPD Pocket but not working (stuck at boot).

Ubuntu 16.04

I read some documentation at https://github.com/stockmind/gpd-pocket-ubuntu-respin to rebuild Ubuntu 18.04 iso, but not working enough. So I use another methode, installing it then use update.sh to reconfigure all. It’s working. But I’m not satisfied in it. I wanna Tumbleweed on this machine.

I download openSUSE-Tumbleweed-DVD-x86_64-Snapshot20180520-Media.iso and dd-ing it to usb flashdisk then install. Of course when installing process, my screen was rotated -1. I choose GNOME Desktop. But after reboot, GNOME works fine except:

  1. wifi not working
  2. no battery applet, and system not recognize battery

Patch

Kukuh Syafaat, President of openSUSE-ID told me that Richard Brown (@sysrich) use GPD Pocket. So I ask Richard on twitter and he gave me clue in https://github.com/sysrich/salt-states/blob/master/opensuse/laptop.sls.

I use few lines from laptop.sls and it’s working well. I translated that salt script into plain bash script at https://github.com/princeofgiri/gpd-pocket-patch.

After reboot, Tumbleweed still not detecting the battery.

Use Another Kernel

I remember that Leap 15 can recognize the battery. So I download the kernel and installing it. Yes it’s work, but there’s new problem, when in charging mode, battery applet seems not know if that time is in charging mode.

So I decide to compile kernel by my self. Got the source from https://github.com/jwrdegoede/linux-sunxi.git and the result was cool. It’s works.

Let’s Work

Notes

  • I write this post using GPD Pocket
  • I will write kernel compilation in another post
  • Plymouth still rotated -1
Plymouth

a silhouette of a person's head and shoulders, used as a default avatar

GSoC students are already hacking!

We always enjoy that new people join openSUSE community and help them in their first steps. Because of that, openSUSE participates again in GSoC, an international program in which stipends are awarded to students who hack on open source projects during the summer. We are really excited to announce that this year four students will learn about open source development while hacking on openSUSE projects. The coding period started last week, so our students are already busy hacking and they have written some nice articles about their projects. :blush:

Matheus de Sousa Bernardo

Matheus is a Software Engineering student in the University of Brasília. He will be working in Trollolo, together with his mentors Ana Martínez (me :stuck_out_tongue_winking_eye:) and Cornelius Schumacher. Trollolo is a cli-tool which helps teams using Trello to organize their work. Matheus’ project includes improving Trollolo’s API and workflow. If you want to know more about him and his project, check his beginning blog post: https://matheussbernardo.me/gsoc/2018/04/24/hello-internet-gsoc

Xu Liana

Xu is a Software Engineering student in the Chongqing Normal University, China. She will work, together with her mentors ZhaoQiang, epico and Hillwood Yang, in integrating Cloud Pinyin (the most popular input method in China) on ibus-libpinyin. Check her beginning blog post with more details about her and the project: https://liana.hillwoodhome.net/2018/05/20/the-blog-for-the-first-week-during-gsoc-libpinyin-project-coding

Ankush Malik

Ankush is pursuing a Bachelor of Technology in Computer Science in the Maharaja Agrasen Institute of Technology, India. He will be working on improving people collaboration in the Hackweek tool, together with his mentors David Kang and Stella Rouzi. He just released his GSoC Journey blog post which you can find here: https://medium.com/@ankushmalik631/my-gsoc-journey-4f02818fdb8d

Asad Syed

Asad is from Pakistan and is studying a Masters degree in Informatics at the Technical University of Munich, Germany. He will develop a container-based backend for openQA with the help of his mentors Santiago Zarate, Ettore Di Giacinto and Stephan Kulow. Read here about his experiences with openSUSE and past participations in Google Summer of Code: https://medium.com/asadpiz/google-summer-of-code-2018-with-opensuse-part-1-9f514ac2e7ae

As you see, there is a lot of great work coming in from our new talented contributors. Stay tuned because they will keep blogging about their GSoC experience! :wink:

the avatar of Federico Mena-Quintero

Three big things happening in librsvg

I am incredibly happy because of three big things that are going on in librsvg right now:

  1. Paolo Borelli finished porting all the CSS properties to Rust. What was once a gigantic RsvgState struct in C is totally gone, along with all the janky C code to parse individual properties. The process of porting RsvgState to Rust has been going on since about two months ago, and has involved many multi-commit merge requests and refactorings. This is a tremendous amount of really good work! The result is all in Rust now in a State struct, which is opaque from C's viewpoint. The only places in C that still require accessors to the State are in the filter effects code. Which brings me to...

  2. Ivan Molodetskikh, my Summer of Code student, submitted his first merge request and it's merged to master now. This ports the bookkeeping infrastructure for SVG filters to Rust, and also the feOffset filter is ported now. Right now the code doesn't do anything fancy to iterate over the pixels of Cairo image surfaces; that will come later. I am very happy that filters, which were a huge barrier, are now starting to get chipped away into nicer code.

  3. I have started to move librsvg's old representation of CSS properties into something that can really represent properties that are not specified, or explicitly set to inherit from an SVG element's parent, or set to a normal value. Librsvg never had a representation of property values that actually matched the SVG/CSS specs; it just knew whether a property was specified or not for an element. This worked fine for properties which the spec mandates that they should inherit automatically, but those that don't, were handled through special hacks. The new code makes this a lot cleaner. It should also make it easier to copy Servo's idioms for property inheritance.

a silhouette of a person's head and shoulders, used as a default avatar

a silhouette of a person's head and shoulders, used as a default avatar

Ceph Day London 2018 Recap

Some days since the Ceph and CloudStack Day in London last month now. It was a great event, great presentations and a lot of networking with the local community.

You can find my presentation on "Email Storage with Ceph" online as also the break slides with some impressions from some of the last few Ceph events.

Some of the other presentations can be found here and some pictures from the day in this album.

a silhouette of a person's head and shoulders, used as a default avatar
a silhouette of a person's head and shoulders, used as a default avatar
darix posted in English at

Hooking up instantiated services with RPM

We already mentioned Instantiated Services a few times. However, there is one question we did not yet cover:

How to hook up those instances with our package manager

For a normal service file this is pretty easy. Such a service can be handled as follow in the spec file:

%pre
%service_add_pre superduper.service

%post
%service_add_post superduper.service

%preun
%service_del_preun superduper.service

%postun
%service_del_postun superduper.service

That is it. It will do all the things we want.