cpan / perl испортился

Просто добавив вышеприведенный ответ, убедитесь, что ваше локальное доменное имя не заканчивается на .local, похоже, что это зарезервированное имя, поэтому в вашем /etc/dnsmasq.conf:

address=/somesite.local/127.0.0.1

НЕ РАБОТАЕТ

address=/somesite.loc/127.0.0.1

будет работать.

2
задан 23 November 2017 в 16:22

2 ответа

TL; DR: Запуск hash -r или просто запуск новой оболочки обычно исправляет эту проблему.

Если файл на самом деле ушел, то оболочка, вероятно, все еще имеет хэширование.

Сначала я предлагаю вам проверить, что /usr/local/bin/cpan действительно ушел:

ls -l /usr/local/bin/cpan

Если что-то есть, то вы не полностью удалили. Если там ничего нет, вы получите это сообщение:

ls: cannot access '/usr/local/bin/cpan': No such file or directory

Предполагая, что вы получили это сообщение, но bash пытается запустить /usr/local/bin/cpan при вводе cpan и нажмите Enter , проблема, скорее всего, в том, что bash все еще имеет этот хэш. Вместо того, чтобы искать, где внешние команды всегда, оболочки обычно хешируют их местоположения. Поэтому вы можете исправить эту проблему, сообщив bash «перефразировать», выполнив:

hash -r

Или просто запустите новую оболочку.

Если это не сработает, проверьте, является ли это псевдонимом или оболочкой.

Если файл еще не присутствует и еще не хэширован, то, скорее всего, cpan является псевдонимом или оболочкой, которая действует как обертка для /usr/local/bin/cpan. Чтобы убедиться в этом, запустите:

type -a cpan

Если это псевдоним или функция оболочки, это покажет определение. Затем вы можете отключить его с помощью unalias cpan, если это псевдоним или unset -f cpan, если это функция оболочки.

В конечном итоге вы захотите удалить определение из любого сценария запуска. Обычно он будет в файле .bashrc в вашем домашнем каталоге. Псевдонимы иногда определяются в .bash_aliases. (Иногда люди определяют псевдонимы и функции оболочки в .profile, .bash_profile или .bash_login, хотя это не очень хорошая практика.)

Если это не сработает, подумайте, как вы «[run] cpan или какая оболочка вы находитесь.

TL; DR: запуск hash -r или просто запуск новой оболочки обычно устраняет эту проблему. , тогда большинство вероятно, вы либо (a) не выполняете cpan непосредственно через эту команду, либо (b) используете оболочку, отличную от bash. В первом случае нет возможности ответить без дальнейших подробностей.

Последний случай кажется маловероятным, так как ваша оболочка называет себя bash, хотя каждый раз в то время кто-то плохо информировал о символической ссылке, называемой bash к оболочке, которая не является (что нецелесообразно). По правде говоря, я в основном упоминаю об этом на благо других читателей. Основываясь на этом сообщении, вы почти наверняка используете bash.

Однако, если вы не являетесь или не можете быть, запустите echo "$BASH_VERSION", чтобы убедиться, что вы используете bash - - это должно быть отменено в других оболочках - и echo "$SHELL", чтобы увидеть, что ваш называет себя оболочкой .

Некоторые другие оболочки в стиле Бурна, , говорящие bash на «rehash», , имеют rehash, который вы выполнили вместо hash -r. Точно так же вы можете вызвать повторную запись в csh и tcsh.

0
ответ дан 18 July 2018 в 02:45

TL; DR: Запуск hash -r или просто запуск новой оболочки обычно исправляет эту проблему.

Если файл на самом деле ушел, то оболочка, вероятно, все еще имеет хэширование.

Сначала я предлагаю вам проверить, что /usr/local/bin/cpan действительно ушел:

ls -l /usr/local/bin/cpan

Если что-то есть, то вы не полностью удалили. Если там ничего нет, вы получите это сообщение:

ls: cannot access '/usr/local/bin/cpan': No such file or directory

