Skip to main content

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

openSUSE – Upgrade der Distribution per Skript [Skript-Update]

An jedem Ende einer Produktlebensdauer einer Distribution steht unweigerlich ein Upgrade an. Für manche ist es eine Odyssee und für andere eher eine willkommene Abwechselung. Für manche Neulinge oder schlichte Anwender ist ein Distributionsupgrade ein Graus, da weiß man manchmal nicht, welche Anleitung im Netz am Sinnvollsten ist.

Aus diesem Grund habe ich das Skript upgrade-opensuse.sh entwickelt, dass alle notwendigen Schritte eines Distributionsupgrades automatisch durchführt. Die Vorgehensweise des Skript ist ganz grob an das Upgrade-Tool do-release-upgrade von Ubuntu angelehnt. Wenn alle Pakete von zypper korrekt aufgelöst werden kann, ist es sogar möglich, dass der Upgrade-Prozess in einem Rutsch durchläuft und man am Ende nur noch neustarten muss. Das Skript merkt sich auch die Stelle, an der der Upgrade-Prozess abgebrochen wurde und wird beim erneuten Ausführen an der letzten Stelle fortfahren. So kann man zwischendurch ein Problem beheben und anschließend mit dem Upgrade-Prozess fortfahren.

Folgende Schritte werden durchgeführt:

  • Ermittelung der eingesetzten openSUSE-Version.
  • Überprüfung der Internetverbindung.
  • Ermittelung der neuesten openSUSE-Version oder Verwendung der openSUSE Version aus dem Parameter z.B. -ov 13.1.
  • Backup vom /etc Verzeichnis.
  • Umbenennung des Verzeichnis der eingebunden Repos /etc/zypp/repos.d nach /etc/zypp/repos.d.upgrade.
  • Hinzufügen der Online-Repos (OSS, NON-OSS, OSS Update, NON-OSS Update) von der neuesten openSUSE-Version.
  • Upgrade der Distribution via zypper dup (Ohne Community-Repos, um ungewollte VendorChanges zu vermeiden).
  • Hinzufügen aller vormals aktivierten Community-Repos einschl. Anpassung an die openSUSE-Version.
  • Temporäre Modifizierung der zypper Konfiguration, um VendorChanges zu erlauben.
  • Überprüfung von alten openSUSE-Pakete im System. Es wird versucht, die alten Pakete durch neuere Pakete zu ersetzen.
  • Die temporäre Modifizierung der zypper Konfiguration wieder durch die Standard-Option ersetzen.
  • Alte openSUSE-Pakete, die nicht aktualisiert werden konnten, werden endgültig entfernt.
  • Auflistung aller neuen bzw. modifizierten Konfigurationsdateien (*.rpmnew, *rpmsave).

Alle Vorgänge werden protokolliert, um später nachvollziehen zu können, was genau am System verändert wurde.

Folgende selbsterklärenden Logdateien werden erzeugt:

  • upgrade-opensuse.zypper-dup-output
  • upgrade-opensuse.old-packages-output
  • upgrade-opensuse.zypper-reinstall-packages-output
  • upgrade-opensuse.remove-old-packages-output
  • upgrade-opensuse.zypper-rm-packages-output
  • upgrade-opensuse.list-new-and-old-config-files

Wichtiger Hinweis: Vor einem Distributionsupgrade bitte unbedingt ein Backup machen, um im Bedarfsfall auf ein aktuelles Backup zurückgreifen zu können! Außerdem gibt es RPM Pakete von Drittanbietern wie z.B. AMD Catalyst, NVIDIA, VirtualBox, CrossOver, HumbleBundle-Games, usw., die während des Upgrade-Prozess nicht angerührt werden und von Hand aktualisiert werden müssen.

Downloads:

Das Skript wird via root ausgeführt und fängt sofort mit der Arbeit an. Es gibt zu Beginn ein Zeitfenster von 5 Sekunden, in der noch ein unkritischer Abbruch mit STRG+C möglich ist.

sudo sh upgrade-opensuse.sh
-h Die Hilfe anzeigen lassen
-n/–non-interactive Keine Fragen stellen, benutze automatisch Standard-Antworten. (zypper Option)
-ov/–opensuseversion VERSION Upgrade auf eine gewünschte openSUSE Version (z.B. 13.1 statt 13.2)
-r/–reset Beginne das Disributionsupgrade von vorne (Die Option bitte vorsichtig verwenden!)
-V Version des Skript anzeigen

Feedbacks sind wie immer willkommen. :-)

