-
-
Notifications
You must be signed in to change notification settings - Fork 116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TinyTeX needs Perl #419
Comments
@norbusan I wonder if this error message could be improved when Perl is not present in the system. I don't know much about Perl, and I have no idea what this error message means. Thanks! |
On second glance, looks like I was a bit hasty concluding that Perl wasn't installed in the first container. Rather, that error message is complaining that the |
I don't understand, |
Apologies if I'm misinterpreting the error. 😬 (not a Perl person) In the container I see: $ docker run --rm -it mambaorg/micromamba:1.4.9
(base) $ which perl
/usr/bin/perl
(base) $ perl -v
This is perl 5, version 32, subversion 1 (v5.32.1) built for x86_64-linux-gnu-thread-multi
(with 47 registered patches, see perl -V for more detail)
Copyright 1987-2021, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
(base) $ perl -mFile
Can't locate File.pm in @INC (you may need to install the File module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/x86_64-linux-gnu/perl5/5.32 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl).
BEGIN failed--compilation aborted.
(base) $ perl -mFile::Find
Can't locate File/Find.pm in @INC (you may need to install the File::Find module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/x86_64-linux-gnu/perl5/5.32 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl).
BEGIN failed--compilation aborted. I interpret that as Perl 5.32.1 is installed, but not the |
Thanks @mfansler
Now, I agree that
So, as much as I understand your problem, I think this is purely a problem of a completely misconfigured docker image. |
Good to know! I think for Conda Forge purposes I'm going to have the package emit a message at installation time informing users that For purposes of this issue, my take is that:
Thanks for the feedback/insights! I appreciate that this is in no way urgent (you both certainly have more productive matters at hand!) and perhaps just having this issue filed is satisfactory documentation. |
I just tested on macOS and it's odd that % which perl
/usr/bin/perl
% perl -mFile
Can't locate File.pm in @INC (you may need to install the File module) (@INC contains: /Library/Perl/5.30/darwin-thread-multi-2level /Library/Perl/5.30 /Network/Library/Perl/5.30/darwin-thread-multi-2level /Network/Library/Perl/5.30 /Library/Perl/Updates/5.30.3 /System/Library/Perl/5.30/darwin-thread-multi-2level /System/Library/Perl/5.30 /System/Library/Perl/Extras/5.30/darwin-thread-multi-2level /System/Library/Perl/Extras/5.30).
BEGIN failed--compilation aborted. |
Sorry, that part might have been misleading. |
|
I believe it's waiting for input. Not sure what the standard is, but passing empty file (e.g., ## not found
$ perl -mFile /dev/null
Can't locate File.pm in @INC (you may need to install the File module) (@INC contains: /Users/mfansler/miniconda3/lib/perl5/5.32/site_perl /Users/mfansler/miniconda3/lib/perl5/site_perl /Users/mfansler/miniconda3/lib/perl5/5.32/vendor_perl /Users/mfansler/miniconda3/lib/perl5/vendor_perl /Users/mfansler/miniconda3/lib/perl5/5.32/core_perl /Users/mfansler/miniconda3/lib/perl5/core_perl .).
BEGIN failed--compilation aborted.
## found
$ perl -mFile::Find /dev/null So one could run something like:
Then check that |
Okay, that works. Thanks! However, I think a better solution is to declare the dependency on |
I'm on the Conda Forge R team. 😉
I hesitate to do this because it's a waste of 100 MB of disk space for users on desktop Linux or macOS (both have functional system Perl) and suspect they comprise the majority user base. I think an install message suffices for the DevOps people deploying to containers that actually need it. I'm only proposing to do this on the Conda Forge feedstock and requires nothing to be done here.
I'm already satisfied just having it documented. I think those that hit it could find it. |
Okay, I can certainly do that.
Haha, didn't know that and good to know now! |
discussion in rstudio/tinytex#419
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
I've made the editorial decision to remove the notification emitted by the Conda Forge package regarding the need for Perl. There was both issue with the mechanism for emitting the message and confusion around interpretation of the message when it did work (users misinterpreted it as a warning/thought it meant Perl was not detected). In the end, seemed like more trouble than it was worth. |
This issue is to report a finding that on the Conda Forge CI (running on image quay.io/condaforge/linux-anvil-cos7-x86_64), we found that
tinytex::install_tinytex()
would result in error unless Perl was installed on the system. I realize most end-user systems will have this, but containers may not, and I did not see this expectation documented. I suggest it should be documented.For replication, here are examples running with and without Perl.
Failure without Perl
Shell
$ docker run --rm -it mambaorg/micromamba:1.4.9 (base) $ micromamba install -yn base -c conda-forge r-base=4.3 r-tinytex (base) $ R -e 'tinytex::install_tinytex()'
Result
Expected behavior with Perl
Shell
$ docker run --rm -it mambaorg/micromamba:1.4.9 (base) $ micromamba install -yn base -c conda-forge r-base=4.3 r-tinytex perl (base) $ R -e 'tinytex::install_tinytex()'
Result
By filing an issue to this repo, I promise that
xfun::session_info('tinytex')
. I have upgraded all my packages to their latest versions (e.g., R, RStudio, and R packages), and also tried the development version:remotes::install_github('rstudio/tinytex')
.I understand that my issue may be closed if I don't fulfill my promises.
The text was updated successfully, but these errors were encountered: