[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