常用命令
1.拍摄快照以及恢复快照
2.命令-help提示命令
3.~表示home文件 /代表跟目录
4.两次Tab 键提示命令,一次Tab健补齐路径。
5.cd命令表示进人某个文件火里面 cd..退回到上一级文件夹 cd~退回到 home文件夹
6.mkdir[文件名]创建文件夹 mkdir [文件名/文件名/文件名] -p完成层级目录创建
7.rmdir[文件名]删除空文件夹 rm -rf[文件名]删除非空文件
8.ls命令列举当前目录下的文件夹
9.clear清屏
10.↑可以显示上一条命令
11.ctrl+C中止命令
12.pwd查看当前所在位置的目录
用户与系统相关命令
- sudo:以超级用户权限执行命令
- su:切换到其他用户
- useradd:添加新用户
- userdel:删除用户
- groupadd:添加新用户组
- groupdel:删除用户组
- passwd:修改用户密码
- chmod:修改文件或目录权限
- chown:修改文件或目录的所有者
- ps:查看当前进程状态
- top:实时显示系统进程状态
- kill:结束进程
- df:查看磁盘空间使用情况
- du:查看目录空间使用情况
- ifconfig:查看网络接口配置信息
- netstat:查看网络状态信息
- ping:测试网络连通性
- traceroute:跟踪数据包在网络中的传输路径
- ssh:远程登录到服务器
- scp:远程拷贝文件
文件与目录相关命令
- ls:列出目录中的文件和子目录
- ls -a:显示所有文件,包括隐藏文件(以 . 开头的文件)
- ls -l:显示文件的详细信息,如权限、所有者、大小等
- ls -h:以人类可读的格式显示文件大小
- ls -R:递归地列出目录及其子目录中的文件
- cd:切换当前工作目录
- cd 目录名:进入指定目录
- cd ..:返回上一级目录
- cd ~:回到用户的主目录
- cd ../../:返回上上一级目录
- pwd:显示当前工作目录的路径
- touch:创建一个新的空文件或更新现有文件的时间戳
- touch 文件名:创建一个新文件或更新时间戳
- cat:查看文件内容或合并多个文件的内容
- cat 文件名:查看文件内容
- cat 文件1 文件2 > 合并后的文件:将两个文件内容合并到一个文件中
- more/less:分页查看文件内容
- more 文件名:逐页查看文件内容,按空格键翻页,按 q 键退出
- less 文件名:逐页查看文件内容,按空格键翻页,按 b 键回退,按 q 键退出
- head/tail:查看文件的前n行或后n行
- head -n 行数 文件名:查看文件的前n行
- tail -n 行数 文件名:查看文件的后n行
- grep:在文件中搜索指定的字符串或模式
- grep "要搜索的字符串" 文件名:在文件中搜索指定的字符串,并显示匹配的行
- grep -i "要搜索的字符串" 文件名:忽略大小写进行搜索
- grep -r "要搜索的字符串" 目录名:递归地在指定目录及其子目录中搜索字符串
- find:在文件系统中查找文件或目录
- find 起始目录 -name "文件名":在指定目录下查找指定名称的文件
- find 起始目录 -type f:查找指定目录下的所有普通文件
- find 起始目录 -type d:查找指定�录下的所有目录
- find 起始目录 -mtime +N:查找指定目录下最后修改时间超过N天的文件或目录
- chmod/chown/chgrp:修改文件的权限、所有者和所属组
- chmod 权限值 文件名:修改文件的权限(如755表示拥有者可读写执行,同组用户可读执行,其他用户可读执行)
- chown 用户名:用户组 文件名:修改文件的所有者和所属组(如root:root test.txt)
- chgrp 用户组 文件名:修改文件的所属组(如sudo chgrp staff test.txt)
目录切换命令
cd
:用于切换当前工作目录。例如,cd /home/user
将把当前工作目录切换到 /home/user。pwd
:用于显示当前工作目录的绝对路径。例如,pwd
将输出当前工作目录的路径,如 /home/user。ls
:用于列出当前工作目录下的文件和文件夹。例如,ls
将列出当前目录下的所有文件和文件夹。mkdir
:用于创建一个新的目录。例如,mkdir new_directory
将在当前目录下创建一个名为 new_directory 的新目录。
文件查询命令
ls
:列出目录中的文件和子目录。例如:ls -l
(以长格式列出),ls -a
(显示隐藏文件)。find
:在指定目录下搜索文件。例如:find /home -name "example.txt"
(在/home目录下搜索名为example.txt的文件)。locate
:查找文件系统中的特定文件。例如:locate example.txt
(查找名为example.txt的文件)。注意:需要先运行updatedb
命令更新数据库。stat
:显示文件或目录的详细信息。例如:stat example.txt
(显示example.txt文件的详细信息)。file
:识别文件类型。例如:file example.txt
(识别example.txt文件的类型)。grep
:在文件中搜索包含指定文本的行。例如:grep "example" example.txt
(在example.txt文件中搜索包含"example"这个词的行)。cat
、more
、less
:查看文件内容。例如:cat example.txt
(显示example.txt文件的全部内容),more example.txt
(分页显示example.txt文件的内容),less example.txt
(交互式地显示example.txt文件的内容,可以使用上下键翻页)。head
、tail
:查看文件的前几行或后几行。例如:head -n 5 example.txt
(显示example.txt文件的前5行),tail -n 5 example.txt
(显示example.txt文件的后5行)。wc
:统计文件的行数、字数和字节数。例如:wc -l example.txt
(统计example.txt文件的行数),wc -w example.txt
(统计example.txt文件的字数),wc -c example.txt
(统计example.txt文件的字节数)。md5sum
、sha1sum
:计算文件的MD5和SHA1哈希值。例如:md5sum example.txt
(计算example.txt文件的MD5哈希值),sha1sum example.txt
(计算example.txt文件的SHA1哈希值)。
文件的复制,剪切,删除命令
在Linux中,文件的复制、剪切和删除操作可以通过命令行来完成。以下是这些操作的笔记:
- 复制文件:使用
cp
命令来复制文件。语法如下:
cp [选项] 源文件 目标文件
例如,将文件file1.txt
复制到file2.txt
:
cp file1.txt file2.txt
如果要复制整个目录及其内��,需要使用-r
选项:
cp -r 源目录 目标目录
- 剪切文件:在Linux中,剪切操作实际上是移动文件。可以使用
mv
命令来实现。语法如下:
mv [选项] 源文件 目标文件
例如,将文件file1.txt
剪切到file2.txt
:
mv file1.txt file2.txt
- 删除文件:使用
rm
命令来删除文件。语法如下:
rm [选项] 文件名
例如,删除文件file1.txt
:
rm file1.txt
如果要删除整个目录及其内容,需要使用-r
选项:
rm -rf 目录名
注意:在使用这些命令时,请确保你有足够的权限来执行这些操作。
cp 用于实现将目录或文件复制到另一个目录和文件中
cp [选项] 源文件 目标文件 -rf
mv 命令用于实现将目录或文件移动/剪切到另一个文件
mv 源文件或目录 目标文件或目录
rm 命令用于删除文件或目录
rm -rf [选项] 文件名
文件链接
ln
软链接
ln命令是link的缩写其功能是创建文件链接
ln-s 文件名 文件链接名
源文件被删除后打不开软链接文件
硬链接
硬链接不能链接目录/文件
无论是删掉了源文件还是硬链接文件,只要有一个文件存在
文件都能被访问。
源文件/目标文件数据得到修改,另一个文件数据也会更新
//ln【源文件或目标文件][目标文件]
1. 什么是文件链接?
文件链接是一种特殊的文件,它包含了指向另一个文件的路径。通过文件链接,我们可以访问到链接所指向的文件,就像直接访问该文件一样。
2. 文件链接的类型:
- 硬链接(hard link):硬链接是指多个文件名指向同一个inode节点。当删除一个硬链接时,不会影响其他硬链接和源文件。但是,硬链接不能跨文件系统。
- 软链接(symbolic link,也称为符号链接或快捷方式):软链接是一个特殊的文件,它包含了指向另一个文件的路径信息。软链接可以跨文件系统,但删除软链接不会影响源文件和其他软链接。
-
创建硬链接:
ln 源文件 目标文件
例如:
ln file1.txt file1_hardlink.txt
-
创建软链接:
ln -s 源文件 目标文件
例如:
ln -s /path/to/file1.txt /path/to/file1_symlink.txt
-
查看文件的链接数(硬链接数+软链接数):
ls -l 文件名 | grep "^l" | wc -l
删除硬链接和软链接:
删除硬链接会同时影响源文件和硬链接,因为它们都指向同一个inode节点。删除软链接只会影响软链接本身,不会影响源文件或其他软链接。
删除硬链接:`rm 硬链接`
删除软链接:`rm 软链接`
创建文件
touch 创建文件
touch 文件名 .文件类型
在Linux中,可以使用touch命令创建空文件。以下是一个简单的示例:
touch 文件名.txt
将“文件名”替换为您想要创建的文件的名称。例如,要创建一个名为“example.txt”的文件,可以输入:
touch example.txt
此外,您还可以使用以下方法一次性创建多个空文件:
touch 文件1.txt 文件2.txt 文件3.txt
grep
grep
// grep为指定文件中搜索特定的内容
// grep [选项] 格式 [文件及路径]
// -i 不区分大小写
// -v 反向匹配
// -c 统计包含匹配的行数 【find】
// find为搜索指定的文件
// find [路径] [选项] [描述]
// -name 按照名字查找
// -iname 不区分大小写
// ✳*通配符来模糊匹配要查找的文件名
$ find -name Videos
$ find / -name Videos(会遍历/下所有的文件,然后打印出寻找结果)
在Linux中,可以使用`grep`命令结合正则表达式来查找文件中包含数字的行数。具体操作如下:
1. 打开终端。
2. 使用`cd`命令进入到包含目标文件的目录。
3. 输入以下命令:
grep -E '[0-9]' 文件名 | wc -l
其中,`文件名`是你要查找的文件的名称。这个命令会输出包含数字的行数。
在Linux中,可以使用`grep`命令来查找文件内容。基本语法如下:
grep "搜索内容" 文件路径
例如,如果你想在当前目录下的所有文件中查找包含"hello"的文件,可以使用以下命令:
grep -r "hello" .
在Linux中,可以使用grep命令来查找文件的内容。基本语法如下:
grep "搜索内容" 文件名
例如,如果你想在名为"example.txt"的文件中查找包含"hello"的行,可以使用以下命令:
grep "hello" example.txt
grep命令还可以使用正则表达式进行更复杂的搜索。例如,如果你想查找所有以"h"开头,后面跟着任意数量的字母和数字的行,可以使用以下命令:
grep "^h[a-zA-Z0-9]*" example.txt
在这个例子中,^
表示行的开始,[a-zA-Z0-9]*
表示任意数量的字母和数字。
此外,grep
命令还有许多选项可以用于定制搜索行为。例如,-i
选项可以使搜索不区分大小写,-r
选项可以递归搜索目录,-n
选项可以显示匹配行的行号等。
例如,如果你想在当前目录及其子目录中递归搜索包含"hello"的行,并且不区分大小写,可以使用以下命令:
grep -ir "hello" .
echo
在 Linux 中,可以使用 echo
命令将内容写入文件。例如:
echo "这是一段文本" > 文件名.txt
这将把 "这是一段文本" 写入名为 "文件名.txt" 的文件中。如果文件不存在,它将创建一个新文件;如果文件已存在,它将覆盖原有内容。如果要追加内容而不是覆盖,可以使用 >> 运算符:
echo "这是另一段文本" >> 文件名.txt
sed
在 Linux 中,可以使用 sed
命令来修改文件中的内容。sed
是一个流编辑器,用于对输入流(文件或管道)进行基本的文本转换。以下是一个简单的示例:
- 首先,创建一个名为
test.txt
的文件,内容如下:
hello world
hello linux
使用 sed 命令将文件中的 "world" 替换为 "universe":
sed 's/world/universe/' test.txt > output.txt
这将把修改后的内容输出到一个新文件 output.txt 中。如果你想直接修改原文件,可以使用 -i 选项:
sed -i 's/world/universe/' test.txt
cat
Linux中的cat命令用于查看文件内容或将多个文件合并成一个文件。以下是一些常用的cat命令用法:
查看文件内容:
cat 文件名
例如,查看名为example.txt的文件内容:
cat example.txt
将多个文件合并成一个文件
cat 文件1 文件2 > 合并后的文件
例如,将file1.txt和file2.txt的内容合并到一个新文件merged.txt中:
cat file1.txt file2.txt > merged.txt
将一个文件的内容追加到另一个文件的末尾:
cat 文件1 >> 文件2
例如,将file1.txt的内容追加到file2.txt的末尾:
cat file1.txt >> file2.txt
文件所属用户
在linux每个文件都有自己的属主,也就是该文件的拥有者
一般情况下,系统中创建文件的用户未改文件的属主
chowm 用于修改文件所属用户
chown [选项] [所属用户] [文件]
linux是一个多用户的操作系统
操作系统对用户的管理采取分组的形式
既多个用户可分为一组
没权限加sudo
chgrp 用于修改文件所属的用户组
chgrp [选项] [所属用户] [文件]
文件存取权限
chmod [选项] 符号权限 文件
【符号标记法】
第一组 : 文件所属用户对文件的访问权限
第二组 : 与所属用户同组的其他用户对文件访问权限
第三组 : 与非用组的其他用户对文件的访问权限
d 表示文件夹
r 代表可读权限
w 代表可写权限
x 代表可执行权限
- 表示不具备该权限
+ 代表增加权限
- 代表减少权限
不同的用户级别表示为:
u - 文件所属用户 (user)
g - 同组其他用户 (group)
o - 系统其他用户 (other)
a - 所有用户 (all)
**要将二进制转换为十进制,您可以使用以下方法:**
1. 将二进制数从右到左排列,得到一个数列。
2. 从最低位(最右边)开始,将每一位的值乘以2的相应次方。例如,如果最低位是1,那么它代表$2^0=1$;如果下一位是1,那么它代表$2^1=2$,以此类推。
3. 将所有的乘积相加,得到的和就是对应的十进制数。
举例说明:
假设我们要将二进制数 `1101` 转换为十进制数。
首先,我们将数字从右到左排列:`1101`。
然后,从最低位开始计算:
- $1 \times 2^0 = 1$
- $1 \times 2^1 = 2$
- $0 \times 2^2 = 0$
- $1 times 2^3 = 8$
最后,将这些乘积相加:$1 + 2 + 0 + 8 = 11$。
所以,`1101` 对应的十进制数是 `11`。
**二进制转八进制**
二进制转八进制可以采用"取三合一"法来进行转换。具体步骤是将二进制每三位分为一组,如果最后一组不足三位,则在前面补零,然后将每组二进制数对应转换为八进制数即可。需要注意的是,在转换过程中应严格按照位置和顺序进行,以免出错。同时,也需要注意,虽然在线进制转换器提供了相互转换功能并支持浮点型,但对于学习或需要精确计算的情况,我们仍建议掌握基本的转换方法,以提高计算的准确度。
八进制数法
将拥有该权限设置为1 不具有该权限设置为0
rwx - 111 -421
用符号表示的权限可以替换为 110 111 101 分别与 rw- rwx r-x 权限对应
用八进制表示675
chmod [选项] 八进制权限 文件
000 无任何权限
001 可执行
010 可写
011 可写可执行
111 可读可写可执行
100 可读
压缩打包相关命令
Linux压缩打包相关命令主要包括以下几个:
- tar:用于对文件进行归档,生成.tar文件。常用的参数有:
- c:创建新的归档文件;
- x:从归档文件中提取文件;
- v:显示详细信息;
- f:指定归档文件名;
- z:通过gzip压缩或解压归档文件;
- j:通过bzip2压缩或解压归档文件。
命令tar用于文件目录的打包或压缩
打包是指将一些文件货目录整合为一个单文件
压缩是将一个大文件压缩变成一个体积小的文件
tar 【参数】 【压缩包名】 源文件或目录
c:创建新的归档文件;
x:从归档文件中提取文件;
v:显示详细信息;
f:指定归档文件名;
z:通过gzip压缩或解压归档文件;
j:通过bzip2压缩或解压归档文件。
cvf 打包文件
xvf 解包文件
zcvf 打包压缩
xzvf 解打包压缩
xzvf 解打包压缩 -C 指定文件
zcat 查看
例如,将当前目录下的所有文件和文件夹压缩成test.tar.gz文件:
tar -czvf test.tar.gz ./*
1. gzip:用于压缩文件,生成.gz文件。常用的参数有:
- c:将输出写到标准输出并压缩;
- d:解压缩文件;
- f:指定要压缩或解压缩的文件名;
- k:保留原文件不删除。
2. bzip2:用于压缩文件,生成.bz2文件。常用的参数同gzip。
3. zip:用于压缩文件,生成.zip文件。常用的参数有:
- r:递归压缩目录下的所有文件和文件夹;
- u:更新已有的压缩包,只添加新文件;
- d:从压缩包中删除指定的文件;
- q:静默模式,不显示压缩进度。
4. unzip:用于解压缩.zip文件。常用参数有:
- l:列出压缩包中的文件;
- d:指定解压缩后文件存放的目录。
5. rar:用于压缩和解压缩.rar文件。常用参数有:
- a:添加到已有的rar压缩包中;
- r:递归处理文件夹;
- x:从rar压缩包中删除指定的文件;
- e:解压缩到指定目录。
Linux中的gzip命令用于压缩文件。以下是一些常用的gzip命令
压缩文件:
gzip 文件名
例如:
gzip example.txt 这将创建一个名为example.txt.gz的压缩文件。
解压缩文件:
gzip -d 文件名.gz
解压缩文件:
gunzip 文件名.gz
查看历史信息
Linux history命令用于显示用户在终端中执行过的命令历史记录。以下是一些常用的history命令选项和用法:
查看命令历史记录:
history 这将列出从登录开始执行的所有命令,按照时间顺序排列。
查看最近执行的n个命令:
history n
查看最近的一条命令:
history 1 这将只显示最近的一条命令。
删除一条命令:
history -d 序号 这将删除指定序号的命令。序号可以是数字或使用!n表示最近的一条命令。例如,history -d !2将删除最近的第二条命令。
清空所有命令历史记录:
history -c
将当前会话的命令历史记录导出到文件:
history > 文件名.txt
从文件导入命令历史记录:
istory -r 文件名.txt
通配符使用
Linux通配符是一种特殊字符,用于在命令行中匹配文件名或路径。常见的通配符有星号(*)和问号(?)。
1. 星号(*):星号表示匹配任意数量的字符。例如,`file*` 可以匹配以 "file" 开头的所有文件名。
2. 问号(?):问号表示匹配一个单个字符。例如,`fil?e` 可以匹配 "file" 和 "flie",但不匹配 "files"。
3. 方括号([]):方括号用于指定一个字符集合。例如,`[a-z]` 可以匹配任何小写字母。
4. 大括号({}):大括号用于指定重复次数。例如,`file{2,3}` 可以匹配 "file"、"filefile" 和 "filefilefile"。
5. 竖线(|):竖线用于指定多个选项中的一个。例如,`file{1,2}|dir{5,}` 可以匹配长度为 1 到 2 的文件名或长度大于等于 5 的目录名。
常用的通配符组合示例:
- `.txt`:匹配所有扩展名为 ".txt" 的文件。
- `[0-9].txt`:匹配所有扩展名为 ".txt",且文件名至少包含一个数字的文件。
- `file?e`:匹配 "file" 和 "flie"。
- `file{1,2}`:匹配长度为 1 到 2 个字符的文件名。
- `{2}file{1,2}*`:匹配以 "file" 开头,中间有两个字符,结尾是任意字符的文件名。
- `file[0-9]*`:匹配所有以 "file" 开头,后面跟随一串数字的文件名。
- `.{txt,pdf}`:匹配所有扩展名为 ".txt" 或 ".pdf" 的文件。
- `dir?d`:匹配所有长度为 2 到 3 的目录名,且第一个字符是 "d"。
- `file{1,3}`:匹配长度为 1 到 3 个字符的文件名。
- `{2,4}file{1,2}*`:匹配以 "file" 开头,中间有两到四个字符,结尾是任意字符的文件名。
管道的使用
wc 【参数】 文件名
-l 只显示行数
管道-将第一个命令的输出作为第二个命令的输入
wc(word count)是 Linux 系统中用于统计文件行数、单词数和字符数的命令。它可以用于处理单
基本语法:
wc [选项] [文件名]
常用选项:
- l:仅显示行数
- w:仅显示单词数
- c:仅显示字符数
- m:以字符数计算,而不是以字节数计算
- L:显示最长行的长度
- wc:显示所有指定的文件的单词数和行数
- lwc:显示所有指定的文件的行数、单词数和字符数
示例:
统计一个文件的行数、单词数和字符数:
wc 文件名
仅显示一个文件的行数:
wc -l 文件名
仅显示一个文件的单词数:
wc -w 文件名
仅显示一个文件的字符数:
wc -c 文件名
统计多个文件的行数、单词数和字符数:
wc 文件名1 文件名2 ...
用户管理
用户基本概念
1.用户名
2.口令 就是登入账号的密码
3.用户标识号
用户标识号(UID)是账号的提示符,他与用户名是一一对应的
ULD为0的账号是系统管理员账号
UID为1-499的是系统保留账号,不可登入
UID为500-65536是可登入账号
d:用户主目录
用户主目录是用户的工作目录 默认为home用户名
用户管理命令
添加用户
u[选项]用户名
-m 指定新建用户到用户主目录
sudo useradd -m lily
修改用户口令
passwd[选项]用户名
sudo passwd lily
删除用户
userdel[选项]用户名
-r 是连着用户文件夹一起删除
sudu userdel -r lily
sude -kill -SIGKILL 进程号
用户组管理
用户与组
一对一 : 某一个用户是某个组的唯一成员
多对一 :多个用户是唯一组的成员,成员不归属其他用户组
多对多 : 多个用户对应多个用户组
与用户相关配置
/etc/passwd
//记录了用户的基本特性
cat /ect/passwd
tail /ect/passwd
```
/etc/shadow
查看密码
usermod -p 新密码 用户
sudo cat /etc/shadow
/etc/group
/etc / group 记录的是用户组信息
cat /etc/group
tail /etc/group(查看此文件夹最后几行)
cdeom : x :24 :vanile
组名:口令:组标识符(GID):组内用户列表
用户组添加命令
在 Linux 中,可以使用 useradd
命令来添加新的用户。常用的几个参数如下:
d
:指定用户的主目录g
:指定用户所属的用户组s
:指定用户的登录 shellu
:指定用户的用户 IDm
:创建用户的主目录
useradd 选项 用户组名
用户组的修改
groupmod 选项 用户组名
groupmod
是用于修改用户组的命令。常用的几个参数如下:
g
或-gid
:用于改变用户组的 GID。n
或-new-name
:用于改变用户组的名称。先写更改后o
或-non-unique
:当配合g
参数使用时,允许改变的 GID 不唯一。
使用示例:
groupmod -g 500(GID) -n newname(更改后) oldname(更改前)
这个命令将用户组 oldname 的 GID 改为 500,并将其名称改为 newname。
用户属性修改
usermod 选项 用户名
-a 添加
-G 指定组名
-p 修改用户密码
usermod
是 Linux 中用于修改用户属性的命令。常用的参数包括:
a
:此选项通常与G
选项一起使用,将用户添加到附加的组中。G
:用于指定用户所属的附加组。此选项后面跟的是组名,多个组名之间用逗号分隔。
使用示例:
usermod -aG groupname username
这个命令将用户 `username` 添加到 `groupname` 组。
用户组添加删除
gpasswd [选项] 用户名 组名
-a 把用户添加进组
-d 把用户从组中删除
su root (切换root用户)
tail /etc/group (查看组文件)
tail /etc/passwd (查看用户)
gpsswd -a 用户名 组名
软件管理
dpkg软件包管理工具
dpkg [选项] <package>
-l 列出已安装软件包的简要信息,包括状态,名称,版本,结构,详细信息
例 : bpkg -l apt 列出apt软件包的基本信息
dpkg -l 显示所有安装的软件包 ctrl+f 向后翻页 ctrl+b 向前翻页
dpkg -l | grep "软件包名" 查看某些软件包
-i 下载一个已经下载到本地的Deb软件包
-s 检测软件包的安装状态
-L 查询软件包下载后生成的列表文件
-P 卸载软件包
ifconfig 查看网络
APT软件包管理工具
从所配置的源文件中下载更新软件包,确保获取最新的软件包
sudo apt update
查看net-tools软件包信息
apt list net-tools
安装软件包
sudo apt install net-tools
查询软件是否安装好
apt list net-tools
使用net-tools
ifconfig
显示软件包细节
sudo apt show net-tools
移除软件包
sudo apt remove net-tools
升级所有软件包
sudo apt upgrade(通过“安装-升级”的方式来更新软件包)
sudo apt full-upgrade(通过"卸载-安装-升级”的方式来更新软件包)