나는 일부 문제를 해결하고 버그 수정을 업스트림하기를 원하기 때문에 내 자신의 이맥스를 만들고 있습니다. 그러나 우분투는 내 자신의 내장 이맥스를 자동으로 제거하므로 계속 다시 빌드하고 다시 설치해야합니다.
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
이 패키지가 24 또는 25 대신 46으로 버전이 지정된 이유는 무엇입니까? 26은 현재 얻을 수있는 가장 높은 주요 이맥스 버전입니다.
이것이 메타 패키지라는 것을 알 수 있습니다 : https://packages.debian.org/source/jessie/emacs-defaults
Ubuntu가 묻지 않고 소프트웨어를 업데이트하는 이유는 무엇입니까?
주요 질문 : 내가해야 할 일-패키지 버전을 46 이상으로 지정하여 고정시킵니다.
그것은 끔찍한 해킹처럼 보이거나 아마도 그것이 작동하는 방식일까요?
답변
여기에는 많은 문제와 질문이 있으므로 간략히 설명하지만 모두 다루려고합니다.
-
emacs
emacs...
우분투 (현재emacs24
) 의 최신 버전을 가리키는 메타 패키지 일뿐 입니다. “46.1”은 패키지 버전 일 뿐이며 오래된 emacs 패키지를 대체하기 위해 의도적으로 높습니다.apt show emacs
좀 더 자세한 정보를 참조하십시오 . -
emacs
낮은 버전 번호 패키지로 해당 패키지를 재정의하고 있습니다. 우분투는 버전 번호로 설치된 패키지 버전을 우선시합니다. 설치 또는 업그레이드시 설치되는 것이 가장 높기 때문에 지속적으로 문제가 발생합니다.apt-cache policy emacs
출력 에서 이것을 볼 수 있습니다 . 후보는 더 높은 버전입니다. -
버전 번호를 고정하거나 버전 번호 (46.1 이상)를 제거하여 우선 순위를 해결할 수 있지만 문제를 무시하고
emacs24
패키지를 그대로 둘 수 있습니다 . -
가장 좋은 방법은
emacs
패키지를 제거하고 대신emacs25
또는emacs26
패키지를 빌드하고 설치하는 것입니다. 당신은 수 또한 버전의 이름 패키지에 의존 이맥스 메타 패키지를 구축,하지만 그건 단지 허영이다. 배포를 계획하지 않는 한 그렇게하지 않을 것입니다. -
“묻지 않고”우분투가하는 일에 대해서는 자동 업데이트가 켜져 있는지 확인하십시오. 최신 버전을 사용하는 것이 기본 동작이므로 이것이 기계의 유령이 아니라 “우분투가하는 일을 이해하지 못하는”경우 또는 더 나쁜 경우라고 생각합니다.
-
그리고 “25 또는 26이 아닌 24 버전 인 이유”와 관련하여 Ubuntu와 Debian은 모두 안정적이고 테스트 된 소프트웨어 버전을 목표로합니다. 26 개는 아직 개발 중이며 2016 년 9 월까지 25 개가 나오지 않았습니다.
또한 Ubuntu는 롤링 릴리스가 아니므로 24가있는 Ubuntu 버전은 Ubuntu 릴리스의 수명 동안 버전 24를 유지합니다 (정말로 미친 일이 발생하지 않는 한). 보안 패치는 필요한 경우 백 포트되어 적용되지만 여전히 24입니다.
답변
Ubuntu가 묻지 않고 소프트웨어를 업데이트하는 이유는 무엇입니까?
업데이트 관리자 (편집 메뉴)의 업데이트 정책 때문일 수 있습니다. 안정성과 보안 최적화라는 중간 옵션을 권장합니다. 마지막 옵션은 “항상 모든 것을 업데이트합니다”-원하지 않는 것입니다.
편집> 기본 설정> 블랙리스트에 포함 된 패키지 (AKA 무시 패키지)에서 “emacs-defaults”패키지를 블랙리스트에 추가 할 수도 있습니다.
답변
@Oli의 답변에 이어 다음과 같이 진행하십시오.
emacs 패키지를 제거하고 대신 emacs25 또는 emacs26 패키지를 빌드하고 설치하십시오.
- emacs.deb 파일을 찾으십시오. 나를 위해, 그것은 내 이맥스 소스 루트 폴더에 있었고 이름이
emacs_25.1-1_amd64.deb
- 만들 새로운 데비안 패키지를 담을 디렉토리를 만드십시오 :
$ mkdir emacs-rename
- 디렉토리에 데비안 패키지를 압축 해제하십시오 :
$ ar -x emacs_25.1-1_amd64.deb emacs-rename/
- emacs-rename 디렉토리로 이동하십시오.
$ cd emacs-rename
- 또한 추출 control.tar.gz 및 data.tar.xz :
$ tar -xzf control.tar.gz
및$ tar -xf data.tar.xz
- 편집
control
파일이 (아직 이맥스를 가지고 있지 않기 때문에) 나노와 결과 –$ nano control
변화Package: emacs
에 대한Package: emacs25
(또는 26, 27 등) - emacs-rename : 안에 DEBIAN 디렉토리를 작성하고
$ mkdir DEBIAN
여기에 제어 파일을 복사하십시오.$ cp control DEBIAN/
- 디렉토리를 올라가서 emacs 소스 루트 (
$ cd ..
)로 돌아가서을 실행하십시오$ dpkg --build emacs-rename
. 시간이 조금 걸릴 수 있습니다. - 이제 emacs-rename.deb 패키지가 있어야합니다. 적절한 데비안 패키지 이름 지정 구조를 따르지 않는다는 것을 걱정하지 마십시오. 단지 사용 목적입니다. 함께 설치
$ sudo dpkg -i emacs-rename.pkg
- 모든 것이 효과가 있다면 다음을 참조하십시오.
emacs-rename.deb
포장 풀기 준비 … emacs25 (25.1-1) 포장 풀기 … emacs25 (25.1-1)
설정 …