আমি একটি সমস্যাতে পড়েছি কিছুই যোগ করার পরে ঘটেছে (package-install 'org)
মধ্যে .emacs
। আমি আপ-টু-ডেট সংস্করণ ইনস্টল করতে চেয়েছিলাম org-mode
এবং বিল্ট-ইনটি org-mode
বেশ পুরানো।
আমি package-install
ইমাক্স 25.3.1 থেকে উত্স কোডটি খনন করেছি। প্যাকেজটি ইনস্টল রয়েছে কিনা তা ইতিমধ্যে ফাংশনটি যাচাই করে এবং প্যাকেজটি ইতিমধ্যে ইনস্টল থাকলে এটি ইনস্টল করতে অস্বীকার করে। সুতরাং 10093312 এর(unless (package-installed-p package) ...)
উত্তর থেকে চেকটি বাস্তবে অপ্রয়োজনীয় ।
(defun package-install (pkg &optional dont-select)
"Install the package PKG.
PKG can be a package-desc or a symbol naming one of the available packages
in an archive in `package-archives'. Interactively, prompt for its name.
If called interactively or if DONT-SELECT nil, add PKG to
`package-selected-packages'.
If PKG is a package-desc and it is already installed, don't try
to install it but still mark it as selected."
(interactive
(progn
;; Initialize the package system to get the list of package
;; symbols for completion.
(unless package--initialized
(package-initialize t))
(unless package-archive-contents
(package-refresh-contents))
(list (intern (completing-read
"Install package: "
(delq nil
(mapcar (lambda (elt)
(unless (package-installed-p (car elt))
(symbol-name (car elt))))
package-archive-contents))
nil t))
nil)))
(add-hook 'post-command-hook #'package-menu--post-refresh)
(let ((name (if (package-desc-p pkg)
(package-desc-name pkg)
pkg)))
(unless (or dont-select (package--user-selected-p name))
(package--save-selected-packages
(cons name package-selected-packages)))
(if-let ((transaction
(if (package-desc-p pkg)
(unless (package-installed-p pkg)
(package-compute-transaction (list pkg)
(package-desc-reqs pkg)))
(package-compute-transaction () (list (list pkg))))))
(package-download-transaction transaction)
(message "`%s' is already installed" name))))
অন্তর্নির্মিত org-mode
হিসাবে ইনস্টল হিসাবে গণনা করা হয় এবং package-install
ELPA থেকে নতুন সংস্করণ ইনস্টল করতে অস্বীকার করে। প্যাকেজ.এল পড়ার কিছু সময় ব্যয় করার পরে, আমি নিম্নলিখিত সমাধানটি নিয়ে এসেছি।
(dolist (package (package-compute-transaction
() (list (list 'python '(0 25 1))
(list 'org '(20171211)))))
;; package-download-transaction may be more suitable here and
;; I don't have time to check it
(package-install package))
এটি কাজ করার কারণ হ'ল package-*
পারিবারিক ফাংশনগুলি যুক্তিগুলি হ'ল কিনা এটি প্রতীক বা কোনও package-desc
অবজেক্টের ভিত্তিতে ভিন্নভাবে পরিচালনা করে । আপনি কেবল package-install
কোনও package-desc
বস্তুর মাধ্যমে সংস্করণ তথ্য নির্দিষ্ট করতে পারবেন can