War dieser Artikel für dich hilfreich und/oder konnte dein Problem lösen? Wie wäre es mit einer kleinen Spende (Flattr, Paypal oder Überweisung) für den Erhalt des Blogs und zur Förderung weiterer interessanter Artikel und Skripte? Zudem ist mit jeder Spende gewährleistet, dass der Blog werbefrei ist und auch in Zukunft werbefrei bleiben wird. Ich sage schon mal an alle Spendern herzlichen Dank.

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

Testing Android in openQA

The other day Richard described in his blog how how he used openQA to test drive Fedora. Around the same time I read about Android x86 and saw that they offer iso images for download. So I wondered how hard it would be to get that one tested in openQA.

To find out I installed a current Tumbleweed snapshot in qemu. Installing openQA in the VM is straight forward with the provided packages, following the instrucutions at GitHub.

Keep in mind that nested virtualization needs to be turned on to be able to run the openQA worker inside qemu (pass nested=1 to kvm_intel resp kvm_amd). To conveniently access the web interface, vnc and ssh I added “-net” “user,hostfwd=tcp::8888-:80,hostfwd=tcp::5091-:5091,hostfwd=tcp::2222-:22” to the qemu command line.

As soon as openQA is up and running the remaining steps are easy:

  • add the sample Android test cases I created:
    # cd /var/lib/openqa/tests
    # git clone -b android-4.4 git://github.com/lnussel/os-autoinst-distri-android.git android-4.4
    # chown geekotest android-4.4/needles
    
  • import the job templates so openQA learns what to do with Android iso images
    # android-4.4/templates
    
  • Download android-x86-4.4-r2.iso and store it in /var/lib/openQA/factory/iso
  • register the iso image with openQA:
    # /usr/share/openqa/script/client isos post \
        ISO=android-x86-4.4-r2.iso \
        DISTRI=android VERSION=4.4 ARCH=i586 \
        FLAVOR=live BUILD=0002
    

Voilà! If everything went right openQA should now have created a job and the worker should start processing it.

Here are some screenshots and a video of my test run:
openqa-android-02 openqa-android-01

Looks like the emulator in the Android SDK is also qemu based. So theoretically it shouldn’t be hard to integrate that one into openQA in order to actually test on emulated phones as well.

the avatar of Klaas Freitag

Kraft Version 0.57 verfügbar

Im November 2014 wurde die Version 0.57 von Kraft veröffentlicht, ich möchte nachholen, sie hier zu erwähnen, da ein Update zu empfehlen ist. Es ist die letzte fehlerbereinigende Version der 0.5x Reihe. Eine ganze Menge von Fehlern wurde behoben, für Details siehe das englische Changelog.

Zum Beispiel wurde die Dokument-per-Email-versenden Funktion überarbeitet. Sie ermittelt jetzt die Emailadresse des Empfängers aus den Kontaktdaten des Kunden. Ausserdem funktioniert die Mailfunktion wieder mit dem Emailprogramm Thunderbird.

Spezialposten wie Bedarfs- und Alternativposten können wieder auf normale Posten zurückgesetzt werden. Auch wurde die Ok/Abbrechen-Behandlung des Dokumenteditors repariert. Sollte bei einem bestehenden Dokument der Dokumenttyp geändert werden, wird jetzt auch die Dokumentnummer aus dem entsprechenden Nummernkreis nachgezogen. Einige Fixes im Bereich der Speicherverwaltung des Programmes, die sogar Abstürze verhindern, runden das Release ab.

Installationen älterer Versionen sollten aktualisiert werden.

Wie geht es weiter? Als nächstes wird der Port auf KDE Frameworks 5 in Angriff genommen. Das passiert, um am Ball zu bleiben, aber auch damit Kraft eines Tages auch auf Mac und möglicherweise auch Windows erscheinen kann.

Ich freue mich wie immer über Kommentare zu Blog und Kraft ganz allgemein, entweder per Kommentar hier im Blog oder: Kontakt zu Kraft!

the avatar of Sankar P

2014 Learning Retrospective

