Я скачал пакет JLink и распаковал его в /home/mkru/ARM/JLink_Linux_V498a_x86_64
. Затем я добавил этот путь к моей переменной PATH. Когда я пытаюсь выполнить JLinkExe, я получаю следующую ошибку:
Can not connect to J-Link via USB.
Когда я пытаюсь выполнить его с помощью sudo, я получаю:
sudo: JLinkExe: command not found
Единственный способ выполнить его с успехом - :
cd /home/mkru/ARM/JLink_Linux_V498a_x86_64
sudo ./JLinkExe
Почему это работает так и как я могу изменить это поведение ? Я хотел бы использовать JLinkExe
без sudo
и без необходимости находиться в этом конкретном каталоге.
Определенные функции требуют корневых повышений. Взаимодействие USB низкого уровня является одним из них, я испытал то же, когда я хотел использовать свой робот LEGO NXT.
, В первую очередь, если программа только работает с sudo, отодвиньте его от своего дома. Я предлагаю переместить его в /opt/jlink/
или что-то как этот
, Чтобы продолжать иметь необходимость к cd
к исполняемому каталогу, добавляю его к глобальной ванне в /etc/bash.bashrc
вместо Вашего дома bashrc. Кроме того, определите псевдоним, который автоматически выполняет программу с корневыми повышениями. Дополнения к файлу могут быть похожими на это:
export PATH=$PATH:/opt/jlink #or wherever you moved it
alias JLinkExe='sudo /opt/jlink/JLinkExe'
Теперь можно выполнить программу только путем ввода JLinkExe
(Вы могли даже присвоить более легко вводимое имя в псевдониме, например, просто alias jlink='sudo /opt/jlink/JLinkExe'
).
Однако Вас все еще попросят Вашего пароля, поскольку программа все еще требует корневого повышения. Для хитрости этого можно создать запись в установке sudo. Для этого выполните sudo visudo
и добавьте эту строку до конца файла
mkru ALL=(ALL) NOPASSWD: /opt/jlink/JLinkExe
После сохранения этого, Вас (и только Вас, т.е. пользователя mkru
) нельзя попросить предоставления корневых повышений программы больше. Следует иметь в виду, что это будет все еще работать с поднятыми полномочиями.
ПРИМЕЧАНИЕ: , Если программа имеет GUI, создайте псевдоним как alias jlink='sudo gksudo /opt/jlink/JLinkExe'
, чтобы препятствовать тому, чтобы она портила владения в Вашем корневом каталоге.
Существует немного лучшее решение. Просто скопируйте 99-jlink.rules
файл (часть загруженного пакета) в /etc/udev/rules.d/
, и это должно работать как очарование.