页次: 1
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, 如图
求教
最近编辑记录 Zangwill (2020-05-24 21:37:46)
离线
如果两个软件包提供了同一个路径的同一个文件呢?文件系统不支持文件版本怎么办?你要求什么行为?你自己要想,我要“安装两个版本”是要达到什么效果,然后怎么达到这个效果。
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
Arch Linux 不支持同时安装一个包的不同版本。Arch Linux 也不保证旧包在新的系统上能够跑起来。
如果需要旧版本的软件包,通常的做法是,单独打一个包。比如人们已经打过的 php53、php56、python2、python35、python36 等。所以你需要自己去找到 tensorflow 1.x 的 PKGBUILD 然后相应修改,再 makepkg。(如果你找不到现成的包的话。)
另一个解决问题的思路是,使用容器技术(如 systemd-nspawn、lxc、docker)安装一个有你需要版本软件的 rootfs,然后就有用的了。
离线
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)
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
页次: 1