alpine安装code-server过程记录
大约 4 分钟
alpine安装code-server过程记录
尝试1:在iSH中尝试通过npm安装(配置失败)
先要安装npm
和nodejs
但由于npm软件最新版使用了一些ish没有实现的指令 导致运行npm会提示非法指令 所以只能安装低版本
1.修改 /etc/apk/repositories 将版本改为3.12版本
# 修改
cat >> .profile << EOF
echo 'http://mirrors.tuna.tsinghua.edu.cn/alpine/v3.12/main' > /etc/apk/repositories
echo 'http://mirrors.tuna.tsinghua.edu.cn/alpine/v3.12/community' >> /etc/apk/repositories
EOF
# 更新
apk update
2.安装
apk add nodejs=12.22.12-r0 npm=12.22.12-r0
3.npm换为国内源
npm config set registry https://registry.npmmirror.com
# 或者安装yarn: npm install -g yarn
4.然后安装code-server
npm install -g code-server --unsafe-perm
# 然后在这一步卡死了
# ish1.2.3(build298) 卡在了yarn
尝试2:在iSH中尝试通过docker安装(配置失败)
1.安装docker和compose
apk add docker
apk add docker-compose
# compose可以根据yml文件中的配置来启动docker
2.下载coder
git clone https://github.com/coder/coder.git --depth=1
3.临时启动守护进程测试
rc-service docker start
# 报错并卡死:
# 原因:ish没有实现filesystems文件
# 报错提示:grep: /proc/filesystems: No such file
# 如果直接执行: rc-update add sshd 会导致卡死
4.启动
CODER_ACCESS_URL=http://localhost:7080
docker-compose up
尝试3:在UTM中安装Alpine3.16.1再尝试使用npm安装(配置失败)
安装UTM 在UTM中安装Alpine3.16.1
# 安装时最好设置好密码
# 并且在提示:# PermitRootLogin prohibit-password ?
# 输入yes
安装nodejs npm
# 安装过程依赖python
apk add python3
# code-server要求node16 : code-server@4.5.1: wanted: {"node":"16"} (current: {"node":"12.22.12","npm":"6.14.16"})
apk add nodejs=16.16.0-r0 npm
npm install -g code-server --unsafe-perm
# 依旧报错 : gyp: Undefined variable module_name in binding.gyp while trying to load binding.gyp
# 还是argon2的问题
尝试1、3出错原因和这个类似:#5184
尝试4:在UTM中安装Alpine3.16.1再尝试使用yarn安装(配置失败)
该方法根据自issue:#5174
npm install -g yarn
sudo yarn global add code-server
绷不住了!!! 报错超时,好像是虚拟机的问题!!!
ipad:~# npm install yarn -g
added 1 package in 1m
ipad:~# sudo yarn global add code-server
-ash: sudo: not found
ipad:~# yarn global add code-server
yarn global v1.22.19
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning "code-server > @coder/logger@1.1.16" has unmet peer dependency "@google-cloud/logging@^4.5.2".
[4/4] Building fresh packages...
success Installed "code-server@4.5.1" with binaries:
- code-server
Done in 893.96s.
ipad:~# code-server
[2022-08-06T18:56:50.068Z] info Wrote default config file to ~/.config/code-server/config.yaml
[2022-08-06T18:57:00.929Z] error timed out
尝试5:在UTM中安装Alpine3.16.1再尝试使用release版本安装(配置失败)
既然在UTM安装的是64bit版本的系统 为什么不直接使用release版本???
# 下载
wget https://github.com/coder/code-server/releases/download/v4.5.1/code-server-4.5.1-linux-amd64.tar.gz
# 解压
tar -xvf ./code-server-4.5.1-linux-amd64
cd ./code-server-4.5.1-linux-amd64
# 执行,报错:./lib/node not fond
./code-server
# 安装node
apk add node
# 查看安装目录
which node
# 建立软连接
ln -s /usr/bin/node ./lib/node
# 再次执行
./code-server
# 依旧报错
# [2022-08-06T18:57:00.929Z] error timed out
# 查文档得知要求:glibc >= 2.17 and glibcxx >= v3.4.18
# 而
#alpine linux追求系统小,默认使用了uclibc,但用glibc编译的程序无法直接在上面运行了。
#需要自行安装第三方的alpine glibc,然后就可以无障碍运行其他机器编译的依赖glibc的程序了。
# 查了issue #1706 发现code-server 对于glibc glibcxx已经静态编译了 不需要系统自带静态链接库了
尝试6:在UTM中安装Alpine3.16.1并开启JIT再尝试使用release版本安装(成功)
方法同上,UTM使用JIT(jitterbug)启动,终于可以了!!!原来是运行速度的问题
完整过程:
# 下载
wget https://github.com/coder/code-server/releases/download/v4.5.1/code-server-4.5.1-linux-amd64.tar.gz
## 或者在pc端下载好了之后通过sftp传输
# 解压
tar -xvf ./code-server-4.5.1-linux-amd64.tar.gz
# 递归创建文件夹
mkdir -p ~/.local/lib ~/.local/bin
# 移动并改名
mv ./code-server-4.5.1-linux-amd64 ~/.local/lib/code-server-4.5.1/
# 建立软连接
ln -s ~/.local/lib/code-server-4.5.1/bin/code-server ~/.local/bin/code-server
# 添加到环境变量
PATH="/root/.local/bin:$PATH"
# 运行
code-server
# 如果提示-ash: node: not found 则为node添加软连接
# ln -s /usr/bin/node ~/.local/lib/code-server-4.5.1/lib/node
# 原因:
# 使用命令:ldd ~/.local/lib/code-server-4.5.1/lib/node
# 可以发现缺少一些动态链接库,因为alpine是阉割版的linux
# 所以直接
apk add nodejs
# 然后删除原文件
rm ~/.local/lib/code-server-4.5.1/lib/node
# which node 查看刚安装的node的所在目录
# 然后添加软连接
ln -s /usr/bin/node ~/.local/lib/code-server-4.5.1/lib/node
编辑配置文件修改密码
cat > ~/.config/code-server/config.yaml <<EOF
bind-addr: 0.0.0.0:80
auth: password
password: *****数字加英文*****
cert: false
EOF
配置自动添加环境变量
vi .profile
PATH="/root/.local/bin:$PATH"
配置开机自启服务(暂时没有解决输出重定向的问题)
vim /etc/init.d/vscode
#!/sbin/openrc-run
name="vscode"
command="/root/.local/bin/code-server > /dev/null & "
#command_background="yes"
depend() {
need net
after sshd
}
# 修改权限 否则提示* rc-service: Permission denied
chmod 755 /etc/init.d/vscode
管理服务
列出所有可用服务
rc-service --list | grep vscode
启动/停止/重启 已有服务
rc-service 服务名 start/stop/restart
或
/etc/init.d/服务名 start/stop/restart
添加到开机自启动
rc-update add vscode