ubuntuusers.de

Programme per Skript installieren

Status: Ungelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

Sterndeuter

Avatar von Sterndeuter

Anmeldungsdatum:
23. Januar 2009

Beiträge: 505

Hallo ihr lieben Fragen-Beantworter!

Ich habe vorhin mein System neu aufgesetzt und müsste jetzt einige Programme installieren, Sicherungsordner kopieren und einfügen und Dateien verändern (vor allem zur Installation des Epson-Scanners). Nun die Frage: Sind diese Vorgänge über ein Skript aufrufbar? Ich stelle mir das so vor, dass ich ein Skript (mit Pfadangaben für Ordner etc. und Befehlen) erstelle und dieses bei einem Neu-Aufsetzen des Systems einfach ausführe.

UIch bräuchte hierzu wahrscheinlich Hilfe, denn meine ganzen Erfahrungen mit Skripts und den Befehlen in Skripts beschränken sich auf die Lösung aus diesem Thread: http://forum.ubuntuusers.de/topic/startskript-fuer-autostart-reihenfolge-erstel/ 🙄

Ich freu' mich schon auf eure Antworten 👍

Liebe Grüße, Daniel

ghost1601

Avatar von ghost1601

Anmeldungsdatum:
19. Dezember 2008

Beiträge: 449

Wohnort: Schwedt

Ja klar ist das möglich... Du legst dir ein Shell-Script an und trägst du die nötigen Befehle ein...Dann lässt du es über eine Shell starten und los geht's.

Lg

JaiBee

Avatar von JaiBee

Anmeldungsdatum:
8. Juni 2007

Beiträge: 1469

Shell-Skript sind eigentlich recht simpel, wenn man mal das Grundprinzip verstanden hat und die nötigen Grundlagen besitzt.

Im Wiki findest du eine Einführung und eine Befehlsübersicht (natürlich nicht vollständig) (im Internet findet man auch viel).

Für deine Zwecke benötigst du vermutlich folgende Befehle / Programme:

  • sudo – Root-Rechte

  • apt-get – Programme installieren

  • cp – kopieren

  • mv – verschieben

  • sed oder awk – Textdateien zu verändern

Am Anfang wird es sicherlich noch etwas unverständlich sein, aber wenn es dann mal funktioniert macht es Spaß (Erfolgserlebnis 😉).

Gruß JaiBee

Sterndeuter

(Themenstarter)
Avatar von Sterndeuter

Anmeldungsdatum:
23. Januar 2009

Beiträge: 505

Aber wie funktioniert das mit den root-Rechten in diesen Skripten? Muss man das Skript einfach als root starten und das läuft? Oder kommt (als normaler User) eine Passwortabfrage?

Und wie ist das mit Einstellungen, die ich in einigen Programmen machen muss? Ich meine hier jetzt speziell die Konfiguration von Wine, da müssen in einer bestimmten Reihenfolge die Laufwerke hinzugefügt werden, damit das (für mich wichtige) Programm funktioniert... Und bei der Installation des Scanners z. B. muss in einigen Dateien ein Eintrag überprüft werden, ob er drinsteht.

Kann man damit auch .iso-Dateien einbinden und dann damit arbeiten?

Tja, ihr seht, ich habe viele Fragen und keine Antworten, ich schaue mich jetzt erstmal ein wenig um und poste dann meinen ersten Entwurf des Skripts.

JaiBee

Avatar von JaiBee

Anmeldungsdatum:
8. Juni 2007

Beiträge: 1469

Sterndeuter schrieb:

Aber wie funktioniert das mit den root-Rechten in diesen Skripten? Muss man das Skript einfach als root starten und das läuft? Oder kommt (als normaler User) eine Passwortabfrage?

Entweder du rufst das Skript mit sudo auf oder du schreibst es direkt ins Skript.

Und wie ist das mit Einstellungen, die ich in einigen Programmen machen muss? Ich meine hier jetzt speziell die Konfiguration von Wine, da müssen in einer bestimmten Reihenfolge die Laufwerke hinzugefügt werden, damit das (für mich wichtige) Programm funktioniert...

Dazu musst du vermutlich die Wine-Konfigurationsdateien im versteckten Ordner .wine im Homeverzeichnis bearbeiten (Dateiendung .reg). Was man da genau bezüglich der Laufwerke ändern muss, weiß ich aber nicht.

Und bei der Installation des Scanners z. B. muss in einigen Dateien ein Eintrag überprüft werden, ob er drinsteht.

Das ist möglich.

Kann man damit auch .iso-Dateien einbinden und dann damit arbeiten?

CD-Images (Abschnitt „Optional-ISO-Images-ueber-ein-Skript-einbinden“) oder FUSE/fuseiso

Gruß

EDIT: Wenn du viele Programmeinstellungen per Skript anpassen möchtest, ist das ein ziemlicher Aufwand. Ein Backup des Homeverzeichnises, das alle Programmeinstellungen enthält, ist auf jeden Fall unkomplizierter (und übersteht auch eine Neuinstallation).

Nobuddy

Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Hallo,

ich verschieben den Thread mal in das passende Forum.

Grüße Nobuddy

Sterndeuter

(Themenstarter)
Avatar von Sterndeuter

Anmeldungsdatum:
23. Januar 2009

Beiträge: 505

Nobuddy: Danke für's Verschieben, hab dieses Forum wohl übersehen.

JaiBee: Klar wär's einfacher, ein Backup des Home-Ordners zu erstellen. Aber zwei Gründe sprechen (für mich) dagegen: 1.: Einige Änderungen müssen an Dateien außerhalb des Home-Ordners vorgenommen werden und 2.: das Erstellen von Shell-Skripten ist für mich leider noch ein Buch mit mindestens 17 Siegeln, welches ich unbedingt noch lernen (und verstehen 😉 ) möchte.

JaiBee

Avatar von JaiBee

Anmeldungsdatum:
8. Juni 2007

Beiträge: 1469

Sterndeuter schrieb:

2.: das Erstellen von Shell-Skripten ist für mich leider noch ein Buch mit mindestens 17 Siegeln, welches ich unbedingt noch lernen (und verstehen 😉 ) möchte.

Das ist ein gutes Argument; mit etwas Ehrgeiz ist das kein Problem 😉.

Gruß

Sterndeuter

(Themenstarter)
Avatar von Sterndeuter

Anmeldungsdatum:
23. Januar 2009

Beiträge: 505

Hmm, jetzt hab ich gleich mal die erste konkrete Frage: Wie kann ich eine Zeile an eine bestimmte Datei anhängen? Also die Datei nicht überschreiben, sondern nur unten drunter einfügen...

Was ich bis jetzt gefunden habe ist nur das ">", das die Ausgabe eines Befehls in eine Datei schreibt, wodurch alle Daten der Datei überschrieben werden. EDIT: ">>" hängt die Ausgabe an die Datei an, aber wie definiere ich eine bestimmte Textzeile als Ausgabe? Meine Überlegung dazu wäre:

sudo gedit "deb http://packages.medibuntu.org/ karmic free non-free" >> /etc/apt/source.list

Wird vermutlich nicht so passen, also bitte Verbesserungsvorschläge 😀

Schöne Grüße!

Noch ein EDIT: Der Befehl sed -e '[Adresse]a\Textzeile' [Dateiname] sieht aber auch sehr interessant aus, er hängt die Zeile an ein Dokument an. Allerdings habe ich hier folgendes Problem: Wenn ich die Adresse, also die Zeile, nach der etwas angefügt werden soll, leer lasse, passiert gar nichts, wenn ich dort eine Zahl angebe kommt die Ausgabe im Terminal:

daniel@Tubamukl:~/Desktop$ sed -e '1a\Testzeile 1' Test
Vorgegebene Zeile im Dokument
Testzeile 1

Umleiten mit >> hat auch nichts gebracht. Was tun?

Nobuddy

Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

echo & tee wären da das Richtige.

tee --help

Gibt Dir die notwendigen Infos.

Beispiel, erstellen in /home/USER

echo "Diese Zeile hänge ich an eine Datei an. Sollte Diese Datei nicht vorhanden sein, so wird sie dadurch erstellt." | tee -a /home/USER/ORT/Datei.txt

Beispiel, erstellen in / root

echo "Diese Zeile hänge ich an eine Datei an. Sollte Diese Datei nicht vorhanden sein, so wird sie dadurch erstellt." | sudo tee -a /tmp/ORT/Datei.txt

JaiBee

Avatar von JaiBee

Anmeldungsdatum:
8. Juni 2007

Beiträge: 1469

Nobuddy schrieb:

Beispiel, erstellen in /home/USER

echo "Diese Zeile hänge ich an eine Datei an. Sollte Diese Datei nicht vorhanden sein, so wird sie dadurch erstellt." | tee -a /home/USER/ORT/Datei.txt

In deinem Fall benötigst du zwar ein sudo (→ "tee-Variante") aber oft reicht auch folgendes aus:

echo "Diese Zeile hänge ich an eine Datei an. Sollte Diese Datei nicht vorhanden sein, so wird sie dadurch erstellt." >> /home/USER/ORT/Datei.txt

Im Wiki gibt's dazu auch noch ein paar Infos, falls es dich interessiert.

Gruß

Sterndeuter

(Themenstarter)
Avatar von Sterndeuter

Anmeldungsdatum:
23. Januar 2009

Beiträge: 505

Wieso benötige ich ein sudo für die tee-variante? Müsste das nicht so funktionieren:

#!/bin/bash

#### Skype installieren ####
sudo echo "deb http://packages.medibuntu.org/ karmic free non-free" | tee -a /etc/apt/source.list &&		# Medibuntu-Quelle hinzufügen
sudo wget http://www.medibuntu.org/sources.list.d/hardy.list -O /etc/apt/sources.list.d/medibuntu.list &&	# Download von medibuntu.org; -O schreibt in stdout (= Terminal)
sudo apt-get update &&												# Update der Paketquellen
sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring &&					# Installation ohne Authentifizierung von Medibuntu erlaubern
sudo apt-get -q update &&											# erneutes Update der Paketquellen, diesmal ohne Ausgabe im Terminal
# Dieser Teil diente lediglich dem Zufügen der Medibuntu-Quellen zu den Repositories, keine Funktion im Installationsverlauf von Skype.

sudo gdebi /home/daniel/Desktop/Installationsdateien/skype-ubuntu-intrepid_2.1.0.47-1_i386.deb			# Installation von Skype aus dem Installationsordner

exit 0

Mein sudo vor dem Befehl ist nötig, da die Datei /etc/apt/source.list mit root-Rechten bearbeitet werden muss. Ein vorheriger Versuch mit einer "Nicht-root-Datei" hat auch ohne sudo funktioniert.

Nobuddy

Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Ganz einfach, wenn Du außerhalb von /home/USER etwas machen möchtest, benötigst Du Rootrechte, darum > sudo!

JaiBee

Avatar von JaiBee

Anmeldungsdatum:
8. Juni 2007

Beiträge: 1469

Sieht für den Anfang schon gut aus.

sudo gdebi /home/daniel/Desktop/Installationsdateien/skype-ubuntu-intrepid_2.1.0.47-1_i386.deb			# Installation von Skype aus dem Installationsordner

Hier kannst du 2 Dinge verbessern:

  • die Variable $HOME, statt /home/daniel verwenden (ist aber nicht unbedingt notwendig)

  • Installiere das Debian-Paket besser mit dpkg – dann brauchst du auch keine grafische Oberfläche. Grafische Programme sollte man außerdem nicht mit sudo starten, sondern mit gksu (Gnome, Ubuntu) oder kdesudo (bei KDE).

Außerdem könnte man eventuell die Skype-Versionsbezeichnung durch einen Platzhalter ersetzen. So würde das dann insgesamt aussehen:

sudo dpkg -i $HOME/Desktop/Installationsdateien/skype-ubuntu-*i386.deb			# Installation von Skype aus dem Installationsordner

Gruß JaiBee

Sterndeuter

(Themenstarter)
Avatar von Sterndeuter

Anmeldungsdatum:
23. Januar 2009

Beiträge: 505

Danke euch beiden, ich werde mich wieder melden, wenn ich weitere Fragen habe 👍

Antworten |