IPKG Ordner weg / Nano, ipkg update etc. funktioniert nicht mehr

Status
Für weitere Antworten geschlossen.

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.164
Punkte für Reaktionen
412
Punkte
393
Hallo,
wo hast Du den PATH angepasst?

Gruß Götz
 

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.222
Punkte für Reaktionen
76
Punkte
114
Hallo goetz,

hab diesen über die Kommandozeile (putty) geändert.

Wenn man dort "export" eingibt bekommt man u.a. den PATH mitgeteilt, diesen habe ich dann so angepasst das ganz vorne opt/bin und opt/sbin stehen und habe diesen mit dem Befehl export PATH='/opt/bin:/opt/sbin: usw. geändert.

Da ich seit dem ersten Anpassen dieses PATH am 7.9. die DS einmal neu gestartet habe, hat sich dieser wohl wieder auf die Standardeinstellung geändert (opt Pfade stehen in der Mitte und nicht am Anfang).
Die Frage wäre nun ob man diesen PATH dauerhaft speichern kann.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Solche Kommandos leben nur bis zum Reboot. Trags in einem File ein, das beim Start ausgeführt wird
 

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.222
Punkte für Reaktionen
76
Punkte
114
Solche Kommandos leben nur bis zum Reboot. Trags in einem File ein, das beim Start ausgeführt wird

Also zB ein Skript namens S98export das dieses Kommando beim Start ausführt?

Gibts da keine andere Möglichkeit? Wie sieht bei euch dieser Pfad aus? Funktioniert bei euch ipkg update oder müsst ihr auch vorher so eine Änderung vornehmen?

Ich meine, es kann doch nicht sein das ipkg update nur durch ein zusätzliches Startskript funktioniert - vor dem Update auf 3.2 ging es ja auch ohne dem (trotz zahlreicher Reboots)!
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Folgende Scripte werden afaik durch optware eh ausgeführt: /etc/rc.local und /opt/etc/rc.optware, also packs dort rein
 

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.222
Punkte für Reaktionen
76
Punkte
114
Folgende Scripte werden afaik durch optware eh ausgeführt: /etc/rc.local und /opt/etc/rc.optware, also packs dort rein

Ja das könnte ich machen, danke!

Trotzdem bleibt die Frage...warum ist das nur bei mir so, hat das Problem sonst keiner? Ist bei euch allen der Pfad von vornherein korrekt?
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.060
Punkte für Reaktionen
3.873
Punkte
488
Hier meine aktuelle Checkliste, die ich nach jedem Firmware-Update durchmache.
Code:
1.) ipkg wieder einbinden
ln -s /volume1/@optware/ /opt
--
/etc/rc.local pruefen/anpassen:
#!/bin/sh
[ -e /opt/etc/rc.optware ] && /opt/etc/rc.optware

2.) Firmware-wget durch optware-wget ersetzen
mv /usr/syno/bin/wget /usr/syno/bin/wget.org
cp /opt/bin/wget /usr/syno/bin

3.) SVN wieder einrichten
/etc/inetd.conf pruefen/anpassen:
svn stream tcp nowait svn /opt/bin/svnserve svnserve -i -r /volume1/svn
--
/etc/services:
svn             3690/tcp                        #Subversion
svn             3690/udp                        #Subversion
--
killall -HUP inetd

4.) S99ntpdate.sh wieder einbinden
cp /volume1/daten/scripts/S99ntpdate.sh  /usr/syno/etc/rc.d/

5.) /etc/profile pruefen/anpassen
#verdreht am 12.08.2009 gm um Plattenzugriffe zu minimieren
#PATH=/opt/bin:/opt/sbin:$PATH
PATH=$PATH:/opt/bin:/opt/sbin
#Mailstation (12.04.2010 gm)
PATH=$PATH:/usr/syno/mailstation/sbin:/usr/syno/mailstation/bin
Manche der genannten Probleme werden dadurch behoben. Vielleicht hilft das jemandem.

Edit:
zu 4.) noch eine Anmerkung:
S99ntpdate.sh ist ein Script, das beim Booten, die Uhrzeit von meinem Router (oder einem anderen Zeitserver) übernimmt, da die interne Uhr meiner DS209+ sehr ungenau ist. Die IP natürlich ggf. anpassen.
Code:
#!/bin/sh
# S99ntpdate.sh
#
# ntpdate beim Start der DS ausfuehren
#
# 17.04.2010 gm
# Installation: cp S99ntpdate.sh /usr/syno/etc/rc.d
#

case "$1" in

stop)
        ;;

start)
        /usr/sbin/ntpdate -b 192.168.0.1
        ;;

restart)
        $0 stop
        $0 start
        ;;
*)
        echo "usage: $0 { start | stop | restart}" >&2
        exit 1
        ;;

esac

Gruß
Benares
 
Zuletzt bearbeitet:

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.164
Punkte für Reaktionen
412
Punkte
393
Hallo,
Standardpfadangaben gehören in /etc/profile oder wenn es nur für root sein soll dann in /root/.profile.

