yum详解

yum

YUM: Yellowdog Update Modifier,rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,up2date的替代工具

yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)

yum对软件包的管理机制

yum详解—–引用了鸟哥linux私房菜的图

yum配置文件

yum客户端配置文件:

/etc/yum.conf:为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:为仓库的指向提供配置

仓库指向的定义格式:

[repositoryID]
name=Some name for this repository
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=   $basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled={1|0}
gpgcheck={1|0}————-(相当于rpm -K 查找钥匙!)
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
enablegroups={1|0}
failovermethod={roundrobin|priority}
默认为:roundrobin,意为随机挑选;
cost=  默认为1000

意义:

  • [base]:代表容器的名字!中刮号一定要存在,里面的名称则可以随意取。但是不能有两个相同的容器名称, 否则 yum 会不知道得该到哪里去找容器相关软件列表档案。

  • name:只是说明一下这个容器的意义而已,重要性不高!

  • mirrorlist=:这个的意思是指定多个baseurl的文件路径,就能使用多个baseurl了;

  • baseurl=:这个最重要,因为后面接的就是容器的实际网址! mirrorlist 是由 yum 程序自行去捉映像站台, baseurl 则是指定固定的一个容器网址!我们刚刚找到的网址放到这里来啦!

  • enable=1:就是让这个容器被启动。如果不想启动可以使用 enable=0 !

  • gpgcheck=1:还记得 RPM 的数字签名吗?这就是指定是否需要查阅 RPM 档案内的数字签名!

  • gpgkey=:就是数字签名的公钥文件所在位置!使用默认值即可

其中 baseurl= 所指定的文件路径有三种
文件服务器:
ftp://
http://
file:/// —————(最后一个表示根/的意思)

注意在配置yum仓库的时候要到 /etc/yum.repos.d/ 里面 新建一个 *.repo 文件,然后把里面其他的 .repo 文件移走。这样才能使用你所配置的yum仓库文件。(文件不能有错误)!!

yum-config-manager —-一个能直接生成yum仓库 .repo的命令

生成 172.16.0.1_cobbler_ks_mirror_CentOS-X86_64_.repo

yum-config-manager  –add-repo= http://172.16.0.1/cobbler/ks_mirror/CentOS-Xx86_64/

  • yum-config-manager –disable “仓库名"  禁用仓库

  • yum-config-manager –enable “仓库名” 启用仓库

yum命令用法

语法:yum [options] [command] [package …]

安装: install package1 [package2] […]

install :后面接要安装的软件!

重新安装:reinstall package1 [package2] […] (重新安装)

update  :后面接要升级的软件,若要整个系统都升级,就直接 update 即可

显示程序包:yum list [all | glob_exp1] [glob_exp2] […]

list  :列出目前 yum 所管理的所有的软件名称不版本,有点类似 rpm -qa;

显示仓库列表:  repolist [all|enabled|disabled]

升级程序包:

update [package1] [package2] […]
downgrade package1 [package2] […] (降级

检查可用升级:yum  check-update

卸载程序包:  remove | erase package1 [package2] […]

卸载时也会把依赖于此的包也会卸载

查看程序包information:

info […]  类似 rpm -qai 的执行结果;

查看指定的特性(可以是某文件)是由哪个程序包所提供:provides | whatprovides feature1 [feature2] […]

provides:仍档案去搜寻软件!类似 rpm -qf 的功能!

搜索:search string1 [string2] […]

以指定的关键字搜索程序包名及summary信息

查看指定包所依赖的capabilities:

deplist package1 [package2] […]

清理本地缓存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

root@www ~]# yum clean [packages|headers|all]
选项
packages:将已下载的软件档案删除
headers :将下载的软件文件头删除
all  :将所有容器数据都删除!

构建缓存:

makecache

其他一些选项

  • -y :当 yum 要等待用户输入时,这个选项可以自动提供 yes 的响应;

  • –nogpgcheck:禁止进行gpg check

  • -q:静默模式

  • –disablerepo=repoidglob:临时禁用此处指定的repo

  • –enablerepo=repoidglob:临时启用此处指定的repo

  • –noplugins:禁用所有插件


