Estou construindo meu próprio emacs porque quero corrigir alguns problemas e obter as correções de bugs a montante. No entanto, o Ubuntu continua removendo automaticamente meus próprios emacs criados e eu tenho que continuar reconstruindo e reinstalando-o.
Aqui está minha saída de apt-cache policy emacs
quando fui dormir na noite passada:
~/emacs$ sudo apt-cache policy emacs
emacs:
Installed: 26.0.50.aaron-1
Candidate: 46.1
Version table:
46.1 500
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu xenial/main i386 Packages
*** 26.0.50.aaron-1 100
100 /var/lib/dpkg/status
Aqui é quando eu acordo:
~/emacs$ sudo apt-cache policy emacs
[sudo] password for excelsiora:
emacs:
Installed: 46.1
Candidate: 46.1
Version table:
*** 46.1 500
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu xenial/main i386 Packages
100 /var/lib/dpkg/status
Por que este pacote está sendo versionado em 46 em vez de 24 ou 25? 26 é atualmente a versão principal do emacs mais alta que você pode obter.
Percebo que este é um meta-pacote: https://packages.debian.org/source/jessie/emacs-defaults
Por que o Ubuntu está atualizando o software sem perguntar?
Pergunta principal: O que devo fazer - atribua um número de versão do pacote superior a 46 apenas para mantê-lo?
Parece um truque horrível, ou talvez seja assim que deve funcionar?
fonte
Respostas:
Existem muitas questões e perguntas aqui, por isso serei breve, mas tentarei cobrir todas elas.
emacs
é apenas um meta-pacote que aponta para a versão mais recente doemacs...
Ubuntu (atualmenteemacs24
). O "46.1" é apenas uma versão do pacote, deliberadamente alta para substituir os pacotes mais antigos do emacs. Vejaapt show emacs
um pouco mais de informação.Você está substituindo esse
emacs
pacote por um pacote com número de versão inferior. O Ubuntu prioriza a versão do pacote instalada pelo número da versão. O mais alto será o que for instalado (ao instalar ou atualizar); portanto, o seu será constantemente consumido.Você pode ver isso na
apt-cache policy emacs
saída. O candidato é a versão superior.Você pode contornar as prioridades fixando ou falsificando o número da sua versão (algo maior que 46.1), mas isso ignora o problema (e pode deixar um
emacs24
pacote no lugar).Sua melhor opção é remover o
emacs
pacote e apenas criar e instalar umemacs25
ouemacs26
pacote. Você também pode criar um meta-pacote emacs que depende do seu pacote de versão em nome, mas isso é apenas uma vaidade. Eu não faria isso a menos que você esteja planejando distribuir.Em relação ao Ubuntu fazer coisas sem "sem perguntar", verifique se as atualizações automáticas estão ativadas. Obter o mais recente disponível é o comportamento padrão, então acho que esse é mais um caso de "não entender o que o Ubuntu faz" em vez de um fantasma na máquina, ou pior.
E quanto a "por que a versão 24, não 25 ou 26?", O Ubuntu e o Debian abaixo dele visam versões de software estáveis e testadas. 26 ainda está em desenvolvimento e 25 não foram lançados até setembro de 2016.
Além disso, o Ubuntu não é um lançamento contínuo, portanto as versões do Ubuntu com 24 permanecerão na versão 24 durante toda a vida útil desses lançamentos do Ubuntu (a menos que algo realmente louco aconteça). Os patches de segurança serão portados e aplicados, se necessário, mas ainda serão 24.
fonte
Por que o Ubuntu está atualizando o software sem perguntar?
Acho que isso pode ser devido à sua Política de Atualização no Gerenciador de Atualizações (menu Editar). Eu recomendo a opção do meio: otimizar estabilidade e segurança. A última opção "Sempre atualiza tudo" - o que você não deseja.
Você também pode colocar na lista negra o pacote "emacs-defaults" em Editar> Preferências> Pacotes na lista negra (pacotes AKA ignorados).
fonte
Seguindo a resposta de @ Oli, veja como você faz isso:
emacs_25.1-1_amd64.deb
$ mkdir emacs-rename
$ ar -x emacs_25.1-1_amd64.deb emacs-rename/
$ cd emacs-rename
$ tar -xzf control.tar.gz
e$ tar -xf data.tar.xz
control
arquivo que resulta com o nano (já que você ainda não possui o emacs;) -$ nano control
e mudePackage: emacs
paraPackage: emacs25
(ou 26, 27 etc)$ mkdir DEBIAN
e copie o arquivo de controle lá:$ cp control DEBIAN/
$ cd ..
) e execute$ dpkg --build emacs-rename
. Isso pode levar alguns instantes.$ sudo dpkg -i emacs-rename.pkg
fonte