Gruß Götz
 

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.222
Punkte für Reaktionen
76
Punkte
114
Danke für die Info's!
Habe mir auch so eine Liste zugelegt.

Noch eine Frage:
Wie muss ich denn meinen export PATH Befehl in das optware skript einpflegen?

So sieht mein Skript aus:

Rich (BBCode):
#!/bin/sh

# Optware setup

case $1 in
start)
        for i in /opt/etc/init.d/S??* ;do

                # Ignore dangling symlinks (if any).
                [ ! -f "$i" ] && continue

                case "$i" in
                   *.sh)
                        # Source shell script for speed.
                        (
                                trap - INT QUIT TSTP
                                set start
                                . $i
                        )
                        ;;
                   *)
                        # No sh extension, so fork subprocess.
                        $i start
                        ;;
                esac
        done
        ;;

stop)

        for i in /opt/etc/init.d/S??* ;do

                # Ignore dangling symlinks (if any).
                [ ! -f "$i" ] && continue

                case "$i" in
                   *.sh)
                        # Source shell script for speed.
                        (
                                trap - INT QUIT TSTP
                                set stop
                               . $i
                        )
                        ;;
                   *)
                        # No sh extension, so fork subprocess.
                        $i stop                       ;;
                esac
          done
          ;;

*)
          echo "Usage: $0 [start|stop]"
          ;;
esac

Und das hier möchte ich gerne das er beim Start setzt/ausführt:

Rich (BBCode):
export PATH='/opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/sy
no/bin:/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/
sbin:/usr/local/bin:/usr/local/sbin/:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin
:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin'

Bevor ich das Skript selbst anpasse und mehr kaputt mache als richte, frage ich lieber! :)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Wo würde es denn für DICH Sinn machen das zu schreiben? gibt ja eigentlich nur zwei Möglichkeiten: Vor oder nach der Schleife, welche die Dienste startet. Und den Einwand von goetz, dass Standartpfade nach /etc/profile res /root/.profile kommen haste gelesen?
 

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.222
Punkte für Reaktionen
76
Punkte
114
Nachdem es um Optware Dienste geht würde ich sagen davor - nur wie einfügen?
Direkt so wie ich es im putty eingebe oder gehört da noch ein Kommando davor?

Ja den Einwand von goetz hab ich gelesen, nur im profile file passt der PATH ja und diesen export PATH finde ich da nicht wirklich (da steht nur was von export PATH PGDATA oder so)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Nachdem es um Optware Dienste geht würde ich sagen davor - nur wie einfügen?
Direkt so wie ich es im putty eingebe oder gehört da noch ein Kommando davor?
Genau davor. Dahinter würde keinen Sinn machen ;) Genau so wie in Putty gibst du das auch in einem Script ein. Ein Shellscript arbeitet ja einzelne Shellkommandos ab. Also genau so wie auf der Shell
Ja den Einwand von goetz hab ich gelesen, nur im profile file passt der PATH ja und diesen export PATH finde ich da nicht wirklich (da steht nur was von export PATH PGDATA oder so)
Wenn dort export PATH steht dann wärst du dort eigentlich genau richtig. Du kannst den PATH ja noch anpassen bevor der export gemacht wird. Ich würde das wie von goetz vorgeschlagen nur in profile machen. Dann haste solche Pfadgeschichten immer schön an einem Ort und musst bei Problemen nicht x Files durchsuchen
 

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.222
Punkte für Reaktionen
76
Punkte
114
Also würde das so passen?

optware.sh:
Rich (BBCode):
#!/bin/sh

# Optware setup

export PATH='/opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/sy
no/bin:/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/
sbin:/usr/local/bin:/usr/local/sbin/:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin
:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin'

case $1 in
start)
        for i in /opt/etc/init.d/S??* ;do

                # Ignore dangling symlinks (if any).
                [ ! -f "$i" ] && continue

                case "$i" in
                   *.sh)
                        # Source shell script for speed.
                        (
                                trap - INT QUIT TSTP
                                set start
                                . $i
                        )
                        ;;
                   *)
                        # No sh extension, so fork subprocess.
                        $i start
                        ;;
                esac
        done
        ;;

stop)

        for i in /opt/etc/init.d/S??* ;do

                # Ignore dangling symlinks (if any).
                [ ! -f "$i" ] && continue

                case "$i" in
                   *.sh)
                        # Source shell script for speed.
                        (
                                trap - INT QUIT TSTP
                                set stop
                               . $i
                        )
                        ;;
                   *)
                        # No sh extension, so fork subprocess.
                        $i stop                       ;;
                esac
          done
          ;;

*)
          echo "Usage: $0 [start|stop]"
          ;;
esac

Mir persönlich gefällt die Lösung mehr als im profile, da bisher das optware.sh erhalten blieb!
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Und wieso machst du das nicht ausschliesslich im start-case? Ich würde das im start-case noch vor der for-Schleife machen
 

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.222
Punkte für Reaktionen
76
Punkte
114
Ahhhh ok, also so?