例如列出 yum 服务器上面提供的所有软件名称

[root@www ~]# yum list
Installed Packages <==已安装软件
Deployment_Guide-en-US.noarch 5.2-9.el5.centos installed
Deployment_Guide-zh-CN.noarch 5.2-9.el5.centos installed
Deployment_Guide-zh-TW.noarch 5.2-9.el5.centos installed
....(中间省略)....
Available Packages <==还可以安装的其他软件
Cluster_Administration-as-IN.noarch 5.2-1.el5.centos base
Cluster_Administration-bn-IN.noarch 5.2-1.el5.centos base
....(底下省略)....
# 上面提供的意丿为:『 软件名称  版本  在那个容器内 』

列出目前服务器上可供本机进行升级的软件有哪些?

[root@www ~]# yum list updates  <==一定要是 updates !
Updated Packages
Deployment_Guide-en-US.noarch 5.2-11.el5.centos base
Deployment_Guide-zh-CN.noarch 5.2-11.el5.centos base
Deployment_Guide-zh-TW.noarch 5.2-11.el5.centos base
# 上面就列出在那个容器内可以提供升级的软件不版本!

列出提供 passwd 这个档案的软件有哪些

[root@www ~]# yum provides passwd
passwd.i386 : The passwd utility for setting/changing passwords using 
PAM
passwd.i386 : The passwd utility for setting/changing passwords using 
PAM
# 就是上面的这个软件提供了 passwd 这个程序!

删除已下载过的所有容器的相关数据 (含软件本身与列表)

[root@www ~]# yum clean all

如何使用光盘当作本地yum仓库:

(1) 挂载光盘至某目录,例如/media/cdrom
# mount /dev/cdrom /media/cdrom

(2) 创建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=


高级yum使用

 包组管理的相关命令:

语法  :[root@www ~]# yum [群组功能] [软件群组]
选项:

  • grouplist  :列出所有可使用的『套件组』,例如 Development Tools 之类的;

  • groupinfo  :后面接 group_name,则可了解该 group 内含有的所有套件名;

  • groupinstall:这个好用!可以安装一整组的套件群组!

  • groupremove :移除某个套件群组;

例:查阅目前容器不本机上面的可用与安装过的软件群组有哪些?
[root@www ~]# yum grouplist
Installed Groups:
Office/Productivity
Editors
System Tools
....(中间省略)....
Available Groups:
Tomboy
Cluster Storage
Engineering and Scientific

查看yum事务历史:

  • history [info|list|packages-list|packages-info|

  • summary|addon-info|redo|undo|

  • rollback|new|sync|stats]

  • yum history

  • yum history info 6

  • yum history undo 6

 安装及升级本地程序包:

localinstall rpmfile1 [rpmfile2] […]
(用install替代)
localupdate rpmfile1 [rpmfile2] […]
(用update替代)

yum 的 repo 配置文件中可用的变量

$releasever : 当前OS的发型版的主版本号
$arch  : 平台(x86_64 i386)
$basearch :基础平台
内置自定义变量 $YUM0--YUM9



    从网上ftp下载时
    lftp 网址
    在这里面!mkdir  ---   !表示用shell内部的命令
    lcd 表示用本地shell的cd命令
    mget 文件名 表示下载该文件

yum仓库

yum的repo配置文件中可用的变量:

$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386
$YUM0-$YUM9:自定义变量

实例:

http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i384

创建yum仓库:

createrepo [options] 要创建的仓库的目录所在位置

1 、 把要用的软件包下载到本地 , 自建一个目录
2 、 用 createrepo 后面加上这个目录名,就可以得出生成的软件的元数据。
3 、 把此目录设置成软件baseurl 的地址。
4 、 设置好了以后用 yum repolist 或者 yum makecache
生成一下列表就可以使用了!

程序包编译

程序包编译安装:

Application-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
src————》这种得就表示是源码包!

  • 源代码–>预处理–>编译(gcc)–>汇编–>链接–>执行

  • 源代码组织格式:
    多文件:文件中的代码之间,很可能存在跨文件依赖关系
    C、C++:make (项目管理器,configure –> Makefile.in –> makefile)
    java: maven
    makefile.in文件就是一个makefile的模板

