Outdated egg!

This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.

If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.


  1. Outdated egg!
  2. install
    1. Description
    2. Documentation
    3. Examples
    4. Requirements
    5. Installation
    6. About this egg
      1. Version History
      2. Author


A Scheme implementation of the Unix utility install.


[procedure] (install-file FILES TARGET #!key OWNER GROUP (MODE 755) PRESERVE-TIME)

File(s) are copied to the target file or directory. If the destination is a directory, then the file is copied into the directory with its original filename. If the target file already exists, it is overwritten if permissions allow. install-file attempts to prevent installing a file onto itself. Installing /dev/null (nul on Windows) creates an empty file. mode must be expressed in octal notation; mode, owner and group are ignored on Windows. The return value is unspecified.

[procedure] (install-dir DIRECTORIES #!key OWNER GROUP (MODE 755))

Create all components of the given directory(ies). mode must be expressed in octal notation; mode, owner and group are ignored on Windows. The return value is unspecified.

[syntax] (install [-p] [-g GROUP] [-m MODE] [-o OWNER] SRC DST)
[syntax] (install [-p] [-g GROUP] [-m MODE] [-o OWNER] SRC ... DIR)
[syntax] (install [-g GROUP] [-m MODE] [-o OWNER] -d DIR ...)

Handy command-line-like syntax around install-file and install-directory.

[procedure] (file=? FILE1 FILE2)

Determine whether two paths represents the same file.


(use install)

(install -?)
(install -d "/tmp/tests")
(install -d "C:\\tmp\\tests")
(install -d "C:/tmp/tests")
(install -d "/tmp/tests/a" "/tmp/tests/b")
(install -d -m 644 "/tmp/tests")

(install -m 644 "file1" "/tmp/tests")
(install -m 644 "file1" "file2")
(install -m 644 "file1" "file2" "/tmp/tests")
(install -o "mikele" -m 644 "file1" "/tmp/tests")
(install -m 644 -p "file1" "/tmp/tests")
(install "/dev/null" "/usr/bin/empty")
(install "nul" "C:/bin/empty")

(install-file "file1" "/tmp/tests")
(install-file '("file1") "/tmp/tests")
(install-file '("file1" "file2") "/tmp/tests")
(install-file (glob "file*") "/tmp/tests")
(install-file "file1" "/tmp/tests" mode: 644)

(install-directory "/tmp/tests")
(install-directory '("/tmp/tests"))
(install-directory '("/tmp/tests/a" "/tmp/tests/b"))
(install-directory "/tmp/tests" group: 0 owner: "mikele")

(begin (create-symbolic-link "vi" "emacs")
       (file=? "emacs" "vi"))                                ;; #t
(begin (change-directory "C:\\Windows")
       (file=? "C:\\Windows\\notepad.exe" "notepad.exe"))    ;; #t


None. Windows (mingw32) users need to build CHICKEN from git (or a stability version >


$ chicken-install install

Optionally a command-line utility (instll) is also available.

$ chicken-install install -D install-cmd
$ instll

  instll [-p] [-g GROUP] [-m MODE] [-o OWNER] SRC DST
  instll [-p] [-g GROUP] [-m MODE] [-o OWNER] SRC ... DIR
  instll      [-g GROUP] [-m MODE] [-o OWNER] -d DIR ...

  -g      Set group ownership, instead of process' current group.

  -m      Set permission mode instead of rwxr-xr-x (755). The mode must
          be expressed in octal notation.

  -o      Set ownership (super-user only).

  -p      Preserve timestamps. Apply modification time of SRC files to
          corresponding destination files.

About this egg

The source code is hosted at Bitbucket. Feel free to send pull requests or open an issue there. Alternatively, send an e-mail to the chicken-users mailing list for information or requests.

Version History

Initial release


Michele La Monaca