软件包管理工具—yum命令总结

描述:

YUM: Yellowdog Update Modifier, rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,实现查询、安装、升级、删除等功能

说明:

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

文件服务器:

ftp://

http://

file:///

yum客户端配置文件:

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

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

仓库指向的定义:

[repositoryID]

name=Some name for this repository

baseurl=url://path/to/repository/

enabled={1|0}

gpgcheck={1|0}

gpgkey=URL

enablegroups={1|0}

failovermethod={roundrobin|priority}   默认为: roundrobin(随机挑选)

cost=    默认为1000

示例:

以教室服务器为yum源仓库的配置

[root@localhost yum.repos.d]# cat magedu.repo 
[base]
name=CentOS 7
baseurl=http://10.1.0.1/cobbler/ks_mirror/7/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1

显示仓库列表:

repolist [all|enabled|disabled]

[root@localhost yum.repos.d]# yum repolist
repo id         repo name         status
!base          CentOS 7          9,007
cdrom        CentOS 7 cdrom        9,007

显示程序包:

# yum list [all | glob_exp1] [glob_exp2] […]

[root@localhost ~]# yum list tree      列出tree命令的程序包的信息
Available Packages
tree.x86_64   1.6.0-10.el7    base

# yum list {available|installed|updates} [glob_exp1][…]

安装程序包:

install package1 [package2] […]

[root@localhost Packages]# yum -y install tree
Installed:
  tree.x86_64 0:1.6.0-10.el7        
Complete!

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

升级程序包:

update [package1] [package2] […]

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

检查可用升级:

check-update

卸载程序包:

remove | erase package1 [package2] […]

[root@localhost ~]# yum remove tree      删除tree命令程序包
Removed:
  tree.x86_64 0:1.6.0-10.el7
Complete!

查看程序包information:info […]

[root@localhost ~]# yum info tree     查询tree命令程序包的信息
Installed Packages
Name        : tree
Arch        : x86_64
Version     : 1.6.0
Release     : 10.el7
Size        : 87 k
Repo        : installed
From repo   : base

查看指定的特性(可以是某文件)是由哪个程序包所提供:

provides | whatprovides feature1 [feature2] […]

[root@localhost ~]# yum provides tree    查询tree命令程序包是由哪个程序包提供的

tree-1.6.0-10.el7.x86_64 : File system tree viewer

Repo        : base

清理本地缓存:

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

构建缓存:

makecache

搜索: search string1 [string2] […]

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

查看指定包所依赖的capabilities:

deplist package1 [package2] […]

查看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

安装本地程序包:

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

及升级本地程序包:

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

包组管理的相关命令:

groupinstall group1 [group2] […]

groupupdate group1 [group2] […]

grouplist [hidden] [groupwildcard] […]

groupremove group1 [group2] […]

groupinfo group1 […]

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

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

# mount /dev/cdrom /media/cdrom

(2) 创建配置文件

[CentOS7]

name=

baseurl=

gpgcheck=

enabled=

示例:

使用本地光盘当作本地仓库

[cdrom]
name=CentOS 7 cdrom
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1

yum的命令行选项:

–nogpgcheck:禁止进行gpg check

-y: 自动回答为“ yes”

-q:静默模式

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

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

–noplugins:禁用所有插件

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] <directory>

程序包编译

程序包编译安装:

Application-VERSION-release.src.rpm –> 安装后,使

用rpmbuild命令制作成二进制格式的rpm包,而后再安装

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

源代码组织格式:

多文件:文件中的代码之间,很可能存在跨文件依赖关系

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)

mariadb.org

代码托管:

SourceForge.net

Github.com

code.google.com

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

编译安装

编译C源代码:

前提:提供开发工具及开发环境

开发工具: make, gcc等

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

glibc:标准库

通过“包组”提供开发组件

CentOS 6: "Development Tools",

"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

示例:源码编译安装http

1,下载 httpd 源码包到当前目录下

[root@localhost ~]# lftp 10.1.0.1
lftp 10.1.0.1:~> mget pub/Sources/sources/httpd/httpd-2.2.29.tar.bz2 
5625498 bytes transferred                                   
lftp 10.1.0.1:/> bye
[root@localhost ~]# ls
httpd-2.2.29.tar.bz2

2,解压缩 httpd 源码包到当前目录下

[root@localhost ~]# tar -xf httpd-2.2.29.tar.bz2 
[root@localhost ~]# ls
httpd-2.2.29    httpd-2.2.29.tar.bz2

3,运行configure脚本,指定默认安装路径和配置文件安装路径

[root@localhost ~]# cd httpd-2.2.29;ls
acinclude.m4  configure      include         Makefile.in    README-win32.txt
[root@localhost httpd-2.2.29]# file configure
configure: POSIX shell script, ASCII text executable, with very long lines
[root@localhost httpd-2.2.29]# ./configure --prefix=/usr/local/httpd2 --sysconfdir=/etc/httpd2

