Ich habe ganz gute Erfahrungen mit bitbucket gemacht, das ist ähnlich wie
github. Ursprünglich war es nur für mercurial gedacht, seit einiger Zeit kann
man aber auch git-Repositories dort hosten. Es gibt einen Downloadbereich in den
man hochladen kann was man will, zudem wird, genauso wie bei github, vom
aktuellen HEAD immer ein Archiv als zip, gz oder bzip2 angeboten. Der größte
Vorteil gegenüber github ist dass man auch mit einem kostenlosen Account
unbegrenzt private Repositories anlegen kann.
7 Monate später
Ich habe 5 m als sleep-Wert eingetragen, um zu testen . Wie kann ich pacnotify neu starten, damit die Einstellung greift? Oder muss man das nicht?

ps. Es startet jetzt beim Systemstart (gnome autostart), aber informiert mich nicht über updates. Ideen woran das liegen könnte? Ich habe yaourt als backend eingetragen. Das nehme ich immer zum updaten.
  • [gelöscht]

Hej Hansen,
Ich habe lange nichts mehr an pacnotify gemacht. Und da ist auch noch dieser doofe Bug das du die /tmp/pacnotify.lock von Hand löschen musst, sonst kannst du es nicht erneut starten. Ich werd das die Tage mal fixen, hab grad ein Zeit dafür.
Wenn du Einstellungen änderst musst du pacnotify neu starten.
Bekommst du beim Start auch keine Meldung? Da sollte mindestens ein "Startup-Meldung" sein.
Hallo 🙂

Doch, beim Start meldet es sich einmal. Da steht dann auch eine kleine Übersicht der aktuellen Einstellungen. Ich weiß nur nicht recht, ob es auch wirklich vorhandene Updates meldet. Werde das im Auge behalten.

Frage: Meldet es generell Updates, oder nur welche, die für mein System relevant sind?

Was das neu starten angeht.. bin ich nicht sicher wie das geht. Will ich pacnotify starten kommt die Meldung "Es läuft bereits unter PID 1234". Mache ich aber "kill 1234" , kommt : "Prozess 1234 nicht gefunden" .

Also ich bin generell nicht sicher wie man ein Programm per Terminal neu startet. Es geht ja nicht mit allen Programmen per "systemctl restart xcz.service" oder "systemctl restart xyz"
  • [gelöscht]

@hansen:

sseemoewe schrieb folgendes:
Und da ist auch noch dieser doofe Bug das du die /tmp/pacnotify.lock von Hand löschen musst, sonst kannst du es nicht erneut starten.
das bedeutet, dass du folgenden Befehl in der Konsole ausführen musst:
rm /tmp/pacnotifv.lock
oder du startest deinen Rechner neu, damit wird das Verzeichnis /tmp geflasht.


MfG
Zentiva
@seemoeve: Hast du schon einen trap Befehl in deinem Skript? Damit kannst du abfangen wenn das Skript beendet wird.
trap "rm $lockfile; exit 0" INT TERM
Wenn du auch noch Fehler abfangen willst kannst du noch ein ERR hinten dranhängen.
@ Zentiva: ja ich weiß wie ich das lockfile lösche. aber wie starte ich pacnotify neu. einfach im terminal: "pacnotify" ? oder laufen dann 2 instanzen davon ?
Bei mir klappt es nicht. Es kommen keine Benachrichtigungen über updates.
  • [gelöscht]

