emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: package-update-all from command line


From: Sam Steingold
Subject: Re: package-update-all from command line
Date: Tue, 24 May 2022 11:04:15 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (darwin)

> * Stefan Monnier <zbaavre@veb.hzbagerny.pn> [2022-05-24 09:54:30 -0400]:
>
>> I would like to be able to update packages from the command line, and
>> thanks to Lars, I now can do
>> --8<---------------cut here---------------start------------->8---
>> emacs -batch -funcall package-initialize -load ~/.emacs.elc -funcall 
>> package-update-all
>> --8<---------------cut here---------------end--------------->8---
>
> `package-initialize` should basically never be needed any more (other
> than internally within `package.el`).  `package-activate-all` should
> be sufficient.
> If not, report it as a bug.

replacing `package-initialize' with `package-activate-all' above results in

--8<---------------cut here---------------start------------->8---
Debugger entered--Lisp error: (void-function package-update-all)
--8<---------------cut here---------------end--------------->8---


>> 1. It prints "No packages to update" even though M-x list-packages RET
>> reports "Packages that can be upgraded: 3; type ā€˜Uā€™ to mark for upgrading".
>
> I'll let the author of `package-update-all` deal with this part :-)

.emacs fragment for Lars:

--8<---------------cut here---------------start------------->8---
(with-eval-after-load "package"
  (dolist (s '(("melpa" . "https://melpa.org/packages/";)))
    (add-to-list 'package-archives s)))
--8<---------------cut here---------------end--------------->8---


>> 2. Loading ~/.emacs.elc is relatively slow (e.g., because it fetches a
>> remote `remember-data-file'). so I would rather use something smaller.
>
> If it hurts don't do that: e.g., only fetch that remote file
> if (not noninteractive) or something like that.

I restart emacs only once a week, when I rebuild it.
Not a problem interactively.

>> --8<---------------cut here---------------start------------->8---
>> emacs -batch -load package -load ~/.config/emacs/package-quickstart.elc \
>
> The above 2 steps should be subsumed by calling `package-activate-all`

no, as indicated by the error above, `package-activate-all' does not
load package, so `package-update-all' and `package-archives' is still
not available:

--8<---------------cut here---------------start------------->8---
Error: void-variable (package-archives)
--8<---------------cut here---------------end--------------->8---

>>   -eval '(setq package-selected-packages (delete-dups 
>> package-activated-list))' \
>
> Hmm... I wonder why you needed that.

because otherwise `package-selected-packages' is nil and there is
nothing to update.
and I need `delete-dups' because `package-activated-list' will repeat
all installed packages as many times as `list-packages' or
`package-quickstart-refresh' was called.

>>   -eval '(push (quote ("melpa" . "https://melpa.org/packages/";)) 
>> package-archives)' \
>
> This one basically plays the role of a stripped down version of your `.emacs`.

yep - a fraction of a percent.

>> E.g., I would like to save `package-archives' in
>> `package-quickstart-file' so that I won't have to specify it on the
>> command line (it is set in ~/.emacs, of course).
>
> I can't think of a way to do that in a way that's reliable for all the
> various ways this var can be set.  :-(

just add a setq at the end, like we already do with `package-activated-list'.

Thank you for your reply.

-- 
Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.2113
http://childpsy.net http://calmchildstories.com http://steingoldpsychology.com
https://jij.org https://camera.org https://mideasttruth.com
There are two ways to win an argument with a woman.  Neither works.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]