Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

mit sed einen Pfad in /usr/sbin/debootstrap ändern indem slashes vorkommen

4 views
Skip to first unread message

benja...@gmx.de

unread,
May 23, 2013, 2:50:02 PM5/23/13
to

hi liste,

Fᅵr meine Debian debootstrap Installation mᅵchte ich gerne ein Script schreiben

ich mᅵchte im prinzip in „/usr/sbin/debootstrap“ die Zeile DEBOOTSTRAP_DIR=/usr/share/debootstrap

durch DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap

ersetzen. Manuell mit
nano /usr/sbin/debootstrap
ist das kein Problem, ᅵndern dann speichern und fertig. Ich mᅵchte das ganze aber automatisieren

ich geh davon aus das sed mit den 3 Slashes ein Problem hat, aber ich muss ja alles ᅵndern, zumal das nicht die einzige stelle und
auch nicht das einzige file ist, das zu ᅵndern ist.

- - - - - -

ein wenig ausfᅵhrlicher :

Wenn ich das Bash Script laufen lassen mᅵchte, fᅵr meine Debian debootstrap Installation mit diesem Inhalt :

#!/bin/bash

OLD="DEBOOTSTRAP_DIR=/usr/share/debootstrap"

NEW="DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap"

#sed 's/'$OLD'/'$NEW'/g' /debootstrap1

sed „s/'$OLD'/'$NEW'/g“ /debootstrap1

bekomme ich eine Fehlermeldung und ich weiᅵ im Moment nicht wie ich die beheben kann

sed: -e expression #1, char 24: unknown option to `s'

ob ich die auskommentierte sed Zeile oder die darᅵber nutze ergibt den selben Ausgabefehler :(

manuell mit nano /usr/sbin/debootstrap ist das kein Problem speichern und fertig.

Ich mᅵchte das ganze aber automatisieren. Den Ausgabefehler bekomme ich auch mit

sed 's/"DEBOOTSTRAP_DIR=/usr/share/debootstrap"/"DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap"/g' /usr/sbin/debootstrap

ich hoffe jemand hat mir einen Tipp :)


Mit freundlichen Grᅵᅵen


ben

Ulf Volmer

unread,
May 23, 2013, 3:00:02 PM5/23/13
to
On Thu, May 23, 2013 at 08:41:18PM +0200, benja...@gmx.de wrote:

> ich m�chte im prinzip in "/|usr/sbin/debootstrap" ||die
> Zeile||DEBOOTSTRAP_DIR=/usr/share/debootstrap|
>
> |durch DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap|

[...]

> sed 's/"DEBOOTSTRAP_DIR=/usr/share/debootstrap"/"DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap"/g'

Statt s/a/b/ kannst Du auch einen anderen Trenner verwenden, also

sed 's;DEBOOTSTRAP_DIR=/usr/share/debootstrap;DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap;g'

sonst mu�t Du die / durch einen vorgestellten \ escapen:

sed 's/DEBOOTSTRAP_DIR=\/usr\/share\/debootstrap/DEBOOTSTRAP_DIR=\/tmp\/usr\/share\/debootstrap/g'

Gru�
Ulf


--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-g...@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listm...@lists.debian.org (engl)
Archive: http://lists.debian.org/2013052318...@u-v.de

Wolfgang Werner

unread,
May 23, 2013, 3:10:02 PM5/23/13
to

> hi liste,

hi

> Für meine Debian debootstrap Installation möchte ich gerne ein Script schreiben
> ich möchte im prinzip in „/usr/sbin/debootstrap“ die
> ZeileDEBOOTSTRAP_DIR=/usr/share/debootstrap
> durch DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap
> ersetzen. Manuell mit
> nano /usr/sbin/debootstrap
> ist das kein Problem, ändern dann speichern und fertig. Ich
> möchte das ganze aber automatisieren
> ich geh davon aus das sed mit den 3 Slashes ein Problem
> hat, aber ich muss ja alles ändern, zumal das nicht die einzige stelle und
> auch nicht das einzige file ist, das zu ändern ist.

> - - - - - -
> ein wenig ausführlicher :
> Wenn ich das Bash Script laufen lassen möchte, für meine Debian
> debootstrap Installation mit diesem Inhalt : #!/bin/bash
> OLD="DEBOOTSTRAP_DIR=/usr/share/debootstrap"
> NEW="DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap"
> #sed 's/'$OLD'/'$NEW'/g' /debootstrap1
> sed „s/'$OLD'/'$NEW'/g“ /debootstrap1

versuch mal:

sed "s,$OLD,$NEW,g" /debootstrap1

sprich als Trennzeichen , nicht / sonst müssten alle / im Pfad escaped werden, was auch hilft.

> bekomme ich eine Fehlermeldung und ich weiß im Moment nicht wie ich die beheben kann
> sed: -e expression #1, char 24: unknown option to `s'
> ob ich die auskommentierte sed Zeile oder die darüber nutze
> ergibt den selben Ausgabefehler :(
> manuell mit nano /usr/sbin/debootstrapist das kein Problem speichern und fertig.
> Ich möchte das ganze aber automatisieren. Den Ausgabefehler bekomme ich auch mit
> sed
> 's/"DEBOOTSTRAP_DIR=/usr/share/debootstrap"/"DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap"/g' /usr/sbin/debootstrap
> ich hoffe jemand hat mir einen Tipp :)


