bash: shutdown: Kommando nicht gefunden.

root@michi-debian:/home/michi# shutdown -h now
bash: command not found 
root@michi-debian:/home/michi# shutdown -h now
bash: shutdown: Kommando nicht gefunden.

In diesem Fall muss das System über systemctl poweroff ausgeschaltet oder durch systemctl reboot neu gestartet werden

shutdown und reboot gibt es in systemd nicht mehr als eigene Kommandos. Stattdessen muss man (wie bei fast allen anderen systemd-Interaktionen) systemctl verwenden. Für Abwärtskompatibilität gibt’s das Paket systemd-sysv. Das bietet wieder shutdown und reboot als eigene Kommandos an, die wahrscheinlich einfach nur ein wrapper sind für „systemctl shutdown“ und „systemctl reboot“.

root@michi-debian:/home/michi# systemctl poweroff
michi@michi-debian:/usr/sbin$ ls -l shut*
lrwxrwxrwx 1 root root 14 Jan 29 15:16 shutdown -> /bin/systemctl

Schriftgröße in XTerm speichern?

Die Schriftgröße / Schriftart kann in der Datei .Xresources im Heimatverzeichnis angepasst werden.

Eine Beispieldatei:

XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 12
UXTerm*faceName: DejaVu Sans Mono
UXTerm*faceSize: 12

XTerm*ScrollBar: true
XTerm*rightScrollBar: true
UXTerm*ScrollBar: true
UXTerm*rightScrollBar: true

Damit die Änderungen aktiv werden den Befehl

xrdb ~/.Xresources

ausführen.

ifconfig : command not found

Zielsetzung

Der Befehl ifconfig ist veraltet und fehlt daher standardmäßig unter Debian Linux, beginnend mit Debian Stretch.

# ifconfig -bash: ifconfig: Befehl nicht gefunden

Die neue und empfohlene Alternative zum Überprüfen einer Netzwerkkonfiguration unter Debian Linux ist der Befehl ip. Um beispielsweise den Befehl ip zum Anzeigen einer Netzwerkkonfiguration zu verwenden, führen Sie Folgendes aus:

# IP Adresse

Der obige IP-Befehl kann wie folgt abgekürzt werden: # ip a

Wenn Sie ifconfig weiterhin als Teil Ihrer täglichen Systemadministrationsroutine verwenden möchten, können Sie es einfach als Teil des net-tools-Pakets installieren.

Ein privilegierter Zugriff auf Ihr Debian Linux-System ist erforderlich.

# – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten entweder direkt als Root-Benutzer oder mit dem Befehl sudo ausgeführt werden

$ – erfordert, dass bestimmte Linux-Befehle als regulärer nicht privilegierter Benutzer ausgeführt werden

Anleitung Installieren Sie den Befehl ifconfig Installieren Sie mit dem Befehl apt-get das net-tools-Paket:

# apt-get install net-tools

Der Befehl ifconfig ist jetzt verfügbar.

Infos zum ip Befehl

ModuleNotFoundError: No module named ‚Tkinter‘

michi@localhost ~/python $ python maschenzaehler.py 
Traceback (most recent call last):
  File "/home/michi/python/maschenzaehler.py", line 1, in <module>
    import Tkinter as tk
ModuleNotFoundError: No module named 'Tkinter'
michi@localhost ~/python $ python maschenzaehler.py 
Traceback (most recent call last):
  File "/home/michi/python/maschenzaehler.py", line 1, in <module>
    import tkinter as tk
ModuleNotFoundError: No module named 'tkinter'

Diese Fehlermeldung weisst auf ein Problem mit dem GUI Tool für Python hin. In früheren Versionen wurde tkinter groß geschrieben. Wenn beide Versionen nicht funktionieren ist Python eventuell nicht mit dem erforderlichen USE Flag tk kompiliert worden. Dies kann nachgeholt werden:

root#USE="tk" emerge -av pyhton



Wenn Sie versuchen, Tkinter in Python-Code zu verwenden, muss der Import von Tkinter je nach den derzeit auf dem System installierten Python-Versionen möglicherweise auf verschiedene Arten durchgeführt werden: Bei Verwendung von Python 2.x.: Verwenden Sie import Tkinter Verwenden von Python 3.x: Verwenden Sie import tkinter (beachten Sie das Kleinbuchstaben T).

Ausserdem kann das USE-Flag tk in /etc/portage/package.use hinterlegt werden.

/etc/portage/make.conf
USE="tk"

Wenn mehrere Python Versionen installiert sind sollte auf die aktuelle Version aktualisiert und diese aktiviert werden.

localhost /home/michi # eselect python list
Available Python interpreters, in order of preference:
  [1]   python3.7 (uninstalled)
  [2]   python3.9 (fallback)
  [3]   python3.8 (fallback)
  [4]   python2.7 (fallback)
localhost /home/michi # eselect python set 2
localhost /home/michi # env-update && source /etc/profile
>>> Regenerating /etc/ld.so.cache...
localhost /home/michi # 

Welche Version aktiviert ist kann über die einfache Eingabe von python im Terminal überprüft werden.

localhost /home/michi # python
Python 3.9.1 (default, Dec 26 2020, 19:29:42) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

Ein weiterer wichitger Punk ist das die Dateien im Python Verzeichniss hinterlegt werden müssen.

localhost /home/michi # python
Python 3.9.1 (default, Dec 26 2020, 19:29:42) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getcwd()
'/home/michi'
>>> os.chdir ("/home/michi/python")
>>> os.getcwd()
'/home/michi/python'
>>> 

Eine interessante Seite für den Umstieg von Python 2 auf Python 3 unter Debian findest du hier: https://linuxconfig.org/how-to-change-default-python-version-on-debian-9-stretch-linux