The learning in the previous year (2013) was a bit shallow but on a wide variety of topics. The year 2014 turned out to be not bad. I went to some great depths in a small number of areas.

  • Worked on Korkai - A corpus builder for Tamil. It extracts unique Tamil words from blogger, wordpress and wikipedia dumps. Learnt a lot about XML processing and golang
  • Started working on Vaiyakani, an auto-completing, dictionary-based, self-learning, transliterating text-editor for Tamil, after getting unsatisfied with the lack of offline Tamil typing software in Linux. Learnt a great deal about Tries, Prefix Datastructures, Sqlite database engine performance, Datastructures used in the implementation of maps in various libraries and programming languages etc.
  • The quest for implementing a perfect text editor led to a brief phase of disappointment where I complained on every layer wondering why the below layer is bad and briefly attempting to improve it. (The application is bad, The toolkit is bad, The compiler is bad, The operating system is bad, The hardware is the root of all evil etc.) Thankfully shepherded back into proper line of thinking by the helpful Evan Martin.
  • Started writing a book on Operating Systems in Tamil. The project is kind of stalled for a while now due to some copyright related issues with the dayjob employer. Hopefully should resume working on it by this month end.
  • Started tinkering around big data applications and large scale distributed systems. Started feeling the joy of building largescale systems using Golang. Did some prototypes for a new product idea in office and all these prior experiences helped to be very productive.
  • Explored a lot of databases, especially Cassandra. Built it from source. Started using it in a system with millions of queries load. Explored the gocql (Golang's Cassandra driver) sources.
  • Played around with a lot of key value datastores (like leveldb, bolt, lmdb etc.) Started with a lot of hope on these and slowly started feeling that k-v stores are probably over-rated (for large scale systems). As if to prove my point, came to know that Spanner the successor to Bigtable is multi-columnar.
  • Learnt a bit about Docker, Containers, Kubernetes etc. Should explore them more deeply this year.
  • All these work on database engines, distributed systems, distributed databases etc. lead me to read the underlying research papers of such systems. Realized that for understanding these systems, there needs to be a richer knowledge of some discrete math and richer literature.
  • Learnt about Paxos, Raft and other distributed consensus ideas. Humbled to know of a few brilliant minds like Leslie Lamport, Jim Gray, etc. Got inspired to know of a few more interesting people and ideas as well.
  • Thanks to a DE in Novell, got the opportunity to play with various Amazon cloud services free of cost (there is a free tier for the curios). 
  • Trying to understand how things work behind the screens in Amazon (the cloud company not just the online shop), Came across the interesting DynamoDB paper and came to know of a few interesting/inspiring people (they don't know me yet, though ;) ) like James Hamilton, Swaminathan Sivasubramanian , Werner Vogels etc. 
  • Got too tempted to leave the dayjob and do some real research / Ph.D but considering the financial constraints, will probably stick to the dayjob.
  • Gave a couple of talks about Golang. One for a startup and another for a bunch of engineers. Attended a talk on Google cloud technologies and slashn.
  • Came across Pig, Hive and Qubole but did not explore deeply
  • Learnt a lot about markup languages, LaTeX etc.
  • Started some work on a paper on distributed systems, only to get overwhelmed on how to proceed, considering the vastness of the topic that I have chosen for writing. Hopefully should get it into shape in the next few months or just throw it away and proceed with the daily grind.
  • Wrote a blog post about technology catchup for the last decade and a bunch of other long posts, which got some unexpected accolades.
  • Started daydreaming if I should choose a nascent area (such as Quantum Computing) to work in the freetime. It will throw up less instances of some paper published on 1960s / a patch in 1990s, for an idea, that I so enthusiastically assumed that I have invented (in current operating systems/storage etc.) until I search for it.
  • Switched to openSUSE Factory and loving it.
Overall, a satisfactory year with relatively deeper learning. Felt that the learning could have been even more richer if I had teamed up in more like-minded, technology-driven, small teams. Should experiment that for a while next year.
a silhouette of a person's head and shoulders, used as a default avatar

Primeira frustração do ano - Scraping de dados de convênio

Esses dias minha mãe me pediu p/ imprimir todos os médicos conveniados da Itaipu, porque eles não enviam mais o livrinho impresso. P/ minha infelicidade, os dados são paginados e se você for fazer isso na mão, vai ter que ficar copiando, colando e formatando no editor de texto. Não, né.... Meu desespero começou quando vi que usam frameset na página. 1994 ligou e pediu o livrinho de HTML de volta

the avatar of Iterativo e Incremental

DVD – Ripear solo audio

Tengo un DVD de un concierto en vivo, y quería pasarlo a mp3, un archivo mp3 por canción. El concierto estaba en el Title 2 del DVD, y cada canción es un ‘chapter’ del Title 2. Entonces, el script bash quedó así: #!/bin/bash for i in {1..33} do mplayer dvd://2 -chapter $i-$i -dvd-device /dev/sr0 -dumpaudio…Más

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

snapper: настройка снимков подтомов

Показать список подтомов можно командой btrfs subvolume list /. Выберем какой-нибудь, например /var/lib/pgsql.
Создадим новую конфигурацию (профиль) для этого подтома: snapper -c pgsql create-config /var/lib/pgsql, здесь pgsql произвольное имя:
# snapper list-configs
Config | Subvolume     
-------+---------------
root   | /             
pgsql  | /var/lib/pgsql

Далее, все команды нужно выполнять с ключом -c pgsql, чтобы оперировать нужным профилем.

# snapper -c pgsql get-config
...      
NUMBER_CLEANUP         | yes           
NUMBER_LIMIT           | 50            
NUMBER_LIMIT_IMPORTANT | 10            
NUMBER_MIN_AGE         | 1800          

Здесь NUMBER_CLEANUP разрешает удалять старые снимки если их число превышает NUMBER_LIMIT и одновременно возраст (в секундах) больше NUMBER_MIN_AGE.

TIMELINE_CLEANUP       | yes           
TIMELINE_CREATE        | yes           
TIMELINE_LIMIT_DAILY   | 10            
TIMELINE_LIMIT_HOURLY  | 10            
TIMELINE_LIMIT_MONTHLY | 10            
TIMELINE_LIMIT_YEARLY  | 10            
TIMELINE_MIN_AGE       | 1800

Здесь соответствующая настройка разрешает автоматическое создание снимков раз в час. Команда TIMELINE_CLEANUP удаляет старые снимки, используя следующие правила: удаляется снимок только если он старше TIMELINE_MIN_AGE секунд и одновременно после удаления останутся TIMELINE_LIMIT_* снимков с соответствующими интервалами.
Таким образом, в вышеописанном стандартном случае всегда будут доступны снимки: 10 с интервалом в час с текущего момента, 10 с интервалом в один день с текущего момента, 10 с интервалом в один месяц и так далее.

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

Standing for re-election: openSUSE Board Election Jan. 2015

My name is Robert Schweikert, IRC handle robjo, and I am standing for re-election in the upcoming openSUSE Board election in January of 2015.

With the end of 2014 my first term on the openSUSE board is already coming to an end, time flies. During my first term we collectively have seen many changes to our project. Many of these changes were difficult and I would say we had a rough ride for a good chunk of th last 2 years. I think, and am hoping others agree, that I was able to help smooth some of the rough spots and help the project move into what could now be considered calmer waters. It was not easy, but I am glad I was able to contribute.

Since 2009 I work for SUSE in the ISV Engineering team. When I started I primarily worked with IBM on joint projects. I also worked with other ISVs helping them with questions regarding their application on top of SUSE Linux. In recent years my role has transitioned and I am now focused on Public Cloud work, working with our partners.

I have been using SUSE Linux, now known as the openSUSE distribution since the beginning, i.e. I still remember when SUSE Linux 10 was released. I have been contributing to the project for many years, not from the get go, it took me some time to move from user to contributor, by maintaining packages, more recently also maintaining and publishing openSUSE images in the public cloud, and helping with organization of events. For the past two years I also had the privilege to contribute to the project as a board member. I would very much enjoy being able to continue my contribution to the board for another 2 years.

Looking forward I see the need that an effort needs to be made to re-invigorate our project. As a whole the distribution “business” has lost some of its appeal and shine. Something that is certainly to be expected. Never the less even in a world that is getting more and more dominated by cloud services, containers, and whatever else, distributions are a necessity and the openSUSE distributions always stands out as one of the top notch community distributions. We have also proven that there is still plenty of innovation potential with the recent merge of Tumbleweed and Factory, turning what was previously a pure development stream into a usable rolling release. The credit for this of course goes to the Factory team, release team and many others that contributed to the new tools and backend infrastructure that make all this possible. Re-invigoration for me not only means being proud and excited about such major technical accomplishments but also means we need to be better organized when it comes the representation of our project at FOSS events. Although the new booth box material is great we have had a difficult time getting things organized and helping those that want to represent the project at events. I want to continue to push on this part and help make the distribution of material better. There is plenty of work to be done at the board level and I am asking for your vote in the upcoming election to allow me to continue what is already in the works and help start new initiatives to re-invigorate our project.

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

2014 - Final de ano

Passei o resto do ano sem muito assunto p/ ter o que escrever aqui. Pelo menos algo que possa ser interessante p/ alguém.Uma das partes boas do ano é que conheci e consegui manter algum contato com pessoas da área. Sendo mais específica, com o Júlio de Lima, após um curso que ele ministrou no SEBRAE. Isso p/ mim é um puta avanço porque, por exemplo, na Python Brasil em Curitiba passei pelo evento