码迷,mamicode.com
首页 > 其他好文 > 详细

yum管理及源码安装

时间:2018-05-12 21:42:43      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:第一个字符   omd   dev   系统管   eve   yum仓库   sage   交互   记录   

 

一、配置YUM库及更新操作


 yum概述

 

    基于RPM包构建的软件更新机制,自动解决软件依赖关系

 

YUM仓库格式



   

本地:file://
网络:ftp://或http://

 

 

yum源里面包含的内容

 

1、rpm包
2、元数据文件
mount /dev/cdrom /media
cd /media/Server
ls re*
在每个yum仓库中,都有repodata目录(存放的是仓库数据)
#baseurl代表yum在互联网上所查找的链接地址。这里需要解释一下
#$basearch代表了系统的构架格式如i386和repodata存放repomd.xml文件的文件夹位置。

 

 

Linux yum配置文件详解

 

yum的配置一般有两种方式:   一种是直接配置/etc目录下的yum.conf文件, 另外一种是在/etc/yum.repos.d目录下增加.repo文件。

yum的配置文件yum.conf详解  

$ cat /etc/yum.conf
[main]

cachedir=/var/cache/yum         #yum下载的RPM包的缓存目录
keepcache=0                        #缓存是否保存,1保存,0不保存。
debuglevel=2                       #调试级别(0-10),默认为2(具体调试级别的应用,我也不了解)。
logfile=/var/log/yum.log         #yum的日志文件所在的位置
exactarch=1             #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。
obsoletes=1             #这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
gpgcheck=1             #是否检查GPG(GNU Private Guard),一种密钥方式签名。
plugins=1             #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。
installonly_limit=3         #允许保留多少个内核包。
exclude=selinux*         #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。

 

 

配置YUM客户端


1、yum的配置文件

