linux包管理之YUM
听我讲个故事

https://wiki.centos.org/SpecialInterestGroup CentOS官方推荐源

在 Red Hat 企业 Linux(RHEL) 上,提供那些早已老掉牙的软件已经是企业级软件厂商的传统了。这倒不是因为他们懒,而确实是用户需要。很多公司像看待家具一样看待软件:我买一张桌子,能用一辈子,软件不应该也这样吗?CentOS 作为 RHEL 的复制品有着同样的遭遇。虽然 Red Hat 还在为这些被厂商抛弃的过时软件提供支持、修补安全漏洞等,但如果你的应用依赖新版软件,你就得想办法了。 我在这个问题上不止一次碰壁。 LAMP 组合里任一个组件都需要其它所有组件能与其兼容,这有时就显得很麻烦。 比如说去年我就被 RHEL/CentOS 折腾得够呛。REHL/CentOS 第 6 版最高支持 PHP 5.3 ,第 7 版支持到 PHP 5.4 。而 PHP 5.3 早在 2014 年 8 月就到达 EOL(End Of Life) ,不再被厂商支持了, PHP 5.4 的 EOL 在 2015 年 9 月, 5.5 则是 2016 年 7 月。 有太多古老的软件版本,包括 MySQL、Python 等,它们应该像木乃伊一样被展示在博物馆里,但它们却活在你的系统上。

那么,可怜的管理员们该怎么办呢?如果你跑着 RHEL/CentOS ,那应该先试试 [Software Collections],因为这是 Red Hat 唯一支持的新软件包源。 Software Collections 为 CentOS 设立了专门的仓库,安装和管理都和其它第三方仓库一样。但如果你用的是 RHEL 的,情况就有点不同了,具体请参考 RHEL 的解决方法。Software Collections 同样支持 Fedora 和 Scientific Linux 。

在 Enterprise Linux 中启用 ELRepo与yum安装方式基本与安装epel-release一致.

配置源

 

最少配置为以下3个配置段

源名称定义

源地址

gpg key 校验

 

常见的官方指定源及第3方维护源

官方推定来源

repo namelinks
Repositories listhttps://wiki.centos.org/AdditionalResources/Repositories
EPEL:Extra Packages for Enterprise Linuxhttps://fedoraproject.org/wiki/EPEL
k8s from Aliyun Mirrorshttps://developer.aliyun.com/mirror/kubernetes
remi [php & mysql ]https://mirrors.tuna.tsinghua.edu.cn/remi/
nginxhttp://nginx.org/en/linux_packages.html
docker-ce-stablehttps://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/

推荐的第三方汇总整理版

https://centos.pkgs.org 使用:点击任意一个包,最终下载地址的下方将提供安装使用方式

EPEL

强大的 Fedora 社区为 Feora 及所有 RHEL 系的发行版维护着 EPEL:Extra Packages for Enterprise Linux 。 里面包含一些最新软件包以及一些未被发行版收纳的软件包。安装 EPEL 里的软件就不用麻烦 enable 脚本了,直接像平常一样用。你还可以用 –disablerepo 和 –enablerepo 选项指定从 EPEL 里安装软件包:

ELRepo 频道

Goto http://elrepo.org/ ,find Everything about ELRepo

 

ELRepo, an RPM repository for Enterprise Linux packages. ELRepo supports Red Hat Enterprise Linux (RHEL) and its derivatives (Scientific Linux, CentOS & others).

The ELRepo Project focuses on hardware related packages to enhance your experience with Enterprise Linux. This includes filesystem drivers, graphics drivers, network drivers, sound drivers, webcam and video drivers.[译:涉及有支持的驱动:文件系统、图形、网络、声音]

 

ELRepo 共分为 4 个独立频道:

默认情况下,elrepo-testing 和 elrepo-kernel 都被禁用,如果我们需要从中安装或更新软件包,可以像 elrepo-extras 那样启用它们。

要列出每个频道中的可用软件包,请运行以下命令之一:

 

yum --disablerepo="*" --enablerepo="elrepo" list available
yum --disablerepo="*" --enablerepo="elrepo-extras" list available
yum --disablerepo="*" --enablerepo="elrepo-testing" list available
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

 

RPM软件包管理

Red-Hat Package Manager

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包]--file
rpm -qpR  file.rpm       #[查看包]依赖关系
rpm2cpio file.rpm |cpio -div    #[抽出文件]
rpm -ivh file.rpm  #[安装新的rpm]--install--verbose--hash
rpm -ivh [url]http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm[/url]
rpm -Uvh file.rpm    #[升级一个rpm]--upgrade
rpm -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=+       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 file
RPM源代码包装安装
.src.rpm结尾的文件,这些文件是由软件的源代码包装而成的,用户要安装这类RPM软件包,必须使用命令:
rpm --recompile vim-4.6-4.src.rpm   #这个命令会把源代码解包并编译、安装它,如果用户使用命令:
rpm --rebuild vim-4.6-4.src.rpm  #在安装完成后,还会把编译生成的可执行文件重新包装成i386.rpm的RPM软件包。

查看包内文件清单

查看包详细说明

 

扩展

自2001年起,联合国教科文组织正式启用“Free and Open Source Software”(简称“FOSS”)官方术语,在观念上前进了一大步,避开了一些哲学争执。“FOSS”的中译文是“自由及开源软件”。我们认为,“FOSS”术语的启用是科学的、准确的、令人不致发生误解。实际上,“开源”(Open Source)一词,在中国的实际使用情况相当混乱,往往被某些商业化操作所利用。

花点时间学着做个蒸鸡蛋吧!!

 

附录引用