 is a project-local library installer using Quicklisp facility. This aims to be like Bundler of Ruby or Carton of Perl.
Warning: This software is still BETA quality. The APIs will be likely to change.
# "qlfile" of "myapp" git clack [***] github datafly fukamachi/datafly :branch v0.7.x ql log4cl 2014-03-17
$ cd /path/to/myapp # Installing libraries project-locally. $ qlot install # Updating depending libraries of a project. $ qlot update # Updating specific libraries $ qlot update --project mito # Execute a command with a project-local Quicklisp $ qlot exec ros -S . run $ qlot exec clackup app.lisp
We have Quicklisp, the central library registry. It made installation of libraries damn easy.
However, what only you can specify is the month of distribution. Which means you have to use all libraries of the same moment and you cannot use a newer/older version of a library for your project.
"local-projects/" or ASDF configurations may be a solution to this problem, but there are a couple of problems.
They are not project-local. If you have multiple projects that use the different version of the same library, it would be a problem.
They are difficult to fix the version or to update them. If your project need to work on other than your machine, for instance on other people's machine or on servers, the version of depending libraries should be the same.
This is what Qlot is trying to solve.
common(ql:quickload :qlot)
It also can be installed with Roswell.
$ ros install qlot # Install the latest version from GitHub $ ros install fukamachi/qlot
It's almost the same as using Quicklisp, except it also introduces a shell command "qlot".
$ which qlot /Users/nitro_idiot/.roswell/bin/qlot $ qlot Usage: qlot COMMAND [ARGS..] COMMANDS: install Installs libraries to './.qlot'. update Makes './.qlot' up-to-date and update 'qlfile.lock'. Possible to update specific projects with --project option. ex) qlot update --project mito add [project name] add [source] [project name] [arg1, arg2..] Add a new library to qlfile and trigger 'qlot install'. ex) $ qlot add mito # Add 'ql mito' $ qlot add ql mito # Same as the above $ qlot add ultralisp egao1980-cl-idna $ qlot add github datafly fukamachi/datafly run Starts REPL with the project local Quicklisp dists (Same as 'qlot exec ros run'). exec [shell-args..] Invokes the following shell-command with the project local Quicklisp.
Put a file "qlfile" at the root of your project directory.
See qlfile syntax section to know how to write it.
You can install libraries into the project directory via:
$ qlot install
It creates .qlot/ directory in the project directory and a file qlfile.lock.
qlfile.lock is similar to qlfile except the library versions are qualified. This will ensure that other developers or your deployment environment use exactly the same versions of libraries you just installed.
Make sure you add qlfile and qlfile.lock to your version controlled repository and make the .qlot/ directory ignored.
$ echo .qlot/ >> .gitignore $ git add qlfile qlfile.lock $ git commit -m 'Start using Qlot.'
You can update the content of .qlot/ directory via:
$ qlot update # Update a specific project $ qlot update --project mito $ qlot update --project mito,sxql
It will also overwrite qlfile.lock.
qlot install will install Quicklisp and libraries that declared in qlfile project-locally. qlfile.lock will be used with precedence if it exists.
$ qlot install $ qlot install /path/to/myapp/qlfile
qlot update will update the project-local .qlot/ directory using qlfile.
$ qlot update # Update a specific project $ qlot update --project mito $ qlot update --project mito,sxql
qlot add will add a line to qlfile and invoke qlot install internally.
It's arguments are same as the qlfile syntax.
$ qlot add mito # ql mito $ qlot add ql mito # ql mito (Same as the above) $ qlot add ultralisp egao1980-cl-idna # ultralisp egao1980-cl-idna $ qlot add github datafly fukamachi/datafly # github datafly fukamachi/datafly
qlot exec does following:
CL_SOURCE_REGISTRY environment variable by adding a current directory;bin directory to the PATH environment variable;Here are few usefull commands:
qlot exec ros emacs - starts Emacs for development. Inferior lisp will use only
systems, installed by qlot install. If you want to use systems from directories other than
current and ./.qlot/, then set CL_SOURCE_REGISTRY variable before starting qlot.
This can be useful in case, if you have development versions of some systems, for example,
in ~/common-lisp/ directory and want to use them during project development:
CL_SOURCE_REGISTRY=~/common-lisp// qlot exec ros emacs
Read more about CL_SOURCE_REGISTRY in
asdf's documentation.
qlot exec ros build some-app.ros - another command, useful, to build a binary
from systems, fixed in qlfile and qlfile.lock. This way you can be sure that your builds are stable.
qlfile syntax"qlfile" is a collection of Quicklisp dist declarations. Each line of that represents a dist.
<source> <project name> [arg1, arg2..]
Currently, <source> must be one of dist, ql, ultralisp, http, git or github.
ql <project name> <version> ql <project name>
ql source will download libraries from Quicklisp official dist.
If you want to use Clack in Quicklisp dist of January 13, 2014, qlfile would be like this.
ql clack 2014-01-13
ultralisp <project name> <version> ultralisp <project name>
ultralisp is same as ql except downloading from Ultralisp.
http <project name> <url> [<file md5>]
http source will download a tarball.
http yason [***]
git <project name> <repos url> git <project name> <repos url> :ref <commit ref> git <project name> <repos url> :branch <branch name> git <project name> <repos url> :tag <tag name>
git source will download libraries from a public git repository.
git clack [***]
You can also specify :ref, :branch or :tag.
git clack [***] :branch develop git datafly [***] :tag v0.7.4 git cl-dbi [***] :ref 54928984e5756e92ba298aae51de8b95a6b0cf4b
Qlot doesn't authenticate itself, but retrieving from private repository can be done via git's SSH key authentication. Which means, if the current user can git clone, Qlot also would be possible to do it.
git myapp ***:somewrite-adtech/myapp
github <project name> <repos> github <project name> <repos> :ref <commit ref> github <project name> <repos> :branch <branch name> github <project name> <repos> :tag <tag name>
github source is similar to git, but it is specifically for GitHub. As it uses GitHub API and tarballs GitHub serves, it doesn't require "git" command.
github datafly fukamachi/datafly github datafly fukamachi/datafly :branch develop
dist <dist name> <distribution URL> [<dist version>]
dist allows to use a custom Quicklisp dist, like Ultralisp.
dist quicklisp [***] dist ultralisp [***]
If multiple distributions provide the same library, lower one would take priority over higher ones.
SLIME is the most popular development environment in Common Lisp. However, its REPL always loads the global Quicklisp, not the project-local one.
Here's quick steps to start project-local REPL with SLIME:
init.el.emacs(defun slime-qlot-exec (directory) (interactive (list (read-directory-name "Project directory: "))) (slime-start :program "qlot" :program-args '("exec" "ros" "-S" "." "run") :directory directory :name 'qlot :env (list (concat "PATH=" (mapconcat 'identity exec-path ":")))))
M-x slime-qlot-exec RET /path/to/project/.PROJECT_ROOT/.qlot/local-projects can be used for local git repositories. Symbolic links are also be accessible in Qlot environment.
Copyright (c) 2014 Eitaro Fukamachi (***)
Licensed under the MIT License.
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429