Ich habe sehr sehr wenig Erfahrung mit Ruby und ich versuchte, eine einfache Homebrew-Formel zu bauen. Ich hatte ein einfaches Testprojekt mit der folgenden StrukturErstellen einer C++ - Formel für Homebrew
.
├── Makefile
└── test.cpp
0 directories, 2 files
Und dann habe ich die folgende .rb
Formel Datei
class Testbrew < Formula
desc ""
homepage ""
url ""
version ""
head ""
sha256 ""
def install
# system "make"
# system("g++ -std=c++14 -O3 test.cpp -o testbrew")
system "g++", "-std=c++14",
"-O3",
"-Wall",
"-Werror",
"-Wextra",
"-pedantic",
"-Wvla",
"test.cpp",
"-o testbrew"
bin.install "testbrew"
ohai("Done!")
end
end
Das verwirrende Teil ist, dass die ersten beiden Zeilen der system
Arbeit kommentiert die Installation Paket aber das dritte nicht, keine Ahnung warum? Wenn ich die dritte Linie versuche ich den Fehler
==> g++ -std=c++14 -O3 -Wall -Werror -Wextra -pedantic -Wvla test.cpp -o testbrew
Error: No such file or directory - testbrew
Auch als Followup, gibt es bestimmte Dinge, dass der Funktionsaufruf system()
dem Benutzer nicht erlauben, zu tun? d. h. gibt es Sicherheitsbeschränkungen (zum Beispiel mit ptrace
)?
'system' nicht Ihre' bash_profile' darüber im Klaren sein, vielleicht 'testbrew' ist nicht auf die' PATH' hinzugefügt zu werden, wie es regelmäßig tut. Vielleicht versuche ich einen absoluten Weg zu gehen. Siehe http://stackoverflow.com/questions/28555822/how-do-i-make-rubys-system-call-aware-of-my-bash-profile-aliases –
@maxple aber wie funktioniert dann das zweite 'System () Call-Arbeit in der gleichen Situation? Die zweite funktioniert gut und 'bin.install' kann sie in das benötigte Verzeichnis kopieren – Curious
dunno. Viel Glück –