Как заставить sha1sum работать на Mac OS X?
У меня есть приложение, которое я портирую, и как часть набора тестов, я запускаю sha1sum
, Я хотел бы иметь тестовый код, который работает на всех моих платформах и не зависит от платформы. Mac OS X, первая платформа без sha1sum
приложение. Я нашел shasum
приложение хотя. Итак, я создал символическую ссылку:
cd /usr/local/bin; ln -s /usr/bin/shasum sha1sum
Тем не менее, тест завершается с ошибкой Perl:
bash-3.2$ sha1sum -c files.sha1sum
perl version 5.16.2 can't run /usr/local/bin/sha1sum. Try the alternative(s):
(Error: no alternatives found)
Run "man perl" for more information about multiple version support in
Mac OS X.
bash-3.2$ shasum -c files.sha1sum
smallData.txt: OK
Содержимое /usr/bin/shasum:
#!/usr/bin/perl
=for comment
The contents of this script should normally never run! The perl wrapper
should pick the correct script in /usr/bin by appending the appropriate version.
You can try appending the appropriate perl version number. See perlmacosx.pod
for more information about multiple version support in Mac OS X.
=cut
use strict;
use Config ();
my @alt = grep {m,^$0\d+\.\d+(?:\.\d+)?$,} glob("$0*");
print STDERR <<"EOF-A";
perl version $Config::Config{version} can't run $0. Try the alternative(s):
EOF-A
if(scalar(@alt) > 0) {
for(@alt) {
my($ver) = /(\d+\.\d+(?:\.\d+)?)/;
print STDERR "$_ (uses perl $ver)\n";
}
} else {
print STDERR "(Error: no alternatives found)\n";
}
die <<'EOF-B';
Run "man perl" for more information about multiple version support in
Mac OS X.
EOF-B
Как я могу получить sha1sum
исполняемый файл в моем пути поиска, который будет работать как shasum
делает?
1 ответ
Решение
shasum
это просто обертка для любого shasum5.12
или же shasum5.16
за perl
v5.12 или perl
v5.16.
Поэтому разместите ссылку в /usr/bin
(вместо /usr/local/bin
) и создайте ссылки для двух других версий, аналогичных приведенным ниже:
cd /usr/bin
ln -s shasum sha1sum
ln -s shasum5.12 sha1sum5.16
ln -s shasum5.16 sha1sum5.16
Теперь это работает:
bash-3.2$ sha1sum -c files.sha1sum
smallData.txt: OK