linux学习笔记

这个笔记比较全面的记录了本人学习Linux的过程,内容还是比较系统、全面的。学习参考的文档以及教程来源繁多,但都吸取了其中比较好的精华,并在此基础上有所拓展深入。本次笔记更多还是在于Linux命令使用上的总结,对于日后的运维学习必定有所帮助…

一、概念

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。但大体上分类为RedHat系列和Debian系列。所以本文档主要是使用CentOS并辅助性地掺杂Ubuntu一起进行讲述的。

1. 终端命令格式

Linux 刚面世时并没有图形界面,所有的操作全靠命令完成。对于命令的使用需要注意其格式。

1
command [-options] [parameter]

说明:

  • command:命令名,相应功能的英文单词或单词的缩写

  • [-options]:选项,可用来对命令进行控制,也可以省略

  • parameter:传给命令的参数,可以是 零个一个 或者 多个

  • [] 代表可选

2. 查阅命令的帮助文档信息

可通过在命令后加--help选项或者在命令的前面添加man命令来查看相关命令的帮助文档信息。

2.1 --help

1
2
3
4
#显示command命令的帮助信息
$ command --help
#--help可简写为-h
$ command -h

2.2 man

1
2
#查阅command命令的使用手册
$ man command

manmanual 的缩写,是 Linux 提供的一个 手册,包含了绝大部分的命令、函数的详细使用说明

使用 man 时的操作键:

操作键功能
空格键显示手册页的下一屏
Enter 键一次滚动手册页的一行
b回滚一屏
f前滚一屏
q退出
/word搜索 word 字符串

💡 提示:

初级阶段只需要 知道 通过以下两种方式可以查询命令的帮助信息

先学习常用命令常用选项的使用即可,工作中如果遇到问题可以借助 网络搜索

二、基础命令

由于Linux命令实在太多,下面先介绍最最常用的通用基本操作命令。后面章节会扩展性地讲述其他命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#查看当前文件夹下的内容,list
$ ls

#查看当前所在文件夹,print wrok directory
$ pwd

#切换文件夹,change directory
$ cd [目录名]

#如果文件不存在,新建文件,touch
$ touch [文件名]

#创建目录,make directory
$ mkdir [目录名]

#删除指定的文件名,remove
$ rm [文件名]

#清屏,clear
$ clear

三、关机和重启

1. 关机

shutdown 命令可以 安全 关闭 或者 重新启动系统

1
2
#选项: -r 重新启动
$ shutdown [-r] [时间]

提示:

不指定选项和参数,默认表示 1 分钟之后 关闭电脑

远程维护服务器时,最好不要关闭系统,而应该重新启动系统

常用命令示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#不指定选项和参数,默认表示1分钟之后关闭电脑
$ shutdown

# 重新启动操作系统,其中 now 表示现在
$ shutdown -r now

# 立刻关机,其中 now 表示现在
$ shutdown now

# 系统在今天的 20:25 会关机
$ shutdown 20:25

# 系统再过十分钟后自动关机
$ shutdown +10

# 取消之前指定的关机计划
$ shutdown -c

2. 重启

立即重启系统

1
2
$ reboot
#等效于shutdown -r now

四、操作命令小技巧

在使用终端命令的过程中,一些操作小技巧可以辅助我们更有效率地完成工作。

1. 放大终端窗口的字体显示

ctrl + shift + =

2. 缩小终端窗口的字体显示

ctrl + -

3. 自动补全

在敲出 文件目录命令 的前几个字母之后,按下 tab 键。如果输入的没有歧义,系统会自动补全,如果还存在其他 文件目录命令,再按一下 tab键,系统会提示可能存在的命令。

4. 终端历史命令切换

光标键可以在曾经使用过的命令之间来回切换

5. 退出执行中的命令

如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl + c

五、文件管理

1. 文件和目录