4,执行make命令

[root@localhost httpd-2.2.29]# make

5,执行make install

[root@localhost httpd-2.2.29]# make install

6,关闭防火墙

[root@localhost bin]# iptables -F

7,运行 apachectl 脚本

[root@localhost httpd-2.2.29]# cd /usr/local/httpd2/bin;ls
apachectl  apu-1-config  checkgid  envvars    htcacheclean  htdigest  httpd
[root@localhost bin]# file apachectl 
apachectl: POSIX shell script, ASCII text executable
[root@localhost bin]# ./apachectl start

8,查看 httpd 服务是否开启(80端口)

[root@localhost bin]# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
       ESTABLISHED
tcp6       0      0 :::80                   :::*                    LISTEN

9,访问 httpd 服务

wKioL1e9SZqx80MyAAAfgcUZYOk902.png

编译安装后的配置:

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

编辑文件/etc/profile.d/NAME.sh

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

[root@localhost profile.d]# vim apache.sh 
PATH=$PATH:/usr/local/httpd2/bin
[root@localhost profile.d]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/httpd2/bin

(2) 导入库文件路径

编辑/etc/ld.so.conf.d/NAME.conf

添加新的库文件所在目录至此文件中;

[root@localhost ~]# vim /etc/ld.so.conf.d/httpd2.conf

让系统重新生成缓存:

ldconfig [-v]

[root@localhost ~]# ldconfig -v

(3) 导入头文件

基于链接的方式实现:

ln -sv

[root@localhost httpd2]# ln -s /usr/local/httpd2/include/ /usr/include/http2
[root@localhost httpd2]# cd /usr/include/;ls
ctype.h  http2  netipx  shadow.h   utmp.h
[root@localhost include]# ll http2
lrwxrwxrwx. 1 root root 26 Aug 24 13:19 http2 -> /usr/local/httpd2/include/

(4) 导入帮助手册

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

[root@localhost ~]# vim /etc/man_db.conf 
MANDATORY_MANPATH       /usr/local/httpd2/man


总结:

1,yum命令是基于rpm命令的,若rpm命令没安装或者误删除,则yum命令也使用不了

2,yum命令可以解决软件间的依赖性问题

3,yum命令的使用是基于yum仓库的建立,在/etc/yum.repos.d目录下创建一个以*.repo 结尾的文件为yum源的仓库,最重要的为baseurl=路径,其路径必须为可访问或已存在系统上的,若不存在或不能访问,则使用yum命令时会出现找不到相应的软件包,无正确的信息输出到屏幕上;仓库文件若有多个,必须确保每个文件的baseurl=路径可以正常访问,则使用yum命令时会去找所有的仓库文件路径出现找不到相应的软件包,无正确的信息输出到屏幕上。

4,创建yum源仓库的文件格式:

  [repositoryID]

  name=Some name for this repository

  baseurl=url://path/to/repository/   (可指定多个路径)

  enabled={1|0}   (0表示禁用,1表示启用,默认启用)

  gpgcheck={1|0}   (0表示不检测,1表示检测)

  gpgkey=URL

  enablegroups={1|0}

  failovermethod={roundrobin|priority}

5,利用yum命令实现源代码安装的主要步骤:

  a,./configure:

   –prefix=/PATH: 指定默认安装位置,默认为/usr/local/

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

  b,make:根据makefile文件,构建应用程序

  c,make install:复制文件到相应路径

6,常用选项:

 安装

yum install 全部安装

yum install package1 安装指定的安装包package1

yum groupinsall group1 安装程序组group1

 更新和升级

yum update 全部更新

yum update package1 更新指定程序包package1

yum check-update 检查可更新的程序

yum upgrade package1 升级指定程序包package1

yum groupupdate group1 升级程序组group1

 查找和显示

yum info package1 显示安装包信息package1

yum list 显示所有已经安装和可以安装的程序包

yum list package1 显示指定程序包安装情况package1

yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包

 删除程序

yum remove | erase package1 删除程序包package1

yum groupremove group1 删除程序组group1

yum deplist package1 查看程序package1依赖情况

 清除缓存

yum clean packages 清除缓存目录下的软件包

yum clean headers 清除缓存目录下的 headers

yum clean oldheaders 清除缓存目录下旧的 headers

yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers


作业:

1,源码安装apache

1,下载 httpd 源码包到当前目录下

[root@localhost ~]# lftp 10.1.0.1
lftp 10.1.0.1:~> mget pub/Sources/sources/httpd/httpd-2.2.29.tar.bz2 
5625498 bytes transferred                                   
lftp 10.1.0.1:/> bye
[root@localhost ~]# ls
httpd-2.2.29.tar.bz2

