src/math.h:23:24: error: openssl/bn.h: No such file or directory
src/math.h:24:25: error: openssl/rsa.h: No such file or directory
src/math.h:25:25: error: openssl/sha.h: No such file or directory
Я предполагаю, что Вам не установили OpenSSL или по крайней мере не пакет разработки, который включает заголовки. Если Вы делаете, заголовки не находятся в /usr/include
или /usr/local/include
, так как это - то, где Лук-шалот смотрит по умолчанию. Можно добавить, что собственные включают путь путем выполнения:
$ make CFLAGS=-I/path/to/openssl
На Debian эти файлы могут быть найдены в libssl-dev
пакет, с которым можно установить apt-get
или Ваше любимое управление пакетом также.
Удалить комментарии из строк, которые имеют IP, запускающийся с 10.4
(это удалит первое #
, Я предполагаю, что у Вас никогда не будет больше):
sed -i '/^#10\.4/{s/^#//}' /etc/hosts
Добавить комментарий к тем строкам:
sed -i '/^10\.4/{s/^/#/}' /etc/hosts
Так, почему был Вашим сбой? Вы использовали c\
что означает:
c\
текстУдалите строки, соответствующие адресу или диапазону адресов, и произведите строки текста, которые следуют за этой командой (каждый, но последнее окончание \, которые удалены из вывода) вместо последней строки (или вместо каждой строки, если никакие адреса не были указаны). Новый цикл запускается после того, как эта команда сделана, так как пространство шаблона будет удалено.
Так, когда Вы работали sed -i '/#10\.4\..*/c\10\.4\..*' /etc/hosts
, эта предназначенная "замена #10\.4\..*
с литеральной строкой #10\.4\..*
". То, что Вы хотели сделать:
sed -i 's/#10\.4\.\(.*\)/10.4.\1/' /etc/hosts`
Вышеупомянутое использование оператор замены (s/from/to/
) и получение шаблона, первый шаблон в \( \)
может упоминаться как \1
, второе как \2
и т.д. Как Вы видите из ответа Michael, это не нужно также, можно просто заменить #10.4
с 10.4
. Или, как в моем ответе выше, можно просто удалить #
один.
Если все, что Вы хотите, должно удалить #
от строк, которые запускаются #10.4.
, можно использовать s
команда, которая заменяет соответствие регулярным выражениям данным текстом замены и оставляет остальную часть строки неизменной. Любой из них работает:
$ sed -i 's/^#10\.4\./10.4./' /etc/hosts
$ sed -i -r 's/^#(10\.4\.)/\1/' /etc/hosts
^
привязка в обоих regexes, в случае, если файл имеет210.4.5.6 foobar # this is a host
– glenn jackman 10.02.2014, 22:49^
привязка в обоих regexes, в случае, если файл имеет210.4.5.6 foobar # this is a host
---------121 положительная сторона--------166833----@glennjackman. Это - то, как у меня был он первоначально, но затем хотя из случаев, куда там вели пробелы. Однако, комментарии после IP вероятны, как Вы указываете так отредактированный ответ, спасибо. – terdon♦ 10.02.2014, 22:52sed -i '/^10\.4/{s/^#//}' /etc/hosts
? Я думаю, что это, возможно, должно было бы бытьsed -i '/^#10\.4/{s/^#//}' /etc/hosts
для нахождения строк, которые запускаются с a#
. – Paul Nelson Baker 11.02.2014, 19:47