Eu encontrei uma solução para consertar, removendo o desvio primeiro:
dpkg-desvio - pacote ack-grep - local --remove --rename --divert /usr/bin/ack/usr/bin/ack-grp
O upgrade do apt-get funciona bem depois disso.
Instalei ack (substituto do grep). Nos sistemas baseados no debian, como o nome do pacote ack já existia (algo completamente diferente), o pacote é chamado de "ack-grep".
As instruções de instalação mencionam uma maneira de permitir que o usuário use o comando ack
como se fosse ack-grep
:
Em distros derivadas do Debian, o ack é empacotado como "ack-grep" porque "ack" já existia. Se você simplesmente instalar via:
$ sudo apt-get install ack-grep
seu ack será chamado de "ack-grep", que é 167% mais caracteres para tipo por invocação. Isso é trágico para seus dedos pobres.
Para criar um desvio local, renomeando ack-grep para ack, instale primeiro o pacote ack-grep como mostrado acima. Então, corra:
$ sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep
Até agora, tudo bem. Agora, quando tento atualizar meu sistema, apt-get upgrade
reclama por causa do desvio:
Unpacking ack-grep (2.12-2) over (2.12-1) ...
dpkg: error processing archive /var/cache/apt/archives/ack-grep_2.12-2_all.deb (--unpack):
trying to overwrite '/usr/bin/ack', which is the diverted version of '/usr/bin/ack-grep'
É bom que o dpkg tenha encontrado o desvio e tentado sobrescrever /usr/bin/ack
, mas por que ele não sucede?
Eu tentei refazer a conversão de acordo com as instruções:
$ sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep
Leaving 'local diversion of /usr/bin/ack-grep to /usr/bin/ack'
, mas ainda sobre apt-get upgrade
, dpkg
reclama.
Isso é normal? O que devo fazer para atualizar o desvio? Existe uma maneira de automatizá-lo ou fazê-lo funcionar da próxima vez que eu apt-get upgrade
?
Eu encontrei uma solução para consertar, removendo o desvio primeiro:
dpkg-desvio - pacote ack-grep - local --remove --rename --divert /usr/bin/ack/usr/bin/ack-grp
O upgrade do apt-get funciona bem depois disso.