1.1 单用户操作系统和多用户操作系统

  • 单用户操作系统:指一台计算机在同一时间 只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源,Windows XP之前的版本都是单用户操作系统
  • 多用户操作系统:指一台计算机在 同一时间可以由多个用户使用 ,多个用户共同享用系统的全部硬件和软件资源,Unix 和 Linux的设计初衷就是多用户操作系统

2 WindowsLinux 文件系统区别

2.1 Windows 下的文件系统

  • Windows 下,打开 “计算机”,我们看到的是一个个的驱动器盘符:

001_Windows下的多个盘

  • 每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形,如图所示:

001-Windows下多个盘为节点的目录分支

2.2 Linux 下的文件系统

  • Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):

002_Ubuntu文件目录

  • Ubuntu 没有盘符这个概念,只有一个根目录 /,所有文件都在它下面

003-Linux的树形示意图

2.3 用户目录

如用户user,则其用户目录位于 /home/user,称之为用户工作目录或家目录,表示方式:

1
2
/home/user
~

2.4 Linux 主要目录速查表

  • /:根目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始,当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录。

  • /bin/usr/bin:可执行二进制文件的目录,如常用的命令lstarmvcat等。

  • /boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub

  • /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱。

  • /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有:

    /etc/inittab

    /etc/fstab

    /etc/init.d

    /etc/X11

    /etc/sysconfig

    /etc/xinetd.d

  • /home:系统默认的用户主目录,新增用户账号时,用户的主目录都存放在此目录下:

    ~ 表示当前用户的家目录

    ~edu 表示用户 edu 的家目录

  • /lib/usr/lib/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。

  • /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。

  • /mnt/media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom下,但也不一定,可以选择任意位置进行挂载。

  • /opt:给主机额外安装软件所摆放的目录

  • /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:

    /proc/cpuinfo

    /proc/interrupts

    /proc/dma

    /proc/ioports

    /proc/net/

  • /root:系统管理员root的主要目录。

  • /sbin/usr/sbin/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdiskshutdownmount等。与/bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用。

  • /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。

  • /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。

  • /usr:应用程序存放目录:

    /usr/bin:存放应用程序

    /usr/share:存放共享数据

    /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件

    /usr/local:存放软件升级包

    /usr/share/doc:系统说明文件存放目录

    /usr/share/man:程序说明文件存放目录

  • /var:放置系统执行过程中经常变化的文件:

    /var/log:随时更改的日志文件

    /var/spool/mail:邮件存放的目录

    /var/run:程序或服务启动后,其 PID 存放在该目录下

3. 列出目录的内容

3.1 ls

ls 是英文单词 list 的简写,其功能为列出目录的内容,是用户最常用的命令之一,类似于 DOS下的 dir 命令

常用选项

参数含义
-a显示指定目录下所有子目录与文件,包括隐藏文件
-l以列表方式显示文件的详细信息
-h配合 -l 以人性化的方式显示文件大小

ls 通配符的使用

通配符含义
*代表任意个数个字符
?代表任意一个字符,至少 1 个
[]表示可以匹配字符组中的任一一个
[abc]匹配 a、b、c 中的任意一个
[a-f]匹配从 a 到 f 范围内的的任意一个字符

Linux 下文件和目录的特点

  • Linux 文件 或者 目录 名称最长可以有 256 个字符
  • . 开头的文件为隐藏文件,需要用 -a参数才能显示
  • .代表当前目录
  • .. 代表上一级目录

计算机中文件大小的表示方式(科普)

单位英文含义
字节B(Byte)在计算机中作为一个数字单元,一般为 8 位二进制数
K(Kibibyte)1 KB = 1024 B,千字节 (1024 = 2 ** 10)
M(Mebibyte)1 MB = 1024 KB,百万字节
千兆G(Gigabyte)1 GB = 1024 MB,十亿字节,千兆字节
T(Terabyte)1 TB = 1024 GB,万亿字节,太字节
P(Petabyte)1 PB = 1024 TB,千万亿字节,拍字节
E(Exabyte)1 EB = 1024 PB,百亿亿字节,艾字节
Z(Zettabyte)1 ZB = 1024 EB,十万亿亿字节,泽字节
Y(Yottabyte)1 YB = 1024 ZB,一亿亿亿字节,尧字节

3.2 tree

可以以树状图列出文件目录结构

1
$ tree
选项含义
-d只显示目录

4. 切换目录

4.1 cd

  • cd 是英文单词 change directory 的简写,其功能为更改当前的工作目录,也是用户最常用的命令之一

注意:Linux 所有的 目录文件名 都是大小写敏感的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#切换到当前用户的主目录(/home/用户目录)
$ cd

#切换到当前用户的主目录(/home/用户目录)
$ cd ~

#保持在当前目录不变
$ cd .

#切换到上级目录
$ cd ..

#可以在最近两次工作目录之间来回切换
$ cd -

4.2 相对路径和绝对路径

  • 相对路径 在输入路径时,最前面不是 / 或者 ~,表示相对 当前目录 所在的目录位置
  • 绝对路径 在输入路径时,最前面是 / 或者 ~,表示从 根目录/家目录 开始的具体目录位置

5. 创建和删除操作

5.1 touch

创建文件或修改文件时间,如果文件不存在,可以创建一个空白文件,如果文件已经存在,可以修改文件的末次修改日期。

1
2
#创建一个为filename.txt的文件
$ touch filename.txt

5.2 mkdir

创建一个新的目录

1
2
#在当前目录里创建一个名称为demo新的目录
$ mkdir demo
选项含义
-p可以递归创建目录

新建目录的名称 不能与当前目录中 已有的目录或文件 同名

5.3 rm

删除文件或目录

1
2
3
4
#强制删除filename.txt文件
$ rm -f filename.txt
#强制删除demo目录以及其内容
$ rm -rf demo
选项含义
-f强制删除,忽略不存在的文件,无需提示
-r递归地删除目录下的内容,删除文件夹 时必须加此参数

使用 rm 命令要小心,因为文件删除后不能恢复

6. 拷贝和移动文件

6.1 cp

cp 命令的功能是将给出的 文件目录 复制到另一个 文件目录 中,相当于 DOS 下的 copy 命令

1
2
#复制文件或者目录,cp对应英文copy
$ cp 源文件 目标文件
选项含义
-i覆盖文件前提示
-r若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名

6.2 mv

mv 命令可以用来 移动 文件目录,也可以给 文件或目录重命名

1
2
#移动文件或者目录/文件或者目录重命名,mv对应英文move
$ mv 源文件 目标文件
选项含义
-i覆盖文件前提示

7. 查看文件内容

7.1 cat 查看文件的所有内容

cat (concatenate)命令可以用来 查看文件内容创建文件文件合并追加文件内容 等功能。

cat 会一次显示所有的内容,适合 查看内容较少 的文本文件。

1
2
#查看hello.txt文件的所有内容
$ cat hello.txt
选项含义
-b对非空输出行编号
-n对输出的所有行编号

Linux 中还有一个 nl 的命令和 cat -b 的效果等价

7.2 more 分屏显示文件内容

more 命令可以用于分屏显示文件内容,每次只显示一页内容

适合于 查看内容较多的文本文件

1
2
#分屏显示hello.txt文件内容
$ more hello.txt

使用 more 的操作键:

操作键功能
空格键显示手册页的下一屏
Enter 键一次滚动手册页的一行
b回滚一屏
f前滚一屏
q退出
/word搜索 word 字符串

7.3 grep 搜索文本文件内容

Linux 系统中 grep 命令是一种强大的文本搜索工具。

grep允许对文本文件进行 模式查找,所谓模式查找,又被称为正则表达式。

1
2
#显示匹配包含qcmoke字符串的行及行号
$ grep -n qcmoke hello.txt
选项含义
-n显示匹配行及行号
-v显示不包含匹配文本的所有行(相当于求反)
-i忽略大小写
  • 常用的两种模式查找
