Linux 系统和远程开发常见问题总结
在过去的讨论中,我们主要关注了一系列关于 Linux 系统管理和远程开发环境中可能遇到的问题,以及相应的解决方案。以下是问题的总结和解决方案,希望这些内容可以作为你未来操作和排查问题时的参考。
1. 系统和账户问题
误删除系统关键目录:你提到曾经使用 rm -rf /* 删除了 /etc 和 /bin 等关键系统目录,导致系统无法正常工作。这种情况下,最有效的方法是重装操作系统,然后尝试恢复必要的配置文件和用户数据。要尽量避免对系统根目录使用危险命令,并建议使用特定的备份工具(如 rsync)定期备份重要数据。
用户账户与密钥问题:在重装系统后,要使以前的账户通过以前的密钥登录,必须重新创建相应的用户账户,并将密钥文件添加到 .ssh/authorized_keys 中。可以通过命令 cat ZhuoQuan.pub >> ~/.ssh/authorized_keys 将公钥添加至相应文件中,确保其权限为 700。
具体来说:
#root账户下增加用户
sudo useradd <Name> -p <password>
#必须要切换到新建的用户生成ssh-key,一般来说su完之后就会/home/<Name>路径下
su - <Name>
#生成key,同时可以自定义用户路径
ssh-keygen
#把公钥放进authorized_keys,同时注意>>是续写,不会覆盖,所以如果要更新这个authorized_keys,你需要先把原来的删掉
cat id_rsa.pub >> authorized_keys
#赋予权限
chmod 600 authorized_keys
#赋予权限
chmod 700 .ssh
#把你的私钥读出来,然后拷贝到你想存储的地方存下来
cat id_rsa
2. 权限管理与文件操作
在你rm -rf /* 之后,所有的用户信息都会被删除,这意味着原来你的用户id是1012的话,所有的文件归属都会给到1012,但是1012这个用户已经被你杀掉了。所以所有之前的权限都会让新用户无法访问。
更改文件所有者与权限:为了将文件夹更改为其他用户所有者,你可以使用 chown 命令。例如,要将 /oldhome/WeiTeng 目录的所有权更改为某个用户,可以运行:
#查看这个用户属于什么用户组
groups Name
#-R 是递归,-v是显示你操作的具体日志,用户:用户组
sudo chown -R Name:Name /oldhome/Name/* -v
同时,要确保 SSH 密钥文件的权限正确(一般为 600),否则可能会导致登录失败。
软链接与文件移动:在你提到将 /home/Name 软链接到 /oldhome/Name 后,遇到 SSH 登录失效的问题。这里的关键在于确保原始目录和目标目录的权限保持一致,尤其是 .ssh 目录中的密钥文件权限设置。
3. 远程开发与 VS Code 连接问题
VS Code 无法连接旧版 CentOS:你在使用 VS Code 远程连接 CentOS 时遇到了不受支持的 OS 警告。这通常是由于 CentOS 版本较旧,导致与 VS Code Server 的兼容性问题。可以尝试手动更新相关的库,或者直接升级系统至较新的版本。
卡在“Copying VS Code Server to host”:这个问题通常是由于网络不稳定、权限不足或目标目录不可写导致的。可以检查 .vscode-server 目录中的日志文件来获取更多信息,并查看是否存在网络问题,确保 VS Code 能正确连接。
4. 软件安装和依赖问题
这里的主要问题是卡在yum。
显卡驱动安装:你在安装 NVIDIA 驱动时遇到了多个依赖问题和内核不匹配的情况。此类问题通常需要确保内核和 kernel-devel 一致,确保驱动与内核版本匹配。推荐在安装前使用 uname -r 查看内核版本,并下载与之匹配的开发包。
GCC 编译失败:在尝试编译 GCC 时遇到了缺少 GMP、MPFR、MPC 等依赖的问题。可以通过 yum install gmp-devel mpfr-devel libmpc-devel 安装这些依赖,或者手动下载源码并安装。如果遇到缺少 32 位开发库,可以根据需求选择是否启用 --disable-multilib。
5. Yum 仓库与软件源问题
yum遇到的问题是,一直显示有一个库无法加载。
在yum clean all后,显示如下
问题是什么呢,问题是有个repo用不了。我把它备份之后,就不会存在上述问题了。这个问题也卡了我很久。
mv CentOS-xxx.repo CentOS-xxx.repo.bak
6.软连接
想把新建的home链接到oldhome中。
## -s是指软连接,注意啊,前面那个是源链接。
ln -s /oldhome /home
7. 其他问题与注意事项
缺少系统依赖:在使用命令时遇到诸如 cannot find crtn.o 的错误,这通常表示缺少某些必要的系统开发库。可以通过安装开发工具组来解决:
sudo yum groupinstall 'Development Tools'
环境变量设置:在配置 CUDA 或 GCC 环境变量时,可以将相应路径添加到 /etc/profile 或用户的 .bashrc 文件中,例如:
#暂时的。
export PATH=/usr/local/cuda/bin:$PATH
#当你上一条指令执行成功之后
vim ~/.bashrc
#把这条语句拷贝进来
export PATH=/usr/local/cuda/bin:$PATH
慎用rm。使用mv把不需要的丢到垃圾站,定时清理垃圾站即可。
这些问题的总结希望能帮助你更好地管理 Linux 系统,尤其是在远程开发环境和软件安装中更有效率。如果你有更多问题或需要进一步帮助,欢迎随时提问。