网上很多关于环境配置的教程都写了使用sudo或者用root用户执行, 但很多时候这些操作其实完全可以用其他的方式进行处理. 最重要的是:
有些人在使用root权限的时候并不理解自己输入的命令的含义.
有些人在使用root权限的时候并不理解自己输入的命令的含义.
有些人在使用root权限的时候并不理解自己输入的命令的含义.
这也导致了一个现象:
一个服务器上, 有root权限的用户越多, 崩的越快, 越彻底.
常见问题
- 我需要装个python包, 网上教程说需要
sudo apt install python-***
?
如果这个包只是项目里需要用到的话, 用 virtualenv
或者 conda
. 务必不要把python包装到全局环境里.
- 我要用特定版本的
gcc
或nvcc
或clang
进行编译, 但是服务器上没有怎么办?
用 docker
直接拉取对应版本的容器镜像. BTW, 不需要对内核进行修改的环境配置, 基本都能用 **docker**
解决.
- 我真的需要对
Linux
内核进行修改怎么办?
如果你都走到这一步了, 肯定听说过 KVM
吧😜.
欢迎补充…
—————
对于Linux这种多用户系统的使用核心之一就是控制自己的权限和边界,能不污染全局环境就不污染。网上很多教程有很多会使用sudo
去修改一些共有的环境和包。这种情况尽量少做。一个在开发的项目,最好的是能将所有变量控制在自己的当前的项目文件中(比如说python使用 venv去控制自己的package,尽量少的污染的系统的lib文件夹)。如果你想既能随心所欲的针对系统各种配置文件 lib库做出操作,又不污染当前机器的配置,请使用docker为主的系列容器技术,或者kvm为主的虚拟化技术。
环境变量、各种lib的控制边界:当前Project > 当前用户 >>>>> 公有配置。当你想越过当前用户去修改系统部分库和变量的时候,就直接考虑docker吧。
案例:
1. 我想测试多个cuda版本的优化情况:需要动系统的 /usr/local 甚至会修改 其下 cuda文件的软连接。推荐直接使用docker,去nv的image repos去寻找特定的cuda image。
总之中不知道如何处理的时候推荐无脑docker。如果涉及到内核部分,比如说5GC的部署需要 kernel > 5.0
直接KVM。