安装软件
使用apt-get
或apt
命令安装软件包
该方法时Ubuntu系统下的最常用的安装方法,该方法要求你提前配置好Ubuntu软件装源,并且需要经常运行apt-get update
命令,以保证软件园里的软件版本时最新的。
apt-get
命令安装软件包的时候会把下载的软件包保存到/var/cache/apt/archives目录,并进行安装,而且更重要的时可以解决软件包安装中的依赖问题。
执行下面的命令:
1 | sudo apt-get install 软件报名 |
例:使用apt-get
命令安装wget工具
执行下面命令:
1 | sudo apt-get install wget |
安装deb软件包
在Ubuntu系统下默认的软件包扩展名为deb,这种deb包时debian系统下的软件包管理方式,因为Ubuntu系统是基于debian系统后更改的版本,所有deb格式也是Ubuntu系统下的默认软件包格式。deb软件包的安装需要使用dpkg
命令或在图形界面下,直接双击安装即可。通常情况下我们是在命令行下安装deb软件包。执行下面的命令:
1 | sudo dpkg -i package.deb |
dpkg
命令常用选项介绍如下:
1 | dpkg -r package 删除包 |
Ubuntu源码包编译安装方式
如果你只有源码包而没有下载到deb软件包,那么可以通过编译安装的方式来安装软件包。在编译安装之前,需要先建立编译环境,使用以下命令建立基本的编译环境:
1 | sudo apt-get install build-essential |
通常情况下,我们下载到的源码包.tar
,.tar.gz
,.tgz
,.tar.bz
等格式,当然也并不是所有以这些为扩展名的文件都是源码压缩包,他们也有可能已经被编译过了,压缩包里面会有一个安装程序的(Installer)或者扩展名为bin
的可执行文件。
编译安装的步骤如下:
tar xvf 源码包.tar.gz
- 进入解压后的源码包目录,查看
readme
或者相关说明即可找到安装的方法(下面方法是通常做法,具体最好参照源码包的说明)。 ./configure make sudo make install
编译安装方式需要我们自己解决软件包安装的依赖问题,如果在安装过程中报依赖问题,我们可以使用apt-get
命令去尝试安装,之后再进行编译安装方式需要我们自己解决。
使用Ubuntu软件包管理器安装
使用软件包管理器:系统-系统管理-Ubuntu软件包管理器,输入想要安装的软件名字,搜到后右击选”标记以安装“,然后点击菜单下面的”应用“即可。这个工具其实和apt
一样,可以搜索,下载,安装Ubuntu源里的软件。
二进制包的安装方式
对于扩展名为bin
、run
、sh
等的文件或者没有扩展名的二进制文件安装(此类行为linux通用的二进制安装包,可能只对应x86,也可能包括x86-64支持),使用下面的命令安装:
1 | chmod u-x 二进制包.bin |
rpm
包的安装方式
Ubuntu系统下默认只支持deb
格式的软件包安装中,如果想安装rpm
格式的软件包,首先我们需要安装一个rpm
转deb
的软件
1 | sudo apt-get install alien |
然后就可以对rpm
格式的软件转换成deb
格式的了:
1 | alien -d *.rpm |
然后就可以用deb
的安装方式进行软件安装。也可以不需转换而直接对rpm
包进行安装:
1 | alien -i *.rpm |
zip压缩包安装
使用unzip
命令将.zip
压缩包解压,之后根据压缩包中的程序包后缀类型(.tar.gz
、deb
、rpm
等)再进行安装。
卸载删除软件
Linux下的软件基本都会需要其他的软件来依赖,在安装某个软件的时候,会连同依赖包也一并安装。
apt-get remove 软件包
就是删除该软件包,但不会删除依赖的软件包,因为有可能会有别的软件包对该依赖包有依赖关系,所以不会对依赖包进行删除。
apt-get autoremove
是专门用来检测并删除那些不再依赖的包。
1 | sudo apt-get remove --purge 软件包名 # 移除软件包的应用及配置 |
Linux终端使用ls
时的文件颜色
颜色 | 文件类型 |
---|---|
白色字 | 普通文件 |
蓝色字 | 目录 |
绿色字 | 可执行文件 |
红色字 | 压缩文件 |
浅蓝色字 | 链接文件 |
红色闪烁字 | 链接的文件有问题 |
黄色字 | 设备文件 |
灰色字 | 其他文件 |
绿色底色 蓝色字 | 任何人都可以读写的文件夹 |
Linux权限管理
Linux的权限分组
使用下面的命令,可以查看所在文件夹中文件的权限:
1 | ls -l # 查看非隐藏文件的权限 |
Linux中权限由10为字母组成,就是下图中标注出的权限部分(-
代表没有取得该权限):
在Linux的权限中,每个用户属于一个权限组,其中包括几个概念,即:文件所有者、所在组、其他组。
- 文件所有者:一般来说可以简单的理解为文件创建者,但是创建后可以通过
chown
(change owner)命令来更改文件的所有者 - 所在组:文件创建时所在组为创建者所在组,后期可以通过
chgrp
(change group)命令来修改文件所在组 - 其他组:除文件所在组以外的组称为其他组
具体权限介绍
Linux权限的10位字母具体可以分为四段:
- 第一段:表示文件是否是目录,
- 若为目录,则第一个字母为
d
- 若不为目录,则为
-
- 若为目录,则第一个字母为
- 第二段:表示文件所有者权限,
- 第一个
r
(read)表示为读权限,第二个w
(write)为写权限,第三个x
(execute)为可执行权限。 - 若没有某个权限,则为
-
- 第一个
- 第三段:表示文件所在组权限,具体
rwx
含义同上 - 第四段:表示其他用户组权限,具体
rwx
含义同上
权限修改
其实linux中对于权限的修改十分简单,大家可以将权限理解为二进制的对应关系(每段rwx
为一组),例如你想给一个文件读权限,而不给写权限和可执行权限,那么对应的就是100(二进制),也就是4
,同理如果给rwx
权限那么就是7
。
那么,如果我们想要给一个文件test.sh
文件赋予rwxr-xrr-x
权限我们就应该执行:
1 | chmod 755 test.sh |
其中,第一个
7
对应了文件所有者权限所持有的权限,第二个5
对应了文件所在组的权限,第三个5
对应了其他用户组的权限。
但是,如果你想要更直观的看出给一个文件的具体权限,可以使用下面的命令:
1 | chmod u=rwx,g=rx,o=rx test.sh |
其中,第一个
u
表示文件所有者的权限,第二个g
表示文件所在组的权限,第三个o
表示其他用户组的权限。
如果想给某个文件增加某一种权限,则可以使用下面的命令:
1 | chmod u+r # 给user添加读权限 |
Ubuntu挂载详解及mount
命令用法
挂载概念
Linux中的根目录以外的文件想要被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除此关联关系的过程为“卸载”。
注意:“挂载点”的目录需要以下几个要求:
- 目录事先存在,可以使用
mkdir
命令新建目录 - 挂载点目录不可被其他进程使用到
- 挂载点下原有文件将被隐藏
挂载与卸载
挂载方法
使用下面的命令可以实现挂载:
1 | mount [-fnrsvw] [-t vfstype] [-o options] device dir |
device
:指明要挂载的设备- 设备文件:例如
/dev/sda5
- 卷标:
-L ‘LABEL’
,例如-L ‘MYDATA'
- UUID:
-U ‘UUID’
,例如-U ‘0c50523c-43f1-45e7-85c0-a126711d406e’
- 伪文件系统名称:
proc
、sysfs
、devtmpfs
、configfs
- 设备文件:例如
dir
:挂载点- 需要事先存在,建议使用空目录
- 进程正在使用中的设备无法被卸载
- 常用命令选项:
-t vsftype
:指定要挂载的设备上的文件系统类型-r
:readonly,只读挂载-w
:read and write,读写挂载-n
:不更新/etc/mtab
-a
:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab
文件中,且挂载选项中有“自动挂载“功能)-L ‘LABEL’
:以卷标指定挂载设备-U ‘UUID’
:以UUID指定要挂载的设备-B
:bind,绑定目录到另一个目录上
注意:查看内核追踪到的一挂载的所有设备:
cat /proc/mounts
-o options
:挂载文件系统类型的选项async
:异步模式sync
:同步模式atime/noatime
:包含目录和文件diratime/nodiratime
:目录的访问时间戳auto/noauto
:是否支持自动挂载exec/noexec
:是否支持将文件系统上的应用程序运行为进程dev/nodev
:是否支持在此文件系统上使用设备文件suid/nosuid
:是否支持在此文件系统上使用特殊权限remount
:重新挂载ro
:只读rw
:读写user/nouser
:是否允许普通用户挂载此设备acl
:启用此文件系统上的acl功能
注意:
- 上述选项可以多个同时使用,彼此之间使用逗号分隔
- 默认挂载选项:
rw, suid, dev, exec, auto, nouser, and async