Comments (3)
Yes, I've hit this with List::Utils where there's a version mismatch between the deploy and (apparently) the version pre-installed. Since quite a few other modules depend on it, they don't work either. This was AWS Ubuntu, and I had something likr this:
https://stackoverflow.com/questions/45000585/listutil-c-loadable-library-and-perl-binaries-are-mismatched-got-handshake-key
from carton.
@TheRealCuran that is the difference between cpanm
and carton
.
The first can by used either to install packages at root level, or more locally.
carton
by contrast wants to create self contained installations. This means:
- packages that originate from perl distributions (i.e. the zip/tar you download) are expected to preexist. Those are never installed by carton, because that would require installing a different perl. Every perl distribution has a package named
Module::CoreList
that lists them. - perl distributions must be full. This is problematic on Centos for example where the distribution is split among rpm packages.
I know you can install modules like Encode
separately, but I'm not sure if that is a good idea. Maybe some other core modules depend on that older version?
from carton.
The problem is then: carton
is happy to take the latest version of Some::Module
, which declares a dependency on an Encode
version that is newer than what is in the core modules. Either carton
needs to resolve to an older version or it must install Encode
's newer package. Having it both ways is not OK.
Apart from that: I've been installing those packages from CPAN for many rather big deployments with cpanm
in front and that has been working for years – after all, those core packages declare minimums as well. If an update to, say, Encode
breaks another package, then that is either a regression in Encode
(eg. forgot to declare a minimum Perl version high enough to satisfy its new requirements) or the other package did something it shouldn't have and just got lucky, that it worked before. In either case there needs to be a fix to one of those packages.
If this behaviour is not good for everybody (I am not seeing a case where it shouldn't that isn't a bug somewhere, but OK), then hide it behind an option like --upgrade-core-modules-if-needed
or whatever. Maybe even attach a big warning to it. Or, as an alternative, only consider versions of a package, that are installable.
from carton.
Related Issues (20)
- Feature request. Add --show-build-log-on-failure flag
- carton install --deployment fails HOT 2
- Missing Carton dependency Menlo-CLI-Compat-1.901800 HOT 3
- Module::Find 0.09 cannot be snapshotted or bundled HOT 1
- Error while updating HOT 1
- carton install generates empty cpanfile.snapshot when used with Docker HOT 3
- perlbrew + carton: Do not hardcode version in shebang HOT 1
- cpanfile.snapshot is not created HOT 5
- Linux::Inotify2 uninstallable via "carton install --deployment" and missing from cpanfile.snapshot HOT 3
- In cpanfile.snapshot, MailTools always records the desired version AND the latest version, fails carton install --deployment HOT 6
- carton doesn't work when invoked on the filesystem root
- "carton fatpack" not working HOT 2
- How to remove a requirement? HOT 3
- Missed dependency. Carton does not bundle everything HOT 13
- Document, that `carton` requires absolute path to `local/lib/perl5` HOT 1
- A way to reuse an installed module or patch the one to be installed?
- `carton bundle` ignores --cpanfile option but respects `PERL_CARTON_CPANFILE` environment variable HOT 1
- Parsing module version of Getopt::Long 2.55 HOT 1
- The version number in generated install.json is a number HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from carton.