软件包就是将应用程序、配置文件和数据打包的产物,所有的linux发行版都采用了某种形式的软件包系统,这使得linux软件管理和在windows下一样方便。suse、red hat、fedora等发行版都是用rpm包,Debian和Ubuntu则使用.deb格式的软件包。
1. Linux程序包管理器,几个发行版本
debian/Ubuntu:dpt、dpkg、deb
redhat:rpm
suse:rpm
2. 获取程序包
1)开源镜像站:
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
2)epel,提供centos众多额外的第三方包,可信任的第三方软件包组织
如:http://mirrors.sohu.com/fedora-epel/7/x86_64/Packages/
https://mirrors.aliyun.com/epel/7/x86_64/Packages/m/
3. rpm命令
rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
# i表示安装 v显示详细过程 h以进度条显示,每个#表示进度
rpm -ivh filename.rpm 安装软件的命令格式
rpm -Uvh filename.rpm 升级软件的命令格式
rpm -e filename.rpm 卸载软件的命令格式
rpm -qpi filename.rpm 查询软件描述信息的命令格式
rpm -qpl filename.rpm 列出软件文件信息的命令格式
rpm -qf filename 查询文件属于哪个 RPM 的命令格式
4.软件包依赖关系
yum工具可以自动搜索依赖关系,并执行安装。rpm软件包在安装的时候,由作者定义依赖关系。
一些自动解决依赖关系软件包管理器:
yum:红帽系列rpm包管理工具
apt-get:deb包管理工具
zypper:suse的rpm包管理工具
yum软件仓库可以根据用户的要求分析出所需要的软件包及其相关的依赖关系,然后自动从服务器上下载软件包并安装到系统。
yum的基本工作机制:
服务端:在服务器上存放了所有RPM软件包,然后以相关的功能区分析每个RPM文件的依赖关系,将这些数据记录成文件存放在服务器的某个特定目录内。
客户端:如果需要安装某个软件,先下载服务器上面记录的依赖性关系文件,通过对服务器端下载的记录数据进行分析,然后取得所有相关软件,一次全部下载下来进行安装。
yum仓库:存储了众多的软件包,以及相关的元数据文件
文件服务器:ftp:// http:// nfs:// file://
yum源的配置文件:/etc/yum.conf
repo仓库文件:/etc/yum.repos.d/CentOS-Base.repo
5. 配置yum源
镜像源地址:http://mirrors.163.com/
第一步:备份现有的repo仓库
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
第二步:下载新的repo源文件
CentOS6:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS7:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
CentOS8:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
第三步:清空缓存,生成新的缓存
yum clean all
yum makecache
第四步:使用阿里镜像源,出现不能解析地址的信息,可通过以下方法修改相关配置
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
第五步:配置epel源
epel(RHEL 7)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
epel(RHEL 6)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
实践: 如何使用光盘当作本地yum仓库:
第一步:挂载光盘至某目录,例如/media/cdrom
mount -r -t iso9660 /dev/cdrom /media/cdrom
第二步: 创建配置文件
[base]
name=CentOS-Base
baseurl=file://media/cdrom
gpgcheck=1
enabled=0
6. yum命令
yum命令的用法:
yum [options] [command] [package ...]
显示仓库列表:
yum repolist [all|enabled|disabled]
显示程序包:
list
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
安装程序包:
yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] (重新安装)
升降级程序包:
yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...]
检查可用升级:
yum check-update
卸载程序包:
yum remove | erase package1 [package2] [...]
查看程序包information:
yum info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
yum clean [headers|packages|metadata|dbcache|plugins|expire-cache|all]
构建缓存:
yum makecache
搜索:
yum search string1 [string2] [...] 以指定的关键字搜索程序包名及summary信息;
查看指定包所依赖的capabilities:
yum deplist package1 [package2] [...]
查看yum事务历史:
yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安装及升级本地程序包:
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
包组管理的相关命令:
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
yum的命令行选项:
--nogpgcheck:禁止进行gpg check;
-y: 自动回答为“yes”;
-q:静默模式;
--disablerepo=repoidglob:临时禁用此处指定的repo;
--enablerepo=repoidglob:临时启用此处指定的repo;
--noplugins:禁用所有插件
Ubuntu软件管理
dpkg常见用法: man dpkg
dpkg -i package.deb 安装包
dpkg -r package 删除包,不建议,不自动卸载依赖于它的包
dpkg -P package 删除包(包括配置文件)
dpkg -l 列出当前已安装的包,类似rpm -qa
dpkg -l package 显示该包的简要说明,类似rpm –qi
dpkg -L package 列出该包中所包含的文件,类似rpm –ql
dpkg -S <pattern> 搜索包含pattern的包,类似rpm –qf
dpkg -s package 列出该包的状态,包括详细信息,类似rpm –qi
dpkg --configure package 配置包,-a 使用,配置所有没有配置的软件包
dpkg -c package.deb 列出 deb 包的内容
dpkg示例:
列出系统上安装的所有软件包
dpkg -log
列出软件包安装的文件
dpkg -L bash
查看/bin/bash来自于哪个软件包
dpkg -S /bin/bash
安装本地的 .deb 文件
dpkg -i /mnt/cdrom/pool/main/z/zip/zip_3.0-11build1_amd64.deb
卸载软件包
dpkg -r zip
apt命令:
apt与apt-get命令对比:
apt 命令 被取代的命令 命令的功能
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt update apt-get update 刷新存储库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt autoremove apt-get autoremove 自动删除不需要的包
apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
apt search apt-cache search 搜索应用程序
apt show apt-cache show 显示安装细节
apt 特有的命令:
apt list 列出包含条件的包(已安装,可升级等)
apt edit-sources 编辑源列表
apt命令操作(如安装和删除软件包)记录在/var/log/dpkg.log日志文
APT包索引来自/etc/apt/sources.list文件和/etc/apt/sources.list.d目录中定义的存储库的可用包的数据库。要使用存储库中所做的最新更改来更新本地程序包索引
安装包:
apt install tree zip
删除包:
apt remove tree zip
说明:apt remove中添加--purge选项会删除包配置文件,谨慎使用
更新包索引:
apt update
三、源代码编译安装
前提条件:准备好开发工具以及开发环境
开发工具:gcc ,make
开发组件: yum groupinstall "Development Tools"
yum groupinstall "Server Platform Development"
第一步:下载源码包,解压
第二步:进入目录,执行脚本configure文件
./configure --prefix=软件安装路径
第三步:执行make命令编译
make是Linux开发套件里面自动化编译的一个控制程序,它通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。一般情况下,它所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。
第四步:安装make install
四、yum安装与源码安装优缺点:
~/.profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件,通常存放清理工作的命令。
执行顺序
登陆shell
登陆shell时,首先执行/etc/profile,之后执行用户目录下的~/.profile,~/.profile中会执行~/.bashrc