hansen schriebaber wie starte ich pacnotify neu. einfach im terminal: "pacnotify" ? oder laufen dann 2 instanzen davon ?
Im Prinzip ist es möglich zwei Instanzen laufen zu lassen. Die /tmp/pacnotify.lock ist halt dafür da das zu verhindern, und das ist auch mehr kosmetischer Natur, weil es nervt wenn mehrere Instanzen Laufen. Sobald diese Datei existiert startet pacnotify nicht erneut (naja eigentlich startet es schon, aber beendet sich halt gleich wieder.). Umbenennen oder verschieben dieser Datei hebelt diesen Test aus.
Du kannst mittelst 'pacnotify' das Programm starten.
Du kannst mittels 'killall pacnotify' das Programm beenden.
Jetzt muss die '/tmp/pacnotify.lock' entfernt werden, dann kann es auch erneut gestartet werden.
hansen schriebIch weiß nur nicht recht, ob es auch wirklich vorhandene Updates meldet.
pacnotify nutzt als Standard checkupdates (Teil von pacman) und prüft auf Updates für installierte Pakete. du kannst in einer Konsole 'checkupdates' ausführen, wenn das Udates anzeigt, pacnotify jedoch auch nach Ablauf der sleep-time keine Updates anzeigt dann geht da was schief.
Und kurz nach dem Start (je nach Internetverbindung/ -geschwindigkeit) muss, falls es Updates gibt, auch dazu eine Meldung kommen.
hansen schrieb Ich habe 5 m als sleep-Wert eingetragen
Ich habe yaourt als backend eingetragen
Wo hast du das eingetragen? In die '/usr/share/pacnotify/pacnotify.conf'? Falls ja, schlechte Idee, aber machbar.
bei sleep= darf zwischen Wert und Einheit kein Leerzeichen sein. Keine Ahnung was 'sleep' sonst daraus macht. Bestenfalls 5s…
Ok . Danke für die Antwort. Ich hatte zuerst die /usr/share/pacnotify/pacnotify.conf bearbeitet. Dann aber diese Datei nach ~/.config/pacnotify.conf kopiert und mich als Besitzer und Gruppe angegeben. Damit es sich leichter ändern lässt.. ..also ohne sudo oder su. Möglicherweise hab ich den Fehler gemacht und pacnotify im Terminal gestartet und dann aber das Terminal geschlossen.

Ich habe es jetzt über Alt+F2 (gnome programmstart) gestartet und es hat auch korrekt die Einstellungen aus der ~/.config/pacnotify.conf angezeigt. Werde das mal mit checkupdates überprüfen, ob es klappt.

Hier ist meine ~/.config/pacnotify.conf :
# time to wait between notifications
sleeptime=5m
# seconds to display the notification
expires=120
# lines of packages to display (more than 9 lines may cause formatting errors)
lines=9
# icon to use for notification
icon=/usr/share/pixmaps/pacnotify32.png # which icon to use
# which backend to use one of: default pacman yaourt
backend=yaourt
  • [gelöscht]

hansen schrieb[…]nach ~/.config/pacnotify.conf kopiert und mich als Besitzer und Gruppe angegeben. Damit es sich leichter ändern lässt.. ..[…]
Das war der Plan.
hansen schrieb[…]
Hier ist meine ~/.config/pacnotify.conf :
[…]
Das würde reichen:
sleeptime=5m
backend=yaourt
Der Rest bleibt dann einfach auf den Standardwerten.
Mit "backend=default" bekomme ich updates durch pacnotify angezeigt. ("4 updates" als überschrift, und 9 werden angezeigt, wobei checkupdates 16 findet)

Wenn ich dann das update mache , sehe ich 3 mal "new release" und 13 mal "new version"

mit backend=yaourt kommt nichts. "/usr/bin/yaourt -Qqau" und "/usr/bin/pacman -Qqu" im terminal ausgeführt, liefern beide nichts.
"/usr/bin/yaourt -Qua" ohne -q (quiet) und "/usr/bin/pacman -Qu" geben auch nichts aus.

edit:

Womöglich muss man erst die Datenbank aktualisieren ( "pacman -Sy" ? ) bevor man "pacman -Qu" machen kann, welches dann die outdated packages anzeigt. (?) bin nicht sicher
  • [gelöscht]

hansen schriebMit "backend=default" bekomme ich updates durch pacnotify angezeigt. ("4 updates" als überschrift, und 9 werden angezeigt, wobei checkupdates 16 findet)
Kann ich leider nicht nachvollziehen wie es dazu kommt das du dort so verworrene Werte angezeigt bekommst. Wenn 'checkupdates' 16 Aktualisierungen anzeigt, dann sollte pacnotify das auch tun.
Poste mal bitte die Ausgabe von 'checkupdates' und einen Screenshot von der dazugehörigen pacnotify-Meldung. Vielleicht werde ich daraus schlauer…
hansen schriebmit backend=yaourt kommt nichts. "/usr/bin/yaourt -Qqau" und "/usr/bin/pacman -Qqu" im terminal ausgeführt, liefern beide nichts.
pacman und yaourt brauchen eine aktuelle pacman.db. Die bekommst du durch 'pacman -Sy' bzw. 'yaourt -Sy'. Das kann und wird pacnotify nicht erledigen (mangelnde Rechte und daran werde ich auch nichts ändern!). In der README ist beschrieben wie du einen cronjob einrichtest der das erledigt, dann funktionieren auch pacman und yaourt.
portix schrieb@seemoeve: Hast du schon einen trap Befehl in deinem Skript? Damit kannst du abfangen wenn das Skript beendet wird.
trap "rm $lockfile; exit 0" INT TERM
in 0.11 ist das nun drin. leider blockt das laufende 'sleep'. Wie müsste ein Trap aussehen damit auch vom Programm gestartet "Kinder" mitgeschlossen werden? Werde ich mal rausfinden müssen…
Du kannst sleep im Hintergrund starten und dann wait benutzen, wait blockt keine Signale. Damit sleep nicht weiterläuft wenn das Skript beendet ist kannst du in der trap-Funktion sleep explizit killen, z.B. so:
#!/bin/bash

