Я создавал свой собственный emacs, потому что я хочу исправить некоторые проблемы в нем и получить исправления ошибок в апстриме. Тем не менее, Ubuntu продолжает автоматически удалять мои собственные встроенные emacs, и я должен продолжать перестраивать и переустанавливать его.
Вот мой вывод, apt-cache policy emacs
когда я пошел спать прошлой ночью:
~/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
Вот когда я просыпаюсь:
~/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
Почему этот пакет имеет версию 46 вместо 24 или 25? 26 - самая высокая на данный момент версия Emacs, которую вы можете получить.
Я вижу, что это метапакет: https://packages.debian.org/source/jessie/emacs-defaults
Почему Ubuntu обновляет программное обеспечение, не спрашивая?
Основной вопрос: что я должен делать - присвоить моей версии пакета номер больше 46, чтобы она оставалась на месте?
Это похоже на ужасный взлом, или, может быть, так оно и должно работать?
источник
Ответы:
Здесь много вопросов и вопросов, поэтому я буду краток, но постараюсь охватить их все.
emacs
это просто метапакет, который указывает на последнюю версиюemacs...
в Ubuntu (в настоящее времяemacs24
). "46.1" - это просто версия пакета, намеренно высокая для замены старых пакетов emacs. Смотритеapt show emacs
немного больше информации.Вы переопределяете этот
emacs
пакет с помощью пакета с меньшим номером версии. Ubuntu отдает приоритет версии пакета, установленной по номеру версии. Самым высоким будет тот, который будет установлен (при установке или обновлении), поэтому ваш постоянно гудит.Вы можете увидеть это в
apt-cache policy emacs
выводе. Кандидат является более высокой версией.Вы можете обойти приоритеты с закреплением или изменением номера версии (что-то выше 46.1), но это скорее игнорирует проблему (и может оставить
emacs24
пакет на месте).Ваш лучший вариант удаления
emacs
пакета и просто здание и установкаemacs25
илиemacs26
пакет вместо этого. Вы могли бы также создать EMACS мета-пакет , который зависел от пакета версия-в-имени, но это просто суета. Я бы не стал этого делать, если вы не планируете распространять.Относительно того, как Ubuntu работает без «без запроса», проверьте, включены ли автоматические обновления. Получение последней доступной информации - это поведение по умолчанию, поэтому я думаю, что это скорее случай «непонимания того, что делает Ubuntu», а не призрак в машине, или еще хуже.
А что касается «почему версия 24, а не 25 или 26?», Ubuntu и Debian под ней стремятся к стабильным, проверенным версиям программного обеспечения. 26 все еще в разработке, а 25 не вышли до сентября 2016 года.
Кроме того, Ubuntu не является скользящим выпуском, поэтому версии Ubuntu с 24 будут оставаться в версии 24 в течение срока службы этих выпусков Ubuntu (если только не случится что-то действительно сумасшедшее). Патчи безопасности будут перенесены и при необходимости применены, но все равно будет 24.
источник
Почему Ubuntu обновляет программное обеспечение, не спрашивая?
Я думаю, что это может быть связано с вашей политикой обновления в диспетчере обновлений (меню «Правка»). Я рекомендую средний вариант: оптимизировать стабильность и безопасность. Последний вариант будет «Всегда обновлять все» - что вы не хотите.
Вы также можете внести в черный список пакет «emacs-defaults» в меню «Редактирование»> «Установки»> «Черный список» (пакеты, игнорируемые AKA).
источник
После ответа @ Оли, вот как вы поступите:
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
и$ tar -xf data.tar.xz
control
файл с помощью nano (поскольку у вас еще нет emacs;) -$ nano control
и изменитеPackage: emacs
наPackage: emacs25
(или 26, 27 и т. Д.)$ mkdir DEBIAN
и скопируйте туда управляющий файл:$ cp control DEBIAN/
$ cd ..
) и запустите$ dpkg --build emacs-rename
. Это может занять несколько минут.$ sudo dpkg -i emacs-rename.pkg
источник