参数含义
^a行首,搜寻以 a 开头的行
ke$行尾,搜寻以 ke 结束的行

7.6 tail 取出文件后面几行

1
2
3
4
5
6
7
8
#取出文件后面10行
$ tail hello.txt

# 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
$ tail -n 20 /etc/nginx/nginx.conf

#侦测文件尾部10行
$ tail -n 10 -f ~/logs/web2019-10-10.log
选项含义
-n后面接数字,代表显示几行的意思
-f侦测文件尾部,要等到按下[ctrl]-c才会结束tail的侦测即,如果文件尾部内容被更改,也会随着显示最新尾部内容,常用于查看日志。

8. 查找文件(find)

8.1 find

  • find 命令功能非常强大,通常用来在 特定的目录下 搜索 符合条件的文件
1
2
3
4
5
6
7
8
#搜索主目录下,文件名包含hello的文件
$ find ~ -name "hello*"

#搜索/etc目录下,所有以.conf为扩展名的文件
$ find /etc -name "*.conf"

#搜索/home目录下,以数字1开头的文件
$ find /home ~ -name "1*"
序号命令作用
01find [路径] -name “*.py”查找指定路径下扩展名是 .py 的文件,包括子目录
  • 如果省略路径,表示在当前文件夹下查找
  • 之前学习的通配符,在使用 find 命令时同样可用

9. 链接(ln)

9.1 软链接

1
2
3
#建立文件的软链接,用通俗的方式讲类似于Windows下的快捷方式。
#删除软链接不会影响源文件,但源文件被删除了,那么软连接就不可以了
$ ln -s 被链接的源文件 链接文件

软链接的特点:

(1)软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式

(2)软链接可以 跨文件系统 ,硬链接不可以

(3)软链接可以对一个不存在的文件名进行链接

(4)软链接可以对目录进行链接

注意:

(1)没有 -s 选项建立的是一个 硬链接文件(对于硬链接文件,两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接)

(2)被链接的源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用

9.2 硬链接简介

1
2
#删除硬链接,不会影响源文件,同样的删除源文件也不会影响硬链接
$ ln 被链接的源文件 链接文件

软链接的特点:

(1)硬链接,以文件副本的形式存在。但不占用实际空间。

(2)不允许给目录创建硬链接

(3)硬链接只有在同一个文件系统中才能创建

9.3 文件软硬链接的示意图

001_文件软硬链接示意图

提示:

在 Linux 中,文件名文件的数据 是分开存储的

在 Linux 中,只有文件的 硬链接数 == 0 才会被删除

使用 ls -l 可以查看一个文件的硬链接的数量

在日常工作中,几乎不会建立文件的硬链接,知道即可

10. 打包压缩

打包压缩 是日常工作中备份文件的一种方式。

在不同操作系统中,常用的打包压缩方式是不同的:

Windows 常用 rar

Mac 常用 zip

Linux 常用 tar.gz

11. 打包 / 解包

11.1 tar

tar 是 Linux 中最常用的 备份工具,此命令可以 把一系列文件 打包到 一个大文件中,也可以把一个 打包的大文件恢复成一系列文件

  • tar 的命令格式如下:
1
2
3
4
5
# 打包文件(不压缩)
tar -cvf 打包文件.tar 被打包的文件/路径...

# 解包文件
tar -xvf 打包文件.tar
  • tar 选项说明
选项含义
c生成档案文件,创建打包文件
x解开档案文件
v列出归档解档的详细过程,显示进度
f指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后

注意:f 选项必须放在最后,其他选项顺序可以随意

12 压缩/解压缩

12.1 gzip

gzip 是linux中常见的压缩/解压工具,最常见的使用对象是*.gz格式的文件。

