程序包管理器

目录

1 软件包

1.1 软件包介绍

1.2 软件包中文件的分类

2 Red Hat系

2.1 rpm

2.2 yum

2.3 dnf

3 Debian系

3.1 dpkg

3.2 apt

4 配置私有YUM仓库

4.1 Server端配置

4.2 Client端配置

5  写一个一键安装脚本用于安装httpd


1 软件包

1.1 软件包介绍

开源软件最初只提供了打包的源码文件,GNU/Linux用户必须自己编译每个想在系统上运行的软件。因此用户需要一种更加便利的方式来管理这些软件。当Debian诞生时,这样的一个管理工具——dpkg——也就应运而生,可以用来管理扩展名为deb的“包”文件。至此著名的“Package”概念第一次出现在GNU/Linux中,稍后RedHat公司才开发自己的rpm包管理系统。

1.2 软件包中文件的分类

软件包中的文件主要分为以下四类:

  • 二进制文件
  • 库文件
  • 配置文件
  • 帮助文件

2 Red Hat系

2.1 rpm
Usage: rpm [OPTION...] [Package]

Options:
-i    安装指定套件
-v    显示执行过程
-h    显示安装进度
-q    查找包文件
-a    查询所有套件

#安装httpd-2.4.37
[root@localhost ~]# rpm -ivh /media/AppStream/Packages/h/httpd-2.4.37-47.module+el8.6.0+823+f143cee1.1.x86_64.rpm

#查询是否安装vim
[root@localhost ~]# rpm -qa | grep vim
vim-common-8.0.1763-16.el8_5.13.x86_64
vim-minimal-8.0.1763-16.el8_5.13.x86_64
vim-enhanced-8.0.1763-16.el8_5.13.x86_64
vim-filesystem-8.0.1763-16.el8_5.13.noarch
[root@localhost ~]# 

#查询包的详细信息
rpm -qpi    查看未安装的包的详细信息
rpm -qi     查看安装的包的详细信息(新版的系统也能用于查询未安装的包)

#rpm包升级
rpm -Uvh <package_file>    安装有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”
rpm -Fvh <package_file>    安装有旧版程序包,则“升级”,如果不存在旧版程序包,则不执行升级操作
2.2 yum
语法: yum [options] [COMMAND] [package ...]

常用选项:
yum clean all           清除缓存目录下的软件包及旧的headers
yum makecache           生成索引缓存
yum update              更新所有软件
yum list                列出所有可安装的软件
yum install <package>   安装指定的软件,若仓库中有多个相同的软件包,默认安装最新版
yum remove <package>    删除软件包
yum serch <keyword>     查找软件包
yum whatprovides        查找命令在那个安装包中
yum repolist            查看当前配置的YUM仓库
2.3 dnf

dnf是在CentOS8之后出现的用于替代yum的包管理工具,不过dnf保留了和yum的兼容性,配置也是通用的。

#很明显,yum和dnf的语法和参数是一样的,故此不再赘述
[root@localhost ~]# ll `which yum`       
lrwxrwxrwx. 1 root root 5 May 10  2022 /usr/bin/yum -> dnf-3
[root@localhost ~]# 

3 Debian系

3.1 dpkg
Usage: dpkg [options] [action] [package_name ...]

Options:
-i    安装软件包
-r    删除包,但不删除配置文件
-P    删除包,且删除被指文件
-l    列出所有已安装的包
-s    查看详细信息
-L    查看软件包安装的文件
-S    查找文件来自于那个包
3.2 apt
Usage: apt [options] [command] [package ...]

常用选项:
sudo apt update                    列出所有可更新的软件清单
sudo apt install <package_name>    安装指定的包
sudo apt remove <package_name>     删除软件包
sudo apt search <ketword>          查找软件包
apt list --installed               列出所有已安装的包

4 配置私有YUM仓库

4.1 Server端配置

注:若使用本地源配置跳至第三步

第一步 配置server的yum仓库(此处使用上海交大镜像源)

[root@linux1 ~]# cd /etc/yum.repos.d/
[root@linux1 yum.repos.d]# mkdir bak
[root@linux1 yum.repos.d]# mv * bak
mv: cannot move 'bak' to a subdirectory of itself, 'bak/bak'
[root@linux1 yum.repos.d]# vim download.repo
[root@linux1 yum.repos.d]# cat download.repo
[AppStream]
name=Rocky Linux $releasever - AppStream
baseurl=https://mirror.sjtu.edu.cn/rocky/8/AppStream/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

[BaseOS]
name=Rocky Linux $releasever - BaseOS
baseurl=https://mirror.sjtu.edu.cn/rocky/8/BaseOS/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

[extras]
name=Rocky Linux $releasever - extras
baseurl=https://mirror.sjtu.edu.cn/rocky/8/extras/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[root@linux1 yum.repos.d]# 

第二步 创建YUM源的存放目录

mkdir -p /var/www/html/Rocky/8

第三步 

若使用的是本地源则直接复制

