Ubuntu下的基本知识点(一)

此篇博客做了大量验证性实验,并不是很成一个体系,只做一些随笔记录,并没有哪方面的专题。

常用命令语句可以参见如下:

Ubuntu常用命令大全 - linuxws - 博客园

linux命令详解 | 《Linux就该这么学》

1.虚拟机重新安装了Ubuntu20.04.3,安装完毕后,可以看到一些文件夹的起初状态,/usr/local文件夹里内容都为空。这个文件夹用来存放本地安装的程序,一些根库文件

其它的一些文件夹介绍见如下链接

Ubuntu根目录下各文件夹的功能详细介绍 - Yudar - 博客园

/etc/init.d是个什么文件夹_q469587851的博客-CSDN博客_init.d是什么

2.发现该桌面版本预装了python,但没有g++或者gcc编译器

3.常用的shell命令语句可参考如下链接

ubuntu及shell脚本常用命令入门_......、的博客-CSDN博客

linux/ubuntu常用bash/shell命令_忧郁一休-CSDN博客

4.这边联想到了windows下的lib和dll的区别

LIB和DLL的区别与使用 - 苦逼码农2014 - 博客园

以opencv编译出来的动态链接库为例,

可以看到这里的lib是上面提到的这种(包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library )

这也就是我们平时调用Opencv时,如果没有先配置好opencv的bin目录环境变量,又没有在执行文件exe的对应目录下放入对应lib的dll文件时,会报错。编译是没有问题的,因为lib里面本身就预定义了这些函数接口。编译到执行的一个大概过程可以参见如下博客 C/C++源代码到可执行程序的过程详解 - SilenceBook - 博客园

构建C++可执行程序 - 知乎

解决此问题方法之一就是把dll文件拷贝到exe的目录下。还有一个方法就是把bin文件添加到环境变量里去,让其能够找到。

同时博主也做了实验,就是环境变量里有两个路径下都有共同的名为opencv_world454d.dll,其中一个文件夹下的dll只是故意将别的dll名改为其,看其能否自动找到正确的dll,正确执行程序。验证下来,这个和环境变量里路径的添加顺序有关系。如下第一个路径下存放的是假的名为opencv_world454d.dll ,程序则不能正确执行,调换下顺序后,程序则能正确执行。

顺序:

程序优先考虑exe所在目录下是否有对应的dll,如果没有找到对应的dll,则会在环境变量路径下找,且只考虑索引到的一个出现此名的dll, 不会接着往下找。

5.同理,ubuntu下也有环境变量,下面说明下

/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。这个文件一般就是调用/etc/bash.bashrc文件。

 /etc/bash.bashrc:系统级的bashrc文件,为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。 

/etc/environment: 在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。

~/.profile: 在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

 ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率 上讲不好。

~/.bash_profile:每个用户都可使用该文件输入专用于自己 使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

 ~./bash_login:不推荐使用这个,这些不会影响图形界面。而且.bash_profile优先级比bash_login高。当它们存在时,登录shell启动时会读取它们

~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.

~/.pam_environment:用户级的环境变量设置文件。

可参考如下博客:

Ubuntu环境变量——添加与删除 - bohaoist - 博客园

详解/etc/profile、/etc/bash.bahsrc、~/.profile、~/.bashrc的用途_jirryzhang的博客-CSDN博客

Ubuntu环境变量配置_小白成长记-CSDN博客_ubuntu 环境变量

Ubuntu 环境变量的设置_cc的专栏-CSDN博客_ubuntu环境变量

ubuntu环境变量的三种设置方法 - 星朝 - 博客园

export命令

env命令

echo $PATH

 

 【命令】Ubuntu设置和查看环境变量_盐与黑胡椒的博客-CSDN博客

 Ubuntu系统中使用echo向文件写入内容 - 夏洛蒂 - 博客园

 接下来了解下软硬连接

https://jingyan.baidu.com/article/cbf0e5004e2dfd2eaa289393.html