2,解压缩 httpd 源码包到当前目录下

[root@localhost ~]# tar -xf httpd-2.2.29.tar.bz2 
[root@localhost ~]# ls
httpd-2.2.29    httpd-2.2.29.tar.bz2

3,运行configure脚本,指定默认安装路径和配置文件安装路径

[root@localhost ~]# cd httpd-2.2.29;ls
acinclude.m4  configure      include         Makefile.in    README-win32.txt
[root@localhost httpd-2.2.29]# file configure
configure: POSIX shell script, ASCII text executable, with very long lines
[root@localhost httpd-2.2.29]# ./configure --prefix=/usr/local/httpd2 --sysconfdir=/etc/httpd2

4,执行make命令

[root@localhost httpd-2.2.29]# make

5,执行make install

[root@localhost httpd-2.2.29]# make install

6,导入至PATH环境变量中

[root@localhost profile.d]# vim apache.sh 
PATH=$PATH:/usr/local/httpd2/bin
[root@localhost profile.d]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/httpd2/bin

7,导入库文件路径

[root@localhost ~]# vim /etc/ld.so.conf.d/httpd2.conf

8,让系统重新生成缓存

[root@localhost ~]# ldconfig -v

9,导入头文件

[root@localhost httpd2]# ln -s /usr/local/httpd2/include/ /usr/include/http2

[root@localhost httpd2]# cd /usr/include/;ls
ctype.h  http2  netipx  shadow.h   utmp.h
[root@localhost include]# ll http2
lrwxrwxrwx. 1 root root 26 Aug 24 13:19 http2 -> /usr/local/httpd2/include/

10,导入帮助手册

[root@localhost ~]# vim /etc/man_db.conf 
MANDATORY_MANPATH       /usr/local/httpd2/man

11,关闭防火墙

[root@localhost bin]# iptables -F

12,运行 apachectl 脚本

[root@localhost httpd-2.2.29]# cd /usr/local/httpd2/bin;ls
apachectl  apu-1-config  checkgid  envvars    htcacheclean  htdigest  httpd
[root@localhost bin]# file apachectl 
apachectl: POSIX shell script, ASCII text executable
[root@localhost bin]# ./apachectl start

13,查看 httpd 服务是否开启(80端口)

[root@localhost bin]# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
       ESTABLISHED
tcp6       0      0 :::80                   :::*                    LISTEN

14,访问 httpd 服务

wKioL1e9SZqx80MyAAAfgcUZYOk902.png

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

(0)
pingskypingsky
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • N28-第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
    2、取出最后登录到当前系统的用户的相关信息。
    3、取出当前系统上被用户当作其默认shell的最多的那个shell。
    4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
    7、显示/var目录下一级子目录或文件的总个数。
    8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
    9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)、创建组distro,其GID为2016;
    (2)、创建用户mandriva, 其ID号为1005;基本组为distro;
    (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
    (4)、给用户mageia添加密码,密码为mageedu;
    (5)、删除mandriva,但保留其家目录;
    (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
    (7)、修改slackware的默认shell为/bin/tcsh;
    (8)、为用户slackware新增附加组admins;

    2017-12-17
  • 26期全程班-第五周博客作业

      1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; # grep “^[[:space:]]\+” /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; # grep “^…

    Linux干货 2017-03-09
  • 20170714上课LINUX入门

    1、安装centos6.9和centos7.3时的分区情况 /dev/sda1 mount /boot 1G – 主分区/dev/sda2 mount / 50G -主分区/dev/sda3 mount /app 40G -主分区/dev/sda4 1k 扩展分区/dev/sda5 swap 2G -逻辑分区(swap分区的大小一般为物理内存的2…

    Linux干货 2017-07-15
  • 函数式编程

    当我们说起函数式编程来说,我们会看到如下函数式编程的长相: 函数式编程的三大特性: immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这样一来,可以让你的程序少很多Bug。因为,程序中的状态不好维护,在并发的时候更不好维护。(你可以试想一下如果你的程序有个复杂的状态,当以后别…

    Linux干货 2016-08-15
  • 作业权限管理

    一、在/data/testdir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。 首先创建三个组g1,g2,g3,题目要求在/data/testdir目录里创建的文件自动属于g1组那么首先要将这个目录的属组改为g1,然后通过更改…

    Linux干货 2016-08-03
  • nginx 基础笔记

    一、Nginx 优点 高性能web,可以支持反向代理 比Apache性能优越,支持更多的并发连接,但资源占用很少,轻量级的web服务器。可以支持高达50000个并发连接数的响应 Nginx 在Linux 2.6+ 使用epoll模型,提供卓越性能 做为负载均衡服务器,可以在内部直接支持PHP和Rails,也可以支持作为HTTP代理服务器对外进行服务 Ngin…

    Linux干货 2016-03-19