configure脚本用处就是允许用户传递参数用来自定义安装位置等信息,编译参数,启用特性,安装位置!
此脚本运行能结合 Makefile.in 文件,用来生成makefile

编译安装

C代码编译安装三步骤:

  • 1、./configure:

    • (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile

    • (2) 检查依赖到的外部环境

  • 2、make:依赖于makefile文件,构建应用程序,它只是一个项目管理工具,

  • 3、make install:复制文件到相应路径

注意:make自己不是编译器,它是调用类似 gcc 编译器来完成功能的

开发工具:
有可能configure脚本不会给你下面的命令就是解决这个问题的

autoconf: 生成configure脚本
automake:生成Makefile.in

注意:安装前查看INSTALL,README

开源程序源代码的获取:

官方自建站点:
apache.org (ASF)
mariadb.org

代码托管:
SourceForge.net
Github.com
code.google.com
c/c++编译器: gcc (GNU C Complier)

编译C源代码

前提:

  • 提供开发工具及开发环境

  • 开发工具:make, gcc等

  • 开发环境:开发库,头文件

    • glibc:标准库

通过“包组”提供开发组件
CentOS 6:  "Development Tools"
Centos 7: "Server Platform Development"

编译安装

第一步:configure脚本

选项:指定安装位置、指定启用的特性
–help: 获取其支持使用的选项
选项分类:
安装路径设定:
–prefix=/PATH: 指定默认安装位置,默认为/usr/local/

–sysconfdir=/PATH:配置文件安装位置

System types:支持交叉编译

Optional Features: 可选特性

–disable-FEATURE
–enable-FEATURE[=ARG]

Optional Packages: 可选包,

–with-PACKAGE[=ARG],依赖包
–without-PACKAGE,禁用依赖关系

第二步:make

第三步:make install

安装后的配置:

(1) 二进制程序目录导入至PATH环境变量中;

   编辑文件/etc/profile.d/NAME.sh
     export PATH=/PATH/TO/BIN:$PATH

(2) 导入库文件路径

编辑/etc/ld.so.conf.d/NAME.conf
    添加新的库文件所在目录至此文件中
让系统重新生成缓存:
    ldconfig [-v]

两个问题:

1、把rpm软件、内核不小心删除怎么恢复

[root@qzx ~]# rpm -e kernel --nodeps
grubby fatal error: unable to find a suitable template
grubby: doing this would leave no kernel entries. Not writing out new config.
warning:    erase unlink of /lib/modules/2.6.32-642.el6.x86_64/weak-updates failed: No such file or directory
warning:    erase unlink of /lib/modules/2.6.32-642.el6.x86_64/modules.order failed: No such file or directory
[root@qzx yum.repos.d]# rpm -e rpm --nodeps
[root@qzx yum.repos.d]# yum list

进光盘救援模式恢复
以下是CentOs 6演示

yum详解
开机就快按  esc 进入上图模式

yum详解
进入修复模式
回车下一步,语言键盘默认就好

yum详解
这个是设置网络,不用设置,no

yum详解
继续

yum详解
直接下一步

yum详解
默认,就选第一个打开一个shell

yum详解
在此中用rpm把删的文件重新装回原来系统即可,这一步centos6&7都通用,7就是前面不太相同
yum详解

yum详解
寻找故障模式

yum详解
进入修复模式

yum详解
输入 1 继续

yum详解
这句话就是要打开一个shell 回车就行
后边的和centos6就一样了

2、编译安装apache服务

1、先从网上下载要安装的程序包
httpd-2.2.29.tar.bz2

2、解压文件
tar xvf httpd-2.2.29.tar.bz2

3、查看INSTALL文件
cd 到 httpd-2.2.29 文件中
cat INSTALL 文件
可以看到

  For complete installation documentation, see [ht]docs/manual/install.html or
  http://httpd.apache.org/docs/2.2/install.html

     $ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ PREFIX/bin/apachectl start

对于此中提到的 configure 文件的选项可以用 configure –help来查看

Fine tuning of the installation directories:---指定安装路径的

4、指明安装路径./configure –prefix=PREFIX
我这里写的是 /testdir/Apache

5、make(make后可以用 du -sh 查看 会发现变大了许多)

6、make install

安装完成就可以看到生成的文件了

[root@qzx httpd-2.2.29]# cd /testdir/Apache/
[root@qzx Apache]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules

7、开启
到bin目录下 有一个 apachectl 文件,此文件就控制着apache的工作

[root@qzx bin]# ./apachectl start
httpd: apr_sockaddr_info_get() failed for qzx.centos6.8
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

用 netstat -tan 查看 :80 端口是否开启
   如果开启就表示服务已经运行。

yum详解

或者 links 10.1.253.75
yum详解

如果不成功表示有可能防火墙没关
telnet 10.1.253.75 80
ping这个端口
不能连上表示可能防火墙没关

关闭防火墙命令
iptables -F

8、安装后补充

  • (1)、导出二进制程序目录至环境变量 PATH中;

    • export PATH=/testdir/Apache/bin:$PATH

    • 编辑配置文件 /etc/profile.d/apache.sh(创建程序名.sh)

  • (2)、由于不是默认安装,所以要导出库路径

    • ldconfig [-v]

    • 添加新的库文件所在目录至此文件中  即在文件中写 /testdir/Apache/lib

    • 编辑 /etc/ld.so.conf.d/apache.conf

    • 让系统重新生成缓存:

  • (3)、导出头文件(创建连接)

    • ln -sv  /testdir/Apache/include /usr/include/apach

    • 由于默认是include 文件下,而安装后是安装在当前路径下所以要导出到 /usr/include下

  • (4)、导出帮助手册

    • 添加即可

    • 编辑/etc/man.config文件

        #
        MANPATH /testdir/Apache/man

原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/39971

(0)
上一篇 2016-08-25 10:09
下一篇 2016-08-25 10:09

相关推荐

  • 如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果

    命令别名使用alias命令; ~]#alias NAME='COMMAND' 在一个命令中引用另一个命令的执行结果也是bash的特性之一,引用。 方法:$(COMMAND)

    Linux干货 2016-11-06
  • VMWare网络连接的三种模式

    在创建虚拟机的时候我们会对网络适配器进行配置,那么网络适配器是什么呢?首先我们来简单介绍一下网络适配器。 计算机与外界局域网的连接是通过主机箱内插入一块网络接口板(或者是在笔记本电脑中插入一块PCMCIA卡)。而网络接口板又称为通信适配器或网络适配器(networkadapter)或网络接口卡NIC(NetworkInterface Card),但是更多的人…

    Linux干货 2017-07-12
  • Linux下chomd修改文件或目录权限

    文件或目录权限分为三个字段 以/tmp为例ll后可看到权限为:     drwxrwxrwt 第一d为文件类型 Linux下的文件类型     -:普通文件     d:目录文件     b:块设备  &nbs…

    Linux干货 2016-02-28
  • N25第8周作业

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;     在线的主机使用绿色显示;      不在线的主使用红色显示; #!/bin/bash ipnet=172.20.51. trap ‘trap_action’ INT trap…

    Linux干货 2017-02-22
  • linux 学习总结第二周

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。    常用的文件管理类工具:cp,mv,rm     命令cp用于文件拷贝,分为单源文复制和多源复制 单源复制语法:cp [options]…[-t] source dest 。 注意事项: 1如果dest不存在,则事先创建此文件…

    Linux干货 2016-12-04
  • 网络服务基础理论

    最近学习了有关网络管理的有关知识,所以给也在学习这些知识的童鞋分享一下我的一些经验。 听了这几天课,总结了几个前提。 有关网络的通信均是基于数据传输的,且数据均是二进制格式的流式数据。 在网络中需要把大包分成小包, 每传一个包都需要有三个地址,由内向外为端口号、IP地址、MAC地址。端口号确定应用,IP确定网段,MAC确定广播域中的某个网卡。 OSI模型 &…

    Linux干货 2017-09-01

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-26 11:41

    内容整体很完整,有理论有操作,突显用心;整篇博客还是能让人看到很多专业性所在,还能看出很用心的地方,革命尚未成功,同志仍需努力啊,加油!