OPTIONS
-c --stdout --to-stdout 结果写到标准输出,原文件保持不变
-d --decompress --uncompress 解压
-k --keep 压缩或者解压过程中,保留原文件
-r --recursive
-t --test 检查压缩文件的完整性
-v --verbose 显示每个文件的名子和压缩率
-<压缩效率>  压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。

  • –best  此参数的效果和指定"-9"参数相同。
  • –fast  此参数的效果和指定"-1"参数相同。

示例1,压缩文件
原文件名为file1.txt,压缩后原文件消失,压缩后文件名为file1.txt.gz

1
2
3
4
5
root@ubuntu:/tmp# ls -l file1.*
-rw-r--r-- 1 root root 12383865 Aug 21 08:08 file1.txt
root@ubuntu:/tmp# gzip file1.txt
root@ubuntu:/tmp# ls -l file1.*
-rw-r--r-- 1 root root 134416 Aug 21 08:08 file1.txt.gz

示例2,解压文件

1
2
3
root@ubuntu:/tmp# gzip -d file1.txt.gz
root@ubuntu:/tmp# ls -lh file1.*
-rw-r--r-- 1 root root 12M Aug 21 08:08 file1.txt

示例3,压缩的时候,显示压缩率

1
2
root@ubuntu:/tmp# gzip -v file1.txt
file1.txt: 98.9% -- replaced with file1.txt.gz

示例4,一条命令压缩多个文件,压缩之后,是各自分开的:

1
2
3
4
5
root@ubuntu:/tmp# gzip file1.txt file2.txt
root@ubuntu:/tmp# ls -l
total 1348
-rw-r--r-- 1 root root 134416 Aug 21 08:08 file1.txt.gz
-rw-r--r-- 1 root root 392 Aug 21 08:15 file2.txt.gz

示例5,压缩过程中,保留原文件

1
2
3
root@ubuntu:/tmp# gzip -k file1.txt
root@ubuntu:/tmp# ls file1.*
file1.txt file1.txt.gz

示例6,压缩到标准输出中
可以连接两个文件

1
2
3
root@ubuntu:/tmp# cat file1.txt file2.txt | gzip > foo.gz
或者
root@ubuntu:/tmp# gzip -c file1.txt file2.txt > foo.gz

12.2 gunzip

解压gz格式文件(不保留压缩文件)

1
2
3
4
5
[root@localhost test]# ls
test1.txt.gz test2.txt.gz
[root@localhost test]# gunzip test1.txt.gz test2.txt.gz
[root@localhost test]# ls
test1.txt test2.txt

12.3 targzip

命令结合可以使用实现文件打包和压缩

  • tar 只负责打包文件,但不压缩
  • gzip 压缩 tar 包后,其扩展名一般用 xxx.tar.gz

Linux 中,最常见的压缩文件格式就是 xxx.tar.gz

  • tar 命令中有一个选项 -z 可以调用 gzip,从而可以方便的实现压缩和解压缩的功能
  • 命令格式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#压缩文件
gzip test1.txt test2.txt #会生成 test1.txt.gz test2.txt.gz

#压缩tar包
gzip 打包文件名.tar #从tar包变成tar.gz压缩包,这个过程不会保留原来放入tar包

# 打包并压缩文件
tar -zcvf 打包文件名.tar.gz 被压缩的文件/路径... #自动先完成将各个文件打包生成xxx.tar,后压缩生成xxx.tar.gz

# 解压缩并解包
tar -zxvf 打包文件名.tar.gz #自动先完成将xxx.tar.gz解压缩生成xxx.tar,后完成解包生成各个文件

# 解压缩并解包到指定路径
tar -zxvf 打包文件名.tar.gz -C 目标路径
选项含义
-C解压缩到指定目录,注意:要解压缩的目录必须存在

12.4 bzip2(two)

  • tarbzip2 命令结合可以使用实现文件 打包和压缩(用法和 gzip 类似)
    • tar 只负责打包文件,但不压缩,
    • bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.bz2
  • tar 命令中有一个选项 -j 可以调用 bzip2,从而可以方便的实现压缩和解压缩的功能
  • 命令格式如下:
