RPM的五种基本操作
第5章 软件包管理
压缩文件类型
• 以源代码发布的软件安装包文件扩展名一般为: tar、.tar.gz、.tar.Z 和 .tar.bz2。 • 这几类软件包的实质都是先将许多文件用tar命 令进行打包之后,再经过 gzip、 compress 或 bzip2压缩命令压缩成 *.tar.gz、 *.tar.Z 或 *.tar.bz2文件 (.tar文件未经压缩)。因此,要安装这几类格式 的软件包时,都需要经过相应的解压缩及解包 的步骤。
5.1
RPM软件包管理
5.1.2 使用RPM命令
4.升级RPM软件包
若要将某软件包升级为较高版本的软件包,此时可采用升级安装方式。升 级安装使用-U参数来实现,该参数的功能是先卸载旧版,然后再安装新版 软件包。为了更详细显示安装过程,通常也结合v和h参数使用,其用法为: rpm -Uvh 软件包文件全路径名 若指定的rpm包并未安装,则系统直接进行安装。 5.软件包的验证 对软件包进行验证可保证软件包是安全的、合法有效的 。 验证软件包使用-V参数,要验证所有已安装的软件包,使用命令: rpm -Va 若要根据rpm文件来验证软件包,则命令用法为:rpm -Vp rpm包文件名
路径名
5.2
TAR包管理
5.2.2 tar命令用法
1.创建tar包 命令用法:tar -cvf tar包文件名 要备份的目录或文件名 命令功能:将指定的目录或文件打包成扩展名为.tar的包文件。其中的参 数-c代表创建tar包文件。 例如,若要将/etc目录下的文件打包成mylinux_etc.tar,则实现命令为: [root@rh9 root]# tar -cvf mylinux_etc.tar /etc/ 命令执行后,在/root目录中就会生成一个名为mylinux_etc.tar的文件。
RPM有五种基本的操作方式
RPM有五种基本的操作方式RPM 大全RPM 有五种基本的操作方式(不包括创建软件包): 安装, 卸载, 升级, 查询,和验证。
下面我们就来逐一的讲解吧。
一、安装RPM包RPM 软件包通常具有类似foo-1.0-1.i386.rpm 的文件名。
其中包括软件包的名称(foo),版本号(1.0),发行号(1),和硬件平台(i386)。
安装一个软件包只需简单的键入以下命令:$ rpm -ivh foo-1.0-1.i386.rpmfoo ####################################RPM安装完毕后会打印出软件包的名字(并不一定与文件名相同),而后打印一连串的#号以表示安装进度。
虽然软件包的安装被设计的尽量简单易行,但还是可能会发生如下的错误:1、软件包已被安装如果您的软件包已被安装, 将会出现以下信息:$ rpm -ivh foo-1.0-1.i386.rpmfoo package foo-1.0-1 is already installederror: foo-1.0-1.i386.rpm cannot be installed如果您仍旧要安装该软件包,可以在命令行上使用--replacepkgs 选项,RPM将忽略该错误信息强行安装。
2、文件冲突如果您要安装的软件包中有一个文件已在安装其它软件包时安装,会出现以下错误信息:# rpm -ivh foo-1.0-1.i386.rpmfoo /usr/bin/foo conflicts with file from bar-1.0-1error: foo-1.0-1.i386.rpm cannot be installed要想让RPM 忽略该错误信息,请使用--replacefiles 命令行选项。
3、未解决依赖关系RPM软件包可能依赖于其它软件包,也就是说要求在安装了特定的软件包之后才能安装该软件包。
如果在您安装某个软件包时存在这种未解决的依赖关系。
详细rpm用法
详细rpm用法一、安装.src.rpm软件包 (1)方法一: (1)方法二: (2)二、rpmbuild命令使用 (2)*使用命令:rpmbuild .[OPTION] (2)*从文件<specfile>建立 (2)*从<tarball>包建立 (3)*从<source package>包建立 (3)*rpmbuild的其他使用项 (3)*所有rpm都可使用的选项 (4)*附加选项 (5)*帮助选项 (5)三、在Linux系统中RPM 命令参数使用详解 (5)1、安装 (5)2、删除卸载 (7)3、升级 (8)4、查询 (9)5、校验已安装的软件包 (11)6、校验软件包中的文件 (12)7、其它RPM选项 (13)一、安装.src.rpm软件包有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。
这类软件包有两种安装方法:方法一:1.执行rpm -i your-package.src.rpm2.cd /usr/src/redhat/SPECS3.rpmbuild -bp your-package.specs 一个和你的软件包同名的specs文件4.cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录5../configure 这一步和编译普通的源码软件一样,可以加上参数6.make7.make install方法二:1.执行rpm -i you-package.src.rpm2.cd /usr/src/redhat/SPECS (前两步和方法一相同)3.rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等) 在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。
rpm命令的使用
高级网络工程专业上机实践指导书RPM 命令的使用:(1) 名称:rpm以snow-1.1.rpm 为例#rpm -ivh snow-1.1.rpm { i:安装、v:详细信息、h:用#表示进度}#rpm -e snow { 删除}#rpm -ivh --force snow-1.1.rpm { 强制重装}#rpm -e --nodeps snow { 去除内部相关性检查删除snow,不推荐使用} #rpm -Uvh snow {升级}#rpm -q snow { 查询}#rpm -ql snow { 查询snow所拥有的文件}#rpm -qlc snow { 查询snow的文档文件}#rpm -qld snow { 查询snow的配置文件}#rpm -qp snow-1.1.rpm { 查询文件,但不查询数据库}#rpm -qa { 查询所有以安装的软件包}#rpm -qf /usr/X11R6/bin/snow { 查询包的所有者}#rpm -qR snow-1.1.rpm { 查询snow包期望系统具有的情况}#rpm --checksig snow-1.1.rpm { 验证完整性签名}#rpm -V snow { 验证安装后是否被修改过}TAR 命令的使用:命令: tar格式: tar 选项文件目录列表功能:对文件目录进行打包备份选项:-c 建立新的归档文件-r 向归档文件末尾追加文件-x 从归档文件中解出文件-O 将文件解开到标准输出-v 处理过程中输出相关信息-f 对普通文件操作-z 调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩-Z 调用compress来压缩归档文件,与-x联用时调用compress完成解压缩实例1:目的:用tar打包一个目录下的文件高级网络工程专业上机实践指导书命令:#tar -cvf /mnt/lgx/a1.doc结果:产生一个以.tar为扩展名的打包文件。
rpm 命令用法
rpm 命令用法RPM(Red Hat Package Manager)是Red Hat Linux及其衍生版本中用来安装、卸载、升级和管理软件包的命令行工具。
以下是RPM命令的基本用法:1. 安装软件包:```cssrpm -ivh````-i` 表示安装软件包。
`-v` 表示详细输出。
`-h` 表示以适当的块大小显示进度。
2. 升级软件包:```cssrpm -Uvh````-U` 表示升级软件包。
`-v` 表示详细输出。
`-h` 表示以适当的块大小显示进度。
3. 卸载软件包:```cssrpm -e package_name````-e` 表示卸载软件包。
4. 查询已安装的软件包:```cssrpm -q package_name````-q` 表示查询软件包是否已安装。
5. 查询已安装的软件包的文件列表:```cssrpm -ql package_name````-ql` 表示列出软件包中的文件列表。
6. 查询软件包提供的功能:```cssrpm -qi package_name````-qi` 表示查询软件包的详细信息。
7. 查询已安装的软件包提供的功能:```cssrpm -qf /path/to/file````-qf` 表示查询指定文件属于哪个已安装的软件包。
8. 显示已安装的软件包之间的依赖关系:```cssrpm -qpR````-qp` 表示查询未安装的软件包的依赖关系。
`-R` 表示列出依赖关系。
9. 显示已安装的软件包的配置文件:```cssrpm -qc package_name````-qc` 表示查询软件包的配置文件。
10. 显示已安装的软件包的运行级别:```cssrpm -qR package_name grep "Runlevels" awk '{print $3}' tr ',' '\n' while read rl ; do echo $rl ; systemctl list-units --type=service --state=running --level=$rl grep -E "package_name" ; done sort -n uniq -c sort -nr head -n 10 ; echo "Total: $(echo $(rpm -qR package_name grep "Runlevels" awk '{print $3}') wc -l)"```。
Linux操作系统期末复习题(含答案)
Linux操作系统期末复习题(含答案)Linu某期末复习题(一)一、选择题(每小题2分,共50分)2.在UbuntuLinu某中,系统默认的(A)用户对整个系统拥有完全的控制权。
A.rootB.guetC.adminitratorD.upervitor.3.当登录Linu某时,一个具有唯一进程ID号的hell将被调用,这个ID是什么(B)A.NIDB.PIDC.UIDD.CID4.下面哪个命令是用来定义hell的全局变量(D)A.e某portfB.aliaC.e某portD.e某port5.哪个目录存放用户密码信息(B)A./bootB./etcC./varD./dev6.默认情况下管理员创建了一个用户,就会在(B)目录下创建一个用户主目录。
A./urB./homeC./rootD./etc7..当使用mount进行设备或者文件系统挂载的时候,需要用到的设备名称位于(D)目录。
A./homeB./binC./etcD./dev8.如果要列出一个目录下的所有文件需要使用命令行(C)。
A.l–lB.lC.l–a(所有)D.l–d9.哪个命令可以将普通用户转换成超级用户(D)A.uperB.pawdC.tarD.u10.除非特别指定,cp假定要拷贝的文件在下面哪个目录下(D)A.用户目录B.home目录C.root目录D.当前目录11.在vi编辑器里,命令\用来删除当前的(A)A.行B.变量C.字D.字符14.按下(A)键能终止当前运行的命令A.Ctrl-CB.Ctrl-FC.Ctrl-BD.Ctrl-D17.用\系统会提示什么来让你确认(B)A.命令行的每个选项B.是否真的删除C.是否有写的权限D.文件的位置18.以下哪个命令可以终止一个用户的所有进程(D)A.killallB.killC.killD.killall19.在UbuntuLinu某中,一般用(D)命令来查看网络接口的状态A.pingB.ipconfigC.winipcfgDifconfig20.vi中哪条命令是不保存强制退出(C)(第五章)A.:wqB.:wq!C.:q!D.:quit22.在下列分区中,Linu某默认的分区是(B)A.FAT32B.E某T3CFAT.DNTFS24.如果用户想对某一命令详细的了解,可用(C)A.lB.help(内部)C.man(列举的信息多)Ddir二、填空题(每空1分,共10分)26.在Linu某系统中,以_文件的_方式访问设备29.某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限644,该文件属性是目录。
rpm命令常用参数
rpm命令常用参数在Linux系统中,RPM(RPM Package Manager)是一种软件包管理工具,它可以用来安装、升级、卸载软件包。
RPM包具有可移植性、可重用性和易于管理的特点,因此在Linux系统中广泛使用。
在使用RPM命令时,有许多参数可以使用,本文将介绍常用的参数。
1. -i(install)-i参数用于安装一个RPM包,通过指定包的名称或文件名,可以将其安装到系统中。
例如,要安装名为example.rpm的软件包,可以使用以下命令:rpm -i example.rpm2. -U(update)-U参数用于升级一个已安装的RPM包。
与-i参数类似,可以通过指定包的名称或文件名来升级它。
例如,要升级名为example.rpm 的软件包,可以使用以下命令:rpm -U example.rpm3. -e(erase)-e参数用于卸载一个已安装的RPM包。
与-i和-U参数类似,可以通过指定包的名称或文件名来卸载它。
例如,要卸载名为example.rpm的软件包,可以使用以下命令:rpm -e example.rpm4. -qa(query all)-qa参数用于列出系统中安装的所有RPM包。
例如,要列出系统中安装的所有RPM包,可以使用以下命令:rpm -qa5. -qf(query file)-qf参数用于查询一个文件属于哪个RPM包。
例如,要查询文件/usr/bin/ls属于哪个RPM包,可以使用以下命令:rpm -qf /usr/bin/ls6. -qi(query information)-qi参数用于查询一个RPM包的详细信息,包括版本、发布日期、安装日期等。
例如,要查询名为example.rpm的软件包的详细信息,可以使用以下命令:rpm -qi example.rpm7. -qR(query requirements)-qR参数用于查询一个RPM包所依赖的其他软件包。
例如,要查询名为example.rpm的软件包所依赖的其他软件包,可以使用以下命令:rpm -qR example.rpm8. -ql(query list)-ql参数用于列出一个已安装的RPM包所包含的所有文件。
rpm使用方法
rpm使用方法
RPM是一个软件包管理工具,用于在Linux操作系统中安装、升级和卸载软件包。
以下是使用RPM的一些常见方法:
1. 安装软件包:使用rpm命令安装软件包,例如:
`rpm -ivh packagename.rpm`
其中,-i参数表示安装,-v参数表示显示详细信息,-h参数表示显示进度条。
2. 升级软件包:使用rpm命令升级软件包,例如:
`rpm -Uvh packagename.rpm`
其中,-U参数表示升级,-v参数表示显示详细信息,-h参数
表示显示进度条。
3. 卸载软件包:使用rpm命令卸载软件包,例如:
`rpm -e packagename`
其中,-e参数表示卸载软件包。
4. 查询软件包信息:使用rpm命令查询软件包信息,例如:
`rpm -q packagename`
其中,-q参数表示查询软件包信息。
5. 列出所有安装的软件包:使用rpm命令列出所有已安装的软件包,例如:
`rpm -qa`
其中,-a参数表示列出所有软件包。
6. 列出软件包文件列表:使用rpm命令列出软件包中包含的所有文件,例如:
`rpm -ql packagename`
其中,-q参数表示查询软件包信息,-l参数表示列出软件包文件列表。
以上是使用RPM的一些常见方法,需要注意的是,在使用rpm命令时需要以root权限运行。
RPM命令详解
RPM命令详解rpm 常用命令1.安装一个包# rpm -ivh2.升级一个包# rpm -Uvh3.移走一个包# rpm -e4.安装参数--force 即使覆盖属于其它包的文件也强迫安装--nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
5.查询一个包是否被安装# rpm -q < rpm package name>6.得到被安装的包的信息# rpm -qi < rpm package name>7.列出该包中有哪些文件# rpm -ql < rpm package name>8.列出服务器上的一个文件属于哪一个RPM包#rpm -qf9.可综合好几个参数一起用# rpm -qil < rpm package name>10.列出所有被安装的rpm package# rpm -qa11.列出一个未被安装进系统的RPM包文件中包含有哪些文件?# rpm -qilp < rpm package name><>一、安装命令格式:rpm -i ( or --install) options file1.rpm ... fileN.rpm参数:file1.rpm ... fileN.rpm 将要安装的RPM包的文件名详细选项:-h (or --hash) 安装时输出hash记号 (``#'')Print 50 hash marks as the package archive is unpacked. Usewith -v|--verbose for a nicer display.--test 只对安装进行测试,并不实际安装。
--percent 以百分比的形式输出安装的进度。
--excludedocs 不安装软件包中的文档文件--includedocs 安装文档--replacepkgs 强制重新安装已经安装的软件包--replacefiles 替换属于其它软件包的文件--force 忽略软件包及文件的冲突--noscripts 不运行预安装和后安装脚本--prefix 将软件包安装到由指定的路径下--ignorearch 不校验软件包的结构--ignoreos 不检查软件包运行的操作系统--nodeps 不检查依赖性关系--ftpproxy 用作为 FTP代理--ftpport 指定FTP的端口号为通用选项-v 显示附加信息-vv 显示调试信息--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下--rcfile 设置rpmrc文件为--dbpath 设置RPM 资料库存所在的路径为二、删除命令格式:rpm -e ( or --erase) options pkg1 ... pkgN参数pkg1 ... pkgN :要删除的软件包详细选项--test 只执行删除的测试--noscripts 不运行预安装和后安装脚本程序--nodeps 不检查依赖性通用选项-vv 显示调试信息--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下--rcfile 设置rpmrc文件为--dbpath 设置RPM 资料库存所在的路径为三、升级命令格式rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm参数file1.rpm ... fileN.rpm 软件包的名字详细选项-h (or --hash) 安装时输出hash记号 (``#'')--oldpackage 允许"升级"到一个老版本--test 只进行升级测试--excludedocs 不安装软件包中的文档文件--includedocs 安装文档--replacepkgs 强制重新安装已经安装的软件包--replacefiles 替换属于其它软件包的文件--force 忽略软件包及文件的冲突--percent 以百分比的形式输出安装的进度。
rpm操作手册文库
Riverbed操作手册(用户手册)文档信息目录第1章ARX3800基本配置 (3)1.1 System部分 (4)1.2 Diagnostic部分 (11)1.3 Backup部分 (16)1.4 Action部分 (17)1.5 Reports部分 (18)1.6 Integration部分 (19)1.7 Launch部分 (19)第2章J AVA C ONSOLE 配置 (21)2.1 Java Console功能介绍 (21)2.2 应用定义 (21)2.3 业务组定义 (24)2.4 Insight视图定义 (25)2.5 告警定义 (33)2.6 报告定义 (35)2.7 问题定位(Search) (38)2.8 Favoriate Table操作 (39)第3章D ASHBOAD配置 (44)3.1 Dashboad描述 (44)3.2 Dashboad功能 (45)3.3 新建Dashboard (46)3.4 定义Dashboard背景图 (47)3.5 Logo定义 (48)3.6 新建Panel与定义Panel的属性 (48)3.7 阈值定义 (51)第1章ARX3800基本配置在ARX3800正式上线之前,需要做一些基本的参数配置,这些基本的参数配置在Syetem界面下进行,主要的配置包括:接口状态、网络基本参数、IP地址、DNS地址、NTP服务器地址、SNMP信息、RADIUS信息、操作系统升级等。
1.1System部分1.1.1Setup配置参数配置参见下表:1.1.2SNMP配置参数配置参见下图:1.1.3Radius配置1.1.4Traceroute配置1.1.5Mail配置1.1.6Ports配置1.1.8History配置1.1.10Pages配置1.1.11Interface groups配置1.1.12Advanced配置1.2Diagnostic部分1.2.1Bundle配置1.2.2Subscription配置1.2.5Log viewer配置1.3Backup部分1.3.1Servers配置1.3.2Backup now配置1.3.3Schedule配置1.3.4Recovery配置1.3.5History配置1.4Action部分Action部分配置选项参见下图1.5Reports部分1.5.1Console reports配置1.5.2SLA dashboards配置1.6Integration部分1.6.1AppInternals Xpert配置1.6.2Element polling配置1.7Launch部分Launch选项参见下图:第2章Java Console 配置2.1Java Console功能介绍java console 控制台允许你根据网络流量建立详细的分析视图,这些视图可以以图表和拓扑的形式展现网络流量度量值。
RPM五种用法
· -s 显示软件包中所有文件的状态。
· -d 显示被标注为文档的文件列表(man 手册, info 手册, README's, etc)。
· -c 显示被标注为配置文件的文件列表。这些是您要在安装完毕以后加以定制的文件(sendmail.cf, passwd, inittab, etc)。
$ rpm -Uvh foo-1.0-1.i386.rpm
foo package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
如果你确有需要将该软件包”降级,加入 --oldpackage 命令选项就可以了。
对于那些要显示文件列表的文件, 您可以增加-v 命令行选项以获得如同 ls -l 格式的输出。
五、 验证软件包
验证软件包是通过比较已安装的文件和软件包中的原始文件信息来进行的。验证主要是比较文件的尺寸, MD5 校验码, 文件权限, 类型, 属主和用户组等。
rpm-V命令用来验证一个软件包。您可以使用任何包选择选项来查询您要验证的软件包。 命令rpm -V foo 将用来验证foo软件包。又如:
二、卸载RPM包
卸载软件包就象安装软件包时一样简单:
$ rpm -e foo
注意这里使用软件包的名字name ``foo'', 而不是软件包文件的名字file ``foo-1.0-1.i386.rpm''。
如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。如:
/usr/man/man6/koules.6
Linux操作系统复习题
Linux操作系统复习题一、选择题1.在创建Linux分区时,一定要创建(D )两个分区A. FAT/NTFSB. FAT/SWAPC. NTFS/SWAPD.SWAP/根分区2.在Red Hat Linux 9中,系统默认的(A)用户对整个系统拥有完全的控制权。
A. rootB. guestC. administratorD.supervistor.3. 默认情况下管理员创建了一个用户,就会在( B )目录下创建一个用户主目录。
A. /usrB. /homeC. /rootD. /etc4. 如果您想列出当前目录以及子目录下所有扩展名为“.txt”的文件,那么您可以使用的命令是( B )。
A. ls *.txtB. find . –name “.txt”C. ls –d .txtD. find . “.txt”5. 如何删除一个非空子目录/tmp( B )。
A. del /tmp/*B. rm -rf /tmpC. rm -Ra /tmp/*D. rm –rf /tmp/*6. 存放用户帐号的文件是(C )。
A. shadowB. groupC. passwdD. Gshadow7. . 当使用mount进行设备或者文件系统挂载的时候,需要用到的设备名称位于( D )目录。
A. /homeB. /binC. /etcD. /dev8. 如果要列出一个目录下的所有文件需要使用命令行( C )。
A. ls –lB. lsC. ls –aD. ls –d9. 哪个命令可以将普通用户转换成超级用户(D )A. superB. passwdC. tarD. su10. 除非特别指定,cp假定要拷贝的文件在下面哪个目录下( D )A. 用户目录B. home目录C. root目录D. 当前目录11. 当运行在多用户模式下时,用Ctrl+ALT+F*可以切换多少虚拟用户终端( B )A. 3B. 6C. 1D. 1212. 按下(A )键能终止当前运行的命令A. Ctrl-CB. Ctrl-FC. Ctrl-BD. Ctrl-D13. 下面哪个命令用来启动X Window ( C )A. runxB. StartxC. startXD. xwin4.假设文件fileA的符号链接为fileB,那么删除fileA后,下面的描述正确的是(B)A.fileB也随之被删除B. fileB仍存在,但是属于无效文件C. 因为fileB未被删除,所以fileA会被系统自动重新建立D. fileB会随fileA的删除而被系统自动删除5.在给定文件中查找与设定条件相符字符串的命令为(A )A.grep B. gzip C. find D. sort6.从后台启动进程,应在命令的结尾加上符号(A )A.& B. @ C. # D. $17. 如果执行命令#chmod 746 file.txt,那么该文件的权限是( A )。
rpm命令参数使用详解
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种。
二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。
源代码包经常以src.rpm作为后缀名。
常用命令组合:-ivh:安装显示安装进度--install--verbose--hash-Uvh:升级软件包--Update;-qpl:列出RPM软件包内的文件信息[Query Package list];-qpi:列出RPM软件包的描述信息[Query Package install package(s)];-qf:查找指定文件属于哪个RPM软件包[Query File];-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];-e:删除包rpm -q samba //查询程序是否安装rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm //按路径安装并显示进度rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm //指定安装目录rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm//用来检查依赖关系;并不是真正的安装;rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm //新版本降级为旧版本rpm -qa | grep httpd#[搜索指定rpm包是否安装]--all搜索*httpd*rpm -ql httpd#[搜索rpm包]--list所有文件安装目录rpm -qpi Linux-1.4-6.i368.rpm#[查看rpm包]--query--package--install package信息rpm -qpf Linux-1.4-6.i368.rpm#[查看rpm包]--filerpm -qpR file.rpm#[查看包]依赖关系rpm2cpio file.rpm |cpio -div #[抽出文件]rpm -ivh file.rpm #[安装新的rpm]--install--verbose--hashrpm -ivhrpm -Uvh file.rpm #[升级一个rpm]--upgraderpm -e file.rpm #[删除一个rpm包]--erase常用参数:Install/Upgrade/Erase options:-i, --install install package(s)-v, --verbose provide more detailed output-h, --hash print hash marks as package installs (good with -v)-e, --erase erase (uninstall) package-U, --upgrade=<packagefile>+ upgrade package(s)--replacepkge 无论软件包是否已被安装,都强行安装软件包--test 安装测试,并不实际安装--nodeps 忽略软件包的依赖关系强行安装--force 忽略软件包及文件的冲突Query options (with -q or --query):-a, --all query/verify all packages-p, --package query/verify a package file-l, --list list files in package-d, --docfiles list all documentation files-f, --file query/verify package(s) owning fileRPM源代码包装安装.src.rpm结尾的文件,这些文件是由软件的源代码包装而成的,用户要安装这类RPM软件包,必须使用命令:rpm--recompile vim-4.6-4.src.rpm #这个命令会把源代码解包并编译、安装它,如果用户使用命令:rpm--rebuild vim-4.6-4.src.rpm#在安装完成后,还会把编译生成的可执行文件重新包装成i386.rpm的RPM软件包。
RPM使用技巧
在RedHat Linux和Mandrake等兼容RedHat的发行版中,整个发行版都是利用RPM 安装的。
所以安装新软件的最好方法是从网络上下载rpm包。
1) 用RPM安装软件包最简单的命令如下:# rpm -ivh foo-1.0-l.i386.rpm (这里讲的软件包是foo-1.0-l.i386.rpm,以下都是)foo####################下面rpm就会输出该软件包的名称,并显示一个状态条。
安装很简单。
2)拆除已安装的软件包要反安装软件包foo,只需输入以下这行命令:# rpm -e foo注意:软件包名是foo,而不是rpm文件名"foo-1.0-l.i386.rpm"。
3)升级软件包升级软件包与安装软件包的命令十分相似,只是升级使用-U 选项,而安装是使用-i 选项。
当系统中没有安装先前版本的软件包时,-U 选项则会执行安装的操作。
升级软件包与安装软件包的命令十分相似,只是升级使用-U 选项,而安装是使用-i 选项。
假设名为tree-1.5.3.0-1.fc12.x86_64.rpm 的软件名位于当前目录,并且我们已经在系统中安装了名为tree-1.5.2.2-4.fc12.x86_64.rpm 的软件包,我们则可以通过以下命令对软件包进行升级~]# rpm -Uvh tree-1.5.3.0-1.fc12.x86_64.rpm作为升级软件包进程的一部分,RPM 会自动卸载之前老版本的tree 软件包。
当系统中没有安装先前版本的软件包时,-U 选项则会执行安装的操作。
因此使用-U 选项,即能够安装,也能够升级软件包。
注意:不推荐使用-U 选项对内核(kernel) 软件包进行安装,这样做会让RPM 完全地覆盖先前版本的内核软件包。
这个操作不会马上影响当前系统,但如果下次你无法使用新的内核启动系统,你就没有其它可用内核进行启用了。
使用-i 选项将会将新安装的内核添加到你的GRUB 启用菜单(即/etc/grub.conf 文件)。
rpm包用法
rpm包用法RPM包用法是一种在Linux系统上管理软件、文件和配置的标准化方式。
RPM(Red Hat Package Manager)是一种常见的软件包管理工具,被广泛应用于多个Linux发行版,包括Red Hat、CentOS等。
使用RPM包可以方便地安装、更新、卸载软件,同时也可以管理系统配置文件和其他相关文件。
下面将介绍一些RPM包的基本用法。
1. 安装RPM包:要安装一个RPM包,可以使用以下命令:```shellrpm -ivh package.rpm```其中,`package.rpm`是要安装的RPM包的文件名。
该命令将会将软件包及其相关文件安装到系统中。
2. 更新RPM包:如果需要更新已安装的RPM包,可以使用下面的命令:```shellrpm -Uvh package.rpm```这将会更新已安装的软件包到新版本,并解决旧版本的依赖关系。
3. 查询已安装的RPM包:要查看系统中已安装的RPM包列表,可以使用以下命令:```shellrpm -qa```这将列出所有已安装的软件包及其版本信息。
4. 卸载RPM包:如果不再需要某个RPM包,可以使用以下命令将其卸载:```shellrpm -e package```其中,`package`是要卸载的软件包的名称。
除了上述常用的基本用法外,RPM包还支持其他高级功能。
例如,在安装RPM包时,可以指定`--nodeps`选项来忽略依赖关系检查;使用`--force`选项可以强制安装一个RPM包,即使系统中存在较新的版本。
总而言之,RPM包是一种非常有用的工具,可以帮助我们在Linux系统上管理软件、文件和配置。
通过掌握基本的RPM包用法,我们可以更有效地管理系统,确保软件的安装、更新和卸载过程顺利进行。
rpm --import用法
RPM是一种常见的Linux系统软件包管理工具,它可以用来安装、升级和删除软件包。
在使用RPM进行软件包管理时,有时候我们需要对软件包进行数字签名验证,以确保软件包的来源和完整性。
而在进行数字签名验证时,就会用到rpm --import命令。
下面我们就来详细介绍一下rpm --import的用法。
一、rpm --import命令的基本介绍rpm --import命令用于从某个文件导入一个或多个GPG密钥,以便对软件包进行数字签名验证。
当我们从网上下载软件包时,很多时候软件包会包含数字签名信息,而这些数字签名信息会用GPG密钥进行加密。
当我们使用rpm命令安装这些软件包时,系统会自动进行数字签名验证,以确保软件包的来源和完整性。
而在进行数字签名验证时,系统会用到相应的GPG密钥。
我们需要使用rpm --import命令将这些GPG密钥导入到系统中,以便系统能够正确地进行数字签名验证。
二、rpm --import命令的语法格式rpm --import的基本语法格式如下所示:rpm --import <file>其中,<file>表示要导入的GPG密钥文件的路径。
需要注意的是,<file>参数可以是单个文件,也可以是使用通配符匹配的多个文件。
三、rpm --import命令的具体用法1. 将单个GPG密钥文件导入到系统中如果我们只需要将单个GPG密钥文件导入到系统中,可以使用如下命令:rpm --import /path/to/keyfile其中,/path/to/keyfile表示要导入的GPG密钥文件的路径。
2. 将多个GPG密钥文件导入到系统中如果我们需要将多个GPG密钥文件导入到系统中,可以使用如下命令:rpm --import /path/to/keyfiles/*.asc其中,/path/to/keyfiles/*.asc表示要导入的GPG密钥文件所在的目录路径及其文件名,使用通配符匹配多个文件。
rpm 命令
rpm 命令简介rpm命令是 Red Hat Package Manager 的缩写,它是一种用于在基于 RPM 的 Linux 发行版上安装、升级、查询和卸载软件包的工具。
RPM 软件包是一种预编译的二进制文件,其中包含了软件的可执行文件、库文件、配置文件和其他相关的元数据。
基本用法rpm命令的基本用法如下:rpm [选项] [操作] [软件包名]•选项:是可选的,用于指定一些特定的参数或行为。
•操作:指定要执行的操作,例如安装、升级、查询或卸载。
•软件包名:指定要操作的软件包的名称。
下面是一些常用的rpm命令操作:安装软件包rpm -i <软件包名>或rpm --install <软件包名>安装指定的软件包。
如果软件包已经安装,则会给出错误提示。
升级软件包rpm -U <软件包名>或rpm --upgrade <软件包名>升级指定的软件包。
如果软件包已经安装,则会将其升级到新版本。
如果软件包未安装,则会安装新版本的软件包。
查询软件包rpm -q <软件包名>或rpm --query <软件包名>查询指定软件包是否已安装。
如果软件包已安装,则会显示其版本信息。
如果软件包未安装,则会提示软件包未找到。
列出所有已安装的软件包rpm -qa或rpm --query -all列出系统上所有已安装的软件包。
卸载软件包rpm -e <软件包名>或rpm --erase <软件包名>卸载指定的软件包。
高级用法查看软件包信息rpm -qi <软件包名>或rpm --query --info <软件包名>查看指定软件包的详细信息,包括软件包名称、版本、发布日期、大小以及依赖关系等。
查询软件包提供的文件列表rpm -ql <软件包名>或rpm --query --list <软件包名>查询指定软件包提供的文件列表。
rpm 用法
rpm 用法RPM(Red Hat Package Manager)是最初由Red Hat Linux创建的包管理系统。
它是在Linux操作系统上安装、升级、卸载软件包的一种标准工具,它可以帮助你更好地管理你的软件包。
下面,我将介绍如何使用rpm。
第一步:安装rpm包要安装一个软件包,你需要先下载它。
你可以从软件包的官方网站或从软件源中下载它。
下载后,你可以通过以下命令来安装软件包:```rpm -i package.rpm```其中,package.rpm是你要安装的软件包的文件名。
如果一切顺利,软件包将被安装在你的系统上。
第二步:查询已安装的rpm包如果你想查询当前系统上安装的rpm包,可以使用以下命令:```rpm -qa```ql代表“查询所有”,a代表已安装的软件包。
如果你只想查询特定的软件包,可以使用以下命令:```rpm -qa | grep package-name```其中,package-name是你要查询的软件包的名称。
第三步:升级rpm包如果你想升级已安装的软件包,你可以使用以下命令:```rpm -U package.rpm```这个命令会用新的软件包覆盖旧的包。
第四步:卸载rpm包如果你想卸载一个软件包,你可以使用以下命令:```rpm -e package-name```其中,package-name是你要卸载的软件包的名称。
这个命令会将软件包和其所有的配置文件从系统中删除。
第五步:查询rpm包的详细信息如果你想查询一个特定的rpm包的详细信息,可以使用以下命令:```rpm -qi package-name```其中,package-name是你要查询的软件包的名称。
这个命令会显示软件包的版本、发布日期、安装日期、作者和描述等详细信息。
总结在Linux系统中,使用rpm可以更好地管理软件包,使你的系统更加规范和安全。
本文介绍了rpm的基本使用方法,希望能够帮助你更好地管理你的Linux系统。
rpm 的一点简单用法
rpm 的一点简单用法一.RPM软件包管理的查询功能:命令格式rpm {-q|--query} [select-options] [query-options]RPM的查询功能是极为强大,是极为重要的功能之一;举几个常用的例子,更为详细的具体的,请参考#man rpm1、对系统中已安装软件的查询;1)查询系统已安装的软件;语法:rpm -q 软件名举例:[root@localhost beinan]# rpm -q gaimgaim-1.3.0-1.fc4-q就是--query ,中文意思是“问”,此命令表示的是,是不是系统安装了gaim ;如果已安装会有信息输出;如果没有安装,会输出gaim 没有安装的信息;查看系统中所有已经安装的包,要加-a 参数;[root@localhost RPMS]# rpm -qa如果分页查看,再加一个管道|和more命令;[root@localhost RPMS]# rpm -qa |more在所有已经安装的软件包中查找某个软件,比如说gaim ;可以用grep 抽取出来;[root@localhost RPMS]# rpm -qa |grep gaim上面这条的功能和rpm -q gaim 输出的结果是一样的;2)查询一个已经安装的文件属于哪个软件包;语法rpm -qf 文件名注:文件名所在的绝对路径要指出举例:[root@localhost RPMS]# rpm -qf /usr/lib/libacl-devel-2.2.23-83)查询已安装软件包都安装到何处;语法:rpm -ql 软件名或rpm rpmquery -ql 软件名举例:[root@localhost RPMS]# rpm -ql lynx[root@localhost RPMS]# rpmquery -ql lynx4)查询一个已安装软件包的信息语法格式:rpm -qi 软件名举例:[root@localhost RPMS]# rpm -qi lynx5)查看一下已安装软件的配置文件;语法格式:rpm -qc 软件名举例:[root@localhost RPMS]# rpm -qc lynx6)查看一个已经安装软件的文档安装位置:语法格式:rpm -qd 软件名举例:[root@localhost RPMS]# rpm -qd lynx7)查看一下已安装软件所依赖的软件包及文件;语法格式:rpm -qR 软件名举例:[root@localhost beinan]# rpm -qR rpm-python查询已安装软件的总结:对于一个软件包已经安装,我们可以把一系列的参数组合起来用;比如rpm -qil ;比如:[root@localhost RPMS]# rpm -qil lynx2、对于未安装的软件包的查看:查看的前提是您有一个.rpm 的文件,也就是说对既有软件file.rpm的查看等;1)查看一个软件包的用途、版本等信息;语法:rpm -qpi file.rpm举例:[root@localhost RPMS]# rpm -qpi lynx-2.8.5-23.i386.rpm2)查看一件软件包所包含的文件;语法:rpm -qpl file.rpm举例:[root@localhost RPMS]# rpm -qpl lynx-2.8.5-23.i386.rpm3)查看软件包的文档所在的位置;语法:rpm -qpd file.rpm举例:[root@localhost RPMS]# rpm -qpd lynx-2.8.5-23.i386.rpm5)查看一个软件包的配置文件;语法:rpm -qpc file.rpm举例:[root@localhost RPMS]# rpm -qpc lynx-2.8.5-23.i386.rpm4)查看一个软件包的依赖关系语法:rpm -qpR file.rpm举例:[root@localhost archives]# rpm -qpR yumex_0.42-3.0.fc4_noarch.rpm/bin/bash/usr/bin/pythonconfig(yumex) = 0.42-3.0.fc4pygtk2pygtk2-libgladerpmlib(CompressedFileNames) <= 3.0.4-1rpmlib(PayloadFilesHavePrefix) <= 4.0-1usermodeyum >= 2.3.2二.软件包的安装、升级、删除等;1、安装和升级一个rpm 包;[root@localhost beinan]#rpm -vih file.rpm 注:这个是用来安装一个新的rpm 包;[root@localhost beinan]#rpm -Uvh file.rpm 注:这是用来升级一个rpm 包;如果有依赖关系的,请解决依赖关系,其实软件包管理器能很好的解决依赖关系,请看前面的软件包管理器的介绍;如果您在软件包管理器中也找不到依赖关系的包;那只能通过编译他所依赖的包来解决依赖关系,或者强制安装;语法结构:[root@localhost beinan]# rpm -ivh file.rpm --nodeps --force[root@localhost beinan]# rpm -Uvh file.rpm --nodeps --force更多的参数,请查看man rpm 举例应用:[root@localhost RPMS]# rpm -ivh lynx-2.8.5-23.i386.rpmPreparing... ########################################### [100%]1:lynx ########################################### [100%][root@localhost RPMS]# rpm -ivh --replacepkgs lynx-2.8.5-23.i386.rpmPreparing... ########################################### [100%]1:lynx ########################################### [100%]注:--replacepkgs 参数是以已安装的软件再安装一次;有时没有太大的必要;测试安装参数--test ,用来检查依赖关系;并不是真正的安装;[root@localhost RPMS]# rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpmPreparing... ########################################### [100%]由新版本降级为旧版本,要加--oldpackage 参数;[root@localhost RPMS]# rpm -qa gaimgaim-1.5.0-1.fc4[root@localhost RPMS]# rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpmPreparing... ########################################### [100%]1:gaim ########################################### [100%][root@localhost RPMS]# rpm -qa gaimgaim-1.3.0-1.fc4为软件包指定安装目录:要加-relocate 参数;下面的举例是把gaim-1.3.0-1.fc4.i386.rpm指定安装在/opt/gaim 目录中;[root@localhost RPMS]# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm Preparing... ########################################### [100%]1:gaim ########################################### [100%][root@localhost RPMS]# ls /opt/gaim为软件包指定安装目录:要加-relocate 参数;下面的举例是把lynx-2.8.5-23.i386.rpm 指定安装在/opt/lynx 目录中;[root@localhost RPMS]# rpm -ivh --relocate /=/opt/lynx --badreloc lynx-2.8.5-23.i386.rpm Preparing... ########################################### [100%]1:lynx ########################################### [100%]我们安装在指定目录中的程序如何调用呢?一般执行程序,都放在安装目录的bin或者sbin 目录中;看下面的例子;如果有错误输出,就做相应的链接,用ln -s ;[root@localhost RPMS]# /opt/lynx/usr/bin/lynxConfiguration file /etc/lynx.cfg is not available.[root@localhost RPMS]# ln -s /opt/lynx/etc/lynx.cfg /etc/lynx.cfg[root@localhost RPMS]# /opt/lynx/usr/bin/lynx 2、删除一个rpm 包;首先您要学会查询rpm 包;请看前面的说明;[root@localhost beinan]#rpm -e 软件包名举例:我想移除lynx 包,完整的操作应该是:[root@localhost RPMS]# rpm -e lynx如果有依赖关系,您也可以用--nodeps 忽略依赖的检查来删除。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux RPM的五种基本操作
RPM 有五种基本的操作方式(不包括创建软件包):安装,卸载,升级,查询,和验证。
下面我们就来逐一的讲解吧。
一、安装RPM包
RPM 软件包通常具有类似foo-1.0-1.i386.rpm 的文件名。
其中包括软件包的名称(foo),版本号(1.0),发行号(1),和硬件平台(i386)。
安装一个软件包只需简单的键入以下命令:
RPM安装完毕后会打印出软件包的名字(并不一定与文件名相同),而后打印一连串的#号以表示安装进度。
虽然软件包的安装被设计的尽量简单易行,但还是可能会发生如下的错误:
1、软件包已被安装如果您的软件包已被安装,将会出现以下信息:
如果您仍旧要安装该软件包,可以在命令行上使用——replacepkgs 选项,RPM将忽略该错误信息强行安装。
2、文件冲突如果您要安装的软件包中有一个文件已在安装其它软件包时安装,会出现以下错误信息:
要想让RPM 忽略该错误信息,请使用——replacefiles 命令行选项。
3、未解决依赖关系RPM软件包可能依赖于其它软件包,也就是说要求在安装了特定的软件包之后才能安装该软件包。
如果在您安装某个软件包时存在这种未解决的依赖关系。
会产生以下信息:$ rpm -ivh bar-1.0-1.i386.rpm failed dependencies: foo is needed by bar-1.0-1您必须安装完所依赖的软件包,才能解决这个问题。
如果您想强制安装(这是个坏主意,因为安装后的软件包未必能正常运行),请使用——nodeps 命令行选项。
二、卸载RPM包
卸载软件包就象安装软件包时一样简单:$ rpm -e foo注意这里使用软件包的名字name ``foo'',而不是软件包文件的名字file ``foo-1.0-1.i386.rpm''.如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。
如:$ rpm -e foo removing these packages would break dependencies:foo is needed by bar-1.0-1若让RPM忽略这个错误继续卸载(这可不是一个好主意,因为依赖于该软件包的程序可能无法运行),请使用——nodeps 命令行选项。
三、升级RPM包
升级软件包和安装软件包十分类似:
RPM将自动卸载已安装的老板本的foo 软件包,您不会看到有关信息。
事实上您可能总是使用 -U 来安装软件包,因为即便以往未安装过该软件包,也能正常运行。
因为RPM执行智能化的软件包升级,自动处理配置文件,您将会看到如下信息:saving /etc/foo.conf as /etc/foo.conf.rpmsave这表示您对配置文件的修改不一定能向上兼容。
因此,RPM 会先备份老文件再安装新文件。
您应当尽快解决这两个配置文件的不同之处,以使系统能持续正常运行。
因为升级实际包括软件包的卸载与安装两个过程,所以您可能会碰到由这两个操作引起的错误。
另一个你可能碰到的问题是:当您使用旧版本的软件包来升级新版本的软件时,RPM 会产生以下错误信息:
如果你确有需要将该软件包“降级,加入——oldpackage 命令选项就可以了。
四、查询已安装的软件包
使用命令rpm -q来查询已安装软件包的数据库。
简单的使用命令 rpm -q foo 会打印出foo软件包的包名,版本号,和发行号:
除了指定软件包名以外,您还可以使用以下选项来指明要查询哪些软件包的信息。
这些选项被称之为“软件包指定选项”。
-a 查询所有已安装的软件包。
-f 将查询包含有文件。
的软件包。
-p 查询软件包文件名为的软件包还可以指定查询软件包时所显示的信息。
它们被称作信息选择选项:。
-i 显示软件包信息,如描述,发行号,尺寸,构建日期,安装日期,平台,以及其它一些各类信息。
-l 显示软件包中的文件列表。
-s 显示软件包中所有文件的状态。
-d 显示被标注为文档的文件列表(man 手册, info 手
册, README's, etc)。
-c 显示被标注为配置文件的文件列表。
这些是您要在安装完毕以后加以定制的文件(sendmail.cf, passwd, inittab, etc)。
对于那些要显示文件列表的文件,您可以增加-v 命令行选项以获得如同 ls -l 格式的输出。
五、验证软件包
验证软件包是通过比较已安装的文件和软件包中的原始文件信息来进行的。
验证主要是比较文件的尺寸, MD5 校验码,文件权限,类型,属主和用户组等。
rpm-V命令用来验证一个软件包。
您可以使用任何包选择选项来查询您要验证的软件包。
命令rpm -V foo 将用来验证foo软件包。
又如:。
验证包含特定文件的软件包:rpm -Vf /bin/vi。
验证所有已安装的软件包:rpm -Va。
根据一个RPM包来验证:rpm -Vp foo-1.0-1.i386.rpm如果您担心你的RPM数据库已被破坏,就可以使用这种方式。
如果一切均校验正常将不会产生任何输出。
如果有不一致的地方,就会显示出来。
输出格式是8位长字符串, ``c'' 用以指配置文件,接着是文件名。
8位字符的每一个用以表示文件与RPM数据库中一种属性的比较结果 .``.'' (点)表示测试通过。
下面的字符表示对RPM软件包进行的某种测试失败:显示字符错误源5 MD5 校验码S 文件尺寸L 符号连接T 文件修改日期D 设备U 用户G 用户组M 模式e (包括权限和文件类型)
如果有错误信息输出,您应当认真加以考虑,是通过删除还是重新安装来解决出现的问题。
六、教你一招
RPM不仅是安装/卸载程序的工具,它还是系统维护和诊断的一把好手。
看过下面几个例子你就会领教它的厉害了。
如果您误删了一些文件,但您不能肯定到底都删除了那些文件,怎么办?您可以键入:rpm -Va rpm会在屏幕上显示出文件删除的情况。
若你发现一些文件丢失了或已被损坏,您就可以重新安装或先卸载再安装该软件包。
如果您碰到了一个自己不认识的文件,要想查处它属于哪个软件包,您可以输入以下命令rpm -qf
/usr/X11R6/bin/xjewel输出的结果会是:xjewel-1.6-1。
如果发生综合以上两个例子的情况,如文件/usr/bin/paste出了问题。
您想知道哪个软件包中包含该文件,您这时可以简单的键入:rpm -Vf /usr/bin/paste。
如果您想了解正在使用的程序的详细信息,您可以键入如下命令来获得软件包中关于该程序的文档信息:rpm -qdf /usr/bin/ispell输出结果为:
您发现了一个新的koules RPM,但您不知道它是做什么的,您可以键入如下命令:rpm -qip koules-1.2-2.i386.rpm。
现在您想了解koules的 RPM包在系统里安装了哪些文件,您可以键入:rpm -qlp koules-1.2-2.i386.rpm输出结果为:
/usr/man/man6/koules.6
/usr/lib/games/kouleslib/start.raw
/usr/lib/games/kouleslib/end.raw
/usr/lib/games/kouleslib/destroy2.raw
/usr/lib/games/kouleslib/destroy1.raw
/usr/lib/games/kouleslib/creator2.raw
/usr/lib/games/kouleslib/creator1.raw
/usr/lib/games/kouleslib/colize.raw
/usr/lib/games/kouleslib
/usr/games/koules
以上只是几个常见例子。
随着您进一步的使用RPM,您会发现它的各种功能选项组合可以实现更为强大的RPM包管理功能。