So installieren Sie eine Liste von Paketen mit Datei mit Kommentaren

313
tarabyte

Ich möchte eine große Datei von Abhängigkeiten mit Kommentaren und Zeilenumbrüchen organisieren. Zum Beispiel:

# Widget 1 dependences package_a package_b  # Widget 2 dependencies package_x package_y package_z 

Diese Zeile schien sinnvoll zu sein, aber ich verstehe nicht, warum ich die Fehlermeldung bekomme, dass Elemente aus der Liste nicht genau gefunden werden können.

E: Unable to locate package f2c gfortran libblas-dev liblapack-dev libpcre3-dev libreadline-dev 

Es ist, als würde meine gesamte Whitespace-Liste als ein Paket behandelt.

 # Use 'strict mode', because i don't looove debugging #!/bin/bash set -euo pipefail IFS=$'\n\t'  sudo apt-get install $(grep -vE "^\s*#" my_dependencies | tr "\n" " ") echo "$(grep -vE "^\s*#" my_dependencies | tr "\n" " ")" 
1
Aber ist es das, was du sagst? Es ist nicht einmal ungewöhnlich. Wie Sie anhand Ihrer Ausgabe sehen können, scheint eines der Pakete in den Repos zu fehlen, die Ihnen zur Verfügung stehen. Seth vor 6 Jahren 0

2 Antworten auf die Frage

1
Cyrus

Ich gehe davon aus, dass Sie den Inhalt der Variablen geändert haben IFS. Ich empfehle, Ihre IFS-Variable auf ihren Standard zurückzusetzen:

IFS=$' \t\n' 
0
tarabyte

Wenn Sie das Zeilenvorschubzeichen übersetzen, müssen Sie ein Feldtrennzeichen verwenden, das im strengen Bash-Modus gültig ist, damit die Wortaufteilung funktioniert. Tab oder \twird hier ausgewählt:

sudo apt-get install $(grep -vE "^\s*#" my_dependencies | tr "\n" "\t")