staging.inyokaproject.org

Frage zu postinst und remove

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

Dark_Wolf

Avatar von Dark_Wolf

Anmeldungsdatum:
12. August 2006

Beiträge: 2561

Hallo Leute,

habe hier ein Paket gebaut das mit Postinst in die Datei "/etc/environment" zwei Zeilen mit einfügt. Sieht so aus:

#!/bin/sh -e
echo 'TSPROC="/usr/local/share/midas/17FEBpl1.2/midwork/tsa/proc"' >> /etc/environment
echo 'TSEXEC="/usr/local/share/midas/17FEBpl1.2/midwork/tsa/exec"' >> /etc/environment

Das funktioniert auch. Was baue ich aber nun in das Paket dazu, das beim deinstallieren diese Zeilen auch wieder gelöscht, und bei einem Update oder einer erneuten Installation diese Zeilen nicht dupliziert werden.

Vielen Dank glg Dark Wolf

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17277

Du bist sicher besser dran wenn du einfach unterhalb von /etc/profile.d eine Datei anlegst, und diese wieder löscht bei remove.

mfg Stefan

Dark_Wolf

(Themenstarter)
Avatar von Dark_Wolf

Anmeldungsdatum:
12. August 2006

Beiträge: 2561

Danke für die Info, hab mich hier ne weile herumgespielt. Leider ohne Erfolg. Hier mein Script:

1
2
3
4
cat /etc/profile.d/eso-midas.sh
#!/bin/bash
export TSPROC="/usr/local/share/midas/17FEBpl1.2/midwork/tsa/proc:$TSPROC"
export TSEXEC="/usr/local/share/midas/17FEBpl1.2/midwork/tsa/exec:$TSEXEC"

Wenn ich die Zeilen manuell ausführe gehts, aber mit dem Script nicht. Was mache ich falsch?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17277

Wenn du dir /etc/profile anschaust siehst du folgendes:

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

Die Datei muss also folgende Bedingungen erfüllen:

  1. Dateiname muss auf .sh enden (passt bei dir)

  2. Die Dateirechte passen (Was sagt uns hier namei -l /etc/profile.d/eso-midas.sh?)

  3. Du brauchst keine Shebang am Anfang der Datei, es wird "gesourced" und nicht als Script gestartet

Ich hab deine Datei mal genommen: Funktioniert für Login Shells. Aber schau dir mal bitte den Abschnitt "INVOCATION" der Manpage von bash an. Dort wird erklärt unter welchen Bedingungen von wo was gelesen wird.

Aber zurück zu deinem Problem: Brauchst du die Variablen auf der Shell, oder für die komplette Sitzung eines Users? (Nicht das ich dich da missverstanden habe!)

mfg Stefan

Dark_Wolf

(Themenstarter)
Avatar von Dark_Wolf

Anmeldungsdatum:
12. August 2006

Beiträge: 2561

encbladexp schrieb:

Aber zurück zu deinem Problem: Brauchst du die Variablen auf der Shell, oder für die komplette Sitzung eines Users? (Nicht das ich dich da missverstanden habe!)

Das Programm ist rein Konsolen basierend. Starte es aber mit nem Desktopstarter. Also ich würde sagen für die komplette Sitzung. Dann ist man auf der sicheren Seite.

Danke glg Dark Wolf

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17277

Gut, dann ist aber der "normale" weg ein Helper Script zu nehmen und das zu starten oder die Variablen über die .desktop Datei (sofern das geht) zu übergeben. In /etc/environment sollten wirklich nur Systemweite Dinge sein die man in jeder PAM/User Session benötigt.

(Das ist auch der Grund warum darin im Standard nichts gesetzt wird.)

mfg Stefan

Dark_Wolf

(Themenstarter)
Avatar von Dark_Wolf

Anmeldungsdatum:
12. August 2006

Beiträge: 2561

Nach vielen hin und her und keiner Funktion bin ich dahinter gekommen dass, das Problem darin liegt das hier überall die ZSH und nicht die BASH benutzt wird. Hab mir sämtlich Dateien wie .profile, .bashrc und /etc/bashXXX angeschaut. Hab nichts gefunden wie /etc/profile behandelt wird. Kannst du da event. Licht ins Dunkel bringen?

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17277

Ich verwende nirgends (aus Gründen) eine zsh.

mfg Stefan

Dark_Wolf

(Themenstarter)
Avatar von Dark_Wolf

Anmeldungsdatum:
12. August 2006

Beiträge: 2561

Machs nun im File "/etc/zsh/zprofile" das ist leer. Mit dem funktioniert es.

Antworten |