您尚未登录。

#1 2020-05-24 21:32:32

Zangwill
会员
注册时间: 2018-03-16
帖子: 54

如何安装同一软件的多个版本

X问题:系统已经安装了 tensorflow 2.x 版本,现在需要用 tensorflow 1.x 版本,现在我
1) 不想 downgrade 降级
2) 不想 R 卸载,再装 AUR 的  tensorflow 1.x
3) 想同时装 tensorflow 2.x 和 1.x
4) 想直接装上 downgrade 降级源里的 tensorflow 1.x, 如图
1
求教

最近编辑记录 Zangwill (2020-05-24 21:37:46)

离线

#2 2020-05-24 21:39:30

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: 如何安装同一软件的多个版本

如果两个软件包提供了同一个路径的同一个文件呢?文件系统不支持文件版本怎么办?你要求什么行为?你自己要想,我要“安装两个版本”是要达到什么效果,然后怎么达到这个效果。


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#3 2020-05-24 21:40:36

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,432
个人网站

Re: 如何安装同一软件的多个版本

Arch Linux 不支持同时安装一个包的不同版本。Arch Linux 也不保证旧包在新的系统上能够跑起来。
如果需要旧版本的软件包,通常的做法是,单独打一个包。比如人们已经打过的 php53、php56、python2、python35、python36 等。所以你需要自己去找到 tensorflow 1.x 的 PKGBUILD 然后相应修改,再 makepkg。(如果你找不到现成的包的话。)

另一个解决问题的思路是,使用容器技术(如 systemd-nspawn、lxc、docker)安装一个有你需要版本软件的 rootfs,然后就有用的了。

离线

#4 2020-05-24 22:01:37

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: 如何安装同一软件的多个版本

依云 说:

Arch Linux 不支持同时安装一个包的不同版本。Arch Linux 也不保证旧包在新的系统上能够跑起来。
如果需要旧版本的软件包,通常的做法是,单独打一个包。比如人们已经打过的 php53、php56、python2、python35、python36 等。所以你需要自己去找到 tensorflow 1.x 的 PKGBUILD 然后相应修改,再 makepkg。(如果你找不到现成的包的话。)

另一个解决问题的思路是,使用容器技术(如 systemd-nspawn、lxc、docker)安装一个有你需要版本软件的 rootfs,然后就有用的了。

其实所有用户登录的进程(包括user service和session内进程,哪怕是sudo/pkexec这种进程)都应该在mount namespace(甚至是完整的容器)中执行
讲道理这都是软件上游或下游的锅,你要么向下兼容,所有旧版软件提供的功能新版都要提供,如果不提供,请不要继续使用原来的文件名,换新名字,这样用户就可以同时安装两个版本,非常方便。否则有breaking change还用旧名字,要么用户或其他软体依赖旧行为的全部爆炸,要么用户想方设法搞好几套目录结构来安装不同版本。
但不幸的是,一大票软件不改名字直接引入breaking change。包括各种DLL,每个版本都要占据libxxx.so的符号链接,链接器也不管三七二十一就只会找这一个名字。

最近编辑记录 xtricman (2020-06-01 23:44:46)


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

页脚