Acho que o que você está tentando realizar é muito difícil, se não impossível, mesmo quando você pode criar uma função de invólucro para fazer o que quiser e um apelido para chamar o invólucro em vez do comando real. execute sudo pacman -S
e sudo quebra todas as funções e aliases alternando contextos.
Mas nem tudo está perdido, você pode listar todos os pacotes explicitamente instalados com pacman -Qe
, então se a qualquer momento você desejar reinstalar o sistema ou copiar o ambiente para outra máquina, você pode obter a lista em um arquivo, arquivo para a máquina de destino e execute o pacman para instalar todos os pacotes.
Para criar o arquivo:
pacman -Qe | cut -d ' ' -f 1 | tr "\n" " " >the-file.txt
-
pacman -Qe
: lista todos os pacotes explicitamente instalados. -
cut -d ' ' -f 1
: é remover as versões do pacote e manter apenas os nomes. -
tr "\n" " "
: é alterar as novas linhas para espaços. -
>the-file.txt
: é redirecionar a saída para um arquivo, sinta-se à vontade para alterar o nome do arquivo e o caminho de acordo com suas necessidades.
Isto produzirá uma lista separada por espaços para o arquivo -.txt, você transferirá o arquivo para a máquina de destino e executará:
sudo pacman -Sy - <the-file.txt
Voila, o pacman está instalando todos os pacotes da lista e você obterá o mesmo resultado.
Você também pode adicionar o argumento --needed
ao pacman para que ele não reinstale pacotes atualizados pacman -S --needed ...
.
E se você estiver fazendo a nova máquina remotamente, você pode pular a transferência de arquivos e apenas canalizar os resultados para o ssh e ele irá para a máquina remota:
pacman -Qe | cut -d ' ' -f 1 | tr "\n" " " | ssh -t user@host "sudo pacman -S --needed -"
- Com
-t
ssh aloca um pseudo terminal, caso contrário, o sudo falhará.
Boa sorte.