Linux下软件包安装(rpm,yum,源代码)
1) Rpm包管理安装
2) Yum包程序管理器
3) 本地Yum仓库建制
=======================================
1) Rpm包管理安装
a、RPM包的管理用途
1、可以安装,删除,升级和管理安装软件
2、检查安装包的依赖关系
3、管理RPM包安装的文件(二进制程序,帮助文件,配置文件)
4、校验来源合法性和软件包完整性
5、RPM以数据库方式存储RPM包安装信息(RPM包数据库位置:/var/lib/rpm)
[root@ns1 ~]# ll /var/lib/rpm/ #当如下数据库出现问题很多RPM包查询命令会出现问题 total 29968 -rw-r--r--. 1 root root 1536000 Jun 6 00:47 Basenames -rw-r--r--. 1 root root 12288 Jun 5 12:00 Conflictname -rw-r--r-- 1 root root 24576 Jun 6 00:47 __db.001 -rw-r--r-- 1 root root 229376 Jun 6 00:47 __db.002 -rw-r--r-- 1 root root 1318912 Jun 6 00:47 __db.003 -rw-r--r-- 1 root root 753664 Jun 6 00:47 __db.004 -rw-r--r--. 1 root root 323584 Jun 6 00:47 Dirnames -rw-r--r--. 1 root root 2490368 Jun 6 00:47 Filedigests -rw-r--r--. 1 root root 12288 Jun 6 00:47 Group -rw-r--r--. 1 root root 12288 Jun 6 00:47 Installtid -rw-r--r--. 1 root root 24576 Jun 6 00:47 Name -rw-r--r--. 1 root root 12288 Jun 6 00:47 Obsoletename -rw-r--r--. 1 root root 23293952 Jun 6 00:47 Packages -rw-r--r--. 1 root root 1343488 Jun 6 00:47 Providename -rw-r--r--. 1 root root 614400 Jun 6 00:47 Provideversion -rw-r--r--. 1 root root 12288 Feb 21 21:05 Pubkeys -rw-r--r--. 1 root root 196608 Jun 6 00:47 Requirename -rw-r--r--. 1 root root 94208 Jun 6 00:47 Requireversion -rw-r--r--. 1 root root 45056 Jun 6 00:47 Sha1header -rw-r--r--. 1 root root 24576 Jun 6 00:47 Sigmd5 -rw-r--r--. 1 root root 12288 Jun 4 08:39 Triggername [root@ns1 ~]# Database options: --initdb initialize database # RPM包数据库初始化 --rebuilddb rebuild database inverted lists from installed package headers #RPM包数据库重建
b、RPM包简单使用
1、查询单个软件包:
[root@ns1 ~]# rpm -q httpd httpd-2.2.15-45.el6.centos.x86_64 [root@ns1 ~]#
2、查询所有软件包
[root@ns1 ~]# rpm -qa | grep httpd #显示太多通过管道送给grep过滤 httpd-2.2.15-45.el6.centos.x86_64 httpd-tools-2.2.15-45.el6.centos.x86_64 [root@ns1 ~]#
3、查询安装包简要信息
[root@ns1 ~]# rpm -qi httpd Name : httpd Relocations: (not relocatable) Version : 2.2.15 Vendor: CentOS Release : 45.el6.centos Build Date: Fri 24 Jul 2015 07:53:33 PM CST Install Date: Sun 21 Feb 2016 09:13:02 PM CST Build Host: c6b9.bsys.dev.centos.org Group : System Environment/Daemons Source RPM: httpd-2.2.15-45.el6.centos.src.rpm Size : 3090869 License: ASL 2.0 Signature : RSA/SHA1, Sat 25 Jul 2015 04:42:58 AM CST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://httpd.apache.org/ Summary : Apache HTTP Server Description : The Apache HTTP Server is a powerful, efficient, and extensible web server. [root@ns1 ~]#
4、查询安装包安装的文件目录
[root@ns1 ~]# rpm -ql httpd | grep "^/etc" /etc/httpd /etc/httpd/conf /etc/httpd/conf.d /etc/httpd/conf.d/README /etc/httpd/conf.d/welcome.conf /etc/httpd/conf/httpd.conf /etc/httpd/conf/magic /etc/httpd/logs /etc/httpd/modules /etc/httpd/run /etc/logrotate.d/httpd /etc/rc.d/init.d/htcacheclean /etc/rc.d/init.d/httpd /etc/sysconfig/htcacheclean /etc/sysconfig/httpd [root@ns1 ~]#
5、查询某一个文件是由那个安装程序所创建
[root@ns1 ~]# rpm -qf `which ss` #ss程序就是由iproute这个程序包安装的 iproute-2.6.32-45.el6.x86_64 [root@ns1 ~]#
6、查询包安装之后生成的帮助文档
[root@ns1 ~]# rpm -qd httpd
7、查询包安装之后生成的配置文件
[root@ns1 ~]# rpm -qc httpd
8、查询包安装的脚本
[root@ns1 ~]# rpm -q --scripts httpd #安装脚本分类 #preinstall:安装前脚本 #postinstall:安装后脚本 #preuninstall:卸载前脚本 #posttrans:卸载后脚本
9、查询包未安装之前的信息
[root@ns1 ~]# rpm -qpl httpd-2.2.15-45.el6.centos.x86_64.rpm #在RPM包未安装之前,可以参考已安装RPM包的查询命令,加入p参数,查看RPM包相同信息 [root@ns1 ~]# rpm -qpi httpd-2.2.15-45.el6.centos.x86_64.rpm
10、RPM包升级
rpm -U :升级或安装 #常用组合 rpm -Uvh rpm -F :升级 #常用组合 rpm -Fvh --nodeps #忽略包的依赖关系 --force #强行安装
11、RPM包安装
rpm -i #常用组合 rpm -ivh
12、RPM包卸载
rpm -e #卸载RPM包
2) Yum包程序管理器(Yellowdog Update Modifier)
Yum是一个非常便捷的程序包管理器,解决包的依赖关系,工作方式通过文件服务器共享RPM包,并且对RPM包建立数据库方式管理,是基于C/S架构,客户端只需要简单配置,即可链接到YUM仓库服务,安装升级卸载RPM程序包。
1、repository:(YUM仓库)
a、包含RPM程序包
b、解决依赖关系
c、程序包安装后所能够生成文件列表等元数据信息
d、RPM包组
e、支持:ftp,http,file,nfs等协议
2、yum客户端
a、通过配置文件指定各个可用的YUM仓库
b、缓存YUM仓库里的元数据信息到本地,并分析元数据,检查可能包含的依赖关系
c、执行具体操作(安装,升级,卸载,查询等)
3、yum客户端使用
check Check for problems in the rpmdb check-update Check for available package updates clean Remove cached data #清空缓存信息 deplist List a package's dependencies distribution-synchronization Synchronize installed packages to the latest available versions downgrade downgrade a package erase Remove a package or packages from your system #卸载安装包 groupinfo Display details about a package group #查看包组信息 groupinstall Install the packages in a group on your system #安装包组 grouplist List available package groups #查看包组列表信息 groupremove Remove the packages in a group from your system #卸载包组 help Display a helpful usage message history Display, or use, the transaction history info Display details about a package or group of packages #查看包或者包组的信息 install Install a package or packages on your system #安装包 list List a package or groups of packages #列出YUM仓库包列表 load-transaction load a saved transaction from filename makecache Generate the metadata cache #重新生成元数据缓存(去YUM服务器更新) provides Find what package provides the given value reinstall reinstall a package #重新安装程序 repolist Display the configured software repositories #列出可用的YUM仓库源 resolvedep Determine which package provides the given dependency search Search package details for the given string #搜索YUM仓库特定的包 shell Run an interactive yum shell update Update a package or packages on your system #更新包或这包组 upgrade Update packages taking obsoletes into account version Display a version for the machine and/or available repos. ========选项======== Options: -h, --help show this help message and exit -t, --tolerant be tolerant of errors -C, --cacheonly run entirely from system cache, don't update cache -c [config file], --config=[config file] config file location -R [minutes], --randomwait=[minutes] maximum command wait time -d [debug level], --debuglevel=[debug level] debugging output level --showduplicates show duplicates, in repos, in list/search commands -e [error level], --errorlevel=[error level] error output level --rpmverbosity=[debug level name] debugging output level for rpm -q, --quiet quiet operation -v, --verbose verbose operation -y, --assumeyes answer yes for all questions --assumeno answer no for all questions --version show Yum version and exit --installroot=[path] set install root --enablerepo=[repo] enable one or more repositories (wildcards allowed) --disablerepo=[repo] disable one or more repositories (wildcards allowed) -x [package], --exclude=[package] exclude package(s) by name or glob --disableexcludes=[repo] disable exclude from main, for a repo or for everything --obsoletes enable obsoletes processing during updates --noplugins disable Yum plugins --nogpgcheck disable gpg signature checking --disableplugin=[plugin] disable plugins by name --enableplugin=[plugin] enable plugins by name --skip-broken skip packages with depsolving problems --color=COLOR control whether color is used --releasever=RELEASEVER set value of $releasever in yum config and repo files --downloadonly don't update, just download --downloaddir=DLDIR specifies an alternate directory to store packages --setopt=SETOPTS set arbitrary config and repo options
4、yum客户端配置文件
[root@case1 ~]# vi /etc/yum.conf [main] #主配置段 cachedir=/var/cache/yum/$basearch/$releasever #缓存目录,两个宏:$basearch表示基本平台架构,$releaserver表示发型版本 keepcache=0 #是否保存通过YUM安装的软件包 0:表示不保存,1:表示保存,在缓存目录可以找到我们通过YUM安装的包 debuglevel=2 logfile=/var/log/yum.log #日志保存位置 exactarch=1 obsoletes=1 gpgcheck=1 #pgp密钥检查 plugins=1 #YUM插件 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_pag e.php?category=yumdistroverpkg=centos-release [root@case1 ~]# vi /etc/yum.repos.d/local.repo #实验环境,自己搭建本地YUM源 [CentOS-Intranet] #YUM仓库名字,在使用yum repolist可以看到的仓库名字,不能与其他YUM仓库源名字相同 name=Centos-Server-192.168.3.10-Base #描述信息,随便写 baseurl=http://192.168.3.10/Packages/ #yum仓库链接,这里采用的是http方式,如果是file,格式应该是file:///media/Packages/,看见repodata目录就是仓库的位置 enabled=1 #是否启用,1表示开始,0表示关闭 gpgchechk=0 #检查包的合法性,1表示开启,0表示关闭 cost=1000 #开销值,我这里优先级设置是本地最优先,默认值1000,第二是epel源,第三是Centos网络源,越小越优先 [epel] #网络EPEL源 name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 #公钥存放的路径,可以是本地,也可以是远端服务器 cost=2000 [CentOS-Internet] #Centos官方站点源 name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 cost=3000
3) 本地Yum仓库建制
我们安装Centos Linux系统,通常是采用最小化安装(安装的软件包非常小,200多个RPM包),我们本地做实验,经常要安装各类工具,编译环境,经常需要安装卸载程序包,网络太慢,所以自建一个YUM仓库非常有必要。
采用Centos 6.7版本安装,CentOS-6.7-x86_64-bin-DVD1.iso,CentOS-6.7-x86_64-bin-DVD2.iso,通常DVD2存放的的软件,我们需要这个版本的所有ISO里面的软件
下载地址:
安装环境:
[root@ns1 ~]# rpm -q httpd #本机已经安装http,查看, 如果没有可以通过挂载光盘安装 httpd-2.2.15-45.el6.centos.x86_64 [root@ns1 ~]# service httpd status #检查httpd运行状态 httpd (pid 1592) is running... [root@ns1 ~]# service iptables status #检查关闭防火墙 iptables: Firewall is not running. [root@ns1 ~]# getenforce #检查关闭selinux Disabled [root@ns1 ~]#
准备RPM
[root@ns1 ~]#mkdir /var/www/html/Packages #rpm包安装httpd的默认工作目录 [root@ns1 ~]# mount /dev/cdrom /media/ #挂载光盘文件 mount: block device /dev/sr0 is write-protected, mounting read-only [root@ns1 ~]# cp /media/Packages/* /var/www/html/Packages/ #拷贝光盘文件中的RPM包到HTTP工作目录下的Packages目录下
安装createrepo
[root@ns1 ~]# rpm -q createrepo #检查安装createrepo程序,用于生成YUM仓库元数据信息 createrepo-0.9.9-22.el6.noarch [root@ns1 ~]#
生成YUM仓库元数据
准备comps.xml文件,comps.xml文件是程序包组元数据文件,我们需要利用光盘中自带的comps.xml文件,生成我们本地comps.xml文件
[root@ns1 ~]# createrepo -o /var/www/html/Packages/ -g /media/repodata/4df092633ebecaeebdd78359a11a3c13f619f22605322e15e5e307beebd8e641-c6-x86_64-comps.xml /var/www/html/Packages/Spawning worker 0 with 6575 pkgs #-o指定生成的元数据信息存放位置,-g指定包组元数据信息(这个文件是ISO光盘镜像中,是原先存放ISO中包组元数据信息),最后一个目录则是指定RPM包目录,根据此目录下的RPM生成各类元数据信息 Workers Finished Gathering worker results Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete #YUM仓库元数据信息生成完成 [root@ns1 ~]#
YUM客户端测试
[root@case1 ~]# yum repolist #识别到各个YUM仓库源,可以正常安装RPM包组软件和RPM包软件 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * epel: ftp.cuhk.edu.hk * CentOS-Internet: ftp.sjtu.edu.cn repo id repo name status CentOS-Intranet Centos-Server-192.168.3.10-Base 6,575 epel Extra Packages for Enterprise Linux 6 - x86_64 12,125 CentOS-Internet CentOS-6 - Base 6,696 repolist: 25,396 [root@case1 ~]#
原创文章,作者:nice_neo_linux,如若转载,请注明出处:http://www.178linux.com/18068