Выпуск:Ошибка показывает
Err:1 http://repo.kali.org/kali kali-rolling InRelease
Мы понимаем, что репозиторий http://repo.kali.org/kali
Теперь я пытаюсь открыть ссылку с помощью firefox, и вижу: "У вас нет прав доступа к /kali на этом сервере"(http://repo.kali.org/kali)
Решение 1:
Попробуйте использовать репозиторий https
, выполнив следующую команду
echo "deb https://http.kali.org/kali kali-rolling main non-free contrib" > /etc/apt/sources.list
Затем попробуйте sudo apt-get update
Если вы обнаружите ту же ошибку, выберите другое решение.
Решение 2:выполните следующую команду.
apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys 7D8D0BF6
Затем попробуйте sudo apt-get update
Если вы обнаружите ту же ошибку, выберите другое решение.
Решение 3:Сохраните резервную копию файла перед изменением файла sources.list
. С помощью текстового редактора добавьте эти строки в файл /etc/apt/sources.list
deb http://http.kali.org/ /kali main contrib non-free deb http://http.kali.org/ /wheezy main contrib non-free deb http://http.kali.org/kali kali-dev main contrib non-free deb http://http.kali.org/kali kali-dev main/debian-installer deb-src http://http.kali.org/kali kali-dev main contrib non-free deb http://http.kali.org/kali kali main contrib non-free deb http://http.kali.org/kali kali main/debian-installer deb-src http://http.kali.org/kali kali main contrib non-free deb http://security.kali.org/kali-security kali/updates main contrib non-free deb-src http://security.kali.org/kali-security kali/updates main contrib non-free
Затем попробуйте sudo apt-get update
Если вы обнаружите ту же ошибку, выберите другое решение.
Это трудно сделать, так как sed
не поддерживает осмотр -вокруг и т. д. (, как это можно сделать в PCRE ). Было бы проще перевернуть строку и заменить третье вхождение перевернутого слова с начала, а затем снова перевернуть.
$ echo 'dog and foo and bar and baz land good' | rev | sed 's/\<dna\>/XXX/3' | rev
dog XXX foo and bar and baz land good
Что касается того, почему ваше выражение не работает, это похоже на ошибку. Обратная -ссылка \3
кажется строкой baz land
, как будто \b
перед and
в .*\band\b
никогда не имело никакого эффекта.
Команда
sed -E 's/(.*)\<and\>((.*\<and\>){2})/\1XYZ\2/'
, кажется, делает правильную вещь в OpenBSD со своим родным sed
(, который использует \<
и \>
вместо\b
).
Мне еще предстоит найти существующий отчет об ошибке GNU sed
или GNU glibc
по этому поводу, хотя я не удивлюсь, если это как минимум связано с ошибкой glibc. 25322(потому что см. ниже ).
Вы можете обойти это, указав немного больше подробностей.:
sed -E 's/(.*)\band\b(.*\band\b.*\band\b)/\1XYZ\2/'
Предлагаю создать проблему. Я протестировал эти примеры, которые приводят к такому же поведению с GNU grep
, GNU sed
и GNU awk
. Кроме одного случая, который отмечен ниже.
Неправильный вывод:
$ echo 'cocoa' | sed -nE '/(\bco){2}/p'
cocoa
sed -nE '/(\<co){2}/p'
и awk '/(\<co){2}/'
тоже ведут себя некорректно, но grep -E '(\<co){2}'
правильно не выводит
Правильное поведение, нет выхода:
$ echo 'cocoa' | sed -nE '/\bco\bco/p'
Неправильный вывод :есть только 1 целое слово it
послеwith
$ echo 'it line with it here sit too' | sed -E 's/with(.*\bit\b){2}/XYZ/'
it line XYZ too
Правильное поведение, ввод не изменен
$ echo 'it line with it here sit too' | sed -E 's/with.*\bit\b.*\bit\b/XYZ/'
it line with it here sit too
Изменение границ слов на \<
и \>
приводит к другой проблеме.
Правильно не изменяет ввод:
$ echo 'it line with it here sit too' | sed -E 's/with(.*\<it\>){2}/XYZ/'
it line with it here sit too
Это правильно изменяет ввод
$ echo 'it line with it here it too' | sed -E 's/with(.*\<it\>){2}/XYZ/'
it line XYZ too
Но этот не может изменить ввод
$ echo 'it line with it here it too sit' | sed -E 's/with(.*\<it\>){2}/XYZ/'
it line with it here it too sit
Кроме того, проблемное поведение наблюдается только в том случае, если конфликтующее слово имеет лишние символы в начале. Например, it
и sit
. Но не в том случае, если в конце есть символы. Например, it
и site
и item
.
$ echo 'it line with it here item too' | sed -E 's/with(.*\bit\b){2}/XYZ/'
it line with it here item too
$ echo 'it line with it here it too item' | sed -E 's/with(.*\<it\>){2}/XYZ/'
it line XYZ too item