lockfile="/tmp/pacnotify.lck"
sleep_pid=0

cleanup() {
    [ -f "$lockfile" ] && rm "$lockfile"
    [ "$sleep_pid" -ne 0 ] && kill "$sleep_pid"
    exit 0
}

trap "cleanup" INT TERM

touch "$lockfile"

while :; do 
    sleep_pid=0
    # hier der notify code

    sleep 10m & 
    sleep_pid=$!
    wait $sleep_pid
done
Edit: du könntest auch das bash-builtin coproc nehmen, das ist etwas kürze und würde dann so aussehen:
#!/bin/bash

lockfile="/tmp/pacnotify.lck"

cleanup() {
    [ -f "$lockfile" ] && rm "$lockfile"
    [ "$sleep_PID" ] && kill "$sleep_PID"
    exit 0
}

trap "cleanup" INT TERM

touch "$lockfile"

while :; do 
    # hier der notify code

    coproc sleep { sleep 10m; } 
    wait $sleep_PID
done
  • [gelöscht]

Danke portix. Ich bastelte da grad dran rum und bin zu diesem hier gekommen:
	trap "rm $lockfile;kill -- -$$; exit 0" INT TERM
	sleep $sleeptime &
	sleeppid=$!
	wait $sleeppid
*irgenwo auf stackoverflow gefunden

Deine Version mit der cleanup-Function gefällt mir jedoch ausgesprochen gut! (nicht zu vergessen dieser _ in sleep_pid)
Kann ich mehrere verschiedene Traps haben? bestimmt… damit könnte ich noch einiges komfortabler gestalten.
Ja, du kannst für verschiedene Signale mehrere traps nehmen, für das gleiche Signal macht es ja keinen Sinn.
  • [gelöscht]

Weil hansen fragte ob man nach dem Ändern der Konfiguration pacnotify neu starten muss:
inotify ist doch Teil des Kernels oder? Braucht man irgendwelche zusätzlichen tools um darauf zuzugreifen? Also müsste pacnotify zB inotify-tools als Abhängigkeit haben, oder reicht es das der Kernel eine Schnittstelle bietet? Kann man das in bash (ohne fiese Hacks) nutzen, oder geht das nur mit c oder python, oder …?
inotify ist zwar teil des kernels, die Schnittstelle wird aber von glibc bereitgestellt, ist also eine reine C-Schnittstelle. Um es in bash zu nutzen braucht man inotify-tools. Du könntest aber auch, wie es einige daemons machen SIGUSR1 verwenden um die config neu zu lesen, dann kannst du allerdings kein coproc benutzen und du müsstest die pid ins lockfile schreiben.
#!/bin/bash

sleeppid=0
lockfile="/tmp/pacnotify.lck"
rcfile="~/.pacnotifyrc"

# Wenn mit der option -r aufgerufen und das lockfile existiert wird die konfiguration neu geladen
if [ "$1" = "-r" ] && [ -f "$lockfile" ]; then 
    kill -USR1 "$(< "$lockfile")"
    exit 0
fi

if [ -f "$lockfile" ]; then 
    echo "pacnotify is already running"
    exit 1
fi

cleanup() {
    [ -f "$lockfile" ] && rm "$lockfile"
    [ "$sleeppid" -ne 0 ] && kill "$sleeppid"
    exit 0
}

load_config() {
    [ -f "$rcfile" ] && . ~/.pacnotifyrc 
}

trap "cleanup" INT TERM
trap "load_config" USR1

echo $$ > "$lockfile"

while :; do 
    sleeppid=0
    # hier der notify code

    sleep 10m &
    sleeppid=$!
    wait $sleeppid
done
  • [gelöscht]

ich hab mich dooferweise letztes Jahr aus meinem gmail-acc ausgeschlossen… sobald ich raus hab wie ich das PKGBUILD umändern muss damits auch mit dem neuen hoster baut leg ich auch das PKGBUILD nach.

Das mit dem SIGUSR1 sieht schonmal ganz interessant aus. Danke dafür
  • [gelöscht]

Der code von dir erinnert mich tatsächlich an die Startskripte aus den prä-systemd-Zeiten