mount /dev/sr0 /media/Rocky
cp -r /media/Rocky/AppStream/ /var/www/html/Rocky/8
cp -r /media/Rocky/BaseOS/ /var/www/html/Rocky/8

若使用的不是本地源则将包下载到本地

dnf reposync --repoid=AppStream --download-metadata -p /var/www/html/Rocky/8
dnf reposync --repoid=BaseOS --download-metadata -p /var/www/html/Rocky/8
dnf reposync --repoid=extras --download-metadata -p /var/www/html/Rocky/8

第四步 配置http

#安装httpd
[root@linux1 yum.repos.d]# yum -y instsall httpd

#设置开机自启动
[root@linux1 yum.repos.d]# systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@linux1 yum.repos.d]#

#关闭selinux、防火墙放行http服务
[root@linux1 yum.repos.d]# setenforce 0
[root@linux1 yum.repos.d]# firewall-cmd --add-service=http
success
[root@linux1 yum.repos.d]# firewall-cmd --add-service=http --permanent 
success
[root@linux1 yum.repos.d]# firewall-cmd --reload
success
[root@linux1 yum.repos.d]# 
4.2 Client端配置

配置yum仓库

[root@linux2 yum.repos.d]# cd
[root@linux2 ~]# cd /etc/yum.repos.d/
[root@linux2 yum.repos.d]# mkdir bak
[root@linux2 yum.repos.d]# mv * bak
mv: cannot move 'bak' to a subdirectory of itself, 'bak/bak'
[root@linux2 yum.repos.d]# vim private.repo
[root@linux2 yum.repos.d]# cat private.repo
[AppStream]
name=Rocky Linux $releasever - AppStream
baseurl=http://192.168.2.100/Rocky/8/AppStream/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

[BaseOS]
name=Rocky Linux $releasever - BaseOS
baseurl=http://192.168.2.100/Rocky/8/BaseOS/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

[extras]
name=Rocky Linux $releasever - extras
baseurl=http://192.168.2.100/Rocky/8/Extras/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[root@linux2 yum.repos.d]# 

测试

[root@linux2 yum.repos.d]# ls
bak  private.repo
[root@linux2 yum.repos.d]# yum clean all
25 files removed
[root@linux2 yum.repos.d]# yum makecache
Rocky Linux 8 - AppStream                  65 MB/s | 8.4 MB     00:00    
Rocky Linux 8 - BaseOS                     74 MB/s | 2.6 MB     00:00    
Rocky Linux 8 - extras                    1.1 MB/s |  14 kB     00:00    
Metadata cache created.
[root@linux2 yum.repos.d]# 

5  写一个一键安装脚本用于安装httpd

要求如下:

  1. 基于位置变量传递版本号
  2. 基于独立函数进行初始化步骤,禁用防火墙,安装开发依赖包
  3. 基于独立函数进行下载包,解压包
  4. 基于独立函数进行编译,安装包
  5. 基于独立函数完成链接包
  6. 启动服务,并输出自定义的语句,安装xxx服务

脚本如下:

#!/bin/bash
#输入要下载的httpd的版本
read -p "Enter the version of httpd you want to install (default is 2.4.58):" HTTP_VERSION
if [ ! -n "${VERSION}" ]; then
        HTTP_VERSION=2.4.58
        FILE_NAME=httpd-2.4.58.tar.gz
else
        FILE_NAME=httpd-${HTTP_VERSION}.tar.gz
fi

#判断系统
. /etc/os-release
if [[ $ID =~ rhel|rocky|centos ]]; then
        systemctl stop firewalld
        echo "Start installing development dependency packages..."
        yum -y install wget gcc make apr-devel apr-util-devel openssl-devel pcre-devel redhat-rpm-config && echo "The development dependency package is installed!" || { echo "fail to install!"; exit; }
elif [ $ID == ubuntu ]; then
        apt update
        echo "Start installing development dependency packages..."
        apt -y install wget gcc make libapr1-dev libaprutil1-dev libpcre3-dev libssl-dev && echo "The development dependency package is installed!" || { echo "fail to install!"; exit; } 
else
        echo "The operating system is not supported!" && exit
fi

#下载和解压tar
if [ ! -f ${FILE_NAME} ]; then
        echo "Start downloading and unzipping httpd..."
        wget https://archive.apache.org/dist/httpd/${FILE_NAME} || { echo "fail to download!"; exit; }
fi
tar -xzf ${FILE_NAME} -C /usr/local/src
echo "Decompression complete!"

#安装httpd
echo "Start compiling and installing httpd..."
cd /usr/local/src/httpd-${HTTP_VERSION}
./configure --prefix=/apps/httpd --enable-ssl --disable-status
make
make install
if [ ! -L /usr/local/bin/apachectl ]; then
        ln -s /apps/httpd/bin/apachectl /usr/local/bin
fi
apachectl start && echo "The installation was successful!" || echo "Gou  fu gui wu xiang wang!!!"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值