FAQ Übersicht

Linux

Zur Kategorie

Tutorials - NFS + NIS

Tutorials - NFS + NIS


NFS + NIS

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Keywords: nfs nis linux howto zentrale userverwaltung datenspeicherung

Quelle: Online-Tutorial.net

 

Abbildung

Inhaltsverzeichnis

 

 

Vorwort Top


Den meisten dürfte der Komfort einer zentralen Benutzer- und Datenverwaltung von größeren Windowsnetzwerken bekannt sein. Nur durch diese beiden Technologien ist es möglich, sich überall mit einem einheitlichen Benutzernamen anmelden zu können und alle seine gespeicherten Daten und Einstellungen vorzufinden.

Dies ist zwar seit langem auch für Linux/Unix verfügbar, doch damit ist häufig längeres Suchen nach Informationen im Internet verbunden.
Dieser Artikel soll einen kurzen Überblick über das Thema geben und dabei helfen, schnell eine einfache Anmeldung mit dazugehörigem Home-Verzeichnis bereitzustellen. Auf Kriterien wie Sicherheit und Performance wird nicht ausdrücklich geachtet.
Als Dienste dienen NFS (Network File System) sowie NIS (Network Information System), auch yellow pages (yp) genannt.

Überblick Top


Wir setzen an dieser Stelle voraus, dass sich bereits ein funktionsfähiger Server sowie ein oder mehrere installierte Linux-Clients im Netzwerk befinden.
Zuerst werden die benötigten Pakete installiert, danach folgt das Einrichten des NFS- und NIS-Servers. Wenn diese beiden Dienste soweit funktionieren werden wir beim Client das derzeitige /home-Verzeichnis auf den Server kopieren, dort an die richtige Stelle verschieben, es dann über NFS auf dem Client verfügbar machen und gleichzeitig die User-Tabelle über NIS ins System laden.
Nach diesen paar Handgriffen ist das System vollkommen einsatzbereit.

Software Top


Zum Einsatz kommen für diese Aufgabe auf Server-Seite der NFS-Kernel-Daemon (entsprechende Kernelunterstützung erforderlich, praktisch immer gegeben) und der NIS-Daemon (auch ypserv genannt). Zusätzlich wird ein Portmapper benötigt sowie make.

Für den Client werden normalerweise keine zusätzlichen Module für NFS benötigt sondern lediglich der NIS-Client (ypbind) und ebenfalls Portmap.

Auf dem Server lief bei diesem Versuch ein aktuelles Debian Sarge und die Clients waren mit Ubuntu 5.10 preview ausgestattet.

Installation der Pakete Top


Die hier beschriebene Installation der Pakete bezieht sich auf Debian-basierende Distributionen. In anderen (z.b. Suse) sollten aber ähnliche Pakete zu finden sein, bei welchen die Installation ähnlich einfach ablaufen sollte. Desweiteren sollte es selbstverständlich sein, dass diese Befehle nur mit Superuserrechten (root) ausgeführt werden können.

Server:
Auf dem Server genügt der Befehl

Code:


apt-get install nfs-kernel-server nis


Alle weiteren benötigten Pakete werden automatisch mitinstalliert.

Client:
Der Client gab sich sogar mit folgender Zeile zufrieden:

Code:


apt-get install nis

 

Serverkonfiguration Top


Auf dem Server finden wir im Verzeichnis /etc/default die Datei nis, welche noch angepasst werden muss. Hierzu ändern wir in der NIS-Konfigurationsdatei folgende Zeilen:

/etc/default/nis:


NISSERVER=true
NISCLIENT=false



Jetzt ist es an der Zeit um das Verzeichnis festzulegen, welches später exportiert werden soll. Da wir in diesem Fall jedem Benutzer ein überall verfügbares /home-Verzeichnes bieten möchten, wird folgende Zeile in die export-Datei eingetragen:

/etc/exports:


/home  192.168.0.0/24(rw,async)



Das erste Argument gibt das Quellverzeichnis an (hier: /home).
Die Adresse 192.168.0.0/24 definiert hierbei, dass nur Clients aus diesem Netz das Verzeichnis einbinden dürfen. Erlaubt sind Hostnamen, IPs, Netze (z.B. wie oben bzw. 192.168.0.0/255.255.255.0 - siehe dazu die Netmask-Reference).
Die in Klammern geschriebenen Optionen ermöglichen Lese- und Schreibzugriff sowie asynchronen Datentransfer, welcher erheblich schneller ist als der synchrone.

Für den NIS-Server ist die Datei /etc/ypserv.conf zuständig.

/etc/ypserv.conf:


*     : *     : shadow.byname         : port
*     : *     : passwd.adjunct.byname : port
*     : *     : *                     : none



Weiters ist es erforderlich den Domainname für die NIS-Domain in /etc/defaultdomain einzutragen.

/etc/defaultdomain:


heimnetzwerk



Nun können noch die benötigten Benutzer auf dem Server mit dem Befehl adduser hinzugefügt werden.

Nun sollte der NIS-Server gestartet werden:

Code:


/etc/init.d/nis start



Danach muss noch /usr/lib/yp/ypinit ausgeführt werden, um die Einstellungen zu übernehmen und die benötigten 'Maps' zu erstellen. Bei Bedarf kann die Datei /var/yp/Makefile angepasst werden.

Werden später weitere User hinzugefügt bzw. Einstellungen verändert, muss man make in /var/yp ausführen, um diese zu übernehmen.

Starten der Server Top


Der NFS- sowie der NIS-Server werden durch drei kurze Zeilen aktiviert:

Code:


/etc/init.d/portmap restart
/etc/init.d/nfs restart
(nfs? wir haben doch nfs-kernel-server installiert. Der Befehl lautete bei mir: /etc/init.d/nfs-kernel-server restart)
/etc/init.d/nis restart



Da bei den meisten Distributionen die Server bereits nach der Installation durch den Paketmanager gestartet werden, verwenden wir hier den restart-Befehl.
Es kann (vor allem bei älteren) Distributionen vorkommen, dass statt nis der name yp bzw. yellowpages verwendet wird.

Ob die Server auch wirklich laufen wird mit folgendem Befehl überprüft:

Code:


rpcinfo -p localhost

 

Beibehalten bestehender Benutzerverzeichnisse Top


Um das bereits vorhandene /home-Verzeichnis vom Client auf den Server zu bekommen, wird das Verzeichnis des Servers zuerst nach /mnt eingebunden.

mounten von nfs:


mount -t nfs -o rsize=8192,wsize=8192,hard,intr 192.168.0.1:/home /mnt



Damit der Client nun das home-Verzeichnis des Benutzers auf den Server kopieren kann, wird auf diesem ein Verzeichnis mit Lese- und Schreibrechte für jeden eingerichtet:

Server:


$ mkdir /home/puffer
$ chmod 777 /home/puffer
$ chown nobody:nogroup /home/puffer



Jetzt werden alle User-Verzeichnisse vom Client auf den Server kopiert:

Client:


$ cp /home/user1 /mnt/puffer -R
$ cp /home/user2 /mnt/puffer -R
usw.



Sind nun alle Verzeichnisse auf den Server kopiert, können sie von dort aus mit root-Rechten an die richtigen Orte verschoben werden.

Server:


$ mv /home/puffer/benutzer1 /home/
$ chown benutzer1:gruppe-benutzer1 /home/benutzer1 -R


bzw. bei Problemen:

Server:


$ mv /home/puffer/benutzer1/* /home/benutzer1
$ mv /home/puffer/benutzer1/.* /home/benutzer1
$ chown benuterz1:gruppe-benutzer1 /home/benutzer1 -R
$ rmdir /home/puffer/benutzer1



Nach getaner Arbeit wird das NFS-Verzeichnis wieder vom Client mit umount /mnt entfernt.

Clientkonfiguration Top


Endlich kann damit begonnen werden, die Konfigurationsdateien des Clients anzupassen. Als erstes wird in der Datei /etc/defaultdomain die selbe Domain wie auf dem Server eingetragen.

Für den NIS-Client ist die yp.conf sowie nsswitch.conf zuständig:

/etc/nsswitch.conf:


passwd:         compat
group:          compat
shadow:         compat

netgroup:       nis



Diese Zeilen sind überlicherweise bereits vorhanden, müssen aber in Ausnahmefällen angepasst werden.

/etc/yp.conf:


ypserver 192.168.0.1



Ist diese Zeile nicht vorhanden, versucht der Client über Broadcast den Server ausfindig zu machen.
Erfolgt die DNS/Host-Auflösung über NIS, so darf folglich keine Domain für diesen Eintrag verwendet werden.

Damit das Client-System die User von NIS auch übernimmt, sind noch ein paar Anpassungen erforderlich. Die folgenden Zeilen müssen einfach jeweils als letztes den zugehörigen Dateien hinzugefügt werden.

/etc/passwd:


+::::::

 

/etc/group:


+:::

 

/etc/shadow:


+::::::::

 

/etc/gshadow:


+:::


Damit der Client das /home-Verzeichnis auch vom Server einbindet, wird die fstab um folgende Zeile ergänzt:

/etc/fstab:


192.168.0.1:/home  /home  nfs  rsize=8192,wsize=8192,hard,intr  0  0



Die IP sollte der des NFS-Servers entsprechen, gefolgt von einem Doppelpunkt, nach welchem der Pfad zum exportierten Verzeichnis angegeben wird.
Das zweite Argument bestimmt den Ort, an welchem das sogenannte 'Share' eingebunden wird.
'nfs' ist der Typ des Dateisystem.
Die Optionen 'rsize=8192,wsize=8192' führen zu einer erheblichen Leistungssteigerung des Datenverkehrs.
Aufgrund von 'hard' wartet das System bei einem Ausfall des Servers, bis dieser wieder erreichbar ist. Danke dem Zusatz 'intr' ist es aber möglich, diesen Vorgang zu unterbrechen.

Befindet sich das /home-Verzeichnis des Client auf einer eigenen Partition, so muss diese Zeile in der fstab mit einer Raute (#) am Zeilenanfang auskommentiert. Ist dies nicht der Fall, so sollte zumindest der Inhalt des lokalen /home's in einen anderen Ordner gesichert werden:

Code:


$ cp /home /home-backup -R
$ rm /home/* -rf



Um Probleme zu vermeiden sollte man noch die lokalen Benutzer (nicht aber die System-User!) aus der /etc/passwd, der /etc/shadow sowie die lokalen Benutzer-Gruppen aus der /etc/group entfernen. Diese beginnen üblicherweise mit der UID bzw. GID 1000 und höher.

Abschließend kann das System neu gestartet werden. Die Benutzer müssten nun automatisch über das Netzwerk vom NIS-Server abgefragt und das /home-Verzeichnis vom NFS-Dienst bereitgestellt werden.

Schlusswort Top


Zum Abschluss muss noch gesagt werden, dass es sich hierbei keineswegs um eine sichere Lösung handelt. Der Einsatz empfiehlt sich vor allem für linuxbasierende Heimnetzwerke oder Subnetze für kleine Arbeitsgruppen ohne Zugriff von Außen.

Wer eine sichere Umgebung für eine größere Nutzeranzahl benötigt, sollte sich intensiv mit diesem Thema beschäftigen und Authentifizierungsdienste wie Kerberos verwenden.

Der Autor Top


Der Autor Julian Golderer <glua _at_ 4-mail.net> hat dieses System für eine kleine Arbeitsgruppe im Produktiveinsatz. Für diesen Einsatzzweck in einem homogenen Linux-Subnet war dies die optimale Lösung.
Sollten Fragen oder Problem auftauchen, können Sie gerne per Mail oder Jabber (glua@jabber.4-mail.net) Kontakt mit ihm aufnehmen.

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden

2014-02-08 11:16
Eric Schirra

StartUp fade-in-effect Login KDE

Configure Desktop->Desktop Effects.

Make sure Desktop Effects are activated on the "General" tab.
Check that the "Login effect" is activated on the "All effects" tab.
And on the "Advanced" tab, Composite type should be set to "OpenGL 2.0"
and Qt graphicssystem to "Raster".

 

2014-02-08 16:18
Eric Schirra

Keine Verbindung von telepathy oder kopete zu openfire.

 

Wie in der Bugmeldung https://igniterealtime.org/issues/browse/OF-636 beschrieben diese ändernungen durchführen:

 

In /usr/lib64/jvm/jre/lib/security/java.security den Eintrag:

security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg

auskommentieren.

 

Beispiel ist von openSUSE 13.1 64bit

2014-10-04 14:14
Eric Schirra

BIND and network unreachable messages

Sometimes you'll see messages like the following ones in your log file (messages are slightly obfuscated to protect innocent :)):

Jun 29 14:32:11 someserver named[1459]: error (network unreachable) resolving 'www.eolprocess.com/A/IN': 2001:503:a83e::2:30#53
Jun 29 14:32:11 someserver named[1459]: error (network unreachable) resolving 'www.eolprocess.com/A/IN': 2001:503:231d::2:30#53

What these messages say is that network that contains address 2001:503:231d::2:30 is unreachable. So, what's happening?

The problem is that all modern operating systems support IPv6 out of the box. The same is for growing number of software packages, among them is BIND too. So, operating system configures IPv6 address on interface and application thinks that IPv6 works and configures it. But, IPv6 doesn't work outside of the local network (there is no IPv6 capable router) so, IPv6 addresses, unless in local networks, are unreachable.

So, you might ask now: but everything otherwise works, why is this case special! Well, the problem is that some DNS servers, anywhere in hierarchy, support IPv6, but not all. And when our resolver gets IPv6 address in response, it defaults to it and ignores IPv4. It obviously can not reach it so it logs a message and then tries IPv4. Once again, note that this IPv6 address can pop up anywhere in hierarchy, it isn't necessary to be on the last DNS server. In this concrete case name server for eolprocess.com doesn't support IPv6, but some name server for the top level com domain do support it!

To prevent those messages from appearing add option -4 to bind during startup. On CentOS (Fedora/RHEL) add or modify the line OPTIONS in /etc/sysconfig/named so that it includes option -4, i.e.

OPTIONS="-4"

In openSUSE you must insert -4 in NAMED_ARGS:

NAMED_ARGS="-4"

2014-12-13 09:50
Eric Schirra

Kein Zugriff auf PrinterControl in hp-toolbox

 

1. User in Gruppe lp aufnehmen.

2. In /etc/cups/cupsd.conf den Abschnitt <Policy deafult>...</Policy> kopieren.

3. default in MeinePolicy umbennen.

4. DefaultPolicy auf MeinePolicy setzen.

5. Im Abschnitt

    # All printer operations require a printer operator

    < Limit Pause-Printer ....

    "Require user @SYSTEM" ändern in "Require user @SYSTEM @lp"

6. systemctl restart cups

7. Evtl. schon vorhanden Drucker anpassen:

  •      http://localhost:631 aufrufen
  •      Drucker auswählen
  •      Im Administrations DropDown "Standardeinstellungen festlegen" auswählen
  •      Unter Richtlinen die Nutzungsrichtlinien auf MeinePolicy setzen.

 

2014-12-29 11:42
Eric Schirra

Upgrading phpMyFAQ

3.4. Upgrading phpMyFAQ 2.8.x

Updating an existing phpMyFAQ 2.8.x installation is fairly simple. Via FTP copy all new files from the phpMyFAQ package except:

  • all files in the directory config/
  • all files in the directory assets/template/
  • the directory attachments/
  • the directory data/
  • the directory images/

Open the following URL in your browser:

http://www.example.com/faq/install/update.php

Ab Version 2.9.0
http://www.example.com/faq/setup/update.php

Ab Version 4.0.0
http://www.example.com/faq/update

Choose your installed phpMyFAQ version and click the button of the update script, your version will automatically be updated.

You can find the changed files between the 2.8.x versions in the file CHANGEDFILES.

2025-08-06 10:22
Eric Schirra

Herauszufinden was auf die Festplatte schreibt

Eine 1 in der Datei /proc/sys/vm/block_dump schaltet einen Debug-Modus ein.
 
Einschalten:  echo 1 > /proc/sys/vm/block_dump
 
Alle Zugriffe auf die Platte werden dann in /var/log/kern.log bzw. messages protokolliert.
Eine 0 schaltet den Modus wieder aus, also mit der Eingabe von
 
Ausschalten:  echo 0 > /proc/sys/vm/block_dump

 

2015-01-02 01:38
Eric Schirra

Akonadi mysql

Wenn Logdatei Meldungen beinhaltet wie:

  • Native table 'performance_schema'.'file_instances' has the wrong structure
  • Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
dann sollte ein Upgrade der Akonadidatenbank erfolgen.
 

Dazu zuerst die ConnectParameter herausfinden:

ps aux | grep mysql

 

Dann Upgrade mit den gefundenen Daten durchführen:

mysql_upgrade --defaults-file=/home/USER/.local/share/akonadi/mysql.conf --datadir=/home/USER/.local/share/akonadi/db_data/ --socket=/tmp/akonadi-USER.OgYHcO/mysql.socket

2015-01-05 00:50
Eric Schirra

Wie man SSH möglichst sicher konfiguriert

Secure Secure Shell

You may have heard that the NSA can decrypt SSH at least some of the time. If you have not, then read the latest batch of Snowden documents now. All of it. This post will still be here when you finish. My goal with this post here is to make NSA analysts sad.

TL;DR: Scan this post for fixed width fonts, these will be the config file snippets and commands you have to use.

Warning: You will need a recent (2013 or so) OpenSSH version.

The crypto

Reading the documents, I have the feeling that the NSA can 1) decrypt weak crypto and 2) steal keys. Let’s focus on the crypto first. SSH supports different key exchange algorithms, ciphers and message authentication codes. The server and the client choose a set of algorithms supported by both, then proceed with the key exchange. Some of the supported algorithms are not so great and should be disabled completely. If you leave them enabled but prefer secure algorithms, then a man in the middle might downgrade you to bad ones. This hurts interoperability but everyone uses OpenSSH anyway.

Key exchange

There are basically two ways to do key exchange: Diffie-Hellman and Elliptic Curve Diffie-Hellman. Both provide forward secrecy which the NSA hates because they can’t use passive collection and key recovery later. The server and the client will end up with a shared secret number at the end without a passive eavesdropper learning anything about this number. After we have a shared secret we have to derive a cryptographic key from this using a key derivation function. In case of SSH, this is a hash function.

DH works with a multiplicative group of integers modulo a prime. Its security is based on the hardness of the discrete logarithm problem.

Alice           Bob
---------------------------
Sa = random
Pa = g^Sa   --> Pa
                Sb = random
Pb          <-- Pb = g^Sb
s = Pb^Sa       s = Pa^Sb
k = KDF(s)      k = KDF(s)

ECDH works with elliptic curves over finite fields. Its security is based on the hardness of the elliptic curve discrete logarithm problem.

Alice           Bob
---------------------------
Sa = random
Pa = Sa * G --> Pa
                Sb = random
Pb          <-- Pb = Sb * G
s = Sa * Pb     s = Sb * Pa
k = KDF(s)      k = KDF(s)

OpenSSH supports 8 key exchange protocols:

  1. curve25519-sha256: ECDH over Curve25519 with SHA2
  2. diffie-hellman-group1-sha1: 1024 bit DH with SHA1
  3. diffie-hellman-group14-sha1: 2048 bit DH with SHA1
  4. diffie-hellman-group-exchange-sha1: Custom DH with SHA1
  5. diffie-hellman-group-exchange-sha256: Custom DH with SHA2
  6. ecdh-sha2-nistp256: ECDH over NIST P-256 with SHA2
  7. ecdh-sha2-nistp384: ECDH over NIST P-384 with SHA2
  8. ecdh-sha2-nistp521: ECDH over NIST P-521 with SHA2

We have to look at 3 things here:

  • ECDH curve choice: This eliminates 6-8 because NIST curves suck. They leak secrets through timing side channels and off-curve inputs. Also, NIST is considered harmful and cannot be trusted.
  • Bit size of the DH modulus: This eliminates 2 because the NSA has supercomputers and possibly unknown attacks. 1024 bits simply don’t offer sufficient security margin.
  • Security of the hash function: This eliminates 2-4 because SHA1 is broken. We don’t have to wait for a second preimage attack that takes 10 minutes on a cellphone to disable it right now.

We are left with 1 and 5. 1 is better and it’s perfectly OK to only support that but for interoperability, 5 can be included.

Recommended /etc/ssh/sshd_config snippet:

KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

Recommended /etc/ssh/ssh_config snippet:

Host *
    KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

If you chose to enable 5, open /etc/ssh/moduli if exists, and delete lines where the 5th column is less than 2000. If it does not exist, create it:

ssh-keygen -G /tmp/moduli -b 4096
ssh-keygen -T /etc/ssh/moduli -f /tmp/moduli

This will take a while so continue while it’s running.

Authentication

The key exchange ensures that the server and the client shares a secret no one else knows. We also have to make sure that they share this secret with each other and not an NSA analyst. There are 4 public key algorithms for authentication:

  1. DSA
  2. ECDSA
  3. Ed25519
  4. RSA

Number 2 here involves NIST suckage and should be disabled. Unfortunately, DSA keys must be exactly 1024 bits so let’s disable that as well.

Protocol 2
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key

This will also disable the horribly broken v1 protocol that you should not have enabled in the first place. We should remove the unused keys and only generate a large RSA key and an Ed25519 key. Your init scripts may recreate the unused keys. If you don’t want that, remove any ssh-keygen commands from the init script.

cd /etc/ssh
rm ssh_host_*key*
ssh-keygen -t ed25519 -f ssh_host_ed25519_key < /dev/null
ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key < /dev/null

Generate client keys using the following commands:

ssh-keygen -t ed25519 -o -a 100
ssh-keygen -t rsa -b 4096 -o -a 100

Symmetric ciphers

Symmetric ciphers are used to encrypt the data after the initial key exchange and authentication is complete.

Here we have quite a few algorithms:

  1. 3des-cbc
  2. aes128-cbc
  3. aes192-cbc
  4. aes256-cbc
  5. aes128-ctr
  6. aes192-ctr
  7. aes256-ctr
  8. aes128-gcm
  9. aes256-gcm
  10. arcfour
  11. arcfour128
  12. arcfour256
  13. blowfish-cbc
  14. cast128-cbc
  15. chacha20-poly1305

We have to consider the following:

  • Security of the cipher algorithm: This eliminates 1 and 10-12 - both DES and RC4 are broken. Again, no need to wait for them to become even weaker, disable them now.
  • Key size: At least 128 bits, the more the better.
  • Block size: Does not apply to stream ciphers. At least 128 bits. This elminates 14 because CAST has a 64 bit block size.
  • Cipher mode: The recommended approach here is to prefer AE modes and optionally allow CTR for compatibility. CTR with Encrypt-then-MAC is provably secure.

This leaves 5-9 and 15. Chacha20-poly1305 is preferred over AES-GCM because the latter does not encrypt message sizes.

Recommended /etc/ssh/sshd_config snippet:

Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

Recommended /etc/ssh/ssh_config snippet:

Host *
    Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

Message authentication codes

Encryption provides confidentiality, message authentication code provides integrity. We need both. If an AE cipher mode is selected, then extra MACs are not used, the integrity is already given. If CTR is selected, then we need a MAC to calculate and attach a tag to every message.

There are multiple ways to combine ciphers and MACs - not all of these are useful. The 3 most common:

  • Encrypt-then-MAC: encrypt the message, then attach the MAC of the ciphertext.
  • MAC-then-encrypt: attach the MAC of the plaintext, then encrypt everything.
  • Encrypt-and-MAC: encrypt the message, then attach the MAC of the plaintext.

Only Encrypt-then-MAC should be used, period. Using MAC-then-encrypt have lead to many attacks on TLS while Encrypt-and-MAC have lead to not quite that many attacks on SSH. The reason for this is that the more you fiddle with an attacker provided message, the more chance the attacker has to gain information through side channels. In case of Encrypt-then-MAC, the MAC is verified and if incorrect, discarded. Boom, one step, no timing channels. In case of MAC-then-encrypt, first the attacker provided message has to be decrypted and only then can you verify it. Decryption failure (due to invalid CBC padding for example) may take less time than verification failure. Encrypt-and-MAC also has to be decrypted first, leading to the same kind of potential side channels. It’s even worse because no one said that a MAC’s output can’t leak what its input was. SSH by default, uses this method.

Here are the available MAC choices:

  1. hmac-md5
  2. hmac-md5-96
  3. hmac-ripemd160
  4. hmac-sha1
  5. hmac-sha1-96
  6. hmac-sha2-256
  7. hmac-sha2-512
  8. umac-64
  9. umac-128
  10. hmac-md5-etm
  11. hmac-md5-96-etm
  12. hmac-ripemd160-etm
  13. hmac-sha1-etm
  14. hmac-sha1-96-etm
  15. hmac-sha2-256-etm
  16. hmac-sha2-512-etm
  17. umac-64-etm
  18. umac-128-etm

The selection considerations:

  • Security of the hash algorithm: No MD5 and SHA1. Yes, I know that HMAC-SHA1 does not need collision resistance but why wait? Disable weak crypto today.
  • Encrypt-then-MAC only: This eliminates the first half, the ones without -etm. You may be forced to enable non-etm algorithms on for some hosts (github). I am not aware of a security proof for CTR-and-HMAC but I also don’t think CTR decryption can fail.
  • Tag size: At least 128 bits. This eliminates umac-64-etm.
  • Key size: At least 128 bits. This doesn’t eliminate anything at this point.

Recommended /etc/ssh/sshd_config snippet:

MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com

Recommended /etc/ssh/ssh_config snippet:

# Github supports neither AE nor Encrypt-then-MAC.
Host github.com
    MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128

Host *
    MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com

Preventing key theft

Even with forward secrecy the secret keys must be kept secret. The NSA has a database of stolen keys - you do not want your key there.

System hardening

This post is not intended to be a comprehensive system security guide. Very briefly:

  • Don’t install what you don’t need: Every single line of code has a chance of containing a bug. Some of these bugs are security holes. Fewer lines, fewer holes.
  • Use free software: As in speech. You want to use code that’s actually reviewed or that you can review yourself. There is no way to achieve that without source code. Someone may have reviewed proprietary crap but who knows.
  • Keep your software up to date: New versions often fix critical security holes.
  • Exploit mitigation: Sad but true - there will always be security holes in your software. There are things you can do to prevent their exploitation such GCC’s -fstack-protector. One of the best security projects out there is Grsecurity. Use it or use OpenBSD.

Traffic analysis resistance

Set up Tor hidden services for your SSH servers. This has multiple advantages. It provides an additional layer of encryption and server authentication. People looking at your traffic will not know your IP, so they will be unable to scan and target other services running on the same server and client. Attackers can still attack these services but don’t know if it has anything to do with the observed traffic until they actually break in.

Now this is only true if you don’t disclose your SSH server’s fingerprint in any other way. You should only accept connections from the hidden service or from LAN, if required.

If you don’t need LAN access, you can add the following line to /etc/ssh/sshd_config:

ListenAddress 127.0.0.1:22

Add this to /etc/tor/torrc:

HiddenServiceDir /var/lib/tor/hidden_service/ssh
HiddenServicePort 22 127.0.0.1:22

You will find the hostname you have to use in /var/lib/tor/hidden_service/ssh/hostname. You also have to configure the client to use Tor. For this, socat will be needed. Add the following line to /etc/ssh/ssh_config:

Host *.onion
    ProxyCommand socat - SOCKS4A:localhost:%h:%p,socksport=9050

Host *
    ...

If you want to allow connections from LAN, don’t use the ListenAddress line, configure your firewall instead.

Key storage

You should encrypt your client key files using a strong password. Additionally, you can use ssh-keygen -o -a $number to slow down cracking attempts by iterating the hash function many times. You may want to store them on a pendrive and only plug it in when you want to use SSH. Are you more likely to lose your pendrive or have your system compromised? I don’t know.

Unfortunately, you can’t encrypt your server key and it must be always available, or else sshd won’t start. The only thing protecting it is OS access controls.

The end

It’s probably a good idea to test the changes. ssh -v will print the selected algorithms and also makes problems easier to spot. Be extremely careful when configuring SSH on a remote host. Always keep an active session, never restart sshd. Instead you can send the SIGHUP signal to reload the configuration without killing your session. You can be even more careful by starting a new sshd instance on a different port and testing that.

 

Quelle: https://stribika.github.io/2015/01/04/secure-secure-shell.html

2015-01-07 14:03
Eric Schirra

Large WAR file cannot be deployed in Tomcat 7

Problem

When uploading a WAR file larger than 50 MB, the Tomcat 7 Manager application reports:

The server encountered an internal error () that prevented it from fulfilling this request.

Exception java.lang.IllegalStateException:

org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException:

the request was rejected because its size (XXX) exceeds the configured maximum (52428800)

Solution

  • Go to the web.xml of the manager application (for instance it could be under /tomcat7/webapps/manager/WEB-INF/web.xml.
  • Increase the max-file-size and max-request-size:

<multipart-config>

<!– 50MB max –>

<max-file-size>52428800</max-file-size>

<max-request-size>52428800</max-request-size>

<file-size-threshold>0</file-size-threshold>

</multipart-config>

2015-01-27 23:46
Eric Schirra

fail2ban unban

fail2ban-client status

Dies gibt eine Liste aller Filter aus, die aktuell in Kraft sind. Zum Beispiel sieht das so aus:

[root@irgendwas ~]# fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:           ssh-iptables

Der Filter heißt also ssh-iptables (bei mir war es bisher nur immer dieser eine, möglich daß dies bei euch anders aussieht, dann sollte aber eben iptables -L Aufschluß geben, durch welchen Filter die fragliche IP gebannt wurde).

Welche Regel gesperrt wurde findet man heraus mit: iptables -L
Hier erscheint dann die Regel/Filter unter: Chain f2b-<Regelname>

Welche Ip bzw. ob eine IP gesperrrt ist, sieht man mit:

fail2ban-client status ssh-iptables

Mittels

fail2ban-client set ssh-iptables unbanip 1.2.3.4

wird die Verbannung nun ordentlich direkt mit fail2ban aufgehoben und es kommt nicht zu den (kleinen) Problemen, die ich im Notfallprozedere beschrieben haben.

2021-04-12 14:21
Eric Schirra

Version 4 des NFS in Linux-Distributionen einrichten

Reiko Kaps - 07.09.09

Aufmacher
Vergrößern

Die aktuellen Linux-Distributionen haben das Network File System Version 4 an Bord und verteilen damit flott ganze Dateisysteme.

Die Neuerungen von NFSv4 (siehe dazu Das Netzwerkdateisystem NFSv4) machen Lust auf einen ersten Blick, zumal die meisten Linuxe alle nötigen Pakete für das verteilte Dateisystem schon mitbringen.

Das eigene Netz benötigt für die Experimente einige Voraussetzungen. In der einfachsten Einrichtung authentifiziert NFSv4 Clients über ihre IP-Adresse, die der Server gegen das Domain Name System (DNS) überprüft. Die meisten Netze besitzen dank des Heim-Routers zwar einen lokalen DNS-Server. Doch verwaltet dieser meist nicht die Rechner des lokalen Netzes, sodass man entweder einen zweiten Server aufsetzen oder die Adress-Namens-Zuordnung in der Datei /etc/hosts (auf allen LAN-Rechnern) eintragen muss.

Bei nur einem NFS-Server und einem Client reichen dort die beiden Zeilen

192.0.2.10	    nfs-server.example.net
192.0.2.11 nfs-client.example.net

Alle Adressangaben entstammen dem Bereich 192.0.2.0/24, der für die Dokumentation reserviert ist. Auch die Domainnamen folgen den Empfehlungen aus RFC 2606 und müssen für eigene Experimente angepasst werden.

 

Netzwerkfreigaben, klassisch

Der NFSv4-Server steckt in den meisten Linux-Distributionen im Paket nfs-kernel-server, das der Paketmanager nachlädt und installiert. OpenSuse benötigt zusätzlich den Wert NFS4_SUPPORT="yes" in der Datei /etc/sysconfig/nfs, der NFSv4 nach einem Neustart des NFS-Servers einschaltet.

Anschließend überprüft man, ob alle nötigen Dienste laufen. Der Aufruf ps ax | egrep 'rpc|nfs' sollte eine Ausgabe liefern, die dem folgenden Beispiel ähnelt:

2036 ?	      S<     0:00  [nfsiod]

2521 ? S< 0:00 [nfsd4]

2522 ? S 0:00 [nfsd]

...

1663 ? S< 0:00 [rpciod/0]

2029 ? Ss 0:00 /sbin/rpc.statd

2045 ? Ss 0:00 /usr/sbin/rpc.idmapd

2533 ? Ss 0:00 /usr/sbin/rpc.mountd

Die Prozesse nfsd, rpc.statd und rpc.mountd gehören zu NFSv3, nfsd4 und rpc.idmapd zu NFSv4.

Anders als seine Vorgänger hängt NFSv4 die Freigaben in ein Basisverzeichnis ein. Der Befehl mkdir /srv/nfsv4 legt es an und die Zeile

/srv/nfsv4 192.0.2.0/24(rw,fsid=0,insecure,no_subtree_check,async)

in der Datei /etc/exports teilt es dem NFS-Server mit (siehe entsprechende Manpage). Das NFSv4-Basisverzeichnis benötigt zwingend die Option fsid=0, die es als Wurzelverzeichnis markiert und über das ein Client alle Freigaben des Servers in einem Rutsch einhängen kann. Diese Freigabe authentifiziert Clients wie die Vorgängerversion über die IP-Adresse oder den Hostnamen – mit der Angabe 192.168.1.0/24 können alle Rechner aus einem privaten Netz zugreifen. Die weiteren Optionen zwischen den Klammern sind optional, sie erlauben NFS-Zugriffe von Ports überhalb 1024 (insecure) und Schreibzugriffe (rw). Der Parameter async schaltet asynchrones Schreiben ein und no_subtree_check eine Sicherheitsfunktion ab, die überprüft, ob sich eine vom Client angesprochene Datei im freigegebenen Verzeichnisbaum befindet.

 

Freigaben im Basisverzeichnis

Das Basisverzeichnis nimmt weitere Freigaben als normale Verzeichnisse auf. Der Befehl mount -bind Quellverzeichnis Freigabeverzeichnis verbindet anschließend ein Datenverzeichnis mit der Freigabe unterhalb von /srv/nfsv4:

mkdir /srv/nfsv4/daten
mount -bind /home /srv/nfsv4/daten

Für eine dauerhafte Freigabe benötigt die Datei /etc/exports den Eintrag

/srv/nfsv4/daten 192.0.2.0/24(rw,nohide,insecure,async,no_subtree_check)

Der zusätzliche Parameter nohide weist den Server an, die Freigabe nicht zu verstecken. Mit der Zeile

/home /srv/nfsv4/daten none bind  0  0

in /etc/fstab verknüpft Linux die Freigabe mit dem Datenverzeichnis gleich beim Start. Änderungen an den Freigaben in /etc/exports teilt der Befehl exportfs -ra dem NFS-Server mit. Temporäre NFS-Freigaben benötigen keinen Eintrag in /etc/exports, sie lassen sich mittels exportfs anlegen:

exportfs -o rw,nohide,insecure 192.0.2.0/24:/srv/nfsv4/daten

Unter OpenSuse 11 steht für die Grundeinrichtung des NFSv4-Servers ein Yast-Frontend bereit. Will man allerdings Freigaben in das Basisverzeichnis einbinden, erleichtert das GUI die Arbeit nicht: Die Hilfe gibt sich kryptisch und schlägt vor, die Option bind=/target/path einzufügen. Wo diese hingehört, offenbart Yast hingegen nicht. Die oben beschriebene Methode per Kommandozeile führt aber auch dort zum Ziel.

Für das Auflösen von Benutzernamen benötigt NFSv4 sowohl auf dem Client als auch auf dem Server den Dienst idmapd, der per Vorgabe Benutzer- und Gruppennamen via /etc/passwd respektive /etc/group in ihre Kennungen umsetzt. Idmapd liest seine Einstellungen aus der Datei /etc/idmapd.conf. Dort setzt man den Wert hinter Domain = auf den Wert der eigenen, lokalen Domain und startet Client- und Server-Software neu.

Konfiguration des NFS-Client
NFS-Freigaben bindet OpenSuse über ein Yast-Interface ein, das mittels eines Browsers die Server im Netz finden kann. Vergrößern

Kann idmapd die Benutzer- und Gruppenkennung nicht zuordnen, bildet es sie auf einen Benutzer mit minimalen Rechten ab (nobody, nogroup). Die Zuordnung lässt sich unter [Mapping] anpassen.

In dieser Einrichtung kümmert sich idmapd nicht um die korrekte Übersetzung zwischen gleichen Benutzernamen, die aber unterschiedliche User-IDs besitzen: Ein Client-Benutzer namens gast mit der User-ID 5001 kann auf dem Server nicht schreiben, wenn der dortige Gast-Account eine abweichende ID besitzt.

Der Befehl mount -t nfs4 nfs-server:/ /Einhängepunkt verknüpft die Server-Freigaben mit dem Dateisystem des Clients.

 

NFS getunnelt

In der Kombination mit SSH lässt sich NFSv4 recht leicht verschlüsseln und über Netzwerkgrenzen tunneln. Auf dem Server benötigt dies eine Freigabe für localhost respektive für die IP-Adresse 127.0.0.1.

Der Client verbindet sich mittels des Kommandos ssh -L 8888:localhost:2049 nfs-server.example.net zum NFS-Server. Der Parameter -L tunnelt über die SSH-Verbindung den NFS-Port 2049 auf dem Server zum Port 8888 auf dem Client-Rechner, der die Freigaben durch

mount -t nfs4 -o port=8888,proto=tcp 
localhost:/remote /mnt/remote

in sein eigenes Dateisystem einhängt. (rek)

2015-02-13 19:56
Eric Schirra

Wie kann ich eine LVM volume group auf einem USB-⁠Laufwerk automatisch einbinden?

In /etc/lvm/lvm.conf, Abschnitt "global { .. }" müssen die Einträge "activation = 1" (der ist meist richtig) und "use_lvmetad = 1" (der stand bei mir auf 0) vorkommen.
Vor dem Ändern der Werte mit "systemctl stop lvm2.lvmetad" den LVM2-Dämon stoppen, dann ändern und den Dienst wieder starten.

Anschließend die USB-Platte einstecken, und "fdisk -l" zeigt alle Volumes. Jedenfalls hat das bei mir so funktioniert.

2015-02-27 20:35
Eric Schirra

Upgrading phpMyFAQ from rpm

Updating an existing phpMyFAQ 2.8.x installation is fairly simple. Via FTP copy all new files from the phpMyFAQ package except:

  • all files in the directory config/
  • all files in the directory assets/template/
  • the directory attachments/
  • the directory data/
  • the directory images/

Open the following URL in your browser:

http://www.example.com/faq/install/update.php

Ab Version 2.9.0
http://www.example.com/faq/setup/update.php

Ab Version 4.0.0
http://www.example.com/faq/update

Choose your installed phpMyFAQ version and click the button of the update script, your version will automatically be updated.

You can find the changed files between the 2.8.x versions in the file CHANGEDFILES.

2025-08-06 10:23
Eric Schirra

Adobe Digital Editions 4.0 unter Linux installieren.

Based on biesta's comment:

# This is a detailed 'howto'-document,
# how to install ADE-4.xx on *ubuntu-14.04* step by step in a console.
# Prerequisite: (x)ubuntu-14.04, system-update if required.
#
# Install the winbind package, if not yet done:

$ sudo apt-get install winbind

# Check if wine (actual version) is available:

$ wine --version

# response should be 1.7.33 (or newer?)
# install wine if required:

$ sudo add-apt-repository ppa:ubuntu-wine/ppa
$ sudo apt-get update
$ sudo apt-get install wine1.7

# To accept the License agreement, press Tab + Enter.
# Check if winetricks (actual version) is available:

$ winetricks -V

# ...response should be 20141125 (or newer?)
# install winetricks if required:

$ wget winetricks.googlecode.com/svn/trunk/src/winetricks
$ sudo cp -f winetricks /usr/bin
$ sudo cp -f winetricks /usr/bin/X11
$ sudo chmod 555 /usr/bin/winetricks
$ sudo chmod 555 /usr/bin/X11/winetricks

# install WINEPREFIX + 32bit-environment:

$ export WINEPREFIX=~/wine32a # or similar, e.g. ~/.wine32b
$ WINEARCH=win32 winecfg

# ****** IMPORTANT: ******
# The winecfg-command opens a GUI-window,
# with a drop-down element labelled "Windows Versions" (or similar).
# Default position is "Windows XP".
# Do NOT change this or anything else in the GUI, or the installation will fail.

$ winetricks -q corefonts dotnet40

# download + install ADE-4.xx (actual version?)
# im your browser: from
# www.adobe.com/de/solutions/ebook/digital-editions/download.html

$ wine ~/Downloads/ADE_4.0_Installer.exe

2025-02-19 19:25
Eric Schirra

Re-install Grub2 from DVD Rescue

Boot the Rescue from the DVD. This should be the same Arch as the installation: ie; 32 bit or 64 bit..


Once the DVD rescue gets to 'login', type: root
from there I run fdisk -l to confirm my HD partitition order.
We need to mount root (for me that's sda3)

Now mount / (sda3) with:

Code: [View]
mount /dev/sda3 /mnt

To mount the other devices
Next do:

Code: [View]
mount --bind /dev /mnt/dev

Then chroot:

Code: [View]
chroot /mnt
Code: [View]
mount /proc
Code: [View]
mount /sys

Your prompt changes to: Rescue:/>
Here type:

Code: [View]
grub2-mkconfig -o /boot/grub2/grub.cfg
Code: [View]
grub2-install /dev/sda

You can see it all here: https://dl.dropbox.com/u/10573557/Gr...ect/rescue.jpg

'exit'
# reboot

If you use LVM please check this post: https://forums.opensuse.org/vbcms-comments/478290-article-re-install-grub2-dvd-rescue-3.html#post2519005

N.B: This method should also work from a live cd
This should be the same Arch as the installation: ie; 32 bit or 64 bit..USE LIVE CD TO RESCUE

 

Quelle: https://forums.opensuse.org/content.php/128-Re-install-Grub2-from-DVD-Rescue

2015-08-30 13:53
Eric Schirra

Tonlino mit ADE und Onleihe nutzen.

Zur Nutzung benötigt man folgende Komponenten:

  • wine
  • winetricks (neuste Version)
  • ADE 2.0 (Adobe Digital Edition)

 

Wine und Winetricks sollte in den Repos der Distributionen vorhanden sein.

ADE kann man über ftp://ftp.adobe.com/pub/adobe/digitaleditions/ADE_2.0_Installer.exe herrunterladen.

Neueste winetricks mittels wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks herrunterladen.

 

ADE soll in einer eigenen Wineprefix (bottle) "ADE_2.0" installiert werden. Desweiteren als 32bit-Architekur. Die Archtekur ist zwingend erforderlich.

Es sind folgende Schritte auszuführen:

A: Installation:

  1. env WINEPREFIX="/home/eric/.local/share/wineprefixes/ADE_2.0" WINEARCH=win32 winetricks -q dotnet35sp1
  2. env WINEPREFIX="/home/eric/.local/share/wineprefixes/ADE_2.0" WINEARCH=win32 winetricks -q windowscodecs
  3. env WINEPREFIX="/home/eric/.local/share/wineprefixes/ADE_2.0" WINEARCH=win32 winetricks -q corefonts
  4. env WINEPREFIX="/home/eric/.local/share/wineprefixes/ADE_2.0" WINEARCH=win32 wine ADE_2.0_Installer.exe

 

B: Mountpoint des Tolino herausfinden:

Hierzu den Tolino über USB anschließen.

Im Dateimanager den Mountpoint herraus finden und kopieren.

In openSUSE 13.2 ist dies zum Beispiel: /run/media/eric/Mein Tolino

 

C: Anpassungen in Wine:

  1. Folgendes ausführen: env WINEPREFIX="/home/eric/.local/share/wineprefixes/ADE_2.0" winecfg

  2. Unter Laufwerke ein neue Laufwerkskonfiguration anlegen. Hierbei unter Erweitert als Typ Diskette auswählen.

 

  3. Prüfen und evtl. setzen der nativen Bbliotheken.

Fehlende Bibliotheken im Textfeld "Bestehende" sind mittels des DropDowns "Neue Überschreibung für" und des Buttons "Festlegen"  hinzuzufügen.

D: Firefox prüfen

Unter Einstellungen - > Anwendungen sollte es eine Zeile mit acsm File geben.

Beim Download eines Buches in der Onleihe sollte beim anschließenden Fenster "Adobe Digital Edition 2.0" ausgewählt werden.

 

E: Hinweis zur Nutzung von ADE

Zuerst ist der Tolino mit dem PC zu verbinden. Erst danach den ADE starten. WICHTIG!

Nun sollte der Tolino im ADE unter Geräte angezeigt werden.

 

Mittels rechter Maustaste auf einem Buch, kann das eBook dann auf den Tolino kopiert werden.

 

 

 

2015-10-15 17:49
Eric Schirra

VirtualBox fehlende Header (Kernel-Module) erstellen

Auf Konsole folgendes eingeben:

sudo /usr/lib/virtualbox/vboxdrv.sh setup

 

2016-02-02 19:53
Eric Schirra

Very slow ssh logins and dbus timeout error.

These lines kept cropping up in my system journal when I tried to access the server using ssh:

dbus[4865]: [system] Failed to activate service 'org.freedesktop.login1': timed out
sshd[7391]: pam_systemd(sshd:session): Failed to create session: Activation of org.freedesktop.login1 timed out
sshd[7388]: pam_systemd(sshd:session): Failed to create session: Activation of org.freedesktop.login1 timed out

The process list on the server looked fine. I could see dbus-daemon and systemd-logind processes and they were in good states. However, it looked like dbus-daemon had restarted at some point and systemd-logind had not been restarted since then. I crossed my fingers and bounced systemd-logind:

systemctl restart systemd-logind

Success! Logins via ssh and escalations with sudo worked instantly.

2016-04-27 18:13
Eric Schirra

Bottles in Wine

Es gibt versdchiedene Möglichkeiten.

Variante 1
Durch Export und Nutzung einer Umgebungsvariablen. Nützlich z.B. zum installieren eines Programmes aus einem Ordner oder CD.

export WINEPREFIX=$HOME/.wine-test
winecfg

Variante 2
Durch direkte Angabe. Nützlich um ein installiertes Programm direkt im Befehl zu starten.

WINEPREFIX=$HOME/.wine-test winetricks win2k
winearch=win32 WINEPREFIX="/opt/cellar/civ5" winecfg
winearch=win32 WINEPREFIX="/opt/cellar/civ5" wine notepad

2016-06-01 22:29
Eric Schirra

Wiso 2016 in unter Linux

 1. Neue Bottle erstellen und wine auf Windows 7 umstellen:

Ist es wirklich nötig auf Windows 7 umzustellen UND win32 zu verwenden?

winearch=win32 WINEPREFIX="/home/eric/.wine/bottles/wiso" winecfg

 2. Installieren von Visual C++ Redistributable 2013 (vcrun2013) mittles winetricks

winearch=win32 WINEPREFIX="/home/eric/.wine/bottles/wiso" winetricks

 3. Wiso installiere

wine Start.exe

 4. Update für Wiso von der Homepage runterladen und installieren

wine WISOSteuerSparbuch2016Update231500.exe

2023-06-18 12:53
Eric Schirra

This script automates the re-generation of a keystore file to enable SSL for Tomcat and postfix based on certificates obtained through letsencrypt.

#!/bin/bash

if [ ! -f "/etc/cert_gen_tomcat" ]; then
	echo "Config file /etc/cert_gen_tomcat does not exist"
	exit 1;
fi
source /etc/cert_gen_tomcat

if [ ! -f /usr/local/bin/certbot-auto ]; then
	wget -q https://dl.eff.org/certbot-auto >/usr/local/bin/certbot-auto
	chmod a+x /usr/local/bin/certbot-auto
fi

pgrep haproxy 1>/dev/null
HAPROXY=$?
if [ "$HAPROXY" -eq 0 ]; then
	service haproxy stop 1>/dev/null
fi

if [ -d "/opt/apache-tomcat" ]; then	
	/opt/apache-tomcat/bin/shutdown.sh 1>/dev/null
else 
	service tomcat7 stop 1>/dev/null
fi

#
# Stop if HTTP/HTTPS is already bound (as letsencrypt will start a webserver)
#
netstat -at|grep -q "https.*LISTEN"
if [ $? -eq 0  ]; then
	echo "Port 443 still bound. Exit."
	exit 1
fi
netstat -atn|grep  ":80 .*LISTEN"
if [ $? -eq 0  ]; then
	echo "Port 80 still bound. Exit."
	exit 1
fi

#
# letsencrypt will re-generate the certs
#
/usr/local/bin/certbot-auto renew 1>/dev/null

if [ $? -ne 0  ]; then
        echo "letsencrypt failed. Exit."
        exit 2
fi

#
# convert PEM to p12
#
openssl pkcs12 -export -in /etc/letsencrypt/live/$DOMAIN/fullchain.pem \
	-inkey /etc/letsencrypt/live/$DOMAIN/privkey.pem \
	-passout pass:$PASS > /etc/letsencrypt/live/$DOMAIN/server.p12

if [ $? -ne 0  ]; then
        echo "openssl key conversion to pkcs12 failed. Exit."
        exit 3
fi

rm -f /etc/tomcat7/keystore-$DOMAIN-new 2>/dev/null 

#
# create a new keystore file
#
keytool -importkeystore -srckeystore /etc/letsencrypt/live/$DOMAIN/server.p12 \
	-destkeystore /etc/tomcat7/keystore-$DOMAIN-new -srcstoretype pkcs12 2>/dev/null <<-EOF
$PASS
$PASS
$PASS
EOF

#
# move the new keystore file to the right location
#
if [ $? -eq 0  ]; then
	rm -f /etc/tomcat7/keystore-$DOMAIN-old 2>/dev/null 
	mv /etc/tomcat7/keystore-$DOMAIN /etc/tomcat7/keystore-$DOMAIN-old
	mv /etc/tomcat7/keystore-$DOMAIN-new /etc/tomcat7/keystore-$DOMAIN

	#
	# postfix might also use the certificate
	#
	if [ -f "/etc/postfix/server.pem" ]; then
		cat /etc/letsencrypt/live/$DOMAIN/fullchain.pem \
			/etc/letsencrypt/live/$DOMAIN/root.pem >/etc/postfix/server.pem
		cat /etc/letsencrypt/live/$DOMAIN/privkey.pem >/etc/postfix/privkey.pem

		service postfix restart 1>/dev/null
	fi

	EXIT_CODE=0
else
	echo "keystore creation failed. Restarting tomcat with old certificate."
	EXIT_CODE=4
fi

if [ "$HAPROXY" -eq 0 ]; then
	service haproxy start 1>/dev/null
fi

if [ -d "/opt/apache-tomcat" ]; then	
	/opt/apache-tomcat/bin/startup.sh 1>/dev/null
else 
	service tomcat7 start 1>/dev/null
fi


exit $EXIT_CODE

Quelle: https://github.com/oglimmer/cert_gen_tomcat/blob/master/cert_gen.sh

2016-07-18 23:14
Eric Schirra

How do I create a 32-bit WINE prefix?

WINEPREFIX=~/.wine/bottles/fooname WINEARCH=win32 wineboot

danach kann das Programm installiert oder gestartet werden mit:

WINEPREFIX=~/.wine/bottles/fooname WINEARCH=win32 your_32bit_executable.exe

2016-07-24 22:26
Eric Schirra

Wie kann ich neue Gruppenrechte prüfen?

Der hier beschriebene Vorschlag beschreibt nur das überprüfen der neuen Gruppenrechte. Um sie dauerhaft zu nutzen ist ein aus- und wieder einloggen unumgänglich.

Man fügt einen User zu einer neuen Gruppe hinzu.

sudo adduser foouser www-dat

 Ein groups zeigt dann, dass die neue Gruppe noch fehlt.

Durch newgrp www-data wird der User in der aktuellen Terminal-Session nun temporär aufgenommen.

Dies zeigt ein erneuter groups.

Nun kann man das zu überprüfende Programm in dieser Terminal-Session starten
und schauen ob nun alles so läuft wie erwartet.

Um dies nun dauerhaft zu nutzen, muss man sich einmal aus- und wieder einloggen.

2016-12-04 11:41
Eric

Login in Kolab/Cyrus

cyradm -u cyrus-admin localhost

2017-06-23 00:02
Webmaster

Deprecated Linux networking commands and their replacements

In my article detailing the command line utilities available for configuring and troubleshooting network properties on Windows and Linux, I mentioned some Linux tools that, while still included and functional in many Linux distributions, are actually considered deprecated and therefore should be phased out in favor of more modern replacements.

Specifically, the deprecated Linux networking commands in question are: arp, ifconfigiptunnel, iwconfig, nameif, netstat, and route. These programs (except iwconfig) are included in the net-tools package that has been unmaintained for years. The functionality provided by several of these utilities has been reproduced and improved in the new iproute2 suite, primarily by using its new ip command. The iproute2 software code is available from Kernel.org. Iproute2 documentation is available from the Linux Foundation and PolicyRouting.org.

Deprecated command

Replacement command(s)

arp ip n (ip neighbor)
ifconfig ip a (ip addr), ip link, ip -s (ip -stats)
iptunnel ip tunnel
iwconfig iw
nameif ip link, ifrename
netstat ss, ip route (for netstat-r), ip -s link (for netstat -i), ip maddr (for netstat-g)
route ip r (ip route)

.
Now let’s take a closer look at these deprecated commands and their replacements.

 

This article will not focus on iproute2 or the ip command in detail; instead it will simply give one-to-one mappings between the deprecated commands and their new counterparts. For replacement commands that are listed as ‘not apparent’, please contact me if you know otherwise.

Jump to:

Please note that nslookup and dig are covered separately here.

Arp

Deprecated arp commands

Replacement

arp -a [host] or --all [host]
.
Shows the entries of the specified host name or IP address. If the [host] parameter is not used, all entries will be displayed.
ip n (or ip neighbor), or ip n show
arp -d [ip_addr] or --delete [ip_addr]
.
Removes the ARP cache entry for the specified host.
ip n del [ip_addr] (this “invalidates” neighbor entries)
.
ip n f [ip_addr]
(or ip n flush [ip_addr])
arp -D or --use-device
.
Uses the hardware address associated with the specified interface.
Not apparent
arp -e
.
Shows the entries in default (Linux) style.
Not apparent
arp -f [filename] or --file [filename]
.
Similar to the -s option, only this time the address info is taken from the file that [filename] set up. If no [filename] is specified, /etc/ethers is used as default.
Not apparent
arp -H or --hw-type [type] or -t [type]
.
When setting or reading the ARP cache, this optional parameter tells arp which class of entries it should check for. The default value of this parameter is ether (i.e. hardware code 0x01 for IEEE 802.3 10Mbps Ethernet).
Not apparent
arp -i [int] or --device [int]
.
Selects an interface. When dumping the ARP cache only entries matching the specified interface will be printed. For example, arp -i eth0 -s 10.21.31.41 A321.ABCF.321A creates a static ARP entry associating IP address 10.21.31.41 with MAC address A321.ABCF.321A on eth0.
ip n [add | chg | del | repl] dev [name]
arp -n or --numeric
.
Shows IP addresses instead of trying to determine domain names.
Not apparent
arp -s [ip_addr] [hw_addr] or --set [ip_addr]
.
Manually creates a static ARP address mapping entry for host [ip_addr] with the hardware address set to [hw_addr].
ip n add [ip_addr] lladdr [mac_address] dev [device] nud [nud_state] (see example below)
arp -v
.
Uses verbose mode to provide more details.
ip -s n (or ip -stats n)

.
Some ip neighbor examples are as follows:

# ip n del 10.1.2.3 dev eth0

Invalidates the ARP cache entry for host 10.1.2.3 on device eth0.

# ip neighbor show dev eth0

Shows the ARP cache for interface eth0.

# ip n add 10.1.2.3 lladdr 1:2:3:4:5:6 dev eth0 nud perm

Adds a “permanent” ARP cache entry for host 10.1.2.3 device eth0. The Neighbor Unreachability Detection (nud) state can be one of the following:

  • noarp – entry is valid. No attempts to validate this entry will be made but it can be removed when its lifetime expires.
  • permanent – entry is valid forever and can be only be removed administratively.
  • reachable – entry is valid until the reachability timeout expires.
  • stale – entry is valid but suspicious.

Ifconfig

Deprecated ifconfig commands

Replacement

ifconfig
.
Displays details on all network interfaces.
ip a (or ip addr)
ifconfig [interface]
.
The name of the interface. This is usually a driver name followed by a unit number; for example, eth0 for the first Ethernet interface. Eth0 will usually be a PC’s primary network interface card (NIC).
ip a show dev [interface]
ifconfig [address_family]
.
To enable the interpretation of differing naming schemes used by various protocols, [address_family] is used for decoding and displaying all protocol addresses. Currently supported address families include inet (TCP/IP, default), inet6 (IPv6), ax25 (AMPR Packet Radio), ddp (Appletalk Phase 2), ipx (Novell IPX) and netrom (AMPR Packet radio).
ip -f [family] a
.
[family]
can be inet (IPv4), inet6 (IPv6), or link. Additionally, -4 = -f inet and -6 = -f inet6.
ifconfig [interface] add [address/prefixlength
.
Adds an IPv6 address to the [interface].
ip a add [ip_addr/mask] dev [interface]
ifconfig [interface] address [address]
.
Assigns the specified IP [address] to the specified [interface].
ip a add [ip_addr/mask] dev [interface]
ifconfig [interface] allmulti or -allmulti
.
Enables or disables all-multicast mode. If selected, all multicast packets on the network will be received by the [interface] specified. This enables or disables the sending of incoming frames to the kernel’s network layer.
ip mr iif [name] or ip mroute iif [name], where [name] is the interface on which multicast packets are received.
ifconfig [interface] arp or -arp
.
Enables or disables the use of the ARP protocol on this [interface].
ip link set arp on or arp off
ifconfig [interface] broadcast [address]
.
Specifies the address to use to use for broadcast transmissions. By default, the broadcast address for a subnet is the IP address with all ones in the host portion of the subnet address (i.e., a.b.c.255 for a /24 subnet).
ip a add broadcast [ip_address]
.
ip link set dev [interface] broadcast [mac_address] (sets the link layer broadcast address)
ifconfig [interface] del [address/prefixlength]
.
Removes an IPv6 address from the [interface], such as eth0.
ip a del [ipv6_addr or ipv4_addr] dev [interface]
ifconfig [interface] down
.
Disables the [interface], such as eth0.
ip link set dev [interface] down
ifconfig [interface] hw [class] [address]
.
Sets the hardware (MAC) address of this [interface], if the device driver supports this operation. The keyword must be followed by the name of the hardware [class] and the printable ASCII equivalent of the hardware address. Hardware classes currently supported include ether (Ethernet), ax25 (AMPR AX.25), ARCnet and netrom (AMPR NET/ROM).
ip link set dev [interface] address [mac_addr]
ifconfig [interface] io_addr [address]
.
Sets the start [address] in I/O space for this device.
Not apparent; possibly ethtool.
ifconfig [interface] irq [address]
.
Sets the interrupt line used by the network interface.
Not apparent; possibly ethtool.
ifconfig [interface] mem_start [address]
.
Sets the start address for shared memory of the interface.
Not apparent; possibly ethtool.
ifconfig [interface] media [type]
.
Sets physical port or medium type. Examples of [type] are 10baseT, 10base2, and AUI. A [type] value of auto will tell the interface driver to automatically determine the media type (driver support for this command varies).
Not apparent; possibly ethtool.
ifconfig [interface] mtu [n]
.
Sets the Maximum Transfer Unit (MTU) of an interface to [n].
ip link set dev [interface] mtu [n]
ifconfig [interface] multicast
.
Sets the multicast flag on the interface (should not normally be needed as the drivers set the flag correctly themselves).
ip link set dev [interface] multicast on or off
ifconfig [interface] netmask [mask_address]
.
Sets the subnet mask (not the IP address) for this [interface]. This value defaults to the standard Class A, B, or C subnet masks (based on the interface IP address) but can be changed with this command.
Not apparent
ifconfig [interface] pointopoint or -pointopoint
.
Enables or disables point-to-point mode on this [interface].
not apparent; possibly ipppd [device]. The command ip a add peer [address] specifies the address of the remote endpoint for point-to-point interfaces.
ifconfig [interface] promisc or -promisc
.
Enables or disables promiscuous mode on the [interface].
ip link set dev [interface] promisc on or off
ifconfig [interface] txquelen [n]
.
Sets the transmit queue length on the [interface]. Smaller values are recommended for connections with high latency (i.e., dial-up modems, ISDN, etc).
ip link set dev [interface] txqueuelen [n] or txqlen [n]
ifconfig [interface] tunnel [address]
.
Creates a Simple Internet Transition (IPv6-in-IPv4) device which tunnels to the IPv4 [address] provided.
ip tunnel mode sit (other possible modes are ipip and gre).
ifconfig [interface] up
.
Activates (enables) the [interface] specified.
ip link set [interface] up

.
Some examples illustrating the ip command are as follows; using the table above you should be able to figure out what they do.

# ip link show dev eth0

# ip a add 10.11.12.13/8 dev eth0

# ip link set dev eth0 up

# ip link set dev eth0 mtu 1500

# ip link set dev eth0 address 00:70:b7:d6:cd:ef

Iptunnel

Deprecated iptunnel commands

Replacement

iptunnel [add | change | del | show] ip tunnel a or add
ip tunnel chg or change
ip tunnel d or del
ip tunnel ls or show
iptunnel add [name] [mode {ipip | gre | sit} ] remote [remote_addr] local [local_addr] ip tunnel add [name] [mode {ipip | gre | sit | isatap | ip6in6 | ipip6 | any }] remote [remote_addr] local [local_addr]
iptunnel -V or --version not apparent

.
The syntax between iptunnel and ip tunnel is very similar as these examples show.

# [iptunnel | ip tunnel] add ipip-tunl1 mode ipip remote 83.240.67.86 (ipip-tunl1 is the name of the tunnel, 83.240.67.86 is the IP address of the remote endpoint).

# [iptunnel | ip tunnel] add ipi-tunl2 mode ipip remote 104.137.4.160 local 104.137.4.150 ttl 1

# [iptunnel | ip tunnel] add gre-tunl1 mode gre remote 192.168.22.17 local 192.168.10.21 ttl 255

Iptunnel is covered in more depth here.

Iwconfig

Iwconfig’s successor, iw, is still in development. Official documentation for iw is available here and here.

Deprecated iwconfig commands

Replacement

iwconfig
.
Displays basic details about wireless interfaces, such as supported protocols (802.11a/b/g/n), Extended Service Set ID (ESSID), mode, and access point. To view these details about a particular interface, use iwconfig [interface] where the interface is the device name, such as wlan0.
iw dev [interface] link
iwconfig [interface] ap [address]
.
Forces the wireless adapter to register with the access point given by the [address], if possible. This address is the cell identity of the access point (as reported by wireless scanning) which may be different from its MAC address.
Not apparent
iwconfig commit
.
Some wireless adapters may not apply changes immediately (they may wait to aggregate the changes, or apply them only when the card is brought up via ifconfig). This command (when available) forces the adapter to immediately apply all pending changes.
Not apparent
iwconfig [interface] essid [name]
.
Connects to the WLAN with the ESSID [name] provided. With some wireless adapters, you can disable the ESSID checking (ESSID promiscuous) with off or any (and on to re-enable it).
iw [interface] connect [name]
iwconfig [interface] frag [num]
.
Sets the maximum fragment size which is always lower than the maximum packet size. This parameter may also control Frame Bursting available on some wireless adapters (the ability to send multiple IP packets together). This mechanism would be enabled if the fragment size is larger than the maximum packet size. Other valid frag parameters to auto, on, and off.
Not apparent
iwconfig [interface] [freq | channel]
.
Sets the operating frequency or channel on the wireless device. A value below 1000 indicates a channel number, a value greater than 1000 is a frequency in Hz. You can append the suffix k, M or G to the value (for example, “2.46G” for 2.46 GHz frequency). You may also use off or auto to let the adapter pick up the best channel (when supported).
iw dev [interface] set freq [freq] [HT20|HT40+|HT40-]
.
iw dev [interface] set channel [chan] [HT20|HT40+|HT40-]
iwconfig [interface] key [key] [mode] [on | off]
.
To set the current encryption [key], just enter the key in hex digits as XXXX-XXXX-XXXX-XXXX or XXXXXXXX. You can also enter the key as an ASCII string by using the s: prefix. On and off re=enable and disable encryption. The security mode may be open or restricted, and its meaning depends on the card used. With most cards, in open mode no authentication is used and the card may also accept non-encrypted sessions, whereas in restricted mode only encrypted sessions are accepted and the card will use authentication if available.
iw [interface] connect [name] keys [key] (for WEP)
.
To connect to an AP with WPA or WPA2 encryption, you must use wpa_supplicant.
iwconfig [interface] mode [mode]
.
Sets the operating mode of the wireless device. The [mode] can be Ad-Hoc, Auto, Managed, Master, Monitor, Repeater, or Secondary.
.
Ad-Hoc
: the network is composed of only one cell and without an access point.
Managed: the wireless node connects to a network composed of many access points, with roaming.
Master: the wireless node is the synchronization master, or it acts as an access point.
Monitor: the wireless node is not associated with any cell and passively monitors all packets on the frequency.
Repeater: the wireless node forwards packets between other wireless nodes.
Secondary: the wireless node acts as a backup master/repeater.
Not apparent
iwconfig [interface] modu [modulation]
.
Forces the wireless adapter to use a specific set of modulations. Modern adapters support various modulations, such as 802.11b or 802.11g. The list of available modulations depends on the adapter/driver and can be displayed using iwlist modulation. Some options are 11g, CCK OFDMa, and auto.
Not apparent
iwconfig [interface] nick [name]
.
Sets the nick name (or station name).
Not apparent
iwconfig [interface] nwid [name]
.
Sets the Network ID for the WLAN. This parameter is only used for pre-802.11 hardware as the 802.11 protocol uses the ESSID and access point address for this function. With some wireless adapters, you can disable the Network ID checking (NWID promiscuous) with off (and on to re-enable it).
Not apparent
iwconfig [interface] power [option]
iwconfig [interface] power min | max [secondsu | secondsm]
iwconfig [interface] power mode [mode]
iwconfig [interface] power on | off
.
Configures the power management scheme and mode. Valid [options] are: period [value] (sets the period between wake ups), timeout [value] (sets the timeout before going back to sleep), saving [value] (sets the generic level of power saving).
The min and max modifiers are in seconds by default, but append the suffices m or u to specify values in milliseconds or microseconds.
Valid [mode] options are: all (receive all packets), unicast (receive unicast packets only, discard multicast and broadcast) and multicast (receive multicast and broadcast only, discard unicast packets).
On and off re-enable or disable power management.
Not apparent; some power commands are:
.
iw dev [interface] set power_save on
.
iw dev [interface] get power_save
iwconfig [interface] rate/bit [rate]
.
Sets the bit rate in bits per second for cards supporting multiple bit rates. The bit-rate is the speed at which bits are transmitted over the medium, the user speed of the link is lower due to medium sharing and various overhead.Suffixes k, M or G can be added to the numeric [rate] (decimal multiplier : 10^3, 10^6 and 10^9 b/s), or add ‘0‘ for enough. The [rate] can also be auto to select automatic bit-rate mode (fallback to lower rate on noisy channels), or fixed to revert back to fixed setting. If you specify a bit-rate numeric value and append auto, the driver will use all bit-rates lower and equal than this value.
iw [interface] set bitrates legacy-2.4 12 18 24
iwconfig [interface] retry [option] [value]
.
To set the maximum number of retries (MAC retransmissions), enter limit [value]. To set the maximum length of time the MAC should retry, enter lifetime [value]. By default, this value is in seconds; append the suffices m or u to specify values in milliseconds or microseconds. You can also add the short, long, min and max modifiers.
Not apparent
iwconfig [interface] rts [threshold]
.
Sets the size of the smallest packet for which the node sends RTS; a value equal to the maximum packet size disables the mechanism. You may also set the threshold parameter to auto, fixed or off.
Not apparent
iwconfig [interface] sens [threshold]
.
Sets the sensitivity threshold (defines how sensitive the wireless adapter is to poor operating conditions such as low signal, signal interference, etc). Modern adapter designs seem to control these thresholds automatically.
Not apparent
iwconfig [interface] txpower [value]
.
For adapters supporting multiple transmit powers, this sets the transmit power in dBm. If W is the power in Watt, the power in dBm is P = 30 + 10.log(W). If the [value] is postfixed by mW, it will be automatically converted to dBm. In addition, on and off enable and disable the radio, and auto and fixed enable and disable power control (if those features are available).
iw dev [interface] set txpower [auto | fixed | |limit] [tx power in mBm]
.
iw phy [phyname] set txpower [auto | fixed | limit] [tx power in mBm]
iwconfig --help
.
Displays the iwconfig help message.
iw help
iwconfig --version
.
Displays the version of iwconfig installed.
iw --version

.
Some examples of the iw command syntax are as follows.

# iw dev wlan0 link

# iw wlan0 connect CoffeeShopWLAN

# iw wlan0 connect HomeWLAN keys 0:abcde d:1:0011223344
(for WEP)

Nameif

Deprecated nameif commands

Replacement

nameif [name] [mac_address]
.
If no name and MAC address are provided, it attempts to read addresses from /etc/mactab. Each line of mactab should contain an interface name and MAC address (or comments starting with #).
ip link set dev [interface] name [name]
.
ifrename -i [interface] -n [newname]
nameif -c [config_file]
.
Reads from [config_file] instead of /etc/mactab.
ifrename -c [config_file]
nameif -s
.
Error messages are sent to the syslog.
Not apparent

Netstat

Deprecated netstat commands

Replacement

netstat -a or --all
.
Shows both listening and non-listening sockets.
ss -a or --all
netstat -A [family] or --protocol=[family]
.
Specifies the address families for which connections are to be shown. [family] is a comma separated list of address family keywords like inet, unix, ipx, ax25, netrom, and ddp. This has the same effect as using the --inet, --unix (-x), --ipx, --ax25, --netrom, and --ddp options.
ss -f [family] or –family=[family]
.
Families: unix, inet, inet6, link, netlink.
netstat -c or --continuous
.
Configures netstat to refresh the displayed information every second until stopped.
Not apparent
netstat -C
.
Prints routing information from the route cache.
ip route list cache
netstat -e or --extend
.
Displays an increased level of detail. Can be entered as twice (as --ee) for maximum details.
ss -e or --extended
netstat -F
.
Prints routing information from the forward information database (FIB).
Not apparent
netstat -g or --groups
.
Displays multicast group membership information for IPv4 and IPv6.
ip maddr, ip maddr show [interface]
netstat -i or --interface=[name]
.
Displays a table of all network interfaces, or the specified [name].
ip -s link
netstat -l or --listening
.
Shows only listening sockets (which are omitted by netstat be default).
ss -l or --listening
netstat -M or --masquerade
.
Displays a list of masqueraded connections (connections being altered by Network Address Translation).
Not apparent
netstat -n or --numeric
.
Show numerical addresses instead of trying to determine symbolic host, port or user names (skips DNS translation).
ss -n or --numeric
netstat --numeric-hosts
.
Shows numerical host addresses but does not affect the resolution of port or user names.
Not apparent
netstat --numeric ports
.
Shows numerical port numbers but does not affect the resolution of host or user names.
Not apparent
netstat --numeric-users
.
Shows numerical user IDs but does not affect the resolution of host or port names.
Not apparent
netstat -N or --symbolic
.
Displays the symbolic host, port, or user names instead of numerical representations. Netstat does this by default.
ss -r or --resolve
netstat -o or --timers
.
Includes information related to networking timers.
ss -o or --options
netstat -p or --program
.
Shows the process ID (PID) and name of the program to which each socket belongs.
ss -p
netstat -r or --route
.
Shows the kernel routing tables.
ip route, ip route show all
netstat -s or --statistics
.
Displays summary statistics for each protocol.
ss -s
netstat -t or --tcp
.
Filters results to display TCP only.
ss -t or --tcp
netstat -T or --notrim
.
Stops trimming long addresses.
Not apparent
netstat -u or --udp
.
Filters results to display UDP only.
ss -u or --udp
netstat -v or --verbose
.
Produces verbose output.
Not apparent
netstat -w or --raw
.
Filter results to display raw sockets only.
ss-w or --raw
netstat -Z or --context
.
Prints the SELinux context if SELinux is enabled. On hosts running SELinux, all processes and files are labeled in a way that represents security-relevant information. This information is called the SELinux context.
Not apparent

Route

Deprecated route commands

Replacement

route
.
Displays the host’s routing tables.
ip route
route -A [family] [add] or route --[family] [add]
.
Uses the specified address family with add or del. Valid families are inet (DARPA Internet), inet6 (IPv6), ax25 (AMPR AX.25), netrom (AMPR NET/ROM), ipx (Novell IPX), ddp (Appletalk DDP), and x25 (CCITT X.25).
ip -f [family] route
.
[family] can be inet (IP), inet6 (IPv6), or link. Additionally, -4 = -f inet and -6 = -f inet6.
route -C or --cache
.
Operates on the kernel’s routing cache instead of the forwarding information base (FIB) routing table.
Not apparent; ip route show cache dumps the routing cache.
route -e or -ee
.
Uses the netstat-r format to display the routing table. -ee will generate a very long line with all parameters from the routing table.
ip route show
route -F or --fib
.
Operates on the kernel’s Forwarding Information Base (FIB) routing table (default behavior).
Not apparent
route -h or --help
.
Prints the help message.
ip route help
route -n
.
Shows numerical IP addresses and bypass host name resolution.
Not apparent
route -v or --verbose
.
Enables verbose command output.
ip -s route
route -V or --version
.
Dispays the version of net-tools and the route command.
ip -V
route add or del
.
Adds or delete a route in the routing table.
ip route [add | chg | repl | del] [ip_addr] via [ip_addr]
route [add or del] dev [interface]
.
Associates a route with a specific device. If dev [interface] is the last option on the command line, the word dev may be omitted.
ip route [add | chg | repl | del] dev [interface]
route [add or del] [default] gw [gw]
.
Routes packets through the specified gateway IP address.
ip route add default via [gw]
route [add or del] -host
.
Specifies that the target is a host (not a network).
Not apparent
route [add or del] -irtt [n]
.
Sets the initial round trip time (IRTT) for TCP connections over this route to [n] milliseconds (1-12000). This is typically only used on AX.25 networks. If omitted the RFC 1122 default of 300ms is used.
Not apparent; ip route [add | chg | repl | del] rtt [number] sets the RTT estimate; rttvar [number] sets the initial RTT variance estimate.
route [add or del] -net
.
Specifies that the target is a network (not a host).
Not apparent
route [add or del] [-host or -net] netmask [mask]
.
Sets the subnet [mask].
Not apparent
route [add or del] metric [n]
.
Sets the metric field in the routing table (used by routing daemons) to the value of [n].
ip route [add | chg | repl | del] metric [number] or preference [number]
route [add or del] mod, dyn, or reinstate
.
Install a dynamic or modified route. These flags are for diagnostic purposes, and are generally only set by routing daemons.
Not apparent
route [add or del] mss [bytes]
.
Sets the TCP Maximum Segment Size (MSS) for connections over this route to the number of [bytes] specified.
ip route [add | chg | repl | del] advmss [number] (the MSS to advertise to these destinations when establishing TCP connections).
route [add or del] reject
.
Installs a blocking route, which will force a route lookup to fail. This is used to mask out networks before using the default route. This is not intended to provide firewall functionality.
ip route add prohibit [network_addr]
route [add or del] window [n]
.
Set the TCP window size for connections over this route to the value of [n] bytes. This is typically only used on AX.25 networks and with drivers unable to handle back-to-back frames.
ip route [add | chg | repl | del] window [W]

.
Some examples of ip route command syntax are as follows.

# ip route add 10.23.30.0/24 via 192.168.8.50

# ip route del 10.28.0.0/16 via 192.168.10.50 dev eth0

# ip route chg default via 192.168.25.110 dev eth1

# ip route get [ip_address]
(shows the interface and gateway that would be used to reach a remote host. This command would be especially useful for troubleshooting routing issues on hosts with large routing tables and/or with multiple network interfaces).

Quelle: Doug Vitale Tech Blog

2018-09-29 21:26
Webmaster

Probleme mit Nextcloud News

1.) Evtl. ein Zertifikatsfehler?

Nachschauen ober in der Tabelle oc_news_feeds die Spalte last_update_error einen Eintrag enthält
Ein evtl. fehlendes Zertifikat in /etc/ssl/certs kopieren.
Außerdem muss in inder /etc/php7/apache2/php.ini und in der /etc/php7/cli/php.ini folgnder Eintrag vorhanden sein: curl.cainfo = /etc/ssl/ca-bundle.pem

Siehe auch: https://github.com/nextcloud/news/issues/74

2018-09-29 21:30
Webmaster

rear (Relax and Recovery) und NFS als Speicherort

Wichtig ist hierbei das bei export no_root_squash und rw als Exportparameter in der /etc/exports auf dem NFS-Server angeben werden. zB.:

/srv/nfs/rear 192.168.1.0/24(rw,nohide,no_root_squash,sync,no_subtree_check)


Außerdem sollten folgende Parameter in der /etc/rear/local.conf des Client stehen:

BACKUP_OPTIONS=nfsvers=4,nolock
BACKUP_URL=nfs://192.168.1.100/srv/nfs/rear/

2018-11-02 15:31
Webmaster

HowTo install Onlyoffice in Nextcloud (Teil1)?

Nextcloud: Online-Office mit ONLYOFFICE

Nextcloud Logo

Ein klassisches Anwendungsgebiet für „die Cloud“ ist das Erstellen und die Bearbeitung von Office-Dokumenten. Diese können dann meistens direkt im Browser auch durch mehrere Benutzer gleichzeitig editiert werden. Nextcloud bietet dieses Feature nicht direkt out-of-the-box, allerdings kann die selbstgehostete Cloud leicht durch Apps erweitert werden. Genau hier setzt ONLYOFFICE an: Durch diese Erweiterung kann Nextcloud einfach um Online-Office-Funktionalitäten erweitert werden.

Dieser Artikel beschreibt daher die Installation und Konfiguration von ONLYOFFICE mittels Docker und das Zusammenspiel mit einer bestehenden Nextcloud-Instanz. Wie immer liegt das Augenmerk v.a. auf der Sicherheit aller beteiligten Systeme.

Achtung: Dieser Artikel ist nicht mehr aktuell. Das hier gezeigte Setup hat eine erhebliche Einschränkung: Der Zugriff auf Office-Dokumente ist hiermit nicht aus dem Internet, sondern nur aus dem lokalen Netzwerk (LAN) möglich.

In einem Folgeartikel wird ein verbessertes Setup gezeigt, bei dem diese Probleme nicht auftreten: Nextcloud: Online-Office mit ONLYOFFICE (mit eigener Subdomain)

Update-Historie (letztes Update 09.11.2018)

 

ONLYOFFICE vs Collabora

Bevor es an die Installation geht, noch ein Hinweis: ONLYOFFICE ist nur eine Möglichkeit, Nextcloud um Online-Office-Funktionalitäten zu erweitern. Eine Alternative dazu ist Collabora. Die Installation und Einrichtung von Collabora habe ich bereits im Artikel Nextcloud: Online-Office mit Collabora beschrieben. Nun stellt sich natürlich die Frage, auf welche Lösung man setzen sollte. Hier gibt es keine eindeutige Empfehlung: Beide Lösungen integrieren sich gut in Nextcloud und bieten ähnliche Features.

Die Unterschiede zwischen den Office-Lösungen weden in diesem Artikel detailliert beschrieben. Aber Achtung: der Vergleich wurde von ONLYOFFICE veröffentlicht, daher ist es nicht auszuschließen, dass hier eine Lösung per se besser abschneidet. Der Artikel ist aber trotzdem interessant, da er auch die Unterschiede in der technischen Umsetzung beider Lösungen beleuchtet.

Was für den Endanwender sicherlich am wichtigsten ist: Collabora kommt aus der LibreOffice-Ecke und bietet daher die beste Unterstützung für die OpenDocument-Formate. Bei der Entwicklung von ONLYOFFICE wurde von Anfang an Wert auf die OOXML-Formate (Office Open XML – die von Microsoft Office bevorzugten Formate) gelegt. Nach eigenen Angaben unterstützt ONLYOFFICE die Microsoft Office Formate zu 100%.

Daher werden Anwender, die hauptsächlich mit Microsoft Office arbeiten, wohl eher die Lösung von ONLYOFFICE bevorzugen. Wer dagegen meist LibreOffice/OpenOffice nutzt, sollte sich Collabora mal näher anschauen.

Am besten einfach mal selbst beide Lösungen ausprobieren: ONLYOFFICE und Collabora können parallel installiert werden, so dass man sich nicht sofort auf eine Office-Variante festlegen muss.

Installation und Konfiguration von ONLYOFFICE

ONLYOFFICE hat einige Abhängigkeiten, so dass eine manuelle Installation durchaus aufwändig ist. Daher beschreibt der Artikel die Installation der Office-Lösung mittels Docker. Dadurch kann ONLYOFFICE in wenigen Schritten schnell und einfach installiert werden.

Voraussetzungen

Folgende Voraussetzungen sind für den Betrieb von ONLYOFFICE zu erfüllen:

  • Ein System, auf dem Docker installiert ist. Im Rahmen des Artikels setze ich Ubuntu Server ein, allerdings sollten die Schritte auch auf andere Distributionen übertragbar sein. Wie Docker selbst installiert wird, wurde bereits im Artikel Docker auf Ubuntu Server erklärt.
  • ONLYOFFICE ist recht speicherintensiv. Daher sollte auf dem entsprechenden PC/VM mindestens 4 GB RAM verfügbar sein (besser noch 6 GB). Aus genau diesem Grund wird ONLYOFFICE auch auf einem Raspberry Pi (Affiliate-Link) nicht optimal laufen. Auch wenn es prinzipiell möglich ist, ONLYOFFICE auf einem solchen Kleinst-Rechner zu betreiben, wird die Performance hier zu wünschen übriglassen.
  • Nextcloud muss über eine gesicherte SSL-Verbindung erreichbar sein. Wer die Cloud wie im Artikel Nextcloud auf Ubuntu Server 18.04 LTS mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban beschrieben installiert hat, ist bestens vorbereitet, da hier ein SSL-Zertifikat von Let’s Encrypt zum Einsatz kommt.

Häufig liest man, dass ONLYOFFICE nicht auf demselben Rechner wie Nextcloud installiert werden sollte, da es hier zu Problemen kommen könnte. Dies trifft allerdings nur dann zu, wenn ONLYOFFICE manuell installiert wird. Wenn die Office-Lösung wie hier beschrieben über Docker läuft, dann kann ONLYOFFICE problemlos auf der gleichen Maschine wie Nextcloud betrieben werden.

Es ist aber natürlich auch möglich, ONLYOFFICE auf einem anderen Rechner (z.B. eine zweite virtuelle Maschine) zu installieren. In diesem Fall müssen nur die IP-Adressen entsprechend angepasst werden.

Vorbereitung: Zertifikat erstellen

Die Kommunikation zwischen Nextcloud und ONLYOFFICE muss über eine gesicherte SSL-Verbindung erfolgen. Hier kann der Einfachheit halber ein selbst signiertes Zertifikat zum Einsatz kommen.
Es wäre auch möglich, ein eigenes Zertifikat von Let’s Encrypt speziell für die ONLYOFFICE-Verbindung zu nutzen. Der Aufwand wäre hier allerdings etwas höher, da sämtliche Requests dann durch den nginx Gateway-Host geleitet werden oder die Zertifikate immer manuell kopiert werden müssten (Let’s Encrypt Zertifikate haben nur eine Gültigkeitsdauer von 90 Tagen).
Ein selbst signiertes Zertifikat ist hier das Mittel der Wahl, da es einfach erzeugt werden kann und die Verbindung trotzdem verschlüsselt ist. Auch muss man hier keinerlei Anpassungen am Webserver vornehmen, was eine zusätzliche Fehlerquelle wäre.

Das Zertifikat wird durch die folgenden Befehle angelegt:

 

  • Beim Befehl openssl req -new -key onlyoffice.key -out onlyoffice.csr wird man nach dem „Common Name“ gefragt (Common Name (e.g. server FQDN or YOUR name)). Hier ist einfach die IP des lokalen Systems anzugebnen (z.B. 192.168.178.60). Ebenso kann man ein „challenge password“ angeben. Dieses kann man einfach leer lassen (einfach mit Enter bestätigen).
  • Achtung: Die Erzeugung der sog. Diffie-Hellmann-Parameter mit einer Länge von 4096 Bit (openssl dhparam -out dhparam.pem 4096) kann u.U. sehr lange dauern. Auf schwacher Hardware kann das schon einmal mehrere Stunden in Anspruch nehmen. Wer nicht so lange warten möchte, kann die Schlüssel-Länge auf 2048 Bit reduzieren (openssl dhparam -out dhparam.pem 2048).
  • Das Zertifikat hat eine Gültigkeit von 3650 Tagen (10 Jahre). Hier kann bei Bedarf auch eine andere Gültigkeitsdauer angegeben werden.

Installation in einem Schritt

Die Installation von ONLYOFFICE erfolgt dann dank Docker mit nur einem einzigen Befehl:

Folgende Punkte gilt es hier zu beachten:

  • Da der Webserver bereits auf dem Port 443 (HTTPS) lauscht, kann der Docker-Container nicht den gleichen Port belegen. Der Parameter -p 4433:443 sorgt dafür, dass der Container selbst mit dem Port 443 (intern) arbeitet, nach außen wird jedoch der Port 4433 genutzt.
  • Die nächsten zwei Parameter (-e JWT_ENABLED=’true‘ -e JWT_SECRET=’geheimes-secret‘) sorgen dafür, dass zur Kommunikation mit dem Container ein sog. JSON Web Token benötigt wird. Im Grunde genommen handelt es sich dabei um ein Passwort („geheimes-secret“ – hier sollte man natürlich ein eigenes Passwort wählen), welches später in Nextcloud hinterlegt werden muss, damit die Verbindung zum ONLYOFFICE Container aufgebaut werden kann. Dies verhindert, dass der ONLYOFFICE-Container „unbemerkt“ von anderen Verbindungen genutzt werden kann.
  • Mit –restart=always wird angegeben, dass der Container bei jedem Systemstart hoch gefahren wird. Damit „überlebt“ der Docker-Container auch Neustarts des Systems.
  • Der letzte Parameter (-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver) definiert ein sog. Volume: Alle Dateien, die im Verzeichnis /app/onlyoffice/DocumentServer/data des Hosts liegen, werden innerhalb des Containers im Verzeichnis /var/www/onlyoffice/Data onlyoffice/documentserver bereit gestellt. Diese Funktion wird benötigt, damit der Container das zuvor erzeugte Zertifikat nutzen kann.

Nun wird der ONLYOFFICE-Container heruntergeladen (ca. 650 MB), was je nach Internetverbindung ein paar Minuten dauern kann.

Installation von ONLYOFFICE mittels Docker

Installation von ONLYOFFICE mittels Docker

Ob der Container ordnungsgemäß läuft, kann man testen, indem man über den Browser eine Verbindung aufbaut (die URL dazu ist in unserem Fall https://192.168.178.60:4433). Durch den Einsatz des selbst signierten Zertifikats wird der Browser eine Warnung ausgeben, das stört uns an dieser Stelle allerdings nicht.

ONLYOFFICE läuft

ONLYOFFICE läuft

Nextcloud: ONLYOFFICE App aktivieren

Damit ONLYOFFICE nun aus Nextcloud heraus angesprochen werden kann, braucht man noch die entsprechende App. Man findet diese im App-Store von Nextcloud in der Kategorie Büro & Text.

ONLYOFFICE im Nextcloud App-Store

ONLYOFFICE im Nextcloud App-Store

Nextcloud-Konfiguration anpassen

Bevor nun die Verbindung zu ONLYOFFICE in Nextcloud hinterlegt werden kann, muss noch eine kleine Anpassung an der Konfiguration von Nextcloud erfolgen. Dazu wird die Konfiguration mit folgendem Befehl auf der Konsole geöffnet:

Hier wird nun am Ende der Datei (aber vor der letzten schließenden Klammer) ein Eintrag hinzugefügt:

Dieser Schritt ist zwingend erforderlich, da Nextcloud sonst die Verbindung zu ONLYOFFICE auf Grund des selbst signierten Zertifikats nicht zulässt.

Am Schluss sollte der ganze Rechner einmal neu gestartet werden:

 

Verbindung zwischen Nextcloud und ONLYOFFICE herstellen

Der letzte Schritt zu einer Online-Office-Lösung mit Nextcloud ist nun nur noch das Hinterlegen der Verbindungs-Details zwischen der Cloud und ONLYOFFICE.

Dazu in Nextcloud einfach in die Einstellungen gehen. Unter Verwaltung > ONLYOFFICE findet man nun die entsprechenden Einstellungen:

  • Serviceadresse der Dokumentbearbeitung: Hier wird die IP-Adresse des Systems angegeben, auf dem der entsprechende Docker-Container läuft. In unserem Beispiel hat er PC die IP 192.168.178.60, daher wird hier https://192.168.178.60:4433 angegeben. Wichtig ist hier der Port, der auch beim Starten des Docker-Containers angegeben wurde (4433).
  • Geheimer Schlüssel (freilassen, um zu deaktivieren): Hier ist das JWT-Token anzugeben, welches beim Starten des Docker-Containers angegeben wurde.
  • Alle anderen Felder kann man leer lassen.
ONLYOFFICE Einstellungen in Nextcloud

ONLYOFFICE Einstellungen in Nextcloud

Nach einem Klick auf Speichern sollte eine Erfolgsmeldung kommen und die Verbindung zwischen Nextcloud und ONLYOFFICE wurde erfolgreich konfiguriert.

Online-Office im Browser

In der Datei-Ansicht von Nextcloud können nun einfach Office-Dokumente angelegt werden bzw. hochgeladen werden. Mit einem Klick werden diese nun mit ONLYOFFICE geöffnet und man kann mit der Bearbeitung beginnen.

Online-Office mit Nextcloud und ONLYOFFICE

Online-Office mit Nextcloud und ONLYOFFICE

Update von ONLYOFFICE

Von Zeit zu Zeit erscheinen nun neue Versionen des Docker-Containers von ONLYOFFICE. Um hier ein Update durchzuführen, sind nur wenige Schritte erforderlich.

Zunächst muss die ID des laufenden Containers mit folgendem Befehl ermittelt werden:

Der Container wird gestoppt und entfernt:

Die neue Version des Containers wird über diesen Befehl herunter geladen:

Nun kann der aktualisierte Container wie gewohnt gestartet werden:

 

Troubleshooting

Manchmal kann es passieren, dass die Verbindung zum ONLYOFFICE-Server nicht auf Anhieb klappen will. Die Probleme können aber meist relativ schnell aus dem Weg geräumt werden.

Fehler beim Aufruf von ONLYOFFICE über den Browser

Um zu prüfen, ob ONLYOFFICE ordnungsgemäß läuft, kann man die IP der Maschine direkt im Browser aufrufen (in diesem Beispiel: https://192.168.178.60:4433). Wenn hier nur eine Fehlermeldung erscheint, dass die Website nicht erreichbar ist, sollte der laufende Docker-Container überprüft werden.

Zunächst wird die Container-ID ermittelt:

Anschließend kann man sich die Logs des Containers anzeigen lassen:

Hier kann es vorkommen, dass ähnliche Meldungen wie diese angezeigt werden:

Hier gibt es momentan wohl noch hin und wieder Probleme (siehe GitHub-Issues hier und hier). In diesem Fall hilft es meistens, den Docker-Container oder besser noch den ganzen PC neu zu starten (zur Not auch mehrmals).

Fehlermeldung beim Einbinden von ONLYOFFICE in Nextcloud

Wenn beim Konfigurieren der Verbindung zum ONLYOFFICE-Server eine Fehlermeldung auftritt (Fehler beim Anschließen (Bad Request oder Timeout Fehlermeldung)), sollte man zunächst mal das Log von Nextcloud überprüfen. Hier sollte meinst ein Hinweis auf das konkrete Problem zu finden sein.

Folgende Log-Meldung weist z.B. auf die fehlende Anpassung der config.php von Nextcloud in Bezug auf ONLYOFFICE hin (siehe hier):

 

Fazit

Dank des verfügbaren Docker-Container für ONLYOFFICE kann Nextcloud schnell und einfach um Online-Office-Funktionen ergänzt werden. Da prinzipiell auch kein zweiter PC/VM zum Einsatz kommen muss, ist dies eine sinnvolle Erweiterung jeder Nextcloud-Installation.

Ihr konntet ONLYOFFICE mit diesem Tutorial erfolgreich installieren oder hattet mit der Vorgehensweise noch Probleme? Oder bevorzugt ihr Collabora als Online-Office-Lösung für Nextcloud? Dann hinterlasst doch einfach einen Kommentar.

https://decatec.de/home-server/nextcloud-online-office-mit-onlyoffice/

2019-11-17 11:21
Nextcloud: Online-Office mit ONLYOFFICE

Nextcloud und Onlyoffice mit Docker.

Installing Document Server for Docker on a local server

Document Serverv.5.4 Document Server changelog

Introduction

Document Server is an online office suite comprising viewers and editors for texts, spreadsheets and presentations, fully compatible with Office Open XML formats: .docx, .xlsx, .pptx and enabling collaborative editing in real time.

Functionality

  • Document Editor
  • Spreadsheet Editor
  • Presentation Editor
  • Documents application for iOS and Android
  • Collaborative editing
  • Hieroglyph support
  • Support for all the popular formats: DOC, DOCX, TXT, ODT, RTF, ODP, EPUB, ODS, XLS, XLSX, CSV, PPTX, HTML

Integrating it with Community Server you will be able to:

  • view and edit files stored on Drive, Box, Dropbox, OneDrive, OwnCloud connected to ONLYOFFICE;
  • share files;
  • embed documents on a website;
  • manage access rights to documents.

This guide will show you how to install Document Server Docker version to your machine.

System requirements

  • CPU
    dual core 2 GHz or better
  • RAM
    2 GB or more
  • HDD
    at least 40 GB of free space
  • Additional requirements
    at least 4 GB of swap
  • OS
    amd64 Linux distribution with kernel version 3.10 or later
  • Additional requirements
    • Docker: version 1.10 or later

Installing Document Server

You need the latest Docker version installed. If you do not have it, please see the Installation section on Docker website to learn how to get it.
Docker specifies Google DNS servers by default. If your Document Server is not going to have access to the Internet, we recommend that you change the default Docker DNS address to the address of your local DNS server. To do that go to the /etc/default/docker file and change the IP address in the following line to the IP address of a DNS server in your local network:
docker_OPTS="--dns 8.8.8.8"

After you have Docker installed, run it and execute the following command:

sudo docker run -i -t -d -p 80:80 --restart=always onlyoffice/documentserver

Use this command if you wish to install Document Server separately. To install Document Server integrated with Community and Mail Servers, refer to the corresponding instructions below.

By default Document Server listens to the incoming connections using port 80. Starting with version 4.3 you can change the port for Document Server if you plan to use it instead of the default one. This can be easily done changing the mapping port during the installation:
sudo docker run -i -t -d -p <PORT_NUMBER>:80 --restart=always onlyoffice/documentserver
Where is the number of port you want Document Server to use.

This will install Document Server and all the dependencies it needs (the list of what is being done by the script can be found here).

Storing data outside containers

All the data are stored in the specially-designated directories, data volumes, at the following location:

  • /var/log/onlyoffice for Document Server logs
  • /var/www/onlyoffice/Data for certificates
  • /var/lib/onlyoffice for file cache
  • /var/lib/postgresql for database
We recommend We strongly recommend that you store the data outside the Docker containers on the host machine as it allows you to easily update Document Server once the new version is released without losing your data.

To get access to your data located outside the container, you need to mount the volumes. It can be done by specifying the -v option in the docker run command.

sudo docker run -i -t -d -p 80:80 --restart=always \
    -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice  \
    -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data  \
    -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
    -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql  onlyoffice/documentserver
Please note, that in case you are trying to mount the folders which are not yet created, these folders will be created but the access to them will be limited. You will need to change their access rights manually.

Normally, you do not need to store container data because the container operation does not depend on its state. Saving data will be useful:

  • for easy access to container data, such as logs;
  • to remove the limit on the size of the data inside the container;
  • when using services launched outside the container such as PostgreSQL, Redis, RabbitMQ.

Running Document Server using HTTPS

sudo docker run -i -t -d -p 443:443 --restart=always \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data  onlyoffice/documentserver

Access to the onlyoffice application can be secured using SSL so as to prevent unauthorized access. While a CA certified SSL certificate allows for verification of trust via the CA, self signed certificates can also provide an equal level of trust verification as long as each client takes some additional steps to verify the identity of your website. Below the instructions on achieving this are provided.

To secure the application via SSL basically two things are needed:

  • Private key (.key)
  • SSL certificate (.crt)

So you need to create and install the following files:

/app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.crt

When using CA certified certificates, these files are provided to you by the CA. When using self-signed certificates you need to generate these files yourself. Skip the following section if you are have CA certified SSL certificates.

Generation of self signed certificates

Generation of self-signed SSL certificates involves a simple 3 step procedure

STEP 1: Create the server private key
openssl genrsa -out onlyoffice.key 2048
STEP 2: Create the certificate signing request (CSR)
openssl req -new -key onlyoffice.key -out onlyoffice.csr
STEP 3: Sign the certificate using the private key and CSR
openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt

You have now generated an SSL certificate that's valid for 365 days.

Strengthening the server security

This section provides you with instructions to strengthen your server security.

To achieve this you need to generate stronger DHE parameters.

openssl dhparam -out dhparam.pem 2048
Installation of the SSL certificates

Out of the four files generated above, you need to install the onlyoffice.key, onlyoffice.crt and dhparam.pem files at the onlyoffice server. The CSR file is not needed, but do make sure you safely backup the file (in case you ever need it again).

The default path that the onlyoffice application is configured to look for the SSL certificates is at /var/www/onlyoffice/Data/certs, this can however be changed using the SSL_KEY_PATH, SSL_CERTIFICATE_PATH and SSL_DHPARAM_PATH configuration options.

The /var/www/onlyoffice/Data/ path is the path of the data store, which means that you have to create a folder named certs inside /app/onlyoffice/DocumentServer/data/ and copy the files into it and as a measure of security you will update the permission on the onlyoffice.key file to only be readable by the owner.

mkdir -p /app/onlyoffice/DocumentServer/data/certs
cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key

And restart Docker container:

sudo docker restart {{DOCUMENT_SERVER_ID}}

You are now just one step away from having our application secured.

Available configuration parameters
Please refer the docker run command options for the --env-file flag where you can specify all required environment variables in a single file. This will save you from writing a potentially long docker run command.

Below is the complete list of parameters that can be set using environment variables.

  • ONLYOFFICE_HTTPS_HSTS_ENABLED: Advanced configuration option for turning off the HSTS configuration. Applicable only when SSL is in use. Defaults to true.
  • ONLYOFFICE_HTTPS_HSTS_MAXAGE: Advanced configuration option for setting the HSTS max-age in the onlyoffice NGINX vHost configuration. Applicable only when SSL is in use. Defaults to 31536000.
  • SSL_CERTIFICATE_PATH: The path to the SSL certificate to use. Defaults to /var/www/onlyoffice/Data/certs/onlyoffice.crt.
  • SSL_KEY_PATH: The path to the SSL certificate private key. Defaults to /var/www/onlyoffice/Data/certs/onlyoffice.key.
  • SSL_DHPARAM_PATH: The path to the Diffie-Hellman parameter. Defaults to /var/www/onlyoffice/Data/certs/dhparam.pem.
  • SSL_VERIFY_CLIENT: Enable verification of client certificates using the CA_CERTIFICATES_PATH file. Defaults to false.
  • POSTGRESQL_SERVER_HOST: The IP address or the name of the host where the PostgreSQL server is running.
  • POSTGRESQL_SERVER_PORT: The PostgreSQL server port number.
  • POSTGRESQL_SERVER_DB_NAME: The name of a PostgreSQL database to be created on the image startup.
  • POSTGRESQL_SERVER_USER: The new user name with superuser permissions for the PostgreSQL account.
  • POSTGRESQL_SERVER_PASS: The password set for the PostgreSQL account.
  • AMQP_SERVER_URL: The AMQP URL to connect to the message broker server.
  • AMQP_SERVER_TYPE: The message broker type. Supported values are rabbitmq or activemq. Defaults to rabbitmq.
  • REDIS_SERVER_HOST: The IP address or the name of the host where the Redis server is running.
  • REDIS_SERVER_PORT: The Redis server port number.
  • NGINX_WORKER_PROCESSES: Defines the number of NGINX worker processes.
  • NGINX_WORKER_CONNECTIONS: Sets the maximum number of simultaneous connections that can be opened by a NGINX worker process.
  • JWT_ENABLED: Specifies the enabling the JSON web token validation by Document Server. Defaults to false.
  • JWT_SECRET: Defines the secret key to validate the JSON web token in the request to Document Server. Defaults to secret.
  • JWT_HEADER: Defines the HTTP header that will be used to send the JSON web token. Defaults to Authorization.

Installing Document Server integrated with Community and Mail Servers

Document Server is a part of ONLYOFFICE Community Edition that comprises also Community Server and Mail Server. In case you want to install all of them and integrate with each other, read these instructions.

Alternative ways to install Document Server

Alternatively, you can use an automatic installation script to install the whole Community Edition at once. For the mail server correct work you need to specify its hostname yourdomain.com.

STEP 1: Download the installation script file

Assuming you have docker-compose installed, execute the following command:

wget https://download.onlyoffice.com/install/opensource-install.sh
    
STEP 2: Install Community Edition

Run the following command to do that:

bash opensource-install.sh -md yourdomain.com
    

Or you can use docker-compose to install Document Server. See the instructions here on how to do that.

Source: https://helpcenter.onlyoffice.com/server/docker/document/docker-installation.aspx

2025-07-30 14:37
Webmaster

HowTo install Onlyoffice in Nextcloud (Teil2)?

Nextcloud: Online-Office mit ONLYOFFICE (mit eigener Subdomain)

Nextcloud OnlyOffice Logo

Nextcloud bietet neben dem Speichern von Dateien auch noch erweiterte Funktionen wie z.B. die Verwaltung von Kontakten und Kalendern. Ebenso sind Online-Office-Funktionalitäten mit der eigenen Cloud-Lösung möglich: Hier gibt es die Alternativen ONLYOFFICE und Collabora. Für welche Lösung man sich hier entscheidet, ist zunächst einmal Geschmackssache.

Zum Thema ONLYOFFICE gab es bereits einen Artikel in diesem Blog. Die hier gezeigte Lösung hatte allerdings einen entscheidenden Nachteil: Die Office-Funktionalitäten waren nur verfügbar, wenn man über das lokale Netzwerk (LAN) auf die eigene Cloud zugegriffen hat. Das Bearbeiten von Dokumenten über das Internet war auf diese Art und Weise nicht möglich, da beim Bearbeiten von Dokumenten immer direkt auf die IP zugegriffen wurde, auf der ONLYOFFICE installiert wurde. Diese LAN-IP war über das Internet natürlich nicht erreichbar.

In diesem Artikel soll es daher wieder mal um die Einrichtung von ONLYOFFICE mittels Docker unter Nextcloud gehen. Dieses Mal sollen jedoch keine Einschränkungen für die Benutzung des Online-Office gelten: Somit ist dann der Zugriff sowohl über das lokale Netzwerk, also auch über das Internet möglich.

Als Grundlage dient wie immer der Artikel Nextcloud auf Ubuntu Server 18.04 LTS mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban.

Update-Historie (letztes Update 05.09.2019)

 

 

Zweite (Sub-)Domain für ONLYOFFICE

Ich gehe in diesem Artikel davon aus, dass der eigene Server, auf dem Nextcloud bereits läuft, über die DynDNS-Domain meindomain.de erreichbar ist. DynDNS sorgt hier dafür, dass die öffentliche IP-Adresse des Routers auf eine Domain gemappt wird. Im Router wird die Domain dazu in den DynDNS-Einstellungen hinterlegt. Leider unterscheidet sich das Vorgehen von Router zu Router, daher würde eine detaillierte Anleitung für verschiedene Router-Modelle dem Umfang des Artikels sprengen.

Voraussetzung für ONLYOFFICE ist nun eine zweite (Sub-)Domain, über die der Dokumenten-Server später erreichbar sein wird. Als Beispiel nehme ich hier einfach die Domain onlyoffice.meinedomain.de. Diese zweite Domain muss dabei ebenfalls auf die öffentliche IP-Adresse des Routers „zeigen“, ist sozusagen auch eine zweite (oder besser gesagt alternative) DynDNS-Domain.

Mehrere DynDNS-Domains mittels CNAME

Und genau das ist hier das Problem. In fast allen Router-Modellen kann nur ein DynDNS-Anschluss mit nur einer Domain festgelegt werden. Die Lösung für dieses Problem stellt ein sog. CNAME-Eintrag für eine zweite (Sub-)Domain dar. Mittels CNAME wird einfach ausgedrückt ein alternativer Name für eine Domain hinterlegt: Der CNAME-Eintrag der Office-Domain muss daher die bereits vorhandene DynDNS-Domain sein.

Wo kann man diesen CNAME-Eintrag nun hinterlegen? Dies passiert normalerweise in der Domain-Verwaltung des Webspace-Providers. Auch hier unterscheidet sich das Vorgehen von Anbieter zu Anbieter, gute Erfahrungen konnte ich hier allerdings mit All-Inkl.com (Affiliate-Link) machen.

Hier loggt man sich zunächst im Kundenportal (KAS) ein und legt eine neue Subdomain an. Dazu findet man im Menü den Eintrag Subdomain. Über den Punkt Neue Subdomain anlegen kann hier eine neue Subdomain beantragt werden. Hier kann man alle Einstellungen einfach übernehmen, da diese Domain später nicht auf den Webspace, sondern die öffentliche IP-Adresse des eigenen Routers zeigen wird.

All-Inkl.com: Neue Subdomain anlegen

All-Inkl.com: Neue Subdomain anlegen

Um nun noch den CNAME-Eintrag für die neue Subdomain hinzuzufügen, muss man die Domain-Einstellungen unter Tools > DNS-Einstellungen bearbeiten. Hier sieht man dann die eigene Domain, über die auch der DynDNS-Anschluss läuft (meinedomain.de). Mit einem Klick auf Bearbeiten kann diese Domain modifiziert werden. Hier klickt man dann auf den Punkt neuen DNS Eintrag erstellen. Folgende Einstellungen sind hier vorzunehmen:

  • Name: Der Name der Subdomain (hier also onlyoffice.meinedomain.de).
  • Typ/Prio.: CNAME
  • Data: Hier wird die eigentliche DynDNS-Domain eingetragen (also meinedomain.de).
All-Inkl.com: CNAME-Eintrag für Subdomain erstellen

All-Inkl.com: CNAME-Eintrag für Subdomain erstellen

Nach einem Klick auf Speichern werden die Änderungen übernommen.

SSL-Zertifikat für die neue Domain hinzufügen

Damit die Verbindung zu ONLYOFFICE stets verschlüsselt, also über HTTPS abläuft, muss für die neue Subdomain noch ein SSL-Zertifikat über Let’s Encrypt erzeugt werden. Dazu wird das bereits für Nextcloud verwendete Zertifikat modifiziert, indem wir dieses Zertifikat um eine weitere (Sub-)Domain erweitern. Hierfür sind keine Änderungen an den virtuellen Hosts von nginx erforderlich. Ebenfalls müssen bereits vorhandene Diffie-Hellman-Parameter (siehe Beschreibung) nicht neu erzeugt werden und können aus der bestehenden Installation übernommen werden.

Certbot

Wenn für die Generierung der Zertifikate Certbot zum Einsatz kommt, dann reicht hier folgender Befehl auf der Kommandozeile, um neue Zertifikate für beide (Sub-)Domains auszustellen:

certbot certonly --webroot -w /var/www/letsencrypt -d meinedomain.de -d onlyoffice.meinedomain.de --rsa-key-size 4096

Wichtig ist hier die Angabe aller (Sub-)Domains mit dem Parameter -d. Nach diesem Befehl werden die Zertifikats-Dateien unter /etc/letsencrypt/live/meinedaomin.de erneuert. Nicht wundern, hier wird nicht für jede (Sub-)Domain ein Zertifikat erzeugt, sondern nur ein Zertifikat, welches für mehrere Domains ausgestellt ist.

acme.sh

Falls acme.sh für die Generierung der Zertifikate verwendet wird, sollten zunächst die Grundlagen zu acme.sh aus dem Artikel Let’s Encrypt Zertifikate mit acme.sh und nginx entnommen werden.

Der konkrete Befehl zum Erzeuigen der Zertifikate sieht in diesem Fall dann so aus:

acme.sh --issue -d meinedomain.de -d onlyoffice.meinedomain.de --keylength 4096 -w /var/www/letsencrypt --key-file /etc/letsencrypt/meinedomain.de/key.pem --ca-file /etc/letsencrypt/meinedomain.de/ca.pem --cert-file /etc/letsencrypt/meinedomain.de/cert.pem --fullchain-file /etc/letsencrypt/meinedomain.de/fullchain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"

Hier werden dann ebenfalls alle (Sub-)Domains mittels des Parameters -d angegeben und in einem einzigen Zertifikat „verpackt“.

Auslagern der SSL-Einstellungen aus dem virtuellen Host für Nextcloud

Für die neue Domain muss nun natürlich ein neuer virtueller Host angelegt werden. Dieser zielt wieder auf SSL ab, daher sind hier auch sämtliche SSL-Einstellungen wie ssl_certificate, ssl_protocols, ssl_ciphers, etc. notwendig. Damit wir diese nicht doppelt pflegen müssen (im Gateway-Host und im virtuellen Host für ONLYOFFICE), lagern wir diese Anweisungen für SSL einfach aus.

Vorher sollten alle virtuellen Hosts gesichert werden, falls beim Umzug etwas schief gehen sollte.

Dazu erstellen wir zunächst einen neuen Ordner, in dem die SSL-Einstellungen gespeichert werden sollen:

mkdir /etc/nginx/snippets

In diesem Ordner erstellen wir anschließend eine neue Datei speziell für allgemeine SSL-Einstellungen, die für alle (Sub-)Domains gelten sollen.

Hinweis: Diese ausgelagerten Einstellungen dürfen nicht im selben Ordner wie die restlichen vHosts (/etc/nginx/conf.d) gespeichert werden, da es ansonsten Probleme mit dem Setzen der HTTP-Header gibt.

In diese Datei werden nun die Anweisungen übernommen, die für die SSL- und Header-Einstellungen zuständig sind. In diesem konkreten Beispiel (siehe hier) sind die Zeilen 32-95 im Gateway-Host betroffen. Dieser Block wird nun aus dem Gateway-Host kopiert und in die ssl.conf eingefügt.

nano /etc/nginx/snippets/ssl.conf

In diesem Beispiel sind es die folgenden Inhalte.

# Certificates used
ssl_certificate /etc/letsencrypt/live/meinedomain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/meinedomain.de/privkey.pem;

# Not using TLSv1 will break:
#	Android <= 4.4.40
#	IE <= 10
#	IE mobile <=10
# Removing TLSv1.1 breaks nothing else!
# TLSv1.3 is not supported by most clients, but it should be enabled.
ssl_protocols TLSv1.2 TLSv1.3;

# Cipher suite from https://cipherli.st/
# Max. security, but lower compatibility 
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384';

# Cipher suite from https://wiki.mozilla.org/Security/Server_Side_TLS
#ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

# (Modern) cipher suite from https://mozilla.github.io/server-side-tls/ssl-config-generator/
#ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

# Diffie-Hellman parameter for DHE ciphersuites, recommended 4096 bits
ssl_dhparam /etc/nginx/ssl/dhparams.pem;

# Use multiple curves.
# secp521r1: Not supported by Chrome
# secp384r1: Not supported by Android (DAVdroid)
ssl_ecdh_curve secp521r1:secp384r1:prime256v1;

# Server should determine the ciphers, not the client
ssl_prefer_server_ciphers on;

# OCSP Stapling
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

# This should be chain.pem
# See here: https://certbot.eff.org/docs/using.html
ssl_trusted_certificate /etc/letsencrypt/live/meinedomain.de/chain.pem;

resolver 192.168.178.1;

# SSL session handling
ssl_session_timeout 24h;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

#
# Add headers to serve security related headers
#  
# HSTS (ngx_http_headers_module is required)
# In order to be recoginzed by SSL test, there must be an index.hmtl in the server's root
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload;";
add_header X-Content-Type-Options "nosniff";	
add_header Referrer-Policy "no-referrer";	
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;

# Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;

Im nächsten Schritt werden nun diese SSL-Einstellungen aus dem Gateway-Host entfernt. Beispielweise also wieder die Zeilen 32-95. Damit die SSL-Einstellungen nun auch für den Gateway-Host gelten, wird nun statt dem entfernten Block einfach folgende Zeile mit übernommen:

include /etc/nginx/snippets/ssl.conf;

Wichtig ist hier v.a., dass die Anweisungen nicht doppelt aufgeführt sind (einmal im Gateway-Host direkt und einmal durch den Include). Daher müsen die eigentlichen SSL-Anweisungen auch aus dem Gateway-Host entfernt werden.

Anschließend starten wir den Webserver neu:

service nginx restart

Nun sollte man zunächst einmal testen, ob alle vorhandenen Web-Anwendungen (wie z.B. Nextcloud) noch wie erwartet funktionieren. Erst wenn diese Überprüfung erfolgreich war, sollte man hier weitermachen.

Virtuellen Host für ONLYOFFICE hinzufügen

Alles funktioniert noch? Gut! Dann weiter…

Im nächsten Schritt wird für die neue Subdomain ein eigener vHost hinzugefügt:

Der Inhalt ist hier recht übersichtlich:

Die SSL-Einstellungen haben wird ja zuvor ausgelagert, so dass diese nun in diesem zweiten vHost einfach wiederverwendet werden können.

Wichtig bei der Angabe des proxy_pass:

  • Für die Verbindung zur Maschine, auf der später ONLYOFFICE laufen wird, nutzen wir ebenfalls HTTPS. Wenn dies der gleiche Rechner ist, auf dem auch Nextcloud schon läuft, könnte man hier auch einfach auf HTTP setzen, da die Kommunikation dann nur Rechner-intern abläuft (dazu später mehr).
  • Die IP ist hier die lokale IP-Adresse des Rechners, auf dem ONLYOFFICE später laufen wird. Dies kann also die IP der Maschine sein, auf der auch der Webserver (und z.B. Nextcloud) läuft, oder auch eine andere Maschine im LAN.
  • Als Port habe ich hier 4433 angegeben. Dies ist besonders wichtig, wenn ONLYOFFICE auf dem gleichen Rechner installiert wird, auf dem auch der Webserver/Nextcloud läuft. Der Standard-Port für HTTPS 443 wäre hier schon (durch den Gateway-Host) belegt, also muss man auf einen anderen Port ausweichen.

Installation und Einrichtung ONLYOFFICE

Nachdem nun sämtliche Voraussetzungen erfüllt sind, kann es an die Installation von ONLYOFFICE gehen. Ich bevorzuge hier den Weg über Docker, da eine komplett manuelle Installation sehr aufwendig ist. Hier ist es auch egal, auf welcher Maschine ONLYOFFICE installiert wird. Entweder man installiert das Online-Office direkt auf dem Rechner, auf dem auch Nextcloud bereits läuft, oder man nimmt eine zweite Maschine (oder VM), auf der dann nur ONLYOFFICE betrieben wird.

Docker sollte auf jeden Fall bereits installiert sein. Fall nicht, sollte dieser Schritt wie im Artikel Docker auf Ubuntu Server nun nachgeholt werden.

Alle folgenden Schritte müssen auf der Maschine ausgeführt werden, auf der ONLYOFFICE installiert werden soll.

Vorbereitungen für die Installation

Die Verbindung zu ONLYOFFICE sollte aus Sicherheitsgründen immer verschlüsselt, also über HTTPS ablaufen. Durch den vHost für ONLYOFFICE ist die Verbindung über das Internet auch bereits verschlüsselt. Bleibt nur der Verbindungsweg vom Webserver auf die Maschine, auf der das Online-Office später laufen wird (also die Verbindung im lokalen Netzwerk). Diese Verbindung sollte ebenfalls verschlüsselt werden, damit auch LAN-intern stets sichere Verbindungen aufgebaut wird.

Wenn ONLYOFFICE auf dem gleichen Rechner gehostet wird, auf dem schon Nextcloud und der Webserver laufen, ist dieser Schritt eigentlich optional, da hier nur eine Rechner-interne Verbindung zustande kommt. Trotzdem empfehle ich diese Schritte auszuführen, besonders wenn die Office-Lösung und der Webserver/Nextcloud auf unterschiedlichen Maschinen installiert werden.

Da wir hier ja nur mit einer IP-Adresse arbeiten (die beim proxy_pass angegeben wird), können wir hierfür kein Let’s Encrypt Zertifikat erstellen, da diese Zertifikate nicht auf IP-Adressen, sondern nur auf Domains ausgestellt werden können. Daher greifen wir hier auf ein selbst signiertes Zertifikat zurück.

Dieses wird mit folgenden Befehlen erzeugt:

 

  • Beim Befehl openssl req -new -key onlyoffice.key -out onlyoffice.csr wird man nach dem „Common Name“ gefragt (Common Name (e.g. server FQDN or YOUR name)). Hier ist einfach die IP des lokalen Systems anzugeben (in diesem Fall 192.168.178.60). Ebenso kann man ein „challenge password“ angeben. Dieses kann man einfach leer lassen (einfach mit Enter bestätigen).
  • Achtung: Die Erzeugung der sog. Diffie-Hellmann-Parameter mit einer Länge von 4096 Bit (openssl dhparam -out dhparam.pem 4096) kann u.U. sehr lange dauern. Auf schwacher Hardware kann das schon einmal mehrere Stunden in Anspruch nehmen. Wer nicht so lange warten möchte, kann die Schlüssel-Länge auf 2048 Bit reduzieren (openssl dhparam -out dhparam.pem 2048).
  • Das Zertifikat hat eine Gültigkeit von 3650 Tagen (10 Jahre). Hier kann bei Bedarf auch eine andere Gültigkeitsdauer angegeben werden.

Installation ONLYOFFICE

Die Installation beschränkt sich dann dank Docker auf einen einzigen Befehl:

Hier gilt es folgende Punkte zu beachten:

  • Den Container nennen wir hier ONLYOFFICEDOCKER, damit dieser später über diesen Namen und nicht über eine kryptische ID angesprochen werden kann.
  • Da bereits der Webserver auf Port 443 lauscht (wenn ONLYOFFICE auf dem gleichen Rechner gestartet wird), müssen wird hier auf einen alternativen Port ausweichen. Der Parameter -p 4433:443 sorgt hier dafür, dass der Port 4433 des Docker-Hosts auf den Port 443 innerhalb des Docker-Containers gemappt wird. Wichtig ist hier, dass dieser Port (4433) mit demjenigen übereinstimmt, der beim proxy_pass im vHost für ONLYOFFICE angegeben wurde.
  • Die nächsten zwei Parameter (-e JWT_ENABLED=’true‘ -e JWT_SECRET=’geheimes-secret‘) erhöhen die Sicherheit, da zur Kommunikation mit dem Container ein sog. JSON Web Token benötigt wird. Im Grunde genommen handelt es sich dabei um ein Passwort (geheimes-secrethier sollte man natürlich ein eigenes Passwort wählen), welches später in Nextcloud hinterlegt werden muss, damit die Verbindung zu ONLYOFFICE aufgebaut werden kann. Dies verhindert, dass der ONLYOFFICE-Container „unbemerkt“ von anderen Verbindungen genutzt werden kann.
  • Mit —restart=always wird der Container bei jedem Systemstart automatisch gestartet.
  • Mit dem letzten Parameter (-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data onlyoffice/documentserver) wird ein sog. Volume definiert: Alle Dateien, die im Verzeichnis /app/onlyoffice/DocumentServer/data des Hosts liegen, werden innerhalb des Containers im Verzeichnis /var/www/onlyoffice/Data onlyoffice/documentserver bereitgestellt. Diese Funktion wird benötigt, damit der Container das zuvor erzeugte Zertifikat finden und nutzen kann.

Nun wird das entsprechende Docker-Image heruntergeladen und auch gleich gestartet.

Installation von ONLYOFFICE mittels Docker

Installation von ONLYOFFICE mittels Docker

Nach dem Starten des Containers läuft ONLYOFFICE bereits. Wenn man nun im Browser die Domain onlyoffice.meinedomain.de oder die IP-Adresse der jeweiligen Maschine (dann aber mit dem alternativen Port 4433) aufruft, sollte folgende Seite erscheinen:

ONLYOFFICE läuft

ONLYOFFICE läuft

Einbinden von ONLYOFFICE in Nextcloud

Nachdem ONLYOFFICE läuft, geht es nun mit der eigenen Nextcloud weiter, damit hier Online-Office-Funktionalitäten hinzugefügt werden können.

Die passende App findet man dabei im Nextcloud App Store in der Kategorie Büro & Text:

ONLYOFFICE im Nextcloud App-Store

ONLYOFFICE im Nextcloud App-Store

Wenn die App aktiviert wurde, können die Einstellungen nun in der Admin-Oberfläche von Nextcloud unter dem Punkt ONLYOFFICE angepasst werden (damit alle Einstellungen angezeigt werden, muss man auf den Punkt Erweiterte Servereinstellungen klicken).

Nextcloud: ONLYOFFICE-Einstellungen in der Admin-Oberfläche

Nextcloud: ONLYOFFICE-Einstellungen in der Admin-Oberfläche

  • Serviceadresse der Dokumentbearbeitung: Hier wird die Subdomain angegeben, die wir extra für ONLYOFFICE angelegt habe, in diesem Beispiel also https://onlyoffice.meinedomain.de.
  • Geheimer Schlüssel (freilassen, um zu deaktivieren): Hier ist das JWT-Token anzugeben, welches beim Starten des Docker-Containers angegeben wurde (geheimes-secret).
  • Alle anderen Felder kann man leer lassen.

Nach einem Klick auf Speichern sollte eine Meldung erscheinen, dass die Einstellungen erfolgreich übernommen wurden.

Anschließend können Office-Dokumente ganz einfach direkt in der Cloud bearbeitet werden:

Online-Office mit Nextcloud und ONLYOFFICE

Online-Office mit Nextcloud und ONLYOFFICE

Update von ONLYOFFICE

Von Zeit zu Zeit erscheint ein neues Docker-Image für ONLYOFFICE. Leider ist es etwas umständlich herauszufinden, welche Version gerade installiert ist und ob es eine neue Container-Version gibt.

Um zu ermitteln, welche Version aktuell installiert ist, öffnet man am besten ein beliebiges Office-Dokument. Mit der Info-Schaltfläche wird die installierte Version von ONLYOFFICE angezeigt:

Über die Info-Schaltfläche kann die installierte Version ermittelt werden

Über die Info-Schaltfläche kann die installierte Version ermittelt werden

Die Version des aktuellsten Images kann nun über Docker Hub (eine Art Suche für Docker-Images) ermittelt werden. Dazu sucht man einfach nach onlyoffice und lässt sich dann die Tags anzeigen. Schneller geht es über diesen Direktlink. Hier werden dann alle Versionen des Images angezeigt:

Die aktuelle Version im Docker Hub

Die aktuelle Version im Docker Hub

Zwar werden in der ONLYOFFICE-Hilfe nur drei Versionsnummern angezeigt, allerdings sollte man auch anhand des Datums sehen können, wenn eine neue Version des Containers bereitsteht.

Das Update selbst kann man dann in wenigen Schritten durchführen:

Zunächst wird der aktuelle Container gestoppt und entfernt:

ONLYOFFICEDOCKER ist hier der Name des Containers, den wir beim ersten Start angegeben haben. Hier könnte man auch die ID des Containers angeben (kann man mit docker ps ermitteln).

Optional: Bei der Arbeit mit Docker bleiben oft Reste auf dem System zurück (z.B. alte, ungenutzte Container). Gerade wenn auf dem System ausschließlich ONLYOFFICE per Docker betrieben wird, empfiehlt es sich, das komplette Docker-System zu bereinigen. Dazu werden einfach folgende Befehle ausgeführt:

Anschließend wird die neuste Version des Containers heruntergeladen und über den bekannten Befehl gestartet:

Beim zweiten Befehl ist hier nur wichtig, dass genau das gleiche JWT_SECRET wie schon beim Start des Containers angegeben wird, ansonsten kann nach dem Update keine Verbindung mehr von Nextcloud hergestellt werden.

Troubleshooting

Manchmal kann es vorkommen, dass ONLYOFFICE nicht wie erwartet funktioniert. Bei dem System sind ziemlich viele Komponenten beteiligt (Webserver, Nextcloud, Docker-Container), so dass man zunächst einmal das Problem eingrenzen sollte.

Zunächst sollte immer erst die Subdomain für ONLYOFFICE aufgerufen werden: onlyoffice.meinedomain.de

Erscheint hier nicht die Übersichtsseite von ONLYOFFICE, dann tritt das Problem wohl auf dem Verbindungsweg vom Internet zum Webserver auf. Dann sollten zunächst einmal die Logs des Webservers kontrolliert werden (auf der Maschine, wo der Gateway-Host zu finden ist und auch Nextcloud installiert ist).

Hier sollten dann Fehlermeldungen zu finden sein, mit den man das Problem weiter eingrenzen kann.

Wenn die Seite erreichbar ist, aber ONLYOFFICE trotzdem nicht funktioniert, sollte in diesem Fall zunächst einmal das Nextcloud-Log überprüft werden (in der Admin-Oberfläche von Nextcloud unter Protokollierung).

Falls hier auch nichts auffälliges zu sehen ist, sollten die Logs des Docker-Containers überprüft werden:

Hier sind dann u.U. Hinweise zu finden, dass ein benötigter Dienst nicht gestartet werden konnte. In diesem Fall hilft es meistens, den Rechner, auf dem ONLYOFFICE läuft, einfach mal neu zu starten.

Erst wenn dies auch zu keinen neuen Erkenntnissen führt, kann man sich auch auf die Kommandozeile des Containers selbst einloggen. Dazu einfach auf der Docker-Maschine folgenden Befehl ausführen:

Auf der Kommandozeile des Containers kann dann eine detaillierte Fehlersuche stattfinden. Mit folgendem Befehl kann man beispielsweise die Webserver-Logs einzusehen:

Um die Kommandozeile des Containers wieder zu verlassen, reicht folgender Befehl:

 

Fazit

Es sind schon einige Schritte notwendig, um ONLYOFFICE in Verbindung mit Nextcloud zum Laufen zu kriegen. Dennoch lohnt es sich, da man nun direkt in der eigenen Cloud ein Online-Office nutzen kann. Wer vorher beispielsweise Google Docs verwendet hat, wird sich auch bei ONLYOFFICE sehr schnell zurechtfinden – und das ohne die neugierigen Blicke von Google & Co, da alle Daten sicher in der eigenen Nextcloud gespeichert sind.

Weiterführende Artikel

Links

Source: https://decatec.de/home-server/nextcloud-online-office-mit-onlyoffice-mit-eigener-subdomain/

2019-11-17 11:46
Webmaster

systemd - Units, services, timers usw. anpassen

Über das Paketmanagement werden die systemeigenen systemd-dateien unter /usr/lib/systemd/system installiert.

Anpassungen seitens des Administrator können unter /etc/systemd/system erfolgen.

Um die Dateien anzupassen gibt es die Befehle systemctl edit foo.service oder systemctl edit foo.timer und systemctl edit --full foo.timer.

Der Unterschied ist, dass bei systemctl edit --full eine Datei foo.timer in /etc/systemd/system als kopie von /usr/lib/systemd/system/foo.timer erstellt wird.
Bei systemctl edit foo.timer wird eine Datei /etc/systemd/system/foo.timer.d/override.conf erstellt. Darin lassen sich dann nur die gegenüber dem System-files geänderten Zeilen eintragen.

 Quelle: http://kreativgarten.bplaced.net/doku.php?id=systemd

2019-12-11 09:29
Eric

Upgrade Raspi

Um zum Beispiel ein Upgrade des Raspis von Strech zu Buster durchzuführen gibt es mehrere Anleitungen die meist das Gleiche aussagen. (1) http://baddotrobot.com/blog/2019/08/29/upgrade-raspian-stretch-to-buster/ (2) https://pimylifeup.com/upgrade-raspbian-stretch-to-raspbian-buster/ Zusammengefasst: 1) Prepare 1.1) sudo apt-get update && sudo apt-get upgrade -y && sudo apt dist-upgrade -y 1.2.1) sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list 1.2.2) sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/raspi.list 1.3) sudo apt-get remove apt-listchanges 2) Upgrade 2.1) sudo apt-get update && sudo apt-get upgrade -y exclusivOder sudo apt-get update && sudo apt-get full-upgrade -y 2.2) sudo apt-get autoremove -y && sudo apt-get autoclean 3.) Firmware ( normalerweiße nicht nötige, bzw. nicht empfohlen, da der Befehl den master-branch und nicht den stable-branch benutzt. Firmware wird mit einem apt dist-upgrade schon upgedated. ) sudo rpi-update

2020-05-13 19:53
Webmaster

Adobe Digital Editions 4.5

Zur Nutzung benötigt man folgende Komponenten:

  • wine
  • winetricks (neuste Version)
  • ADE 4.5 (Adobe Digital Edition)

 

Wine und Winetricks sollte in den Repos der Distributionen vorhanden sein.

ADE kann man über ftp://ftp.adobe.com/pub/adobe/digitaleditions/ADE_4.5_Installer.exe herrunterladen.

Neueste winetricks mittels wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks herrunterladen.

 

ADE soll in einer eigenen Wineprefix (bottle) "ADE_4.5" installiert werden. Desweiteren als 64bit-Architekur. Die Archtekur ist zwingend erforderlich.

Es sind folgende Schritte auszuführen (Kann auch mittels angehängtem Script erfolgen.):

A: Installation:

  1. env WINEPREFIX='/home/eric/.local/share/wineprefixes/ADE_4.5' WINEARCH=win64 winetricks -q dotnet40
  2. env WINEPREFIX='/home/eric/.local/share/wineprefixes/ADE_4.5' WINEARCH=win64 winetricks -q corefonts
  3. env WINEPREFIX='/home/eric/.local/share/wineprefixes/ADE_4.5' WINEARCH=win64 wine ADE_4.5_Installer.exe

B: Mountpoint des Tolino herausfinden:

Hierzu den Tolino über USB anschließen.

Im Dateimanager den Mountpoint herraus finden und kopieren.

In openSUSE Leap 15.2 ist dies zum Beispiel: /run/media/eric/tolino

 

C: Anpassungen in Wine:

  1. Folgendes ausführen: env WINEPREFIX='/home/eric/.local/share/wineprefixes/ADE_4.5' winecfg

  2. Unter Laufwerke ein neue Laufwerkskonfiguration anlegen. Hierbei unter Erweitert als Typ Diskette auswählen.

 

  3. Prüfen und evtl. setzen der nativen Bbliotheken.

Fehlende Bibliotheken im Textfeld "Bestehende" sind mittels des DropDowns "Neue Überschreibung für" und des Buttons "Festlegen"  hinzuzufügen.

D: Firefox prüfen

Unter Einstellungen - > Anwendungen sollte es eine Zeile mit acsm File geben.

Beim Download eines Buches in der Onleihe sollte beim anschließenden Fenster "Adobe Digital Edition 2.0" ausgewählt werden.

 

E: Hinweis zur Nutzung von ADE

Zuerst ist der Tolino mit dem PC zu verbinden. Erst danach den ADE starten. WICHTIG!

Nun sollte der Tolino im ADE unter Geräte angezeigt werden.

 

Nun kann ein Buch z.B. über Onleihe heruntergeladen werden.

 

Mittels rechter Maustaste auf einem Buch, kann das eBook dann auf den Tolino kopiert werden.

 

2025-08-07 10:40
Eric Schirra

How To Kill Zombie Processes on Linux?

Killing Zombies!

Also known as “defunct” or “dead” process – In simple words, a Zombie process is one that is dead but is present in the system’s process table. Ideally, it should have been cleaned from the process table once it completed its job/execution but for some reason, its parent process didn’t clean it up properly after the execution.

In a just (Linux) world, a process notifies its parent process once it has completed its execution and has exited. Then the parent process would remove the process from process table. At this step, if the parent process is unable to read the process status from its child (the completed process), it won’t be able to remove the process from memory and thus the process being dead still continues to exist in the process table – hence, called a Zombie!

In order to kill a Zombie process, we need to identify it first. The following command can be used to find zombie processes:

$ ps aux | egrep "Z|defunct"

Z in the STAT column and/or [defunct] in the last (COMMAND) column of the output would identify a Zombie process.

Now practically you can’t kill a Zombie because it is already dead! What can be done is to notify its parent process explicitly so that it can retry to read the child (dead) process’s status and eventually clean them from the process table. This can be done by sending a SIGCHLD signal to the parent process. The following command can be used to find the parent process ID (PID):

$ ps -o ppid= <Child PID>

Once you have the Zombie’s parent process ID, you can use the following command to send a SIGCHLD signal to the parent process:

$ kill -s SIGCHLD <Parent PID>

However, if this does not help clearing out the Zombie process, you will have to kill or restart its parent process OR in case of a huge surge in Zombie processes causing or heading towards system outage, you will have no choice but to go for a system reboot. The following command can be used to kill its parent process:

$ kill -9 <Parent PID>

Note that killing a parent process will affect all of its child processes, so a quick double check will be helpful to be safe. Alternatively, if few lying zombie processes are not consuming much CPU/Memory, it’s better to kill the parent process or reboot the system in the next scheduled system maintenance.


2020-10-10 10:34
Webmaster

Farbliche Ausgabe von osc

zypper in grc

grc osc build

2020-12-07 15:46
Webmaster

Verhindern der Überschreibung von config.js in jitsi-meet

Create a file called custom-config.js and place it at the root of your web configuration directory…

~/.jitsi-meet-cfg/web/custom-config.js

Edit that file to set/override configuration values like so…

config.enableNoisyMicDetection = true;
config.constraints.video.height = { ideal: 720, max: 720, min: 180 };
// etc.

The content of that file is appended 30 to the auto-generated config.js.

2025-02-19 19:22
Webmaster

Unlock KeePass Datenbank mit KWallet unter KDE

Erstelle einen Autostarteintrag mit Programm-Befehl:

kwallet-query -f 'Passwords' -r 'KeePass' kwallet | keepassxc --pw-stdin <Mein_Pfad>/keepass.kdbx

2020-12-23 14:38
Webmaster

openSUSE in irc.libera.chat

Für SSL:
Server: irc.libera.chat
Port: 6697

Ohne SSL:
Server: irc.libera.chat
Port: 6667

 

2021-05-27 13:54
Webmaster

RPM Package Versions

RPM Package Versions

A nice technique to split out an RPM package version, such as "1.12.14" into an array. Adapted from a Red Hat Satellite katello-ca-consumer package. This makes it easier to query the version, since "1.12.14" is not a real number and doesn't lend itself to comparison tests.

$ PACKAGE=subscription-manager
$ rpm -q --queryformat='%{VERSION}' $PACKAGE
1.12.14
$ PACKAGE_VERSION="`rpm -q --queryformat='%{VERSION}' $PACKAGE | tr . ' '`"
$ echo $PACKAGE_VERSION
1 12 14
$ declare -a PACKAGE_VERSION_ARRAY=($PACKAGE_VERSION)
$ echo ${PACKAGE_VERSION_ARRAY[0]}
1
$ echo ${PACKAGE_VERSION_ARRAY[1]}
12
$ echo ${PACKAGE_VERSION_ARRAY[2]}
14
$

This can be useful as the basis of a tool to compare installed RPM packages between systems, for example. It also avoids the other problem with RPM package names. To take two packages at random:

  • tsdb-1.27.29-1.el6.noarch.rpm
  • yum-rhn-plugin-2.2.7-1.el6.noarch.rpm

It is clear that the hyphen () separates the package-name from the version and release number. But because yum-rhn-plugin also contains hyphens, it is not easy to split out the package name from the version. This rpm -q --queryformat approach is guaranteed to get the version number.

Package Name

There is a second, somewhat-related problem associated with working out the package name. Because a name like "yum-rhn-plugin-2.2.7-1.el6.noarch.rpm" as mentioned above, contains multiple hyphens in the actual package name (yum-rhn-plugin), it is not possible to use a simple "cut" to extract the package name. Consider these packages:

  • net-tools-2.0-0.17.20131004git.el7.x86_64
  • pinentry-0.8.1-14.el7.x86_64
  • yum-cron-3.4.3-132.el7.centos.0.1.noarch
  • libselinux-utils-2.2.2-6.el7.x86_64
  • libmpc-1.0.1-3.el7.x86_64

Although these do follow a logical pattern which is easy enough for a person to understand, it is not so obvious how to code it. You can't use "cut" alone, because although ostensibly the delimiter is the hypen (-), that is also a valid character in the package name itself.

One solution is to use "cut" along with the less well-known "rev" utility (from util-linux). This approach makes use of the fact that the total number of fields is fixed, and that the name comes at the beginning:

#!/bin/sh
for fullname in `cat /tmp/rpmlist.txt`
do
  echo -n "The package name in \"$fullname\" is: "
  echo $fullname | rev | cut -d'-' -f3- | rev
done
The package name in "net-tools-2.0-0.17.20131004git.el7.x86_64" is: net-tools
The package name in "pinentry-0.8.1-14.el7.x86_64" is: pinentry
The package name in "yum-cron-3.4.3-132.el7.centos.0.1.noarch" is: yum-cron
The package name in "libselinux-utils-2.2.2-6.el7.x86_64" is: libselinux-utils
The package name in "libmpc-1.0.1-3.el7.x86_64" is: libmpc
$

This reverses the string, then cuts out the first two fields (version and 'release.os.arch'). Then it reverses the string again to get everything back as it should be.


Quelle: https://www.shellscript.sh/tips/rpm-versions/

2021-09-11 13:07
Webmaster

Kodi Live TV

Kodi IPTV einrichten: Live TV mit Kodi anschauen

Kodi bietet nicht nur die Möglichkeit, Filme und Serien abzuspielen. Auch Live-Fernsehen kann über das Internet mit der Multimedia-Software und den richtigen Einstellungen angeschaut werden. Wir erklären euch, wie ihr Kodi IPTV einrichten und starten könnt. Mit dieser Anleitung werdet ihr deutsche Sender frei und kostenlos über Kodi empfangen.

 

Inhaltsverzeichnis

IPTV: Fernsehen über das Internet

IPTV steht für „Internet Protocol Television“ und beschreibt das Streamen von Live TV über das Internet. Während Filme und Serien bereits seit Jahren von der Mehrheit der Menschen nur noch gestreamt und selten von physikalischen Datenträgern abgespielt werden, gehört auch das „klassische“ Fernsehen über Satellit oder Kabel mehr und mehr der Vergangenheit an. Anbieter wie Zattoo oder die Telekom bieten bereits seit geraumer Zeit spezielle IPTV-Angebote an, um ARD, ZDF und Co. von jedem internetfähigen Gerät aus anschauen zu können.

Die Vorteile liegen auf der Hand: Man ist nicht mehr auf klassische Empfangsgeräte wie Receiver und Fernseher angewiesen, sondern kann auch bequem vom Smartphone oder Tablet aus Live TV verfolgen. Wer dennoch klassisch im Wohnzimmer sitzt, kann durch IPTV die Anzahl der benötigten Geräte reduzieren. Wird für das Heimkino z.B. der Amazon Fire TV Stick verwendet, kann IPTV problemlos integriert werden, womit ein SAT-Receiver nicht mehr benötigt wird.

Kodi IPTV: Live TV mit Kodi & Legale Senderlisten

Auch Kodi bietet eine Funktion an, mit der Live TV angeschaut werden kann. Benötigt wird lediglich ein bestimmtes Addon (ein sogenannter „PVR-Client“), eine Senderliste und zehn Minuten Zeit für die Einrichtung. Das Starten der Live TV Funktion ist dann bequem über das Hauptmenü möglich.

In diesem Artikel zeigen wir Schritt für Schritt, wie sich Kodi IPTV einrichten lässt. Außerdem erklären wir, wie Kanallisten bearbeitet und Sendergruppen festlegt werden.

Eine Alternative zur eingebauten Live-TV-Funktion sind Kodi Addons. Addons erweitern das Mediencenter um bestimmte Funktionen. Mit einigen Erweiterungen lassen sich Videoinhalte über das Internet streamen. In unserer Liste der besten Kodi Addons bieten wir eine Übersicht derzeit gut funktionierender Erweiterungen und Anleitungen, wie sie sich installieren lassen.

IPTV und Kodi Addons funktionieren unabhängig voneinander. Es lässt sich also Kodi IPTV einrichten, ohne dass auf Erweiterungen verzichtet werden muss.

Senderlisten Links (m3u-Wiedergabelisten)

Das Kodinerds-Forum bietet eine kostenlose und legale Senderliste mit frei empfangbaren TV-, und Radio-Sendern an. Diese Liste wird zur Veranschaulichung auch in diesem Artikel verwendet.

Eine alternative Liste wird von der Gruppe SGK angeboten. In der Senderliste sind insgesamt mehr als 300 Kanäle zu finden, davon rund 130 Free-TV Sender. Alle Pay-TV Sender benötigten ein gültiges Abo bei den jeweiligen Anbietern, womit auch diese Liste völlig legal ist.

Der Anbieter Wilmaa aus der Schweiz bietet ebenfalls eine Senderliste an, mit der ihr alle bekannten privaten Sender wie RTL in HD-Qualität ansehen könnt. Für die Nutzung ist eine IP-Adresse aus der Schweiz erforderlich. Ein geeigneter VPN-Dienst ist beispielsweise CyberGhost, der neben der Schweiz auch noch an die 90 weitere Länder anbietet.

  • Senderliste von Wilmaa (https://raw.githubusercontent.com/sunsettrack4/zattoo_tvh/additional/wilmaa-free.m3u)

Wilmaa findet ihr ansonsten ebenfalls im PsycoTV Kodi Addon.

EPG / Program Guide Links

EPG bedeutet „Electronic Program Guide“ und ist eine Art digitale Programmzeitschrift. EPGs in Kodi müssen mit den entsprechenden Senderlisten kompatibel sein. Deshalb können keine beliebigen Links für Program Guides aus dem Internet verwendet werden. Außerdem müssen EPGs regelmäßig gepflegt werden, weshalb die Links nach einer gewissen Zeit nicht mehr funktionieren.

Die folgenden EPG Links sind mit den oben genannten Senderlisten kompatibel:

PVR IPTV Simple Client installieren

Damit sich Kodi IPTV einrichten lässt, muss zunächst der PVR IPTV Simple Client installiert werden. Mit dem Programm lässt sich eine m3u-Wiedergabe sowie passende Programm-Guides einbinden. Das Addon ist im offiziellen Kodi Repository zu finden.

01 – Startet Kodi und klickt im Hauptmenü auf den Punkt „Addons“.

Kodi Hauptmenü Addons

02 – Klickt oben links auf das Paket-Symbol.

Kodi Addons Paket Symbol

03 – Wählt die Kategorie „Aus Repository installieren“ aus.

Kodi IPTV einrichten - PVR IPTV Simple Client installieren - Schritt 3

04 – Öffnet den Punkt „Alle Repositories“.

Kodi IPTV einrichten - PVR IPTV Simple Client installieren - Schritt 4

05 – Scrollt herunter zum Punkt „PVR-Clients“ und öffnet diesen.

Kodi IPTV einrichten - PVR IPTV Simple Client installieren - Schritt 5

06 – Sucht in der Liste nach dem Eintrag für das PVR IPTV Simple Client Kodi Addon und klickt auf diesen.

Kodi IPTV einrichten - PVR IPTV Simple Client installieren - Schritt 6

07 – Wählt anschließend unten rechts den Punkt „Installieren“.

Kodi IPTV einrichten - PVR IPTV Simple Client installieren - Schritt 7

08 – Nach wenigen Augenblicken erscheint am oberen rechten Bildschirmrand die Meldung, dass das PVR IPTV Simple Client Kodi Addon erfolgreich installiert wurde.

Kodi IPTV einrichten - PVR IPTV Simple Client installieren - Schritt 8

Senderquelle hinzufügen (m3u-Datei)

01 – Öffnet über den oben genannten Weg erneut den Listeneintrag für das PVR IPTV Simple Client Addon und wählt anschließend den Punkt „Konfigurieren“ aus.

Kodi IPTV einrichten - Senderquelle hinterlegen - Schritt 1

02 – Im ersten Menüpunkt „Allgemein“ legt ihr die Quelle der Sender fest. Das PVR IPTV Simple Client Kodi Addon arbeitet mit sogenannten „m3u“-Dateien. Es handelt sich um Wiedergabelisten, die aus Sendern und deren Streaming-Quelle bestehen. Wollt ihr Kodi IPTV einrichten, sind m3u-Listen in der Regel der einfachste und stabilste Weg.

Ort: Legt fest, ob die m3u-Datei online (Entfernter Pfad) oder lokal auf eurem Abspielgerät (Lokaler Pfad) liegt.
M3U Wiedergabelisten-URL: Tragt den Link zu einer m3u-Datei ein bzw. wählt den Pfad aus, in welchem die Wiedergabeliste abgelegt wurde.
M3U auf lokalen Speicher cachen: Die Senderliste wird lokal zwischengespeichert, damit sie nur aus dem Internet neu geladen wird, wenn es Änderungen gibt (empfohlen!).
Kanalnummerierung beginnt bei: Wert sollte so belassen werden; die Nummerierung beginnt bei der Zahl „1“.

Kodi IPTV einrichten - Senderquelle hinterlegen - Schritt 2

03 – Exemplarisch tragen wir eine m3u-Datei ein, die über das Internet verfügbar ist und von dem Kodinerds Forum bereitgestellt wird. Diese m3u-Wiedergabeliste beinhaltet frei empfangbare Programme und ist absolut legal.

Klickt auf „M3U Wiedergabelisten-URL“…

Kodi IPTV einrichten - Senderquelle hinterlegen - Schritt 3

04 – …und tragt die entsprechende URL ein (z.B. http://bit.ly/kn-kodi). Klickt anschließend auf „OK“.

Kodi IPTV einrichten - Senderquelle hinterlegen - Schritt 4

05 – Im zweiten Menüpunkt „EPG-Einstellungen“ lässt sich ebenfalls ein TV-Guide hinterlegen. Es handelt sich in der Regel um XML-, oder GZ-Dateien. Sie werden genauso wie m3u-Dateien eingetragen. In diesem Beispiel verwenden wir keinen TV-Guide.

Kodi IPTV einrichten - Senderquelle hinterlegen - Schritt 5

06 – Klickt oben rechts auf „OK“, um die Konfiguration abzuschließen.

Kodi IPTV einrichten - Senderquelle hinterlegen - Schritt 6

07 – Eine Meldung erscheint, dass Kodi neu gestartet werden muss. Bestätigt diese mit „OK“.

Kodi IPTV einrichten - Senderquelle hinterlegen - Schritt 7

08 – Am oberen rechten Bildschirmrand erscheint der Hinweis, dass der PVR IPTV Simple Client die Sender bereits geladen hat. Startet Kodi anschließend neu.

Kodi IPTV einrichten - Senderquelle hinterlegen - Schritt 8

Senderliste neu laden und bearbeiten

01 – Wählt im Hauptmenü das Zahnrad-Symbol aus, um die Einstellungen zu öffnen.

Kodi IPTV einrichten - Senderliste neu laden und bearbeiten - Schritt 1

02 – Klickt auf „PVR & TV“.

Kodi IPTV einrichten - Senderliste neu laden und bearbeiten - Schritt 2

03 – Unter „Allgemein“ gibt es verschiedene Möglichkeiten, eure Senderliste zu bearbeiten.

Aktiven Kanal in Listen selektieren: Der aktuelle laufende Kanal wird visuell hervorgehoben
Kanalgruppen mit Backend(s) synchronisieren: Manche m3u-Dateien bieten eine eigene Kategorisierung der Kanäle an. Sie werden zumeist mit „m3u+“ oder „m3u Plus“ gekennzeichnet. Wollt ihr diese Kategorisierung nutzen, aktiviert diesen Punkt.
Kanal-Manager: Hier lassen sich Kanäle löschen oder sortieren (Kanalsortierung)
Kanalgruppen-Manager: Mit dem Kanalgruppen-Manager könnt ihr eigene Kategorien für die Sender anlegen (z.B. Nachrichten oder Sport).
Kanalsuche: Diese Funktion hat für Kodi IPTV keine Relevanz
Daten löschen: Die m3u-Wiedergabeliste wird neu geladen. Danach ist ein Neustart nötig. Diese Funktion sollte verwendet werden, wenn sich eure Sender nicht aktualisieren oder die Senderliste unvollständig ist.

Kodi IPTV einrichten - Senderliste neu laden und bearbeiten - Schritt 3

04 – Im Menüpunkt „EPG“ ist ebenfalls die Funktion „Daten löschen“ zu finden. Habt ihr Probleme mit eurem TV-Guide, kann er hierüber neu eingelesen werden. Danach ist ein Neustart nötig.

Kodi IPTV einrichten - Senderliste neu laden und bearbeiten - Schritt 4

Kodi IPTV starten

01 – Nach der erfolgreichen Konfiguration könnt ihr Live TV über Kodi bequem über das Hauptmenü starten. Wählt einfach den Punkt „TV“ aus .

Kodi IPTV starten - Schritt 1

02 – Die Live TV Oberfläche öffnet sich und ihr könnt euren gewünschten Sender auswählen.

Kodi IPTV starten - Schritt 2

Hinweise zu IPTV-Anbietern und eurer Privatsphäre

Wer über Google nach den entsprechenden Begrifflichkeiten sucht, wird schnell feststellen, dass m3u-Wiedergabelisten auch gegen eine Bezahlung bezogen werden können. Mit diesen Listen lässt sich ebenfalls Kodi IPTV einrichten.

Besagte Senderlisten bieten deutlich mehr Kanäle an, darunter Pay-TV und internationale Sportsender. Es gibt eine schier endlose Anzahl an IPTV-Anbietern, darunter seriöse und weniger seriöse. Der Sitz dieser Anbieter ist genauso unbekannt wie der Standort der Server, über denen die Kanäle abgespielt werden.

Kodi-Tipps.de weist darauf hin, dass das Benutzen bestimmter m3u-Wiedergabelisten einiger Anbieter nicht legal sein könnte. Die in diesem Artikel geteilte Senderlisten sind es aber in jedem Falle, da frei empfangbare Kanäle lediglich zusammengefasst bereitgestellt werden. Wir raten inständig davon ab, auf urheberrechtlich geschützte Inhalte aus nicht autorisierten Quellen zuzugreifen.

Um eure Privatsphäre im Internet zu schützen, solltet ihr in Erwägung ziehen, ein VPN zu verwenden. Mit einem VPN lassen sich Identität und Standort verschleiern. Ebenfalls ist eine bessere Performance von Streams möglich, da Internetanbieter die Geschwindigkeit bestimmter Dienste drosseln.

Wir empfehlen unseren Testsieger CyberGhost (hier zum Test), der die höchste Sicherheitsstufe garantiert, dabei eine sehr hohe Geschwindigkeit erreicht und mit einem fairen Preis aufwartet. CyberGhost hat eigene Apps für Amazon Fire TV, Windows, Android und weiteren Plattformen. Weitere VPN-Tests findet ihr HIER.

Kategorien Anleitungen Schlagwörter , , ,

Quelle: https://www.kodi-tipps.de/kodi-iptv-einrichten-live-tv-mit-kodi-anschauen/

2021-11-03 20:28
Webmaster

Wie Größe eines KVM image ändern?

Achtung: Zuerst ist die VM zu stoppen!

1. Sicherung und Vorlage erstellen:

Backup:
cp /var/lib/libvirt/images/<Imagename>.qcow2 /var/lib/libvirt/images/<Imagename>-BAK.qcow2


2. Image vergrößern:

qemu-img resize <Imagename>.qcow2 +5G

3. Erstellen des neuen vergößerten Images bzw. vegrößern der Partition:
Achtung: /dev/sda2 ist hier im Beispiel die zu vergrößernde Partition.
<Imagename>-BAK ist das originale Image welches in das vergrößerte Image kopiert wird.

virt-resize --expand /dev/sda2 <Imagename>-BAK.qcow2 <Imagename>.qcow2

4. Größe überprüfen:
qemu-img info <Imagename>.qcow2

Anmerkung: Die angezeigte Größe in der "Virtuellen Maschinenverwaltung" stimmt erst nach einem Neustarten der Machinenverwaltung selbst..

 

5. Vorlage kann nun gelöscht werden:
VM starten und wen nalles gut ging kann der Backup gelöscht werden: rm <Imagename>-BAK.qcow2

Für obiges galt https://fatmin.com/2016/12/20/how-to-resize-a-qcow2-image-and-filesystem-with-virt-resize/ als Vorlage.

PS: Es könnte auch ein komplett neues größeres Images generiert werden und in dieses dann  das Original "kopiert" werden.
Siehe: https://www.cyberithub.com/resize-qcow2-image-with-virt-resize-kvm-tools/

Auch interessant: https://www.consato.de/blog-und-aktuelles/qemu-kvm-festplatte-vergr%C3%B6%C3%9Fern.html

 

2023-10-20 12:52
Webmaster

GCC Compiler in einer anderen Version, als die gesetzte Standardversion nutzen

Um ein Paket mit einer anderen Version des GCC bzw. gcc++ zu bauen als es die Distribution als Standard vorsieht sind folgende Einträge in die spec einzufügen:


Beispiel openSUSE Leap 15.3

Hier ist die Version 7 als Standard gesetzt.
Es liegen aber auch die Versionen 8,9,10 und 11 des GCC vor.

Somit kann z.B. folgendes in die spec eingefügt werden wenn der GCC10 in Leap außer Tumbleweed benutzt werden soll:


Im Kopf:


%if 0%{?suse_version} < 1600
BuildRequires: gcc10
BuildRequires: gcc10-c++
%endif

Und in der %build section:


%if 0%{?suse_version} < 1600
export CC="%{_bindir}/gcc-10"
export CXX="%{_bindir}/g++-10"
%endif

Nun wird das Paket nicht mit GCC in der Version 7 gebaut, sondern mit GCC in der Version 10.

 

Besser ist jedoch folgende Version.

Im Kopf:

%if 0%{?suse_version} < 1600
BuildRequires: gcc13
BuildRequires: gcc13-c++
%else
BuildRequires: gcc
BuildRequires: gcc-c++
%endif

In der %build section:

%if 0%{?suse_version} < 1600
export CC=gcc-13
export CXX=g++-13
%endif

2025-09-08 11:58
Webmaster

How to create a package-lock.json

npm install --package-lock-only
npm install --package-lock-only

2022-06-24 11:03
Webmaster

Per bash Dateiendung an Dateinamen hinzufügen

for i in *; do mv "$i" "$i.dcm"; done

 

dcm ist in diesem Fall die Dateiendung.

2023-01-15 12:50
Webmaster

Portainer Update

Offiziell ist es hier beschrieben: https://docs.portainer.io/start/upgrade/docker

Inofiziell:
Hier wurden die öffentlichen Ports geändert. Außerdem den http port 9000 bzw. 10001 wieder eingefügt.
Somit ist http:   10001
              https: 10002

docker stop portainer

docker rm portainer


docker pull portainer/portainer-ce:latest

docker run -d -p 10000:8000 -p 10001:9000 -p 10002:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

 

2023-01-15 14:25
Webmaster

Firmwaredownload eines Homatic-Gerätes mittels http-Link.

HmIP-BSM ist durch die entsprechende Typbezeichnung zu ersetzen.

http://ccu3-update.homematic.com/firmware/download?cmd=download&product=HmIP-BSM&serial=0

2023-01-28 14:57
Webmaster

fail2ban - Abfragen

Alle gebannten IP's und in welchem jail herrauszufinden ist bei fail2ban ziemlich aufwending ud unübersichtlich.
Deshalb hier ein paar Möglichkeiten

fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a[i])}' | grep "Status\|IP list"

Fail2ban nutzt die Daenbank sqlite3.
Diese lässt sich natürlich abfragen:
 

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 \ 
"select datetime(timeofban, 'unixepoch', 'localtime') as startofban,
datetime(timeofban + bantime, 'unixepoch', 'localtime') as endofban,
ip, jail, bantime, bancount, data from bips
where endofban > datetime('now', 'localtime')
order by jail, endofban
limit 10"

Show all IP address and its jail:

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select ip,jail from bips"

Show all unique IP address:

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select distinct ip from bips"

Show all unique IP address in sshd jail:

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select distinct ip from bips where jail='sshd'"

Show top 20 most banned IP address in all jails:

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select jail,ip,count(*) as count from bips group by ip order by count desc limit 20"

 


2023-02-05 14:54
Webmaster

Block icmp timestamp

CMP (Internet Control Message Protocol) is one of the protocols in the IP (Internet Protocol) suite. It is used as in error reporting by all network devices. Also network and system administrators use it to troubleshoot connectivity issues in the form of ping and traceroute.

Most people are familiar with ping and the basic functionality that ICMP provides. But ICMP provides over 40 types of control messages. Two that have been known to be used in attacks are the Timestamp Request (type 13) and Timestamp Reply (type 14). ICMP type 13 and 14 are not attacked directly, rather they provide critical information that can help attack time based security algorithms. If left unchecked they can also provide other important reconnaissance information. These issues have been around, in one form or another, for over 20 years.

firewall-cmd --zone=public --add-icmp-block={timestamp-request,timestamp-reply} --permanent

firewall-cmd --reload

Quelle: https://www.putorius.net/mitigate-icmp-timestamp-vulnerabilities.html

andere Möglichkeit wäre noch:

https://www.golinuxcloud.com/disable-icmp-timestamp-responses-in-linux/

2023-02-06 14:13
Webmaster

Geräte im LAN ermitteln

nmap -sn -oG - 192.168.1.0/24

Es empfiehlt sich, den Befehl in die Shell-Konfiguration (.bashrc, .zshrc, usw.) einzutragen, damit man sich bei der nächsten Verwendung nicht an den genauen Befehl erinnern muss:

alias scan='nmap -sn -oG - 192.168.1.0/24'

2023-02-08 09:43
Webmaster

systemd und unit.service clone

Wenn man ein eigenes service file auf basis eines service files des distributor erstellen möche, dann führt man folgendes Kommando aus:

systemctl edit --full unit

Diese erzeugt dann unit.servie unter /ety/systemd/system

2023-03-29 15:06
Webmaster

Dateiendung anhängen

find . -type f | cat -n | while read n f; do mv "$f" "$f.dcm"; done

2023-06-10 10:53
Webmaster

linux Befehl "find" mit name and or


find . -type f "(" -name '*.txt' -o -name 'PKG-INFO' ")" -exec chmod -x {} \;

 

2023-07-02 11:37
Webmaster

LVM vergrößern

Als Beispiel dient wollen wir / um 10GB vergrößern.
 

lvextend -L+10G /dev/system/root /dev/sda2

resize2fs -p /dev/mapper/system-root

2023-12-04 23:26
Webmaster

Beispiele für batch

#!/bin/bash

for file in $(ls -d python*);
do
echo $file;
osc setlinkrev -u home:abc:python $file
done

 

2024-01-09 16:42
Webmaster

NFS: Mount Symlinks

Symbolisch gelinkte Folder oder Files auf dem NFS-Server werden auf dem NFS-Client als symbolische Links auf dem Client gewertet und nicht als symbolische Links auf dem Server.

Lösung:
Auf dem NFS-Server:
Mounten zum testen: sudo mount -o bind /source/folder /dest/folder
In fstab einfügen : /source/folder    /dest/folder    none defaults,bind   0   0
Ausserdem müssen die Exports die Parameter nohide und crossmnt haben.

 

2024-05-15 15:13
Webmaster

rpmlint: python-bytecode-inconsistent-mtime

Es gibt drei Möglichkeiten. In dieser Reihenfolge nutzen.
Diese sind nach %python_install einzufügen.
Für %{python_sitelib} kann auch %{python_sitearch} eingesetzt werden.

 

# Fix python-bytecode-inconsistent-mtime
pushd %{buildroot}%{python_sitelib}
%py_compile .
popd

 

# Fix python-bytecode-inconsistent-mtime
pushd %{buildroot}%{python_sitelib}
find . -name '*.pyc' -exec rm -f '{}' ';'
python%python_bin_suffix -m compileall *.py ';'
popd

 

2025-02-19 19:32
Webmaster

Install docker image offline

  1. docker pull <image>

    docker pull hello-world

  2. docker images

    REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
    hello-world   latest    d2c94e258dcb   15 months ago   13.3kB

  3. docker save -o <output path and filename> <docker image name:tag>

    docker save -o C:\Temp\hello-world-containerimage.tar hello-world:latest

  4. docker load -i <path and filename>

    docker load -i C:\Transfer\hello-world-containerimage.tar

2024-08-09 16:20
Webmaster

Suche in Dolphin

Dazu muss Baloo eingeschaltet sein!

in den KDE Einstellungen > Suche gibt ein ein paar Einstellungen für die 
Dateisuche.

 

Und ja, im Hintergrund ist baloo dafür zuständig. Damit hatte ich schon öfter 
Probleme gehabt.

 

Hier sind ein paar Kommandos dafür, als User ausführen:
    balooctl status
    balooctl start / stop / enable / disable
    balooctl check ... Datenbank überprüfen
    balooctl purge ... Datenbank löschen
    
Falls es absolut zickt, den Dienst deaktivieren und die gesamten Daten 
löschen:
        rm -r $HOME/.local/share/baloo/*
und anschließend wieder aktivieren und ggf die KDE Einstellungen neu 
vornehmen.

 

Wenn du die Dateininhalts-Indizierung aktiviert hast, läuft das dann eine 
Weile, um die Datenbank neu aufzubauen. Meine hat fast 10 GB. :-( 
Aber was kostet heute schon Speicher? Der Komfort macht es wett.

2024-08-10 12:12
Webmaster

Configuring proxy on docker

1. Create a systemd drop-in directory for the docker service:
   $ sudo mkdir -p /etc/systemd/system/docker.service.d

2. Create a file named /etc/systemd/system/docker.service.d/http-proxy.conf that adds the HTTP_PROXY and HTTPS_PROXY and perhaps NO_PROXY environment variable:
   $ nano /etc/systemd/system/docker.service.d/http-proxy.conf
      [Service]
      Environment="HTTP_PROXY=http://proxy.example.com:3128"
      Environment="HTTPS_PROXY=https://proxy.example.com:3129"
      Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"

4. Flush changes and restart Docker:
   $ sudo systemctl daemon-reload
   $ sudo systemctl restart docker

5.  Verify that the configurat*ion has been loaded and matches the changes you made, for example:
   $ sudo systemctl show --property=Environment docker

  Environment=HTTP_PROXY=http://proxy.example.com:3128 HTTPS_PROXY=https://proxy.example.com:3129 NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp

2024-08-10 12:24
Webmaster

7zip-bin-mac/7za: Error: spawn EACCES

Wenn folgende änliche Fehlermeldung kommt:

"7zip-bin/linux/x64/7za EACCES  failedTask=build'

dann muss folgendes auf Ausführen gesezt werden:

$ chmod +x node_modules/7zip-bin-mac/7za

2024-08-12 18:29
Webmaster

Install/Update node_modules lokal

install:

sudo npm install -g <modul>

Update:

Was ist zu aktuallisieren:                npm outdated -g --depth=0
Einzelenes Modul updaten:            sudo npm update -g <package_name>
Alle installierten Module updaten:  sudo npm update -g

2024-09-22 16:28
Webmaster

Electron: Access Probleme

in den Modulen electron, electron-builder und electron-vite und evtl. weiteren, müssen alle *.js Dateien die Rechte 755 haben!

2024-09-23 08:43
Webmaster

Electron und pnpm

In order to use with pnpm, you’ll need to adjust your .npmrc to use any one the following approaches in order for your dependencies to be bundled correctly (ref: #6389):

node-linker=hoisted
public-hoist-pattern=*
shamefully-hoist=true

Note: Setting shamefully-hoist to true is the same as setting public-hoist-pattern to *.

Quelle: https://www.electron.build/index.html#note-for-pnpm

2024-09-23 08:48
Webmaster

meson bestimmte python version übergeben

%meson -Dpython=python3.11

2025-02-19 19:33
Webmaster

Wie bestimmte Version in Flatpak installieren?

Versionen herausfinden mit:
flatpak remote-info --log flathub org.qgis.qgis
Entsprechender commit wählen und:
flatpak update --commit=f3e180bb9ddc0cc9fc304e899b7c71405d10db81a8200f3d34dfb6288fec15b9 org.qgis.qgis

2025-02-01 12:08
Webmaster

Amazon VOD (Prime) in Kodi aktivieren

Kodinerds Repository herunterladen & installieren

Kodinerds zählt zu den bekanntesten Foren in Deutschland, die rund um das Thema Kodi drehen. Die Seite bietet ein eigenes Repository an, dass mit vielen interessanten Addons für den deutschsprachigen Raum aufwartet. In diesem Artikel zeigen wir, wie das Kodinerds Repository heruntergeladen und installiert wird.

Hinweis zum Schutz eurer Identität

Bevor wir starten, weisen wir darauf hin, dass das Streamen bestimmter Inhalte über Kodi nicht legal ist. Um die eigene Privatsphäre zu schützen, empfehlen wir die Nutzung eines VPNs. Mit einem VPN wird eure Internetverbindung verschlüsselt und Identität verschleiert. Außerdem lassen sich für bestimmte Dienste Ländersperren umgehen.

Wir empfehlen unseren Testsieger CyberGhost (hier zum Test), der die höchste Sicherheitsstufe garantiert und mit einem fairen Preis aufwartet. Der Dienst betreibt über 9200 Server in mehr als 100 Ländern. CyberGhost bietet ebenfalls eigene Apps für Amazon Fire TV, Windows, Android und weiteren Plattformen an. Weitere VPN-Tests findet ihr HIER.

HIER klicken und über 80% auf CyberGhost sparen!

CyberGhost - Schuetze deine Privatsphaere

Kodi-Tipps.de steht in keinerlei Verbindung zu Kodi oder den Entwicklern von Addons. Dieser Beitrag dient dazu, die Installation eines Repositorys zu veranschaulichen. Für den Inhalt der Addons sind die entsprechenden Entwickler verantwortlich.

Kodinerds Repository herunterladen

Das Repository wird über folgende Seite heruntergeladen: repo.kodinerds.net.

Klickt anschließend in der Navigationsleiste auf „Download Repo Addon“.

Kodinerds Repository ZIP-Datei herunterladen

Legt die ZIP-Datei an einen Ort, der von eurem Kodi Abspielgerät aus erreicht werden kann. Die Datei kann auch per USB Stick oder über das Netzwerk direkt auf euer Gerät verschoben werden.

TIPP: Wie ihr Dateien vom Computer auf Amazon Fire TV Geräte verschiebt, erklären wir in unserer entsprechenden Anleitung.

Der direkte Download-Link der ZIP-Datei lautet:
https://repo.kodinerds.net/addons/repository.kodinerds/repository.kodinerds-7.0.1.7.zip

Die oben verlinkte Kodinerds Website bietet außerdem eine übersichtliche Auflistung aller Addons, die im Repository enthalten sind. Die Seite zeigt auch, mit welcher Kodi Version die entsprechenden Erweiterungen kompatibel sind.

Kodinerds Repository installieren

Folgend beschreiben wir, wie das Kodinerds Repository mit der ZIP-Datei installiert wird, die zuvor heruntergeladen werden muss.

Wählt im Hauptmenü von Kodi auf der linken Seite den Punkt „Addons“ aus.

Kodi Startseite - Menüpunkt Addons auswählen

Klickt anschließend oben links auf das Paket-Symbol.

Kodi Addon Menü - Paket-Symbol auswählen

Klickt im Addon-Browser auf „Aus ZIP-Datei installieren“.

Kodi Addon-Browser - Aus ZIP-Datei installieren

Sollte ihr zum ersten Mal ein Addon oder Repository aus einer ZIP-Datei installieren, meldet Kodi, dass die Installation aus unbekannten Quellen deaktiviert ist. Wählt die Option „Einstellungen“ aus.

Kodi Meldung Installation Addons aus unbekannten Quellen deaktiviert

Aktiviert den Punkt „Unbekannte Quellen“.

Kodi Einstellungen System Unbekannte Quellen aktivieren

Bestätigt die folgende Warnung mit „Ja“.

Kodi Addon Installation aus Unbekannte Quellen aktivieren - Warnung bestätigen

Wählt erneut den Punkt „Aus ZIP-Datei installieren“ aus und bestätigt die Meldung, dass aus ZIP-Dateien installierte Addons nicht automatisch aktualisiert werden, mit „Ja“.

Kodi Aus ZIP-Dateien installierte Addons Meldung

Navigiert in den Ordner, in welchem ihr die heruntergeladene ZIP-Datei abgelegt habt, und klickt auf diese.

Kodinerds Repository herunterladen und installieren - Schritt 1

Nach einigen Augenblicken erscheint am oberen rechten Bildschirmrand die Meldung, dass das Repository erfolgreich installiert wurde.

Kodinerds Repository herunterladen und installieren - Schritt 2

Öffnet nun die Kategorie „Aus Repository installieren“.

Kodinerds Repository herunterladen und installieren - Schritt 3

Wählt aus der Liste das „Kodinerds Addon Repo“ aus.

Kodinerds Repository herunterladen und installieren - Schritt 4

Im Kodinerds Repository findet ihr die verschiedensten Kodi Addons. Am beliebtesten sind natürlich die zahlreichen, deutschen Video-Addons. Ihr findet sie unter der Kategorie „Video-Addons“.

Kodinerds Repository herunterladen und installieren - Schritt 5

Kodinerds Repository herunterladen und installieren - Schritt 6

Kategorien Addons Schlagwörter , , ,

Quelle: https://www.kodi-tipps.de/kodinerds-repository-herunterladen-installieren/

Amazon Prime Kodi Addon installieren (Amazon VOD)

Mit dem Amazon Prime Kodi Addon (Amazon VOD) könnt ihr bequem über Kodi auf alle Videoinhalte von Prime Video zugreifen. Über diesen Dienst sind unzählige bekannte und exklusive Filme, Serien und Dokumentationen zu sehen. Wir zeigen euch, wie die Erweiterung installiert wird.

HINWEIS: Damit dieses Kodi Addon funktioniert, benötigt ihr ein Amazon Konto mit einer gültigen Prime Mitgliedschaft. Prime bietet euch neben dem Streaming-Angebot außerdem viele weitere Vorteile, zum Beispiel einen schnelleren Versand.

Hinweis zum Schutz eurer Identität

Bevor wir starten, weisen wir darauf hin, dass das Streamen bestimmter Inhalte über Kodi nicht legal ist. Um die eigene Privatsphäre zu schützen, empfehlen wir die Nutzung eines VPNs. Mit einem VPN wird eure Internetverbindung verschlüsselt und Identität verschleiert. Außerdem lassen sich für bestimmte Dienste Ländersperren umgehen.

Wir empfehlen unseren Testsieger CyberGhost (hier zum Test), der die höchste Sicherheitsstufe garantiert und mit einem fairen Preis aufwartet. Der Dienst betreibt über 9200 Server in mehr als 100 Ländern. CyberGhost bietet ebenfalls eigene Apps für Amazon Fire TV, Windows, Android und weiteren Plattformen an. Weitere VPN-Tests findet ihr HIER.

HIER klicken und über 80% auf CyberGhost sparen!

CyberGhost - Schuetze deine Privatsphaere

Kodi-Tipps.de steht in keinerlei Verbindung zu Kodi oder den Entwicklern von Addons. Dieser Beitrag dient dazu, die Installation eines Video-Addons zu veranschaulichen. Für den Inhalt dieser Addons sind die entsprechenden Entwickler verantwortlich.

Inhaltsverzeichnis

Amazon Prime Kodi Addon installieren (Amazon VOD)

Dieses Kodi Addon findet ihr im „Sandmann79s Repository“. Die ZIP-Datei für das Repository kann direkt über GitHub heruntergeladen werden.

„https://github.com/Sandmann79/xbmc/releases/download/Repository/repository.sandmann79.plugins-1.0.4.zip“

Praktischerweise findet ihr das Sandmanns79s Repository aber auch im Kodinerds Repository. Diesen Weg beschreiben wir in diesem Artikel.

Wie ihr das Kodinerds Repository installiert, erklären wir in unserer entsprechenden Anleitung. Befolgt nach der Installation des Repositorys folgende Schritte:

Ruft die Startseite von Kodi auf und klickt im Hauptmenü links auf den Punkt „Addons“.

Kodi Hauptmenü Addons

Klickt oben links auf das Paket-Symbol.

Kodi Addons Paket Symbol

Klickt anschließend auf „Aus Repository installieren“.

Kodi Addon-Browser - Aus Repository installieren

Wählt nun den Eintrag für das Kodinerds Repository aus.

Aus Repository installieren - Kodinerds Repository auswählen

Öffnet die Kategorie „Addon-Repository“.

Amazon Prime Kodi Addon installieren - Schritt 1

Wählt den Eintrag für das „Sandmann79s Repository“ aus.

Amazon Prime Kodi Addon installieren - Schritt 2

Klickt unten rechts auf „Installieren“.

Amazon Prime Kodi Addon installieren - Schritt 3

Nach wenigen Augenblicken ist das Repository bereits installiert.

Amazon Prime Kodi Addon installieren - Schritt 4

Geht zwei Schritte zurück und wählt das Sandmann79s Repository aus.

Amazon Prime Kodi Addon installieren - Schritt 5

Öffnet die Kategorie der „Video-Addons“.

Amazon Prime Kodi Addon installieren - Schritt 6

Wählt den Eintrag für das Amazon Prime Kodi Addon (Amazon VOD) aus.

Amazon Prime Kodi Addon installieren - Schritt 7

Klickt unten rechts auf „Installieren“.

Amazon Prime Kodi Addon installieren - Schritt 8

Bestätigt die Installation der benötigten Abhängigkeiten mit „OK“. Diese Zusatz-Erweiterungen werden benötigt, damit das Kodi Addon ordnungsgemäß funktioniert.

Amazon Prime Kodi Addon installieren - Schritt 9

Ist die Installation abgeschlossen, erscheint am oberen rechten Bildschirmrand ein entsprechender Hinweis.

Amazon Prime Kodi Addon installieren - Schritt 10

Wählt erneut den Eintrag für das Amazon Prime Addon aus der Liste aus und klickt anschließend unten links auf „Öffnen“.

Amazon Prime Kodi Addon installieren - Schritt 11

Bei dem ersten Start öffnen sich direkt die Einstellungen des Addons. Markiert auf der linken Seite das Untermenü „Verbindung“ und klickt in der Bildmitte auf „Anmelden“.

Amazon Prime Kodi Addon installieren - Schritt 12

Nun müsst ihr die Zugangsdaten für euer Amazon Prime Konto eingeben. Diese bestehen aus E-Mail-Adresse und Passwort. Bestätigt eure Eingaben mit „OK“.

Amazon Prime Kodi Addon installieren - Schritt 13

Anschließend öffnet sich das Amazon Prime Kodi Addon (Amazon VOD) und listet die verschiedenen Kategorien auf. Eventuell muss zuvor noch „Widevine CDM“ installiert werden, was jedoch automatisch über das Addon erfolgt. Widevine ist der Kopierschutz, den Amazon für die Videoinhalte verwendet.

Fehler beheben: Leere Ordner, keine Inhalte im Addon

Einige Anwender berichten davon, dass das Amazon Prime Kodi Addon keine Inhalte auflistet und nur leere Ordner anzeigt. In unseren Leserkommentaren sind verschiedene Lösungsansätze zu finden. Folgend zeigen wir eine mögliche Fehlerbehebung.

Öffnet die Einstellungen des Amazon VOD Addons. Dies ist unter anderem möglich, indem vom Startmenü aus das Kontextmenü der Erweiterung geöffnet (auf einer Tastatur mit Taste „C“) und auf „Einstellungen“ geklickt wird.

Amazon Kodi Addon - Fehler beheben: Leere Ordner, keine Inhalte im Addon - Schritt 1

Markiert auf der linken Seite den Menüpunkt „Amazon.TLD“. Aktiviert anschließend die Option „Web-API verwenden (Beta)“.

Amazon Kodi Addon - Fehler beheben: Leere Ordner, keine Inhalte im Addon - Schritt 2

Bestätigt die Einstellung auf der rechten mit „OK“. Nun sollte das Amazon Kodi Addon wieder Inhalte anzeigen. Unter Umständen hat sich ebenfalls das Layout der Menüs geändert.

Amazon Kodi Addon - Fehler beheben: Leere Ordner, keine Inhalte im Addon - Schritt 3

Anschließend empfiehlt es sich, auf der Info-Seite der Erweiterung das Addon einmal zu „deaktivieren“ und anschließend wieder zu „aktivieren“.

Amazon Kodi Addon - Fehler beheben: Leere Ordner, keine Inhalte im Addon - Schritt 4

Kategorien Addons Schlagwörter , , ,



Quelle: https://www.kodi-tipps.de/amazon-prime-kodi-addon-installieren-amazon-vod/

 

2025-02-01 13:19
Webmaster

Konfiguration DAVx

Es muss als Pfad unbedingt der Pfad mit Port genutzt werden:

https://<mail.domain>:8443/SOGo/dav/

und Username:

<username>@mail.domain

Weiter kann man sich ein Log zusenden lassen, welches helfen kann dern Fehler zu finden.

2025-02-26 08:45
Webmaster

Windows 11: Ohne Microsoft (Zwangs-)Konto nutzen

Windows 11: Ohne Microsoft (Zwangs-)Konto nutzen

Aus Datenschutzgründen sollte man Windows 11 eigentlich meiden. Wer es dennoch nutzen muss, kann es mit einem Trick ohne Internet und ohne Microsoft-Konto installieren. Dazu öffnet man während der Installation mit Shift + F10 die Eingabeaufforderung und gibt folgenden Befehl ein:

start ms-cxh:localonly

Daraufhin erscheint ein Fenster im Windows-10-Stil, in dem sich ein lokales Benutzerkonto mit Namen und Passwort einrichten lässt. Danach geht das Setup direkt zur Desktop-Einrichtung über und leitet zu den Datenschutzeinstellungen weiter.

Da Microsoft offenbar verstärkt daran arbeitet, solche Umgehungsmethoden zu blockieren, bleibt ungewiss, wie lange diese Option noch funktionieren wird. Dass Nutzer überhaupt gezwungen werden, ein Microsoft-Konto anzulegen, ist an sich schon eine Unverschämtheit – schließlich sollte es jedem selbst überlassen sein, ob er sein Betriebssystem mit einem Online-Konto verknüpfen möchte oder nicht. Dieses Vorgehen zeigt einmal mehr, wie sehr Microsoft darauf abzielt, seine Nutzer stärker an das eigene Ökosystem zu binden und ihre Daten zu sammeln.

Quelle: https://www.kuketz-blog.de/windows-11-ohne-microsoft-zwangs-konto-nutzen/

2025-03-31 13:55
Webmaster

So ermitteln Sie die Anzahl der CPU-Kerne unter Linux

So ermitteln Sie die Anzahl der CPU-Kerne unter Linux

Heutzutage sind Multi-Core-CPU-Prozessoren üblich, darunter Dual-Core-Prozessoren (z. B. Intel Core Duo),
Quad-Core-Prozessoren (z. B. Intel Core i5) und Hexa-Core-Prozessoren (z. B. AMD Phenom II X6). 
Außerdem sind viele physische Maschinen der Serverklasse mit mehr als einem CPU-Prozessor ausgestattet. 
Um die Anzahl der CPUs und die Anzahl der Kerne pro CPU zu ermitteln, können Sie auf /proc/cpuinfo verweisen.

Ermitteln Sie die Anzahl der physischen CPUs

Der folgende Befehl zeigt die Anzahl der physischen CPU-Prozessoren an Bord an.

$ cat /proc/cpuinfo | grep "^physical id" | sort | uniq | wc -l

Ermitteln Sie die Anzahl der Kerne pro CPU

Wenn Sie wissen möchten, wie viele Kerne jeder physische CPU-Prozessor hat, verwenden Sie den folgenden Befehl.

$ cat /proc/cpuinfo | grep "^cpu cores" | uniq

Ermitteln Sie die Gesamtzahl der Prozessoren

Die Gesamtzahl der verfügbaren Prozessoren (oder Kerne) ist die Anzahl der physischen CPUs multipliziert mit der Anzahl der Kerne pro CPU.

$ cat /proc/cpuinfo | grep "^processor" | wc -l

 

Beachten Sie, dass die Prozessoren der Intel Xeon 5600-Serie über die Intel Hyper-Threading-Funktion verfügen.
 Daher wird jeder Kern unter Linux als zwei Prozessoren angezeigt. In diesem Fall werden sie als logische Prozessoren bezeichnet.
 Somit beträgt die Gesamtzahl der Prozessoren, die Linux sieht, 16 (= 2 x 4 x 2).

2025-05-15 13:41
Webmaster

Netzwerk bridge im/für NetworkManager erstellen

Bridge br0 mit STP disabled erstellen:

nmcli connection add type bridge ifname br0 stp no

Slave von eth0 in br0 ersrtellen:

nmcli connection add type bridge-slave ifname eth0 master br0

Anzeige der aktiven Verbindungen:

nmcli connection show --active

Aktive  Verbindung eth0 beenden:

nmcli connection down eth0

Neue Bridge br0 starten:

nmcli connection up bridge-br0
nmcli connection up bridge-slave-enp30s0

Deaktivieren der alten eth0 Verbindung:

nmcli connection modify eth0 connection.autoconnect no

 

Quelle: https://wiki.archlinux.org/title/Network_bridge#With_NetworkManager

2025-06-07 11:21
Webmaster

LVM vergrößern:

Als beispiel vergrößern wir ein ext4 Filesystem

server:/srv/www/htdocs/nextcloud/data # pvs
  PV         VG     Fmt  Attr PSize PFree  
  /dev/sda2  system lvm2 a--  3,64t 883,62g

server:/srv/www/htdocs/nextcloud/data # vgs
  VG     #PV #LV #SN Attr   VSize VFree  
  system   1   4   0 wz--n- 3,64t 883,62g

server:/srv/www/htdocs/nextcloud/data # lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home system -wi-ao----   2,14t                                                    
  root system -wi-ao---- 284,00g                                                    
  srv  system -wi-ao---- 355,00g                                                    
  swap system -wi-ao----  10,00g                                                    

Vergrößern von /srv um 5GB
server:/srv/www/htdocs/nextcloud/data # lvextend -L +5G /dev/mapper/system-srv
  Size of logical volume system/srv changed from 355,00 GiB (90880 extents) to 360,00 GiB (92160 extents).
  Logical volume system/srv successfully resized.

server:/srv/www/htdocs/nextcloud/data # lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home system -wi-ao----   2,14t                                                    
  root system -wi-ao---- 284,00g                                                    
  srv  system -wi-ao---- 360,00g                                                    
  swap system -wi-ao----  10,00g                                                    

Vergrößern des Dateisystem, damit man es auch nutzen kann:

server:/srv/www/htdocs/nextcloud/data # resize2fs -p /dev/mapper/system-srv
resize2fs 1.47.0 (5-Feb-2023)
Dateisystem bei /dev/mapper/system-srv ist auf /srv eingehängt; Online-Größenänderung ist
erforderlich
old_desc_blocks = 23, new_desc_blocks = 23
Das Dateisystem auf /dev/mapper/system-srv is nun 94371840 (4k) Blöcke lang.

server:/srv/www/htdocs/nextcloud/data # df -h | grep srv
/dev/mapper/system-srv   355G    318G   36G   90% /srv
 

Keine Ahnung warum das nun 355G und nicht wie erwartet 360G ist.

Benutzte Quellen:
https://www.thomas-krenn.com/de/wiki/LVM_vergr%C3%B6%C3%9Fern
https://de.linux-console.net/?p=14628
https://docs.redhat.com/de/documentation/red_hat_enterprise_linux/6/html/logical_volume_manager_administration/lv_extend

2025-09-06 14:20
Webmaster

Umleitung von stdout und stderr

program  > ausgabe.log 2>&1

2025-10-01 08:30
Webmaster

Entpacken eines obscpio / cpio Files

cpio -idv < /pfad/zu/ihrer/backup.cpio

2025-10-03 12:29
Webmaster

Banking4 unter Wine

  1. winegui installieren
    zypper in winegui
  2. Neue Maschine erstellen

  3. Maschine konfigurieren und libraries installieren

  4. Registrie anpassen
    Damit man nicht nur ein schwarzes Fenster sieht, ist der renderer-Wert wichtig.
    Damit es zu keinem Flackern kommt ist der UseXRandR, UseXVidMode wichtig.



  5. Banking4 installieren

  6. Voila. Starten und freuen

2025-10-10 15:16
Webmaster

Banking4 unter Linux 64 bit

Banking4 unter Linux 64 bit

Die Wine-Entwickler haben in den letzten Jahren große Fortschritte gemacht. Wer eine alte Linux-Distribution verwendet oder eine 32 bit Version benutzt, kann weiterhin meine alte Anleitung benutzen, allerdings wird PlayOnLinux nicht mehr gepflegt und funktioniert stellenweise nicht mehr richtig. So werden die Pop-up Fenster nur noch zur Hälfte geöffnet. Wenn man also zum Beispiel aufgefordert wird, mein Skript zu bestätigen, muss man den unteren Rand des Fensters mit gedrückter Maustaste nach unten ziehen, bis man das Kontrollkästchen zum Zustimmen überhaupt sehen kann. Die alte Anleitung findet sich hier:

forum/topic.php?p=159199#real159199

Wer eine neuere 64 bit Linux-Distribution benutzt, empfehle ich die folgende Anleitung. Seit der Wine-Version-10.5 ist Wine-Mono so weit entwickelt, dass man Netframework nicht mehr zusätzlich installieren muss. Das vereinfacht die Installation von Banking4 enorm. Man braucht auch nicht mehr die „wine-staging“-Version, sondern es genügt nun die normale „wine-amd64“-Version.
Die folgende Anleitung verändert nichts an einer bereits installierten Wine-Version oder falls Banking4 schon mit PlayOnLinux installiert worden sein sollte! Die neue Installation läuft parallel und unabhängig von einer früheren Installation.
Falls Wine aber noch nicht installiert ist, muss es zuvor installiert werden. Bei Ubuntu oder Linuxmint einfach folgenden Befehl ins Terminal hineinkopieren:

sudo apt-get install wine


Für andere Linux-Distributionen findet man hier eine Anleitung für die Installation von Wine:

https://gitlab.winehq.org/wine/wine/-/wikis/Download


1. Vorbereitung
Zunächst muss sichergestellt werden, dass folgende Pakete installiert sind:
samba, winbind, wget, curl, mscorefonts

Dazu kopiert man ins Terminal folgenden Befehl:

sudo apt install samba winbind wget curl ttf-mscorefonts-installer

Sollten die Pakete schon vorhanden sein, wird das automatisch erkannt und sie werden nicht neu installiert, aber die fehlenden Pakete werden nachinstalliert.


2. Herunterladen von Wine-10.5 und von Banking4-Setupdatei

Dazu gibt man im Terminal folgende Befehle nacheinander ein:

cd

wget https://github.com/Kron4ek/Win…w64.tar.xz

tar -xvf wine-10.5-amd64-wow64.tar.xz

rm wine-10.5-amd64-wow64.tar.xz

wget "https://subsembly.com/download/TopBanking4Setup.exe"


3. Erzeugen der Wine-Prefix ".Banking4mono" und Installation von Banking4
Achtung: Wenn man gefragt wird, ob Wine-Mono installiert werden soll, unbedingt auf „Ja“ klicken! (Die Einstellung auf Windows7 ist notwendig, weil das Programm sonst nicht stabil läuft.) Zur Installation von Banking4 einfach den Anweisungen folgen.

Man gibt im Terminal nacheinander folgende Befehle ein:

WINEPREFIX=~/.Banking4mono ~/wine-10.5-amd64-wow64/bin/wine ~/TopBanking4Setup.exe

rm TopBanking4Setup.exe

WINEPREFIX=~/.Banking4mono ~/wine-10.5-amd64-wow64/bin/winecfg -v win7


4. Starten von Banking4

Man gibt im Terminal nacheinander folgende Befehle ein:

cd

WINEPREFIX=~/.Banking4mono ~/wine-10.5-amd64-wow64/bin/wine ~/.Banking4mono/drive_c/"Program Files (x86)"/TopBanking4/TopBanking.exe


5. Bildschirmanpassung

Wenn man einen Bildschirm mit hoher Auflösung besitzt, ist es ratsam, die Auflösung für Banking4 zu erhöhen, damit die Darstellung sich vergrößert. Dazu gibt man im Terminal folgenden Befehl ein:


WINEPREFIX=~/.Banking4mono ~/wine-10.5-amd64-wow64/bin/winecfg

Es öffnet sich ein Fenster. Man klickt auf den Reiter „Grafik“. Bei „Bildschirmauflösung“ befindet sich ein Schieberegler. Bei einem Monitor mit hoher Auflösung wählt man z. Bsp. 216 oder 240, je nach Geschmack. Bitte nur den Schieberegler benutzen und nicht die Zahl ins Kästchen direkt eingeben, sonst stürzt das Programm ab.


6. Starter auf dem Desktop erstellen

Möchte man einen Starter für Banking4 haben, öffnet man zunächst einen Texteditor und kopiert folgendes hinein:

[Desktop Entry]
Version=1.0
Type=Application
Name=Banking4
Comment=Banking für Profis
Exec=env WINEPREFIX=/home/BENUTZERNAME/.Banking4mono /home/BENUTZERNAME/wine-10.5-amd64-wow64/bin/wine start /unix %f "C:\\Program Files (x86)\\TopBanking4\\TopBanking.exe"
Icon=ECE1_TopBanking.0
Path=
Terminal=false
StartupNotify=true


Überall, wo „BENUTZERNAME“ steht, setzt man den eigenen Benutzernamen ein.
Dann speichert man diese Datei unter:

„Schreibtisch (bzw. Desktop)/ Banking4.desktop“

Danach geht man in das Verzeichnis „Schreibtisch (bzw. Desktop)“ und öffnet diese Datei mit Rechtsklick der Maustaste und geht auf „Eigenschaften“ und stellt das Programm auf „ausführbar“ ein.
Auf dem Desktop sollte nun ein neues Icon zu sehen sein (manchmal ganz unten rechts). Man kann das Icon an eine beliebige Stelle verschieben.
Auch dieses Icon mit rechter Maustaste anklicken und „Start erlauben“ anklicken.
Nun sollte der Starter mit einem Doppelklick funktionieren.
Bei einem Neustart kann es schon einmal 20 bis 30 Sekunden dauern, bis Banking4 startet. Also nicht öfters klicken, sondern warten!
Sollte sich das Programm einmal aufhängen, dann auf „Beenden erzwingen“ klicken und neu
starten.

7. Kartenlesegerät

Wenn man ein Kartenlesegerät von Reiner SCT benutzen möchte, öffnet man das Terminal und kopiert folgenden Befehl hinein:

sudo apt install libifd-cyberjack6 pcscd pcsc-tools libpcsc-perl libpcsclite1

(Achtung, diese Dateien können bei anderen Distributionen verschiedene Namen haben!)

Bei manchen Linux-Distributionen schaltet sich der pcscd-Treiber nicht automatisch ein. Wenn man das Kartenlesegerät benutzen möchte, muss man hier, bevor man das Banking4-Programm startet, zuerst folgende Befehle nacheinander im Terminal eingeben:

sudo killall pcscd
sudo pcscd -f


Wichtig! Wine-Mono ist noch in der Entwicklung. Sollten irgendwo Probleme auftauchen, bitte hier melden.

Source: https://homebanking-hilfe.de/forum/topic.php?p=176546#real176546

2025-10-15 17:28
Webmaster

Banking4 auf Linux 64 bit (Update)

Banking4 auf Linux 64 bit


Hier nun ein verbessertes Skript. Das Skript kann man auch mit einem Texteditor öffnen und zeilenweise in ein Terminal kopieren, oder man lässt es automatisch durchlaufen.
Hier wird nun die wine-10.5-staging-amd64 Version benutzt, weil damit auch Sonderzeichen angezeigt werden.
Das Skript erzeugt eine neue Wine-Prefix mit den Namen „.Banking4“ als verborgene Datei. Sollte schon eine solche Prefix vorhanden sein, wird die alte Prefix überschrieben!
Wenn man schon eine Banking4 Installation unter einer anderen Prefix hat, macht das nichts.


1. Skript

Skript herunterladen:

https://drive.google.com/file/…sp=sharing

Skript automatisch starten:
Gebe nacheinander folgende Befehle ins Terminal ein:

chmod +x ~/Downloads/Banking4-Installation-staging.sh
~/Downloads/Banking4-Installation-staging.sh

Die Wineprefix „.Banking4“ wird erzeugt. Bei der Frage, ob Wine-mono installiert werden soll, auf „installieren“ klicken.
Dann Banking4 nach Anweisung installieren.

Wenn das Skript durchgelaufen ist, müsste Banking4 automatisch starten!

2. Starter auf Desktop erzeugen

Im Verzeichnis „Downloads“ steht die Datei „Banking4.desktop“. Diese muss in das Verzeichnis „Schreibtisch“ (Achtung: bei anderen Linux-Distributionen heißt es „Arbeitsplatz“ oder „Desktop“) verschoben werden.
Es entsteht nun irgendwo auf dem Desktop ein neues Icon mit der Bezeichnung „Banking4“ (je nach Einstellung kann es auch ganz unten rechts stehen).
Rechtsklick mit der Maus auf das neue Icon und auf „Start erlauben“ klicken.
Mit einem Doppelklick auf das Icon lässt sich nun Banking4 starten. Bei einem Neustart, auch bei einem Neustart des Computers, kann es 20 bis 30 Sekunden dauern, bis das Programm startet. Die weiteren Starts verlaufen schneller.

Man kann auch über das Terminal das Programm mit folgendem Befehl starten:

WINEPREFIX=~/.Banking4 ~/.wine-10.5-staging-amd64/bin/wine ~/.Banking4/drive_c/"Program Files (x86)"/TopBanking4/TopBanking.exe


3. Anpassung der Erscheinungsgröße am Monitor

Bei Monitoren mit hoher Auflösung erscheint das Fenster von Banking4 sehr klein. In meiner vorherigen Anleitung habe ich Tipps gegeben, wie man das Erscheinungsbild vergrößern kann. Das hat aber den Nachteil, dass das Programm langsamer verläuft.
Man kann das Erscheinungsbild auch vergrößern, indem man das Fenster von Banking4 mit der Maus am Fensterrand vergrößert. Banking4 merkt sich diese Veränderung beim nächsten Start. Die Schrift kann man mit der programmeigenen Einstellung vergrößern.

Will man das Fenster über Wine vergrößern gibt man folgenden Befehl ein:

WINEPREFIX=~/.Banking4 ~/.wine-10.5-staging-amd64/bin/wine winecfg

Danach geht man zum Reiter "Grafik" und bedient den Schieberegler. Aber diese Methode macht das Programm träge.

Source: https://homebanking-hilfe.de/forum/topic.php?p=176666#real176666

2025-10-15 17:33
Webmaster

Banking4 unter Linux 64 bit (Update 2 - Variante 1 - mit mono)

Banking4 unter Linux 64 bit

Die Entwickler von Wine haben mit der neuen Version „Wine-10.10“ auch eine Verbesserung von Wine-Mono beigefügt. Damit läuft Banking4 etwas flüssiger und nun werden auch die Symbole überall angezeigt.
Das Programm läuft aber nur mit dem Renderer „gdi“ stabil!
Ich habe ein neues Skript für „wine-10.10-staging-amd64“ geschrieben. Damit wird eine Prefix mit dem Namen „.Banking4“ und die Wine-Datei mit dem Namen „.wine-10.10-staging-amd64“ erzeugt. Wenn es schon eine Prefix mit diesem Namen gibt, sollte man die alte Prefix zuvor umbenennen in „.Banking4.old“. Falls man Probleme mit der neuen Installation hat, kann man dann die neue Prefix wieder löschen und die alte Prefix wieder umschreiben und weiter verwenden.

Die folgende Anleitung verändert nichts an einer bereits installierten Wine-Version oder falls Banking4 schon mit PlayOnLinux installiert worden sein sollte! Die neue Installation läuft parallel und unabhängig von einer früheren Installation, vorausgesetzt, die alte Prefix hat einen anderen Namen (s.o.).

Falls Wine aber noch nicht installiert ist, muss es zuvor installiert werden. Bei Ubuntu oder Linuxmint einfach folgenden Befehl ins Terminal hineinkopieren:

sudo apt-get install wine


Für andere Linux-Distributionen findet man hier eine Anleitung für die Installation von Wine:

https://gitlab.winehq.org/wine/wine/-/wikis/Download


1. Vorbereitung bei einer Erstinstallation
Zunächst muss sichergestellt werden, dass folgende Pakete installiert sind:
samba, winbind, wget, curl, mscorefonts

Dazu kopiert man ins Terminal folgenden Befehl:

sudo apt install samba winbind wget curl ttf-mscorefonts-installer

Sollten die Pakete schon vorhanden sein, wird das automatisch erkannt und sie werden nicht neu installiert, aber die fehlenden Pakete werden nachinstalliert.

2. Installation mit Skript

Download des Skriptes:

https://drive.google.com/file/…sp=sharing

Starten des Skriptes:

chmod +x ~/Downloads/Banking4-10.10-staging.sh
~/Downloads/Banking4-10.10-staging.sh

Wenn gefragt wird, ob Wine-Mono instaliert werden soll, unbedingt auf „installieren“ klicken!

Banking4 nun nach Anleitung installieren. Sollte die Installation von Banking4 länger dauern, dann auf „Warten“ klicken, falls die Warnung aufleuchtet.


3. Bildschirmanpassung

Wenn man einen Bildschirm mit hoher Auflösung besitzt, ist es ratsam, die Auflösung für Banking4 zu erhöhen, damit die Darstellung sich vergrößert. Dazu gibt man im Terminal folgenden Befehl ein:


WINEPREFIX=~/.Banking4 ~/.wine-10.10-staging-amd64/bin/wine winecfg

Es öffnet sich ein Fenster. Man klickt auf den Reiter „Grafik“. Bei „Bildschirmauflösung“ befindet sich ein Schieberegler. Bei einem Monitor mit hoher Auflösung wählt man z. Bsp. 216 oder 240, je nach Geschmack. Bitte nur den Schieberegler benutzen und nicht die Zahl ins Kästchen direkt eingeben, sonst stürzt das Programm ab.
Achtung: Durch diese Änderung läuft das Programm „Banking4“ etwas langsamer und die Druckvorschau wird verschwommen dargestellt!

4. Starter auf dem Desktop erstellen

Im Verzeichnis „Downloads“ steht die Datei „Banking4-10.10.desktop“. Diese muss auf den Desktop-Bildschirm verschoben werden.
Es entsteht nun irgendwo auf dem Desktop ein neues Icon mit der Bezeichnung „Banking4-10.10“ (je nach Einstellung kann es auch ganz unten rechts stehen).
Rechtsklick mit der Maus auf das neue Icon und auf „Start erlauben“ klicken.
Mit einem Doppelklick auf das Icon lässt sich nun Banking4 starten. Bei einem Neustart, auch bei einem Neustart des Computers, kann es 20 bis 30 Sekunden dauern, bis das Programm startet. Die weiteren Starts verlaufen schneller.

Man kann auch jederzeit über das Terminal das Programm mit folgendem Befehl starten:

WINEPREFIX=~/.Banking4 ~/.wine-10.10-staging-amd64/bin/wine ~/.Banking4/drive_c/"Program Files (x86)"/TopBanking4/TopBanking.exe


5. Kartenlesegerät

Wenn man ein Kartenlesegerät von Reiner SCT benutzen möchte, öffnet man das Terminal und kopiert folgenden Befehl hinein:

sudo apt install libifd-cyberjack6 pcscd pcsc-tools libpcsc-perl libpcsclite1

(Achtung, diese Dateien können bei anderen Distributionen verschiedene Namen haben!)

Bei manchen Linux-Distributionen schaltet sich der pcscd-Treiber nicht automatisch ein. Wenn man das Kartenlesegerät benutzen möchte, muss man hier, bevor man das Banking4-Programm startet, zuerst folgende Befehle nacheinander im Terminal eingeben:

sudo killall pcscd
sudo pcscd -f

Erwähnte Script:

#! /bin/bash

# Installation von Banking4 mit Wine
echo "Herunterladen von wine-10.10-staging-amd64"

cd
wget https://github.com/Kron4ek/Wine-Builds/releases/download/10.10/wine-10.10-staging-amd64.tar.xz
tar -xvf wine-10.10-staging-amd64.tar.xz
mv wine-10.10-staging-amd64 ~/.wine-10.10-staging-amd64
rm wine-10.10-amd64.tar.xz
wget "https://subsembly.com/download/TopBanking4Setup.exe"


echo "Erzeugen der Wineprefix .Bankin4 und Installation von Banking4"
echo "Achtung! Wine-Mono installieren, wenn danach gefragt wird!"

WINEPREFIX=~/.Banking4 ~/.wine-10.10-staging-amd64/bin/wine ~/TopBanking4Setup.exe

rm TopBanking4Setup.exe

WINEPREFIX=~/.Banking4 ~/.wine-10.10-staging-amd64/bin/wine winecfg -v win7

echo "Starter auf Desktop erstellen"

wget 'https://drive.usercontent.google.com/download?id=1MHi-a_gPJL2Lou3SxQ0YY49vsKk7MJbC&export=download&authuser=1&confirm=t' -O Banking4-10.10.desktop

wget 'https://drive.usercontent.google.com/download?id=1jdDk3-c674OiIVZ_ru6o7NXQWYWiryZB&export=download&authuser=1&confirm=t' -O Banking-Starter-10.10.sh

chmod +x ~/Banking-Starter-10.10.sh
mv ~/Banking-Starter-10.10.sh ~/.local/share/applications/

chmod +x ~/Banking4-10.10.desktop
mv ~/Banking4-10.10.desktop ~/Downloads/

# Renderer=gdi
WINEPREFIX=~/.Banking4 ~/.wine-10.10-staging-amd64/bin/wine reg add 'HKEY_CURRENT_USER\Software\Wine\Direct3D' /v renderer /t REG_SZ /d gdi /f


echo "Starten von Banking4"
cd
WINEPREFIX=~/.Banking4 ~/.wine-10.10-staging-amd64/bin/wine ~/.Banking4/drive_c/"Program Files (x86)"/TopBanking4/TopBanking.exe

Source: https://homebanking-hilfe.de/forum/topic.php?p=177564#real177564

2025-10-15 17:39
Webmaster

Banking4 unter Linux 64 bit (Update 2 - Variante 2 - ohne mono)

Banking4 unter Linux 64 bit

Die Entwickler von Wine haben mit Wine-Mono große Fortschritte gemacht, aber leider gibt es dort noch Probleme. Deswegen benutze ich im Skript weiterhin Netframework (dotnet40 und dotnet48).
Als Wine-Version benutze ich die stabile Version "wine-10.0-staging-amd64". Neuere Wine-staging-Versionen sind reine Entwicklerversionen, die Fehler haben können!
Man muss eine Staging-Version benutzen, weil sonst Netframework nicht richtig installiert wird!
Das Programm läuft nur mit dem Renderer „gdi“ stabil! Der wird mit dem Skript gewählt.

Ich habe ein aktuelles Skript für „wine-10.0-staging-amd64“ geschrieben. Damit wird eine Prefix mit dem Namen „.Banking4-10.0“ und die Wine-Datei mit dem Namen „.wine-10.0-staging-amd64“ erzeugt. Wenn es schon eine Prefix mit diesem Namen gibt, sollte man die alte Prefix zuvor umbenennen in „.Banking4-10.0.old“. Falls man Probleme mit der neuen Installation hat, kann man dann die neue Prefix wieder löschen und die alte Prefix wieder umschreiben und weiter verwenden.

Die folgende Anleitung verändert nichts an einer bereits installierten Wine-Version oder falls Banking4 schon mit PlayOnLinux installiert worden sein sollte! Die neue Installation läuft parallel und unabhängig von einer früheren Installation, vorausgesetzt, die alte Prefix hat einen anderen Namen (s.o.).

Falls Wine aber noch nicht installiert ist, muss es zuvor installiert werden. Bei Ubuntu oder Linuxmint einfach folgenden Befehl ins Terminal hineinkopieren:

sudo apt-get install wine


Für andere Linux-Distributionen findet man hier eine Anleitung für die Installation von Wine. Bei einem 64bit System muss die 32bit Architektur nach dieser Anleitung unbedingt ermöglicht werden:

https://gitlab.winehq.org/wine/wine/-/wikis/Download


1. Vorbereitung bei einer Erstinstallation
Zunächst muss sichergestellt werden, dass folgende Pakete installiert sind:
samba, winbind, wget, curl, mscorefonts

Dazu kopiert man ins Terminal folgenden Befehl:

sudo apt install samba winbind wget curl ttf-mscorefonts-installer

Sollten die Pakete schon vorhanden sein, wird das automatisch erkannt und sie werden nicht neu installiert, aber die fehlenden Pakete werden nachinstalliert.

2. Installation mit Skript

Download des Skriptes:

https://drive.google.com/file/…sp=sharing


Starten des Skriptes:

cd
chmod +x ~/Downloads/Banking4-10.0-stagingohnemono.sh
~/Downloads/Banking4-10.0-stagingohnemono.sh

Wenn gefragt wird, ob Wine-Mono instaliert werden soll, unbedingt auf „abbrechen“ klicken! Das Skript läuft normal weiter.

Banking4 nun nach Anleitung installieren. Sollte die Installation von Banking4 länger dauern, dann auf „Warten“ klicken, falls die Warnung aufleuchtet.
Die Gesamtinstallation dauert 10 bis 15 Minuten. Mann darf nicht abbrechen, wenn man denkt, die Installation bleibt hängen!

3. Bildschirmanpassung

Wenn man einen Bildschirm mit hoher Auflösung besitzt, ist es ratsam, die Auflösung für Banking4 zu erhöhen, damit die Darstellung sich vergrößert. Dazu gibt man im Terminal folgenden Befehl ein:

cd
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine winecfg

Es öffnet sich ein Fenster. Man klickt auf den Reiter „Grafik“. Bei „Bildschirmauflösung“ befindet sich ein Schieberegler. Bei einem Monitor mit hoher Auflösung wählt man z. Bsp. 216 oder 240, je nach Geschmack. Bitte nur den Schieberegler benutzen und nicht die Zahl ins Kästchen direkt eingeben, sonst stürzt das Programm ab.
Achtung: Durch diese Änderung läuft das Programm „Banking4“ etwas langsamer und die Druckvorschau wird verschwommen dargestellt!

4. Starter auf dem Desktop erstellen

Im Verzeichnis „Downloads“ steht die Datei „Banking4-10.0.desktop“. Diese muss mit gedrückter Maustaste auf den Desktop-Bildschirm verschoben werden.
Es entsteht nun auf dem Desktop ein neues Icon mit der Bezeichnung „Banking4-10.0“ .
Zuerst Doppelklick auf das neue Icon, dann Rechtsklick mit der Maus auf das neue Icon und auf „Start erlauben“ klicken (das gilt so für Ubuntu, bei anderen Linux-Distributionen heißt der Startbefehl ein wenig anders).
Mit einem Doppelklick auf das Icon lässt sich nun Banking4 starten. Bei einem Neustart, auch nach einem Neustart des Computers, kann es 20 bis 30 Sekunden dauern, bis das Programm startet. Die weiteren Starts bei angelassenenem Computer verlaufen schneller.

Man kann auch jederzeit über das Terminal das Programm mit folgendem Befehl starten:

cd
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine ~/.Banking4-10.0/drive_c/"Program Files (x86)"/TopBanking4/TopBanking.exe


5. Kartenlesegerät

Wenn man ein Kartenlesegerät von Reiner SCT benutzen möchte, öffnet man das Terminal und kopiert folgenden Befehl hinein:

sudo apt install libifd-cyberjack6 pcscd pcsc-tools libpcsc-perl libpcsclite1

(Achtung, diese Dateien können bei anderen Distributionen verschiedene Namen haben!)

Bei manchen Linux-Distributionen schaltet sich der pcscd-Treiber nicht automatisch ein. Wenn man das Kartenlesegerät benutzen möchte, muss man hier, bevor man das Banking4-Programm startet, zuerst folgende Befehle nacheinander im Terminal eingeben:

sudo killall pcscd
sudo pcscd -f

Mit den "pcsc-tools" kann eine ATR-Analyse gemacht werden. Man gibt folgenden Befehl ein:

sudo pcsc_scan

Erwähnte Script:

#! /bin/bash

# Installation von Banking4 mit Wine
echo "Herunterladen von wine-10.0-staging-amd64"
cd
wget https://github.com/Kron4ek/Wine-Builds/releases/download/10.0/wine-10.0-staging-amd64.tar.xz
tar -xvf  wine-10.0-staging-amd64.tar.xz
mv wine-10.0-staging-amd64 ~/.wine-10.0-staging-amd64
rm wine-10.0-staging-amd64.tar.xz

echo "Löschen von Wine-Mono"
rm ~/.cache/wine/wine-mono-9.4.0-x86.msi

echo "Erzeugen der Wineprefix .Banking4 und Installation von Banking4"
echo "Achtung! Wine-Mono nicht installieren, wenn danach gefragt wird!"
wget "https://subsembly.com/download/TopBanking4Setup.exe"
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine ~/TopBanking4Setup.exe
rm TopBanking4Setup.exe

echo "Installation von dotnet40"
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine winecfg -v win7
wget 'http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe'
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine ~/dotNetFx40_Full_x86_x64.exe /q
rm dotNetFx40_Full_x86_x64.exe

# Overriding mscoree.dll
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v mscoree /t REG_SZ /d native

echo "Installation von dotnet48"
wget 'https://download.visualstudio.microsoft.com/download/pr/7afca223-55d2-470a-8edc-6a1739ae3252/abd170b4b0ec15ad0222a809b761a036/ndp48-x86-x64-allos-enu.exe'
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine ~/ndp48-x86-x64-allos-enu.exe /q
rm ndp48-x86-x64-allos-enu.exe

echo "Renderer=gdi"
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine reg add 'HKEY_CURRENT_USER\Software\Wine\Direct3D' /v renderer /t REG_SZ /d gdi /f

#Overriding websocket.dll
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v websocket /t REG_SZ /d native

echo "Schriftart Tahoma wird installiert"
cd
wget "https://master.dl.sourceforge.net/project/corefonts/OldFiles/IELPKTH.CAB?viasf=1"
mkdir ~/tahoma
cabextract -d ~/tahoma/ IELPKTH.CAB?viasf=1
cd ~/tahoma/
cp tahoma.ttf ~/.Banking4-10.0/drive_c/windows/Fonts/
cp tahomabd.ttf ~/.Banking4-10.0/drive_c/windows/Fonts/
rm -rf ~/tahoma
rm -r ~/IELPKTH.CAB?viasf=1

WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine reg add 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Fonts' /v "Tahoma" /t REG_SZ /d "tahoma.ttf" /f 

WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine reg add 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Fonts' /v "Tahoma Bold" /t REG_SZ /d "tahomabd.ttf" /f
 
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine reg add 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts' /v "Tahoma" /t REG_SZ /d "tahoma.ttf" /f

WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine reg add 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts' /v "Tahoma Bold" /t REG_SZ /d "tahomabd.ttf" /f

echo "Starter auf Desktop erstellen"
cd
mkdir -p ~/.local/share/applications
cd ~/.local/share/applications/

cat <<EOT >> Banking-Starter-10.0.txt
#!/bin/bash

cd
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine ~/.Banking4-10.0/drive_c/"Program Files (x86)"/TopBanking4/TopBanking.exe
EOT
mv Banking-Starter-10.0.txt Banking-Starter-10.0.sh
chmod +x Banking-Starter-10.0.sh


cd
cd Downloads
cat <<EOT >> Banking4-10.0.txt
[Desktop Entry]
Version=1.0
Type=Application
Name=Banking4
Comment=Banking für Profis
Exec=/bin/bash -c '$HOME/.local/share/applications/Banking-Starter-10.0.sh'
Icon=$(echo ~)/.Banking4-10.0/drive_c/Program Files (x86)/TopBanking4/TopBanking.ico
Path=
Terminal=false
StartupNotify=true
EOT
mv Banking4-10.0.txt Banking4-10.0.desktop
chmod +x Banking4-10.0.desktop

echo "Starten von Banking4"
cd 
WINEPREFIX=~/.Banking4-10.0 ~/.wine-10.0-staging-amd64/bin/wine ~/.Banking4-10.0/drive_c/"Program Files (x86)"/TopBanking4/TopBanking.exe

Source: https://homebanking-hilfe.de/forum/topic.php?p=179829#real179829

2025-10-15 17:50
Webmaster

Firmware Update mit fwupd

Befehl Beschreibung
fwupdmgr get-devices Listet alle erkannten Geräte auf.
fwupdmgr refresh Aktualisiert über den Linux Vendor Firmware Service ?? die Datenbank.
fwupdmgr get-updates Anzeige verfügbarer Updates.
fwupdmgr update Herunterladen der Firmware und Durchführung des gewünschten Updates.
sudo service fwupd start Start des Deamons - stop beendet diesen. status zeigt den Status an.

2025-10-24 13:12
Webmaster

Wie einen SecretKey erstellen?

UM einen uufälligen geheimer Schlüssel (mindestens 50 Zeichen) zu erstrellen, verwenden Sie zum Beispiel:

base64 /dev/urandom | head -c50

2025-11-21 12:05
Webmaster

Wie cdrom von host an kvm client weiter leiten?

So after a variety of attempts from a number of forum posts, the following approach

link1       

link2

worked for me:

>>  lsscsi

[2:0:0:0] cd/dvd HL-DT-ST BD-RE WH14NS40 1.03 /dev/sr0

And then hand modifying the ubuntu XML VM with 

<controller type='scsi' index='0' model='virtio-scsi'/> 
<hostdev mode='subsystem' type='scsi'>
  <source>
  <adapter name='scsi_host2'/>
  <address type='scsi' bus='0' target='0' unit='0'/>
  source>
  <readonly/> 
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>
hostdev>

 

Other posts had suggested changing the controller value to "1" which did not work for me. 

 

I now have access to the Blu-ray drive from within the Ubuntu VM (it automatically detects a Audio disk insert and mounts it).

I am now able to rip audio CDs which was my original objective.

Quelle: https://forums.unraid.net/topic/62070-pass-through-a-host-dvd-drive/?do=findComment&comment=688479

2025-12-07 13:22
Webmaster

Sonstiges

Zur Kategorie

Wie man TR-069 bei FritzBox abschaltet

Wenn die Option dafür im Web-Interface nicht vorhanden ist, dann (und nur dann!)

1. FB-Einstellungen ohne Passwort als Textdatei speichern;
 
2. Mit bevorzugtem Texteditor die Zeile
    tr069discover_active = yes;
    finden und 'yes' durch 'no' ersetzen;
 
3. Zeilen:
    enabled = yes;
    name = "tr069";
    type = qos_cfg_hidden;
    ....
    finden und 'yes' bei enabled ebenfalls durch 'no'
    ersetzten.
 
4. Am Anfang der Datei (als zweite Zeile)
    NoChecks=yes 
    hinzufügen
 
5. Einstellungen aus der Datei in FBox wieder einlesen.
 
Nun ist TR-069 aus :)
 

 

2014-02-09 11:00
Eric Schirra

Joomla: Erweiterung lässt sich nicht aus Webkatalog installieren.

1.) Navigate to your joomla's plugins/installer/webinstaller/webinstaller.php file

2.) change:


public $appsBaseUrl = 'http://appscdn.joomla.org/webapps/'; // will be https once CDN is setup for SSL

         to:

public $appsBaseUrl = 'https://appscdn.joomla.org/webapps/'; // will be https once CDN is setup for SSL

 

2014-12-04 20:12
Eric Schirra

How to enable MSE & H2.64 support on YouTube for Firefox right now

When you open YouTube's HTML5 page in the most recent stable version of Firefox right now, you will notice that support is not available for all technologies listed on the page.

Support may be available for HTMLVideoElement, H.264 and WebM VP8, but not for Media Source Extensions, MSE & H.264 or MSE & WebM VP9.

A configuration option is available to enable Media Source Extensions and MSE & WebM VP9 right now in the Firefox browser.

To do so, load about:config in the browser's address bar and search for the term media.mediasource.enabled there. Double-click the preference to set it to true.

When you go back to YouTube's HMTL5 page afterwards, you will notice that only MSE & H.264 is listed as unsupported while all remaining options are supported.

firefox mse support

If you do not do that, you will only receive select resolutions for videos on YouTube when using the HTML5 video player. This is quite problematic as Google will force Firefox users to use the HTML5 video player from Firefox 33 on.

Mozilla has not enabled the feature by default yet, not even in the most recent Nightly version of Firefox. This is an indicator that the feature is not yet ready for prime time and that it may take a couple of release cycles before it will be enabled by default.

Most video resolutions become available after you enable Media Source Extensions in Firefox. What is still not supported afterwards however is MSE & H.264 which means that some videos may not play in all resolutions yet on the site.

Enable MSE & H.264

A new preference in Firefox Nightly 34 changes that however, so that support for all requested technologies is provided afterwards on YouTube.

Note: While the article concentrates on Google's video hosting platform, enabling support for MSE & H.264 will benefit users of the browser on other websites as well.

You need to create a new preference to do so:

  1. Type about:config and hit enter.
  2. Confirm you will be careful.
  3. Right-click and select New > Boolean.
  4. Name the preference media.mediasource.ignore_codecs.
  5. Set its value to True.

If you go back to YouTube's HTML page, you should see all six technologies listed as supported (in green).

firefox mse h264 support

Several bugs need to be resolved before the feature will be enabled directly by Mozilla for all users of the browser. You can check out the mediasource progress here.

This means that you may get hangs or experience other issues after enabling mp4 container support for Media Source Extensions in the browser.

Still, it is great to see that Mozilla is working on support for the feature in Firefox. It is unclear if it will manage to resolve all issues before Firefox 33 gets released, as it may result in an increase in support requests when Firefox users notice that YouTube is serving them only some resolutions.

2015-01-28 17:38
Eric Schirra

Wie Heartbeat (Umfrage) ab Firefox 37 abschlaten?

 

open about:config

set browser.selfsupport.url to ""

2015-03-31 22:40
Eric Schirra

Wie Git-Repo-Tag in Archivdatei clonen?

 

git archive \

--format=tar.gz \

--remote=git://anongit.kde.org/publictransport \

stable-0.10.1 \

-o publictransport-1.10.1.tar.gz

2015-05-22 17:34
Eric Schirra

Kommentar eines Programmierers im Code:

When I wrote this, only God and I understood what I was doing
Now, God only knows

2015-06-20 11:01
Eric

Cache for owncloud

Making ownCloud Faster Through Caching

July 15, 2015

ownCloud 8.1 image roundSome operations an ownCloud server executes take a lot of time to complete, such as expensive calculations or communication with a remote storage server. Some other operations don’t take particularly long – but are needed many, many times per second. To improve performance and reduce the load on the system caused by expensive or frequently needed work, ownCloud can cache the result of these operations. In ownCloud 8.1, caching has become an explicit setting. Read on to learn more about caching in ownCloud and how to configure it so you get the best possible ownCloud experience.

Caching in PHP

Caching is used in PHP to store compiled versions of the scripts so they don’t need to be recompiled on every request. This is called opcaching and has been included and enabled by default in PHP since the 5.5 release. On PHP 5.4, the oldest currently supported PHP release which works with ownCloud, it is highly recommended to install an opcache. The most used implementation is called APC (see the Caching section in our Performance Tuning documentation). It is a webserver setting, meaning it won’t require you to configure anything in ownCloud.

Memory caching on the other hand is used directly by web applications like ownCloud. It helps ownCloud avoid slow database queries or file system checks by retrieving a result from a memory cache, either on the local machine or distributed on a cluster of servers. The result is a trade-off of memory usage for improved performance. As the memory usage of these caches is typically small, it is generally worth the effort to set them up.

In PHP, a handful of memory caches, or ‘memcaches,’ exist. A typical one available on nearly all distributions is APCu, or the Alternative PHP User Cache. It runs locally in the PHP process and can save information across requests. It is only accessible by the local machine however, so for a cluster a distributed memcache is needed.

Memcached is a popular distributed memcache which runs as a separate service and communicates with PHP via TCP port 11211. Redis is also a distributed memcache, very similar to Memcached and is available on TCP port 6379. Redis is much more advanced than other memcaches, with support for atomic operations, which makes it more suitable for ownCloud and is the recommended option.

The principle of caching - animatedThe principle of caching – animated

For a distributed memcache, the communication port can be exposed to the network, allowing multiple servers access, further improving performance as cached results are available to all servers in the cluster.

How does memcaching work?

A memcache is a key-value store. An application can store a value under a key and can then retrieve that value by searching the memcache with the key. Values may also have a Time To Live (TTL) set so that values eventually expire from the memcache and need to be re-inserted by the application. This is useful as a sanity check – if we get something wrong with cache expunging, the TTL acts as a backup to recalculate the values at some point.

ownCloud Memcaches

Memcaches can be configured in config.php, under the ‘memcache.local’ and ‘memcache.distributed’ parameters. ‘memcache.distributed’ will default to the value of ‘memcache.local’ if unset, so a single-server installation can just set a local memcache which will be used for everything. Setting an explicit distributed memcache is only useful for multiple servers in a cluster where the data that can be shared between servers is stored in a cache that is available to all the servers.

  • ownCloud supports the following memcaches:
  • APC (for PHP 5.4 and under)
  • APCu (for PHP 5.5 and above)
  • Redis (for distributed systems)
  • Memcached (not recommended with locking)
  • XCache (local like APCu; not recommended)

Highly recommended are: APCu for all installations and Redis for multi-server installations in the distributed memcache configuration field. See the memchache configuration options in the sample config.php documentation to understand the parameters needed as well as for additional configuration requirements for certain memcache backends. memcached is not recommended as it does not guarantee the availability of stored values which doesn’t play well with the ownCloud locking mechanism. If you use the locking mechanism you can configure a separate cache for the locking (“memcache.locking”). Outside of the locking issue, memcached should work without problems.

For home users, the typical setup would be to add this line to config.php:

'memcache.local' => '\OC\Memcache\APCu',

But make sure that APCu is installed. Usually this package is named ‘php-apcu’ or ‘php5-apcu’. If you get a white screen upon visiting your ownCloud that means your cache configuration is broken! Make sure the memcache tool is installed and enabled correctly.

There is currently a caveat with APCu and the command line interface. You need to set the php.ini option apc.enable_cli = 1. See this issue for more details and the error you might get. We’re looking into this and will most likely provide a solution for 8.1.1, (coming out in about 3 weeks) which will make this no longer needed.

Set up your cache and enjoy a faster ownCloud!

Thanks to Robin ‘Xenopathic’ McCorkell for much of the write-up

3 Responses to “Making ownCloud Faster Through Caching”

  1. ThFree

    July 16, 2015

    Thanks. We verify the performance with Caching .) Good luck in the works.

    Reply
  2. tony1

    July 15, 2015

    If you are using php 5.4 in config.php you should use ‘memcache.local’ => ‘\OC\Memcache\APC’,
    apc.enable_cli = 1 and apc.enabled=1 can be set in apc.ini or apcu.ini as well as other settings.
    if you move /usr/share/doc/php5-apcu/apc.php to your web root you can see apc in action!!

    take care

     

    Quelle: https://owncloud.org/blog/making-owncloud-faster-through-caching/

2015-07-16 23:15
Eric Schirra

Passwortschutz für addons Verzeichnisse der Homematic ccu2

Für diese Änderung muss ssh aktiviert werden.

Auserdem muss beachtet werden, dass das Root der Homematic RO gemountet ist.

Nur unter /usr/local kann man schreiben. Deshalb werden die neuen Dateien unter /usr/local gelegt und anschließend symbolische Verknüpfungen erzeugt.

So kann man die neuen Datei nachträglich ändern ohne das Root-Dateisystem wieder auf RW setzen zu müssen.

 

1. ssh aktivieren

 

2. Root-Dateisystem auf RW setzen: mount -o remount,rw /

 

3. Am lokalen PC .htpasswd erzeuchen mit: sudo htpasswd2 -c .htpasswd <username>

    Ändern des Passwortes mit sudo htpasswd2 -m .htpasswd <username>

 

4. Den folgenden Code unter access-addons-dir.conf speichern:

# Passwortschutz fuer addons dir
# Passwort generieren mit htpasswd -m <pwfile> <username>

auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/etc/lighttpd/.htpasswd"
auth.require = ( "/addons/<verzeciniss1>" =>
    (
    "method"  => "basic",
    "realm"   => "Bitte Passwort eingeben...",
    "require" => "valid-user"
    ),
#                 "/anderer/pfad/secure" =>
#    (
#    "method"  => "basic",
#    "realm"   => "Text für den anderen Pfad",
#    "require" => "valid-user"
#    ),
)

 

5. .htpasswd und access-addons-dir.conf nach /usr/local/etc/config/<neues Verzeichnis> hochladen.

 

6. Symbolisch Links erstellen:

   ln -s /usr/local/etc/config/eric/.htpasswd /etc/lighttpd/.htpasswd
    ln -s /usr/local/etc/config/eric/access-addons-dir.conf  /etc/lighttpd/conf.d/access-addons-dir.conf

 

7. In die Datei /etc/lighttpd/lighttpd.conf folgende Zeile am Schluss einfügen:

    include "conf.d/access-addons-dir.conf"

 

8.  Root-Dateisystem wieder auf RO:

  mount -o remount,ro /

 

9. lighttpd restarten:

   /etc/init.d/S50lighttpd restart

 

2016-04-24 17:17
Eric Schirra

Multiprozess im Firefox >= 48.0 einschalten

Multiprozessunterstuetzung einschalten, aber richtig

Damits funktioniert muss erstmal

browser.tabs.remote.autostart = true

gesetzt werden. Der Eintrag sollte mit 48 in jeder installation standardmaessig vorhanden sein, aber (ausser bei wenigen, siehe unten) ausgeschalten. Das im Artikel erwaehnte browser.tabs.remote.force-enable schaltet selbst nix ein, sondern schaltet die Schutzmassnahmen die derzeit noch im 48er drinnen sind ab.

Sache ist, dass das Feature erstmal nur bei Installationen die keinerlei Add-Ons benutzen aktiv ist - und da auch nur erstmal bei 1% davon. Das soll in dne nachsten 14 Tagen auf 50% hochgefahren werden. Sinn ist, dass die Entwickler nicht mit Fehlermeldungen zugeschuettet werden. Erst mit Version 49, so im November oder so, wirds dann, wenn keine groeberen Fehler auftauchen, allgemein freigeschalten

Also erstmal den browser.tabs.remote.autostart = true, restart machen und schauen was geht. Und nur wenns dann noch nicht geht den browser.tabs.remote.force-enable = true einschalten.

Siehe auch https://wiki.mozilla.org/Electrolysis#Testing

2016-08-04 00:45
Eric Schirra

Make Windows green again – Part 1

wsl_blog_1_1

It was November 28, 2016 when I came across an article on TechRepublic which talked about Microsoft’s plans for the future of Linux and Bash on Windows 10. The first read made me feel uncomfortable (I can’t really say why) but after the second read I started believing that this is in fact a great opportunity. Running Linux binaries natively on Windows … that sounds awesome indeed. However, it’s quite unfortunate that Microsoft enabled the wrong Linux (that’s my personal opinion) by default within the Windows Subsystem for Linux (WSL) and it is time to change it to the real stuff.

If you are one of those people who says: “Wait a second, I’m running SUSE Linux on my desktop / laptop already and I’m not using Windows 10 by any means” then you might want to stop reading now because you are already there. But we cannot neglect the reality that Windows is running on most of those devices and it’s hard to have both Windows and Linux truly accessible at the same time. You’d either have to go with a dual boot setup, or you may leverage virtualization and run a Linux VM on Windows (or vice versa), or you might be familiar with Cygwin allowing you to run recompiled Linux binaries on Windows. All of those options have their advantages and disadvantages – so do we need another one?

Yes, we do. But we need one; the integrated one leveraging the green Linux from SUSE. Why SUSE? Well, SUSE knows what they are doing because they have been in the Linux business since 1992. Try to find a Linux “vendor” (or in that sense, distributor) which is older. You won’t. There aren’t any. OK, enough with the self-praise. Let’s get started.

Assuming that you are running Windows 10 already, there are simple steps you have to follow to install a SUSE Linux distribution inside WSL (as always, I’m sure there are easier ways to achieve the same. Feel free to use the comment function to let everyone know how you do it differently). You have currently two options, openSUSE Leap 42.2 and SUSE Linux Enterprise Server 12 SP2. I’ll describe the process for openSUSE Leap 42.2 below (it works the same way for SUSE Linux Enterprise Server 12 SP2, just with another archive to download and extract):

  • Download the openSUSE docker userspace:
    $ wget -O openSUSE-42.2.tar.xz https://github.com/openSUSE/docker-containers-build/blob/openSUSE-42.2/docker/openSUSE-42.2.tar.xz?raw=true
  • Open the bash shell, which you find in your Windows Start menu under “Bash on Ubuntu on Windows” (click the Windows button, type “bash” and then hit Enter). True, it’s still Ubuntu but we only need to run a few commands there before we can replace it.
  • Extract the openSUSE userspace (ignore any warnings) and exit the bash shell:
    $ sudo mkdir rootfs
    $ sudo tar -C rootfs -Jxf openSUSE-42.2.tar.xz
    $ exit
  • Backup the old rootfs (Ubuntu) and copy the new openSUSE rootfs. Open a Command Prompt window (Windows key, enter “cmd” and hit Enter) and run the following commands:
    cd %localappdata%\lxss\
    rename rootfs rootfs.ubuntu
    move .\home\<linux_user>\rootfs .\
  • The new openSUSE userspace will, of course, not include the user that you created when you installed Bash for Windows, nor does it have things like ‘sudo’. To start just set ‘root’ as the default user. While still in the Command Prompt window run the following:
    lxrun /setdefaultuser root

    When exiting the command prompt, start bash from the start menu (Windows key, enter “bash” and hit Enter) and you have your openSUSE Leap 42.2 environment running within WSL.

  • Now let’s also change the orange icon to a cool green one. The one I’m using is coming from iconarchive.com and can be found through this link: http://www.iconarchive.com/show/nuoveXT-icons-by-saki/Apps-suse-icon.html
    Download the .ico file and copy it to %localappdata%\lxss\. In a command shell execute the commands (or simply use Windows Explorer, whichever suits you best):

     

    cd %localappdata%\lxss\
    rename bash.ico Ubuntu.ico
    rename Saki-NuoveXT-Apps-suse.ico bash.ico

Now you’re done. Without a reboot, the Windows start menu continues to show the old, orange icon. You could rebuild the start menu index or just wait until your next reboot. If anyone knows how to update the icon which is shown when using the search (Windows button, enter “bash”), let me know.

Last but not least, let’s navigate to %AppData%\Microsoft\Windows\Start Menu\Programs and give the entry a proper name. I called the entry “Bash on SUSE on Windows”.

wsl_blog_1_2

So now that we have – in my opinion – the proper Linux placed inside the WSL, it is time to do a little more with it. The content of part #2 is currently in the makes and I’ll update this blog once it’s published.

2017-01-19 18:21
Eric

After upgrade to NC12: Incorrect MySql/MariaDb database charset detected! #164

Quick update :

I updated NC to v12 today
I re-enabled news app and it was throwing errors about non-UTF8 characters in DB.

I searched a bit on the web and found this. news/issues/164

In order to fix the issue with News you have to.

  • Disable and remove news app
  • Remove news folder in /data
  • Drop the news tables in your DB
  • Add 'mysql.utf8mb4' => true, to your nextcloud config.php
  • Install News app

And the error is gone and your feeds will be updated like before.

 

Quelle:
https://github.com/nextcloud/news/issues/164#issuecomment-304449076
https://github.com/YunoHost-Apps/nextcloud_ynh/issues/48

2017-08-24 01:07
Webmaster

Homematic Meldung: CCU2 ist noch nicht bereit

Irgendwann in der Nacht am 29.10.2017 stieg die CCU2 bei mir und sehr, sehr vielen Homatic Besitzern aus. Oberfläche ist auch nicht mehr erreichbar. Es kommt die Meldung CCU ist noch nicht erreichbar. Auch ein Reboot bringt keinen Erfolg.
Schätze da gibt es ein Sommer-/Winterzeit Umstellungsproblem.

Einzige Möglichkeit ist einen Werksreset durchzuführen (Achtung, dann ist alle weg) oder sich per SSH einloggen.

Beim Login über SSH ist dann folgende Befehl einzugeben:

ssh root@homematic-ip

/bin/ReGaHss -f /etc/rega.conf -l 2 &

Oder wenn man eine Ausgabe haben mächte:

/bin/ReGaHss -f /etc/rega.conf -l 2 -c &

Quelle: https://homematic-forum.de/forum/viewtopic.php?f=26&t=39751

oder: https://homematic-forum.de/forum/viewtopic.php?f=26&t=39752

2025-02-19 19:23
Webmaster

git clone eines bestimmten tags

git clone <repo-address>
 
git tag -l
 
git checkout <tag-name>
 
git branch -D master
 

git checkout -b master

2020-12-09 18:31
Webmaster

How to fully backup your Android smartphone or tablet without root

How to enable USB debugging |

  1. Go to your Settings menu
  2. Scroll down and tap on System
  3. Select About phone
  4. Tap on the device’s Build number multiple times until it enables Developer options. Newer devices will require you to enter your PIN/password/pattern
  5. Hit the back button and select Developer options within the System menu
  6. Make sure Developer options is toggled on. Scroll down and toggle USB debugging on

""""

How to backup your Android device’s data |

  1. Plug your Android device into your computer
  2. Using either Command Prompt or Terminal, navigate to the folder in which the ADB tools are located and type in “ADB devices“. A pop-up on the Android device will appear if you need to grant your computer permission to interact with the phone or tablet. You will know if the command worked on your computer if it returns with the connected device’s identification number
  3. Type in “adb backup -apk -shared -all -f <filepath>/backup.ab
  4. Your Android device will now show the full backup window. Here you can encrypt your backup with a password (which is recommended)
  5. Tap on Back up my data
  6. This process can take several minutes and when completed, a new file will be placed on your computer

How to restore your Android device’s data |

  1. Plug your Android device into your computer
  2. Using either Command Prompt or Terminal, navigate to the folder in which the ADB tools are located and type in “ADB devices“. A pop-up on the Android device will appear if you need to grant your computer permission to interact with the phone or tablet. You will know if the command worked on your computer if it returns with the connected device’s identification number
  3. Type in “adb restore <filepath>/backup.ab
  4. Your Android device will now show the full restore window. If you added a password to your backup file, enter it in the space given
  5. Tap on Restore my data
  6. This process can take several minutes and when completed, most if not all of your previously installed applications will be present on your device as well as photos and other data

https://9to5google.com/2017/11/04/how-to-backup-restore-android-device-data-android-basics/

2020-12-25 12:00
Webmaster

Komplett-Backup ohne Root durchführen per adb (ab Android 4.x)

Ein Komplett-Backup ohne Root ist seit Android 4.0 relativ problemlos möglich, und zwar mit Hilfe der sog. Android Debug Bridge (adb) – ein Bestandteil der offiziellen Android-Entwicklungsumgebung (SDK). Hier nun eine kleine Anleitung, wie dieses Backup funktioniert.


Backup:

• Installieren der benötigen USB-Treiber: diese findet ihr meist in euren entsprechenden Geräteforen; bei den xda-devs gibt es auch einen Universal-Treiber für ca. 250 Geräte. Eine Alternative ist auch das Tool PdaNET, das für die meisten Geräte Treiber mitbringt – diese sind bei der Installation auszuwählen, anschließend kann PdaNET wieder deinstalliert werden (ohne die Treiber natürlich!).
Ob die Treiber korrekt installiert sind, könnt ihr auch mit dem SDK überprüfen – ruft dazu im Unterordner "tools" die ddms.bat auf, der dann startende Dalvik Debug Monitor sollte dann euer Device anzeigen.

• Das Android-SDK herunterladen und installieren.

• Den Debug-Modus aktivieren: -> Einstellungen -> Entwickleroptionen -> USB-Debugging.

• Das Device per USB-Kabel mit dem PC verbinden.

• Eine "Eingabeaufforderung" (Command-Prompt, cmd) öffnen und in den Ordner "platform-tools" des installierten Android-SDK navigieren.

• Der Befehl

Code:
adb backup –all –f c:\backup.ab

erstellt nun ein Backup mit den Daten des Systems und der Apps auf der PC-Festplatte.

Mit dem Befehl

Code:
adb backup –all -apk -shared –f c:\backup.ab

werden zusätzlich noch die Apps selbst sowie der komplette Inhalt des externen Speichers (oder wie beim Galaxy Nexus der internen "virtuellen" SD-Karte) mitgesichert - das Backup wird dann deutlich umfangreicher und dauert dementsprechend länger. ";)"

Es erscheint nun folgender Screen mit Hinweisen und der Möglichkeit, das Backup zu verschlüsseln.

"sicherung-450x800.png"


Restore

• Zum späteren Zurückspielen des Backups reicht dieser Befehl:

Code:
adb restore c:\backup.ab

Es erscheint dann wieder der Hinweis-Screen, dort ggf. das vorher vergebene Passwort eingeben und den Restore abwarten. ":)"

"wiederherstellung-450x800.png"


Infos:

• Es gibt mittlerweile auch das Ultimate Backup Tool mit einer (recht schlichten) Oberfläche, derzeit nur unter Windows lauffähig. Das Tool nutzt die genannten Befehle, man braucht sie also nicht mehr einzutippen. ":)"

• Dann gibt es noch Holo Backup (früher: Simple ADB Backup) mit einer komfortableren GUI für Windows und Linux.

• Ab sofort ist die von Koushik Dutta (bekannt von ClockworkMod und dem ROM Manager) entwickelte Backup-App Helium im Play Store verfügbar! Die Premium-Version kostet allerdings stolze 3,71 Euro - es ist auch eine stark eingeschränkte freie Version verfügbar, diese bietet Backup/Restore lediglich auf dem internen Speicher an.


Hinweise:

• Widgets auf dem Homescreen werden nicht korrekt restauriert, diese müssen dann manuell wiederhergestellt werden; dies gilt nach Userberichten hier im Thread auch (zumindest teilweise) für Apps auf den Homescreens. Man kann aber seit Android 4 auch ohne Root und div. Umstände Screenshots der Homescreens anfertigen. ";)"
• Da ein Backup der "SD-Karte" je nach Menge der zu sichernden Daten recht lange dauern kann, sollte man unter den Entwickler-Optionen das Ausschalten des Displays verhindern, da durch den im Standby verringerten CPU-Takt die Kopieraktionen abgebrochen werden können!
• Das Abspeichern des Backups auf dem Laufwerk C:\ funktioniert unter Windows 7 (und vermutlich Vista) nur mit Adminrechten!
• SMS werden bei dieser Methode leider nicht mitgesichert, diese müssen ggf. mit einem entsprechenden Tool (z.B. SMS Backup& Restore) separat gesichert werden. Eine weitere Alternative ist SMS Backup+, das SMS und MMS im Google Account sichert!
• Bei schon installiertem (älterem) SDK ist es wichtig, zuerst im Hauptverzeichnis den SDK-Manager aufzurufen und ggf. verfügbare Updates zu installieren.
• Bei diversen Tests (siehe xda-Thread unten) wurde festgestellt, daß trotz "-shared" Option nicht alle Bestandteile des ext. Speichers gesichert wurden - ggf. diese (Musik, Videos, Bilder etc.) manuell sichern.
• Hier noch einmal die komplette Syntax des Befehls:

Code:
adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|nosystem] [<packages...>]

Mit <packages> kann beispielsweise auch eine einzelne App gesichert werden!

Quelle1: https://www.android-hilfe.de/forum/android-allgemein.20/anleitung-komplett-backup-ohne-root-durchfuehren-per-adb-ab-android-4-x.260613.html
Quelle2: https://www.android-hilfe.de/forum/android-allgemein.20/anleitung-komplett-backup-ohne-root-durchfuehren-per-adb-ab-android-4-x.260613.html

2021-09-27 12:18
Webmaster

Firefox und das &#34;about&#34;-Protokoll

about: Seite Beschriebung
about: Zeigt die Versionsnummer, Buildinformationen, Links zu den Beitragenden, Lizenzinformationen und Einstellungen zur Build-Konfiguration an.
about:about Zeigt einen Überblick über alle about:-Seiten an.
about:accounts Zeigt Informationen zur Sync-Funktion an.
about:addons Öffnet den Add-ons-Manager
about:app-manager Öffnet den App-Manager
about:buildconfig Zeigt die für die Version von Firefox verwendete Konfiguration und Plattform an.
about:cache Zeigt Informationen zum Speicher, Speichermedium und Arbeitsspeicher an.
about:compartments

Seit Firefox 26 können diese Informationen unter "Other Measurements" in about:memory gefunden werden.

Zeigt Informationen zu einzelnen "Compartments".

about:config Bietet eine Möglichkeit, Einstellungen in Firefox zu untersuchen und zu ändern.
about:crashes Listet alle Abstürze, die während der gesamten Lebenszeit von Firefox passierten, auf.
about:credits Listet alle Ünterstützer und Mitwirkenden des Firefox-Projektes auf.
about:customizing Wechselt zur Anpassungsseite, die Anpassungen der Benutzeroberfläche von Firefox erlaubt.
about:downloads Listet alle Downloads von Firefox aus auf.
about:healthreport Zeigt Leistungsinformationen von Firefox an (nur wenn der Nutzer dies aktiviert hat).
about:home Öffnet die Startseite, die beim Öffnen eines neuen Fensters erscheint.
about:license Zeigt Lizenzinformationen an.
about:logo Zeigt das Firefox-Logo an.
about:memory Bietet eine Möglichkeit, die Speicherverwendung anzuzeigen, als Bericht zu speichern oder GC und CC auszuführen.
about:mozilla Diese Sonderseite zeigt eine Nachricht aus dem "The Book of Mozilla".
about:networking Zeigt Netzwerk-Informationen an.
about:newtab Öffnet die Startseite für einen neuen Tab.
about:permissions

Wurde mit Firefox 45 entfernt. (Bug 933917)

Bietet eine Möglichkeit, Berechtigungen anzuzeigen und verwalten zu lassen.

about:plugins Zeigt Informationen zu installierten Plugins an.
about:preferences Öffnet die Einstellungen zu Firefox (auch erreichbar über das Firefox-Menü > Optionen)
about:privatebrowsing Öffnet die Startseite, die beim Öffnen eines privaten Tabs angezeigt wird.
about:profiles Zeigt und verwaltet Firefox-Profile.
about:rights Zeigt rechtliche Informationen an.
about:robots Diese Sonderseite zeigt Informationen zu Robots an.
about:serviceworkers Zeigt aktuell laufende Service Workers an.
about:sessionrestore Öffnet die Sitzungswiederherstellungsseite (wird nach einem Absturz angezeigt).
about:support Öffnet die Fehlerbehebungsseite (auch erreichbar über das Firefox-Menü > ? (Fragezeichen) > Informationen zur Fehlerbehebung)
about:sync-log Zeigt ein Synchronisations-Protokoll bezogen auf die Sync-Funktion an.
about:sync-progress Zeigt die Seite, die nach der Einrichtung der Sync-Funktion aufgerufen wird.
about:sync-tabs Zeigt synchronisierbare Tabs an (für die Sync-Funktion).
about:telemetry Zeigt die von Firefox gesammelten und an Mozilla gesendeten telemetrischen Daten an (nur wenn der Nutzer Telemetrie aktiviert hat).
about:webrtc Zeigt Informationen zur Verwendung von WebRTC an.
about:welcomeback Zeigt die Seite, die nach einer Zurücksetzung aufgerufen wird.

Diese URLs wurden in docshell/base/nsAboutRedirector.cpp innerhalb des kRedirMap-Arrays definiert. Der Array zeigt die meisten der URLs, wie config in URLs im chrome:-Pseudo-Protokoll, wie chrome://global/content/config.xul an.  Der Ort der about:-Informationen wurde aus docshell/build/nsDocShellModule.cpp kopiert..

Quelle: https://developer.mozilla.org/de/docs/Mozilla/Firefox/The_about_protocol

2021-01-17 11:00
Webmaster

KVM static IP in Debian

Zu allererst ist der Netzwerkname herauszufinden:

ip -a

z.B.: enp1s0

Man mus in die Datei /etc/network/interfaces folgendes einfügen:

auto enp1s0
iface enp1s0 inet static
address 192.168.1.120
netmask 255.255.255.0
gateway 192.168.1.254
dns-domain localdomain.dehaem
dns-nameservers 192.168.1.111 192.168.1.100 192.168.1.254 8.8.8.8

Danach dann den service neu starten:

systemctl restart networking

2022-12-27 17:38
Webmaster

Disable plugin-sentry in iobroker unter Docker

Durch das plugin sentry werden autoamtisiert Fehlermeldungen und damit Daten an einen sentry server gesendet.
Siehe hierzu: https://github.com/ioBroker/plugin-sentry#plugin-sentry

Um dies abzustellen und zwar für den kompletten Host sind folgende Commandos asuzuführen:

  1. docker ps | grep iobroker  -> liefert die containerId von ioBroker
  2. docker exec <containerId> iobroker plugin disable sentry

Sie sollten eine Log-Meldung sehen, die besagt, dass sentry deaktiviert wurde.
Nach der Deaktivierung des Plugins werden keine Abstürze von Ihrem System gemeldet und können daher nicht behoben werden, ohne dass Sie sie selbst manuell melden!

2023-05-01 11:17
Webmaster

Update iobroker (js-controller) itself in docker.

Es gibt wohl 2 Varianten.

Die Ältere:

  1. Open portainer
  2. Navigate to iobroker container
  3. Click >Console
  4. Click Connect
  5. Stop iobroker daemon (-u is important in container)
    pkill -u iobroker
  6. iobroker update
    iobroker upgrade self
  7. iobroker start

 

Die Neuere:

  1. Open portainer
  2. Navigate to iobroker container
  3. Click >Console
  4. Click Connect
  5. Stop iobroker daemon
    maintenance on
  6. iobroker update
    iobroker upgrade self
  7. maintenance off oder maintenance restart

2023-09-22 17:57
Webmaster

Do Not Track Funktion der Browser

Die Do-Not-Track Funktion der Browser ist eigentlich rechtverbindlich.

Hier ein Urteil:

https://gesetze.berlin.de/bsbe/document/NJRE001559715

2024-09-11 15:12
Eric

121 Jahre 1.FC Saarbrücken

Artikel von goalgetter13 im FC Forum: Forum des 1. FC Saarbrücken

  • Aktuelles

  • 121 Jahre 1.FC Saarbrücken 18.04.2014

     

Der 1.FC Saarbrücken feiert Jubiläum. An Karfreitag 2014 konnte der Klub den 111.Geburtstag verzeichnen. 111 Jahre mit den Höchsten Höhen und deutschen Vize-Meisterschaften und Siegen in Madrid, in Mailand und auf der ganzen Welt. Aber eben auch 111 Jahre mit viel Leiden und nicht wenigen Tiefs. Höhen und Tiefen haben viele FCS-Fans eng an den Verein geschweißt und wenn man etwas aus der nun 111-Jährigen Geschichte des FCS herausziehen will könnte es folgende Grundaussage sein: "Und ganz egal was auch passiert, der FCS wird niemals untergehen." Der Club war bis in die Oberliga abgestiegen, hatte Lizenzentzüge in seiner Geschichte und mit sicherlich viele schwierige Phasen. Bisher hat jedoch noch kein Einfluss (weder äußerer, noch innerer Natur) es geschafft den Verein dauerhaft zu Grunde zu richten.

Begonnen hat alles am 18.April 1903 in Malstatt. In der Gaststätte "Tivoli" fanden sich einige Herren zusammen die gerne den aus England importierten Sport des Fußballs ausüben wollten. An jenem Abend gründeten diese Personen den TV Malstatt. Der 1.FC Saarbrücken war geboren. Ob die einzelnen Personen wussten welchen Anstoß sie da geleistet hatten? Wahrscheinlich nicht, doch sie haben diesen Mythos auferstehen lassen. Die Namen der wackeren Mannen waren:
Fritz Courths
Willi Düpre
Ernst Gettmann
Karl Jose
Gustav Pillon
Heinrich Pillon
Hugo Wätzmann
Heinrich Wagner
Willi Wilhelm
Poller

Jene 10 Personen brachten den Fußball in die saarländische Landeshauptstadt und sie brachten den FCS auf dem Weg. Gespielt wurde zu dieser Zeit auf einem Schulhof. Bereits im Jahre 1907 schaltete sich die Fußballabteilung jedoch vom TV Malstatt ab und im Oktober des selben Jahres wurde im "Café Adams" der „Fußballverein Malstatt-Burbach“ gegründet. Zugleich wurden auch die Vereinsfarben Blau und Schwarz festgelegt. Der Erfolg blieb zunächst aus und in der ersten ordentlichen Saison beendeten die Malstätter die Spielzeit auf dem vierten Tabellenplatz. 1909 fand die zweite Veränderung des Vereinsnamen statt. Einhergehend mit der politischen Zusammenlegung einzelne selbstständige Städte änderte auch der Verein seinen Namen und nannten sich nun FV Saarbrücken. Der FVS nahm bis zum Ausbruch des ersten Weltkrieges am Spielbetrieb teil konnte jedoch erst nach dem Krieg wieder ins Rollen kommen. Zu Beginn des Jahres 1919 stellte sich der Club wieder neu auf. Nachdem die Ausübung des Sports auf dem alten Schulhof untersagt wurde kickten die Moldschder anschließen auf einer Wiese auf dem Rodenhof. Doch der Fußball nahm eine große Entwicklung und setzte sich nach und nach in Deutschland durch. Und so wurde auf einer damaligen Parkanlagen "dem Ludwigspark" eine Sportanlage für den FVS errichtet. Entsprechend gestärkte konnten die Moldschder ab der Spielzeit 1919/20 wieder in den Ligabetrieb einsteigen. Der FVS erreichte in der damals höchsten Spielklasse, einer Kreisklasse eine Position im Mittelfeld. Der FVS hinkte Mannschaften wie Saar 05 und Borussia Neunkirchen relativ deutlich hinterher. Der FVS setzte seine Kontinuierliche Arbeit fort und setzte sowohl auf die Jugend als auch eine Verbesserung der Strukturen. Und die Mannschaft hielt bei der Entwicklung schritt und wurde 1922 erstmalig Vizemeister hinter Neunkirchen. 1924 wurde man Dritter und konnte im Pokal einige Runden überstehen ehe es gegen den großen 1.FC Nürnberg eine Niederlage gab. Doch in jenem Pokaljahr schaltete man endlich auch mal die Borussia aus Neunkirchen aus. Mit diesem Mut wurde man in der folgenden Saison zum ersten Mal bester Saarverein und ließ die Neunkircher hinter sich. Es stand 1925 die zweite Vizemeisterschaft der Vereinsgeschichte zu Buche. Im folgenden Jahr gelang dann endlich der Durchbruch und der FVS wurde vor Mainz 05 Meister seiner Klasse. Es ging auf die große Bühne, es ging für den FVS zum ersten Mal um die süddeutsche Meisterschaft. Die Gegner (u.a Bayern München, FSV Frankfurt und FV Karlsruhe) waren jedoch noch nicht zu erreichen und man schloss diesen "Versuch" mit nur einem Sieg und dem letzten Platz ab. 1928, zum 25-Jährigen Vereinsjubiläum, konnten die Moldschder ihren zweiten Meistertitel feiern. Das Jahr rundeten die restlichen Mannschaften des Vereins ab die ebenfalls in ihren jeweiligen Klassen Meister wurden. Nach 25 Jahren zeigte sich der FVS in einer guten Aufstellung und gehörte zu den großen Nummern im Südwesten. Die Startschwierigkeiten waren überwunden und der FVS gut aufgestellt. Das Halbfinale fand Mitte Juni in Stuttgart statt und der FVS schlug den First Vienna FC 1894 mit 2:1 und qualifizierte sich für das Endspiel um die deutsche Fußballmeisterschaft.

Einen Namen machte sich der FVS auch in den folgenden Jahren vor allem durch Freundschaftsspiele. In der eigenen Liga musste der FCS sich hinter dem FK Pirmasens anstellen und musste sich mit einem dritten und zwei zweiten Plätzen begnügen. Mitte der 1930-Jahren beeinflusste die politische Entwicklung Deutschlands mit der Machtergreifung der Nazis auch den Fußball und die Ligeneinteilung wurde von Grund auf umgestellt. Der FVS verpasste es dabei als Fünfter sich für neue Gauliga "Südwest" zu qualifizieren und musste in die zweite Liga. Dort traf man nicht nur auf den alten Rivalen Saar 05 sondern auch auf Mannschaften wie Altenkessel oder Roden. Meister wurde jedoch trotz hochkarätigem Kader der SV Saar 05. Im zweiten Jahr in der zweiten Spielklasse führte dann jedoch kein Weg mehr an den Saarbrückern vorbei und man belegte ungeschlagen den ersten Tabellenplatz und konnte sich auch in der folgenden Aufstiegsrunde souverän durchsetzen. Der FVS kam in die Gauliga. Das erste Jahr in der höchsten Spielklassen - Saison 1935/36 - beendeten die Moldschder auf dem siebten Tabellenplatz (10 Teams). In der folgenden Spielzeit erreichte man den sechsten Platz und 1937/38 entging man als Achter dem Abstieg nur durch das bessere Torverhältnis im Vergleich zum FCK. Ein Jahr später landete man Punktgleich mit dem FK Pirmasens und RW Frankfurt auf dem neunten Platz. Die Liga gehalten hätte man durch eine Aufstockung der Liga in zwei Staffeln trotzdem. Der Grund für die Aufstockung war der Ausbruch des zweiten Weltkrieges und eben jener Weltkrieg führte auch dazu das der FVS vor der Saison seine Mannschaft vom Spielbetrieb abmeldete.

Nachdem der Krieg Alltag wurde und die Nazis alles daran setzte durch Sport und andere Aktivitäten die Normalität im Leben des Volkes aufrecht zu erhalten ging in der Saison 1940/41 wieder eine Moldschder Mannschaft in der Gauliga ins Rennen. Der FVS wurde überlegen vor dem FCK und Borussia Neunkirchen Meister und holte in 14 Spielen neun Siege und zwei Remis. Im Endspiel um die Gaumeisterschaft unterlag der FVS dann den Offenbacher Kickers im Hinspiel mit 3:2 und konnte diese Niederlage in Saarbrücken nicht mehr ausgleichen (2:2). Trotz allem Bemühen der Nazis wirkte sich der Krieg natürlich auch auf den Sport aus und ließ einen organisierten Spielbetrieb in den Folgejahren kaum zu. In der ersten Spielzeit in der neuen Gauliga "Westmark" erreichte der FVS so lediglich den siebten Platz. 1942/43 gelang dann die Meisterschaft und durfte zur Endrunde um die deutsche Meisterschaft antreten. In der ersten Runde schaltete man auf dem Saarbrücker Kieselhumes - dort trug der FSV mittlerweile seine Spiele aus - den FC Mülhausen mit 5:1 aus. Es folgte ein 5:0-Erfolg bei Victoria Köln und im Viertelfinale schließlich ein 3:2-Erfolg gegen den VfR Mannheim. Dabei bog der FVS einen 1:2-Pausenrückstand noch um. Das Halbfinale fand Mitte Juni in Stuttgart statt und der FVS schlug den First Vienna FC 1894 mit 2:1 und qualifizierte sich für das Endspiel um die deutsche Fußballmeisterschaft. Die Tore für den FVS gingen damals auf das Konto von Herbert Binkert und Bubi Sold. Gegner im Finale war die damals überragende Mannschaft vom Dresdner SC um Flügelspieler Helmut Schön herum. Im ausverkauften Berliner Olympiastadion - trotz des tobenden Krieges kamen weit über 80.000 Besucher ins Stadion - siegte Dresden erwartungsgemäß mit 3:0. Erwähnenswert ist es jedoch sicher das die Moldschder den Großteil des Spiels in Unterzahl bestreiten mussten nachdem Karl Decker früh wegen einer Verletzung vom Platz musste und Auswechslungen noch nicht erlaubt waren. Der FVS wurde jedenfalls deutscher Vizemeister und zurecht gefeiert. Die Saarbrücker Zeitung titelte am folgenden Tage: „Von ganz Deutschland Zwetter“. In der folgenden Saison traten der FVS und der SC Altenkessel gemeinsam als KSG Saarbrücken auf und wurden erneut Meister in der Gauliga. Saarbrücken zog durch Siege gegen Göppingen und gegen Mülhausen (je 5:3) bis in Viertelfinale ein und scheiterte dort klar (1:5) am 1.FC Nürnberg. Doch die Tage von Nazi-Deutschland waren gezählt und auch der FVS absolvierte in diesem Zeitraum seine letzten Spiele ehe der Krieg sich seinem Ende näherte und der Sportbetrieb zum erliegen kam.

Doch auch die dunkelsten Momente nehmen einmal ein Ende und bringen das Licht zurück. Nazi-Deutschland wurde besiegt und die Alliierten übernahmen die Kontrolle im Besetzten Deutschland. Der FV Saarbrücken durfte im Herbst 1945 noch gut drei Monate als Verein auftreten ehe er im November schließlich aufgelöst wurde. Zugleich wurde der Nachfolgeverein gegründet: der „1. Fußball-Club-Saarbrücken“. Das Licht war zurück und langsam erholte sich auch der Sport wieder. Der "FCS" nahm den Spielbetrieb wieder auf. Zuerst im Form von Freundschaftsspielen und dann auch wieder in einer Ligaform. Mit 15 Siegen aus 18 Spielen wurde der FCS in der ersten Saison vor Lautern und Neunkirchen Meister. Der FCS setzte sich anschließend auch mit 5:0 und 4:4 gegen Rastatt durch und wurde Meister der Besatzungszone Frankreich. Die leid geplagten Saarbrücker bekamen nach den Schrecken des Krieges und der Folgezeit eine Abwechslung im Form von erfolgreichen Fußball geboten. In den Folgejahren wurde der FCS Zweiter und Dritter, doch wieder kam die Politik dem Verein in die Quere. Das Saarland wurde von Deutschland abgetrennt und der Spielbetrieb (später auch Freundschaftsspiele) mit den deutschen Mannschaften wurden untersagt. Die saarländische Liga war für den FCS zu schwach besetzt und so nutze man die Gelegenheit und durfte als Gastmannschaft in der zweiten französischen Liga antreten. In Folge dessen stellte der FCS auch ersten "deutschen" Verein auf eine Profimannschaft um (damals Pflicht in Frankreich). Der FCS zeigte sich auch für jene Spielklasse zu stark und wurde unangefochtener (jedoch inoffizieller) französischer Meister der 2.Division. 26 Siege und sieben Remis in 37 Spielen sprechen eine klare Sprache. Alleine sieben FCS-Spieler standen am Ende unter den zehn besten Torschützen der Liga. Herbert Binkert wurde mit 41 Treffern Torschützenkönig der Liga. Neben dem Ligabetrieb lud der FCS auch etliche Mannschaften auf den Saarbrücker Kieselhumes ein. Höhepunkt dieses Frühphase war sicher der 4:1-Erfolg über den amtierenden französischen Meister Paris.

Der FCS durfte als inoffizieller Meister nicht aufsteigen und wollte nun als offizieller Teilnehmer der französischen Liga beitreten. Trotz kurzfristiger Zusage wurde der Antrag schließlich abgelehnt und das Abenteuer Frankreich nahm ein jähes Ende. Der FCS befand sich in einer missligen Lage. Es fehlte der Spielbetrieb und die entsprechenden Einnahmen. Nun führte man die Idee der Freundschaftsspiele fort und stellte gemeinsam mit Sponsoren und der Stadt den "Internationalen Saarlandpokal auf die Beine. 14 europäische Spitzenmannschaften wurden nach Saarbrücken eingeladen und die drei Mannschaften mit dem besten Ergebnis gegen den FCS traten im Halbfinale an. Das Finale der ersten Austragung entschied der FCS mit 4:0 gegen Stade Rennais für sich. Die zweite Ausgabe wurde professioneller (mit Hin- und Rückspiel) ausgespielt, doch nachdem die Rückkehr in den deutschen Spielbetrieb feststand wurde der Wettbewerb nicht zu Ende gespielt. Einzige Meister des Internationalen Saarlandpokals ist damit bis heute der 1.FCS. Neben dem Saarlandpokal wurden etliche Freundschaftsspiele - wie gegen die Schweizer Nationalmannschaft - absolviert. Der FCS hatte in Europa einen fantastischen Ruf und wurde unter anderem nach Barcelona eingeladen. Es reihte sich Highlight an Highlight. 1950 kamen 25.000 Zuschauer auf den Kieselhumes um den FC Liverpool zu sehen - der FCS siegte 3:0. In jene Zeit fällt auch der Ausspruch des damaligen Fifa-Präsidenten Rimet der Saarbrücken als „Die interessanteste Fußballmannschaft Europas“ betitelte. Jene Mannschaft siegte u.a in Bilbao mit 4:0 und sorgten wenig später für einen gewaltigen Paukenschlag. Die Moldschder schlugen Real Madrid in Madrid, im Stadion Chamartin und vor 50.000 Zuschauern mit 4:0. Es folgten Reisen durch Europa, nach England und nach Skandinavien. Und ein besonderes Highlight gab es auf dem Kieselhumes. Der amtierende deutsche Meister, Schalke 04, gab sich die Ehre und wurde mit 5:0 nach Hause geschickt. Saarbrücken und der FCS waren endgültig in aller Munde.

1951/52 ging es dann endlich zurück in den Spielbetrieb. Der FCS durfte in der Oberliga Südwest auflaufen und endlich Pflichtspiele bestreiten. Und der FCS bewies das seine Klasse nicht nur in Freundschaftsspielen zu sehen war. In der ersten Spielzeit zurück im Spielbetrieb wurde man zugleich Meister vor Neundorf und Kaiserslautern. 23 Siege in 30 Spielen lautete die starke Bilanz der Moldschder. Der Verein aus dem politisch immer noch eigenständigen Saarland nahm nun an der Endrunde zur deutschen Meisterschaft teil. In einer Gruppe mit Schalke 04, dem 1.FC Nürnberg und dem HSV ging der FCS als Erster heraus und qualifizierte sich mit vier Siegen für das Endspiel. Die Siege gab es in den drei Heimspielgen gegen Schalke (4:1), den HSV (3:0) und Nürnberg (3:1) sowie auf Schalke (4:2). Im Finale ging es vor 84.000 Zuschauern im Südweststadion gegen den VfB Stuttgart. Die Mannschaft von Trainer Gustl Jordan lief wie folgt auf: Erwin Strempel; Waldemar Philippi, Theo Puff; Karl Berg, Nikolaus Biewer, Jakob Balzert; Werner Otto, Herbert Martin, Herbert Binkert, Peter Momber, Konrad Schreiner

Die Tore von Konrad Schreiner und Herbert Martin waren jedoch nicht genug. Der VFB setzte sich mit 3:2 durch und der FCS wurde zum zweiten Mal in seiner Vereinsgeschichte deutscher Vizemeister. Bei ihrer Rückkehr wurden die Moldschder im Saarbrücken empfangen als hätten sie den Titel geholt. Über 100.000 sollen sich damals auf den Weg nach Saarbrücken gemacht haben um das Team vor dem Rathaus zu bejubeln. Durch diesen Erfolg wurde auch der langersehnte Bau eines eigenen Stadions möglich. Das Saarland bewilligte die Mittel um den Ludwigspark auszubauen. Im Anschluss an die Saison nahm man noch an einem hoch dotierten Turnier in Brasilien teil und durfte schließlich auch in Amsterdam gegen die höllandische Nationalmannschaft antreten. Der FC siegte mit 3:2. 1953 wurde der FCS 50 Jahre alt, erreichte in der Oberliga jedoch nur den dritten Platz. Doch in jenem Jahr wurde endlich das neu gebaute Ludwigsparkstadion eingeweiht und der FC zog heim zu seinen Wurzel auf dem Rodenhof. Das Eröffnungsspiel wurde vor 30.000 Zuschauern mit 3:1 gegen RW Essen gewonnen. Der FC blieb auch in den nächsten Jahren eine der Spitzenmannschaften im Südwesten und belegte regelmäßig Plätze im oberen Drittel der Tabelle. Doch erst 1960/61 wurden die Moldschder erneut Meister der Oberliga Südwest. Die Endrunde um die deutsche Meisterschaft verlief in jener Spielzeit eher schlecht und der FCS schied in einer Gruppe mit dem BVB, Eintracht Frankfurt und dem HSV als Letzter aus. Den einzigen Sieg gab es im Park gegen den BVB (4:3). Einige Jahre zuvor, nämlich 1955/56 gab es für den FC noch ein weiteres großes Highlight. Als Vertreter des eigenständigen Saarlands nahm man am Europapokal teil und der Gegner wurde niemand geringeres als der AC Mailand. Und der FCS vollbrachte ein Husarenritt. In San Siro siegten die Moldschder als erste deutsche Mannschaft mit 4:3. Die Treffer zu diesem denkwürdigen Erfolg erzielten Peter Krieger, Waldemar Philippi, Karl Schirra und Herbert Martin treffsicher zeigten. Das Rückspiel ging jedoch mit 4:1 an den AC der damit auch die nächste Runde erreichte. 1962/63 erreichte der FCS in der Liga den fünften Platz und qualifizierte sich durch die Ergebnisse der Vorjahre für die neu gegründete Bundesliga. Als eine von 16 Mannschaften war der FCS teil der Premierensaison. Doch bereits in der ersten Saison stand der Abstieg zu Buche und die Blauschwarzen konnte nur selten an die Leistungen früherer Tage anknüpfen. Der FCS spielte fortan in der Regionalliga Südwest und versuchte den Sprung zurück in die Bundesliga zu vollziehen. Im ersten Jahr wurde man souverän Meister (27 Siege aus 34 Spielen) und scheiterte in der Aufstiegsrunde nur knapp gegen den FC Bayern München. In der Saison 1965/66 wurde der FCS Tabellenzweiter, wurde in der Aufstiegsrunde hinter Essen und St. Pauli jedoch nur Dritter. Auch in der folgenden Saison reichte es in der Liga zu Platz 2 und in der Aufstiegsrelegation zu Platz 3. 1968 verpasste der FCS als Fünfter erstmalig die Aufstiegsspiele und entsprechendes hielt sich auch in den folgenden Jahren wobei der FCS sogar nach und nach in den Tabellenkeller abrutschte. Die letzte Spielzeit der Regionalliga Südwest - 1973/74 - beendete der FCS wieder auf Platz 2, erreichte in der Aufstiegsrelegation jedoch nur den letzten Platz und wechselte nach 10 Jahren in der Regionalliga Südwest in die 2.Liga. Der FCS wurde dabei trotz sportliche schlechterem Abschneiden dem SV Alsenborn vorgezogen und qualifizierte sich am grünen Tisch für die neu gegründete Liga.

Die Blauschwarzen beendeten die erste Saison in Liga 2 auf dem siebten Platz und wurden im folgenden Jahr vor dem 1.FC Nürnberg Meister der 2.Bundesliga Süd. Somit stand 1976 auch der erneute Aufstieg in die 1.Bundesliga zu Buche. Nach 34 Spieltagen belegte der FCS den 14. Tabellenplatz und konnte mit einem Punkt Vorsprung vor Karlsruhe zum bisher einzigen Mal in seiner Geschichte den Klassenerhalt in Liga 1 feiern. In diese Saison fielen unter ein 3:2-Erfolg über den HSV nach 0:2-Rückstand sowie der wohl größte Erfolg der Vereinsgeschichte. Am 16.April 1977 siegte die Blauschwarzen sensationell mit 6:1 gegen Bayern München. Mann des Tages im hoffnungslos überfüllten Ludwigsparkstadion war der vierfache Torschütze Roland Stegmayer der die Starmannschaft des FCB (mit Maier, Beckenbauer, Schwarzenbeck und Müller) fast im Alleingang nach Hause schoss. Die dritte Spielzeit in der Bundesliga hatte schließlich den zweiten Abstieg zur Folge. Chancenlos und als Vorletzter ging es wieder in die 2.Liga. Finanzielle Schwierigkeiten erzwangen einige Spielerverkäufe von Spitzenspielern und die sportliche Entwicklung bekam Dellen. In der zweiten Liga landete man nur im Mittelfeld und war meilenweit vom direkten Wiederaufstieg entfernt. Durch einen Deal mit "Jägermeister" konnten 1980 schließlich die anhaltenden finanziellen Probleme aus der Welt geschafft werden, doch sportlich sah es mau ab. 1980/81 wurde man in der 2.Liga nur Siebzehnter und verpasste somit die Qualifikation zur eingleisigen zweiten Liga. Es ging in die Oberliga Südwest, damals Drittklassig. Der Absturz schien dem Verein zu helfen sich wieder zu berappeln. 1982/83 stieg man aus der Oberliga auf. Nach zwei Jahren in Liga 2 wurde das Jahr 1985 zu einem der erfolgreichsten der Vereinsgeschichte. In der Liga erreichte man hinter Nürnberg und Hannover den dritten Platz und qualifizierte sich somit für ein Relegationsspiel um den Bundesligaaufstieg. Gegner wurde Arminia Bielefeld. Im Hinspiel im Ludwigspark sorgten Michael Blättel und Pierre Dickert für einen 2:0-Sieg. Vier Tage später ging es nach Bielefeld und vor 32.000 Zuschauern gleich Sascha Jusufi mit einem direkt verwandelten Freistoß die Führung der Bielefelder aus und brachte den FCS zurück ins deutsche Oberhaus. Neben dem Aufstieg zog man auch bis ins Pokalhalbfinale ein und konnte dabei unter anderen den deutschen Meister VfB Stuttgart ausschalten. Im Halbfinale unterlag man schließlich dem Erstligisten Uerdingen mit 1:0.

Doch der Ausflug in Liga 1 hielt erneut nur ein Jahr. Der FCS wurde Vorletzter und musste den direkten Wiederabstieg hinnehmen. Nach sechs Jahren in der Zweitklassigkeit ging es 1992 wieder hoch in Liga 1. In der 2.Bundesliga Süd setzte man sich vor Mannheim und Freiburg als Erster durch und vollzog den bis heute letzten Aufstieg in die höchste deutsche Spielklasse. Dort hielt man sich wieder nur ein Jahr und musste am Saisonende als Letzter Absteigen. Der FCS verschwand nun von der Bundesligakarte. Der FCS hatte erneut mit großen finanziellen Problemen zu kämpfen, konnte als Tabellen-vierzehnter jedoch zumindest die Klasse halten. Sportlich gelang das auch in der folgenden Saison 1994/95 mit einem souveränen siebten Tabellenplatz. Durch eine Kleinigkeit, einen Formfehler (!), musste der FCS jedoch den Zwangsabstieg in die Regionalliga hinnehmen. Durch den Abstieg war der Verein nahe dem Konkurs und durch vorbildlichen Einsatz von Reinhardt Klimmt gelang es in der Folge das schlimmste zu verhindern und den Verein im Spielbetrieb zu halten. Sportlich musste der FCS jedoch fünf Jahre in der Drittklassigkeit verharren und tröstete sich mit DFB-Pokalspielen gegen Schalke 04 (0:1) und Borussia Dortmund (2:4 n.E). 1999/2000 gelang dann in der Regionalliga West als Meister der Aufstieg in die 2.Bundesliga. Gegen Siegen und Elversberg lockte der FCS gut 20.000 Besucher ins Stadion und hatte am Ende sechs Punkte Vorsprung vor LR Ahlen.

Pünktlich zum neuen Jahrtausend war der FCS zurück in der 2.Bundesliga. Als Aufsteiger belegte man dabei in der ersten Saison einen beachtlichen achten Platz. Während der Saison wechselte Trainer Toppmöller in die Bundesliga und der FCS kam in der Folge kaum zu Kontinuität. In der Saison 2002/03 konnten van Heesen, Heribert Weber und Tom Dooley den Abstieg in die Regionalliga nicht verhindern. Horst Ehrmanntraut kam nach Saarbrücken. Unter Ehrmanntraut wurde der FCS in der Spielzeit 03/04 Sechster. In der folgenden Saison wurde Ehrmanntraut Entlassen und nach fünf Monaten und der akuten Gefährdung des Aufstieges wieder an Bord geholt. Ehrmanntraut vollzog das kaum vorstellbare und stieg mit der Mannschaft in die 2.Liga auf. Das Entscheidungsspiel im Park gegen Schweinfurt sahen 22.000 Zuschauer und der FCS drehte in einem hochdramatischen Spiel durch Tore von Christian Stuff und Matthias Hagner das Spiele ehe sich Torhüter Peter Eich zur Legende machte. Der Keeper parierte 15 Minuten vor Schluss einen Elfmeter und rettete so den Aufstieg. Zurück in der 2.Liga nahm die Spielzeit einen kuriosen Verlauf. Der FCS legte los wie die Feuerwehr und war nach 20 Spielen Tabellenvierter und in Reichweite zu den Aufstiegsplätzen. Nach einer enormen Talfahrt zitterte man sich am letzten Spieltag durch ein 1:1 gegen Eintracht Trier zum Klassenerhalt. In der zweiten Saison begann der FCS katastrophal und Ehrmanntraut musste schon im August sein Amt abnehmen. Rudi Bommer brachte die Mannschaft zwar wieder auf Kurs doch am Ende reichte es nicht und der erneute Abstieg in die Regionalliga war die Folge. Michael Henke kam nach Saarbrücken und setzte mit einer hochdotierten Mannschaft viel in den Sand. Nach vier Monaten übernahm Philippe, doch auch der Franzose konnte das Ruder nicht herumreißen und der FCS wurde bis in die Oberliga durchgereicht und landete am Tiefpunkt seiner Vereinsgeschichte. In der Oberliga verpasste man einen der ersten vier Plätze und war plötzlich nur noch Fünftklassig. Ein beispielloser Abgang eines Vereins. Ein Mann holte den Verein zurück aus der Versenkung. Dieter Ferner übernahm das Amt des Cheftrainers und führte seine Mannen zur überlegenen Meisterschaft in der Oberliga. Doch damit nicht genug. In der folgenden Saison und der vierklassigen Regionalliga marschierte die Ferner-Elf trotz großer Startschwierigkeiten munter durch und stiegen am Ende in die 3.Liga auf. Nach drei Abstiegen in Folge standen nun zwei Aufstiege in Serie zu Buche. Dieter Ferner, der ehemalige Bundesligakeeper des FCS und über Jahrzehnte in etlichen Funktionen beim FCS tätig wurde nun endgültig zur Legende in Saarbrücken, zur Kultverein, zum Retter. Das Umfeld lag ihm zu Füßen, doch eine Lizenz für die 3.Liga besaß Ferner nicht. Ferner rückte ins zweite Glied und Jürgen Luginger wurde neuer Cheftrainer. Im ersten Drittligajahr erreichte man nach langem Abstiegskampf den sechsten Platz. Es folgten die Plätze 10&11 in den beiden folgenden Spielzeiten.

Die aktuelle Saison dürfte sich im Jubiläumsjahr wieder mit einem Abstieg des FCS beschäftigen. Der Verein bietet viele Aufs und Abs. Aber Garantiert immer Unterhaltung. Der FCS ist Feuer und Flamme, er ist teils sein größter Feind und teils der geilste Club den man sich vorstellen kann. Die Uhren hier ticken anders und bei allem bleibt die Liebe der Fans doch immer bestehen. Denn klar ist:

"Der FCS wird niemals untergehen"

Quelle: https://forum.fcsaarbruecken.de/forum/index.php?thread/1504-121-jahre-1-fc-saarbr%C3%BCcken/

2024-10-09 16:17
Webmaster

SRT und LRF Dateien bei DJI Drohnen – Was ist das?

SRT und LRF Dateien bei DJI Drohnen – Was ist das?

Publiziert von Nils Waldmann

am

Wer eine DJI Drohne verwendet, hat vielleicht bereits bemerkt, dass neben den aufgezeichneten Videos und Fotos noch andere Dateien auf der Speicherkarte landen. Diese Tragen die Endungen .SRT und .LRF. Wir erklären euch, was es damit auf sich hat und ob die Dateien für irgendetwas gut sind.

Ganz klar: Wer mit seiner DJI Drohne unterwegs ist, überträgt am Ende des Flugtages meist die Video und Fotodateien über eine USB-Verbindung oder via Kartenleser von der Speicherkarte oder dem internen Speicher der Drohne.

Doch in manchen Fällen tauchen neben Videos (.MOV oder .MP4) und Standbildern (.JPG oder .DNG) noch zwei weitere Dateiendungen auf: SRT und LRF.

SRT: Interessante Metadaten für eure Videos

Wer sich die Dateien auf der Speicherkarte etwas genauer ansieht, wird feststellen, dass SRT und LRF Dateien nur für Videoaufnahmen erstellt werden. Bei Standbildern gibt es diese zusätzlichen Dateien nicht.

SRT und LRF Dateien bei DJI Drohnen Teaser
Zeit den „komischen“ Extradateien auf den Grund zu gehen.

SRT steht dabei für „SubRip Subtitle“ und ist ein Dateiformat aus dem Videobereich. Es handelt sich also um ein Format, dass eigentlich für Untertitel von Spielfilmen oder Videos verwendet wird und ist keine DJI-Erfindung.

Der Drohnenhersteller macht sich das Format aber zu Nutze, um zusätzliche Informationen zu den aufgenommenen Videos zu speichern, ohne diese direkt in die Videodatei selbst einzubetten.

So lassen sich zusätzliche Informationen zu einer Aufnahme als Untertitel als Overlay im Video anzeigen. Welche Informationen die DJI Drohne dabei abspeichert, ist vom konkreten Modell abhängig.

SRT Metadaten bei der DJI Mavic 3
Bei der Wiedergabe lassen sich die zusätzlichen Infos direkt einblenden.

Bei einer Mavic 3 werden beispielsweise folgenden Informationen pro Bildframe gespeichert:

  • Frame Nummer (FrameCnt)
  • Datum und Uhrzeit der Aufnahme
  • ISO-Einstellung
  • Belichtungszeit
  • Blende
  • EV-Einstellung
  • Farbtemperatur
  • Farbprofil (color_md)
  • Brennweite
  • Position (latitude, longitude)
  • Relative Höhe zum Startpunkt (rel_altitude)

All diese Datenpunkte werden dabei pro Bild-Frame abgespeichert und in die SRT-Datei geschrieben.

Die Dateien sind dabei eigentlich nur speziell formatierte Textdateien. Dem entsprechend kann eine SRT-Datei auch mit jedem beliebigen Texteditor (Notepad, TextEdit, etc) geöffnet und betrachtet werden.

Ein einzelner Eintrag sieht dabei wie folgt aus:

1
00:00:00,000 --> 00:00:00,033
FrameCnt: 1, DiffTime: 33ms
2021-11-04 12:16:49.033
[iso: 100] [shutter: 1/400.0] [fnum: 2.8] [ev: 0] [ct: 5500] [color_md : default] [focal_len: 24.00] [latitude: 48.xxxxx] [longitude: 12.xxxxx] [rel_alt: 17.000 abs_alt: 116608856.000] 

Neben den oben genannten Werten ist eine Reihenfolge (1) sowie die Dauer der Einblendung zu erkennen. Zusätzlich enthält jeder Eintrag Informationen über die Schriftgröße in der die Untertitel eingeblendet werden sollen.

 
 

So könnt ihr die SRT-Daten anzeigen

Eine einfache Möglichkeit die Informationen aus der SRT-Datei für einzelne Videoclips anzuzeigen ist die Verwendung des VLC Videoplayers, den es für diverse Betriebssysteme kostenlos gibt.

Dazu zunächst die eigentliche Videodatei (bei DJI Drohnen immer als .MP4 oder .MOV gespeichert) öffnen. Die Datei kurz anspielen lassen, sodass die Videoinhalte erscheinen.

VLC mit MP4 Datei von der DJI Mavic 3

Danach lässt sich über das Menü unter Subtiles -> Add Subtile File… die dazugehörige SRT-Datei laden. VLC aktiviert den neuen „Untertitel-Track“ dann in der Regel direkt automatisch und die Inhalte werden am unteren Rand des Videos eingeblendet.

SRT Datei mit VLC Videoplayer anzeigen

Sollte das nicht der Fall sein, lässt sich die Datei dann unter „Subtile Track“ aktivieren. Hier steht jedoch nicht der Name der SRT-Datei, sondern so etwas, wie „Track 1“.

Angezeigt werden die Inhalte der SRT-Datei im Übrigen nur, wenn das Video abgespielt wird. Ist der Clip pausiert, erscheinen auch keine Untertitel!

Werbung
DJI_O3AirUnit_770_198

LRF: Downsizing für eure Videos

Bei den Dateien, die die Endung .LRF tragen handelt es sich hingegen um „echte“ Videodateien und nicht nur um Metadaten.

Wofür die Endung genau steht, ist nicht dokumentiert. Es scheint aber so, als hätte DJI diese Bezeichnung selbst gewählt. Für uns liegt „Low Resolution File“ als eine mögliche Bedeutung nahe.

Es handelte sich bei den LRF-Dateien nämlich um komprimierte Versionen der originalen Videos, die mit geringerer Auflösung gespeichert werden.

Eingeführt wurden diese Dateien mit dem „Trimmed Download Feature“ der DJI Fly und DJI Mimo App. In den Apps werden diese Dateien also als Vorschau mit geringeren Details verwendet.

Am Computer oder Mac lassen sich die LRF-Dateien aber nicht direkt abspielen, weil die meisten Player nichts mit der Dateiendung anfangen können. Es gibt hier aber einen simplen Trick: Einfach die Endung .LRF durch .MP4 ersetzen und schon lässt sich die Low-Res-Version eurer Videos auch am PC wiedergeben.

Ein Blick mit dem Analyse-Tool verrät uns auch einige Details zu der Beschaffenheit der LRF-Videos: Es handelt sich um Clips mit einer Auflösung von 1280×720 Pixel (720p), die in H.264 codiert sind. Die Framereate entspricht dabei immer der Framerate des Originalvideos. Wenn ihr als mit 60 fps aufzeichnet, hat auch der LRF-Clip 60 Bilder pro Sekunden.

 
 

Praktisch für WhatsApp, iMessage und Co?

Von den meisten Nutzer wird die LRF-Datei wohl eher nicht verwendet. Dabei kann man sich die Daten beispielsweise für Messenger oder Social Media zu Nutze machen. Einfach die umbenannte LRF-Datei (z.B. in MP4) direkt teilen, wenn es mal nicht so auf die Qualität ankommt. Gerade unter Android lässt sich das mit Bordmitteln schnell erledigen.

Eine andere kreative Nutzung ist die Verwendung der umbemannten LRF-Daten als Proxy-Dateien im Videoschnitt, wenn der Schnittrechner beispielsweise nicht schnell genug ist, um mit den vollwertigen Aufnahmen zu arbeiten.

Deaktiveren lässt sich die Erstellung von LRF-Files leider nicht. Das wünschen sich viele Nutzer, denn je nach Aufnahmequalität, können diese Low-Res-Dateien zwischen 10% und 20% der Kapazität der Speicherkarte in Anspruch nehmen.

LRF und SRT: Wer’s nicht braucht, kann’s löschen

Nachdem ihr nun verstanden habt, was es mit den beiden zusätzlichen Dateien auf sich hat, wird schnell klar: Wer diese Features nicht benötigt, kann die Dateien eigentlich ignorieren und braucht diese gar nicht auf den Rechner zu übertragen.

Unser Tipp: Hebt euch die SRT-Dateien auf, denn die Text-Files brauchen nur wenige Kilobyte Speicherplatz. Die LRF-Videos sind hingegen in nur wenigen Fällen wirklich sinnvoll und kommen bei uns zu 99% direkt in den Papierkorb.

Quelle: https://www.drone-zone.de/srt-und-lrf-dateien-bei-dji-drohnen-was-ist-das/

2025-07-23 13:29
Webmaster

openSUSE

Zur Kategorie

Permissions für Anwendung setzen

Nach einem Update können evtl. bestimmte Rechte nicht mehr stimmen.

Um die Standardrechte bzw. eigene Rechte von /etc/permissions.d zu setzen muss folgendes ausgeführt werden:

   chkstat --system

 

2013-10-29 19:16
Eric Schirra

Wie Systemupgrade bei openSUSE surchführen?

 

Aktuelles System updaten:

zypper ref
zypper up

 

Aktuelle Repos sichern:

cp -Rv /etc/zypp/repos.d /etc/zypp/repos.d.bak

 

Aktuelle Versionsnumer mit neuer Versionsnummer ersetzen (Beispiel):

sed -i 's/15\.1/15\.2/g' /etc/zypp/repos.d/*

 

Repos leeren und aufrischen:

zypper clean -a
zypper ref

 

Upgrade durch führen:

zypper dup -d   <- zuerst nur alle Dateien downloaden!
zypper dup <- nun upgrade wirklich durchführen.
reboot

 

2020-10-10 12:38
Eric Schirra

PulseAudio 4.0 mit Skype

Das löste mein Problem unter openSUSE 13.1 64bit:

zypper in skype-4.2.0.11-suse.i586.rpm

zypper in libpulse0-32bit

 

Außermdem muss Skype mittels einer der beiden Möglichkeiten gestartet werden:

 

1.) /usr/share/applications/skype.desktop ändern:

Änderung der Zeile in: Exec=env PULSE_LATENCY_MSEC=60 skype %U

 

2.) Diekter Start über Konsole:

$ PULSE_LATENCY_MSEC=60 skype

 

 

2013-11-23 11:00
Eric Schirra

Wie systemd restarten?

systemctl daemon-reexec

2014-01-27 17:54
Eric Schirra

openSUSE – Upgrade der Distribution mit einem Skript

 

Erst vor kurzem ist die neueste openSUSE-Distribution herausgekommen und nun will man die Distribution via “zypper dup” upgraden. Die meisten openSUSE-User müssen erstmal nach einer Anleitung im Internet suchen und diese dann Schritt für Schritt durchgehen. Das kann eine einfache oder auch eine komplizierte Angelegenheit werden.

Aus diesem Grund habe ich ein 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.
  • 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.
  • 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.
  • Rückgangig machen der temporäre Modifizierung der zypper Konfiguration.
  • 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 nachzuvollziehen, 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 z.B. 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)
-r/–reset Beginne das Disributionsupgrade von vorne (Die Option bitte vorsichtig verwenden!)
-V Version des Skript anzeigen

 


 

Das Script:

#!/bin/bash

# Copyright (c) 2013-2015, Sebastian Siebert (mail@sebastian-siebert.de)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY SEBASTIAN SIEBERT ''AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL SEBASTIAN SIEBERT BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Changelog:

# Version 1.3 - Add parameter "-ov/--opensuseversion" for forcing upgrade another openSUSE version
# Version 1.2 - Bugfix
# Version 1.1 - /etc/SuSE-release is deprecated, read instead from lsb_release
# Version 1.0 - Initial release

SCRIPT_VERSION="1.3"
OPENSUSE_DOWNLOAD_URL="http://download.opensuse.org/distribution/"

RESET_UPGRADE_PROGRESS="false"
ZYPPER_GLOBAL_OPTION="-v"
FORCE_SUSE_VERSION=""

function OutputUsage() {
echo "Usage : $(basename $0) [options...]"
echo "Options:"
echo " -h/--help this help text"
echo " -n/--non-interactive do not ask anything, use default answers automatically. (zypper option)"
echo " -ov/--opensuseversion VERSION set openSUSE version for distribution upgrade (for example: 13.1)"
echo " -r/--reset start the distribution upgrade from beginning (use this option carefully)"
echo " -V/--version show version number"
}

while [ "$#" -gt "0" ]; do
case $1 in
-h|--help)
OutputUsage
exit 0
;;
-n|--non-interactive)
ZYPPER_GLOBAL_OPTION="${ZYPPER_GLOBAL_OPTION} -n"
shift 1
;;
-r|--reset)
RESET_UPGRADE_PROGRESS="true"
shift 1
;;
-ov|--opensuseversion)
shift 1
FORCE_SUSE_VERSION="$1"
shift 1
;;
-V|--version)
echo -e "$(basename $0) - Version ${SCRIPT_VERSION}\n"
echo "Copyright (c) `date +'%Y'`, Sebastian Siebert (mail@sebastian-siebert.de)"
echo "All rights reserved."
echo "This script is under the modified BSD License (2-clause license)"
exit 0
;;
-*|--*)
echo "Error: Option \"$1\" is unknown"
echo "try '$(basename $0) -h' or '$(basename $0) --help' for more information"
exit 1
;;
esac
done

# Check the size of the console
set -- $(stty size 2> /dev/null || echo 0 0)
LINES=$1
COLUMNS=$2
if [ ${LINES} -eq 0 ]; then
LINES=24
fi
if [ ${COLUMNS} -eq 0 ]; then
COLUMNS=80
fi

print_okay() {
echo -e "\033[${COLUMNS}C\033[15D[\e[1;32m OK \e[0m]"
}
print_failure() {
echo -e "\033[${COLUMNS}C\033[15D[\e[1;31m FAILURE \e[0m]"
}
print_missing() {
echo -e "\033[${COLUMNS}C\033[15D[\e[1;33m MISSING \e[0m]"
}
print_aborted() {
echo -e "\033[${COLUMNS}C\033[15D[\e[1;33m ABORTED \e[0m]"
}

print_pkg_available() {
echo -e "[\e[1;32m AVAILABLE \e[0m]"
}
print_pkg_missing() {
echo -e "[\e[1;31m MISSING \e[0m]"
}

box_full() {
printf '*%.0s' $(seq 1 67)
echo ""
}

box_content() {
echo -n "*"
if [ $# -eq 0 ]; then
printf ' %.0s' $(seq 1 65)
elif [ $# -eq 1 ]; then
RIGHT="$1"
printf ' %.0s' $(seq 1 17)
echo -n "${RIGHT}"
printf ' %.0s' $(seq 1 $[48-${#RIGHT}])
elif [ $# -eq 2 ]; then
LEFT="$1"
RIGHT="$2"
printf ' %.0s' $(seq 1 3)
echo -n "${LEFT}"
printf ' %.0s' $(seq 1 $[14-${#LEFT}])
echo -n "${RIGHT}"
printf ' %.0s' $(seq 1 $[48-${#RIGHT}])
fi
echo "*"
}

load_step() {
if [ ! -f upgrade-opensuse.step ]; then
save_step 0 "Start"
fi
. ./upgrade-opensuse.step
}

set_variable_step() {
echo "$1=\"$2\"" >>upgrade-opensuse.step
}

save_step() {
# $1 = Step number
# $2 = Step reason
echo "STEP_NUMBER=$1" >>upgrade-opensuse.step
echo "STEP_INFO=\"$2\"" >>upgrade-opensuse.step
echo -e "\n#########################################\n" >>upgrade-opensuse.step
}

box_full
box_content
box_content "Script:" "$(basename $0)"
box_content "Version:" "${SCRIPT_VERSION}"
box_content "Written by:" "Sebastian Siebert (mail@sebastian-siebert.de)"
box_content
box_content "Description:" "This script helps you to upgrade openSUSE"
box_content "and logged all upgrade activities."
box_content
box_content "License:" "This script is under the"
box_content "modified BSD License (2-clause license)"
box_content
box_full

echo -n "Check for running this script as root ..."
if [ "$(id -u)" != "0" ]; then
echo -n -e "\n Error: This script needs to run as root!"
print_failure
exit 1
fi
print_okay

if [ "${RESET_UPGRADE_PROGRESS}" = "true" ]; then
echo -n "Reset the distribution upgrade progress ..."
rm upgrade-opensuse.list-new-and-old-config-files
rm upgrade-opensuse.old-packages-output
rm upgrade-opensuse.remove-old-packages-output
rm upgrade-opensuse.step
rm upgrade-opensuse.zypper-dup-output
rm upgrade-opensuse.zypper-reinstall-packages-output
rm upgrade-opensuse.zypper-rm-packages-output
print_okay
fi

load_step

if [ ${STEP_NUMBER} -lt 1 ]; then
echo -n -e "Start the distribution upgrade in 5 seconds (Abort it with CTRL+C)\n"
echo -n -e " 5 ..."
sleep 1s
echo -n -e " 4 ..."
sleep 1s
echo -n -e " 3 ..."
sleep 1s
echo -n -e " 2 ..."
sleep 1s
echo -n -e " 1 ..."
sleep 1s
echo -n -e " GO!\n"
fi

if [ ${STEP_NUMBER} -lt 1 ]; then
echo -n "Check for existing lsb_release ..."
which lsb_release 1>/dev/null 2>&1
if [ $? -ne 0 ]; then
print_missing
echo -n -e "\n missing \"lsb\"-package: try to run \"zypper install lsb\" now\n"
zypper ${ZYPPER_GLOBAL_OPTION} in lsb
if [ $? -ne 0 ]; then
echo -n " Error: zypper could not install the package \"lsb\" ..."
print_failure
exit 1
fi
fi
print_okay
save_step 1 "Check lsb_release"
fi

if [ ${STEP_NUMBER} -lt 2 ]; then
echo -n "Get openSUSE Version..."
SUSE_NAME=`lsb_release -d | head -n1 | cut -f2 | cut -f1 -d" "`
SUSE_VERSION=`lsb_release -r | cut -f2`
if [ -n "${SUSE_NAME}" -a -n "${SUSE_VERSION}" ]; then
echo -n -e "\n ${SUSE_NAME} ${SUSE_VERSION}"
print_okay
else
echo -n -e "\n No openSUSE Version found!"
print_aborted
exit
fi
set_variable_step "SUSE_NAME" "${SUSE_NAME}"
set_variable_step "SUSE_VERSION" "${SUSE_VERSION}"
save_step 2 "openSUSE Version"
fi

if [ ${STEP_NUMBER} -lt 3 ]; then
echo -n "Check internet connection to ${OPENSUSE_DOWNLOAD_URL} ..."
curl --progress-bar -s --retry 10 --connect-timeout 5 -f ${OPENSUSE_DOWNLOAD_URL} >/dev/null
if [ $? -ne 0 ]; then
echo -n -e "\n Error: Internet connection is not available!"
print_failure
exit 1
fi
save_step 3 "Internet connection"
print_okay
fi

if [ ${STEP_NUMBER} -lt 4 ]; then
if [ -n "${FORCE_SUSE_VERSION}" ]; then
echo -n "Forcing openSUSE version:"
SUSE_VERSION_LATEST="${FORCE_SUSE_VERSION}"
echo -n -e "\n ${SUSE_NAME} ${SUSE_VERSION_LATEST}"
else
echo -n "Try to figure out the latest openSUSE Version ..."
SUSE_VERSION_LATEST=`curl -s -f --list-only ${OPENSUSE_DOWNLOAD_URL}/openSUSE-current/iso/ 2>/dev/null | sed -n -e 's/.*openSUSE-\([0-9]*\.[0-9]*\)-DVD-x86_64.iso<.*/\1/mp'`
echo -n -e "\n Latest openSUSE Version: ${SUSE_VERSION_LATEST}"
fi
set_variable_step "SUSE_VERSION_LATEST" "${SUSE_VERSION_LATEST}"
save_step 4 "Latest openSUSE Version"
print_okay
fi

if [ "${SUSE_VERSION}" = "${SUSE_VERSION_LATEST}" ]; then
echo -n -e "This is already the latest openSUSE version!"
print_aborted
exit 1
fi

if [ ${STEP_NUMBER} -lt 5 ]; then
CURRENT_DATE=`date '+%Y%m%d'`
echo -n "Create a tarball backup etc_${CURRENT_DATE}.tar.bz2 from /etc ..."
tar -cjSP --numeric-owner --atime-preserve -f etc_${CURRENT_DATE}.tar.bz2 /etc
if [ $? -ne 0 ]; then
echo -n -e "\n Error: Can not create a backup!"
print_failure
exit 1
fi
save_step 5 "Create a tarball backup etc_${CURRENT_DATE}.tar.bz2 from /etc"
print_okay
fi

if [ ${STEP_NUMBER} -lt 6 ]; then
echo -n -e "Move the directory /etc/zypp/repos.d to /etc/zypp/repos.d.upgrade ...\n"
mv -v /etc/zypp/repos.d /etc/zypp/repos.d.upgrade
if [ $? -ne 0 ]; then
echo -n -e "\n Error: Can not move the directory!"
print_failure
exit 1
fi
save_step 6 "Move the directory /etc/zypp/repos.d to /etc/zypp/repos.d.upgrade"
print_okay
fi

if [ ${STEP_NUMBER} -lt 7 ]; then
echo -n -e "Create new directory /etc/zypp/repos.d ...\n"
mkdir -v /etc/zypp/repos.d
if [ $? -ne 0 ]; then
echo -n -e "\n Error: Can not create the directory!"
print_failure
exit 1
fi
save_step 7 "Create new directory /etc/zypp/repos.d"
print_okay
fi

if [ ${STEP_NUMBER} -lt 8 ]; then
echo -n -e "Add new openSUSE standard repositories ...\n"

zypper --gpg-auto-import-keys ${ZYPPER_GLOBAL_OPTION} ar -t yast2 -f -c http://download.opensuse.org/distribution/${SUSE_VERSION_LATEST}/repo/oss/ "openSUSE ${SUSE_VERSION_LATEST} OSS"
if [ $? -ne 0 ]; then
echo -n -e "\n Error: zypper could not add the standard repository! [openSUSE ${SUSE_VERSION_LATEST} OSS]"
print_failure
exit 1
fi

zypper --gpg-auto-import-keys ${ZYPPER_GLOBAL_OPTION} ar -t yast2 -f -c http://download.opensuse.org/distribution/${SUSE_VERSION_LATEST}/repo/non-oss/ "openSUSE ${SUSE_VERSION_LATEST} NON-OSS"
if [ $? -ne 0 ]; then
echo -n -e "\n Error: zypper could not add the standard repository! [openSUSE ${SUSE_VERSION_LATEST} NON-OSS]"
print_failure
exit 1
fi

zypper --gpg-auto-import-keys ${ZYPPER_GLOBAL_OPTION} ar -t rpm-md -f -c http://download.opensuse.org/update/${SUSE_VERSION_LATEST}/ "openSUSE ${SUSE_VERSION_LATEST} OSS Update"
if [ $? -ne 0 ]; then
echo -n -e "\n Error: zypper could not add the standard repository! [openSUSE ${SUSE_VERSION_LATEST} OSS Update]"
print_failure
exit 1
fi

zypper --gpg-auto-import-keys ${ZYPPER_GLOBAL_OPTION} ar -t rpm-md -f -c http://download.opensuse.org/update/${SUSE_VERSION_LATEST}-non-oss/ "openSUSE ${SUSE_VERSION_LATEST} NON-OSS Update"
if [ $? -ne 0 ]; then
echo -n -e "\n Error: zypper could not add the standard repository! [openSUSE ${SUSE_VERSION_LATEST} NON-OSS Update3]"
print_failure
exit 1
fi

zypper ${ZYPPER_GLOBAL_OPTION} clean -a
if [ $? -ne 0 ]; then
echo -n -e "\n Error: zypper could not clean up the repository cache!"
print_failure
exit 1
fi

zypper ${ZYPPER_GLOBAL_OPTION} ref
if [ $? -ne 0 ]; then
echo -n -e "\n Error: zypper could not refresh the repository cache!"
print_failure
exit 1
fi

save_step 8 "Add new openSUSE standard repositories"
print_okay
fi

if [ ${STEP_NUMBER} -lt 9 ]; then
echo -n -e "Upgrade the openSUSE distribution now (The output of zypper is logged into upgrade-opensuse.zypper-dup-output) ...\n"
zypper ${ZYPPER_GLOBAL_OPTION} dup -l 2>&1 | tee upgrade-opensuse.zypper-dup-output
if [ ${PIPESTATUS[0]} -ne 0 ]; then
echo -n -e "\n Error: zypper could not upgrade the openSUSE distribution!"
print_failure
exit 1
fi

save_step 9 "Upgrade the openSUSE distribution"
print_okay
fi

if [ ${STEP_NUMBER} -lt 10 ]; then
echo -n -e "Add back the formerly activated repositories and replace old openSUSE Version in the url ...\n"
IFS_BACKUP="${IFS}"
IFS=$'\n'
for REPOFILE in `grep -rl 'enabled=1' /etc/zypp/repos.d.upgrade | sort`
do
if [ -z `grep -rliE '/distribution/|/update/' ${REPOFILE}` ]; then
echo " Add /etc/zypp/repos.d/`basename ${REPOFILE}`"
cat ${REPOFILE} | sed -e "s/^\(baseurl=.*\)[0-9]\{2,\}\.[0-9]\{1,\}\(.*\)$/\1${SUSE_VERSION_LATEST}\2/g" >/etc/zypp/repos.d/`basename ${REPOFILE}`
fi
done
IFS="${IFS_BACKUP}"

zypper ${ZYPPER_GLOBAL_OPTION} ref
if [ $? -ne 0 ]; then
echo -n -e "\n Error: zypper could not refresh the repository cache!"
print_failure
exit 1
fi

save_step 10 "Add back the formerly activated repositories"
print_okay
fi

if [ ${STEP_NUMBER} -lt 11 ]; then
echo -n -e "Set temporarly zypper setting to allowed vendor change to prevent issues during package update...\n"
cp -p /etc/zypp/zypp.conf /etc/zypp/zypp.conf.orig
sed -i 's/^[#\s]*solver.allowVendorChange.*/solver.allowVendorChange = true/g' /etc/zypp/zypp.conf
save_step 11 "Set temporarly zypper setting to allowed vendor change"
print_okay
fi

if [ ${STEP_NUMBER} -lt 12 ]; then
echo -n -e "Check for old packages and try to reinstall those packages ...\n"
IFS_BACKUP="${IFS}"
IFS=$'\012'
OPENSUSE_MAJOR_VERSION="`lsb_release -r | cut -f2 | cut -d"." -f1`"
OPENSUSE_MINOR_VERSION="`lsb_release -r | cut -f2 | cut -d"." -f2`"
PACKAGE_LIST=""
if [ -f ./upgrade-opensuse.old-packages-output ]; then
rm upgrade-opensuse.old-packages-output
fi
for PACKAGES in `rpm -qa --qf '%{name}#%{version}#%{release}#%{distribution}\n' | sort`
do
PKGDISTRO="`echo "${PACKAGES}" | cut -d'#' -f4`"
if [ -n "`echo "${PKGDISTRO}" | grep -v -E "${OPENSUSE_MAJOR_VERSION}\.${OPENSUSE_MINOR_VERSION}|(none)|openSUSE\:Tumbleweed"`" ]; then
PKGNAME="`echo "${PACKAGES}" | cut -d'#' -f1`"
PKGVERSION="`echo "${PACKAGES}" | cut -d'#' -f2`"
PKGRELEASE="`echo "${PACKAGES}" | cut -d'#' -f3`"
echo " ${PKGNAME}-${PKGVERSION}-${PKGRELEASE} -> ${PKGDISTRO}" | tee -a upgrade-opensuse.old-packages-output
PACKAGE_LIST="${PACKAGE_LIST} ${PKGNAME}"
fi
done
IFS="${IFS_BACKUP}"

zypper ${ZYPPER_GLOBAL_OPTION} in --oldpackage -n -l ${PACKAGE_LIST} 2>&1 | tee upgrade-opensuse.zypper-reinstall-packages-output
if [ ${PIPESTATUS[0]} -ne 0 ]; then
echo -n -e "\n Error: zypper could not reinstall old packages!"
print_failure
exit 1
fi

save_step 12 "Check for old packages and try to reinstall those packages"
print_okay
fi

if [ ${STEP_NUMBER} -lt 13 ]; then
echo -n -e "Restore the zypper setting ...\n"
mv /etc/zypp/zypp.conf.orig /etc/zypp/zypp.conf
save_step 13 "Restore the zypper setting"
print_okay
fi

if [ ${STEP_NUMBER} -lt 14 ]; then
echo -n -e "Check for old packages that no longer exist in the repositories and remove them ...\n"
IFS_BACKUP="${IFS}"
IFS=$'\012'
OPENSUSE_MAJOR_VERSION="`lsb_release -r | cut -f2 | cut -d"." -f1`"
OPENSUSE_MINOR_VERSION="`lsb_release -r | cut -f2 | cut -d"." -f2`"
PACKAGE_LIST=""
if [ -f ./upgrade-opensuse.remove-old-packages-output ]; then
rm upgrade-opensuse.remove-old-packages-output
fi
for PACKAGES in `rpm -qa --qf '%{name}#%{version}#%{release}#%{distribution}\n' | sort`
do
PKGDISTRO="`echo "${PACKAGES}" | cut -d'#' -f4`"
if [ -n "`echo "${PKGDISTRO}" | grep -v -E "${OPENSUSE_MAJOR_VERSION}\.${OPENSUSE_MINOR_VERSION}|(none)|openSUSE\:Tumbleweed"`" ]; then
PKGNAME="`echo "${PACKAGES}" | cut -d'#' -f1`"
PKGVERSION="`echo "${PACKAGES}" | cut -d'#' -f2`"
PKGRELEASE="`echo "${PACKAGES}" | cut -d'#' -f3`"
echo " ${PKGNAME}-${PKGVERSION}-${PKGRELEASE} -> ${PKGDISTRO}" | tee -a upgrade-opensuse.remove-old-packages-output
PACKAGE_LIST="${PACKAGE_LIST} ${PKGNAME}-${PKGVERSION}-${PKGRELEASE}"
fi
done
IFS="${IFS_BACKUP}"

zypper ${ZYPPER_GLOBAL_OPTION} rm --force-resolution ${PACKAGE_LIST} 2>&1 | tee upgrade-opensuse.zypper-rm-packages-output
if [ ${PIPESTATUS[0]} -ne 0 ]; then
echo -n -e "\n Error: zypper could not remove old packages!"
print_failure
exit 1
fi

save_step 14 "Check for old packages that no longer exist in the repositories and remove them"
print_okay
fi

LIST_OLD_CONFIG_FILES=`find /etc -iname "*rpmnew" -o -iname "*rpmsave" | sort`
if [ -n "${LIST_OLD_CONFIG_FILES}" ]; then
echo -n -e "IMPORTANT: Please check manually the new or updated configuration files during distribution upgrade ...\n"
echo -n -e " Remember:\n"
echo -n -e " - *.rpmnew = new configuration file that should be replaced the old configuration file.\n"
echo -n -e " - *.rpmsave = old configuration file that was backed up because the new configuration file was replaced.\n"
echo ""
if [ -f upgrade-opensuse.list-new-and-old-config-files ]; then
rm upgrade-opensuse.list-new-and-old-config-files
fi
for LIST_OLD_CONFIG_FILE in ${LIST_OLD_CONFIG_FILES}
do
echo -n -e " ${LIST_OLD_CONFIG_FILE}\n" | tee -a upgrade-opensuse.list-new-and-old-config-files
done
echo ""
fi

echo -n -e "Finish! Please restart your computer and have a lot of fun! ;-)"
print_okay

 

 

SHA1: 38f9d02bb189bd21853f40c90491d00f8a111229  upgrade-opensuse.sh

 

2020-10-10 12:44
Eric Schirra

Synology NAS Speicher per WebDAVs in openSUSE einbinden

Seit einiger Zeit bin ich ebenfalls, wie schon etliche vor mir, stolzer Besitzer einer Synology DiskStation. Bei mir werkelt ein eher kleineres Teil aus dieser Reihe, nämlich das DS 213j. Aber meine Begeisterung für diese, vereinfacht ausgedrückt Netzwerkfestplatte, kennt keine Grenzen.Ich will mich hier jetzt aber gar nicht zu Einzelheiten dieser DiskStation auslassen. Dafür gibt es etliche spezialisierte Seiten, Blogs und Foren, die das viel besser können.

Aber diese Netzwerk DiskStation hat auch einiges zu bieten, was gerade auch für Linuxer interessant ist. Da wären zum Beispiel, das man die ownCloud darauf betreiben kann und das man den Speicherplatz der Station per NFS und auch per WebDAVs in Linux einbinden kann. Und gerade letzteres finde ich sehr hilfreich, weil man so ( einige Voraussetzungen auf Synology DiskStation müssen erfüllt sein) mit einer verschlüsselte Verbindung übers Internet auf seinen heimatlichen Netzwerkspeicher zugreifen kann, wie auf einem lokalen Laufwerk. Und das ein mal eingerichtet und jederzeit verfügbar.

Was auf der Synology DiskStation für eine Verbindung per WebDAVs ( WebDAVs ist die verschlüsselte Variante von WebDAV ;-) ) konfiguriert sein muss werde ich hier auch nicht im einzelnen erläutern. Das ist recht einfach und die Benutzeroberfläche der DiskStation erklärt das sehr schön selbst und hilft durch alle Schritte die nötig sind, damit die Synology DiskStation auch von außen, vom Internet, erreichbar ist. Einschließlich Tipps für die Konfiguration des Routers.

Ich möchte hier nur den Part auf openSUSE Seite erklären, wie man den Speicherplatz der DiskStation per WebDAVs in KDE einbindet und so z.Bsp. über den Dateimanager Dolphin auf die Daten zugreifen kann.

 

Startet den KDE Dateimanager Dolphin und klickt links unter "Orte" auf "Netzwerk" und dann im rechten Fensterteil auf "Netzwerkordner hinzufügen".

Startet den KDE Dateimanager Dolphin und klickt links unter “Orte” auf “Netzwerk” und dann im rechten Fensterteil auf “Netzwerkordner hinzufügen”.

 

Daraufhin startet der Assistent für Netzwerkordner.

Daraufhin startet der Assistent für Netzwerkordner. WebDAV ist schon ausgewählt und das lassen wir auch so. Einfach auf “weiter” klicken.

 

Hier kommen die notwendigen Informationen rein, um eine Verbindung zum Server und zum persönlichen Account aufzubauen.

Hier kommen die notwendigen Informationen rein, um eine Verbindung zum Server und zum persönlichen Account aufzubauen.

webdav _002

Der “Name” der Verbindung ist frei wählbar. Spielt keine Rolle was da steht. ;-) Der “Benutzer” muss identisch mit einem existierenden Benutzer auf der Synology DiskStation sein. Auch die Schreibweise muss exakt übereinstimmen.

Um eine verschlüsselte Verbindung zu der DiskStation aufzubauen musste man bei den Vorbereitungen auf der Station ein eigenes SSL Zertifikat erstellen. Wenn man dieses Zertifikat nicht beglaubigen lässt ( ich glaube so heißt das ;-[ ) und im oberen Fenster letztendlich auf “Speichern & Verbinden” klickt, wird eben dieses Zertifikat vom System erst mal als unbekannt angemeckert. Die zwei Nachfragen, ob man dem Zertifikat trotzdem vertrauen will und dieses nur ein mal oder dauerhaft akzeptieren will kann man bei einem selbst erstellten Zertifikat ruhig tun. Danach wird die Verbindung zur DiskStation übers Internet erst hergestellt und es erfolgt die Passwortabfrage für den jeweiligen Benutzer.

 

Hier wird erst jetzt das Passwort für den Benutzer der Synology DiskStation abgefragt, dessen Speicherplatz hier ins System eingebunden werden soll.

Hier wird erst jetzt das Passwort für den Benutzer der Synology DiskStation abgefragt, dessen Speicherplatz hier ins System eingebunden werden soll. Diese Abfrage kommt jetzt nur bei der Ersteinrichtung.

 

Das war es eigentlich schon. Jetzt steht die neue Verbindung per WebDavs im Dolphin unter Netzwerk zu Verfügung.

Das war es eigentlich schon.
Jetzt steht die neue Verbindung per WebDAVs im Dolphin unter Netzwerk zu Verfügung.

 

Man kann dieses neue Netzlaufwerk natürlich noch komfortabler im Dolphin unterbringen, indem man es links unter “Orte” mit einträgt. Dazu klickt man den neuen Netzwerkordner einmal an.

 

Jetzt sieht man oben in der Bearbeitungsleiste die gesamte Adresse. Beginnend mit webdavs, danach die Server-URL gefolgt von einem Doppelpunkt und dem Port und dem Benutzernamen. Das alles kopiert man mit der Maus in die Zwischenablage. ( also ganzen Text markieren, rechte Maustaste klicken und kopieren auswählen ;-) )

Jetzt sieht man oben in der Bearbeitungsleiste die gesamte Adresse. Beginnend mit WebDAVs, danach die Server-URL gefolgt von einem Doppelpunkt und dem Port und dem Benutzernamen. Das alles kopiert man mit der Maus in die Zwischenablage. ( also ganzen Text markieren, rechte Maustaste klicken und kopieren auswählen ;-) )

 

Dann mit der rechten Maustaste auf "Orte" klicken.

Dann mit der rechten Maustaste auf “Orte” klicken.

 

Jetzt wird hier ein Name für diese Verknüpfung vergeben. Der ist wieder frei wählbar. Unter diesem Namen wird die WebDav Verbindung dann unter "Orte" im Dolphin zu finden sein. Und bei Ort klickt Ihr mit der rechten Maustaste rein und wählt "Einfügen" Damit fügt Ihr dort die vorher in die Zwischenablage kopierte Adresse ein. Dann wählt Ihr euch noch ein schönes Icon für diese Verbindung aus.  Das untere Häckchen würde ich persönlich raus lassen. Vielleicht ist es noch mal gut wenn man auch von anderen Anwendungen auf diesen Speicher zugreifen kann.

Jetzt wird hier ein Name für diese Verknüpfung vergeben. Der ist wieder frei wählbar. Unter diesem Namen wird die WebDAV Verbindung dann unter “Orte” im Dolphin zu finden sein.
Und bei Ort klickt Ihr mit der rechten Maustaste rein und wählt “Einfügen” Damit fügt Ihr dort die vorher in die Zwischenablage kopierte Adresse ein. Dann wählt Ihr euch noch ein schönes Icon für diese Verbindung aus.
Das untere Häckchen würde ich persönlich raus lassen. Vielleicht ist es noch mal gut wenn man auch von anderen Anwendungen auf diesen Speicher zugreifen kann.

 

Und finish !!!  Da ist der eben per WebDavs eingebundene Speicher der Synology Diskstation. Die Verbindung verschlüsselt übers Internet und ein Mausklick drauf und der Speicher ist wie ein Netzlaufwerk sofort verfügbar.

Und finish !!!
Da ist der eben per WebDAVs eingebundene Speicher der Synology DiskStation. Die Verbindung verschlüsselt übers Internet und ein Mausklick drauf und der Speicher ist wie ein lokales Laufwerk sofort verfügbar.

2014-05-06 18:22
Eric Schirra

openSUSE 13.1 neben Windows 8.1 und mit UEFI

Endlich habe ich ein Gerät, mit dem ich openSUSE neben Windows 8 und mit UEFI Bios und aktivierten Secure Boot testen kann. Aber es gab schon einige Hürden gleich zum Beginn der Installation.

Hardware:

Es handelt sich um ein Toshiba Notebook Qosmio X70-A.

Prozessor: Intel Core i7MQ der vierten Generation

Festplatten: 256 GB SSD und 1,5 TB HDD

Arbeitsspeicher: 16GB

Grafikkarte: NVIDIA GeForce GTX 770M Optimus Technologie

vorinstalliertes OS: Windows 8 64Bit

Als erstes habe ich das openSUSE 13.1 KDE Live Medium 64Bit probiert.

1. Boot von USB

Mit der Taste F12 ruft man bei diesem Notebook das Bootmenü auf. Danach startet openSUSE 13.1 KDE Live sauber bis zum fertigen Desktop durch. Da war ich doch schon etwas beeindruckt. So problemlos hätte ich mir das gar nicht vorgestellt.

2. Installation des Live Mediums

Nachdem der schöne KDE Desktop so gleich nach dem ersten Live Start vor mir erstrahlte, wurde ich mutiger. Also kurzer Hand die Installation aus dem Livebetrieb gestartet. Das lief ebenso problemlos wie vorher der Livestart.
Da es mir wichtig war die Geschwindigkeit der schnelle SSD auch für Linux zu nutzen, habe ich die Linuxpartition / auf die SSD neben die Windowspartition gelegt. Die Partition /home und /swap habe ich dagegen auf die HDD gelegt. Dabei habe ich die /home Partition gleich noch verschlüsselt.
Tja, so ging die Installation erfolgreich zu Ende.
Beim ersten Neustart mit dem installierten System blieb, nach Auswahl von openSUSE im Bootmenü, erstaunlicherweise der Bildschirm dunkel. Nichts, außer ein blinkender Cursor oben links in der Bildschirmecke. Bei weiteren Startversuchen blieb der Start auch mal bei der Meldung ” … grafik interface … ” stehen.

Lösung: Das Problem liegt wohl beim KMS (Kernel Mode Setting) . Wenn der openSUSE Start sich mal wieder an der Stelle verabschiedet hat kann man mit der Tastenkombination “Alt”+”Strg”+”F2″ auf eine andere Konsole wechseln. Dort trifft man dann im Textmodus auf ein Login und muss sich als root und dem dazugehörigen Passwort anmelden. Danach sollte mit Eingabe von “startx” die grafische Oberfläche, sprich der KDE Desktop, starten. Wenn das denn geklappt hat, startet man YaST und wählt links “System” und danach in der rechten Fensterhälfte “Bootloader” . Es geht jetzt hier darum, dem openSUSE Systemstart die Option “nomodeset” mit auf den Weg zu geben. Dazu …

 

YaST starten und in der Rubrik "System" den Bootloader zum Bearbeiten auswählen.

YaST starten und in der Rubrik “System” den Bootloader zum Bearbeiten auswählen.

 

Hier den Button "Bootloader Optionen" anklicken.

Hier den Button “Bootloader Optionen” anklicken.

 

Und hier in der Kernel Befehlszeile die Option "nomodeset" ( ohne Anführungszeichen - wie auf dem Sceenshot ) einfügen.

Und hier in der Kernel Befehlszeile die Option “nomodeset” ( ohne Anführungszeichen – wie auf dem Sceenshot ) einfügen.

 

Danach startet das installierte openSUSE 13.1 Live KDE sauber bis zum fertigen Desktop.

Einerseits war ich jetzt glücklich, andererseits aber noch nicht zufrieden. Ich bevorzuge die Installation des openSUSE DVD Mediums. Also ran da … ;-)

3. Booten und Installation vom DVD Medium

Wenn man vom openSUSE DVD Medium ( ich habe das ISO wieder auf einem USB Stick benutzt ) bootet bekommt man nach dem Willkommens Bildschirm eigentlich dieses DVD Menü.

 

Bootmenü openSUSE 13.1 DVD 64Bit mit herkömmlichen Bios

Bootmenü openSUSE 13.1 DVD 64Bit mit herkömmlichen Bios

Bei meinem neuen Gerät sah das aber so aus…

Bootmenü openSUSE 13.1 DVD 64 Bit mit UEFI Bios .Da fehlte doch ne ganze Menge.

Bootmenü openSUSE 13.1 DVD 64 Bit mit UEFI Bios .Da fehlte doch ne ganze Menge.

 

Ich konnte also nach dem mir angezeigten DVD Menü nur den Punkt “Installation” wählen”. Gesagt, getan und ab da an blieb der Bildschirm ohne weitere Informationen schwarz. Ich vermutete gleich, dass es wieder ein Problem mit dem KMS war. Wie aber den Rechner ohne KMS starten, wenn mir die Option, die sich sonst wie auf dem ersten Screenshot zu sehen ist, unter “F3 Video Mode” versteckt nicht angeboten wurde.

Ich ging davon aus, dass es mit dem UEFI Bios zusammenhängt, dass mein DVD Menü anders aussieht als bei anderen Rechnern. Denn als ich das gleiche Medium bei einem älteren Notebook mit älterem “normalen” Bios ausprobiert habe, habe ich auch das erwartete DVD Menü angezeigt bekommen.

Lösung:
Wenn ich bei dem Notebook mit UEFI während des angezeigten “abgespeckten” DVD Menüs und ausgewählte Menüpunkt “Installation” die Taste “E” drücke komme ich in den Menübearbeitungsmodus. Hier kann ich die Option “nomodeset” wieder als Startparameter anbringen.

 

Wenn man während des "abgespeckten" DVD Menüs die Taste "E" drückt, kommt man in den Bearbeitungsmodus für dieses Menü.

Wenn man während des “abgespeckten” DVD Menüs die Taste “E” drückt, kommt man in den Bearbeitungsmodus für dieses Menü.

Hier muss man jetzt in der dritten Zeile den die Option “nomodeset” anfügen um den Installationsprozess mit deaktiviertem KMS zu starten.

 

So muss das aussehen. Hinter der Zeile:  linuxefi /boot/x86_64/loader/linux  fügt man ein Leerzeichen ein und schreibt dahinter nomodeset. ( Das letzte Zeichen hinter nomodeset ist KEIN Unterstrich sonder der Cursor. ;-)

So muss das aussehen. Hinter der Zeile:
linuxefi /boot/x86_64/loader/linux fügt man ein Leerzeichen ein und schreibt dahinter nomodeset. ( Das letzte Zeichen hinter nomodeset ist KEIN Unterstrich sonder der Cursor. ;-)

Danach muß man den Vorgang mit der Taste “F10″ abschließen und das kann erneut die Installation aus dem DVD Menü starten, jetzt aber ohne KMS.

Danach klappt die Installation von openSUSE 13.1 DVD auf dem Rechner mit UEFI wie gewohnt.

openSUSE 13.1 DVD 64Bit arbeitet jetzt bei mir auf meinem neuen Toshiba Qosmio neben dem vorinstallierten Windows 8.1 und mit aktiviertem SecureBoot. Bisher funktioniert alles sehr gut. Ich habe ein paar Probleme mit meiner WLAN Verbindung. Sie funktioniert eigentlich sehr gut. Aber nach einigen Minuten fällt der Datendurchsatz zusammen. Dies ist aber ein anderes Thema und da werde ich später drauf eingehen. Die Geschwindigkeit mit Linux ( und auch Windows ;-) ) im Zusammenhang mit der SSD ist enorm. Das mss man selbst erlebt haben. Wenn man versucht zu erklären, wie schnell das alles geht erntet man nur ungläubige Blicke.

2014-05-06 18:21
Eric Schirra

Wo müssen die zonen-files in bind konfiguriert werden?

Dies geschied bei openSUSE in der Datei /etc/sysconfig/named über den paramater NAMED_CONF_INCLUDE_FILES.

 

z.B:

 NAMED_CONF_INCLUDE_FILES="/etc/named.d/localdomain.dehaem.conf /etc/named.d/localdomain.dehaem.1.conf /etc/named.d/tsig"

 

2014-12-13 09:58
Eric Schirra

S2RAM openSUSE_13.2 funktioniert nicht.

adding the following to /usr/lib/pm-utils/defaults

 

  HIBERNATE_RESUME_POST_VIDEO="yes"
  SLEEP_MODULE="kernel"

 

Achtung: noch nicht geprüft!!

2015-01-14 19:53
Eric Schirra

Install Oracle Database 12c On openSUSE 13.2

Dear Unixmen Fans, today we will show you the steps about how to install Oracle Database 12c in openSUSE. Also, this will work on SUSE Linux Enterprise Server too.

About my machine:

Vmware  with 4GB RAM
Linux Opensuse  13.2  64bit
Hostname: opensuse-unixmen

Network:

eno167777 Link encap:Ethernet  HWaddr 00:0C:29:65:7C:EB
          inet addr:192.168.64.130  Bcast:192.168.64.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe65:7ceb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:59537 errors:0 dropped:0 overruns:0 frame:0
          TX packets:54818 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:8441952 (8.0 Mb)  TX bytes:6909698 (6.5 Mb)
          Interrupt:19 Base address:0x2000

1- First update your machine

zupper dup

Accept the license and continue.

2- Add you hostname and ip to /etc/hosts

3- Check if these package has been installed

zypper install libstdc++46-devel libstdc++33 libstdc++33-devel libelf-devel gcc-c++ libaio-devel sysstat unixODBC unixODBC-devel xdpyinfo

4- Add groups

 groupadd -g 502 oinstall
 groupadd  -g 503 dba
 groupadd  -g 504 oper
 groupadd -g 505 asmadmin

5- Create oracle user and add it to following groups

useradd -u 502 -g oinstall -G dba,asmadmin,oper -s /bin/bash -m oracle

6- Set oracle user password

passwd oracle

6.1- Check Oracle user ID

id oracle
 uid=502(oracle) gid=502(oinstall) groups=503(dba),504(oper),505(asmadmin),502(oinstall)

7- Create database installation directory and set the proper rights

 mkdir -p /home/u01/app/oracle/product/12.1.0/dbhome_1
 chown -R oracle:oinstall /home/u01/
 chmod -R 775 /home/u01/

8- Configure the kernel parameters /etc/sysctl.conf

 fs.suid_dumpable = 1
 fs.aio-max-nr = 1048576
 fs.file-max = 6815744
 kernel.shmall = 2097152
 kernel.shmmax = 536870912
 kernel.shmmni = 4096
 # semaphores: semmsl, semmns, semopm, semmni
 kernel.sem = 250 32000 100 128linuxamd64_12102_database_1of2.zip
 net.ipv4.ip_local_port_range = 9000 65500
 net.core.rmem_default=4194304
 net.core.rmem_max=4194304
 net.core.wmem_default=262144
 net.core.wmem_max=1048586

9- Configure limits.conf file   (/etc/security/limits.conf

 oracle              soft    nproc   2047
 oracle              hard    nproc   16384
 oracle              soft    nofile  1024
 oracle              hard    nofile  65536
 oracle              soft    stack   10240

10- Load the new kernel  configuration

/sbin/sysctl -p

11- Go to your folder where you have Oracle database software and extract the zip files

 cd /Downloaded oracle_files/
 unzip linuxamd64_12102_database_1of2.zip
 unzip linuxamd64_12102_database_2of2.zip

Then

chown -R oracle:oinstall database
mv database /home/oracle

11- sudo to oracle user

su - oracle

12- Add installation variables to your bashrc profile

vi .bashrc

and add this:

Oracle Settings
 TMP=/tmp; export TMP
 TMPDIR=$TMP; export TMPDIR
#ORACLE_HOSTNAME=
# export ORACLE_HOSTNAME
 ORACLE_UNQNAME=DB12C; export ORACLE_UNQNAME
 ORACLE_BASE=/home/u01/app/oracle; export ORACLE_BASE
 ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1; export ORACLE_HOME
 ORACLE_SID=DB12C
 export ORACLE_SID
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

save and exit.

13- Integrate this changes with your profile

vi .bash_profile

and add:

 if [ -f ~/.bashrc ]; then
 source ~/.bashrc
 fi

14- Login from Shell/ or from putty or others ssh terminals/tools supporting X11

15- Ensure that DISPLAY has been exported

export   DISPLAY=hotname:0.0
xhost +IP

16- Lets start the installations

cd /home/oracle/database

17- Start the installation

oracle@opensuse-unixmen:~/database> ./runInstaller
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 500 MB.   Actual 6125 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 2047 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
oracle@opensuse-unixmen:~/database> You can find the log of this install session at:
 /home/u01/app/oraInventory/logs/installActions2015-02-11_10-48-20PM.log

oracle1 oracle2 oracle3 oracle4 oracle5 oracle6 oracle7 oracle8 oracle9

This is the output of the commands

opensuse-unixmen:~ # /home/u01/app/oraInventory/orainstRoot.sh
Changing permissions of /home/u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /home/u01/app/oraInventory to oinstall.
The execution of the script is complete.
opensuse-unixmen:~ # /home/u01/app/oracle/product/12.1.0/dbhome_1/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /home/u01/app/oracle/product/12.1.0/dbhome_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.

Click  OK to continue

oracle90

 Make password for SYS and SYSTEM users

oracle91

Completed.

oracle92

Lets make some checks:

Check the Listener

oracle@opensuse-unixmen:~> lsnrctl  status

oracle93

Check the Enterprise manager Console

https://opensuse-unixmen:5500/em

oracle94

oracle95

oracle96

 Done!

2015-02-12 19:02
Eric Schirra

Kernelmodul für NVIDIA automatisch nach kernel-update erstellen lassen bei manueller NVIDIA-Installation

Installiert man den nvidia-treiber manuell mittels des aktuellen TreiberScripts von der NVIDIA-Seite, so muss man dieses Script nach jedem Kernel-Update manuell starten.

Um dies zu automatisieren, muss man an das Script den Parameter -dkms anhängen.

Beispiel:

./NVIDIA-Linux-x86_64-352.63.run -dkms

Nun wird automatisch bei einem Kernelupdate das entsprechende nvidia-Kernelmodul zum aktuellen neuen Kernel neu erstellt.

2016-07-01 13:10
Eric

Fehlermldung bei xtrabackup: InnoDB: Operating system error number 24 in a file operation

Das open-files-limit in der /etc/my.cnf ist zu gering.
Dies erhöhen indem man einen Datei xtrabackup.cnf unter /etc/my.cnf.d erstellt mit folgendem Inhalt:

[mysqld]
open-files-limit = 4096

2016-07-10 11:35
Eric Schirra

RPM macros for SLE12 and openSUSE:Leap

  SLE12:GA SLE12:SP1 SLE12:SP2 Leap 42.1 Leap 42.2
suse_version 1315 1315 1315 1315 1315
sle_version 120000 120100 120200 120100 120200
is_opensuse undefined undefined undefined 1 1

%If 0%{?suse_version} == 1315 &&  0%{?sle_version} == 120100 && 0%{?is_opensuse} == 1
%define _is_leap_42.1
%endif

%If 0%{?suse_version} == 1315 &&  0%{?sle_version} == 120200 && 0%{?is_opensuse} == 1
%define _is_leap_42.2
%endif

You can than use in spec:
%if %{_is_leap_42.1}

2016-07-13 22:47
Eric

IP-Ranges blockieren mit Suse Firewall

 

Zum Blockieren von dubiosen IP-Ranges empfiehlt sich der Einsatz der Firewall.

Andere Mechanismen wie z.B. “hosts.allow/hosts.deny” funktionieren nur teilweise – nicht z.B. bei Apache Webservern und auch nicht bei Suse Linux SSH.

Vorgehensweise:

  1. Aktivierung der Suse Firewall 2 in YAST
  2. “custom scripts” in der Datei /etc/sysconfig/scripts/SuSEfirewall2-custom anpassen
    unter dem Schlüssel fw_custom_before_denyall()— hier der Auszug aus der Datei /etc/sysconfig/scripts/SuSEfirewall2-custom—-
    ….
    fw_custom_before_denyall() { # could also be named “after_forwardmasq()”
    # these are the rules to be loaded after IP forwarding and masquerading
    # but before the logging and deny all section is set by SuSEfirewall2.
    # You can use this hook to prevent the logging of annoying packets.

     

    # Drop following source ranges
    iptables -A INPUT -j DROP -s 61.146.0.0/16
    iptables -A INPUT -j DROP -s 61.174.0.0/16
    iptables -A INPUT -j DROP -s 113.171.0.0/16
    iptables -A INPUT -j DROP -s 116.10.0.0/16
    iptables -A INPUT -j DROP -s 125.76.0.0/16
    iptables -A INPUT -j DROP -s 181.110.0.0/16

  3. In der Datei  /etc/sysconfig/SuSEfirewall2 den Pfad zur custom rule wie folgt aktivieren:
    # This is really an expert option. NO HELP WILL BE GIVEN FOR THIS!
    # READ THE EXAMPLE CUSTOMARY FILE AT /etc/sysconfig/scripts/SuSEfirewall2-custom
    #
    FW_CUSTOMRULES=”/etc/sysconfig/scripts/SuSEfirewall2-custom”
    #FW_CUSTOMRULES=””
  4. Firewall stoppen und wieder starten um neue Rule zu aktivieren!SuSEfirewall2 stop
    SuSEfirewall2 start

Fertig!

Zusätzlich könnte man noch die SSH-Logins und Login-Versuche beschränken auf 3 Stück pro Miniute:

  • iptables -I INPUT -p tcp –dport 22 -i eth0 -m state –state NEW -m recent \
    –set
  • iptables -I INPUT -p tcp –dport 22 -i eth0 -m state –state NEW -m recent \
    –update –seconds 60 –hitcount 3 -j DROP

Quelle: http://dahlmann.biz/wordpress/?p=569

2018-05-09 10:03
Eric

How to repair a broken/unmountable btrfs filesystem

How to repair a broken/unmountable btrfs filesystem

The below are the recommended steps for any major btrfs filesystem issue, especially if its unmountable. Reading dmesg or syslog might help you identify which step you could skip to in order to fix a particular problem, but the initial steps are normally useful regardless as btrfs scrub is a very safe repair tool.

  • Boot to a suitable alternative system, such as a rescue shell, different installation of openSUSE, a liveCD, or an openSUSE installation DVD. The installation DVD for the version of openSUSE you are running is usually a good choice as it will certainly use the same kernel/btrfs version. A recent Tumbleweed disk might be better as it will include newer kernel/btrfs
  • Go to a suitable console and make sure you do the below as root
  • Try to mount your partition to /mnt, just to confirm it's really broken
mount /dev/sda1 /mnt
  • If it mounts - are you sure it's broken? if Yes - run
btrfs scrub start /mnt

to scrub the system, and

btrfs scrub status /mnt

to monitor it

  • If it doesn't mount, try to scrub the device just in case it works
btrfs scrub start /dev/sda1

and

btrfs scrub status /dev/sda1

to monitor. Once complete, try mounting, if yes, you're fixed.

  • If scrubbing is not an option or does not resolve the issue

then instead try mount -o usebackuproot

mount -o usebackuproot /dev/sda1 /mnt
Warning All of the above steps are considered safe and should make no destructive changes to disk. If the above doesn't fix things for you, you can continue with the below steps but the situation is serious enough to justify a bug report, please!
  • Run "btrfs check <device>"
btrfs check /dev/sda1

This isn't going to help, but save the log somewhere, it will be useful for the bug report.

  • Seriously consider running "btrfs restore <device> <somewhereto copy data>"
btrfs restore /dev/sda1 /mnt/usbdrive

This won't fix anything but it will scan the filesystem and recover everything it can to the mounted device. This especially useful if your btrfs issues are actually caused by failing hardware and not btrfs fault.

  • Run "btrfs rescue super-recover <device>"
btrfs rescue super-recover /dev/sda1

Then try to mount the device normally. If it works, stop going.

  • Run "btrfs rescue zero-log <device>"
btrfs rescue zero-log /dev/sda1

Then try to mount the device normally. If it works, stop going.

  • Run "btrfs rescue chunk-recover <device>"
btrfs rescue chunk-recover /dev/sda1"

This will take a LONG while. Then try to mount the device normally. If it works, stop going.

  • If you didn't run it earlier, be sure to now run "btrfs restore <device> <somewhere to copy data>"
btrfs restore /dev/sda1 /mnt/usbdrive
  • Failure to use btrfs restore at this point but continuing to attempt repairs means you are at a very high risk of data loss. It is advisable to use btrfs restore to recover as much data as possible before continuing.
Warning The above tools had a small chance of making unwelcome changes. Below this point there is a higher risk of damage. Do not continue unless you're prepared to accept the consequences of your choice.
  • Now, ONLY NOW, try btrfsck aka "btrfs check --repair <device>"
btrfs check --repair /dev/sda1

Quelle: How to repair a broken/unmountable btrfs filesystem

2018-06-11 18:33
Webmaster

How disable btrfs quota?

Btrfs quota is very very buggy. It slows down Computer or make him not useable.

Disable quota:

sudo btrfs quota disable /

2018-07-28 15:22
Eric

Recover the Linux root password

Resolution

  1. Boot server from the installation CD.
  2. Then select any installation method or Rescue System.
  3. At the first installation screen when selecting language, press ctrl-alt-f2 to open a virtual console.

    Note: If you selected Rescue System, select your keyboard language and then a Rescue Login prompt should appear. Login as root.

  4. Type
    fdisk -l
    to list the partitions. Locate the Linux root partition.
  5. Type
    mount /dev/sda4 /mnt
    (replace sda4 with the device name for the Linux root partition identified in the previous step).
  6. Run
    mount -o bind /dev /mnt/dev
    to make the device files available (this is needed for access to the urandom device which may be used by the passwd command below).
  7. Enter
    chroot /mnt
  8. Now enter
    passwd root
    and reset the root password.
  9. Type
    exit
    to leave the chroot environment.
  10. Reboot the system.

2018-12-24 09:11
Webmaster

Remote Administration (VNC) erlauben

Achtung:

Es muss der Displaymanager umgestellt werde, da die Remoteadministration mittels dem Standarddisplaymanager sddm nicht funktioniert.

Listet verfügbare Displaymanager auf:

update-alternatives --list default-displaymanager

Lässt den Displaymanager ändern:

update-alternatives --config default-displaymanager

 

 

2020-09-16 17:35
Eric

News in openSUSE Packaging (15.10.2020)

Posted: 2020-10-13 12:24:16 +0000.

If you are interested in openSUSE, sooner or later you will probably learn how packages and specfiles work. But packaging is not static knowledge that you learn once and are good to go. The rules change over time, new macros are created and old ones are erased from history, new file paths are used and the old ones are forgotten. So how can one keep up with these changes?

In this article, we will serve you with all recent news and important changes in openSUSE packaging on a silver platter. Whether you are a pro package maintainer or just a casual packager who wants to catch up, you will definitely find something you didn’t know here. We promise.

Table of contents

openSUSE macros

%_libexecdir


TL;DR

  • %_libexecdir macro expands to /usr/libexec now (not /usr/lib)

We will start with the most recent change, which is the %_libexecdir macro. In the past, it was a standard practice to store binaries that are not intended to be executed directly by users or shell scripts in the /usr/lib directory. This has been changed with a release of FHS 3.0 that now defines that applications should store these internal binaries in the /usr/libexec directory.

In openSUSE, the first discussions about changing the %_libexecdir macro from /usr/lib to /usr/libexec appeared in fall 2019 but it took several months for all affected packages to be fixed and the change to be adopted. It was fully merged in TW 0825 in August 2020.

Please note, openSUSE Leap distributions, including upcoming Leap 15.3, still expand %_libexecdir to the old /usr/lib.

systemd macros


TL;DR

  • Use %{?systemd_ordering} instead of %{?systemd_requires}
  • Use pkgconfig(libsystemd) instead of pkgconfig(systemd-devel)
  • BuildRequires: systemd-rpm-macros is not needed

In the past, you’ve been told that if your package uses systemd, you should just add the following lines to your spec file and you are good to go:

BuildRequires: systemd-rpm-macros
%{?systemd_requires}

Times are changing, though, and modern times require a bit of a different approach, especially if you want your package to be ready for inclusion inside a container. To explain it, we need to know what the %{?systemd_requires} macro looks like:

$ rpm --eval %{?systemd_requires}

Requires(pre): systemd 
Requires(post): systemd 
Requires(preun): systemd 
Requires(postun): systemd 

This creates a hard dependency on systemd. In the case of containers, this can be counterproductive as we don’t want to force systemd to be included when it’s not needed. That’s why the %{?systemd_ordering} macro started being used instead:

$ rpm --eval %{?systemd_ordering}

OrderWithRequires(post): systemd 
OrderWithRequires(preun): systemd 
OrderWithRequires(postun): systemd 

OrderWithRequires is similar to the Requires tag but it doesn’t generate actual dependencies. It just supplies ordering hints for calculating the transaction order, but only if the package is present in the same transaction. In the case of systemd it means that if you need systemd to be installed early in the transaction (e.g. creating an installation), this will ensure that it’s ordered early.

Unless you need to explicitly call the systemctl command from the specfile (which you probably don’t because of the %service_* macros that can deal with it), you shouldn’t use %{?systemd_requires} anymore.

Also note, that systemd-rpm-macros has been required by the rpm package for some time, so it’s not necessary to explicitly require it. You can safely omit it unless you are afraid that rpm will drop it in the future, which is highly unlikely.

The last is the BuildRequires, this is needed in cases where your package needs to link against systemd libraries. In this case, you should use:

BuildRequires: pkgconfig(libsystemd)

instead of the older

BuildRequires: pkgconfig(systemd-devel)

as the new variant can help to shorten the build chain in OBS.

Cross-distribution macros


TL;DR

  • %leap_version macro is deprecated
  • See this table for all distribution macros and their values for specific distros

Commonly, you want to build your package for multiple target distributions. But if you want to support both bleeding-edge Tumbleweed and Leap or SLE, you need to adjust your specfile accordingly. That is why you need to know the distribution version macros.

The best source of information is the table on the openSUSE wiki that will show you the values of these distribution macros for every SLE/openSUSE version. If you want examples on how to identify a specific distro, see this table.

The biggest change between Leap 42 (SLE-12) and Leap 15 (SLE-15) is that %leap_version macro is deprecated. If you want to address e.g. openSUSE Leap 15.2, you should use:

%if 0%{?sle_version} == 150200 && 0%{?is_opensuse}

As you can see, to distinguish specific Leap minor versions, the %sle_version macro is used. The value of %sle_version is %nil in Tumbleweed as it’s not based on SLE.

If you want to identify SLE-15-SP2, you just negate the %is_opensuse macro:

%if 0%{?sle_version} == 150200 && !0%{?is_opensuse}

The current Tumbleweed release (which is changing, obviously) can be identified via:

%if 0%{?suse_version} > 1500

In general, if you want to show the value of these macros on your system, you can do it via rpm --eval macro:

$ rpm --eval %suse_version 
1550

Deprecated macros


TL;DR

These macros are deprecated

  • %install_info / %install_info_delete
  • %desktop_database_post / %desktop_database_postun
  • %icon_theme_cache_post / %icon_theme_cache_postun
  • %glib2_gsettings_schema
  • %make_jobs (is now known as %cmake_build or %make_build)

If you have been interested in packaging for some time, you probably learned a lot of macros. The bad thing is that some of them shouldn’t be used anymore. In this section, we will cover the most common of them.

Database/cache updating macros

The biggest group of deprecated macros is probably those that called commands for updating databases and caches when new files appeared in specific directory:

  • %install_info / %install_info_delete
    • update info/dir entries
  • %desktop_database_post / %desktop_database_postun
    • update desktop database cache when .desktop files is added/removed to/from /usr/share/applications
  • %icon_theme_cache_post / %icon_theme_cache_postun
    • update the icon cache when icon is added to /usr/share/icons
  • %glib2_gsettings_schema
    • compile schemas installed to /usr/share/glib-2.0/schemas

For example, in the past whenever you installed a new .desktop file in your package, you should have called:

%post
%desktop_database_post

%postun
%desktop_database_postun

Since 2017, these macros have started being replaced with file triggers, which is a new feature of RPM 4.13. See File triggers section for more info.

%make_jobs

The %make_jobs macro was initially used in cmake packaging, but was later adopted in a number of other packages, confusingly sometimes with a slightly different definition. To make matters more confusing it also ended up being more complex than the expected /usr/bin/make -jX. Because of this and to bring the macro more inline with other macros such as meson’s, %make_jobs has been replaced with %cmake_build when using cmake and %make_build for all other usages.

In the past, you called: %cmake, %make_jobs, and %cmake_install.

Now it’s more coherent and you call: %cmake, %cmake_build, and %cmake_install when using cmake and just replace %make_jobs with %make_build in other cases.

For completeness, we will add that the naming is also nicely aligned with the meson and automake macros, that are:

%meson, %meson_build, and %meson_install

or

%configure, %make_build, and %make_install.

The %make_jobs macro is still provided by KDE Framework kf5-filesystem package and is used by about 250 Factory packages, but its use is being phased out.

Paths and Tags

Configuration files in /etc and /usr/etc


TL;DR

  • /usr/etc will be the new directory for the distribution provided configuration files
  • /etc directory will contain configuration files changed by an administrator

Historically, configuration files were always installed in the /etc directory. Then if you edited this configuration file and updated the package, you often ended up with .rpmsave or .rpmnew extra files that you had to solve manually.

Due to this suboptimal situation and mainly because of the need to fulfill new requirements of transactional updates (atomic updates), the handling of configuration files had to be changed.

The new solution is to separate distribution provided configuration (/usr/etc) that is not modifiable and host-specific configuration changed by admins (/etc).

This change of course requires a lot of work. First, the applications per se need to be adjusted to read the configuration from multiple locations rather than just good old /etc and there are of course a lot of packaging changes needed as well. There are 3 variants of how to implement the change within packaging and you as a packager should choose one that fits the best for your package.

Also, there is a new RPM macro that refers to the /usr/etc location:

%_distconfdir  /usr/etc

Group: tag


TL;DR

  • Group: tag is optional now

Maybe you noticed a wild discussion about removing Group: tag that hit the opensuse-factory mailing list in Fall 2019. It aroused emotions to such an extent that the openSUSE Board had to step in and helped to resolve this conflict.

They decided that including groups in spec files should be optional with the final decision resting with the maintainer.

News in RPM

RPM minor version updates are released approximately once every two years and they always bring lots of interesting news that will make packaging even easier. Sometimes it’s a little harder to put some of these changes into practice as it can mean a lot of work or hundreds of packages or dealing with backward compatibility issues. This is why you should find more information about their current adoption status in openSUSE before you use new features in your packages.

Current SUSE and openSUSE status of rpm package is as follows:

Distribution RPM version
openSUSE:Factory 4.15.1
SLE-15 / openSUSE:Leap:15.* 4.14.1
SLE-12 4.11.2

The following paragraphs present a couple of the most interesting features introduced in recent RPM versions.

File Triggers


TL;DR

  • File trigger is a scriptlet that gets executed whenever a package installs/removes a file in a specific location
  • Used e.g. in Factory for texinfo, glib schemas, mime, icons, and desktop files, so your package doesn’t have to call database/cache updating macros anymore

RPM 4.13 introduced file triggers, rpm scriptlets that get executed whenever a package installs or removes a file in a specific location (and also if a package with the trigger gets installed/removed).

The main advantage of this concept is that a single package introduces a file trigger and it is then automatically applied to all newly installed/reinstalled packages. So, instead of each package carrying a macro for certain post-processing, the code resides in the package implementing the file trigger and is transparently run everywhere.

The trigger types are:

  • filetrigger{in, un, postun}
  • transfiletrigger{in, un, postun}

The *in/*un/*postun scriptlets are executed similarly to regular rpm scriptlets, before package installation/uninstallation/after uninstallation, depending on the variant.

The trans* variants get executed once per transaction, after all the packages with files matching the trigger get processed.

Example (Factory shared-mime-info):

%filetriggerin -- %{_datadir}/mime                                                                                                                                              
export PKGSYSTEM_ENABLE_FSYNC=0
%{_bindir}/update-mime-database "%{_datadir}/mime"

This file trigger will update the mime database right after the installation of a package that contains a file under /usr/share/mime. The file trigger will be executed once for each package (no matter how many files in the package match).

File triggers can easily replace database/cache updating macros (like e.g. %icon_theme_cache_post). This approach has been used in Factory since 2017. File triggers are used for processing icons, mime and desktop files, glib schemas, and others.

You probably haven’t noticed this change at all, as in general having these database/cache updating macros in your specfile doesn’t harm anything now. The change has been made in corresponding packages (texinfo, shared-mime-info, desktop-file-utils, glib2) by adding a file trigger while all these old macros are now expanded to command without action. So you can safely remove them from your specfiles.

%autopatch and %autosetup


TL;DR

  • Use %autopatch to automatically apply all patches in the spec file
  • Use %autosetup to automatically run %setup and %autopatch

The old and classic way to apply patches was:

Patch1:     	openssl-1.1.0-no-html.patch
Patch2:     	openssl-truststore.patch
Patch3:     	openssl-pkgconfig.patch

%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1

With the recent RPM, you can use %autosetup and %autopatch macros to automate source unpacking and patch application. There is no need to specify each patch by name.

%autopatch applies all patches from the spec. The disadvantage is that it’s not natively usable with conditional patches or patches with differing fuzz levels.

Example (Factory openssl-1_1.spec):

Patch1:     	openssl-1.1.0-no-html.patch
Patch2:     	openssl-truststore.patch
Patch3:     	openssl-pkgconfig.patch

%prep
%setup -q
%autopatch -p1 

The -p option controls the patch level passed to the patch program.

The most powerful is the %autosetup macro that combines %setup and %autopatch so that it can unpack the tarball and apply the patchset in one command.

%autosetup accepts virtually the same arguments as %setup except for:

  • -v for verbose source unpacking, the quiet mode is the default, so -q is not applicable
  • -N disables automatic patch application. The patches can be later applied manually using %patch or with %autopatch. It comes in handy in cases where some kind of preprocessing is needed on the upstream sources before applying the patches.
  • -S specifies a VCS to use in the build directory. Supported are for example git, hg, or quilt. The default is patch, where the patches are simply applied in the directory using patch. Setting git will create a git repository within the build directory with each patch represented as a git commit, which can be useful e.g. for bisecting the patches

So the simplest patch application using %autosetup will look like this.

Example (Factory openssl-1_1):

Patch1:     	openssl-1.1.0-no-html.patch
Patch2:     	openssl-truststore.patch
Patch3:     	openssl-pkgconfig.patch

%prep
%autosetup -p1

%patchlist and %sourcelist


TL;DR

  • Use %patchlist section directive for marking a plain list of patches
  • Use %sourcelist section directive for marking a plain list of sources
  • Then use %autosetup instead of %setup and %patch<number>

These are new spec file sections for declaring patches and sources with minimal boilerplate. They’re intended to be used in conjunction with %autopatch or %autosetup.

Example - normal way (Factory openssl-1_1):

Source:     	https://www.%{_rname}.org/source/%{_rname}-%{version}.tar.gz
Source2:    	baselibs.conf
Source3:    	https://www.%{_rname}.org/source/%{_rname}-%{version}.tar.gz.asc
Source4:    	%{_rname}.keyring
Source5:    	showciphers.c

Patch1:     	openssl-1.1.0-no-html.patch
Patch2:     	openssl-truststore.patch
Patch3:     	openssl-pkgconfig.patch

%prep
%autosetup -p1

The files need to be tagged with numbers, so adding a patch in the middle of a series requires renumbering all the consecutive tags.

Example - with %sourcelist/%patchlist:

%sourcelist
https://www.%{_rname}.org/source/%{_rname}-%{version}.tar.gz
baselibs.conf
https://www.%{_rname}.org/source/%{_rname}-%{version}.tar.gz.asc
%{_rname}.keyring
showciphers.c

%patchlist
openssl-1.1.0-no-html.patch
openssl-truststore.patch
openssl-pkgconfig.patch

%prep
%autosetup -p1

Here the source files don’t need any tagging. The patches are then applied by %autopatch in the same order as listed in the section. The disadvantage is that it’s not possible to refer to the sources by %{SOURCE} macros or to apply the patches conditionally.

%elif


TL;DR

  • RPM now supports %elif, %elifos and %elifarch

After 22 years of development, RPM 4.15 finally implemented %elif. It’s now possible to simplify conditions which were only possible with another %if and %else pair.

Example Using %if and %else only (Java:packages/ant):

%if %{with junit}                                                                                                                                                               	 
%description 
This package contains optional JUnit tasks for Apache Ant.

%else
  %if %{with junit5}

%description
This package contains optional JUnit5 tasks for Apache Ant.

  %else

%description
Apache Ant is a Java-based build tool.

  %endif
%endif

Example Using %elif:

%if %{with junit}                                                                                                                                                               	 
%description
This package contains optional JUnit tasks for Apache Ant.

%elif %{with junit5}

%description
This package contains optional JUnit5 tasks for Apache Ant.

%else

%description
Apache Ant is a Java-based build tool.

%endif

The else if versions were implemented also for %ifos (%elifos) and %ifarch (%elifarch).

Boolean dependencies


TL;DR

  • Factory now supports boolean dependency operators that allow rich dependencies
  • Example: Requires: (sles-release or openSUSE-release)

RPM 4.13 introduced support for boolean dependencies (also called “rich dependencies”). These expressions are usable in all dependency tags except Provides. This includes Requires, Recommends, Suggests, Supplements, Enhances, and Conflicts. Boolean expressions are always enclosed with parentheses. The dependency string can contain package names, comparison, and version description.

How does it help? It greatly simplifies conditional dependencies.

Practical example:

Your package needs either of two packages pack1 or pack2 to work. Until recently, there wasn’t an elegant way to express this kind of dependency in RPM.

The idiomatic way was to introduce a new capability, which both pack1 and pack2 would provide, and which can then be required from your package.

Both pack1 and pack2 packages would need adding:

Provides:    pack-capability 	

And your package would require this capability:

Requires:    pack-capability 	

So in order to require one of a set of packages, you had to modify each of them to introduce the new capability. That was a lot of extra effort and might not have always been possible.

Nowadays, using boolean dependencies, you can just simply add

Requires:    (pack1 or pack2)                                                                                                                                                        

to your package and everything will work as expected, no need to touch any other package.

The following boolean operators were introduced in RPM 4.13. Any set of available packages can match the requirements.

  • and
    • all operands must be met
    • Conflicts: (pack1 >= 1.1 and pack2)
  • or
    • one of the operands must be met
    • Requires: (sles-release or openSUSE-release)
    • The package requires (at least one of) sles-release, openSUSE-release
  • if
    • the first operand must be met if the second is fulfilled
    • Requires: (grub2-snapper-plugin if snapper)
  • if-else
    • same as if above, plus requires the third operand to be met if the second one isn’t fulfilled
    • Requires: (subpack1 if pack1 else pack2)

RPM 4.14 added operators that work on single packages. Unlike the operators above, there must be a single package that fulfills all the operands

  • with
    • similar to and, both conditions need to be met
    • BuildRequires: (python3-prometheus_client >= 0.4.0 with python3-prometheus_client &lt; 0.9.0)
    • The python3-prometheus_client must be in the range <0.4.0, 0.9.0)
  • without
    • the first operand needs to be met, the second must not
    • Conflicts: (python2 without python2_split_startup)
  • unless
    • the first operand must be met if the second is not
    • Conflicts: (pack1 unless pack2)
  • unless-else
    • same as unless above, plus requires the third operand to be met if the second isn’t fulfilled
    • Conflicts: (pack1 unless pack2 else pack3)

The operands can be nested. They need to be surrounded by parentheses, except for chains of and or or operators.

Examples:

Recommends: (gdm or lightdm or sddm)
Requires: ((pack1) or (pack2 without func2))

Until recently, Factory only allowed boolean dependencies in Recommends/Suggests (aka soft dependencies), as it would have otherwise caused issues when doing zypper dup from older distros. Now all operators above are supported.

%license


TL;DR

  • Pack license files via %license directive, not %doc

A %license directive was added to RPM in 4.11.0 (2013) but openSUSE and other distributions adopted it later, in 2016. The main reason for it is to allow easy separation of licenses from normal documentation. Before this directive, license texts used to be marked with the %doc directive, that managed copying of the license to the %_defaultdocdir (/usr/share/doc/packages). With %license, it’s nicely separated as is copied to %_defaultlicensedir (/usr/share/licenses).

That’s also useful for limited systems (e.g. containers), which are built without doc files, but still need to ship package licenses for legal reasons.

Example:

%files
%license LICENSE COPYING
%doc NEWS README.SUSE

The license files are annotated in the rpm, which allows a search for the license files of a specific package:

$ rpm -qL sudo
/usr/share/licenses/sudo/LICENSE

OBS

New osc options

The osc command-line tool received several new features as well. Let’s have a quick look at the most interesting changes.

osc maintained –version

New --version option prints versions of the maintained package in each codestream, which is very useful e.g. when you want to find out which codestreams are affected by a specific issue. The only problem is that it’s not very reliable yet - sometimes it prints just “unknown”.

$ osc maintained --version sudo
openSUSE:Leap:15.1:Update/sudo (version: unknown)
openSUSE:Leap:15.2:Update/sudo (version: 1.8.22)

osc request –incoming

New --incoming option for request command shows only requests/reviews where the project is the target.

Example List all incoming request in the new or review state for Base:System project:

$ osc request list Base:System --incoming -s new,review

osc browse

Sometimes it’s just easier to watch the build status or build log in OBS GUI than via osc. With this new option, you can easily open specific packages in your browser. Just run:

$ osc browse [PROJECT [PACKAGE]

If you run it without any parameters, it will open the package in your current working directory.

Delete requests for entire projects

This is not something you want to call every day. But if you need to delete the entire project with all packages inside, you can just call:

$ osc deletereq PROJECT --all

Real names in changelogs

This is a change you probably noticed. If you create a changelog entry via osc vc, it adds not just your email to the changelog entry header but also your full name.

rdiff and diff enhancements

Also, the rdiff subcommand comes with new options. Probably the most useful is rdiff --issues-only that instead of printing the whole diff, shows just a list of fixed (mentioned really) issues (bugs, CVEs, Jiras):

Example osc rdiff --issues-only:

# osc rdiff -c 124 --issues-only openSUSE:Factory/gnutls      
CVE-2020-13777
boo#1171565
boo#1172461
boo#1172506
boo#1172663

More new options were added for the osc diff command. The first is --unexpand that performs a local diff, ignoring linked package sources. The second is diff --meta that performs a diff only on meta files.

osc blame

osc finally comes with a blame command that you probably know from git. It shows who last modified each line of a tracked file.

It uses the same invocation as osc cat:

$ osc blame <file>
$ osc blame <project> <package> <file>

The drawback is that it shows the user who checked in the revision, such as the person who accepted the submission, not its actual author. But it also shows the revision number in the first column, so you can easily show the specific revision with the original author.

Example:

# osc blame openssl-fips-DH_selftest_shared_secret_KAT.patch
[...]
   2 (jsikes       2020-09-17 10:51:27    62) +
   5 (jsikes       2020-09-22 19:07:01    63) +    if ((len = DH_compute_key(shared_secret, dh->pub_key, dh)) == -1)
   2 (jsikes       2020-09-17 10:51:27    64) +        goto err;
   2 (jsikes       2020-09-17 10:51:27    65) +
[...]

Let’s say we’re interested in line 63, where DH_compute_key() is called. It was last changed in revision 5, so we’ll examine that revision:

> osc log -r 5
----------------------------------------------------------------------------
r5 | jsikes | 2020-09-22 17:07:01 | 16a582f1397aa14674261a54c74056ce | unknown | rq227064

Fix a porting bug in openssl-fips-DH_selftest_shared_secret_KAT.patch
----------------------------------------------------------------------------

The change was created by request 227064, so we can finally find the author of the actual code:

$ osc rq show -b 227064
227064  State:accepted   By:jsikes       When:2020-09-22T17:07:07
        submit:          
        From: Request created: vitezslav_cizek -> Request got accepted: jsikes
        Descr: Fix a porting bug in openssl-fips-
               DH_selftest_shared_secret_KAT.patch

You can also blame the meta files and show the author of each line of the meta file, where it shows the author, as the metadata is edited directly.

$ osc meta pkg <project> <package> --blame

Please note that it works on project and package metadata but it doesn’t work on attributes.

osc comment

osc allows you to work with comments on projects, packages, and requests from the command line. That’s particularly useful for writing bots and other automatic handling.

  • osc comment list
    • Prints comments for a project, package, or a request.
  • osc comment create
    • Adds a new top-level comment, or using the -p option, a reply to an existing one.
  • osc comment delete
    • Removes a comment with the given ID.

Examining workers and constraints

osc checkconstraints

When you have a package that has special build constraints, you might be curious about how many OBS workers are able to build it. osc checkconstraints does exactly that.

It can either print the list of matching workers

$ osc checkconstraints LibreOffice:Factory libreoffice openSUSE_Tumbleweed x86_64
Worker     	 
------     	 
x86_64:cloud137:1
x86_64:cloud138:1
x86_64:goat01:1
x86_64:goat01:2
[...]

or even a per-repo summary (when called from a package checkout):

$ osc checkconstraints
Repository            	Arch                  	Worker
----------            	----                  	------
openSUSE_Tumbleweed   	x86_64                	94
openSUSE_Factory_zSystems  s390x                   	18
[...]

osc workerinfo

This command prints out detailed information about the worker’s hardware, which can be useful when searching for proper build constraints.

Example:

$ osc workerinfo x86_64:goat01:1

It will print lamb51's kernel version, CPU flags, amount of CPUs, and available memory and disk space.

Multibuild


TL;DR

  • Multibuild is an OBS feature that allows you to build the same spec file with different flavors (e.g. once with GUI and then without GUI)

multibuild is an OBS feature introduced in OBS 2.8 (2017) that offers the ability to build the same source in the same repo with different flavors. Such a spec file is easier to maintain than separate spec files for each flavor.

The flavors are defined in a _multibuild xml file in the package source directory. In addition to the normal package, each of the specified flavors will be built for each repository and architecture.

Example of a _multibuild file (from Factory python-pbr):

<multibuild>
  <package>test</package>
</multibuild>

Here OBS will build the regular python-pbr package and additionally the test flavored RPM. Users can then distinguish the different flavors in spec using and perform corresponding actions (adjusting BuildRequires, package names/descriptions, turning on additional build switches, etc.).

Here we can see, that an additional flavor is getting built:

$ osc r -r standard -a x86_64
standard         	x86_64 	python-pbr                 	succeeded
standard         	x86_64 	python-pbr:test            	succeeded

Example of spec file usage (python-pbr again):

%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%define psuffix -test
%bcond_without test
%else
%define psuffix %{nil}
%bcond_with test
%endif
Name:       	python-pbr%{psuffix}

First, the spec defines a flavor macro as the value it got from OBS. Then it branches the spec depending on the flavor value. It sets a name suffix for the test flavor and defines a build conditional for easier further handling in the build and install sections.

If you need inspiration for your package, you can have a look at the following packages:

python39, libssh, python-pbr, or glibc.

Oldies


TL;DR

  • PreReq is now Requires(pre)
  • Use /run, not /var/run
  • /bin, /sbin, /lib and /lib64 were merged into their counterpart directories under /usr
  • SysV is dead, use systemd

We realize that the changes described below are very, very, VERY old. But we put this section here anyway as we are still seeing it in some spec files from time to time. So let’s take it quickly.

PreReq → Requires(pre)

PreReq is not used anymore, it was deprecated and remapped to Requires(pre) in RPM 4.8.0 (2010).

/var/run → /run

Since openSUSE 12.2 (2012), /run directory was top-leveled as it was agreed across the distributions, that it doesn’t belong under /var. It’s still symlinked for backward compatibility but you should definitely use /run (%_rundir macro).

/usr Merge

/usr Merge was a big step in the history of all Linux distributions that helped to improve compatibility with other Unixes/Linuxes, GNU build systems or general upstream development.

In short, it aimed to merge and move content from /bin, /sbin, /lib and /lib64 into their counterpart directories under /usr (and creating backward compatibility symbolic links of course). In openSUSE it happened around 2012.

SysV is dead

The only excuse for missing the fact that SysV is dead is just that you’ve been in cryogenic hibernation for the last 10 years. If yes, then it’s the year 2020 and since openSUSE 12.3 (2013) we use systemd.

Automatic tools for cleaning


TL;DR

  • Call spec-cleaner -i mypackage.spec to clean your specfile according to the openSUSE style guide.
  • Call rpmlint mypackage.rpm or inspect the rpmlint report generated after the OBS build for common packaging errors/warnings.

If you read as far as here, you are probably a bit overwhelmed with all these new things in packaging. Maybe you ask yourself how you should remember all of it or more importantly, how you should keep all your maintained packages consistent with all these changes. We have good news for you. There are automated tools for it.

spec-cleaner

spec-cleaner is a tool that cleans the RPM spec file according to the style guide. It can put the lines in the right order, transform hardcoded paths with the correct macros, and mainly replace all old macros with new ones. And it can do much more.

It’s also very easy to use it, just call

$ spec-cleaner -i mypackage.spec

for applying all changes inline directly to your spec file.

If you just want to watch the diff of the changes that spec-cleaner would make, call:

$ spec-cleaner -d mypackage.spec 

rpmlint

Another tool that will help you keep your package in a good shape is rpmlint. It checks common errors in RPM packages and specfiles. It can find file duplicates, check that binaries are in the proper location, keep an eye on correct libraries, systemd, tmpfiles packaging and much more. Inspecting your package from top to bottom, it reports any error or warning.

rpmlint runs automatically during the OBS build so it can fail the whole build if there are serious problems. It works as a tool for enforcing specific standards in packages built within OBS. If you want to run it on your own, call:

$ rpmlint mypackage.rpm

Both spec-cleaner and rpmlint implement the new packaging changes and new rules as soon as possible. But it’s possible that maintainers may miss something. In that case, feel free to report it as an issue on their github.

Acknowledgment

Thanks, Simon Lees, Tomáš Chvátal, and Dominique Leuenberger for suggestions, corrections, and proofreading.


2020-10-15 21:19
Webmaster

jitsi-Meet - Self-Hosting Guide - openSUSE

Self-Hosting Guide - openSUSE

This document describes the steps for a quick Jitsi-Meet installation, paired with a single Videobridge and a single Jicofo on openSUSE Leap 15.2.

Note: Many of the installation steps require root access.

 

Installation

1. Add the OBS repository:
Note: When Jitsi-Meet is merged into openSUSE Factory, this will be obsolete.

zypper addrepo https://download.opensuse.org/repositories/home:/SchoolGuy:/jitsi/openSUSE_Leap_15.2/home:SchoolGuy:jitsi.repo

2. Refresh the repositories:

zypper refresh

3. Install Jitsi-Meet and its dependencies:

zypper install nginx prosody lua51-zlib jitsi-meet jitsi-videobridge jitsi-jicofo

 

optional Add-Ons

  • Install the Jibri Add-On: zypper install jitsi-jibri
  • Install the Jigasi Add-On: zypper install jitsi-jigasi

 

Configuration

The following sections describe how to configure the different packages.
Replace <FQDN> with your domain name and YOURSECRET3 with a strong password.

 

Prosody

  • Open and adjust the Prosody configuration file under /etc/prosody/prosody.cfg.lua:
---------- Server-wide settings ----------
admins = { "focus@auth.<FQDN>" }
cross_domain_bosh = true;
component_ports = { 5347 }
modules_enabled = {
        -- HTTP modules
                "bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
        -- jitsi
                "smacks";
                "mam";
                "lastactivity";
                "offline";
                "pubsub";
                "adhoc";
                "websocket";
                "http_altconnect";
                "compression";
}
  • Create a new configuration file named <FQDN>.cfg.lua in /etc/prosody/conf.avail/ with the following content:
plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/" }

-- As per https://prosody.im/doc/setting_up_bosh#proxying_requests
consider_bosh_secure = true

-- domain mapper options, must at least have domain base set to use the mapper
muc_mapper_domain_base = "<FQDN>";

turncredentials_secret = "YOURSECRET3";

turncredentials = {
  { type = "stun", host = "<FQDN>", port = "3478" },
  { type = "turn", host = "<FQDN>", port = "3478", transport = "udp" },
  --  { type = "turns", host = "<FQDN>", port = "443", transport = "tcp" }
};

VirtualHost "<FQDN>"
    authentication = "anonymous"
    ssl = {
        key = "/var/lib/prosody/<FQDN>.key";
        certificate = "/var/lib/prosody/<FQDN>.crt";
    }
    speakerstats_component = "speakerstats.<FQDN>"
    conference_duration_component = "conferenceduration.<FQDN>"
    modules_enabled = {
        "bosh";
        "pubsub";
        "speakerstats";
        "turncredentials";
        "conference_duration";
    }
    c2s_require_encryption = false

Component "conference.<FQDN>" "muc"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
    }
    admins = { "focus@auth.<FQDN>" }
    muc_room_locking = false
    muc_room_default_public_jids = true

-- internal muc component
Component "internal.auth.<FQDN>" "muc"
    modules_enabled = {
      "ping";
    }
    admins = { "focus@auth.<FQDN>" }
    muc_room_locking = false
    muc_room_default_public_jids = true
    muc_room_cache_size = 1000

Component "jitsi-videobridge.<FQDN>"
    component_secret = "YOURSECRET3"

VirtualHost "auth.<FQDN>"
    ssl = {
        key = "/var/lib/prosody/auth.<FQDN>.key";
        certificate = "/var/lib/prosody/auth.<FQDN>.crt";
    }
    authentication = "internal_plain"

Component "focus.<FQDN>"
    component_secret = "YOURSECRET3"

Component "speakerstats.<FQDN>" "speakerstats_component"
    muc_component = "conference.<FQDN>"

Component "conferenceduration.<FQDN>" "conference_duration_component"
    muc_component = "conference.<FQDN>"
  • Create a symlink for the configuration:
    ln --symbolic /etc/prosody/conf.avail/<FQDN>.cfg.lua /etc/prosody/conf.d/<FQDN>.cfg.lua

  • Create the certificates via prosodyctl cert generate <DOMAIN>.
    The value <DOMAIN> represents the following URLs.

    • auth.<FQDN>
    • conference.<FQDN>
    • conferenceduration.<FQDN>
    • internal.auth.<FQDN>
    • FQDN
    • focus.<FQDN>
    • jitsi-videobridge.<FQDN>
    • callcontrol.<FQDN> Note: This is only needed if you deploy Jigasi
    • recorder.<FQDN> Note: This is only needed if you deploy Jibri
  • /var/lib/prosody/: Symlink all generated *.crt and *.key files to /etc/prosody/certs/.

Note: Please do not link other certificates.

  • Add the certificates to the system keystore:
    • ln --symbolic --force /var/lib/prosody/auth.<FQDN>.crt /usr/local/share/ca-certificates/auth.<FQDN>.crt
    • update-ca-certificates --fresh
  • Create conference focus user: prosodyctl register focus auth.<FQDN> YOURSECRET3

 

Nginx

Edit the file jitsi-meet.conf in /etc/nginx/vhosts.d/ (which was installed along with jitsi-meet) and do the following:

  • Check the server_name value.
  • Check the TLS certificates (Let's Encrypt for production use, Prosody for testing, for example).

Note: If you are using an existing server, please make sure to adjust the websocket and bosh part, too.

 

Jitsi-Meet

  • Go to /srv/jitsi-meet and edit config.js:
var config = {
    hosts: {
        domain: '<FQDN>',
        muc: 'conference.<FQDN>',
        bridge: 'jitsi-videobridge.<FQDN>',
        focus: 'focus.<FQDN>'
    },
    useNicks: false,
    bosh: '//<FQDN>/http-bind',
};

Note: Please be aware that this is the minimal configuration.

 

Jitsi-Videobridge

Note: We use a combination of the new Videobridge configuration and the legacy one with the sip-communicator.properties file. We have to do this because of the STATISTICS_TRANSPORT property.

If we remove org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri from sip-communicator.properties, the videobridge will not work!

  • Go to the directory /etc/jitsi/videobridge
  • Edit the file jitsi-videobridge.conf
    • Set JVB_HOSTNAME to your <FQDN>.
    • Set JVB_SECRET to your own secret.
  • Edit the file application.conf and adjust the values under apis and websockets, especially set a unique ID as muc_nickname with uuidgen for example.
apis {
    xmpp-client {
      configs {
        xmpp-server-1 {
          hostname="localhost"
          domain = "auth.${FQDN}"
          username = "focus"
          password = "YOURSECRET3"
          muc_jids = "JvbBrewery@internal.auth.${FQDN}"
          # The muc_nickname must be unique across all jitsi-videobridge instances
          muc_nickname = "unique-id"
          disable_certificate_verification = true
        }
      }
    }
}
websockets {
  enabled=true
  server-id="default-id"
  domain="${FQDN}"
}

 

Jitsi-Jicofo

  • Go to the directory /etc/jitsi/jicofo
  • Edit the file jitsi-jicofo.conf
    • Set the property JICOFO_HOSTNAME to <FQDN>.
    • Set the property JICOFO_SECRET to the password the Prosody user got in above setup.
    • Set the property JICOFO_AUTH_DOMAIN to auth.<FQDN>.
    • Set the property JICOFO_AUTH_USER to the Prosody user from above setup.
  • Edit the file sip-cmmunicator.properties
    • Set the property org.jitsi.jicofo.BRIDGE_MUC to JvbBrewery@internal.auth.<FQDN>.
    • Set the property org.jitsi.jicofo.jibri.BREWERY to JibriBrewery@internal.auth.<FQDN>.
    • Depending on your cert setup set org.jitsi.jicofo.ALWAYS_TRUST_MODE_ENABLED to true or false.

 

Add-On: Jitsi-Jibri

  • Add to the file /etc/prosody/conf.avail/<FQDN>.cfg.lua the following snippet at the end of the file.
VirtualHost "recorder.<FQDN>"
  modules_enabled = {
    "ping";
  }
  authentication = "internal_plain"
  • Run prosodyctl register jibri auth.<FQDN> YOURSECRET3 and replace YOURSECRET3 with an appropiate one.
  • prosodyctl register recorder recorder.<FQDN> YOURSECRET3 and replace YOURSECRET3 with an appropiate one.
  • Go to the directory /etc/jitsi/jibri and edit the following properties you see listed below. The rest can be left as is.
jibri{
    api{
        environments = [
            {
                xmpp-domain = "<FQDN>"
                control-muc {
                    domain = "internal.<FQDN>"
                }
                control-login {
                    domain = "recorder.<FQDN>"
                    username = "recorder"
                    password = "YOURSECRET3"
                }   
                call-login {
                    domain = "recorder.<FQDN>"
                    username = "recorder"
                    password = "YOURSECRET3"
                }
            }
        ]
    }
}
  • Edit the file /etc/jitsi/jicofo/sip-communicator.properties and add the following properties:
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.<FQDN>
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
  • Edit the file /srv/jitsi-meet/config.js and set the following properties:
fileRecordingsEnabled: true, // If you want to enable file recording
liveStreamingEnabled: true, // If you want to enable live streaming
hiddenDomain: 'recorder.<FQDN>',
  • Edit /srv/jitsi-meet/interface_config.js and make sure the TOOLBAR_BUTTONS array contains the recording and the livestreaming value if you want those features.
TOOLBAR_BUTTONS: [
        'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen',
        'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
        'livestreaming', 'etherpad', 'sharedvideo', 'settings', 'raisehand',
        'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
        'tileview', 'videobackgroundblur', 'download', 'help', 'mute-everyone', 'security'
],

 

Add-On: Jitsi-Jigasi

Note from openSUSE packagers: We've packaged it but we don't have the infrastructure to set up this component. Hence we can't provide a guide for this so far.

 

Services

Now everything should be working. That means you are ready to start everything up:

  1. systemctl start prosody
  2. systemctl start jitsi-videbridge
  3. systemctl start jitsi-jicofo
  4. systemctl start jitsi-jibri (if configured and installed beforehand)
  5. systemctl start jitsi-jigasi (if configured and installed beforehand)
  6. systemctl start nginx

 

Final notes

  • The Jitsi Software has a lot of dependencies and thus we recommend to run this on a dedicated host for Jitsi.
  • Updating Jitsi is crucial to get rid of bugs and updated dependencies with possible security fixes.
  • Although tempted through Chrome: Don't install a full X11 stack like KDE or Gnome for this.
  • Don't mix the rpms or debs with a source installation of the same component.
  • Securely backup your configuration, preferably in a VCS. This saves time and pain when doing rollbacks or dealing with other problems.


Quelle: https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-opensuse

2021-06-08 20:19
Webmaster

Packages für Kodi am PC

Zusätzlich zu kodi selbst sind noch folgende Pakete zu installieren:

  1. kodi.binary-addons
  2. kode.binary-addons-pvr.iptvsimple
  3. kodi.binary-addons-inpustreams.adaptive

Evtl. auch:

  1. kodi.binary-addons-audioencoder.flac
  2. kodi.binary-addons-audioencoder.lame
  3. kodi.binary-addons-imagedecoder.raw
  4. kodi.binary-addons-inputstream.rtmp

2021-07-07 16:36
Webmaster

How to remove product channels in Suse Manager

Quick post about how to remove the products channels in Suse Manager

Delete channels in Suse Manager

There is a way you can add products and their channels in the Suse Manager server using the command line and webpage GUI. But once added it’s not easy to get them removed from the web console. Web console does not provide a direct option to remove product channels from Suse Manager. Also, the command used for adding channel i.e.. mgr-sync also does not support any option to remove channels.

So many of first time Suse Manager administrators stumble upon roadblock on how to remove product channels which are no more needed.

So let’s get started on the process to remove product channels (using command spacewalk-remove-channel) you might have added by mistake on Suse Manager or which are no longer needed and eating up your disk space.

First, you need to list out all the channels on your Suse Manager using mgr-sync list command –

root@kerneltalks # mgr-sync list channels
Available Channels:
 
 
Status:
  - [I] - channel is installed
  - [ ] - channel is not installed, but is available
  - [U] - channel is unavailable
 
[ ] RHEL6-Pool for x86_64 RHEL6 Base x86_64 [rhel6-pool-x86_64]
[I] SLE-Product-HPC-15-Pool for x86_64 SUSE Linux Enterprise High Performance Computing 15 x86_64 [sle-product-hpc-15-pool-x86_64]
    [ ] SLE-Module-Basesystem15-Debuginfo-Pool for x86_64 Basesystem Module 15 x86_64 [sle-module-basesystem15-debuginfo-pool-x86_64-hpc]
    [ ] SLE-Module-Basesystem15-Debuginfo-Updates for x86_64 Basesystem Module 15 x86_64 [sle-module-basesystem15-debuginfo-updates-x86_64-hpc]
    [I] SLE-Module-Basesystem15-Pool for x86_64 Basesystem Module 15 x86_64 [sle-module-basesystem15-pool-x86_64-hpc]
    [I] SLE-Module-Basesystem15-Updates for x86_64 Basesystem Module 15 x86_64 [sle-module-basesystem15-updates-x86_64-hpc]
...

Here let’s consider we need to remove channel sle-product-hpc-15-pool-x86_64. So first you need to remove all the child channels from this base product channel & then you will be able to remove the base channel. If you try to remove parent channel directly without removing child channels you will hit below error –

root@kerneltalks # spacewalk-remove-channel -c  sle-product-hpc-15-pool-x86_64
Error: cannot remove channel sle-product-hpc-15-pool-x86_64: subchannel(s) exist:
                        sle-module-basesystem15-pool-x86_64-hpc
                        sle-module-basesystem15-updates-x86_64-hpc
                        sle-module-devtools15-pool-x86_64-hpc
....                      

You can clearly see child channels to be removed before you try for parent channel. This is also a good way to get a child channel list quickly!

Then go ahead, remove the child channel followed by base one. For example, see below child channel removal output –

root@kerneltalks #  spacewalk-remove-channel -c sle-module-devtools15-pool-x86_64-hpc
Deleting package metadata (204):
                  ________________________________________
Removing:         ######################################## - complete

Repeat the process and remove all child channels one by one. You can use shell loops to get it done quicker. Finally, remove your parent channel, and you are done.

root@kerneltalks #  spacewalk-remove-channel -c sle-product-hpc-15-pool-x86_64
Deleting package metadata (3):
                  ________________________________________
Removing:         ######################################## - complete

Once done you can confirm that channel is no more enabled in webpage console or using mgr-sync list command.

Source: https://kerneltalks.com/package/how-to-remove-product-channels-in-suse-manager/

2022-04-05 14:39
Webmaster

Was tun bei Build-Problemen

Evtl ist eine Mail an folgende Adressen erfolgreich:

mailto:releaseteam@opensuse.org           Releaseteam
mailto:dimstar@opensuse.org                   Dominique Leuenberger

2023-01-06 11:11
Webmaster

Paket baut online im OBS, aber nicht local mit osc

Es kommt vor, dass ein Paket beim bau mittels osc auf dem lokalen PC nicht gebaut werden kann.
Online im OpenSUSE Build service funktioniert der Bau aber.

Dabei erschein beim z.B. eine Memory Fehlermeldung:

RangeError: WebAssembly.Instance(): Out of memory: wasm memory

Das ist im build script begründet welches nur lokal den Speicher begrenzt. Online nicht.
Der Sinn erschließßt sich mir nicht.

Folgende Löung kam von Adam Majer <amajer@suse.com>:

The problem is kind of a hack in the build script.

/usr/lib/build/build

see function setmemorylimit()

and remove the

ulimit -d $limit
echo "Memory limit set to ${limit}KB"

This is kind of this legacy mechanism that is used to prevent the local
build from blowing up and stalling your machine (which doesn't always
work anyway). But, if you run NodeJS with webassembly, it will allocate
a whole 4GB address space for every instance, even if it uses just a few
bytes. So when you run a few of these concurrently, like in the nodejs
unit tests, it will go past the `ulimit` set with the above error.

- Adam

2023-01-26 10:52
Webmaster

In plasma5 midnight commander doesn't exit to current directory anymore

As i describe in https://bugzilla.opensuse.org/show_bug.cgi?id=1203617

This is from the latest Tumbleweed version

in file /etc/bash.bashrc:

if test -s /etc/profile.d/mc.sh
then . /etc/profile.d/mc.sh
elif test -s /usr/share/mc/mc.sh
then . /usr/share/mc/mc.sh
fi

Insert this after:

#
# ksh/ash sometimes do not know
#
test -z "$UID"  && readonly  UID=`_path id -ur 2> /dev/null`
test -z "$EUID" && readonly EUID=`_path id -u  2> /dev/null`

test -s /etc/profile.d/ls.bash && . /etc/profile.d/ls.bash

Please insert this in Leap also.
And mc will work again as expected.

2024-11-27 15:49
Webmaster

Leap16: Verhalten von sudo wieder auf Standardverhalten zurück setzen.

Ab Leap 16 hat SUSE das Standardverhalten von sudo geändert.
Es verlangt nun nicht mehr das Passwort von root, sondern das Passwort des Benutzers.
Was SUSE dazu geritten hat ist absolut nicht verständlich. Für mich wird hier eine Sicherheitsstufe entfernt.

Um das wieder rückgängig zu machen ist folgendes zu tun:

Unter /etc/sudoers.d eine Datei mit folgendem Inhalt erstellen

Defaults        targetpw
ALL                ALL = (ALL) ALL

Ein anschließendes chown root:root auf die erstellte Datei nicht vergessen!

Unter /usr/etc/sudoers.d steht in der Datei  50-wheel-auth-self

Defaults:%wheel !targetpw
%wheel ALL = (root) ALL

 

2025-08-07 11:57
Webmaster

Leap16: 32-bit support für Steam, wine wieder einschalten

Noch eine weitere Schwachsinnsentscheidung von suse auf ihrem Wege um ein Ableger von RedHat/Fedora zu werden.
32-bit ist komplett deaktiviert worden in Leap 16. Dadurch läuft auch kein Steam mehr, da viele ältere Spiele eben 32bit oder gar 16bit sind.

Man kann es zumindest noch wieder teilweiße einschalten.
Entweder durch manuelle Installation von zwei Paketen oder angeblich über das neue opensuse-migration-tool.
Diese Tool soll wohl die beiden anderen Pakete bei der Installation/Migration von Leap 16 installieren.
Was ein schwachsinniges Vorgehen. Hier werden Lösungen für Probleme erstellt, die es vorher überhaupt nicht gab. :-(

Variante 1
$> sudo zypper in grub2-compat-ia32 selinux-policy-targeted-gaming

Variante 2:
$> sudo zypper in opensuse-migration-tool
$> opensuse-migration-tool

Quelle: https://news.opensuse.org/2025/08/04/leap-16-rc/

2025-08-07 12:00
Webmaster

Leap16: Cockpit als Ersatz für Yast

Leap 16  hat Yast eingestampft und statt dessen Cockpit.
Nur ist die Software Cockpit noch nicht mal installiert.
Also wollen wir mal Cockpit installieren. Das ist nämlcih auch nicht ohne Probleme.

A) Installiere Pattern

$> sudo zypper in -t pattern cockpit

- Dann kommt:

Problem: 1: das zu installierende pattern:cockpit-16.0-160000.6.1.x86_64 erfordert 'patterns-cockpit', aber diese Anforderung kann nicht bereitgestellt werden
Nicht installierbare Anbieter: patterns-cockpit-16.0-160000.6.1.x86_64[openSUSE:repo-oss]

 Lösung 1: Deinstallation von busybox-hostname-1.37.0-160000.3.1.noarch
 Lösung 2: pattern:cockpit-16.0-160000.6.1.x86_64 nicht installieren
 Lösung 3: pattern:cockpit-16.0-160000.6.1.x86_64 durch Ignorieren einiger Abhängigkeiten brechen

Wählen Sie aus den obigen Lösungen mittels Nummer oder brechen Sie (a)b [1/2/3/a/d/?] (a): 

Hier habe ich mal Lösung 1 gewählt.

B) Danach muss man den Dienst erstmal starten:

$> sudo systemctl enable --now cockpit.socket

 

C) Falls die Firewall aktiviert ist, muss noch folgendes getan werden damit man über Netz darauf zugreifen kann:

$> firewall-cmd --permanent --zone=public --add-service=cockpit
$> firewall-cmd --reload

 

D) Anmelden

Nun kann man sich unter 
  
   https://localhost:9090/ 
  
oder

   https://IP_ADDRESS_OF_MACHINE:9090/

mit seinem User anmelden.

Allerdings fehlt hier ein Zertifikat.
Sehr kritsch für ein zentrales Configtool welches über das Netzwerk erreichabr ist.
In dem ich auch Passwörter über Netzwerk vergeben kann.

E) Bemerkung

Das soll also der Ersatz für Yast sein. :-(
- Aufgabe eines Alleinstellungsmerkmales.
- Statt dessen ein 0815 Tool welches alle anderen auch haben.
- Nicht installiert.
- Keinerlei Hinweis dass es fehlt und wie man es installiert.
- Mann muss sich über Internet zusammensuchen, wei man es installiert.
- Zum zweiten für manche User schwierig einzurichten. Also gerade für die, für die das Tool sinvoll wäre.
- Fehlendes Zertifikat. Auch kein Hinweis darauf, wie man es erstellt.
- GUI für snapper fehlt in den Repos. Bei Yast gab es das noch.
- Wir sprechen hier von eime Release Kandidat.

Die Neue openSUSE Leap 16 is meiner Meinung nach eine einzige Entäuschung.
Nicht nur der Entfall von Yast.
Auch andere Entscheidungen, wie:
- Nicht funtionierendes Steam, Wine
- Kein normles root Verhhalten mehr. Erster User wird root. :-(
- Keine user-Gruppe mehr. Jeder User bekommt eine eigende Gruppe mit dem Namen seinen Usernamens. Was soll der Mist?
- usw.

Nachtrag:
Nun ist Leap 16 veröffentlicht
Aber alle angeprangerten Missstände bestehen weiterhin.
Das ganze hat also System ist wohl so gewollt. ?

2025-10-04 15:54
Webmaster

KDE

Zur Kategorie

Ausblenden von Bookmarks in KDE-Start-Menü (Kickoff)

Es muss der Eintrag X-KDE-PluginInfo-EnabledByDefault=true in der Datei /usr/share/kde4/services/plasma-runner-bookmarks.desktop

geändert werden in false.

 

Da aber die Datei
/usr/share/kde4/services/plasma-runner-bookmarks.desktop bei einem
Update überschrieben wird, würde ich stattdessen folgendes empfehlen:
- Kopiere diese Datei nach ~/.kde4/share/kde4/services/, entweder mit
dolphin oder mit:

Code:
--------------------
    cp /usr/share/kde4/services/plasma-runner-bookmarks.desktop ~/.kde4/share/kde4/services/
--------------------

- Öffne die neue Datei in einem Texteditor, z.B. kwrite:

Code:
--------------------
    kwrite ~/.kde4/share/kde4/services/plasma-runner-bookmarks.desktop
--------------------

- Suche nach der Zeile "X-KDE-PluginInfo-EnabledByDefault=true" und
ändere sie in:

Code:
--------------------
    X-KDE-PluginInfo-EnabledByDefault=false
--------------------

- Speichern und sicherheitshalber noch "kbuildsycoca4 --noincremental"
aufrufen.

 

2013-10-28 17:19
Eric Schirra

Zugriff auf noch nicht nach KF5 portierte SystemSettings Module.

Manche Einstellungen sind noch nicht komplett nach Plasma 5 bzw. KDE Framework 5 portiert worden.

So um Beispiel die Akonadi-Settings.

Erreichbar sind sie noch über die alte kcmshell4 (kde control modul shell):

kcmshell4 kcm_akonadi

Oder in dem man akonaditray startet und dann über rechte Maustase das gewohnte Konfigurationmenü erreicht.

 

2015-12-13 12:44
Eric Schirra

Unlock_KDE_Wallet_automatically_on_login

KDE Wallet

 

KDE Wallet Manager is a tool to manage the passwords on your KDE Plasma system. By using the KWallet subsystem it not only allows you to keep your own secrets but also to access and manage the passwords of every application that integrates with KWallet.

Contents

Unlock KDE Wallet automatically on login

If your KWallet password is the same as your username password, you can unlock your wallet automatically on login.

For Plasma 4, install the pam_kwallet-gitAUR.

Then edit /etc/pam.d/kde and add the two lines under their corresponding sections:

auth            optional        pam_kwallet.so kdehome=.kde4
session         optional        pam_kwallet.so
Example /etc/pam.d/kde
#%PAM-1.0
auth            include         system-login
auth            optional        pam_kwallet.so kdehome=.kde4 

account         include         system-login

password        include         system-login

session         include         system-login
session         optional        pam_kwallet.so

For Plasma 5, install kwallet-pam package. Then edit your login manager pam file and add the two lines under their corresponding sections:

-auth            optional        pam_kwallet5.so
-session         optional        pam_kwallet5.so auto_start

For LightDM, for example, edit lightdm and lightdm-greeter files:

Example /etc/pam.d/lightdm
#%PAM-1.0
auth            include         system-login
-auth            optional        pam_kwallet5.so

account         include         system-login

password        include         system-login

session         include         system-login
-session         optional        pam_kwallet5.so auto_start

For SDDM, just edit the sddm file like this to get both kwallet4 and kwallet5 to auto-unlock:

Example /etc/pam.d/sddm
auth            include         system-login
auth            optional        pam_kwallet5.so
auth            optional        pam_kwallet.so kdehome=.kde4
account         include         system-login
password        include         system-login
session         include         system-login
session         optional        pam_kwallet5.so auto_start
session         optional        pam_kwallet.so

After restarting your wallet should unlock automatically if your user password is the same as your KWallet password and you use a login manager like KDM.

Note: Currently, pam_kwallet-git / kwallet-pam has at least two limitations: first, it's not compatible with GnuPG keys, so KDE Wallet must use the standard blowfish encryption. Also, the wallet name must be "kdewallet" (that's the default name). If, for some reason, you create a new wallet, you need to use this name (so you will probably need to rename the old wallet too).

Using the KDE Wallet to store ssh keys

First, make sure that you have an SSH agent running. For instructions on how to start and stop ssh-agent on login and logout respectively follow SSH keys#Using KDM.

Install the ksshaskpass package.

Note: If you use KDE4 and run into problems due to ksshaskpass connecting to a second instance of kwallet, try installing ksshaskpass4AUR instead.

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: This conflicts with what is written further below. (Discuss in Talk:KDE Wallet#)

Create an autostart file (KDE4: ~/.kde4/Autostart/ssh-add.sh, KDE Plasma: ~/.config/autostart/ssh-add.sh) with this content:

#!/bin/sh
ssh-add </dev/null

Tango-go-next.pngThis article or section is a candidate for moving to KDE#Autostarting applications.Tango-go-next.png

Notes: General autostarting instructions belong there (Discuss in Talk:KDE Wallet#)

KDE Plasma no longer processes *.sh startup scripts in the autostart directory. There are two methods to fix this.

Method #1: Move ssh-add.sh to the new autostart-scripts directory

Instead of placing the file in ~/.config/autostart/ssh-add.sh, place it in ~/.config/autostart-scripts/ssh-add.sh.

Method #2: Convert ssh-add.sh to a desktop file

You can also create a startup .desktop file ~/.config/autostart/ssh-add.desktop:

[Desktop Entry]
Exec=~/.config/autostart/ssh-add.sh
Icon=system-run
StartupNotify=true
Terminal=false
Type=Application
Tip: The above ssh-add.sh script will only add the default key ~/.ssh/id_rsa. Assuming you have different SSH keys named key1, key2, key3 in ~/.ssh/, you may add them automatically on login by changing the above script to:
#!/bin/sh
ssh-add $HOME/.ssh/key1 $HOME/.ssh/key2 $HOME/.ssh/key3 </dev/null

If you created a desktop file for ssh-add above, reboot. If you created a sh file, make it executable and run it:

Plasma 4

$ chmod +x ~/.kde4/Autostart/ssh-add.sh
$ ~/.kde4/Autostart/ssh-add.sh

Plasma 5

$ chmod +x ~/.config/autostart-scripts/ssh-add.sh
$ ~/.config/autostart-scripts/ssh-add.sh

You also have to set the SSH_ASKPASS environment variable in your /etc/profile or ~/.bash_profile:

export SSH_ASKPASS="/usr/bin/ksshaskpass"

It will ask for your password and unlock your SSH keys. Upon restart your SSH keys should be unlocked once you give your kwallet password.

To add a new key and store the password with kwallet use the following command

$ ssh-add /path/to/new/key </dev/null

and append the key to the list of keys in ~/.kde4/Autostart/ssh-add.sh as explained above to have it unlocked upon providing the kwallet password.

KDE Wallet for Firefox

There is an addon to make Firefox store passwords with KDE Wallet 5 or KDE Wallet 4.

KDE Wallet for Chromium

Chromium has built in wallet integration. To enable it, run Chromium with the --password-store=kwallet or --password-store=detect argument.

See also

 

Source: https://wiki.archlinux.org/index.php/KDE_Wallet#Unlock_KDE_Wallet_automatically_on_login

2016-03-20 23:05
Eric Schirra

Komplettes Deaktivieren von KDE Telemetrie

Es gibt zwei Möglichkeiten:

Deaktivierung auf system level Ebene durch eine config Datei

Whilst telemetry is disabled by default, a user can choose to enable it inside applications.

To force global disabling set

/etc/xdg/KDE/UserFeedback.conf

[UserFeedback]
Enabled=false

 

Dekativierung in Firewall

If that's still not enough, you can also add a firewall rule to block traffic
to telemetry.kde.org, or add an entry into your hosts file pointing to a local
IP address.

2020-11-10 11:18
Eric Schirra

Akonadi dauerhaft deaktivieren

Problem

wenn man nur
akonadictl stop
sendet,
startet Akonadi bei jeder Anforderung wieder neu.
Z.B. während einer Datensicherung soll Akonadi aber durchgängig disabled sein.

Lösung:

entsprechend: http://www.quora.com/How-do-I-remove-akonadi-and-nepomuk-in-KDE-without-removing-KDE

kwriteconfig5 --file ~/.config/akonadi/akonadiserverrc --group QMYSQL --key StartServer false

2023-02-10 12:05
Webmaster

OBS

Zur Kategorie

Löschen eines Repos remote.

Lässt sich eine Projekt, Repo oder Package über die WebGui nicht löschen, da noch Abhängigkeite bestehen, so kann man dies remote tun.

osc meta prj -e -f $PROJECT

z.B.:

osc meta prj -e -f home:ecsos

 

2014-03-28 18:14
Eric Schirra

Versionsnummer eines Projektes herausfinden.

Um die Versionnummer %{?suse_version} für ein spec-File herauszubekommen z.B. folgendes eingeben:

osc meta prjconf openSUSE:Factory | grep suse_version

 

 

2014-11-05 18:00
Eric Schirra

Source mittels osc herrunterladen

Zu erst die Versionsnummer im spec-File ändern.

Danach:

osc service localrun download_files

 

2014-12-07 23:11
Eric Schirra

Request wieder öffnen

osc request reopen -m "download now working" (RequestNummer)

 

2014-12-07 23:13
Eric Schirra

Quilt - a really quick howto

As i regularly look it up from my mailbox. lets post it here.

osc co yourproject/yourpackage
cd yourproject/yourpackage
quilt setup -v *spec
cd yourpackage-*/
quilt push -a # apply old patches
quilt new yourpackage-version_fixbuild.patch
quilt edit src/foo.c
quilt refresh

foo-fixbuild.patch will automatically be created in the parent dir.
if you work on a package which doesnt have a patch yet. you have to remember to
copy the patch from the patch directory to your package directory.

normally i rerun quilt setup once i got an initial patch.
there is also quilt pop so you can remove patches from your working
copy. but the docs have a lot more informations about this.
My .quiltrc file:
# Options passed to GNU diff when generating patches
QUILT_DIFF_OPTS="--show-c-function" 
# QUILT_DIFF_OPTS="" 
# Options passed to GNU patch when applying patches
#QUILT_PATCH_OPTS="--ignore-whitespace --unified-reject" 

# Options to pass to commands (QUILT_${COMMAND}_ARGS)
QUILT_PUSH_ARGS="--color=auto" 
QUILT_DIFF_ARGS="--color=auto" 
QUILT_REFRESH_ARGS="--backup -p0" 
QUILT_PATCH_OPTS="--unified-reject-files --backup" 

For all further please consult the really detailed documentation.

 

2015-02-28 10:03
Eric Schirra

openSUSE:How to detect Tumbleweed?

This tutorial will tell you how to properly detect openSUSE Tumbleweed when building a package targeting multiple openSUSE releases on openSUSE Build Service. This rule of thumb is an advanced tip that requires some basic knowledge about shell scripting. We assume that you have already acheived that knowledge from somewhere else.

 

 

What? Why?

 

openSUSE has about 4 to 6 releases to support at any time spot, eg. for now, 12.3, 13.1, Tumbleweed, Factory are the mandatory ones, SLE_11_SP3 and SLE_11_SP2 are the "support if you like" ones. There're of course differences between those releases, eg. packages' renaming, packages' versions, which are two most annoying problems we may face in packaging.

Normaly, we use the OBS mechanism: %if %{?suse_version} to solve the problems. The "suse_version" RPM macro and its variant "sles_version" look like this inside:

 

$ cat /usr/lib/rpm/suse_macros
%suse_version 1310
%sles_version 0

 

They're just hardcode version numbers.

And one fact is that openSUSE developers only bump that version in openSUSE:Factory. openSUSE Tumbleweed cherry-picks new packages like kernel, GNOME, KDE. RPM is not one of them (suse_macros locates in rpm package). That is, openSUSE Tumbleweed has the same "suse_version" but different packages with the latest openSUSE stable release.

So the problem came that some packages may need special patches or dependencies for Tumbleweed while the mechanism provided by the Build Service can not acheive the aim.

 

Theory

 

1. We link the rpm package ourselves, change the suse_version ourselves, then use:

 

%if %{?suse_version} == "tumbleweed"

 

This method sounds easy that everyone can master, but is complicated in real life:

 

  • You have to submit a new "rpm" to openSUSE Tumbleweed repository, which is really hard to maintain. (Really?)
  • Or you have to link rpm for every repository you work on, and those packages can't be submitted to official openSUSE development repositories, because there without the modified rpm package your work will be invalid.

 

2. We detect "suse_version == 1310" first, then detect specific packages which are different in stable release and Tumbleweed.

 

Examples

 

cinnamon-bluetooth

 

Take "cinnamon-bluetooth" for example:

GNOME upstream removed rfkill functions from gnome-bluetooth in GNOME 3.12, and re-invent the wheels in gnome-settings-daemon. But cinnamon upstream didn't turn their heads to the new codes because Linux Mint is still using GNOME 3.8 even in its latest release. So we have to use two patchs provided by other distro packagers to make it build although the result is not functional.

But openSUSE 13.1 is using GNOME 3.10 while Tumbleweed is using GNOME 3.12, so openSUSE 13.1 builds while Tumbleweed not. We have to apply those patches to Tumbleweed only.

So let's check gnome-bluetooth-devel first, which is pkgconfig(gnome-bluetooth-1.0), a depedency for cinnamon-bluetooth.

 

$ cat %{_libdir}/pkgconfig/gnome-bluetooth-1.0.pc | grep Version | sed 's/Version: //'
3.12.0

 

explanation:

 

  •  %{_libdir}/pkgconfig/gnome-bluetooth-1.0.pc queries its pkgconfig file, which always has a version number in it. (You can download gnome-bluetooth-devel package for Tumbleweed and `unrpm` it to see this file) `cat` means to output the whole file
  • `grep Version` will return the line containing the `Version` string, eg. Version: 3.12.0
  • the `sed 's/<orig>/<replace>/` will remove 'Version:<whitespace>' to none. so you get 3.12.0

 

so we can define a macro like this:

 

%define gnome_bluetooth_version %(cat %{_libdir}/pkgconfig/gnome-bluetooth-1.0.pc | grep Version | sed 's/Version: //')
%define is_tumbleweed %(%if %{?suse_version} == 1310 && %{?gnome_bluetooth_version} == 3.12.0 ; echo 1 || echo 0) 

 

Then use like this:

 

%prep
%setup -q
%if 0%{?if_tumbleweed} == 1
%patch -p1
%endif

 

gpac in packman

 

openSUSE frequently renames xulrunner which makes support for them quite hard.

see:

https://pmbs.links2linux.de/package/view_file/Essentials/gpac/gpac.spec?expand=1&rev=ce1fabced5980e19ac72b3cea1b20897

about how we detect for Tumbleweed. This way we didn't use `cat <pkgconfig file>` but `rpm -q --qf`.

 

 

2015-03-14 18:03
Eric Schirra

Wert von RPM Macro herausfinden?

a quick way of evaluating macros is rpm --eval, e.g.

 

$ rpm --eval '%{_datadir}'

/usr/share

2018-09-17 19:56
Eric Schirra

How can the broken line be found in patch?

1.) Don't you forget the blank new line at the bottom of the patch file?

 

2.) If not, try to apply this patch locally via `cat pathname | patch [-pX]`  and compare rejected files against original ones.

2015-03-26 12:53
Eric Schira

How to create a .patch file?

Möglichkeit 1)

diff -Pdpru Original-Path\ Geänderter-PATH\ > foobar.patch

Dann in spec:

Patch0: foobar.patch

und unter %prep nach %setup

%patch0 -p1 einfügen.

 

Möglichkeit 2):

-⁠ Make  a copy of the file to patch
cp file file.orig

-⁠ Modify the file
vim/⁠nano/⁠... file

-⁠ Create the patch with diff
diff -⁠u file.orig filetopach  > file.patch

und dann auch in spec einfügen.

 

Möglichkeit 3):

Or just let the files be managed by a half-SCM GUILT:   
http://users.suse.com/~agruen/quilt.pdf
http://hans.fugal.net/quilt.pdf
http://www.shakthimaan.com/downloads/glv/quilt-tutorial/quilt-doc.pdf
https://wiki.debian.org/UsingQuilt
https://wiki.openwrt.org/doc/devel/patches

Quick-Tutorial with OBS:
http://nordisch.org/2009/3/20/quilt-a-really-quick-howto

 

 

2016-05-29 20:36
Eric Schira

Textstellen in Dateien ersetzen

find $RPM_BUILD_ROOT%{ap_serverroot}/%{name} -type f | xargs sed -i \

     -e 's:'/config/config.ini.php':/etc/piwik/config.ini.php:g' \
      -e 's:'/config/common.config.ini.php':/etc/piwik/common.config.ini.php:g' \
      -e 's:'/config/global.ini.php':/etc/piwik/global.ini.php:g'

2015-06-13 16:05
Eric Schirra

openSUSE:How to detect Leap?

 

Im Spec am Anfang folgendes einfügen:

%if 0%{?suse_version} == 1315 && 0%{?is_opensuse}
%define is_leap 1
%else
%define is_leap 0
%endif

 

Dann kann in der Abfrage z.B. folgendes benutzt werden:

%if %{is_leap}
...
%endif

oder

%if 0%{?suse_version} == 1320 && !%{is_leap}
...
%endif

 

2015-11-20 00:10
Eric Schirra

Rollback zu einer älteren Revision

Um mittels osc einen Rollback zu einer älteren Revision durchzuführen sind folgende Schritte notwendig:

 

osc sr -r $rev $prj $package $prj -m "revert to $rev"

danach erhält man eine ID und gibt den nächsten Befehl ein.

osc request accept ID

 

2016-03-15 20:48
Eric Schirra

How to submit a maintenance update for the<br />stable openSUSE releases?

Beispiel anhand von phpMyAdmin:

The command workflow is...
  osc mbranch phpMyAdmin
  osc co home:ecsos:branches:OBS_Maintained:phpMyAdmin

Then update both phpMyAdmin.openSUSE_13.2 and
phpMyAdmin.openSUSE_Leap_42.1 to 4.4.15.6 and commit.

Finally, submit
using "osc mr" or something like osc mr . -m "security update see boo#1012271" in the project directory.

osc mr -m "security update see boo#1012271" in home:ecsos:branches:OBS_Maintained:phpMyAdmin.

 

 

 

2022-01-22 11:59
Eric Schirra

GCC6: fatal error: stdlib.h: No such file or directory

If you have at build something like:

/usr/include/c++/6.0.0/cstdlib:75:25: fatal error: stdlib.h: No such file or directory 
#include_next <stdlib.h>
Then insert QMAKE_DEFAULT_INCDIRS= in spec.
%qmake5 -r QMAKE_DEFAULT_INCDIRS= \

2025-02-19 19:32
Eric Schirra

How to detect Leap and his version?

RPM macros for SLE12 and openSUSE:Leap
  SLE12:GA SLE12:SP1 SLE12:SP2 Leap 42.1 Leap 42.2 Tumbleweed
suse_version 1315 1315 1315 1315 1315 1330
sle_version 120000 120100 120200 120100 120200 undefined
is_opensuse undefined undefined undefined 1 1 1

 

In der spec am Anfang folgendes einfügen:

# Is Leap and what version?
%if 0%{?suse_version} == 1315 && 0%{?is_opensuse}
%define is_leap 1
%if 0%{?sle_version} == 120100
%define is_leap_42_1 1
%define is_leap_42_2 0
%endif
%if 0%{?sle_version} == 120200
%define is_leap_42_2 1
%define is_leap_42_1 0
%endif
%else
%define is_leap_42_1 0
%define is_leap_42_2 0
%endif

Dann kann in der Abfrage z.B. folgendes benutzt werden:

%if 0%{?is_leap_42_2}
%patch1 -p1
%else
%if 0%{?is_leap_42_1}
%patch0 -p1
%endif
%endif

oder

%if 0%{?suse_version} > 1320 || 0%{?is_leap_42_2}
# Factory, Leap_42.2
%patch1 -p1
%else
%if 0%{?suse_version} >= 1310 || 0%{?is_leap_42_1}
# 13.1, 13.2, Leap_42.1, Tumbleweed
%patch0 -p1
%endif
%endif

2025-02-19 19:35
Eric

How can i send packages from Factory to maintenance?

Hi,

On 12/12/18 12:41 PM, Eric Schirra wrote:
> But how can i send Factory to maintenance?


Find packages that can receive maintenance updates:

$ osc maintained phpMyAdmin
openSUSE:Backports:SLE-12/phpMyAdmin
openSUSE:Backports:SLE-15:Update/phpMyAdmin
openSUSE:Leap:15.0:Update/phpMyAdmin
openSUSE:Leap:42.3:Update/phpMyAdmin

Check if the simple version update works:

$ osc ls openSUSE:Backports:SLE-12/phpMyAdmin
_link
# -> openSUSE:Backports:SLE-12 phpMyAdmin.8652 (latest)
phpMyAdmin-4.8.3-all-languages.tar.xz
[...]

$ osc ls openSUSE:Leap:42.3:Update/phpMyAdmin
_link
# -> openSUSE:Leap:42.3:Update phpMyAdmin.8652 (latest)
phpMyAdmin-4.8.3-all-languages.tar.xz

So yes that's a straightforward minor version update. Make a maintenance
branch:

$ osc mbranch phpMyAdmin
A working copy of the maintenance branch can be checked out with:

osc co home:AndreasStieger:branches:OBS_Maintained:phpMyAdmin

This prepared a single incident with branched package for each release:

$ osc ls home:AndreasStieger:branches:OBS_Maintained:phpMyAdmin
phpMyAdmin.openSUSE_Backports_SLE-12
phpMyAdmin.openSUSE_Backports_SLE-15_Update
phpMyAdmin.openSUSE_Leap_15.0_Update
phpMyAdmin.openSUSE_Leap_42.3_Update

Then make the update in these packages. Since you already have it, you
can copypac it (-e to expand, and -K to keep the link):

$ osc copypac -e -K \
server:php:applications/phpMyAdmin \
home:AndreasStieger:branches:OBS_Maintained:phpMyAdmin \
phpMyAdmin.openSUSE_Leap_15.0_Update

And do so for the others.

When done (and it's building), submit the whole update:

$ osc mr home:AndreasStieger:branches:OBS_Maintained:phpMyAdmin -m
"security update for phpMyAdmin boo#1119245"


Good luck,

Andreas

--

Andreas Stieger <astieger@suse.de>
Head of Product Security
SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton,
HRB 21284 (AG Nürnberg)

2018-12-17 18:54
Webmaster

Cython < 3

Entweder:

BuildRequires:  %{python_module Cython0}

besser:

BuildRequires: %{python_module Cython >= 0.29 with %python-Cython < 3}

2023-09-03 12:33
Webmaster

OSC versus GIT (Gegenüberstellung altes und neues Paketbauverfahren bei openSUSE)

Nachdem openSUSE vom alten, bewährten und super Tool OSC und OBS zu GIT und GITEA wechselt, soll das hier eine Gegenüberstelluinge der beiden Varianten sein.

OSC GIT
https://build.opensuse.org/ https://src.opensuse.org/
- osc co
   Änderungen durchführen
- osc build
- osc commit
- osc sr
- git clone https://src.opensuse.org/java-packages/jameica.git
- git checkout main
   Änderungen durchführen
- Evtl. git obs meta pull
- osc build oder osc build --alternative-project openSUSE:Leap:16.0
- git add .
- git commit -a -m "Update to x.y.z"
- git pull -r && git push
- osc sr Java:packages jameica openSUSE:Factory

 

TODO: 
osc build --alternative-project openSUSE:Leap:16.0

 

Ohne ssh-agent:

Richard Rahl und Christian Boltz hatten einen anderen Weg gepostet, damit es auch ohne ssh-agent funktioniert

Fügen Sie dies zu Ihrer ~/.ssh/config hinzu:

   Host src.opensuse.org

      User gitea

      IdentityFile ~/.ssh/id_src.opensuse.org

Ersetzen Sie natürlich ~/.ssh/id_src.opensuse.org durch den tatsächlichen Namen von Ihrer SSH-ID-Schlüsseldatei!

 

ssh-agent mit eigenem benahmsten key nutzen. Bei mir opensuse

I can probably also explain why ssh-agent seems to be needed in your 
case (unless you add the above config to ~/.ssh/config).

 

By default, ssh only uses the "usual" key filenames like id_rsa, id_ecdsa 
or id_ed25519 (generally: id_$algorythm)
However, you have a key with non-default filename id_src.opensuse.org.
If you want ssh to use that key, you can
- use   ssh -i ~/.ssh/id_src.opensuse.org gitea@src.opensuse.org
- add the above config sniplet to ~/.ssh/config which basically adds
  "-i ~/.ssh/id_src.opensuse.org" and "getea@" automatically whenever 
  you   ssh src.opensuse.org
- or you explicitely load that key into your ssh-agent ?
 

2025-11-23 15:17
Webmaster

Kolab

Zur Kategorie

Kolab SPAM/HAM

 

Teil 1:

 

Kolab Groupware - Administration Guide

 

Teil 2:

 

Hi Jelle,

unfortunately filtering spam does not work out of the box in Kolab 3.2
but the documentation you are referring is a good starting point.
First you must decide what kind of SPAM/HAM/UNKNOWN_SPAM folders you
like to use; either shared or per user folders.
For my users I use individual folder (each user has its own folders) so
I try to describe it this way.
This process begins with the kolab.conf file where you can set the auto
create folders with the option * autocreate_folders =*
Here's a snippet of my config:
---------snip-----------

'Spam': {
        'annotations': {
        '/private/vendor/kolab/folder-type': "mail.junkemail",
        },
        },
        'Spam/SpamUnknown': {
        'annotations': {
        '/private/vendor/kolab/folder-type': "mail.junkemail",
        },
        },
        'Spam/NoSpam': {
        'annotations': {
        '/private/vendor/kolab/folder-type': "mail.junkemail",
        },
        },
---------snip--------------

So, every time I create a mailbox this folders are also created. I
instruct the users to move unrecognized spam mails to folder SpamUnknown
and false spam mails to NoSpam. Recognized spam is moved via sieve rules
to the *Spam* folder. These folders are used to train spamassassin. I
get later to this.

So far so good. To begin using spamassassin it is important to inject
some spam/ham mails to spammassassin's Bayes database. This is described
here [1].
After you train spamassassin you can check the bayes database with

sa-learn --dump magic

The output should be something like this:
0.000          0          3          0  non-token data: bayes db version
0.000          0       2246          0  non-token data: nspam
0.000          0       4336          0  non-token data: nham
0.000          0     401053          0  non-token data: ntokens
0.000          0  993467899          0  non-token data: oldest atime
0.000          0 1404428730          0  non-token data: newest atime
0.000          0 1392945305          0  non-token data: last journal
sync atime
0.000          0          0          0  non-token data: last expiry atime
0.000          0          0          0  non-token data: last expire
atime delta
0.000          0          0          0  non-token data: last expire
reduction count

I'll post my /etc/mail/spamassassin/local.conf to have a reference

###########begin config ###################
# These values can be overridden by editing ~/.spamassassin/user_prefs.cf
# (see spamassassin(1) for details)

# These should be safe assumptions and allow for simple visual sifting
# without risking lost emails.

required_hits 5

report_safe 0
rewrite_header Subject [SPAM]
score BAYES_99 7.308
add_header all Status _YESNO_, score=_SCORE_ required=_REQD_
tests=_TESTS_ autolearn=_AUTOLEARN_ version=_VERSION_
add_header all Level _STARS(*)_
add_header all Checker-Version SpamAssassin _VERSION_ (_SUBVERSION_) on
_HOSTNAME_
#bayes
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
bayes_file_mode 0600
bayes_path /etc/spamassassin/bayes
bayes_auto_expire 0
bayes_journal_max_size 15000000
bayes_expiry_max_db_size 20000000

# dcc
use_dcc 1
dcc_path /usr/local/bin/dccproc

#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor

#razor
use_razor2 1
razor_config /var/spool/amavisd/razor-agent.conf

# Blacklist


# Whitelist

##############end config########################
Pyzor and razor must be installed separately. There are good
documentation on the net how to do this.

Now it's time to alter the configuration of /etc/amavisd/amavisd.conf
Here are the relevant parts of the config:

##############begin config#####################

#@bypass_virus_checks_maps = (1);  # controls running of anti-virus code
#@bypass_spam_checks_maps  = (1);  # controls running of anti-spam code
# $bypass_decode_parts = 1;         # controls running of
decoders&dearchivers
$mydomain = 'your_primary_domain';
$QUARANTINEDIR = '/var/spool/amavisd/quarantine'; #virus mails are moved
here
$sa_tag_level_deflt  = -10;  # add spam info headers if at, or above
that level
$sa_tag2_level_deflt = 6.2;  # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.9;  # triggers spam evasive actions (e.g.
blocks mail)
$sa_dsn_cutoff_level = 10;   # spam level beyond which a DSN is not sent
$sa_spam_subject_tag = '[SPAM]';
$undecipherable_subject_tag = undef; # this prevents amavisd to tag
encrypted mail with *UNCHECKED* subject
$myhostname = 'FQDN of your server'
$final_virus_destiny      = D_DISCARD;
$final_banned_destiny     = D_BOUNCE;
$final_spam_destiny       = D_PASS;  #!!!  D_DISCARD / D_REJECT
@local_domains_maps = ( ["."] );  # list of all local domains. this is
important if you have a multi-domain setup
##################end config########################

I don't have to mention that you have to restart each service after
changing the config files

Now its time to filter recognized Spam mails to the users folder 'Spam'
Here comes sieve in the game. At the moment each user has to create his
own filter but I wrote a script to automate this step. It needs a lil
bit more tweaking but I'll post it on the list when its done.
You can create the filter based on the subject line [SPAM] or based on
the XPAM flag. Here's my sieve roundcube.script

################begin config######################
# rule:[SPAM]
if header :contains "x-spam-flag" "YES"
{
        fileinto "Spam";
}
##################end config#####################


To wrap it up you can test the spam filter by sending (from an external
account) a spam mail [2]

If everything works as expected you can proceed to the next step:
continuously train spamassassin from each users Spam_Unknown and NoSpam
folder. Therefore I use a very handy script [3]. This script is run via
cron and scans all mailboxes:
##########begin crontab###############

15 2 * * * root /usr/sbin/sa-learn-cyrus

#############end crontab##############

And here are the relevant parts of the config:

###########begin config####################


spam_folder = 'Spam.SpamUnknown'
ham_folder = 'Spam.NoSpam'
remove_spam = yes
remove_ham = no
site_config_path = /etc/mail/spamassassin
bayes_storage = berkely
prefs_file = /etc/mail/spamassassin/local.cf
base_dir = /var/spool/imap
initial_letter = yes # please see config to match your setup
domains = 'example1.com exampl2.com' list all your domains you want to scan
unixhierarchysep = yes # please see config to match your setup
purge_cmd = /usr/lib/cyrus-imapd/ipurge
# Cyrus-IMAPd user
user = cyrus
################end config #################

 

[1] http://docs.kolab.org/administrator-guide/combating-spam.html#preseeding-the-bayes-database-using-spamassassin-public-corpus

[2] https://spamassassin.apache.org/gtube/


[3] http://www.pollux.franken.de/en/mail-server-tools/



Thats it.


Hope this helps.

2014-07-05 14:21
Eric Schirra

Cyrus Part V: Creating and Deleting a User Mailbox in Cyrus IMAP

How Do I Create a New Mailbox

  1. Connect to the the Cyrus administrative console:

    cyradm -user cyrus [hostname] [port]
  2. Create the mailbox:

    cm user.[new_mailbox]
  3. Repeat the last step to create any subsidiary mailboxes.

How Do I Delete a Mailbox in Cyrus Email

  1. Connect to the the Cyrus administrative console:

    cyradm -user cyrus [hostname] [port]
  2. Set the Access Control List (ACL) to objtain permission:

    sam user.[mailbox] cyrus all
  3. Delete the mailbox:

    dm user.[new_mailbox]

Cyrus Part V: Creating and Deleting a User Mailbox in Cyrus IMAP

Problem Statement:

Create a new mailbox on a Cyrus IMAP server

Solution:

  1. Connect to the the Cyrus administrative console:

    cyradm -user cyrus [hostname] [port]
  2. Create the mailbox:

    cm user.[new_mailbox]
  3. Repeat the last step to create any subsidiary mailboxes.

https://samcaldwell.net/index.php/technical-articles/3-how-to-articles/80-cyrus-part-v-creating-and-deleting-a-user-mailbox-in-cyrus-imap

2017-06-23 00:44
Webmaster

Folder/Ordner lassen sich in CYrus nicht löschen.

Die Mailboxen/Konten werden in der mailboxes.db gespeichert. Am einfachsten du exportierst diese Datei in plaintext, änderst deine Sachen, entfernst die alte mailboxes.db (move, BACKUP!) und machst die neuen Daten importieren.

Dabei den Cyrus-imapd besser deaktivieren, damit kein User in der zwischenzeit Konten / Verzeichnisse anlegt.

Export:

Code: Select all

su cyrus -c "/pfad/zu/ctl_mboxlist -d" >mailboxes.plain

Reimport (der user cyrus muss auf die datei beim import zugreifen können!):

Code: Select all

su cyrus -c "/pfad/zu/ctl_mboxlist -u <mailboxes.plain"

Wenns ein Fehler gibt, dann die alte mailboxes.db vorher "moven".

2017-06-23 00:46
Webmaster

Kann keine Mails mehr über Kolab versenden.

Die Tabelle policy_result  in der Datenbank kolab sollte gelöscht werden.
Sie wird wieder automatisch neu angelegt.

Siehe: https://git.kolab.org/T1404

2017-08-14 19:10
Webmaster

Ordner in Cyrus und Kolab löschen

Rechte setzen:

sam user/max.musterman/Papierkorb@localdomain.dehaem cyrus-admin all

Ordner löschen:

dm user/max.musterman/Papierkorb@localdomain.dehaem

2019-10-07 18:13
Webmaster

Windoof

Zur Kategorie

How to change windows service name or executable after creating it?

The Windows command line program to change services is "sc".

Here's the Microsoft reference page: https://technet.microsoft.com/en-us/library/bb490995.aspx

To change the display name of a service you can run:

sc config "Old service name" displayname= "New service name"

To change the executable you can run:

sc config "Service name" binpath= "C:\path\to\executable\here"

For both of those commands, make sure you have a space between the = and the new name (ie. displayname= "New Name", NOT displayname="New Name")

2019-02-25 20:10
eric

0x8024200D Windows Update Fehlercode

Viele Windows Anwender, besonders Windows 10 User, erhalten immer wieder beim Windows Update den Fehlercode

0x8024200D

Microsoft benennt im Zusammenhang mit diesem Fehlercode die Bezeichnung „WU_E_UH_NEEDANOTHERDOWNLOAD„. Wir haben Euch hier nachfolgend die Originalfehlermeldung beim Windows Update Vorgang dargestellt.

0x8024200D

Leider lässt sich nicht so einfach diagnostizieren, warum der Update Fehlercode 0x8024200D aufgetreten ist. Wir haben Euch hier nachfolgend einige Maßnahmen aufgelistet, die den Fehler 0x8024200D beseitigen sollten.

Virenscanner deaktivieren

Wenn Ihr Euch das Windows Ereignisprotokoll anschaut, so solltet Ihr ebenfalls einen Hinweis auf den Update Fehlercode finden. Scheinbar ist während des Downloads des Windows Updates zu einem Fehler oder einer Unterbrechung gekommen. Dies kann u.a. durch einen Virenscanner ausgelöst worden sein, der in den Download eingegriffen hat.

Aus diesem Grund solltet Ihr kurzzeitig nach einem erneuten Windows Systemneustart Euren installierten Virenscanner deaktivieren und danach den Windows Update Installationsvorgang erneut durchführen. Allerdings solltet Ihr nach der Durchführung dieser Aktion den Virenscanner unbedingt erneut aktivieren.

Windows Update Store zurücksetzen

Bricht der Download eines Windows Updates an einer bestimmten Stelle ab, so verbleiben Dateien im sogenannten „Windows Update Store„. Dabei handelt es sich um ein spezielles Verzeichnis unterhalb des Windows-Systemverzeichnisses, welches den Namen „SoftwareDistribution“ nennt.

Dieses Verzeichnis besteht aus zahlreichen Unterverzeichnissen und wird immer wieder frisch von Windows aufgebaut, auch wenn es durch den Systemadministrator bzw. Anwender gelöscht wurde. Ihr könnt dies Verzeichnis löschen, indem Ihr nach und nach in einer MS-DOS Eingabeaufforderung folgende Befehle absetzen.

Achtung: Die Eingabeaufforderung muss als „Administrator“ gestartet werden.

Eingabeaufforderung als Administrator ausführen

Die Befehle lauten dann wie folgt:

net stop cryptsvc
net stop bits
net stop wuauserv
ren c:\windows\softwaredistribution softwaredistribution.old
net start wuauserv
net start bits
net start cryptsvc

Anschließend könnt Ihr den Windows Updatevorgang erneut durchführen, der Fehler Errorcode 0x8024200D sollte nun nicht mehr auftreten.

Freien Festplattenplatz überprüfen

Zu abbrechenden Downloads und somit zum Fehler 0x8024200D kann es auch durchaus kommen, wenn auf der Windows Systempartition nicht mehr genügend freier Festplattenplatz vorhanden ist. In diesem Fall am besten eine Datenträgerbereinigung durchführen, um die Festplatte von unnötigen und ggf. temporären Dateien zu befreien.

Weiteren Informationen zu anderen Windows Update Fehlermeldungen findet Ihr auch in diesen Beiträgen hier auf Windows-FAQ.

– Windows Update Fehlercode 0xC1900101 – 0x30018
– 0xC1900101 – 0x20017 Windows 10 konnte nicht installiert werden
– 0x80D05001 Fehlercode beim Windows 10 Update
– 0x80070035 Fehlercode „Der Netzwerkpfad wurde nicht gefunden“
– 0x80242006 Fehlercode beim Windows Update
– 0x80010108 Fehlercode beim Windows 10 Update
– 0x8024a105 Windows Update Fehlercode
– Windows Update Fehlercode 0x80248014
– Fehlercode 0x80244018 beim Windows Update
– Windows Update Fehlercode 0x80073701
– 0x80070422 Fehlercode beim Windows Update
– 0x80240442 Fehlercode Windows Update

Quelle: https://www.windows-faq.de/2018/03/28/0x8024200d-windows-update-fehlercode/

2019-02-25 20:03
Webmaster

Windows 11 in KVM installieren

1.) Installieren von:

  • swtpm (TPM)
  • ovmf (Open Virtual Maschine Firmware - secure boot enable)

2.) Download uns Installation von Windows11:

3. Download von Windows 11 virtio drivers (netzwerk dreiber):
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.240-1/virtio-win-0.1.240.iso

4. Starte virt-manager und folge der Adresse:
https://getlabsdone.com/how-to-install-windows-11-on-kvm/

 

2024-09-29 13:13
Webmaster

Leap16

Zur Kategorie

Leap16: Verhalten von sudo wieder auf Standardverhalten zurück setzen.

Ab Leap 16 hat SUSE das Standardverhalten von sudo geändert.
Es verlangt nun nicht mehr das Passwort von root, sondern das Passwort des Benutzers.
Was SUSE dazu geritten hat ist absolut nicht verständlich. Für mich wird hier eine Sicherheitsstufe entfernt.

Um das wieder rückgängig zu machen ist folgendes zu tun:

Unter /etc/sudoers.d eine Datei mit folgendem Inhalt erstellen

Defaults        targetpw
ALL                ALL = (ALL) ALL

Ein anschließendes chown root:root auf die erstellte Datei nicht vergessen!

Unter /usr/etc/sudoers.d steht in der Datei  50-wheel-auth-self

Defaults:%wheel !targetpw
%wheel ALL = (root) ALL

 

2025-08-07 11:57
Webmaster

Leap16: 32-bit support für Steam, wine wieder einschalten

Noch eine weitere Schwachsinnsentscheidung von suse auf ihrem Wege um ein Ableger von RedHat/Fedora zu werden.
32-bit ist komplett deaktiviert worden in Leap 16. Dadurch läuft auch kein Steam mehr, da viele ältere Spiele eben 32bit oder gar 16bit sind.

Man kann es zumindest noch wieder teilweiße einschalten.
Entweder durch manuelle Installation von zwei Paketen oder angeblich über das neue opensuse-migration-tool.
Diese Tool soll wohl die beiden anderen Pakete bei der Installation/Migration von Leap 16 installieren.
Was ein schwachsinniges Vorgehen. Hier werden Lösungen für Probleme erstellt, die es vorher überhaupt nicht gab. :-(

Variante 1
$> sudo zypper in grub2-compat-ia32 selinux-policy-targeted-gaming

Variante 2:
$> sudo zypper in opensuse-migration-tool
$> opensuse-migration-tool

Quelle: https://news.opensuse.org/2025/08/04/leap-16-rc/

2025-08-07 12:00
Webmaster

Leap16: Cockpit als Ersatz für Yast

Leap 16  hat Yast eingestampft und statt dessen Cockpit.
Nur ist die Software Cockpit noch nicht mal installiert.
Also wollen wir mal Cockpit installieren. Das ist nämlcih auch nicht ohne Probleme.

A) Installiere Pattern

$> sudo zypper in -t pattern cockpit

- Dann kommt:

Problem: 1: das zu installierende pattern:cockpit-16.0-160000.6.1.x86_64 erfordert 'patterns-cockpit', aber diese Anforderung kann nicht bereitgestellt werden
Nicht installierbare Anbieter: patterns-cockpit-16.0-160000.6.1.x86_64[openSUSE:repo-oss]

 Lösung 1: Deinstallation von busybox-hostname-1.37.0-160000.3.1.noarch
 Lösung 2: pattern:cockpit-16.0-160000.6.1.x86_64 nicht installieren
 Lösung 3: pattern:cockpit-16.0-160000.6.1.x86_64 durch Ignorieren einiger Abhängigkeiten brechen

Wählen Sie aus den obigen Lösungen mittels Nummer oder brechen Sie (a)b [1/2/3/a/d/?] (a): 

Hier habe ich mal Lösung 1 gewählt.

B) Danach muss man den Dienst erstmal starten:

$> sudo systemctl enable --now cockpit.socket

 

C) Falls die Firewall aktiviert ist, muss noch folgendes getan werden damit man über Netz darauf zugreifen kann:

$> firewall-cmd --permanent --zone=public --add-service=cockpit
$> firewall-cmd --reload

 

D) Anmelden

Nun kann man sich unter 
  
   https://localhost:9090/ 
  
oder

   https://IP_ADDRESS_OF_MACHINE:9090/

mit seinem User anmelden.

Allerdings fehlt hier ein Zertifikat.
Sehr kritsch für ein zentrales Configtool welches über das Netzwerk erreichabr ist.
In dem ich auch Passwörter über Netzwerk vergeben kann.

E) Bemerkung

Das soll also der Ersatz für Yast sein. :-(
- Aufgabe eines Alleinstellungsmerkmales.
- Statt dessen ein 0815 Tool welches alle anderen auch haben.
- Nicht installiert.
- Keinerlei Hinweis dass es fehlt und wie man es installiert.
- Mann muss sich über Internet zusammensuchen, wei man es installiert.
- Zum zweiten für manche User schwierig einzurichten. Also gerade für die, für die das Tool sinvoll wäre.
- Fehlendes Zertifikat. Auch kein Hinweis darauf, wie man es erstellt.
- GUI für snapper fehlt in den Repos. Bei Yast gab es das noch.
- Wir sprechen hier von eime Release Kandidat.

Die Neue openSUSE Leap 16 is meiner Meinung nach eine einzige Entäuschung.
Nicht nur der Entfall von Yast.
Auch andere Entscheidungen, wie:
- Nicht funtionierendes Steam, Wine
- Kein normles root Verhhalten mehr. Erster User wird root. :-(
- Keine user-Gruppe mehr. Jeder User bekommt eine eigende Gruppe mit dem Namen seinen Usernamens. Was soll der Mist?
- usw.

Nachtrag:
Nun ist Leap 16 veröffentlicht
Aber alle angeprangerten Missstände bestehen weiterhin.
Das ganze hat also System ist wohl so gewollt. ?

2025-10-04 15:54
Webmaster

LEAP16: Autlogin wieder aktivieren

Auch der Autologin für einen User scheint entfernt worden zu sein.

So kann man ihn wieder herstellen:

In der Datei /etc/sysconfig/displaymanager
ist der Parameter DISPLAYMANAGER_AUTOLOGIN zu befüllen:

DISPLAYMANAGER_AUTOLOGIN="username"

2025-09-03 09:57
Webmaster

Fehlerquelle wenn wireplumber nicht startet

Falls wireplumber nicht startet, kann es daran liegen, dass unter /usr/share/wireplumber/wireplumber.conf.d falsche/defekte Konfigurationsdateien liegen.
Dies kann geprüft werden, wenn man das aktuelle wireplumber-Paket überprüft.
Wenn man dies überschüssigen Conf-Dateien enfernt, sollte nach einem

systemctl --user restart wireplumber
systemctl --user status wireplumber

alles grün sein und wireplumber laufen.
Ausserdem sollte sich die Geräteliste im Lautsprechersymbol in der Tasktleiste füllen.

Desweiteren sollt folgende Aussage erfolgen: (wichtig das dort pipewire als Server steht!)

xyz@client1:~> inxi -A
Audio:
 Device-1: Advanced Micro Devices [AMD/ATI] Navi 21/23 HDMI/DP Audio
   driver: snd_hda_intel
 Device-2: Advanced Micro Devices [AMD] Family 17h/19h/1ah HD Audio
   driver: snd_hda_intel
 Device-3: Logitech Webcam C270 driver: snd-usb-audio,uvcvideo type: USB
 API: ALSA v: k6.12.0-160000.7-default status: kernel-api
 Server-1: PipeWire v: 1.4.6 status: active

2025-12-02 11:32
Webmaster