Rich (BBCode):
#!/bin/sh

# Optware setup

case $1 in
start)

export PATH='/opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin/:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin'

        for i in /opt/etc/init.d/S??* ;do

                # Ignore dangling symlinks (if any).
                [ ! -f "$i" ] && continue

                case "$i" in
                   *.sh)
                        # Source shell script for speed.
                        (
                                trap - INT QUIT TSTP
                                set start
                                . $i
                        )
                        ;;
                   *)
                        # No sh extension, so fork subprocess.
                        $i start
                        ;;
                esac
        done
        ;;

stop)

        for i in /opt/etc/init.d/S??* ;do

                # Ignore dangling symlinks (if any).
                [ ! -f "$i" ] && continue

                case "$i" in
                   *.sh)
                        # Source shell script for speed.
                        (
                                trap - INT QUIT TSTP
                                set stop
                               . $i
                        )
                        ;;
                   *)
                        # No sh extension, so fork subprocess.
                        $i stop                       ;;
                esac
          done
          ;;

*)
          echo "Usage: $0 [start|stop]"
          ;;
esac
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ja so würd ichs machen, ABER stell unbedingt sicher, dass das Kommando (export) und die gesamten Pfade ohne Zeilenumbrüche auf einer Zeile stehen. Sonst dürfte das Kommando nicht das machen was du haben willst ;)
 

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.222
Punkte für Reaktionen
76
Punkte
114
Ja so würd ichs machen, ABER stell unbedingt sicher, dass das Kommando (export) und die gesamten Pfade ohne Zeilenumbrüche auf einer Zeile stehen. Sonst dürfte das Kommando nicht das machen was du haben willst ;)

Alles klar, danke.
Habs angepasst und werde mal testen!

EDIT: Scheint zu klappen, ipkg update funktioniert nach einem Reboot immer noch!
 
Zuletzt bearbeitet:

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.222
Punkte für Reaktionen
76
Punkte
114
Hallo - ich weis schön langsam werde ich lästig und es handelt sich ja nur um das ipkg update das man wirklich nicht oft benötigt aber:

Habe heute nochmal den export PATH gecheckt und er passt wieder nicht, d.h. der Reboot war damals nicht schuld!
Folglich bringt es auch nichts wenn ich diesen PATH im optware.sh setze, da er sich sowieso, nach einiger Zeit, wieder umstellt - wodurch auch immer?
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.060
Punkte für Reaktionen
3.873
Punkte
488
Ich denke, du hast das Prinzip mit der Vererbung von Variablen (PATH ist auch eine) bei Linux noch nicht verstanden. Die (ererbten) Variablen bzw. neu gesetzten gelten nur für den Prozess selbst und dessen Kinder, wenn die Variablen exportiert werden (export PATH). Was du also in in deinen Boot-Scripten einstellst, betrifft also nur die Prozesse, die daraus gestartet werden.

Wenn du dich interaktiv anmeldest, startet sozusagen eine komplett neue Prozesshierarchie. Die Einstellungen aus den Boot-Scripten gelten dann nicht mehr. Es zählt das, was der telnet/ssh-Daemon geerbt und an seine Kinder (letztendlich die Shell) weitervererbt hat. Bevor du aber den Prompt siehst, durchläuft die Shell noch einige Scripts, in denen noch einige Einstellungen getroffen werden und die man auch anpassen kann. Das sind /etc/profile (alle User) und dann .profile im Home-Verzeichnis des jeweiligen Benutzers. Was du letztendlich am Prompt an Variablen siehst (env, set, usw) ist die Summe von allem.

Gleiches gilt für Scripts, die z.B. per cron ausgeführt werden. Jedes Script sollte daher die Variablen selbst setzen, die es benötigt.

Langer Rede kurzer Sinn: Einstellungen für interactive Logins müssen in /etc/profile und/oder ~/.profile (optware.sh ist dann egal)

Ich hoffe, ich habe mich verständlich ausgedrückt.

Gruß
Benares
 
Zuletzt bearbeitet:

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.222
Punkte für Reaktionen
76
Punkte
114
OK danke für die Info's, ich glaube ich habs verstanden :)
Dann schmeiß ich das mal aus dem optware.sh raus!

Und wie/wo füge ich nun diesen Teil

Rich (BBCode):
export PATH='/opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin/:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin'

in profile ein

Rich (BBCode):
#/etc/profile: system-wide .profile file for ash.
PATH="$PATH:/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin"
umask 022
#This fixes the backspace when telnetting in.
#if [ "$TERM" != "linux" ]; then
#        stty erase
#fi
PGDATA=/var/service/pgsql
export PATH PGDATA
HOME=/root
export HOME
TERM=${TERM:-cons25}
export TERM
PAGER=more
export PAGER
PS1="`hostname`> "
alias dir="ls -al"
alias ll="ls -la"
ulimit -c unlimited

Danke für die Hilfe!
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat