Ich schreibe ein Shell-Skript, damit ich schnell Abhängigkeiten auf frischen virtuellen Maschinen über OpenStack installieren kann. Ich habe diese Abhängigkeiten in einer Skriptdatei geschrieben, sondern auf ausgeführt wird, erhalte ich die folgenden Fehler für jeden:Installieren von Programmen über Shell-Skript; Programme nicht gefunden?
E: unable to locate package ***
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: unable to locate package ****
und so weiter. Ich bin nicht sicher, was schief läuft, da ich weiß, dass die Pakete, die ich aufgelistet habe, existieren, und das Ausführen von sudo apt-get install *** (mit den Paketnamen in der Datei) funktioniert wie erwartet. Meine Shell-Datei sieht so aus:
#!/bin/bash
#shell script for installation on a VM
#i've never written a shell script before so bear with me please
apt-get update
apt-get --assume-yes install build-essential
apt-get --assume-yes install git
apt-get --assume-yes install make
apt-get --assume-yes install xclip
apt-get --assume-yes install python
apt-get --assume-yes install liblapack-dev
apt-get --assume-yes install libblas-dev
apt-get --assume-yes install libboost-dev
apt-get --assume-yes install libarmadillo-dev
und ich bin es als sudo bash friendinstscript.sh laufen.
Haben Sie ein Repository richtig konfiguriert? –
extrahieren Sie Ihre Umgebung in eine Datei aus der cmd-Zeile mit 'set> cmdLine.env' und fügen Sie ähnlich dem Anfang Ihres Shell-Skripts, dh' set> script.env' Dann vergleichen Sie sie, 'comm cmdLine.env script.env' Vielleicht finden Sie den Unterschied in der ersten oder zweiten Spalte (3. Spalten sind Daten in beiden Dateien gefunden). Viel Glück. – shellter
Dumme Frage, hier - wie hast du dieses Skript geschrieben? Wenn es DOS-Zeilenumbrüche hat, würde das den Fehler erklären - es könnte ein Paket mit dem Namen 'xclip' existieren, aber dort wird keiner namens' xclip $ '\ r'' sein, was Sie bekommen würden, wenn Sie schrieb dieses Skript in Windows mit Notepad und kopierte es anstelle eines systemeigenen UNIX-Texteditors. –