Emacs Windows 지원 라이브러리를 설치하는 가장 쉬운 방법


15

Windows 용 Emacs 24.4 바이너리를 설치하고 Windows 용 Emacs 읽어보기에 설명 된 지원 라이브러리를 설치하려고합니다 . 사전 컴파일 된 최신 라이브러리는 ezwinports 프로젝트 에서 사용할 수 있지만 설치하는 데 약간의 시간이 걸립니다. Emacs의 README에 언급 된 모든 라이브러리를 선택하고 추가 전제 조건에 대해 ezwinports README 를 스캔 한 후 zip 아카이브 각각을 다운로드해야합니다. 그런 다음 포장을 풀고 영구 위치로 옮기고 개별 디렉토리를 PATH변수에 추가하십시오 . 이 아카이브에는 중복 파일이 있으므로 파일이 동일한 지 확인하지 않고 동일한 디렉토리에 모두 압축을 풀어야합니다.

이를 수행하는 자동화 된 방법이 있습니까?


바이너리 다운로드에 모든 필수 구성 요소가 포함되어 있기 때문에 추가 정보에 나열되어 있지만 별도로 다운로드하지 않아도됩니다. 그렇기 때문에 다른 패키지에 중복 파일이 있습니다.
Alan Third

답변:


10

Emacs 25부터 Emacs Windows 다운로드 디렉토리deps 는 특정 아키텍처에 대한 모든 종속성을 포함하는 패키지를 포함합니다. 예를 들어, x86_64의 경우을 사용하십시오 emacs-25-x86_64-deps.zip.

다음 스크립트를 사용하여 Emacs를 자동으로 설치합니다. WSL 또는 Cygwin에서 작동합니다. 고도에서 실행해야하며 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned일정 시점에 PowerShell에서 이미 실행되어 있어야합니다 .

#!/usr/bin/env bash

set -o nounset -o pipefail -o errexit

emacs_major=26
emacs_minor=1
emacs_ver="$emacs_major.$emacs_minor"
arch="x86_64"
emacs_url_root="https://ftpmirror.gnu.org/emacs/windows/emacs-$emacs_major"

emacs_deps_zip="emacs-$emacs_major-$arch-deps.zip"
emacs_zip="emacs-$emacs_ver-$arch.zip"

if [[ "$(uname -r)" == *Microsoft ]]; then
    programfiles="$(bin/wslpath "%ProgramFiles%")"
    programfilesx86="$(bin/wslpath "%ProgramFiles(x86)%")"
    allusersprofile="$(bin/wslpath "%AllUsersProfile%")"
    public_desktop="$(bin/wslpath "%Public%\\Desktop")"
    desktop="$(bin/wslpath "%UserProfile%\\Desktop")"
else
    CSIDL_PROGRAM_FILES=38
    CSIDL_PROGRAM_FILESX86=42
    CSIDL_COMMON_APPDATA=35
    CSIDL_COMMON_DESKTOPDIRECTORY=25
    CSIDL_DESKTOP=0

    programfiles="$(cygpath -F "$CSIDL_PROGRAM_FILES")"
    programfilesx86="$(cygpath -F "$CSIDL_PROGRAM_FILESX86")"
    allusersprofile="$(cygpath -F "$CSIDL_COMMON_APPDATA")"
    public_desktop="$(cygpath -F "$CSIDL_COMMON_DESKTOPDIRECTORY")"
    desktop="$(cygpath -F "$CSIDL_DESKTOP")"
fi

emacs_root="$programfiles/Emacs"

old_tmpdir="${TMPDIR:-}"
TMPDIR="$(mktemp -dt install-windows-pkgs.XXXXXXXXXX)"
export TMPDIR

on_exit () {
    rm -rf "$TMPDIR"
}

trap on_exit EXIT

unzip_dest () {
    local zip="$1"
    local dest="$2"

    if [[ ! -d "$dest" ]]; then
        if ! mkdir -p "$dest"; then
            result="$?"
            echo "Can't create '$dest'. Try running under elevation" >&2
            exit "$result"
        fi

        unzip -n "$zip" -d "$dest"
    fi
}

install_emacs_pkg () {
    local zip="$1"
    local dest="$2"

    # XXX: move to tmp
    if [[ ! -d "$dest" ]]; then
        wget --directory-prefix "$TMPDIR" "$emacs_url_root/$zip"
        unzip_dest "$TMPDIR/$zip" "$dest"
    fi
}

on_exit
trap EXIT
TMPDIR="$old_tmpdir"

# XXX: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
# XXX: sticking cmd.exe /c start before this causes all nature of space-quoting problems
powershell.exe windows\\add_path.ps1 "%ProgramFiles%\\Emacs\\emacs-$emacs_ver\\bin" "%ProgramFiles%\\Emacs\\emacs-$emacs_major-deps\\bin"

# XXX: would be nice to pin runemacs.exe to taskbar, but the need to edit
# that is probably best seen as Emacs bug/flaw

5

이것은 완전 자동화 된 솔루션은 아니지만 문제의 일부입니다. 내가 알 수있는 한, 현재 지원 라이브러리 및 전제 조건은 다음과 같습니다.

  • libpng-1.6.12
  • 카이로 -1.12.16
  • gdk-pixbuf-2.30.2
  • giflib-5.1.0
  • glib-2.38.2
  • gnutls-3.0.9
  • jpeg-v9a
  • libcroco-0.6.8
  • libffi-3.0.13
  • librsvg-2.40.1-2
  • libxml2-2.7.8
  • 이조 -2.06
  • 판고 -1.36.1-2
  • pixman-0.32.4
  • tiff-4.0.3
  • zlib-1.2.8-2

이 모든 것을 ezwinports 파일 영역에서 준비 디렉토리로 다운로드하십시오. 그런 다음 unp 를 사용 하여 각 디렉토리를 자체 디렉토리에 압축 해제하십시오. renameCygwin 의 명령을 사용하여 -w32-bin접미사 를 제거하십시오 .

rename -- -w32-bin "" *-w32-bin

다음과 같은 명령을 사용하여 추가해야 할 디렉토리 목록을 얻으십시오 PATH.

command ls -1 | perl -pe 's/^/C:\\Program Files (x86)\\/; s/\n/\\bin;/'

그런 다음 이들 모두를 같은 위치로 옮길 수 있습니다 C:\Program Files (x86).


2
지원 라이브러리가 변경 될 가능성이 있기 때문에 전체를 정리하거나 자동화하는 데 많은 시간을 할애하지 않습니다. unzip이러한 파일을 원하는 위치에 넣을 수 있으므로 Unp와 이름 바꾸기가 실제로 필요한 것은 아닙니다 . 그러나 사용하기가 더 쉬워졌습니다.
Michael Hoffman

4

나는 이것이 오래된 질문이라는 것을 알고 있지만 누군가 이것에 걸려 넘어지면 : emacsbinw64 또는 emacsbin 시도하십시오 . 여기에는 필요한 모든 dll이 포함되어 있으며 종속성을 수동으로 해결할 필요가 없습니다.


업데이트가 중지 된 것으로 보입니다.
NetMage 2014 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.