Linux — обходной путь для pinentry [ERR 83918950 Неподходящий ioctl для устройства].

Мое обходное решение приведет к команде терминала, которая запросит ваш пароль GPG, это не будет рабочим всплывающим окном от pinentry.

Я сделал это, потому что у меня была эта ошибка с pinentry:

# I'm running Manjaro KDE 21.3.5
$ echo GETPIN | pinentry
OK Pleased to meet you
S ERROR curses.isatty 83918950
ERR 83918950 Inappropriate ioctl for device <Pinentry>
Войти в полноэкранный режим Выйти из полноэкранного режима

Я предположу, что если вы дошли до этого момента, то вы уже создали свой GPG ключ и знаете кое-что о конфигурационных файлах gnupg и git.

Вот что у меня в конфигурации:

# .zshrc, .bashrc...
export GPG_TTY=$(tty)
Войти в полноэкранный режим Выйти из полноэкранного режима
# gpg-agent.conf
pinentry-program /usr/bin/pinentry-curses
max-cache-ttl 60480000
default-cache-ttl 60480000
Войти в полноэкранный режим Выйти из полноэкранного режима
# gpg.conf
use-agent
pinentry-mode loopback

default-key  XXXXXXXXXXXXXXXX
Войти в полноэкранный режим Выход из полноэкранного режима
# .gitconfig
[user]
    name = xxx
    email = xxx
    signingkey = XXXXXXXXXXXXXXXX
[gpg]
    program = gpg2
[commit]
    gpgsign = true
Войти в полноэкранный режим Выйти из полноэкранного режима

Решение

Мы создадим скрипт, который будет вызываться по псевдониму:

# .zshrc, .bashrc...
alias unlock_gpg="~/.unlock_gpg.sh"
Войти в полноэкранный режим Выйти из полноэкранного режима
# ~/.unlock_gpg.sh  <- create this file and add the script below
current_dir=$(pwd)
cd ~/.unlock_gpg
git add .
git commit -m "abc"
git reset --soft HEAD~1
cd $current_dir
Войти в полноэкранный режим Выйти из полноэкранного режима
# Run this command:
$ chmod +x ~/.unlock_gpg.sh
Войти в полноэкранный режим Выйдите из полноэкранного режима

Теперь создайте папку с git-репозиторием, выполнив следующие действия:

$ mkdir ~/.unlock_gpg/
$ cd ~/.unlock_gpg/
$ git init
$ touch file.txt
$ git add .
$ git commit -m "first commit"
# if gpg ask for your password, provide it
$ echo 'hi' > file.txt

# This will reset your gpg agent, so you can test it below.
$ gpgconf --reload gpg-agent
Войдите в полноэкранный режим Выйти из полноэкранного режима

Теперь попробуйте:

$ unlock_gpg
# Now you should see a password prompt like this:
Enter passphrase:
# Just enter your password and sign your commits as you wish
Войти в полноэкранный режим Выйти из полноэкранного режима

Если у вас есть лучшее/определенное решение, пожалуйста, прокомментируйте.

Оцените статью
devanswers.ru
Добавить комментарий