1
lazydao 2021-12-03 09:50:51 +08:00
自己写安装脚本
|
2
cstj0505 2021-12-03 09:52:30 +08:00
docker 做隔离吧
|
4
cabbage 2021-12-03 10:02:03 +08:00 via Android
依赖复杂,需要部署多个服务器,这场景用 docker 简直不要太合适了哇。自己 build 出来镜像写一份 compose ,分分钟部署运行到 N 个服务器上。
|
6
haozheliu 2021-12-03 10:30:14 +08:00
docker run 跑 cmd 吧,然后用 alias 把 docker run xxxx 等一长串的命令写一个命令。但是感觉 stdin out 不好搞
|
7
2i2Re2PLMaDnghL 2021-12-03 10:38:17 +08:00
1. 静态链接
2. ./configure --prefix 3. Flatpak / AppImage 4. docker run -it --volume |
8
masterclock 2021-12-03 10:44:21 +08:00
docker
其他 flatpak ,AppImage 也行,但不分发,似乎不值得 |
9
css3 OP @css3 @lazydao @cstj0505 @cabbage @haozheliu @2i2Re2PLMaDnghL @masterclock
我第一时间也想的是 docker , 但这个场景,我感觉不太适用呢 |
10
debuggerx 2021-12-03 11:31:34 +08:00
可以描述得更清楚一些 什么类型的程序 用途 什么语言 依赖都是什么
|
11
css3 OP @debuggerx https://github.com/tstack/lnav
Prerequisites The following software packages are required to build lnav: gcc/clang - A C++14-compatible compiler. libpcre - The Perl Compatible Regular Expression (PCRE) library. sqlite - The SQLite database engine. Version 3.9.0 or higher is required. ncurses - The ncurses text UI library. readline - The readline line editing library. zlib - The zlib compression library. bz2 - The bzip2 compression library. libcurl - The cURL library for downloading files from URLs. Version 7.23.0 or higher is required. libarchive - The libarchive library for opening archive files, like zip/tgz. |
14
liuliancao 2021-12-03 13:07:08 +08:00
最好说下啥软件
|
15
Tink 2021-12-03 13:26:40 +08:00 via Android
docker
|
18
nmap 2021-12-03 15:35:51 +08:00
golang
|
19
gam2046 2021-12-03 15:44:02 +08:00
要不静态编译一份,要不自制 docker 镜像(设置 entry-point ),然后 docker run --rm <name> <args>就和本地几乎差不多,就是冷启动慢一点
|
20
Kinnice 2021-12-03 17:45:22 +08:00
静态编译
|
21
neteroster 2021-12-03 17:50:36 +08:00 via Android
docker
|
22
moliliang 2021-12-03 18:13:33 +08:00
打包( docker 、静态变异、打包工具等)
|
23
GeruzoniAnsasu 2021-12-03 18:18:10 +08:00
> The following software packages are required to build lnav:
required to BUILD 你运行环境又不用装这些 而且编译用到的库全是非常常用的,有啥难装的 如果需要的 runtime 版本在目标机器上不兼容,那就**不要尝试**在目标机器上跑这个版本 首先升级系统 |
24
jihadwk 2021-12-03 18:31:22 +08:00
再虚拟机安装一次,把这个虚拟机做成镜像,下次直接用镜像初始化虚拟机
|
25
secondwtq 2021-12-03 19:23:43 +08:00
Windows 不也有这问题,也没折腾什么容器之类的,都有“绿色软件”之类的,搞一个猴版不就行了。我也用 RHEL ,不过没 root 不好折腾,解决方案:依赖一个一个下下来,一个一个编译,手动打一份“包”,哪台机器要用就解压到哪。
无非就是 Windows 东西都给你编译好了,Linux 需要你自己去编译。 大部分软件还好,依赖就这么多。个别巨型项目如浏览器内核和游戏引擎会涉及巨量依赖,不过还好我不搞这个(浏览器内核一般做得都很现代很炫酷很时髦,依赖需要你自己解决。游戏引擎大多不属于开源生态圈,比较实在,人家都直接把依赖的 binary 放 repo 里面的 ...)。 |
26
zjsxwc 2021-12-03 19:34:16 +08:00 via Android
>grep 装在 docker 内, 如何给主机用呢?
直接把主机目录 volume 挂到 grep docker 里就能用了。 |
27
css3 OP @GeruzoniAnsasu 问题是用变编译好的二进制安装也提示缺上述依赖,rpm 包
|
28
lizytalk 2021-12-03 19:39:13 +08:00
容器
|
29
kidonng 2021-12-03 19:48:46 +08:00
Nix 解君愁
|
30
Juszoe 2021-12-03 19:52:43 +08:00
gcc 参数改成静态编译试试。
不过说实话,你在一台机器把所有依赖都编译了,拿到老机器上也不一定能运行,我之前就被老机器的 glibc 整惨了,最后还是上 docker 解决 |
31
kidonng 2021-12-03 19:58:24 +08:00
刚搜了一下,Nixpkgs 里是有这个包的。用 Nix 的话整个依赖链都在 Nix Store 里,不会跟系统环境打架,特别适合拯救依赖旧的系统。
当然用 Docker 也行,就是 overhead 相比 Nix 大多了。 |
32
iceheart 2021-12-03 20:01:43 +08:00 via Android
做个 ubuntu 镜像,几个依赖库的静态版本全拉下来。
自己写 Makefile,链接选项加 -static. |
33
zhujinhe 2021-12-03 20:17:53 +08:00
alias command="docker exec container_name command"
|
34
anxn 2021-12-03 21:09:49 +08:00 via Android
静态编译成二进制
|
35
2i2Re2PLMaDnghL 2021-12-04 00:14:07 +08:00
所以 AppImage / nix 吧(
|
36
msg7086 2021-12-04 00:31:01 +08:00 via Android
你的问题在于要在 CentOS 上安装不兼容的软件包。
RHEL 之类的商业发行版做出来就是为了让人去适配他的。你要用到软件都应该围绕着你的发行版去定制。如果你要用的功能太新,系统太老,那软件是很难跑起来的。这就像你要运行新软件,却硬开一个 Windows XP 一样。 如果你一定要跑,试着全静态编译,把 C 运行库之类的全部打包到一起,然后看内核能不能撑下来。内核版本够用的话还是有希望跑起来的。 |
37
iyaozhen 2021-12-04 02:00:44 +08:00
我们公司之前搞过,centos 4 上装 jdk8 ,不要说什么解压就能用,很麻烦的
也是各种魔改,glibc 都自己搞了一套 简单来说就是你这些依赖都按照到一个固定非系统目录,然后其它编译的时候指定依赖,LD_LIBRARY_PATH 啥的环境变量修改只是基本的,还可能需要改源码 |
38
abc8678 2021-12-05 01:10:46 +08:00 via Android
apt 找不到软件包的时候无奈。tar 点 gz 的包不太懂装,而且装完了如果不想用也不知道如何卸载了
|
39
julyclyde 2021-12-07 13:26:30 +08:00
这种一般都是需求有问题,而不是方法有问题
|