目录
一、Linux中软件包的类型
1、DEB #Ubuntu Debian
2、RPM #Redhat Centos Fadora
3、bz2 | gz | xz #(1)绿色软件,可以直接使用
(2)需要源码安装,需要编译
注意:在RedHat8中只能使用绿色软件、源码编译软件和RPM软件
RPM软件安装命令:
rpm -ivh linuxqq_2.0.0-b2-1089_x86_64.rpm
这里以安装QQlinux为例,先下载下安装包,使用安装命令安装
压缩包软件安装命令:
tar jxf 压缩文件名
绿色软件(解压后就可以用)
源码编译软件(解压后需要系统编译后才能使用)
二、软件包的名称结构
[dhcp-server] - [4.3.6-30] . [el8] . [x86_64] . [rpm]
1 2 3 4 5
1.软件名称
2.软件版本
3.软件的授权协议版本
4.软件架构
5.软件类型后缀
三、rpm命令管理软件包
rpm -ivh ##安装参数组合 -i install -v verbose -h hash
-a ##所有
-f ##文件
-p ##软件包
-q ##查询
-l ##软件安装文件列表
-e ##卸载
-c ##配置文件
-d ##说明
--info ##软件信息
--force ##强制
--nodeps ##忽略依赖性
--script ##查询软件在安装或卸载过程中的运行脚本
-Kv ##检测软件md5校验码
-V ##检测已安装软件在系统中的文件被修改信息
rpm命令下的许多参数不能单独使用,需要结合参数<-q>,<-qa>用来查询系统中所有已安装的软件,<-qf>查看文件属于哪个安装包,<-ql>查看已安装文件在系统中被包含在哪些路径
这里使用<-e>参数卸载了程序“Llinuxqq”,卸载完成后再次查询确认已经不存在这个程序了。使用<-qa>参数查询“ssh”属于哪个安装包,然后使用参数<-qc>查询这个安装包的配置文件;再使用<-qd>参数查询这个安装包的说明文件。
info:使用参数<-q>和参数<--info>可以查询软件的详细信息(包括名称、版本、授权、安装日期等等)
--force:以强制安装为例,当已经安装的某些软件因为各种原因不能运行的时后,再次执行安装操作显示“软件已安装,无法再次安装”,这时就需要加上<--force>参数,再次强制执行安装操作重新安装软件。
--nodeps:忽略依赖性命令,在执行默认安装命令时,会遇到一些依赖性的错误导致无法完成安装,可以在安装命令的最后加上参数<--nodeps>,安装时会自动忽略依赖性关系,完成安装。
--script:可以查询软件在安装或卸载过程中的运行脚本。如果下载一个未知软件,可以先用此命令查看,确定运行不会对计算机造成损害后方可运行。
-Kv:检验文件/软件的md5校验码,原版文件如果没有改动的话,此命令校验可以通过,软件被改动后校验就不能通过,不能通过的软件一定不能安装。
-V:检测已安装软件在系统中的文件修改信息。如果哪一项发生改动,用此命令可以检查出来。这里修改了linuxqq的安装文件列表中的txt文件,再用此参数可以查到被改动的列表内容。
拆解安装包:
rpm2cpio 软件名 | cpio -id
这里对这个安装包拆解完以后,同一目录下会出现一个新的“usr”文件。
四、本地软件仓库的搭建
1、系统软件仓库的作用是什么?
答:在系统中对软件进行管理。rpm命令是不能解决依赖关系的,如果需要软件在安装过程中自动解决依赖关系,需要搭建系统软件仓库。
2、搭建方法
(1)在系统中加载安装系统时使用的安装镜像
注意:为了不更改主机的配置,这部操作在虚拟机westosb中进行。
先在虚拟机westosb中根目录下创建两个文件夹<iso>和<sourcedir>,分别用来存储系统镜像及解压后文件。
然后使用<mount>命令将镜像文件挂载在指定目录,<mount>用法如下:
mount rhel-8.2-x86_64-dvd.iso /sourcedir/
(2)编写软件仓库文件
/etc/yum.repos.d/ ##软件源指向文件配置目录,在此目录中不能有无法访问的源指向(也就是说这个目录下的每个文件都不是多余的)
vim /etc/yum.repos.d/xxxx.repo ##软件仓库指向文件
在软件源配置目录中新编写一个指向文件,文件后缀名必须是<.repo>,编辑此文件时需要做如下设置,其中“name”表示设置的源名称(可随意);“baseurl”指向的路径为镜像解压后的<AppStream>目录,<gpgcheck=0>表示跳过授权检测,<gpgkey>表示系统中的授权密钥,<enable>可选择设置,不写时默认为1,表示启用此软件源,设置为0时表示不启用此软件源。下边的<BaseOS>同理。
[AppStream]
name=westosa AppStream
baseurl=file:///sourcedir/AppStream
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-REDHAT-RELEASE
enable=1
[BaseOS]
name=westosa
baseurl=file:///sourcedir/BaseOS
pgcheck=0
设置完成后,系统的软件源就算设置好了。
到了这里还存在一个问题,就是镜像不能自动挂载在目录</sourcedir/>中,所以需要写一个开机自动运行的命令脚本,让每次开机时自动执行挂载命令。
通过vim命令编辑开及运行脚本文件,文件中的命令会在开机时自动执行,命令如下:
vim /etc/rc.d/rc.local
然后在文件中加入如下命令:(还要赋予这个文件的可执行权限)
mount /iso/rhel-8.2-x86_64-dvd.iso /sourcedir/
(3)测试软件源是否可以用
使用命令< dnf install gcc -y>安装一个<gcc>命令,左边为配置好的虚拟机westosa,右边为没有配置的虚拟机westosb,可以看到左边安装成功,右边安装失败了。
五、dnf软件管理命令
1、安装管理包
dnf repolist ##列出仓库信息
clean all ##清除系统中已经加载的仓库缓存信息 /var/cache/dnf
list all ##列出所有软件
list available ##列出未安装软件
list installed ##列出已安装软件
install ##安装
remove ##卸载
reinstall ##重新安装
search ##搜索
whatprovides ##搜索包含文件的软件包
history ##dnf执行历史
history info ##dnf执行历史详细信息
group list ##列出软件组
group list --installed ##列出已安装软件组
group list --available ##列出未安装软件组
group list --hidden ##列出隐藏软件组
group install ##安装软件组
group info ##查看软件组信息
这部分涉及到的图片太多,后续在复习的时后再贴出来。
2、下载安装包
镜像仓库中含有的软件源数量不多,所以需要再配置一个网络源。一般常用的网络软件源仓库为epel。下面介绍安装此网络软件源仓库的命令。
#下载软件源的文件
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
#安装软件源
dnf install epel-release-latest-8.noarch.rpm#查看软件仓库信息
dnf repolist epel#查看所有软件源的配置文件
ls /etc/yum.repos.d/
安装完成后可以看到目录</etc/yum.repos.d/>下多了许多<.repo>即网络源的指向文件,就是新安装的软件源。
以搜索<kolourpaint>软件为例,先切换到root用户下,然后使用dnf命令的<search>参数搜索关键字。
接下来就可以使用使用dnf命令的<install>参数直接安装了,但直接安装的话系统中不会保存这个软件的安装包。
所以为了保存软件安装包,需要先安装一个插件,插件名为<yum-utils.noarch>,这个插件安装好以后,系统中就会出现一个新命令<yumdownloader>。
yumdownloader httpd #下载仓库中指定软件的安装包到当前目录
yumdownloader --destdir=/mnt #下载仓库中指定软件的安装包到指定的/mnt目录下
yumdownloader httpd --destdir=/mnt --resolve #下载仓库中指定软件的安装包和软件依赖性到/mnt目录下
使用<yumdownloader>命令下载的文件默认保存在当前shell所在目录下。
yumdownloader kolourpaint.x86_64
使用<yumdownloader --destdir=/mnt 软件名>可以将软件下载到指定到目录下。
yumdownloader --destdir=/mnt kolourpaint.x86_64
但是这样仍然存在一个问题,就是下载软件时只是下载了软件本身,软件安装过程中可能会需要一些依赖性文件,这些依赖性文件缺失的话会对安装过程造成一定麻烦。所以为了解决这个问题,在下载软件的时候,需要连带软件依赖性也一起下载。
yumdownloader --destdir=/mnt httpd --resolve
可以看到加上<--resolve>参数后,在下载软件时会连带这个软件所需要的依赖性文件全部下载到指定目录下。
六、本章总结
~~~~~~~~~~~想到了再说,未完待续~~~~~~~~~~~~~~