আমি একটি সমস্যাতে পড়েছি কিছুই যোগ করার পরে ঘটেছে (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-installELPA থেকে নতুন সংস্করণ ইনস্টল করতে অস্বীকার করে। প্যাকেজ.এল পড়ার কিছু সময় ব্যয় করার পরে, আমি নিম্নলিখিত সমাধানটি নিয়ে এসেছি।
(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