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

11

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

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

Аарон Холл
источник
2
Из журнала изменений : «Установите начальную версию выше, чем любой существующий двоичный пакет emacs».
Муру,
это меня огорчает : /
Аарон Холл

Ответы:

15

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

  • 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.

Оли
источник
Я никогда не спрашивал «почему версия 24» (я думаю, что ответ на этот вопрос очевиден), мои слова были «почему эта версия» в отношении 46, но, поскольку она была избыточной и менее понятной, чем предыдущий вопрос, я удалил ее. В любом случае, я решил переименовать его в emacs26 в качестве аргумента для проверки установки - возможно, я опубликую решение позже. Плюс один. И спасибо
Аарон Холл
@Oli (+1) в отношении вашего последнего замечания, есть ли хороший аргумент для того, чтобы не обновлять Emacs сверх той версии, которая поставляется с ОС? Есть ли известные проблемы со стабильностью или другие проблемы? Я работаю над Ubuntu 16.04 LTS и хотел бы перейти на версию Emacs 25.1.
n1k31t4
99 был бы лучшим номером версии.
Турбьерн Равн Андерсен
0

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

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

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

Кристофер Дж. Бедный
источник
0

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

удаление пакета 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) ...

audiodude
источник