ubuntu软连接建立与删除使用总结_CCS_330的博客-CSDN博客

 Ubuntu 链接ln的使用:创建和删除符号链接 - 553490191 - 博客园

Ubuntu软连接命令_开发笔记-CSDN博客_ubuntu软连接命令

ubuntu下的软链接和硬链接_三哥的专栏-CSDN博客_ubuntu 软连接

经常还会碰到ldconfig命令语句,关于该命令的一些博客介绍如下

Linux ldconfig命令 - 红孩儿你好 - 博客园

ldconfig 命令_陈嘉怡的专栏-CSDN博客_ldconfig命令

6.ubuntu常见的安装软件的方法有三种:

(1)apt-get方式

  ubuntu软件包安装卸载方法_zhw864680355的博客-CSDN博客

     apt-get install xxx 安装xxx 。如果带有参数,那么-d 表示仅下载 ,-f 表示强制安装

     apt-get remove xxx 卸载xxx

     apt-get update 更新软件信息数据库

     apt-get upgrade 进行系统升级

     apt-cache search 搜索软件包

查看安装到哪里了可以参看

ubuntu查找apt-get安装的库的位置并添加到cmakelist中_weixin_36049506的博客-CSDN博客

用apt-get安装的软件都安装到哪儿去了 - Ubuntu中文论坛

(2)dpkg方式

(3)源码包下,编译完毕后make install

这是编译源代码的第一步,通过 ./configure 命令完成。执行此步以便为编译源代码作准备。常用的选项有 –prefix=PREFIX,用以指定程序的安装位置,然后sudo make, sudo make install

(4)aptitude方式

【Ubuntu】aptitude命令详解_widiot的博客-CSDN博客_aptitude

【Linux】ubuntu使用aptitude命令替换apt-get_love131452098的博客-CSDN博客

7.Ubuntu卸载软件的方法:

Ubuntu命令卸载软件_象牙塔下的渣渣-CSDN博客_ubuntu卸载软件命令

Ubuntu卸载软件:3种卸载方式_初识-CV的博客-CSDN博客_ubuntu 卸载软件

linux apt-get autoremove千万别乱用_笑看人生的博客-CSDN博客

ubuntu 卸载从源码安装的 emacs - Fienly - 博客园

apt - How to completely remove my Emacs? - Ask Ubuntu

8.更新源

cd /etc/apt下

然后可以备份下当前源

sudo cp sources.list sources.list.backup

然后修改其,参见我之前的博客

VMware Ubuntu20.04下挂载磁盘、更新源等常用配置_jiugeshao的专栏-CSDN博客

9.多版本下如何切换当前版本

博主当前系统已经默认安装了python3.8.10. /usr/bin下只有python3,并无python

博主想通过apt-get方式安装3.6,但出现如下信息:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'python3.6-2to3' for regex 'python3.6'
Note, selecting 'libpython3.6-stdlib' for regex 'python3.6'
0 upgraded, 0 newly installed, 0 to remove and 83 not upgraded.

是由于博主的默认源里并无这个库,非要安装这个库,可以更新源(仓库)或者从源码安装 ,博主这里apt-get python3.5吧

可以看到/usr/bin下多了一个python3.5(新的python版本)

 

使用如下命令看到python默认版本是python3.8

下面再通过源码方式手动安装python3.6

Index of /ftp/python/3.6.2/ 上下载Python-3.6.2.tgz, 并解压缩到home路径下(博主的路径)

命令行语句下执行

./configure

会出现报错信息

