网上很多关于环境配置的教程都写了使用sudo或者用root用户执行, 但很多时候这些操作其实完全可以用其他的方式进行处理. 最重要的是:
有些人在使用root权限的时候并不理解自己输入的命令的含义.
有些人在使用root权限的时候并不理解自己输入的命令的含义.
有些人在使用root权限的时候并不理解自己输入的命令的含义.

这也导致了一个现象:
一个服务器上, 有root权限的用户越多, 崩的越快, 越彻底.

常见问题

  1. 我需要装个python包, 网上教程说需要 sudo apt install python-***?

如果这个包只是项目里需要用到的话, 用 virtualenv或者 conda. 务必不要把python包装到全局环境里.

  1. 我要用特定版本的 gccnvccclang进行编译, 但是服务器上没有怎么办?

docker直接拉取对应版本的容器镜像. BTW, 不需要对内核进行修改的环境配置, 基本都能用 **docker**解决.

  1. 我真的需要对 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。