Tworzę własne emacsy, ponieważ chcę naprawić niektóre problemy i uzyskać poprawki wcześniej. Jednak Ubuntu ciągle automatycznie usuwa moje wbudowane emacsy i muszę nadal je przebudowywać i ponownie instalować.
Oto mój dorobek, apt-cache policy emacs
kiedy poszedłem spać ostatniej nocy:
~/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
Oto kiedy się budzę:
~/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
Dlaczego ten pakiet ma wersję 46 zamiast 24 lub 25? 26 jest obecnie najwyższą dostępną wersją emacsa.
Widzę, że jest to meta-pakiet: https://packages.debian.org/source/jessie/emacs-defaults
Dlaczego Ubuntu aktualizuje oprogramowanie bez pytania?
Główne pytanie: Co mam zrobić - przypisać mojej wersji pakietu liczbę wyższą niż 46 tylko po to, żeby się trzymała?
To wygląda na okropny hack, a może tak właśnie powinno działać?
16.04
package-management
software-installation
Aaron Hall
źródło
źródło
Odpowiedzi:
Jest tu wiele problemów i pytań, więc powiem krótko, ale postaram się je wszystkie omówić.
emacs
jest tylko meta-pakietem, który wskazuje najnowszą wersjęemacs...
Ubuntu (obecnieemacs24
). „46.1” to tylko wersja pakietu, celowo wysoka, aby zastąpić starsze pakiety emacsa. Zobaczapt show emacs
więcej informacji.Przesłaniasz ten
emacs
pakiet pakietem o niższym numerze wersji. Ubuntu nadaje priorytet wersji pakietu zainstalowanej według numeru wersji. Najwyższy będzie ten, który zostanie zainstalowany (podczas instalowania lub aktualizacji), dlatego twój jest ciągle zalewany.Możesz to zobaczyć w danych
apt-cache policy emacs
wyjściowych. Kandydat jest wyższą wersją.Możesz obejść priorytety z przypinaniem lub fałszowaniem numeru wersji (coś powyżej 46.1), ale to raczej ignoruje problem (i może pozostawić
emacs24
pakiet na miejscu).Najlepszą opcją jest usunięcie
emacs
pakietu, a zamiast tego zbudowanie i zainstalowanie pakietuemacs25
lubemacs26
. Możesz także zbudować meta-pakiet emacs, który byłby zależny od pakietu wersja-w-nazwie, ale to tylko marność. Nie zrobiłbym tego, jeśli nie planujesz dystrybucji.Jeśli chodzi o robienie rzeczy Ubuntu bez „bez pytania”, sprawdź, czy automatyczne aktualizacje są włączone. Uzyskiwanie najnowszej dostępnej opcji jest domyślnym zachowaniem, więc myślę, że jest to raczej przypadek „nie rozumienia, co robi Ubuntu”, a nie ducha w maszynie lub gorzej.
A jeśli chodzi o „dlaczego wersja 24, a nie 25 lub 26?”, Ubuntu i Debian pod nią dążą do stabilnych, przetestowanych wersji oprogramowania. 26 jest wciąż w fazie rozwoju, a 25 pojawiło się dopiero we wrześniu 2016 r.
Ponadto Ubuntu nie jest wersją kroczącą, więc wersje Ubuntu z wersją 24 pozostaną w wersji 24 przez cały okres istnienia tych wersji Ubuntu (chyba że wydarzy się coś naprawdę szalonego). Poprawki zabezpieczeń zostaną w razie potrzeby cofnięte i zastosowane, ale nadal będzie to 24.
źródło
Dlaczego Ubuntu aktualizuje oprogramowanie bez pytania?
Myślę, że może to wynikać z twoich Zasad aktualizacji w Menedżerze aktualizacji (menu Edycja). Polecam środkową opcję: Zoptymalizuj stabilność i bezpieczeństwo. Ostatnią opcją będzie „Zawsze aktualizuj wszystko” - czego nie chcesz.
Możesz także umieścić na czarnej liście pakiet „emacs-defaults” w menu Edycja> Preferencje> Pakiety z czarnej listy (pakiety zignorowane AKA).
źródło
W odpowiedzi na odpowiedź @ Oli, oto jak sobie radzisz:
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
i$ tar -xf data.tar.xz
control
plik wynikowy za pomocą nano (ponieważ nie masz jeszcze emacsa;) -$ nano control
i zmieńPackage: emacs
naPackage: emacs25
(lub 26, 27 itd.)$ mkdir DEBIAN
i skopiuj tam plik kontrolny:$ cp control DEBIAN/
$ cd ..
) i uruchom$ dpkg --build emacs-rename
. To może chwilę potrwać.$ sudo dpkg -i emacs-rename.pkg
źródło