É possível obter informações de um usuário durante uma instalação de rpm?
Eu tenho um script que funciona por si só (recebendo informações de um usuário e executando ações), mas quando executado como parte da pós-instalação de um rpm (ou seja, adicionado na %post
seção de uma especificação de rpm), ele não funciona.
Deveria ser possível? Esta é a parte:
%post
import()
{
echo "Do you want to import file?"
select INPUT in "Y" "N"; do
case $INPUT in
Y ) echo "You selected to import file";break;;
N ) echo "Exiting";exit 0;break;;
esac
done
read -p "Please file path: " FILE
if [ -d "$FILE" ]; then
cp $FILE/myFile /opt/tmp/
echo "Done!"
else
echo "No File Path."
done=0
while [ $done = 0 ]
do
echo "Do you want to abort"
select INPUT in "Y" "N";
do
case $INPUT in
Y )
echo "Aborting"
done=1
break
;;
N )
echo "You selected to import"
# break
#;;
read -p "Please provide the directory : " FILE
if [ -d "$FILE" ]; then
cp $FILE/myFile /opt/tmp
echo "Done"
done=1
else
echo "Aborting."
fi
break
;;
esac
done
done
fi
}
import
exit 0
Durante a instalação, ele salta diretamente para o cancelamento dentro da segunda declaração de caso.
Por quê? O que eu estou fazendo errado aqui?
É uma péssima ideia, mas é possível.
fonte
Tecnicamente, é possível, pelo menos para alguns comandos. Em um dos meus RPMs, tenho
mount
comando em scripts de pós-instalação que monta um compartilhamento do Windows protegido por senha:e recebo a seguinte saída durante a instalação do RPM:
o usuário precisará digitar a senha antes da instalação continuar.
fonte
Como o @Charles Duffy postou a resposta, podemos fazer isso com a funcionalidade / dev / tty do Linux. Também podemos usar a leitura para ler uma linha da entrada padrão.
O exemplo abaixo é para rpm interativo -
Se você deseja receber informações do usuário como [S / n] -
Alguns usuários podem querer criar um repositório yum a partir desse rpm interativo.
O exemplo abaixo é para rpm interativo com yum -
Se você deseja receber informações do usuário como [S / n] -
Certifique-se de que o script eco acima termine com> / dev / tty, ou seja, imprima esta mensagem em um terminal diferente no qual o usuário digitará a entrada.
Espero que ajude.
fonte