staging.inyokaproject.org

Ubuntu 20.04: espeak schweigt bei sudo

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

Rhaban

Anmeldungsdatum:
25. Juni 2016

Beiträge: 469

Hallo,

ich habe vorgestern von Ubuntu 18 auf 20.04 upgegradet und das Meiste funktioniert ― dank Eurer Hilfe ― gut.

Ein merkwürdiges Problem ist aber aufgetaucht:

Ich mache jeden Abend Datensicherung und da ich zu dieser Zeit nicht mehr an meinem Rechner sitze, sondern schon das Abendessen vorbereite, lasse ich mir von meinem Computer via espeak sagen, was er gerade tut oder ob es Probleme gibt, z. B.

1
espeak -v de -s 140 -a 150 -k 20 "Der Oki-Drucker ist noch eingeschaltet." 

Wenn ich diese Zeile als normaler Nutzer aufrufe, sagt der Rechner sie auch auf. Bin ich aber Root (was ich wegen der Updates ja in diesem Augenblick sein will), bleibt er stumm. Stattdessen kommt eine Riesenfehlermeldung, die sich aber nicht in eine Datei umleiten lässt, sondern stets nur auf dem Bildschirm erscheint. Ich habe die obige Zeile in ein kurzes Shellscript namens espeak.sh geschrieben (mit #!/bin/bash natürlich) und habe es mit

1
sudo bash espeak.sh > fehler.vge

laufen lassen. Die Datei fehler.vge bleibt leer, stattdessen ist der Bildschirm voll mit Fehlermeldungen. Sie beginnen mit

Expression 'PaAlsa_Stream_Configure( stream, inputParameters, outputParameters ...'

Das wiederholt sich immer wieder; es ist auch von einem Fehler die Rede:

err = -9997

Übrigens beschwert sich auch KWrite beim Start immer wortreich, dass es irgendeine hebräische Datei nicht findet ("hebrew"). Es kommen dann jede Menge andere Fehlermeldungen. Auch die lassen sich nicht speichern.

Für jede Hilfe wäre ich sehr dankbar.

Rhaban

Moderiert von Taomon:

Dieses Thema ist verschoben worden. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“)!

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Fehler lassen sich schon umleiten, du muss den Kanal aber explizit angeben. Das > steht für 1> und ist stdout (Standardausgabe). Fehler sind im stderr zu finden:

sudo espeak 2> fehler.espeak

Das Problem dahinter dürfte allerdings sein, dass dein root-Account keine aktive „Sound-Umgebung“ (PulseAudio) hat, also auch keine Ausgabe starten kann. Es gibt mehrere Möglichkeiten das Problem anzugehen, es kommt ein wenig auf den Einsatzzweck und Umfang an. Ich würde generell bevorzugen espeak als Nutzer auszuführen, du könntest also das sudo an der Stelle einfach weglassen, dann greift der eingeloggte Nutzeraccount.

Rhaban

(Themenstarter)

Anmeldungsdatum:
25. Juni 2016

Beiträge: 469

Hallo, ChickenLipsRfun2eat,

danke für Deine E-Mail und für den Tipp mit „2> fehler.espeak”. Ich habe das natürlich sofort ausprobiert, die Fehlermeldung ist gigantisch ― bitte nicht erschrecken. Zunächst erscheinen zwei Zeilen, die mit „2> fehler ...” nicht erfasst werden:

Hspell: can't open /usr/share/hspell/hebrew.wgz.sizes
sonnet.plugins.hspell: HSpellDict: Init failed

Dann kommt, gespeichert in der Fehlerdatei:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
ALSA lib pcm_dsnoop.c:641:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:1089:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2642:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2642:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2642:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port
ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Connection refused

ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Connection refused

ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_dsnoop.c:641:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dmix.c:1089:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm_dmix.c:1089:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwParamsPlayback, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2721
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2842
wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate)
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwParamsPlayback, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2721
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2842
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwParamsPlayback, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2721
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2842
wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate)
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwParamsPlayback, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2721
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2842
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwParamsPlayback, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2721
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2842
wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate)
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwParamsPlayback, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2721
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2842
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwParamsPlayback, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2721
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2842
wave_open_sound > Pa_OpenStream : err=-9997 (Invalid sample rate)
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwParamsPlayback, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2721

Zeilen 52 bis 58 wiederholen sich dann 36 mal ...

Du schriebst:

„Ich würde generell bevorzugen espeak als Nutzer auszuführen, du könntest also das sudo an der Stelle einfach weglassen, dann greift der eingeloggte Nutzeraccount.”

Das kann ich natürlich machen. Für die Datensicherung mit rsync wäre das ja auch kein Problem. Ich hänge nur am Ende des Sicherungs-Shellscripts an:

1
2
3
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoremove 

... und dafür muss man halt Root sein.

(...)

Ich habe gerade eben ein wenig experimentiert und das folgende (inhaltlich völlig sinnlose) Test-Shellscript geschrieben und als normaler Nutzer laufen lassen:

1
2
3
4
5
#!/bin/bash
    espeak -v de -s 140 -a 150 -k 20 "Der Oki-Drucker ist noch eingeschaltet." 
    espeak -v de -s 140 -a 150 -k 20 "Es wird nun das Rut schellskript aufgerufen." 
    sudo bash hallo.sh
    espeak -v de -s 140 -a 150 -k 20 "Das war das Shellskript hallo."

Die letzte Textzeile „Das war das Shellskript hallo.” wurde diesmal von espeak gesprochen, obwohl vorher rootmäßig die Datei hallo.sh aufgerufen wurde.

Vielleicht genügt es, wenn ich heute Abend sicherung als normaler User aufrufe. Ich muss mich selbst dann nur via espeak-Befehl auffordern, zwischendrin mein Rootpasswort für das Update einzugeben.

Rhaban

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Für automatisierte Updates gibt es unattended-upgrades, welches man bevorzugt nutzen sollte. Es gibt bei der interaktiven Aktualisierung immer die Möglichkeit, den Nutzer etwas zu fragen, z.B. ob er eine Konfigurationsdatei übernehmen, belassen oder vergleichen will, etc.

rsync selbst läuft ja so wie ich das verstanden habe ohne root-Rechte. Ansonsten könntest du dir auch einzelne Befehlszeilen passwortlos gestalten, siehe sudo/Konfiguration.

Rhaban

(Themenstarter)

Anmeldungsdatum:
25. Juni 2016

Beiträge: 469

Danke für die Tipps.

Ich will es heute Abend versuchsweise so machen:

Ich starte das Shellscript sicherung als normaler User. Bevor am Schluss die drei sudo-Zeilen kommen,

1
2
3
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoremove 

will ich mich selbst per espeak-Aufforderung auffordern, das Passwort einzugeben. Ich hoffe, dass eine einmalige Passworteingabe genügen wird, obwohl es drei Befehlszeilen sind.

Wenn das klappt, hätte ich (fast) denselben Verlauf wie unter Ubuntu 18. Ich müsste halt nur zwischendurch das Rootpasswort eingeben.

Rhaban

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Du kannst die Zeilen auch so schreiben:

espeak -vde "Ich will ein Passwort!"
sudo apt update || espeak -vde "Aktualisieren der Paketlisten fehlgeschlagen"
sudo apt full-upgrade || espeak -vde "Upgrade der Pakete fehlgeschlagen!"
…

dann sollte im Fehlerfall ein Hinweis kommen. Kannst das ja prüfen, indem du deine sources.list mal verbastelst oder so.

Rhaban

(Themenstarter)

Anmeldungsdatum:
25. Juni 2016

Beiträge: 469

Danke für den Vorschlag.

Wenn in dem Shellscript zum ersten Mal „sudo ...” kommt, muss ich das Rootpasswort eingeben. Das Shellscript läuft jetzt aber sehr gut.

Vielen Dank für alle Unterstützung!

Rhaban

Antworten |