linux软件管理

软件管理

1、rpm管理工具

RPM是(Redhat Package Manager) 的缩写,由Red Hat公司提出的一种软件包管理标准

(1)rpm软件包的典型命名格式:

例:zsh-5.0.2-14.el8.x86_64.rpm

zsh-50214el8x8664
软件名主版本号次版本号修订号软件发布次数发行商RHEL8CPU架构商支持系统位数

(2)rpm安装

参数说明
-i,--install安装软件包
-v,--verbose显示安装过程
-h,--hash软件包安装显示#标记

在rpm相关网站下载软件包:

Rpmfind mirror  http://rpm.phone.net/RPM Search (pbone.net)http://rpm.phone.net/

(3)rpm命令

<1> 安装软件:rpm  -ivh  [软件包链接]

例:安装软件sl

[root@tianqinwei ~]# rpm -ivh http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/s/sl-5.02-1.el8.x86_64.rpm

<2> 升级软件:

  • rpm  -Uvh  [软件包链接]  ---(-U:update,升级
  • rpm  -Fvh  [软件包链接]  ---(-F:freshen,前提是系统已安装旧版本

例:升级wget

下载wget:
[root@tianqinwei ~]# wget -c http://rpmfind.net/linux/centos/8-stream/AppStream/x86_64/os/Packages/wget-1.19.5-11.el8.x86_64.rpm

检查wget版本:
[root@tianqinwei ~]# rpm -q wget
wget-1.19.5-7.el8.x86_64

升级wget版本:
[root@tianqinwei ~]# rpm -Uvh wget-1.19.5-11.el8.x86_64.rpm

Uvh和Fvh的区别

1> 如果系统存在旧版本,则两者作用相同,都是升级软件

2> 如果系统内不存在旧版本,Uvh是直接安装新版本,Fvh放弃操作

<3> 卸载软件:rpm  -e  包名  ---(-e:erase,卸载

例:卸载wget

[root@tianqinwei ~]# rpm -e wget

<4> 查询软件:rpm  -q  包名

例:检查wget是否安装

法一:
[root@tianqinwei ~]# rpm -q wget
wget-1.19.5-11.el8.x86_64
法二:
[root@tianqinwei ~]# rpm -qa | grep wget
wget-1.19.5-11.el8.x86_64

-q 查询还存在许多子命令:

  • # rpm -qi 包名     查询已安装的包的信息
  • # rpm -qc 包名    查询已安装包的配置信息
  • # rpm -qd 包名    查询已安装包的文档信息
  • # rpm -ql 包名     列出软件包的文件
  • # rpm -qa            查询所有软件包
  • # rpm -qf 文件路径(查询文件是哪个包安装的)
[root@tianqinwei ~]# rpm -qf /etc/ssh
openssh-7.8p1-4.el8.x86_64

例:删除vim软件包,并且重新安装 

[root@tianqinwei ~]# rpm -qa | grep ^vim --- 查找以vim开头的软件包
vim-enhanced-8.0.1763-10.el8.x86_64
vim-common-8.0.1763-10.el8.x86_64
vim-minimal-8.0.1763-10.el8.x86_64
vim-filesystem-8.0.1763-10.el8.noarch
[root@tianqinwei ~]# rpm -e vim-enhanced --- 删除vim-enhanced软件包
[root@tianqinwei ~]# rpm -e vim-common
[root@tianqinwei ~]# mount /dev/cdrom /mnt/ --- 挂载安装光盘
[root@tianqinwei ~]# cd /mnt/AppStream/Packages --- 进入挂载目录
安装软件:
[root@tianqinwei Packages]# rpm -ivh vim-enhanced-8.0.1763-10.el8.x86_64.rpm 
warning: vim-enhanced-8.0.1763-10.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
	vim-common = 2:8.0.1763-10.el8 is needed by vim-enhanced-2:8.0.1763-10.el8.x86_64
报错:错误的依赖关系
rpm最大的缺陷,无法解决软件包之间的依赖关系
解决方法:
<1> 先安装vim-common,再安装vim-enhanced
[root@tianqinwei Packages]# rpm -ivh vim-common-8.0.1763-10.el8.x86_64.rpm 
[root@tianqinwei Packages]# rpm -ivh vim-enhanced-8.0.1763-10.el8.x86_64.rpm
<2> 将依赖和被依赖的软件包一起安装,中间空格隔开
[root@tianqinwei Packages]# rpm -ivh vim-common-8.0.1763-10.el8.x86_64.rpm vim-enhanced-8.0.1763-10.el8.x86_64.rpm

2、yum(dnf)管理工具

YUM = YellowDog Update Modifier
DNF = Dandified YUM

为了有效的解决软件安装的依赖关系,我们可以使用yum进行rpm软件包管理

(1)实现yum功能,依赖于三个机制的建立

  • 其一是需要有一个包含各种rpm安装文件的软件仓库(即yum源)
  • 其二是有软件仓库的仓库数据库,其中收集了软件仓库中所有rpm包的头部信息,包含了该包的描述、功能、提供的文件、依赖关系等包信息
  • 其三是有软件仓库的地址等信息。支持三种:本地路径--file(file://)、ftp(ftp://)、http(http://)

(2)更新:rhel8中默认使用的软件批量管理工具由yum换成了速度更快的dnf,原有的yum命令仅为dnf的软链接

[root@tianqinwei ~]# ll /usr/bin/yum 
lrwxrwxrwx. 1 root root 5 Feb 14  2019 /usr/bin/yum -> dnf-3
dnf源文件所在目录依旧为/etc/yum.repos.d下。
[root@tianqinwei ~]# ls /etc/yum.repos.d --- 仓库文件依旧存放在原yum的目录下面
redhat.repo

rhel8在升级的基础上增加了两个仓库:

  • BaseOS提供一套核心的底层操作系统功能,为基础软件安装库
  • AppStream包括额外的用户空间应用程序、运行时语言和数据库,以支持不同的工作负载和用力。AppStream的内容有两种格式 --- RPM格式的和称为模块的RPM格式扩展
  • (3)案例

例1:以本地安装光盘来构建安装仓库 yum源

1>挂载光盘:
[root@tianqinwei ~]# mount /dev/cdrom /mnt/

2>配置yum源:
仓库目录:/etc/yum.repos.d/
文件:要求以.repo为后缀
[root@tianqinwei yum.repos.d]# vim rhel8.repo
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS/
gpgcheck=0

[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream/
gpgcheck=0

3>检查
[root@tianqinwei yum.repos.d]# yum repolist
卸载:yum remove packagename
安装:yum install packagename

例2:配置互联网源

使用阿里云镜像https://mirrors.aliyun.com/

1>修改名字,让其失效
[root@tianqinwei yum.repos.d]# mv rhel8.repo rhel8.repo.bak

2>复制为centos8.repo
[root@tianqinwei yum.repos.d]# cp rhel8.repo.bak centos8.repo

3>进入vim编辑
[root@tianqinwei yum.repos.d]# vim centos8.repo
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/BaseOS/x86_64/os/
gpgcheck=0

[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/AppStream/x86_64/os/
gpgcheck=0

4>检查
[root@tianqinwei yum.repos.d]# yum repolist

(4)yum常用

<1> list

  • yum list all 列出仓库中所有可安装的软件包
  • yum list installed [包名] --- 列出已安装的所有或指定的rpm包(包名中可使用匹配符)

<2> yum info [包名] --- 查看指定软件包的详细信息

<3> yum search 模糊包名 --- 查看模糊包名的软件包

<4> yum install [-y] 包名 --- 安装指定软件包,-y指在工作过程中需要使用者响应,此参数可直接回复yes

例:安装httpd

[root@tianqinwei ~]# yum install -y httpd

<5> yum update [-y] 包名 --- 升级指定软件包或主机中所有已安装的软件包(如果不指定包名, 则更新所有有新版本的软件)

<6> yum remove [-y] 包名 --- 卸载已安装在系统中的指定软件包

例:删除httpd

[root@tianqinwei ~]# yum remove httpd --- 一般不加-y,万一卸载的软件包中有某个工具想使用,以备不时之需

<7> yum provides 文件名 --- 查找指定文件属于哪个包


例1:查找/etc/ssh文件属于哪个包

[root@tianqinwei ~]# yum provides /etc/ssh
[root@tianqinwei ~]# yum whatprovides /etc/ssh

例2:查看ifconfig命令由哪个软件提供?

[root@tianqinwei ~]# yum provides ifconfig --- 查看ifconfig命令由那个软件提供

[root@tianqinwei ~]# rpm -e net-tools --- 卸载后也依旧能查看ifconfig命令由net-tools提供

[root@tianqinwei ~]# yum install -y net-tools --- 下载net-tools

(5)模块相关

RHEL8相应地在yum命令下,增加了一个module子命令。多了个模块(module)、模块下多了个序列 (Stream)、序列下多了个组合(profile)

<1> yum module list  ---  列出所有模块

<2> yum module list [具体模块名]  ---  列出具体模块

[d] default(默认的);[e] enable(启用的)

[x] disabled(禁用的);[i] installed(已安装的)

<3> 安装指定版本的模块:

  • yum  install  @模块名:版本
  • yum  module  install  模块名:版本

例:安装nginx模块的1.14版本

法一:[root@tianqinwei ~]# yum install @nginx:1.14
法二:[root@tianqinwei ~]# yum module install nginx:1.14

<4> yum  remove  [模块名]

(6)yum-config-manager的使用


安装:

[root@tianqinwei ~]# yum provides yum-config-manager --- 查找yum-config-manageer由什么提供

[root@tianqinwei ~]# yum install dnf-utils --- 安装该dnf-utils

[root@tianqinwei yum.repos.d]# ls --- 查看是否成功生成
centos8.repo.bak                                                         redhat.repo
mirrors.tuna.tsinghua.edu.cn_docker-ce_linux_rhel_8_source_stable_.repo  rhel8.repo
[root@tianqinwei yum.repos.d]# cat mirrors.tuna.tsinghua.edu.cn_docker-ce_linux_rhel_8_source_stable_.repo --- 查看仓库信息

若想使用时,需将gpgcheck改为0


3、源码编译

(1)优点:

  • 获得最新的软件版本,及时修复bug
  • 根据用户需要,灵活定制软件功能

(2)应用场合举例:

安装较新版本的应用程序时,自由软件的最新版本大都以源码的形式最先发布。当前安装的程序无法满足需要时,编译安装可由用户自行修改、定制功能。需要为应用程序添加新的功能时,用户可以重新配置、自由修改源代码,加入新的功能。

(3)主要流程:

  • 解包 --- tar(解包、释放出源代码文件)
  • 配置 --- ./confifigure (针对当前系统、软件环境,配置好安装参数)
  • 编译 --- make (将源代码文件变为二进制的可执行程序)
  • 安装 --- make install(将编译好的程序文件复制到系统中)

(4)案例:wget


[root@tianqinwei ~]# rpm -q wget --- 查看当前wget版本
wget-1.19.5-11.el8.x86_64
[root@tianqinwei ~]# wget -c http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz --- 下载源码

<1> 删除老版的wget
[root@tianqinwei ~]# rpm -e wget

<2> 安装c,c++编译环境,make
[root@tianqinwei ~]# yum install -y gcc gcc-c++ make

<3> 解压(一般情况下解压到/usr/local/src目录下)
[root@tianqinwei ~]# tar xf wget2-2.0.0.tar.gz -C /usr/local/src/

<4> 配置 --- ./configure(针对当前系统的软硬件环境,配置好安装参数)
(一些新软件使用的是cmake方式。)
[root@tianqinwei ~]# cd /usr/local/src/wget2-2.0.0/ --- 进入到当前解压路径
[root@tianqinwei wget2-2.0.0]# ./configure --help --- 查看帮助
--prefix=PREFIX --- 安装路径,默认安装在[/usr/local]
--bindir=DIR --- 指定用户可执行的命令放置位置,默认放在[/usr/local/bin]
--sysconfdir=DIR --- 指定配置文件,默认放在[/usr/local/etc]
[root@tianqinwei wget2-2.0.0]# ./configure --- 直接全部用默认值,按回车
报错:configure: WARNING: *** GNUTLS was not found. Fallback to libnettle for hashing and checksumming.
错误处理:安装gnutls-devel.i686(缺少gnutls-devel.i686开发包)
[root@tianqinwei wget2-2.0.0]# yum list | grep gnutls --- 查找gnults-devel.i686
[root@tianqinwei wget2-2.0.0]# yum install gnutls-devel -y --- 安装
[root@tianqinwei wget2-2.0.0]# ./configure --- 再次执行无报错,进行下一步

<5> 编译make(一般如果make报错,需从./configure开始执行。只要解决报错,都得返回从./configure开始执行)
[root@tianqinwei wget2-2.0.0]# make

<6> 安装make install
[root@tianqinwei wget2-2.0.0]# make install

<7> 查看
[root@tianqinwei ~]# whereis wget2 --- 查看路径
wget2: /usr/local/bin/wget2
[root@tianqinwei ~]# wget2 -V --- 查看版本
GNU Wget2 2.0.0 - multithreaded metalink/file/website downloader

<8> 检查是否可用



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Linux 软件管理的重点可以归纳为以下几个方面: 1. 包管理器:Linux 发行版通常都提供了包管理器来管理软件安装和升级。常见的包管理器有 apt (Debian/Ubuntu),yum/dnf (Red Hat/CentOS/Fedora),zypper (openSUSE),pacman (Arch Linux) 等。通过包管理器,你可以方便地搜索、安装、升级和卸载软件包。 2. 依赖管理Linux 软件通常有依赖关系,依赖管理是确保软件能够正确运行的关键。包管理器可以自动解决软件包依赖关系,并自动安装所需的依赖项。如果你手动下载软件包,可能需要手动解决依赖关系。 3. 软件管理:包管理器从软件源中获取软件包。软件源是存储软件包的服务器或镜像站点。你可以配置包管理器使用特定的软件源。合理选择软件源可以提高下载速度和软件包的更新频率。 4. 软件仓库:除了官方软件源外,许多 Linux 发行版还提供了额外的软件仓库,如 Ubuntu 的 Universe、Multiverse,Fedora 的 RPM Fusion 等。这些仓库提供了更多的软件选择,但需要手动添加并更新。 5. 编译和源码管理:有些软件可能没有预编译的软件包可用,你需要手动编译源代码。在这种情况下,你需要了解如何使用编译器、解决编译依赖关系,并配置编译选项。 6. 软件更新与安全性:及时更新软件是保持系统安全和稳定的重要措施。包管理器可以轻松地进行系统和软件包的更新。确保及时启用自动更新功能,并定期检查和安装可用的安全更新。 以上是 Linux 软件管理的一些重点。不同的发行版可能有细微的差异,但核心原则是相似的。熟悉你所使用的发行版的软件管理工具和流程,可以更好地管理和维护你的 Linux 系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨天_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值