Почему этот пакет Emacs имеет версию 46.1? 26 - наивысшая возможная основная версия сегодня

Я создавал свой собственный 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, просто чтобы она осталась?

Это похоже на ужасный взлом, или, может быть, так оно и должно работать?

3 ответа

Здесь много вопросов и вопросов, поэтому я буду краток, но постараюсь охватить их все.

  • emacs это просто метапакет, который указывает на последнюю версию emacs... в Ubuntu (в настоящее время emacs24). "46.1" - это просто версия пакета, намеренно высокая для замены старых пакетов emacs. Видеть apt show emacs для немного больше информации.

  • Вы отменяете это emacs пакет с меньшим номером версии пакета. Ubuntu отдает приоритет установленной версии пакета по номеру версии. Самым высоким будет тот, который будет установлен (при установке или обновлении), поэтому ваш постоянно гудит.

    Вы можете увидеть это в apt-cache policy emacs выход. Кандидат является более высокой версией.

  • Вы можете обойти приоритеты с закреплением или изменением номера версии (что-то выше 46.1), но это скорее игнорирует проблему (и может оставить emacs24 пакет на месте).

  • Ваш лучший вариант - удаление emacs пакет и просто сборка и установка emacs25 или же emacs26 пакет вместо. Вы также можете создать метапакет emacs, который зависит от вашего пакета version-in-name, но это всего лишь тщеславие. Я бы не стал этого делать, если вы не планируете распространять.

  • Относительно того, как Ubuntu работает без "без запроса", проверьте, включены ли автоматические обновления. Получение последней доступной информации - это поведение по умолчанию, поэтому я думаю, что это скорее случай "непонимания того, что делает Ubuntu", а не призрак в машине, или еще хуже.

  • А что касается "почему версия 24, а не 25 или 26?", То Ubuntu и Debian под ней стремятся к стабильным, проверенным версиям программного обеспечения. 26 все еще в разработке, а 25 не вышли до сентября 2016 года.

    Кроме того, Ubuntu не является скользящим выпуском, поэтому версии Ubuntu с 24 будут оставаться в версии 24 в течение срока службы этих выпусков Ubuntu (если только не случится что-то действительно сумасшедшее). Исправления безопасности будут перенесены и при необходимости применены, но все равно будет 24.

После ответа @ Оли, вот как вы поступите:

удалите пакет emacs и просто соберите и установите пакет emacs25 или emacs26.

  1. Найдите свой файл emacs.deb. Для меня это было в моей корневой папке источника emacs и было названо emacs_25.1-1_amd64.deb
  2. Создайте каталог для хранения нового пакета debian, который вы собираетесь создать: $ mkdir emacs-rename
  3. Разархивируйте пакет debian в каталог: $ ar -x emacs_25.1-1_amd64.deb emacs-rename/
  4. Перейдите в каталог emacs-rename: $ cd emacs-rename
  5. Далее извлеките control.tar.gz и data.tar.xz: $ tar -xzf control.tar.gz а также $ tar -xf data.tar.xz
  6. Изменить control файл с результатом nano (поскольку у вас еще нет emacs;) - $ nano control и изменить Package: emacs в Package: emacs25 (или 26, 27 и т. д.)
  7. Создайте каталог DEBIAN внутри emacs-rename: $ mkdir DEBIAN и скопируйте контрольный файл туда: $ cp control DEBIAN/
  8. Перейдите в каталог, вернитесь к исходному корню emacs ($ cd ..) и беги $ dpkg --build emacs-rename, Это может занять несколько минут.
  9. Теперь у вас должен быть пакет emacs-rename.deb . Не беспокойтесь, что он не соответствует правильной структуре именования пакетов Debian, он только для вашего использования. Установите его с $ sudo dpkg -i emacs-rename.pkg
  10. Если все работает, вы должны увидеть:

    Подготовка к распаковке emacs-rename.deb ...
    Распаковка emacs25 (25.1-1) ...
    Настройка emacs25 (25.1-1) ...

Почему Ubuntu обновляет программное обеспечение, не спрашивая?

Я думаю, что это может быть связано с вашей политикой обновления в диспетчере обновлений (меню "Правка"). Я рекомендую средний вариант: оптимизировать стабильность и безопасность. Последний вариант будет "Всегда обновлять все" - что вы не хотите.

Вы также можете внести в черный список пакет "emacs-defaults" в меню "Редактирование"> "Установки"> "Черные списки" (пакеты, игнорируемые AKA).

Другие вопросы по тегам