Emacs Windows समर्थन पुस्तकालयों को स्थापित करने का सबसे आसान तरीका


15

मैंने विंडोज के लिए एमएसीएस 24.4 के बायनेरी स्थापित किए और विंडोज आरएडएमई के लिए एमएसीएस में वर्णित समर्थन पुस्तकालयों को स्थापित करना चाहता हूं । नवीनतम precompiled पुस्तकालयों ezwinports परियोजना से उपलब्ध हैं , लेकिन उन्हें स्थापित करने में थोड़ा समय लगता है। मुझे Emacs की README में उल्लिखित सभी पुस्तकालयों का चयन करना है, आगे के किसी भी पूर्वापेक्षा के लिए ezwinports README को स्कैन करना है और ज़िप अभिलेखागार में से प्रत्येक को डाउनलोड करना है। फिर उन्हें अनपैक करें, उन्हें एक स्थायी स्थान पर ले जाएं, और व्यक्तिगत निर्देशिकाओं को मेरे PATHचर में जोड़ें। इन अभिलेखों के भीतर डुप्लिकेट फ़ाइलें हैं, इसलिए मैं उन सभी को एक ही निर्देशिका में अनचेक करने से सावधान हूं बिना जांच किए कि वे समान हैं।

क्या ऐसा करने का कोई स्वचालित तरीका है?


जहाँ तक मैं बता सकता हूँ कि बाइनरी डाउनलोड में सभी पूर्व आवश्यकताएं होती हैं, भले ही वे रीडमी में सूचीबद्ध हों, आपको उन्हें अलग से डाउनलोड करने से परेशान होने की आवश्यकता नहीं है। इसलिए आपके पास अलग-अलग पैकेज में डुप्लिकेट फाइलें हैं।
एलन थर्ड

जवाबों:


10

25 Emacs के साथ शुरू, Emacs विंडोज डाउनलोड निर्देशिका में अब एक depsपैकेज शामिल है जिसमें एक विशेष वास्तुकला के लिए सभी निर्भरताएं शामिल हैं। उदाहरण के लिए, x86_64 के लिए, उपयोग करें emacs-25-x86_64-deps.zip

मैं स्वचालित रूप से Emacs स्थापित करने के लिए निम्न स्क्रिप्ट का उपयोग करता हूं। यह WSL या Cygwin के लिए काम करना चाहिए। इसे उत्थान के तहत चलाया जाना चाहिए और पहले से ही Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSignedकिसी बिंदु पर पावरशेल में चला गया है।

#!/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
  • चिकना-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
  • lzo-2.06
  • Pango-1.36.1-2
  • pixman-0.32.4
  • टिफ-4.0.3
  • zlib-1.2.8-2

इन सभी को ezwinports फ़ाइलों के क्षेत्र से चरणबद्ध निर्देशिका में डाउनलोड करें। फिर इनमें से प्रत्येक को अपनी स्वयं की निर्देशिकाओं में अनपैक करने के लिए unp का उपयोग करें । renameकिसी भी -w32-binप्रत्यय को खत्म करने के लिए Cygwin में कमांड का उपयोग करें ।

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

आपके द्वारा जोड़े जाने वाली निर्देशिकाओं की सूची प्राप्त करने के लिए निम्नलिखित की तरह एक कमांड का उपयोग करें PATH:

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

फिर आप इन सभी को एक स्थान पर स्थानांतरित कर सकते हैं जैसे C:\Program Files (x86)


2
चूंकि समर्थन पुस्तकालयों को बदलने की संभावना है, इसलिए मैं पूरी चीज को साफ करने या स्वचालित करने में बहुत समय बिताने के लिए अनिच्छुक हूं। Unp और rename वास्तव में आवश्यक नहीं हैं, क्योंकि आप unzipइन फ़ाइलों को इच्छित स्थान पर रख सकते हैं । लेकिन मेरे पास उनके आसपास था इसलिए उनका उपयोग करना आसान था।
माइकल हॉफमैन

4

मुझे पता है कि यह एक पुराना सवाल है, लेकिन अगर कोई इस पर ठोकर खाता है : emacsbinw64 या emacsbin आज़माएं । उनमें सभी आवश्यक dll होते हैं और आपको मैन्युअल रूप से निर्भरताएँ हल करने की आवश्यकता नहीं होती है।


ध्यान दें कि अपडेट होना बंद हो गया है।
नेटमैज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.