1
2
3
4
5
# 压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...

# 解压缩文件
tar -jxvf 打包文件.tar.bz2

12.5 zip/unzip指令

zip压缩文件

案例:压缩 test1.txt test2.txt成test.zip压缩包

1
zip  test.zip  test1.txt test2.txt

zip压缩目录

zip常用选项

-r:递归压缩,即压缩目录

案例:递归压缩test目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost ~]# tree test/
test/
├── dir
│   └── test3.txt
├── test1.txt
└── test2.txt

1 directory, 3 files
[root@localhost ~]# zip -r test.zip test/
adding: test/ (stored 0%)
adding: test/test1.txt (stored 0%)
adding: test/test2.txt (stored 0%)
adding: test/dir/ (stored 0%)
adding: test/dir/test3.txt (stored 0%)
[root@localhost ~]# ls
anaconda-ks.cfg soft soft.tar.gz test test.zip
[root@localhost ~]#
  • unzip解压文件

    案例:解压缩test.zip文件

    1
    unzip   test.zip

13. 其他

13.1 echo 文字内容

  • echo 会在终端中显示参数指定的文字,通常会和 重定向 联合使用

13.2 重定向 >>>

  • Linux 允许将命令执行结果 重定向到一个 文件
  • 将本应显示在终端上的内容 输出/追加指定文件中

其中

  • > 表示输出,会覆盖文件原有的内容
  • >> 表示追加,会将内容追加到已有文件的末尾

13.3 管道 |

  • Linux 允许将 一个命令的输出 可以通过管道 做为 另一个命令的输入
  • 可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里 | 的左右分为两端,左端塞东西(写),右端取东西(读)

常用的管道命令有:

  • more:分屏显示内容
  • grep:在命令执行结果的基础上查询指定的文本

六、软件包管理

1 软件包管理简介

1.1 包全名与包名

◆包全名:操作的包是没有安装的软件包时,使用包全名。
◆包名:操作已经安装的软件包时使用的包名。linux安装后包名都存在/var/lib/rpm/中的数据库

1.2 Linux包依赖性

◆树形依赖:a>b>c
◆环形依赖:a>b>c>a
◆模块依赖:模块依赖

软件安装的过程:

1.cp类库到系统目录中

2.cp可执行程序和配置文件到系统目录中

3.根据需要选择性配置和启动服务(程序)

对于windows系统还会多出一个步骤,那就是到把启动配置或者程序依赖的配置放到注册表中。

1.3 linux包命名原则

软件包apache2_2.4.18-2ubuntu3_amd64.deb

apache2 软件包名
2.4.18 软件版本
2 软件发布的次数
ubuntu3 适合的Linux平台
amd64 适合的硬件平台
deb 包扩展名

比如一个文件httpd-2.2.15-15.el6.centos.1.i686.rpm

httpd 软件包名
2.2.15 软件版本
15 软件发布的次数
el6.centos 适合的Linux平台
i686 适合的硬件平台
rpm rpm包扩展名

1.4 linux软件包优先级

Required该级别软件包是保证系统正常运行所必须的,如果缺失,系统将毁坏系统工具,比如bash,mount…
Important若缺少该软件包,系统讲运行困难实现系统底层功能的一些程序,比如aptitude,apt-get
Standardlinux系统的标准件常规安装软件,如telnet.tp
Optional该软件包是否安装不影响linux运行用于用户特定的需求,比如×11,mysql,openofice,自开发软件等
Extra该级别可能与高级软件包存冲突

2 Debain系列软件包管理

2.1 dpkg本地管理

(1)安装
1
dpkg -i 软件包全名

i install

(2)卸载
1
dpkg -r 软件包名   #移除包不移除配置文件
1
dpkg -P 软件包名 #移除包和配置文件

-r remove

-P等价于 --purg 移除包和配置文件

(3)查询
1
2
3
4
5
dpkg -l  软件包名 #列出当前系统中已经安装的包,包括软件的版本,可以使用dpkg -l | grep 关键字来查询
dpkg -L 软件包名 #列出已安装的包的内容,或者安装位置
dpkg -c 软件包全名 #列出deb包的内容
dpkg -s 软件包名 #查看系统中软件的详细信息 (包含依赖信息)
dpkg --info 软件包全名 #查看未安装的包的信息(包含依赖信息)

2.2 APT在线管理

apt-get install工作步骤

  • 扫描本地软件列表(apt-get update 刷新软件包列表)

  • 软件包依赖检查

  • 从软件包指定的apt源中下载软件包

  • 解压软件包并完成配置

apt-get:用于管理安装,卸载,升级等操作

apt-cache:用于查询软件包信息

(1) APT软件源
1
vim /etc/apt/sources.list

通过apt-get update更新软件源到本地并在本地建立新远程软件库所有软件包对应的索引表(数据库形式),所有存放在/var/lib/apt/lists/*

#####(2) 安装

1
2
apt-get -f install  #修复依赖关系
apt-get install -d #只下载deb包,不安装

apt下载到的软件包(缓存)都放在/var/cache/apt/archives/,如果不需要可以删除掉

(3) 获得源码包
1
sudo apt-get source 软件包名
(4) 更新
1
2
3
apt-get update #更新软件源到本地
apt-get upgrade 软件包名 #升级软件到最新版本
apt-get upgrade #升级系统所有软件到最新版本
(5) 卸载
1
2
apt-get remove 软件包名 #卸载软件包(不含配置文件)
apt-get remove --purge 软件包名 #卸载软件包(含配置文件)
(6)查询
1
2
3
4
5
6
apt-cache search 软件包关键字  #从source里查询某个软件包
apt-cache show 软件包名 #显示软件包信息
apt-cache policy 软件包名 #显示软件包安装状态
apt-get check #检查当前apt的依赖情况
apt-cache depends 软件包名 #查看系统中软件的依赖(正向依赖)
apt-cache rdepends 软件包名 #查看系统中软件的依赖(反向依赖)

3 Redhat系列软件管理

3.1 rpm本地管理

(1) 安装
1
rpm  -ivh  包全名

选项:

-i(install)安装
-v(verbose)显示详细信息
-h(hash)显示进度
-nodeps 不检测依赖性

(2) 升级
1
rpm  -Uvh  包全名(下载好的版本更高的包)

选项:

-U(upgrade)升级

(3) 卸载
1
rpm  -e  包名

选项:

-e(erase)卸载
-nodeps 不检查依赖性

(4) 查询是否安装
1
2
rpm  -q  包名  #查询已经安装的具体包
rpm -qa #查询所有已经安装的包

选项:

-q 查询(query)
-a 所有(all)

(5) 查询软件包详细信息
1
2
3
4
5
rpm  -qi  包名

如:
rpm -qi zip #查看系统中已经安装存在的包信息
rpm -qip zip-3.0-23.fc29.x86_64.rpm #查看未安装包信息

选项:

-q 查询(query)
-i 查询软件信息(information)
-p 查询未安装包信息(package)

(6) 查询包中文件安装位置
1
2
rpm  -ql  包名 #查询已安装的软件安装到了哪些目录里
rpm -qlp 包名 #查询未安装的软件包打算安装到哪些目录里

选项:

-q 查询(query)
-l 列表(list)
-p 查询未安装包信息,用来查看未安装的软件包打算安装到哪些目录里

如果忘记包名,可以通过rpm -qa | grep 包名关键字先查看系统中已经安装的相关软件,然后再执行rpm -ql 包名来查看具体路径

(7)查询系统文件属于哪个RPM包
1
rpm  -qf  系统文件名

选项:
-f 查询系统文件属于哪个软件包(file)

(8) 查询软件包的依赖性
1