Предполагая, что вы получили это сообщение, но bash пытается запустить /usr/local/bin/cpan при вводе cpan и нажмите Enter , проблема, скорее всего, в том, что bash все еще имеет этот хэш. Вместо того, чтобы искать, где внешние команды всегда, оболочки обычно хешируют их местоположения. Поэтому вы можете исправить эту проблему, сообщив bash «перефразировать», выполнив:

hash -r

Или просто запустите новую оболочку.

Если это не сработает, проверьте, является ли это псевдонимом или оболочкой.

Если файл еще не присутствует и еще не хэширован, то, скорее всего, cpan является псевдонимом или оболочкой, которая действует как обертка для /usr/local/bin/cpan. Чтобы убедиться в этом, запустите:

type -a cpan

Если это псевдоним или функция оболочки, это покажет определение. Затем вы можете отключить его с помощью unalias cpan, если это псевдоним или unset -f cpan, если это функция оболочки.

В конечном итоге вы захотите удалить определение из любого сценария запуска. Обычно он будет в файле .bashrc в вашем домашнем каталоге. Псевдонимы иногда определяются в .bash_aliases. (Иногда люди определяют псевдонимы и функции оболочки в .profile, .bash_profile или .bash_login, хотя это не очень хорошая практика.)

Если это не сработает, подумайте, как вы «[run] cpan или какая оболочка вы находитесь.

TL; DR: запуск hash -r или просто запуск новой оболочки обычно устраняет эту проблему. , тогда большинство вероятно, вы либо (a) не выполняете cpan непосредственно через эту команду, либо (b) используете оболочку, отличную от bash. В первом случае нет возможности ответить без дальнейших подробностей.

Последний случай кажется маловероятным, так как ваша оболочка называет себя bash, хотя каждый раз в то время кто-то плохо информировал о символической ссылке, называемой bash к оболочке, которая не является (что нецелесообразно). По правде говоря, я в основном упоминаю об этом на благо других читателей. Основываясь на этом сообщении, вы почти наверняка используете bash.

Однако, если вы не являетесь или не можете быть, запустите echo "$BASH_VERSION", чтобы убедиться, что вы используете bash - - это должно быть отменено в других оболочках - и echo "$SHELL", чтобы увидеть, что ваш называет себя оболочкой .

Некоторые другие оболочки в стиле Бурна, , говорящие bash на «rehash», , имеют rehash, который вы выполнили вместо hash -r. Точно так же вы можете вызвать повторную запись в csh и tcsh.

0
ответ дан 24 July 2018 в 17:38
  • 1
    hash -r сделал это. Спасибо! – Kris Van Bruwaene 23 November 2017 в 17:27
  • 2
    Еще проблема остается. При запуске cpan я получаю следующие ошибки: # Failed test 'failed x86_64-linux-gnu-gcc -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I / usr / local / include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS = 64 -I / usr / lib / x86_64-linux-gnu / perl / 5.22 / CORE -o ccode10 ccode10.c -Wl, -E -fstack-protector-strong -L / usr / local / lib -L / usr / lib / x86_64-linux-gnu / perl / 5.22 / CORE -lperl -ldl -lm -lpthread -lc -lcrypt 2 & gt; / dev / null '# # в строке t / TestBC.pm 934. # / usr / bin / ld: не может find -lperl collect2: ошибка: ld возвращен 1 статус выхода # 256 – Kris Van Bruwaene 23 November 2017 в 17:34
  • 3
    Этот, который я решил с помощью [apt-get install libperl-dev --reinstall] – Kris Van Bruwaene 23 November 2017 в 17:44
  • 4
    @KrisVanBruwaene Похоже, ваше решение может быть достаточно разным, чтобы быть отдельным ответом. Я не могу сказать точно - в частности, сообщения об ошибках трудно понять, когда их обрабатывают в комментариях с интервалом и разрывами строк, которые не показаны. Но я рекомендую вам рассмотреть собственный ответ . Система даже позволит вам сразу отметить ваш собственный ответ в качестве принятого ответа, потому что прошло более двух дней , поскольку вы изначально разместили вопрос . – Eliah Kagan 1 April 2018 в 04:30

Другие вопросы по тегам:

Похожие вопросы: