libra146 / docker-topsap

使天融信开发的TopSAP运行在 docker 或 podman 中,并提供 socks5 代理服务
GNU Affero General Public License v3.0
21 stars 5 forks source link

Manjaro下打包镜像报错 #10

Closed imic07 closed 4 months ago

imic07 commented 1 year ago
.4 Current default time zone: 'Etc/UTC'
881.4 Local time is now:      Sun Sep 17 14:39:41 UTC 2023.
881.4 Universal Time is now:  Sun Sep 17 14:39:41 UTC 2023.
881.4 
881.4 dpkg-deb: error: 'TopSAP-3.5.2.36.2-x86_64.deb' is not a Debian format archive
881.4 dpkg: error processing archive TopSAP-3.5.2.36.2-x86_64.deb (--install):
881.4  dpkg-deb --control subprocess returned error exit status 2
881.4 Errors were encountered while processing:
881.4  TopSAP-3.5.2.36.2-x86_64.deb
------
Dockerfile:14
--------------------
  13 |     
  14 | >>> RUN export DEBIAN_FRONTEND=noninteractive && \
  15 | >>>   ln -fs /usr/share/zoneinfo/Asia /etc/localtime && \
  16 | >>>   # if [ "${BUILD_ENV}" = "local" ]; then sed -i s/deb.debian.org/mirrors.aliyun.com/ /etc/apt/sources.list; fi &&\
  17 | >>>   apt-get update && apt-get -y --no-install-suggests --no-install-recommends install tzdata sudo curl dante-server iproute2 ca-certificates iptables psmisc cron && \
  18 | >>>   dpkg-reconfigure --frontend noninteractive tzdata && \
  19 | >>>   # 解决TopSap检测到Debian系统无法安装的问题,可以看这篇文章:https://blog.d77.xyz/archives/649aab5b.html
  20 | >>>   echo Ubuntu >> /etc/issue && \
  21 | >>>    # 根据架构安装对应的 TopSAP
  22 | >>>   if [ "$(uname -m)" = "x86_64" ]; then dpkg -i TopSAP-3.5.2.36.2-x86_64.deb; else dpkg -i TopSAP-3.5.2.36.2-aarch64.deb; fi && \
  23 | >>>   rm -r TopSAP-3.5.2.36.2-x86_64.deb TopSAP-3.5.2.36.2-aarch64.deb && \
  24 | >>>   apt-get install -y expect && \
  25 | >>>   rm -rf /var/lib/apt/lists/*
  26 |     
--------------------
ERROR: failed to solve: process "/bin/sh -c export DEBIAN_FRONTEND=noninteractive &&   ln -fs /usr/share/zoneinfo/Asia /etc/localtime &&   apt-get update && apt-get -y --no-install-suggests --no-install-recommends install tzdata sudo curl dante-server iproute2 ca-certificates iptables psmisc cron &&   dpkg-reconfigure --frontend noninteractive tzdata &&   echo Ubuntu >> /etc/issue &&   if [ \"$(uname -m)\" = \"x86_64\" ]; then dpkg -i TopSAP-3.5.2.36.2-x86_64.deb; else dpkg -i TopSAP-3.5.2.36.2-aarch64.deb; fi &&   rm -r TopSAP-3.5.2.36.2-x86_64.deb TopSAP-3.5.2.36.2-aarch64.deb &&   apt-get install -y expect &&   rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 1
[imic@imic docker-topsap]$ 
[imic@imic docker-topsap]$ 
libra146 commented 1 year ago

请提供一下系统版本,架构,方便分析

imic07 commented 1 year ago

manjaro kde 最新版 架构 x86_64

libra146 commented 1 year ago

尝试一下fix-other-system分支的代码呢,是因为 topsap 这个 vpn 软件的兼容性的问题,它识别不了你的系统,导致的安装失败,我尝试修复一下,你试试。 分支链接: https://github.com/libra146/docker-topsap/tree/fix-other-system 你 clone 下来重新构建试一下,看能否解决

imic07 commented 1 year ago

尝试一下fix-other-system分支的代码呢,是因为 topsap 这个 vpn 软件的兼容性的问题,它识别不了你的系统,导致的安装失败,我尝试修复一下,你试试。 分支链接: https://github.com/libra146/docker-topsap/tree/fix-other-system 你 clone 下来重新构建试一下,看能否解决

还是不行

# 克隆命令
git clone https://github.com/libra146/docker-topsap.git
git checkout -b fix-other-system origin/fix-other-system
# 打包镜像
cd docker-topsap
docker build -t libra146/docker-topsap:3.5.2.36.2 -f Dockerfile .

image

image

libra146 commented 1 year ago

晚点我本地复现一下吧

imic07 commented 1 year ago

晚点我本地复现一下吧

Dockerfile 中的RUN export 部分需要如下改动才能打包

RUN export DEBIAN_FRONTEND=noninteractive && \
  ln -fs /usr/share/zoneinfo/Asia /etc/localtime && \
  sed -i s/deb.debian.org/mirrors.aliyun.com/ /etc/apt/sources.list &&\
  apt-get update && apt-get -y --no-install-suggests --no-install-recommends install tzdata sudo curl dante-server iproute2 ca-certificates iptables psmisc cron && \
  dpkg-reconfigure --frontend noninteractive tzdata && \
  # 解决TopSap检测到Debian系统无法安装的问题,可以看这篇文章:https://blog.d77.xyz/archives/649aab5b.html
  echo Ubuntu >> /etc/issue && \
   # 根据架构安装对应的 TopSAP  echo Ubuntu >> /etc/issue;
  if [ "$(uname -m)" = "x86_64" ]; then dpkg -i TopSAP-3.5.2.36.2-x86_64.deb; else dpkg -i TopSAP-3.5.2.36.2-aarch64.deb; fi && \
  rm -r TopSAP-3.5.2.36.2-x86_64.deb TopSAP-3.5.2.36.2-aarch64.deb && \
  apt-get install -y expect && \
  rm -rf /var/lib/apt/lists/*

遗憾的是打包好,运行还是不行,看日志是登录有问题

    ~/Desktop/sh/cnooc  docker logs -f topsap_bjueh_test                                                                                                       ✔ 
spawn /opt/TopSAP/topvpn login
Welcome Login Mode!

Input your server address(example:192.168.74.12:8112): 119.62.xx.xx:10443

 Login_Mode
1.Password
2.Certificate
3.Double_Factor
4.Exit
5.Need_Proxy*
Choose the Login_mode: 1

Please enter user and password:
User: xxxx
Password: 
 [error_code:-87]

 Login_Mode
1.Password
2.Certificate
3.Double_Factor
4.Exit
5.Need_Proxy*

进入容器,看日志是这样的

root@e2a94b003a69:/home/work# ls
expect.exp  start.sh  sv_websrv.log
root@e2a94b003a69:/home/work# cat sv_websrv.log 
open hard disk device failed.overlay,-1
SSL set accept 
SSL set accept 
open hard disk device failed.overlay,-1
SSL set accept 
sh: 1: lsb_release: not found
root@e2a94b003a69:/home/work# 
libra146 commented 1 year ago

可能是密码含有特殊字符导致被转义了?能否尝试将密码更改一下呢,后面我尝试添加环境变量来传递密码吧,如果可以,欢迎 PR

libra146 commented 1 year ago

晚点我本地复现一下吧

Dockerfile 中的RUN export 部分需要如下改动才能打包

RUN export DEBIAN_FRONTEND=noninteractive && \
  ln -fs /usr/share/zoneinfo/Asia /etc/localtime && \
  sed -i s/deb.debian.org/mirrors.aliyun.com/ /etc/apt/sources.list &&\
  apt-get update && apt-get -y --no-install-suggests --no-install-recommends install tzdata sudo curl dante-server iproute2 ca-certificates iptables psmisc cron && \
  dpkg-reconfigure --frontend noninteractive tzdata && \
  # 解决TopSap检测到Debian系统无法安装的问题,可以看这篇文章:https://blog.d77.xyz/archives/649aab5b.html
  echo Ubuntu >> /etc/issue && \
   # 根据架构安装对应的 TopSAP  echo Ubuntu >> /etc/issue;
  if [ "$(uname -m)" = "x86_64" ]; then dpkg -i TopSAP-3.5.2.36.2-x86_64.deb; else dpkg -i TopSAP-3.5.2.36.2-aarch64.deb; fi && \
  rm -r TopSAP-3.5.2.36.2-x86_64.deb TopSAP-3.5.2.36.2-aarch64.deb && \
  apt-get install -y expect && \
  rm -rf /var/lib/apt/lists/*

遗憾的是打包好,运行还是不行,看日志是登录有问题

    ~/Desktop/sh/cnooc  docker logs -f topsap_bjueh_test                                                                                                       ✔ 
spawn /opt/TopSAP/topvpn login
Welcome Login Mode!

Input your server address(example:192.168.74.12:8112): 119.62.xx.xx:10443

 Login_Mode
1.Password
2.Certificate
3.Double_Factor
4.Exit
5.Need_Proxy*
Choose the Login_mode: 1

Please enter user and password:
User: xxxx
Password: 
 [error_code:-87]

 Login_Mode
1.Password
2.Certificate
3.Double_Factor
4.Exit
5.Need_Proxy*

进入容器,看日志是这样的

root@e2a94b003a69:/home/work# ls
expect.exp  start.sh  sv_websrv.log
root@e2a94b003a69:/home/work# cat sv_websrv.log 
open hard disk device failed.overlay,-1
SSL set accept 
SSL set accept 
open hard disk device failed.overlay,-1
SSL set accept 
sh: 1: lsb_release: not found
root@e2a94b003a69:/home/work# 

看你的改动应该是官方源连接不上,换成阿里源就好了

imic07 commented 1 year ago

可能是密码含有特殊字符导致被转义了?能否尝试将密码更改一下呢,后面我尝试添加环境变量来传递密码吧,如果可以,欢迎 PR

@libra146 没有特殊字符,也登录不上,是同样的错误。你本地测试可以登录吗?

libra146 commented 1 year ago

可能是密码含有特殊字符导致被转义了?能否尝试将密码更改一下呢,后面我尝试添加环境变量来传递密码吧,如果可以,欢迎 PR

@libra146 没有特殊字符,也登录不上,是同样的错误。你本地测试可以登录吗?

我本地可以登录成功,而且我刚才在本地测试了,密码错误不会报错误码,和你的-87 错误码不一样。

image

我本地是可以登录成功的

image

还有一个可能的原因,就是我 Docker 中使用的版本和你现在可以正常使用的版本是不是一致,有没有可能是版本不一致导致的? 而且据我了解,这个 vpn 是有 id 绑定机制的,如果你的 id 和服务端的 id 不一致的话也可能会报错

imic07 commented 1 year ago

@libra146 你用的什么操作系统呢?是在windows下用的docker 还是其他操作系统下用的docker 测试的?

libra146 commented 1 year ago

@libra146 你用的什么操作系统呢?是在windows下用的docker 还是其他操作系统下用的docker 测试的?

Debian 的 docker

imic07 commented 1 year ago

@libra146 我在Ubuntu 20.04里面也试了,无论是直接安装还是docker安装,登录都报错-87 直接安装运行topsap.sh还报错

libra146 commented 1 year ago

@libra146 我在Ubuntu 20.04里面也试了,无论是直接安装还是docker安装,登录都报错-87 直接安装运行topsap.sh还报错

那说明可能是版本的问题,你的服务器地址对应的服务端可能和我这个有点不太一样,导致版本校验失败无法登录。看起来和 docker 好像关系不大

imic07 commented 1 year ago

@libra146 我在Ubuntu 20.04里面也试了,无论是直接安装还是docker安装,登录都报错-87 直接安装运行topsap.sh还报错

那说明可能是版本的问题,你的服务器地址对应的服务端可能和我这个有点不太一样,导致版本校验失败无法登录。看起来和 docker 好像关系不大

是的,我换了ubuntu16 提示的就是不支持 image

libra146 commented 1 year ago

@libra146 我在Ubuntu 20.04里面也试了,无论是直接安装还是docker安装,登录都报错-87 直接安装运行topsap.sh还报错

那说明可能是版本的问题,你的服务器地址对应的服务端可能和我这个有点不太一样,导致版本校验失败无法登录。看起来和 docker 好像关系不大

是的,我换了ubuntu16 提示的就是不支持 image

后续我看看如何添加多版本支持吧,如果你自己可以修改 dockerfile 的话也可以修改为支持的版本暂时先使用