-基本配置:/etc/yum.conf
-仓库配置:/etc/yum.repos.d/*.repo
-日志文件:/var/log/yum.log

 





2、yum缓存目录
-

存放下载软件包、仓库记录等数据
-/var/cache/yum/$basearch/$releasever

 

yum缓存:

/var/cache/yum:存放服务器的软件信息

当执行yum install 软件包 时,首先查看/var/lib/rpm数据库下有没有下载的软件包,如果没有则从/etc/yum.repos.d/下的.repo配置文件把软件信息下载到本地,
并缓存在
/var/cache/yum,然后在/var/cache/yum里面找到某一软件的下载地址,然后把软件安装上。 1.先备份 2.wget http://mirrors.163.com/.help/CentOS6-Base-163.repo 3.yum makecache #生成缓存 4.yum install 软件包 -y cat /etc/yum.conf 复制代码 [main] cachedir=/var/cache/yum #yum下载的RPM包的缓存目录 keepcache=0      #缓存是否保存,1保存,0不保存。 debuglevel=2     #调试级别(0-10),默认为2(具体调试级别的应用,我也不了解)。 logfile=/var/log/yum.log #yum的日志文件所在的位置 exactarch=1     #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。 obsoletes=1     #这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。 gpgcheck=1     #是否检查GPG(GNU Private Guard),一种密钥方式签名。 plugins=1     #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。 installonly_limit=3 #允许保留多少个内核包。 exclude=selinux*   #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。 # This is the default, if you make this bigger yum wont see if the metadata # is newer on the remote and so youll "gain" the bandwidth of not having to # download the new metadata and "pay" for it by yum not having correct # information. # It is esp. important, to have correct metadata, for distributions like # Fedora which dont keep old packages around. If you dont like this checking # interupting your command line usage, its much better to have something # manually check the metadata once an hour (yum-updatesd will do this). metadata_expire=90m      #设定保存时长 # PUT YOUR REPOS HERE or IN separate files named file.repo # in /etc/yum.repos.d keepcache=0修改成keepcacche=1 保存,退出。 以后安装、更新的包,都会保存在/var/cache/yum/DT60SP3_Repository/packages目录下面

 




3、.repo基本配置项

[源名称]:自定义名称,具有惟一性
name:本软件源的描述字串
baseurl:指定YUM服务端的URL地址
enabled:是否启用此频道
gpgcheck:是否验证待安装的RPM包
gpgkey:用于RPM验证的密钥文件


[fedora]       #方括号里面的是软件源的名称,将被yum取得并识别

name=Fedora $releasever - $basearch   #这里也定义了软件 仓库的名称,通常是为了方便阅读配置文件,一般没什么作用,$releasever变量定义了发行版本,

通常是8,9,10等数字,$basearch变 量定义了系统的架构,可以是i386、x86_64、ppc等值,这两个变量根据当前系统的版本架构不同而有不同的取值,
这可以方便yum升级的时候选择 适合当前系统的软件包,以下同……

failovermethod=priority   #failovermethod 有两个值可以选择,priority是默认值,表示从列出的baseurl中顺序选择镜像服务器地址,
roundrobin表示在列出的服务器中随机选择

exclude=compiz* *compiz* fusion-icon* #exclude这个选项是后来我自己加上去的,用来禁止这个软件仓库中的某些软件包的安装和更新,
可以使用通配符,并以空格分隔,可以视情况需要自行添加

#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
#上面的一行baseurl第一个字符是‘#‘表示该行已经被注释,将不会被读取,这一行的意思是指定一个baseurl(源的镜像服务器地址)

#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
#上面的这一行是指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,
将$releasever和$basearch替换成自己对应的版本和架构,
例如10和i386,在<a href="http://www.it165.net/edu/ewl/" target="_blank" class="keylink">浏览器</a>中打开,
我们就能看到一长串镜可用的镜像服务器地址列表。

选择自己访问速度较快的镜像服务器地址复制并粘贴到repo文件中,我们就能获得较快的更新速度了,格式如下baseurl所示:
baseurl=
ftp://ftp.sfc.wide.ad.jp/pub/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>/Fedora/releases/10/Everything/i386/os
http://ftp.chg.ru/pub/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>/fedora/linux/releases/10/Everything/i386/os
http://ftp.yz.yamagata-u.ac.jp/pub/linux/fedora/linux/releases/10/Everything/i386/os
http://mirror.nus.edu.sg/fedora/releases/10/Everything/i386/os
http://mirror.yandex.ru/fedora/linux/releases/10/Everything/i386/os
http://ftp.twaren.net/Linux/Fedora/linux/releases/10/Everything/i386/os
http://ftp.itu.edu.tr/Mirror/Fedora/linux/releases/10/Everything/i386/os
 

enabled=1 #这个选项表示这个repo中定义的源是启用的,0为禁用21.
gpgcheck=1 #这个选项表示这个repo中下载的rpm将进行gpg的校验,已确定rpm包的来源是有效和安全的
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch #定义用于校验的gpg密钥,就是数位签章的公钥档所在位置!23.
 


 






4、创建server.repo配置,添加本地仓库

vim /etc/yum.repos.d/server.repo
baseurl=file:///media/RHEL_5.9%20x86_64%20DVD/Server    //空格用%20代替

 



yum仓库中的元数据文件:

 

1、primary.xml.gz
a、所有RPM包的列表;
b、依赖关系;
c、每个RPM安装生成的文件列表;

2、filelists.xml.gz
a、当前仓库中所有RPM包的所有文件列表;
3、other.xml.gz
a、额外信息,RPM包的修改日志;

4、repomd.xml
a、记录的是上面三个文件的时间戳和校验和;

5、comps*.xml: RPM包分组信息

 

注意:

1、红帽6把yum仓库的所有rpm放到一个目录下,但是把repodata放到另外一个目录下,所以repodata并不在挂载的目录下;
2、使用yum仓库时,一定要指向repodata所在的目录
3、红帽5的rpm包和repodata都放到同一个目录;而红帽6的rpm包和repodata不在同一个目录下

 

 

 

yum客户端操作



格式:yum [-y] 指令 [软件名]
       list    查看软件包列表及安装状态
       search    查看软件包名称或者描述重要关键字
       info    查看软件包的说明信息,类似于rpm -qi
       install    安装指定软件包,类似于rpm -i
       update    升级指定软件包,类似于rpm -F
       remove    卸载指定软件包,类似于rpm -e
       provides    查看文件由那个包产生,类似于rpm -qf
       --nogpgcheck    不验证gpg签名
    yum clean all
    yum -y localinstall    本地安装              [-y=yes]

本地无gpg公钥签名的安装
yum -y localinstall  [安装包]  --nogpgcheck 

list: 列表
    支持glob
    all
    available:可用的,仓库中有但尚未安装的
    installed: 已经安装的
    updates: 可用的升级

repolist: 显示repo列表及其简要信息
    all
    enabled: 默认
    disabled

 

软件组基本操作   

 

yum
      grouplist        查看软件组列表
      groupinfo        查看软件组说明信息
      groupinstall    安装指定软件组
      groupupdate    升级软件组
      groupremove    卸载软件组

 

清空本地yum缓存


1、适用于yum缓存存在错误时

-再次查询或更新时,会自动重建缓存
yum clean all   //清空所有缓存
yum list          //再次查询时更新
clean: 清理缓存
[ packages | headers | metadata | dbcache | all ]
   

 

 

搭建自定义yum源

 

 



1.先安装createrepo软件包
yum -y install createrepo
2.将搜集的*.rpm包文件集中到自定义的文件夹,例如:
mkdir /mydata
cp *.rpm /mydata
3.使用createrepo生成仓库定义数据
createrepo /mydata
4.配置/etc/yum.repos.d目录下的repo文件,注意把gpgcheck改为0,因为不是红帽认证的。

例子:

YUM高级配置
1. 将rhel6.5 iso里面的软件全部拷贝到/data/rhel6
2. mkdir /data/rhel6/nsd1409,把相应的rpm包拷贝进去
3. 安装createrepo软件包
4. createrepo /data/rhel6/nsd1409
5. 修改yum客户端配置文件
[root@localhost ~]# cat /etc/yum.repos.d/rhel6.5.repo 
[rhel-6.5]
name=Red Hat Enterprise Linux Server 
baseurl=file:///data/rhel6/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-nsd1409]
name=Red Hat Enterprise Linux Nsd1409
baseurl=file:///data/rhel6/nsd1409
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
6. yum clean all
7. yum list linuxqq

 

 

YUM 源优先级插件


Linux 发行版比较多,同时还有很多个人或组织维护了某些特定用途的安装/升级源。Yum Priorities 插件可以用来强制保护源。它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如 Linux 发行版的官方源)设定为最高优先级,从而保证系统的稳定性(同时也可能无法更新到其它源上提供的软件最新版本)。


在控制台运行 Yum Priorities 安装指令

 

 yum install yum-priorities

 


配置使用 Yum Priorities

 

1.使用熟悉的文本编辑器(如 vim)打开 Yum Priorities 配置文件 /etc/yum/pluginconf.d/priorities.conf

vim /etc/yum/pluginconf.d/priorities.conf

 


2.确保配置文件中包含下面的行

[main]
enabled=1

保存并关闭该文件

3.打开 CentOS base 源配置文件 /etc/yum.repos.d/CentOS-Base.repo
将下面的文本分别添加到 Base, Updates, Addons, 和 Extras 这几个源记录的后面*

priority=1

 


将下面的文本添加到 CentOSPlus 源记录的后面*

 

priority=2

 

注意:

 

* 源记录(repository entry)是由 [ 和 ] 括起来的源名称。例如,Base 源记录就标记为 [base] 。
** 优先级由 1 ~ 9999 个数表示,1 的优先级最高。优先级小的源即使有某软件的较新版本,如果优先级高的源中没有,
在启用该插件的情况下,系统也无法安装/升级到该较新版本。图形界面的 YUM 工具一般默认就已经包含了优先级插件。 *** 要禁用 YUM 优先级功能,只需要在(1.A.) /etc/yum/pluginconf.d/priorities.conf 中将 enable=1 改为 enable=0 即可。不建议!

 




本地yum源优先级比官网base源高,因此在yum安装包时,首先会在本地查找,没有找到才会去官网查找

备注:
1、要使priority参数有效,必须安装yum-plugin-priorities插件
2、N为整型数.默认优先级为99.数值越小优先级越高;

 


二、源码包的编译安装


1. 准备开发环境gcc、g++、make
2. 源码安装基本过程

tar         一般解包到/usr/src
./configure    配置,使用--prefix=/usr/local/软件名  指定安装位置
make        编译
make install    安装

 

 

三 源码包编译安装

 

 

深入研究编译

 

语言进行编译,一般进行如下步骤:

1) 先检查程序代码中的语法是否正确

2) 将程序代码转换为机器码

3) 程序代码中如果使用其它的链接库的机器码,则链接之

4) 产生操作系统相关信息

5) 存储为可执行文件

 

链接

 

是把存储在链接库中的机器码存储到程序中,这样开发人员就不需要重复编写相同的程序代码,加快程序的开发速度。

链接分为:静态链接和动态链接

静态链接:

 

静态链接是包含给用户调用函数的集合,通常这些函数被其它程序调用的方法是,在程序编译时,把函数的执行代码写入到应用程序中。

 使用ar工具生成,一般以.a作为库的文件名。

 

 特点:

产生执行文件的体积较大

执行时需要较多内存空间

可独立使用

 

动态链接

 

编译程序时不会把链接库的机器码复制到程序中,而是存储执行文件执行时需要的哪个链接库、链接库版本等信息;当程序执行时,可根据文件中记载链接库信息,加载所需的链接库的机器码。

.so”作为库的文件名

 

特点:

体积较小

内存空间少

无法独立使用

 

 

查询执行文件的链接方法

 

[root@noc hello]# file /bin/ls

/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

 

看到:

dynamically linked:动态链接

static linked:静态链接

 

查询连接到的链接库

 

[root@noc hello]# ldd /usr/sbin/setup

        linux-gate.so.1 =>  (0x00323000)

        libnewt.so.0.52 => /usr/lib/libnewt.so.0.52 (0x001a4000)

        libc.so.6 => /lib/libc.so.6 (0x00686000)

        libslang.so.2 => /usr/lib/libslang.so.2 (0x001bf000)

        libm.so.6 => /lib/libm.so.6 (0x003a8000)

        /lib/ld-linux.so.2 (0x00178000)

        libdl.so.2 => /lib/libdl.so.2 (0x00d37000)

 

 

准备源代码编译环境


1、开源软件多使用C/C++语言开发

需要gcc、make等编译工具
#gcc --version
#g++ --version
#make --version
通过yum安装“开发工具”、“开发库”包组,可解决编译环境

 




前提:准备开发环境(编译环境)

编译安装的三步骤:
前提:准备开发环境(编译环境)
安装"Development Tools""Development Libraries"
RHEL5:"Development Tools""Development Libraries"
RHEL6::"Development Tools""Compatibility Libraries "
# tar
# cd
# ./configure  
    --help :获取脚本的使用格式
    --prefix=/path/to/somewhere
    --sysconfdir=/PATH/TO/CONFFILE_PATH
    configure的功能:1、让用户选定编译特性;2、检查编译环境;
# make
# make install

# tar xf tengine-1.4.2.tar.gz
# cd tegnine-1.4.2
./configure -- help | less
# ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
# make
# make install
# /usr/local/tengine/sbin/nginx
加入出现要依赖PCRE库的解决方法:
a、在configure的过程中加上--without-http-rewrite_module
b、yum install pcre-devel

安装软件包的时候,如果把它安装在非默认路径,要注意:
1、修改PATH环境变量,以能够识别此程序的二进制文件路径;
    修改/etc/profile文件
    在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
2、默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径:
    在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;
    # ldconfig 通知系统重新搜寻库文件
        -v: 显示重新搜寻库的过程

要使用一个程序调用其它库时,都要使用include来包含这些

3、头文件:输出给系统
    默认:/usr/include
    增添头文件搜寻路径,使用链接进行:
        /usr/local/tengine/include/   /usr/include/
        两种方式:
        ln -s /usr/local/tengine/include/* /usr/include/ 或
        ln -s /usr/local/tengine/include  /usr/include/tengine
4、man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man    
        1、man -M /PATH/TO/MAN_DIR COMMAND
        2、在/etc/man.config中添加一条MANPATH
    

 

 

 

编译安装的基本过程




make: 项目管理工具,能够把C程序的多个不同文件做成一个项目,并且把这个项目的编译过程通过一个配置文件来启动,这个配置文件叫makefile;
    makefile: 定义了make(gcc,g++)按何种次序去编译这些源程序文件中的源程序

automake, --> makefile.in(半成品) --> makefile
autoconf, --> configure

makefile的生成
automake:让程序的作者对自己的源程序做一个简单的定义,然后生成一个makefile的半成品(makefile.in),makefile无法跟用户交互;此时makefile.in还可以接受另外一个工具所生产的脚本(autoconf)做配置

autoconf:给项目生成一个脚本(configure)
configure:配置脚本如何定义

 






编译安装的基本过程

下载源码包后的安装步骤:
1、tar解包,释放源代码至指定目录
2、./configure配置,指定安装目录/功能模块等选项
3、make编译,生成可执行的二进制程序文件
4、make install安装,将编译好的文件复制到安装目录

 

 

 


解包

 

 

-使用tar解包,建议释放到/usr/src目录
-解包后位置:/usr/src软件名-版本号/

 

 

配置

 

 


-

使用源码目录下的configure脚本
执行“./configure --help”可以查看帮助
 ./configure --prefix=/usr/local/apache2【 --prefix安装指定路径命令】    【查看软件包里多一个Makefile文件就说明执行成功】

 

 

 


编译

 

执行make命令,如果编译出错,需要执行make clean再执行make

 

 

安装

 

执行 make install命令

 

参考:http://cnzhx.net/blog/yum-priorities/

http://www.it165.net/os/html/201409/9273.html




   

yum管理及源码安装

标签:第一个字符   omd   dev   系统管   eve   yum仓库   sage   交互   记录   

原文地址:https://www.cnblogs.com/zhongguiyao/p/9029922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!