Design #1453
Use symbolic links for release files
Description
It would be better for release files to be in fixed place, whose path name does not change with version number.
Currently the path contains a component like CoCoA-5.3
which must be changed when we make version 5.4, etc.
I have tried to do this for CoCoALib, and it seems to work.
Work out how to do this for CoCoA-5 too.
Related issues
History
#1 Updated by John Abbott about 4 years ago
- Related to Design #990: CoCoA-5 distribution: tidying added
#2 Updated by John Abbott about 4 years ago
Here is an excerpt from comment 13 of issue #990:
Here is a quick summary of what I think the installation "script" for CoCoALib does:
- create new dir with name like /usr/local/include/CoCoA-0.99700 and put the header files in there
- create a symbolic link so that /usr/local/include/CoCoA actually "points to" the directory created above
- put the library in /usr/local/lib/libcocoa-0.99700.a
- create a symbolic link so that /usr/local/lib/libcocoa.a "points to" the latest library
An advantage of this approach is that if installation goes wrong (but not horribly wrong, like when I wiped out half of /usr),
then a "skilled" use can simply move the symbolic links to point back to the previous installation. Note that the previous
installation is not removed.
I think doing something similar could be reasonable for CoCoA-5 too.
- all files for the distribution are put into cocoa-5.3.0
- then we make a symbolic link so that cocoa-5 (or even just cocoa???) points to the latest version
- any older installations are not removed (but perhaps an informative message about them could be printed?)
Does this imply that the user must run a script to "install" CoCoA-5: the script would make the appropriate symbolic links.
It may be difficult to do this on Microsoft?
#3 Updated by Anna Maria Bigatti about 4 years ago
John Abbott wrote:
I may be difficult to do this on Microsoft?
This is the point: I have no clue how to make a script in M$
#4 Updated by John Abbott about 4 years ago
We can do it anyway for Linux and MacOS. Hopefully someone will tell us how to do it for Microsoft.
A first idea for a possible design is to have a structure like the following (similar to what I have tried to do for CoCoALib):- the root dir is
/usr/local/bin/CoCoA-5/
or maybe justCoCoA
instead ofCoCoA-5
??? - inside root dir each version unpacks into
ROOTDIR/CoCoA-5.3.2/
say (what to do if this subdir already exists? error? flag to force?) - make a symbolic link from
ROOTDIR/CurrentVersion
to the just unpacked dir - this means that all files relevant to CoCoA-5 are in
ROOTDIR/CurrentVersion/
If an experienced user wants to switch back to an earlier version then it suffices to change just the symlink.
A similar structure can also be built in a personal file-space (so there would be no need to be a sudoer).
#5 Updated by Anna Maria Bigatti about 4 years ago
Just to remember: we already have pretty good scripts for configuration on Mac and on Linux.
#6 Updated by John Abbott about 4 years ago
- Related to Support #322: Installation instructions (on website) added
#7 Updated by John Abbott about 4 years ago
On MacOS a user can install software easily from a "dpkg" file.
It would be nice to have a single-file-install capability for Linux.
One possibility is a "shar" file. Not sure how well that fits with a large TARGZ file.
How standard is gzip?
UPDATE: Wikipedia suggests that "shar" files are too risky... but anyway a helpful installation script has to be executable... mmm?
#8 Updated by John Abbott over 2 years ago
- Target version changed from CoCoA-5.4.0 to CoCoA-5.4.2