configure: error: in `/home/sxhlvye/Python-3.6.2':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

同时执行如下查找命令,发现g++和gcc还未安装

可以通过如下命令安装一些基本的库

sudo apt-get install build-essential

如下也显示了即将要安装的库的内容,可以看到里面有g++和gcc

再回到前面源码安装python3.6

再次输入./configure开始正常进行安装,完毕后再执行sudo make,最后执行sudo make install

make install时,出现如下报错:

zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [Makefile:1067: install] Error 1

可以按照报错提示,安装下zlib库

这里又注意到了带-dev后缀的包,相关介绍可参见博客

ubuntu -dev -dbg 的软件包详解_sxpcccc的博客-CSDN博客

完毕后,重新在make install,成功。

在/usr/bin下并没有看到python3.6

 可看到python3.6安装到了/usr/local/bin目录下了

 参考博客:ubuntu安装python3.7,并更新python默认指向为python3.7_u014775723的博客-CSDN博客_ubuntu安装python3.7

此时电脑里python3已经存在了3.5, 3.6和3.8三个版本,如下可以指定python3命令时,指向的是python3.6版本

可看到已经切换为了3.6.2版本

同时查看pip3库的路径,只有一个目录下有,且pip3绑定的就是pip3.6,所以也不需要更改了

 

 ubuntu16.04多版本Python任意切换(亲测有效)_zbr794866300的博客-CSDN博客

Ubuntu16.04多个版本GCC编译器的安装和切换 - 小淼博客 - 博客园

Ubuntu安装切换多个软件版本_honyniu的专栏-CSDN博客

pip指定python版本安装库 - 凉城旧巷 - 博客园

补充:

1.接下来会卸载掉3.5的python环境,用到上面的库卸载语句,因为python3.5当时是通过apt-get方式安装的,所以这里在终端上输入命令sudo apt-get --purge remove python3.5来删除(--purge是可选项,写上这个属性是将软件及其配置文件一并删除,如不需要删除配置文件,可执行sudo apt-get remove python3.5)

实际先使用了sudo apt-get remove python3.5命令,执行完毕后,发现python3.5版本还在

再使用purge方式,发现python3.5还在

只能手动一个个删除依赖库,不能使用autoremove

博主后来使用上文提到的aptitude安装和卸载是可以的,尝试删除上面的python3.5,发现其包和配置包都被卸载掉了。也发现源码安装的包有的时候并不提供uninstall命令,所以还是指定一个安装目录吧,所有文件都安装到一个指定目录下,删除也好删除。以后尽量按照这个来,减少不必要的麻烦。

linux下python3源码安装及卸载 - wuli潇潇 - 博客园

2.删掉上面提到的软链接中的目标文件/usr/local/bin/python3后,发现

/usr/bin下的python3显示出一个失效符号, 可以删除原来的软链接,重新再建立下软链接即可。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux操作系统是一种开源的、免费的操作系统,它基于Unix操作系统开发而成。下面是一些Linux操作系统的基础知识点: 1. 内核:Linux操作系统的核心部分,负责管理计算机的硬件资源和提供基本的系统服务。 2. 发行版:Linux操作系统有很多不同的发行版,如Ubuntu、CentOS、Debian等。每个发行版都有自己的特点和软件包管理工具。 3. Shell:Linux操作系统使用Shell作为用户与内核之间的接口。常见的Shell有Bash、Zsh等,它们提供了命令行界面和脚本编程功能。 4. 文件系统:Linux操作系统使用树状结构的文件系统来组织文件和目录。常见的文件系统类型有Ext4、XFS等。 5. 用户和权限管理:Linux操作系统支持多用户环境,每个用户都有自己的账号和权限。管理员可以通过权限管理来控制用户对文件和系统资源的访问权限。 6. 进程管理:Linux操作系统使用进程来执行任务。管理员可以通过命令来查看和管理系统中运行的进程。 7. 网络配置:Linux操作系统支持网络功能,可以配置IP地址、网络接口等。管理员可以使用网络工具来管理网络连接和配置。 8. 软件包管理:Linux操作系统使用软件包管理工具来安装、更新和卸载软件包。常见的软件包管理工具有apt、yum等。 9. 命令行工具:Linux操作系统提供了丰富的命令行工具,可以完成各种任务,如文件操作、进程管理、网络配置等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹叶青lvye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值