spyder [4886:4886:1226/125338.508505:ERROR:zygote_host_impl_linux.c

localhost /home/michi # spyder
[4886:4886:1226/125338.508505:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

localhost /home/michi # spyder --no-sandboxusage: spyder [options] filesspyder: error: unrecognized arguments: --no-sandbox

Die Lösung ist: es kann spyder nur als User ausgeführt werden. Also durch #su username zum User wechseln und den Befehl spyder nochmals ausführen

grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn’t exist.

localhost ~ # grub-install /dev/sda
grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn’t exist. Please specify –target or –directory.

Grundlegende Infos zu GRUB unter Gentoo gibt es hier: https://wiki.gentoo.org/wiki/GRUB2

Bei diesem Fehler wurde ein guter Beitrag zur Recherche von Fehlern und erforderlichen Infos im Gentoo-Forum erstellt:

https://forums.gentoo.org/viewtopic-p-8543335.html?fbclid=IwAR0cR9AfLECScq6dsYJzUW6ZzIcI8Nxe5rqY4cVsyAxgHT49ZT_kOh6Ubow#8543335

!!! The ebuild selected to satisfy „dev-tcltk/tclpython“ has unmet requirements.

sysvorOrt /home/michi # emerge -avuND world

 * IMPORTANT: 10 news items need reading for repository 'gentoo'.
 * Use eselect news read to view new items.


These are the packages that would be merged, in order:

Calculating dependencies \

!!! Problem resolving dependencies for dev-tcltk/tclpython from @selected
... done!

!!! The ebuild selected to satisfy "dev-tcltk/tclpython" has unmet requirements.
- dev-tcltk/tclpython-5.0::gentoo USE="" ABI_X86="(64)" PYTHON_SINGLE_TARGET="-python3_6 -python3_7"

  The following REQUIRED_USE flag constraints are unsatisfied:
    exactly-one-of ( python_single_target_python3_6 python_single_target_python3_7 )

(dependency required by "@selected" [set])
(dependency required by "@world" [argument])
sysvorOrt /home/michi # 

Um dieses Problem zu beheben ist ein Eintrag in der /etc/portage/package.use erforderlich:

dev-tcltk/tclpython python_single_target_python3_7 

Die Version von Python (3_7) kann natürlich angepasst werden falls gewünscht.

tkinter.TclError: couldnt recognize data in image file

michi@sysvorOrt ~/python $ python mit-bild.py 
Traceback (most recent call last):
  File "mit-bild.py", line 4, in <module>
    logo = PhotoImage(file="grafik.jpg")
  File "/usr/lib/python3.8/tkinter/__init__.py", line 4061, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/usr/lib/python3.8/tkinter/__init__.py", line 4006, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize data in image file "grafik.jpg"


Zum anzeigen von Bildern im jpg-Format wird zusätzlich das PIL-Modul (Python Image Library) benötigt. Mit dem Tkinter eigenen tk.PhotoImage lassen sich nur die Bildformate gif und png anzeigen. Mit PIL lassen sich alle Bildformate anzeigen.

tkinter Fehler und Lösungen


Eine einfache Python Datei als Beispiel:

import tkinter as tk
from tkinter import *
counter = 0 
def counter_label(label):
  def count():
    global counter
    counter += 1
    label.config(text=str(counter))
    label.after(1000, count)
  count()
 
 

Als Test benannt ist sie wie folgt aufrufbar:

michi@sysvorOrt ~/python $ python test.py 
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    from tkinter import *
  File "/home/michi/python/tkinter.py", line 3, in <module>
    tkFenster = tk()
NameError: name 'tk' is not defined

Allgemeine Infos zu einem tkinter Fehler

Dieser Fehler basiert auf einen Zugriff von Python in die grafische Oberfläche (GUI). Tkinter ist ein Teil zur Erstellung einer grafischen Oberfläche in der Programmiersprache Python.

Um Python zu nutzen muss die Programmiersprache mit dem USE-Flag tk kompiliert werden. Durch eselect kann die gewünscht Python Version festgelegt werden.

Installieren

Um tkinter zu erhalten, setzen Sie das Use-Flag tk für dev-lang / python:

Bearbeiten Sie /etc/portage/package.use
Setzen Sie das USE-Flag, indem Sie eine neue Zeile für Python hinzufügen:
dev-lang / python tk

in der Vergangenheit war die Flagge für Tkinter tcltk

Python neu kompilieren

sysvorOrt /home/michi/python # eselect python list
Available Python interpreters, in order of preference:
[1] python3.7
[2] python3.8 (fallback)
[3] python2.7 (fallback)
sysvorOrt /home/michi/python # python3.8
Python 3.8.5 (default, Oct 19 2020, 20:18:09)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.


Welche Version installiert ist kann durch den Aufruf von Python in der Kommandozeile nachgeschaut werden. In diesem Fall 3.8.5:


sysvorOrt /home/michi/python # python
Python 3.8.5 (default, Oct 19 2020, 20:18:09)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

Dann gab es noch solch einen doofen Fehler von mir. Um tkinter zu nutzen muss es natürlich importiert werden.

>>> tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'tkinter' is not defined
>>> import tkinter
>>> 

Ein Beispiel für einen Fehler in Bezug auf tkinter:

michi@sysvorOrt ~/python $ python uebung1.py 
Traceback (most recent call last):
  File "uebung1.py", line 1, in <module>
    import tkinter as tk
  File "/home/michi/python/tkinter.py", line 3, in <module>
    tkFenster = tk()
NameError: name 'tk' is not defined

Durch die Ausführung von #python -m tkinter kann überprüft werden ob tk erfolgreich installiert wurde und genutzt werden kann. Bei erfolgreicher Konfiguration wird folgendes Bild angezeigt:

Damit tkinter funktioniert muss das .py Programm in dem Arbeitsverzeichnes des Python ausgeführt werden. In diesem Fall ist es das Root Verzeichnis und wird auf /home/michi/python egändert. Bitte beachten: diese Änderung ist nur während der Session aktiv. Das Arbeitsverzeichnis wird wie folgt abgerufen und ggf. temporär geändert:

sysvorOrt / # python
Python 3.8.5 (default, Oct 26 2020, 17:00:05)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getcwd()
'/'
>>> os.chdir ("/home/michi/python")
>>> os.getcwd()
'/home/michi/python'
>>> 

tkinter wird je nach Python – Version unterschiedlich geschrieben: Bei Verwendung von Python 2.x.: Verwenden Sie import Tkinter
Verwenden von Python 3.x: Verwenden Sie import tkinter (beachten Sie den Kleinbuchstaben T).
https://wiki.gentoo.org/wiki/Tkinter