Linux学习之路-Linux-yum命令【8】---20171217

我与影子孤独终老i 提交于 2020-08-14 03:59:20

yum

  • yum: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
[root@Centos7~]#which yum
/usr/bin/yum
  • yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)

                  http://   
                  https://  
                  ftp://   
                  file://

  • yum客户端配置文件:

               /etc/yum.conf:为所有仓库提供公共配置 
               /etc/yum.repos.d/*.repo:为仓库的指向提供配置
  • yum软件的配置信息
    yum的repo配置文件中可用的变量:
    $releasever: 当前OS的发行版的主版本号
    $arch: 平台,i386,i486,i586,x86_64等
    $basearch:基础平台;i386, x86_64
    $YUM0-$YUM9:自定义变量




[root@Centos7~]#cat /etc/yum.conf                  查看yum的默认信息
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0                                                     * 是否保留rpm文件*
debuglevel=2
logfile=/var/log/yum.log                 
exactarch=1
obsoletes=1
gpgcheck=1                                                        *检查rpm文件的完整性*
plugins=1
installonly_limit=5
# PUT YOUR REPOS HERE OR IN separate files named file.repo      新建文件后缀必须为 repo
# in /etc/yum.repos.d                                           新建立yum配置文件存放位置

yum.repos.d目录下默认存在的仓库指向配置文件

[root@Centos6yum.repos.d]#ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-Debuginfo.repo  CentOS-Media.repo
[root@Centos7/etc/yum.repos.d]#vim base.repo                     文件后缀必须为.repo格式
[base]                                                                                      
name=Centos7.4 cdrom                             
baseurl=file:///misc/cd                                                                  挂载的源是光盘
gpgcheck=1
gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-7

[epel]                                                                                              epel指向方式
name=epel
baseurl=http://172.18.0.1/epel/7/x86_64/
gpgcheck=0                                                                                  0代表不检测安装文件的完整性 

查看yum源挂载情况

[root@Centos7/etc/yum.repos.d]#yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识                       源名称                                         状态
base                          Centos7.4 cdrom                        9,591
epel                           epel                                             5,919
repolist: 15,510

查看yum缓存信息

[root@Centos6yum.repos.d]#du -sh /var/cache/yum
35M /var/cache/yum

清除 yum 本地缓存

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

[root@Centos7/etc/yum.repos.d]#yum clean all
已加载插件:fastestmirror, langpacks
源 'base' 在配置文件中未指定名字,使用标识代替
正在清理软件源: base
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@Centos7/etc/yum.repos.d]#du -sh /var/cache/yum
4.0K    /var/cache/yum

yum软件常出现异常的两个原因,一个仓库源的路径问题!
另外一个就是yum缓存的问题,出现异常检查路径及清除yum缓存!


yum命令的用法

yum [options] [command] [package ...]
显示仓库列表: yum repolist [all|enabled|disabled]
显示程序包:
yum 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历史:

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

日志 :

/var/log/yum.log

包组管理的相关命令:

yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]



yum的命令行选项:

--nogpgcheck :禁止进行gpg check
-y : 自动回答为“yes”
-q :静默模式
--disablerepo=repoidglob :临时禁用此处指定的repo
--enablerepo=repoidglob :临时启用此处指定的repo
--noplugins :禁用所有插件




#如果建立yum服务器

  • 生产环境如果能连接外网,即可方便连接外网的yum 源。
  • 例如:
  • 如果是局域网情况,准备好需要的rpm等文件,简单搭建一个共享服务。
  • 可以使用httpd 或者 vsftpd 软件来搭建。
  • 把准备好的源文件(包含源数据及rpm安装包等文件)放到 /var/www/html 目录下或者
  • /var/ftp/pub 目录下即可
  • 对于建立的yum源目录管理,要单独建立。
    [root@Centos7/var/ftp/pub]#mkdir centos/6/os/x86_64/ -pv
    mkdir: 已创建目录 "centos"
    mkdir: 已创建目录 "centos/6"
    mkdir: 已创建目录 "centos/6/os"
    mkdir: 已创建目录 "centos/6/os/x86_64/"
    [root@Centos7/var/ftp/pub]#tree
    .
    └── centos
    └── 6
        └── os
            └── x86_64
    4 directories, 0 files
  • 将准备好的源文件全部下载到x86_64目录下既可以(由于目前学习阶段,就把光盘挂在到当前目录下即可)
    [root@Centos7/var/ftp/pub]#df
    文件系统            1K-块         已用          可用            已用%     挂载点
    /dev/sda2        52403200    3597996   48805204    7%            /
    devtmpfs         724776        0               724776        0%            /dev
    tmpfs               739476        0               739476        0%           /dev/shm
    tmpfs               739476        9216         730260        2%           /run
    tmpfs               739476        0               739476        0%           /sys/fs/cgroup
    /dev/sda3        20961280    32944       20928336    1%           /app
    /dev/sda1       1247232       161556     1085676      13%         /boot
    tmpfs              147896         8               147888        1%           /run/user/0
    /dev/sr0          3878870       3878870   0                  100%       /var/ftp/pub/centos/6/os/x86_64
    [root@Centos7/var/ftp/pub]#df -h
    文件系统          容量       已用       可用     已用%     挂载点
    /dev/sda2        50G        3.5G      47G      7%           /
    devtmpfs         708M      0           708M    0%           /dev
    tmpfs               723M      0           723M    0%           /dev/shm
    tmpfs               723M      9.0M     714M    2%           /run
    tmpfs               723M      0           723M    0%           /sys/fs/cgroup
    /dev/sda3        20G        33M       20G     1%            /app
    /dev/sda1        1.2G       158M     1.1G    13%          /boot
    tmpfs               145M      8.0K      145M   1%            /run/user/0
    /dev/sr0           3.7G       3.7G      0          100%        /var/ftp/pub/centos/6/os/x86_64

    启动ftp服务

    [root@Centos7~]#systemctl start vsftpd

    关闭防火墙命令
    [root@Centos7~]#systemctl stop firewalld --------->(Centos 6 service iptables stop)
    开机默认不开启防火墙命令
    [root@Centos7~]#systemctl disable firewalld ------->(Centos6 chkconfig iptables off)
    Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
    Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
    查看防火墙是否开启命令
    [root@Centos7~]#iptables -vnL
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination
    Chain OUTPUT (policy ACCEPT 0 packets, 0 byteskts bytes target prot opt inout source destination









关闭selinux 配置(修改为SELINUX=permissive)

[root@Centos7~]#cat /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
**SELINUX=enforcing**
[root@Centos7~]#getenforce
Permissive
  • 客户端yum源设置
    [root@Centos6yum.repos.d]#pwd
    /etc/yum.repos.d
    [root@Centos6yum.repos.d]#vim base.repo 
    [base]
    name=ftp.centos6.9 base
    baseurl=ftp://172.18.7.77(服务器ip地址)/pub/centos/$releasever/os/$basearch/
    gpgcheck=0

    建立第三方软件安装包目录,在目录下生成目前安装软件的元文件等信息。

    [root@Centos7/var/ftp/pub/app3]#createrepo .    ---------> 在当前目录下生成当前所有软件的元文件
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    [root@Centos7/var/ftp/pub/app3]#ls
    linux-4.13.16.tar.xz  repodata                                 ------------> repodata 为生成的元文件目录
  • 系统光盘yum仓库

    系统安装光盘作为本地yum仓库:
    (1) 挂载光盘至某目录,例如/mnt/cdrom

    mount /dev/cdrom /mnt/cdrom

    (2) 创建配置文件

    [CentOS7]
    name=
    baseurl=
    gpgcheck=
    enabled=



    创建yum仓库:

    createrepo [options] <directory>

程序包编译

  • 程序包编译安装:
  • Application-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
  • 源代码-->预处理-->编译-->汇编-->链接-->执行
  • 源代码组织格式:

    多文件:文件中的代码之间,很可能存在跨文件依赖关系
    C、C++:make 项目管理器

    configure脚本 --> Makefile.in --> Makefile java: maven

  • 编译安装

    C语言源代码编译安装三步骤:
    1、./configure

    (1) 通过选项传递参数,指定启用特性、安装路径等;执 行时会参考用户的指定以及Makefile.in文件生成Makefile
    (2) 检查依赖到的外部环境,如依赖的软件包

    2、make 根据Makefile文件,构建应用程序
    3、make install 复制文件到相应路径
    开发工具:

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

    注意:安装前查看INSTALL,README

  • 开源程序源代码的获取:

    官方自建站点:

    apache.org (ASF:Apache Software Foundation)
    mariadb.org
    ...
    代码托管:
    SourceForge.net
    Github.com code.google.com




    c/c++编译器: gcc (GNU C Complier)

  • 编译C源代码:

    准备:

    提供开发工具及开发环境
    开发工具:make, gcc等 开发环境:开发库,头文件
    glibc:标准库

    实现

    通过“包组”提供开发组件
    Development Tools
    Server Platform Development

  • httpd 软件编译安装

    下载源码软件包
    准备编译环境,安装包组

    yum groupinstall "Development Tools"

  • 第一步:configure脚本

    选项:指定安装位置、指定启用的特性
    --help: 获取其支持使用的选项
    选项分类:
    安装路径设定:


    --prefix=/PATH: 指定默认安装位置,默认为/usr/local/
    --sysconfdir=/PATH:配置文件安装位置
    System types:支持交叉编译
    Optional Features: 可选特性


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

    Optional Packages: 可选包

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

    注意:通常被编译操作依赖的程序包,需要安装此程序包的“开发”组件,其包名一般类似于name-devel-VERSION

  • 第二步make -j 2

    看提示补充安装相应的包例如:apr-devel apr-util-devel openssl-devel pcre-devel

  • 第三步make install,配置运行环境

    安装后的配置: 二进制程序目录导入至PATH环境变量中
    编辑文件/etc/profile.d/NAME.sh

    export PATH=/PATH/TO/BIN:$PATH

    导入库文件路径

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

    导入头文件 基于链接的方式实现:ln -sv
    导入帮助手册

    编辑/etc/man.config|man_db.conf文件
    添加一个MANPATH

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!