[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-users] Re: Experience of using Chicken in production environmen
From: |
Ivan Shmakov |
Subject: |
[Chicken-users] Re: Experience of using Chicken in production environment |
Date: |
Wed, 15 Apr 2009 23:30:43 +0700 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) |
>>>>> felix winkelmann <address@hidden> writes:
[...]
>> 4. What is it? What can I do with it??
>> Target systems reside in separate network, there's no access to
>> Internet, unless I setup connection via GSM modem. Thus I need to
>> fetch all necessary files, bring them there, copy them on target
>> systems and install. Obvious. Not so obvious, when you're doing it.
>> First, you don't have recursive fetch. Workaround: install all what
>> you need on development system, list extensions, _guess_
>> corresponding eggs' names, fetch those, bring them on the scene,
>> and... get busted. You cannot pass neither distributed file name
>> nor name of directory with downloaded files to "chicken-setup"
>> tool. It simply doesn't support it.
> The format of the .meta files in the repository practically screams
> out for automatic processing. You could take an egg-tree and easily
> collect all necessary information to roll your own deployment
> infrastructure.
Hopefully, I'd have some spare time to look at these issues.
There's more to it than making mirrors alone. Nearly always
there'd be project-specific libraries, which may be of somewhat
less tested code, and thus unsuitable for the main Chicken
extensions repository. The infrastructure created for the
distribution of extensions, or packages, is thus generally
expected to have some way of getting the packages out of
multiple sources (and, if the versions of the packages conflict,
to allow for the version obtained from some source to take
precedence.)
IIUC, Chicken lacks such a facility.
[...]
>> 5. Where's it???
>> I haven't run into this problem yet, but where's download cache or
>> how can I turn it on?
> Chicken 3 has no download cache. "chicken-setup" is not a full
> package manager like "dpkg" and people should not expect it to be
> one. Chicken-4 hasn't one either but can be used to provide
> something comparable. Alternatively we can cram the egg-tools full of
> features that fit nobody perfectly and are eternally bug-ridden.
That's the point, chicken-setup isn't a modular solution, like
dpkg, but instead seemingly aims to be an all-in-one tool which
tries to do it all. In particular, dpkg never tries to connect
to a remote server to get a suitable file, nor it does try to
calculate the list of packages to fullfil the dependencies of a
particular package to be installed. To my mind, doing all the
work in a single tool is a sure way to complicate the things,
not to make them simpler.
What are the facilities that Debian users use to deal with
packages? There are several:
* dpkg -- roughly, it does the following:
+ checking the dependencies, so that an attempt to install a
package without one will fail, unless overriden;
+ unpacking the package files into the destination directory
(often: /);
+ registering the package within the database (AKA `status'
file), to pave the way for the packages dependent of the one
being installed;
+ running the scripts provided with the package;
* implemented on top of dpkg, APT allows for the following
steps:
+ fetch the ``list'' of the packages off a configured source;
+ calculate the set of the dependencies required to install
the requested package (taking the current state of the dpkg
database into account, as well as the current state of the
``list'' fetched earlier);
+ fetch the files;
+ run dpkg to have them installed;
* finally, there're several programs to facilitate mirroring
(apt-mirror, apt-cache, etc.) and to help maintain
``personal'' repositories (e. g., mini-dinstall.)
Obviously, given that there're an approach that's proven to work
well in a similar domain (Debian packages), and that there is a
problem with the current state of the affairs in Chicken, I'll
be asking those interested to at least consider that approach.
[...]
FWIW, for my ``production environment'' task, done in Chicken,
I've ended up having a place in a filesystem where all the
binaries and relevant libraries reside, compiled once and
forever. It doesn't look like a clever solution, but it at
works.
--
FSF associate member #7257