[GNC] gnucash-cli says, "No quotes retrieved. Finance::Quote isn't installed properly" on macOS

Jim DeLaHunt list+gnucash at jdlh.com
Sun Jun 13 02:49:57 EDT 2021

On 2021-06-12 20:49, John Ralls wrote:
>> On Jun 12, 2021, at 6:31 PM, Jim DeLaHunt <list+gnucash at jdlh.com> wrote:
>> On 2021-06-12 09:13, John Ralls wrote:
>>>> On Jun 12, 2021, at 12:22 AM, Jim DeLaHunt <list+gnucash at jdlh.com> wrote:
>>>> OK, I can understand that the MacPorts installation of perl may be configured to look for perl packages in MacPorts locations, and ignore the system locations. But I don't understand wny the GUI app of GnuCash apparently can find Finance::Quote when run from the GUI, but the gnucash-cli app apparently cannot. What is different?
>>> Because applications started by LaunchServices don't get the environment from your shell's startup files. That means GnuCash is running /usr/bin/perl, not /opt/local/bin/perl but when you run a program from Terminal the environment is read so gnucash-cli runs /opt/local/bin/perl.
>> Thank you, John, this explanation is very helpful. I can understand that the GnuCash GUI and the gnucash-cli experience different environments, especially different $PATH values, because the OS invokes them in different environments.
>> But I find it very confusing to have gnucash-cli be presented as an integral part of GnuCash, and all the references to a singular action of "update Finance::Quote on the system", then have gnucash-cli behave differently and require a different installation of Finance::Quote than the GnuCash GUI.
>> It seems to me that if both gnucash-cli and the GnuCash GUI would invoke the perl executable at an absolute path, then they would have consistent behaviour. Thus I wonder why GnuCash lets the environment find the perl executable.
>> I have filed Bug 798209, "gnucash-cli might not use the same perl and Finance::Quote as GnuCash GUI", <https://bugs.gnucash.org/show_bug.cgi?id=798209> , to track this.
>> My workaround as a MacPorts user: install Finance::Quote into the MacPorts perl environment:
>> ```
>> % port install p5-finance-quote
> Jim,
> I summarily dismissed your bug report. It's on users who modify their operating systems to know what they're doing.
> It's standard practice nowadays to use the environment to get the executable to make it easy for users to set the one they want. That does require that users have a clue, but users without one who mess up their OS with package managers they don't understand have only themselves to blame.

As I said to David, I submit that installing packages with MacPorts or 
Homebrew has aspects of installing application software, as well as 
aspects of altering the OS. Installing application software is a 
reasonable thing for people to do with their personal computers. I don't 
think its reasonable to say that GnuCash should ignore the existence of 
MacPorts and Homebrew.

It would help for the gnucash-cli documentation to mention that GnuCash 
lets the environment pick which perl instance to run.

It would help for the Finance::Quote troubleshooting documentation to 
mention this problem, and the solution.

It would help for the GnuCash error message to also say, "Use `perl -e 
'print join("\n", @INC), "\n";'` to see where perl is looking.".

> There's a really simple solution for you: Just install F::Q in both perls:
Agreed, but…
>    /opt/local/bin/perl /Applications/Gnucash.app/Contents/Resources/bin/gnc-fq-update

AFAIK it is bad practice to have anything but MacPorts install into the 
MacPorts directory tree. Maybe there are circumstances in which it works 
for perl modules in a MacPorts instance, but there are many stories of 
the MacPorts and other package managers conflicting. Fortunately, 
Finance::Quote is available via MacPorts. Thus I feel more confident with:

% sudo port install p5-finance-quote

I appreciate all the explanations. Thank you.

Best regards,
      —Jim DeLaHunt

More information about the gnucash-user mailing list