> Mit freundlichen Grüßen


> ben
>

Gruss Wolfgang



--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-g...@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listm...@lists.debian.org (engl)
Archive: http://lists.debian.org/1395627448.2...@yahoo.de

benja...@gmx.de

unread,
May 23, 2013, 5:10:01 PM5/23/13
to
danke euch beiden das hat mir geholfen hier nun komplett :

#!/bin/bash
cp /usr/sbin/debootstrap /root/debootstrap_org
sed 's,DEBOOTSTRAP_DIR=/usr/share/debootstrap,DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap,g' /root/debootstrap_org > /root/debootstrap_new
cp /root/debootstrap_new /usr/sbin/debootstrap

die datei wird korrekt ge�ndert als /root/debootstrap_new abgelegt.

nur noch ein Problem bleibt mir

cp: cannot create regular file `/usr/sbin/debootstrap': Read-only file system

der fehler kommt bei der "cp /root/debootstrap_new /usr/sbin/debootstrap" Zeile
mit der ich die originale datei durch die neue ersetze ( sollte eigentlich gehen )
wenn ich mit nano das File editiere like :

"nano /usr/sbin/debootstrap"

dann geht es ohne Probleme warum ?


mfg

ben

Michael Stummvoll

unread,
May 24, 2013, 3:50:01 AM5/24/13
to
Hi,

> Für meine Debian debootstrap Installation möchte ich gerne ein
H> Script
> schreiben
>
> ich möchte im prinzip in "/|usr/sbin/debootstrap" ||die
> Zeile||DEBOOTSTRAP_DIR=/usr/share/debootstrap|
>
> |durch DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap|
>
> ersetzen.

Nein, das möchtest du nicht. Manuell an von dpkg installierten Scripten
rumfummeln ist unter Debian eine ganz schlechte Idee. Aber wenn man mal
in das debootstrap-script reinschaut, sieht man, dass DEBOOTSTRAP_DIR
nur gesetzt wird, wenn es nicht bereits gesetzt ist. Das heißt, es
reicht vollkommen, wenn du sicherstellst, dass im environment
DEBOOTSTRAP_DIR bereits zu dem gesetzt ist, was du möchtest, wenn
debootstrap aufgerufen wird. Das wäre dann entweder

> DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap debootstrap
Was DEBOOTSTRAP_DIR nur für diesen einen Aufruf definiert

oder

> export DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap
> [...]
> debootstrap
Was die var script-weit definiert

Wenn debootstrap selbst auch automatisiert aufgerufen wird, reicht es
auch, wenn das aufrufende Script diese Umgebungsvariable hat, da diese
dann an debootstrap vererbt wird

Liebe Grüße,
Micha


--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-g...@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listm...@lists.debian.org (engl)
Archive: http://lists.debian.org/20130524094028.4a0116bd@eddie

benja...@gmx.de

unread,
May 24, 2013, 5:50:03 AM5/24/13
to
hi Michael,

ich danke dir für den Tipp :) es ist nun fast gelöst.

nur eins bleibt noch

wenn "DEBOOTSTRAP_DIR" in env eingetragen ist, wird "ok" ausgegeben wenn
nicht dann "nicht vorhanden"
aber die Zeile

export "DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap"

wird nicht im Script ausgeführt. script : http://pastebin.com/VydiwrFG

wenn ich sie per c&p in die shell kopiere und starte, danach env
eintippe steht der Eintrag drin
und mein Script sagt auch OK :) siehe hier : http://pastebin.com/mSUTQny5
(zeile 33 isn bug die ist rausgeflogen nun :) )


mfg

ben
Archive: http://lists.debian.org/519F3489...@gmx.de

Ulf Volmer

unread,
May 24, 2013, 5:10:03 PM5/24/13
to
On Fri, May 24, 2013 at 11:36:09AM +0200, benja...@gmx.de wrote:

> #!/bin/bash
> env > /root/env.txt 2>/root/env.fehler.txt
> if egrep "DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap" /root/env.txt; then
> echo 'ok ist vorhanden'
> else
> echo 'nicht vorhanden ich erstelle es :'
> export "DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap"
> fi

Dein Script wird in einer neuen Shell ausgef�hrt, darin wird DEBOOTSTRAP_DIR
auch gesetzt, davon bekommt die aufrufende Shell nur leider nicht mit.

Wenn Du das in der Form auch wirklich in der aufrufenden Shell brauchst,
mu�t Du das Script mit source oder . aufrufen.

Gru�
Ulf


--
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-g...@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listm...@lists.debian.org (engl)
Archive: http://lists.debian.org/2013052421...@u-v.de

benja...@gmx.de

unread,
May 25, 2013, 7:40:01 AM5/25/13
to
hi Ulf,

danke dir f�r die Info, das ist dann nat�rlich klar warum es nicht geht :)
ich trage es nun in der Shell die es ben�tigt separat nochmal ein und gut :)

@ Michael & Wolfgang :

danke euch nat�rlich auch nochmal vielmals f�r die Hilfe das spart mir
extrem viel zeit beim mich weiter in das Thema einarbeiten :)

mfg

ben
Archive: http://lists.debian.org/51A0A295...@gmx.de
0 new messages