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

9

Я создаю свои собственные 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, которую вы можете получить.

Я вижу, что это мета-пакет: Ссылка

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

Главный вопрос: что мне делать - назначьте мою версию пакета числом выше 46, чтобы заставить ее встать?

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

    
задан Aaron Hall 10.02.2017 в 14:26
источник

3 ответа

15

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

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

ответ дан Oli 10.02.2017 в 14:50
0

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

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

Вы также можете занести в черный список пакет «emacs-defaults» в Edit > Предпочтения > Черные списки (пакеты с игнорированием AKA).

    
ответ дан Chris Poor 20.05.2017 в 15:13
0

После ответа @ Oli, вот как вы идете:

removing the emacs package and just building and installing a emacs25 or emacs26 package instead.

  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. Если все работает, вы должны увидеть:

    Preparing to unpack emacs-rename.deb ...
    Unpacking emacs25 (25.1-1) ...
    Setting up emacs25 (25.1-1) ...

ответ дан audiodude 22.05.2017 в 21:21