问题描述

  • 在windows系统中,装软件只会有适用于当前用户和所有用户两个选项,一般我们个人的计算机就只有一个用户,所以装了就可以直接适用,没有那么多权限和角色,所以会很方便。这只是我个人使用windows的经验,可能不一定会准确,毕竟windows我是拿来即用,不用看太多说明文档,专门了解什么知识
  • 在windows我装软件是默认就点下一步下一步,改个路径不装到C盘,装好就能用。

在这里插入图片描述

  • 后来搜索了才知道,即使在windows系统,如果将软件默认安装在某用户的路径下,别的人还是无法适用的。不过我就一个用户,拿来的别的用户,而且也就一个管理员的超级用户,我只需要选择以管理员身份运行,完事了

在这里插入图片描述

在这里插入图片描述

  • 但是到了Linux完全不同,昨天我费劲千辛万苦,终于配置好了cuda,装好了虚拟环境,但是在pycharm中怎么都找不到。我用root权限,一切都是好好的。我就想是不是我的jetbraintoolbox安装的位置不对,使用常规用户安装的。
    在这里插入图片描述
  • 本人比较自说自话,做啥事都喜欢自己猜测一手,然后就认为把所有软件都变成root用户拥有的和组里的,权限都改成“777”这波稳了,如下图。特地搜索了递归改变路径的东西,如下指令。
chmod 777 jetbraintoolbox  -R

在这里插入图片描述

  • 事实证明我想多了,还是不行!!
  • 我又一想(一想准出事),是不是我把整个系统权限全部改成777,完事了,我再次想了想,还是算了,在崩溃,我怎么办。
  • 还是走正道,人总是不可赚到认知之外的钱,作为技术人员的基本操守,我总是不能胡乱用知识之外的系统,windows除外。

解决问题

  • 本来想找找资料全面的介绍一下权限管理,用户管理,但是我一看资料,乖乖!!太多了,写不完,而且我老师还在催着我快点搞论文,所以,这里还是从解决问题的角度出发,分为两部分,为什么我这样做不行,以及正确的姿势应该是什么样?
  • 虽然我是用的linux mint是基于ubuntu进行开发的,不过都是使用linux的内核,我这里参考的是红帽公司的文档和基于centos的《鸟哥的linux私房菜》,所有的指令我都是做过测试,完全可以执行。
为什么会出现下载的东西别的用户用不了?
  • 首先来看一下文件的权限, 先来点基础知识,user权限前标识符号为d表示当前的文件是目录。r是可读,w可写,x可执行。
    在这里插入图片描述
  • 对于anaconda,“.conda”jetbrain-toolbox关于三部分user、group和others三部分人的权限分别都是可读可写可操作,按理来说我在正常使用的用户也应该能够进行所有的权限操作。
    在这里插入图片描述
  • 上述可以执行是建立在一个前提上,那就是他们的上一级目录也是有相应的权限的,否则就算我把这一级目录改成对任何用户都是可读可写可操作,就没有任何意义。我们看一下/root的权限。

在这里插入图片描述

  • 很明显,根据上图而言,/root这个路径,只有root用户可以访问,如果我把这个文件改为777,就没有任何意义了。
  • 理论上我是可以直接把root这个文件的权限改为777,或者单纯增加一个任何人都可执行,但是我怕这样使得整个系统又崩溃,所以再继续看一下还有没有别的办法,至少知道了,目前的root文件对于别的用户而言并没有任何权限。
  • 这里就算我将当前用户加入到root组,也无济于事,因为/root仅仅针对root用户有效,对同group和others都么有任何访问权限,那么我的解决办法就是
  • 解决办法——卸载重新安装
没错,你看到的就是关于卸载软件的教程
  • 单纯想卸载这个软件,但是不想删除配置文件,用这个(不推荐,做事就要做绝,删除就要删除干净)
sudo apt remove package-name
# 样例是删除pix程序
sudo apt remove pix
  • 彻底删除,包括配置文件(删除完毕)
sudo apt purge package-name
# 样例是删除pix程序
sudo apt purge pix
  • 这波尴尬了,改又改不好,删又删不掉,这波血亏。
    在这里插入图片描述
  • 只能去网上在找找看别人的卸载教程了,链接
  • 虽然说我有镜像,不过我还是很忐忑的,因为跳回去,不知道优惠丢失啥
  • 先停用这个东西
    在这里插入图片描述
  • 删除anaconda3,但是下面多出来一个conda,我需要删除吗?要不还是删除了吧,弄个干脆,而且我看时间,估计也是我最近才安装的,所以还是删除了吧
    在这里插入图片描述
linux系统下的正确安装应用姿势!
  • 要了解如何安装应用,首先需要知道linux中的文件系统配置的标准,就是每个文件夹该放什么东西,这套标准简称为FHS(File Heirarchy standard),遵循这套标准能够保证真个系统的目录架构更加合理。
  • 本来想直接复制表格的,但是个人觉得还是要自己输出一遍,才会印象深刻。对于文件目录的输出如下。
目录应该存放的东西
/bin存在系统运行的基础指令,包括cat、chmod、chown等
/boot开机过程中需要使用到的配置文件
/devusb设备的外设调用的位置,linux一切以文件的形式存在,访问文件,相当于访问设备
/etc系统主要的配置文件,包括用户的配置文件,服务的启始文件等
/lib系统开机时需要调用的函数库文件
/media可移动的多媒体文件,包括软盘、光盘等
/mnt暂时挂载某些额外的装置
/opt你需要将软件安装到这个文件路径下方
/run开机之后,系统运行过程中,所有产生的信息存在的地方
/sbin开机过程中需要的指令,比如说开机、修复等指令
/srvservice的缩写,保存网络服务需要的数据
/home系统默认的用户家的目录
/root系统管理员的家目录
/usr存放可分享不可变动的资料,就是可以通过局域网分享给别的用户使用的资料,这里的简称是Unix Software Resource(Unix操作系统的软件资源),如果你是软件开发者,需要将数据存放在当前的路径下
/usr/local系统管理员本地自行安装下载的软件,并不是系统软件库默认提供的软件,建议安装到此地
对照到自己的系统看一下
  • 首先可以看到,我们opt文件是安装了百度云和微软的edge浏览器,我是可以正常使用的,说明我找到的文档还是对的,下面再看看/usr/local
    在这里插入图片描述
  • 你还别说,真是的哈!可以看到,这下面安装了我测试过的cuda文件
    在这里插入图片描述
  • 那么问题来了,我究竟要装到那个文件下面,感觉都还行,还是撞在opt里面吧。
  • 不过,在装之前,我还是得了解一下sudo su和直接root打开的区别,我比较懒,一般都是直接在root终端安装的,我的了解一下。
安装软件究竟是该sudo 还是直接切换到root那?
  • 首先看一下sudo和直接su到root的区别
    • su :使用来切换用户的,啥都不加,是直接切换到root用户下方,注意这里有两种方式,需要注意
      • “su” 会切换到root用户,但是当前的shell环境(比如说env,path等)还是原来的账户的。
      • “su -” 会切换到root用户,但是当前的shell环境(比如说env,path等)会切换到root的账户下。
    • sudo:当前用户在自己的环境中,暂且行驶一下root用户的权限,而且输入的并不是root密码,是用户自己的登陆密码。也可以切换到别的用户,但是要加上用户名称。
  • 我发现一个问题,我有绕回来了,不管是sudo还是su,都是使用root权限安装,不过安装软件确实需要使用root权限安装,所以主要是目录的关系,并不是我安装的问题。
  • 总结:安装软件,一定要选目录,不能安装在root中
安装anaconda
  • 下载anaconda软件,并开始安装。下载地址
    在这里插入图片描述

  • 学了那么多,机智如我,自己创建在/opt路径下创建了一个Anaconda文件
    在这里插入图片描述

  • 安装完毕,查看一下,好吧,之前是直接装在了root下面,所以不用配置路径,这里重新配置一下路径。
    在这里插入图片描述

  • 在root和当前用的home目录下方,编辑.bashrc文件,运行两次,并将下列的路径添加到文末

cd 
gedit .bashrc
export PATH="/opt/anaconda/bin:$PATH"
  • root环境下,成功

  • 当前用户下,运行成功
    在这里插入图片描述

  • 下面是最关键的,就是看看jetbraintoolbox能不能调用annaconda。这里默认是安装在当前用户下的,也可以运行。我先跑一下

在这里插入图片描述

  • 可以使用,算是找到了,不过我发现env下面的环境是空的,相当于一个用户一个conda环境列表,小问题,没啥事

在这里插入图片描述

补充

下面这段写的有点多,我就不删掉了,当作补充吧

  • linux是一个多用户系统,我们登陆linux系统的时候,是选择一个用户名,然后输入对应的密码,但是linxu的主机并不是依靠用户名进行识别,是依靠每一个用户的身份序号(UID = User ID)进行识别的。linux系统主要分为两类用户,分别是人类用户(Human user)和系统用户(system User),每一类用户都有特定的UID范围,系统也是通过UID范围判定你的用户类型。
    • 人类用户
      • 超级用户 :在linux系统中拥有所有的特权,对所有的操作都有绝对的控制成为root,提示符号是**“#”**,默认UID是0.
      • 普通用户:没有特权,只能在自己所在的文件和目录下,执行的有限的操作,提示符号是**“$”**。当然也可以根据需要,给普通用户一些权限和特权。UID是1000到60000.。
    • 系统用户:这一类用户主要是用来在后台运行系统服务和进程,并不能进行交互。系统用户并没有自己的home目录。UID是1到999。

总结

  • 这次很有成就感,对,是我自己阅读文档解决问题的,虽然我花了好几天,不过这其中我也摆烂了几天,不过还是很有成就感。用了这个玩意两年之后,等我毕业了,找相关的linux工程师,不是很香。
  • 鸟哥的linux私房菜,真的是本好书,太香了,因该好好看看的!继续好好看看!

参考

更多推荐