Linux 系統下軟件安裝與管理

Linux 系統下軟件安裝與管理

一、二進制(RPM)程序包概述

1、二進制程序包的組成部分:

二進制文件、庫文件、配置文件、幫助文件

[root@dayi123 ~]# rpm -qpl/mnt/cdrom/Packages/httpd-2.4.6-40.el7.centos.x86_64.rpm

/etc/httpd             

/etc/httpd/conf          #二進制程序包組成部分配置文件

/etc/httpd/conf.d

……

/usr/sbin/httpd          #二進制程序包組成部分二進制文件

……

/usr/lib64/httpd/modules/mod_access_compat.so

/usr/lib64/httpd/modules/mod_actions.so  #二進制程序包組成部分庫文件

……

/usr/share/man/man8/rotatelogs.8.gz      #二進制程序包組成部分幫助文件

/usr/share/man/man8/suexec.8.gz

……

2、二進制程序包管理器

(1)debian:deb文件, dpkg包管理器

(2)redhat: rpm文件, rpm包管理器

3、二進制程序包的命名:

如:httpd-2.4.6-40.el7.centos.x86_64.rpm

說明:

    http:軟件包名

    2.4.6:軟件版本

    40:軟件編譯版本

    el7.centos:適合的硬件平臺

    x86_64:適合的硬件平臺

    .rpm:包擴展名

4、rpm包的分類:

1)主包:Application-VERSION-ARCH.rpm

2)開發子包:Application-devel-VERSION-ARCH.rpm

3)其他子包:Application-utils-VERSION-ARHC.rpm

4)其他子包:Application-libs-VERSION-ARHC.rpm

如httpd包:

[root@dayi123 ~]# ls /mnt/cdrom/Packages/httpd*     

/mnt/cdrom/Packages/httpd-2.4.6-40.el7.centos.x86_64.rpm

/mnt/cdrom/Packages/httpd-devel-2.4.6-40.el7.centos.x86_64.rpm

/mnt/cdrom/Packages/httpd-manual-2.4.6-40.el7.centos.noarch.rpm

/mnt/cdrom/Packages/httpd-tools-2.4.6-40.el7.centos.x86_64.rpm

5、程序包之間的依賴關係

(1)依賴關係:二進制程序包之間一般存在的依賴關係有:樹形依賴,環形依賴及模塊依賴。

(2)查看庫文件及依賴關係:

1)查看二進制程序所依賴的庫文件:ldd /PATH/TO/BINARY_FILE

    2)顯示本機已經緩存的所有可用庫文件名及文件路徑映射關係:/sbin/ldconfig -p

    3)庫文件的配置文件(如果想添加新的庫文件,可在/etc/ld.so.conf.d下新建以.conf結尾的文件,在文件中添加庫文件路勁即可):/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

    4)庫文件的緩存文件:/etc/ld.so.cache

[root@dayi123 ld.so.conf.d]# ldd /bin/ls    #查看二進制程序依賴的庫文件

 linux-vdso.so.1=>  (0x00007ffc17f8c000)

 libselinux.so.1=> /lib64/libselinux.so.1 (0x00007f91c6e60000)

 libcap.so.2 =>/lib64/libcap.so.2 (0x00007f91c6c5b000)

……

[root@dayi123 ld.so.conf.d]# /sbin/ldconfig –p  #查看本機緩存的可用庫文件

302 libs found in cache `/etc/ld.so.cache'

 p11-kit-trust.so(libc6,x86-64) => /lib64/p11-kit-trust.so

 libzzipwrap-0.so.13 (libc6,x86-64) =>/lib64/libzzipwrap-0.so.13

 libzzipmmapped-0.so.13 (libc6,x86-64) =>/lib64/libzzipmmapped-0.so.13

(3)解決依賴包的管理工具:

    1)yum:rpm包管理器的前端工具

2)apt-get:deb包管理器前端工具

3)zypper: suse上的rpm前端管理工具

4)dnf: Fedora 18+ rpm包管理器前端管理工具

6、程序包管理器:

(1)功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作

(2)包文件組成(每個包獨有)

RPM包內的文件、RPM的元數據(如名稱,版本,依賴性,描述等)、安裝或卸載時運行的腳本

(3)數據庫(公共):/var/lib/rpm

包含內容:程序包名稱及版本、程序包之間依賴關係、程序包功能說明、包安裝後生成的各文件路徑及校驗碼信息

二、RPM包管理

1、包名與包全名:

(1)包全名:操作的包時沒有安裝的rpm包時,要使用包全名,而且要注意路徑

(2)包名:操作已經安裝的軟件包時,使用包名,是搜索/var/lib/rpm中的數據庫

2、通過rpm進行軟件包的安裝:

(1)安裝:rpm {-i|--install} [install-options] PACKAGE_FILE…

     選項說明:-i(install):安裝

               -v(verbose):顯示詳細信息

               -h(hash):顯示進度

(2)常用安裝選項

    --test: 測試安裝,但不真正執行安裝,即dry run模式

    --nodeps:忽略依賴關係

--replacepkgs實現軟件覆蓋安裝

--replacefiles對一個已經存在的文件進行覆蓋安裝

--nosignature: 安裝時不檢查來源合法性

--nodigest:安裝時不檢查包完整性

--noscripts:安裝時不執行程序包腳本

#rpm安裝軟件

[root@dayi123 ld.so.conf.d]# rpm -ivh /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

Preparing...                         ################################# [100%]

Updating / installing...

  1:tree-1.6.0-10.el7               ################################# [100%]

#安裝完成後在此安裝時提示已安裝

[root@dayi123 ld.so.conf.d]# rpm -ivh/mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

Preparing...                         ################################# [100%]

        packagetree-1.6.0-10.el7.x86_64 is already installed

#實現覆蓋安裝

[root@dayi123 ld.so.conf.d]# rpm -ivh /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

--replacepkgs

Preparing...                         ################################# [100%]

Updating / installing...

  1:tree-1.6.0-10.el7               ################################# [100%]

[root@dayi123 ld.so.conf.d]# rpm -ivh/mnt/cdrom/Packages/php-5.4.16

-36.el7_1.x86_64.rpm

error: Failed dependencies:    #部分軟件安裝時需要安裝依賴軟件

       php-common(x86-64) = 5.4.16-36.el7_1 is needed byphp-5.4.16-36.el7_1.x86_64

       php-cli(x86-64) = 5.4.16-36.el7_1 is needed byphp-5.4.16-36.el7_1.x86_64

3、通過rpm進行軟件包的升級

(1)升級:如果原程序包的配置文件安裝後曾被修改,升級時,新版本的提供的同一個配置文件並不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)後保留

1)升級方法

rpm{-U|--upgrade} [install-options] PACKAGE_FILE...(即:rpm –Uvh PACKAGE_FILE)

rpm{-F|--freshen} [install-options] PACKAGE_FILE...(即:rpm–Fvh PACKAGE_FILE)

2)兩種方法的區別:

upgrade:安裝有舊版程序包,則“升級”如果不存在舊版程序包,則“安裝”

freshen:安裝有舊版程序包,則“升級”如果不存在舊版程序包,則不執行升級操作

(2)降級:--oldpackage

(3)強制安裝(功能等同於覆蓋安裝):--force

rpm –ivh –force PACKAGE_FILE

#更新軟件

[root@dayi123 ~]# rpm -Uvh/mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

Preparing...                          ################################# [100%]

Updating / installing...

  1:tree-1.6.0-10.el7                #################################[100%]

#強制安裝軟件包

[root@dayi123 ~]# rpm -ivh --force/mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm     

Preparing...                         ################################# [100%]

Updating / installing...

  1:tree-1.6.0-10.el7               ################################# [100%]

(4)升級內核(Linux支持多內核,不建議升級內核,直接安裝新內核即可):

[root@dayi123 Packages]# uname –r    #查看當前的系統版本

2.6.32-642.el6.x86_64

[root@dayi123 Packages]# rpm -ivhkernel-2.6.32-696.el6.x86_64.rpm

error: Failed dependencies:   #安裝內核時提示需要安裝依賴包

       kernel-firmware >= 2.6.32-696.el6 is needed bykernel-2.6.32-696.el6.x86_64

[root@dayi123 Packages]# rpm -ivhkernel-2.6.32-696.el6.x86_64.rpm kernel-firmware

-2.6.32-696.el6.noarch.rpm   #同時安裝內核和依賴包

Preparing...               ########################################### [100%]

  1:kernel-firmware       ########################################### [ 50%]

   2:kernel                ###########################################[100%]

安裝完成後重啓系統生效,安裝完成後配置文件/etc/grub.conf中會多一個開機啓動選項,重啓系統時,也會多一個選項。主要配置文件如下:

default=0       #默認啓動那一項

timeout=5      #開機時grub等待時間

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.32-696.el6.x86_64)    #0個啓動項

        root(hd0,0)

        kernel/vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=68b0f8ab-7ccc-4fc4-8bbc-a9

92f91e9847 rd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MDSYSFONT=latarcyrheb

-sun16 c

rashkernel=auto  KEYBOARDTYPE=pcKEYTABLE=us rd_NO_DM rhgb quiet

        initrd/initramfs-2.6.32-696.el6.x86_64.img

title CentOS 6 (2.6.32-642.el6.x86_64)   #第一個啓動項

        root(hd0,0)

        kernel/vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=68b0f8ab-7ccc-4fc4-8bbc-a9

92f91e9847 rd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MDSYSFONT=latarcyrheb

-sun16 c                      

4、通過rpm軟件包的查詢

(1)查詢命令:rpm {-q|--query} [select-options] [query-options]

(2)[select-options]

-a: 所有包

-f: 查看指定的文件由哪個程序包安裝生成

-p rpmfile:針對尚未安裝的程序包文件做查詢操作

--whatprovides:查詢指定的CAPABILITY(能力)由哪個包所提供

--whatrequires:查詢指定的CAPABILITY(能力)被哪個包所依賴

[root@dayi123 ~]# rpm -qf /bin/ls    #查詢ls命令有哪個軟件包生成

coreutils-8.4-43.el6.x86_64

#查詢未安裝的軟件包的信息

[root@dayi123 ~]# rpm -qp/mnt/cdrom/Packages/php-5.3.3-49.el6.x86_64.rpm

php-5.3.3-49.el6.x86_64

#查詢bash所提供的能力被那些包所依賴

[root@dayi123 ~]# rpm -q --whatrequires /bin/bash

glibc-common-2.12-1.192.el6.x86_64

nss-softokn-freebl-3.14.3-23.el6_7.x86_64

groff-1.18.1.4-21.el6.x86_64

……

(3)[query-options]

--changelog:查詢rpm包的changelog

-c: 查詢程序的配置文件

-d: 查詢程序的文檔

-i: 查詢軟件包信息

-l: 查看指定的程序包安裝後生成的所有文件

--scripts:程序包自帶的腳本

--provides: 列出指定程序包所提供的CAPABILITY

-R: 查詢指定的程序包所依賴的CAPABILITY

#查看php安裝完成後生成的所有配置文件

[root@dayi123 ~]# rpm -qpl/mnt/cdrom/Packages/php-5.3.3-49.el6.x86_64.rpm  

/etc/httpd/conf.d/php.conf

/usr/lib64/httpd/modules/libphp5.so

/var/lib/php/session

/var/www/icons/php.gif

#查詢已安裝的軟件包信息(只能查詢到通過rpm安裝的軟件包信息)

[root@dayi123 Packages]# rpm -qi tree

Name        :tree                         Relocations:(not relocatable)

Version     :1.5.3                             Vendor: CentOS

Release     :3.el6                         Build Date:Wed 14 Jan 2015 08:21:02 PM

……

#查詢未安裝的軟件包的信息

[root@dayi123 ~]# rpm -qpi/mnt/cdrom/Packages/net-tools-1.60-114.el6.x86_64.rpm

Name        :net-tools                    Relocations: (not relocatable)

Version     :1.60                              Vendor:CentOS

Release     :114.el6                       Build Date:Wed 22 Mar 2017 07:52:14

 ……

#查看vim的配置文件的信息

[root@dayi123 ~]# rpm -qc vim-common--5.el6_8.1.x86_64.rpm

/etc/vimrc

#查詢爲安裝的軟件的配置信息

[root@dayi123 cdrom]# rpm -qpc/mnt/cdrom/Packages/php-5.3.3-49.el6.x86_64.rpm

/etc/httpd/conf.d/php.conf

[root@dayi123 cdrom]# rpm -qR tree   #查詢已安裝的軟件包的依賴性

libc.so.6()(64bit) 

libc.so.6(GLIBC_2.2.5)(64bit) 

libc.so.6(GLIBC_2.3)(64bit) 

#查詢爲安裝的軟件包的依賴性

[root@dayi123 cdrom]# rpm -qpR/mnt/cdrom/Packages/java-1.5.0-gcj-1.5.0.0

-29.1.el6.x86_64.rpm

……

/usr/bin/gij 

/usr/bin/rebuild-gcj-db 

/usr/bin/rebuild-gcj-db 

/usr/lib64/security/classpath.security 

……

5、rpm包校驗

(1)校驗方法:rpm –V 已安裝的包名

              rpm –V 指定RPM包中的文件

(2)校驗的信息說明:

    1)S:文件大小是否改變

    2)M:文件的類型或文件的權限是否改變

    3)5:md5校驗和是否發生改變(即判斷文件內容是否發生改變)

    4)D:設備中的從代碼是否發生改變

    5)L:文件路徑是否改變

    6)U:文件的屬主是否發生改變

    7)G:文件的屬組是否發生改變

    8)T:文件的修改時間是否發生改變

[root@dayi123 cdrom]# rpm -V vim-common  #校驗vim包的信息

S.5......  c/etc/vimrc                     #大小和md5值發生改變

S.5......  c/etc/vimrc

6、rpm包中文件提取

(1)用法:rpm2cpio 包全名 | cpio  -idv .文件絕對路徑

     說明:rpm2cpio:將rpm轉化爲cpio格式的命令

          cpio:穿件軟件檔案文件和從檔案文件中提取文件

(2)cpio選項說明:

     -i:還原

     -d:還原時自動新建目錄

     -v:顯示還原過程

(3)刪除/bin/ls命令並進行還原

[root@dayi123 Packages]# rpm -qf /bin/ls   #查看/bin/ls屬於哪個軟件包

coreutils-8.4-43.el6.x86_64

[root@dayi123 Packages]# mv /bin/ls /tmp/  #/bin/ls移走

[root@dayi123 Packages]# ls              #ls命令不能正常使用

-bash: ls: command not found [root@dayi123 ~]# rpm2cpio/mnt/cdrom/Packages/coreutils

-8.4-46.el6.x86_64.rpm | cpio -idv ./bin/ls  #提取ls命令到當前的/bin/ls目錄下

./bin/ls

25240 blocks

[root@dayi123 ~]# cp ./bin/ls /bin/   #將當前目錄ls命令複製到/bin/ls

[root@dayi123 ~]# ll               #ls命令可以正常使用

total 116

-rw-r--r--. 1 root root 3944 Apr  2 22:12 1.txt.Z

-rw-------. 1 root root 1057 Mar 30 16:07 anaconda-ks.cfg

drwxr-xr-x. 2 root root 4096 Apr 17 22:16 bin

7、rpm包中文件提取

(1)數據庫目錄:/var/lib/rpm

(2)數據庫初始化:

rpm{--initdb|--rebuilddb}:如果事先不存在數據庫,則新建之,否則,不執行任何操作。

rebuilddb:重建已安裝的包頭的數據庫索引目錄

三、YUM

1、yum概述

(1)作用:

1)可解決軟件包相關依賴性,可在多個庫之間定位軟件包

2)存儲了衆多rpm包,以及包的相關的元數據文件(放置於特定目錄repodata下)

(2)yum支持的文件服務器:ftp://,http://,file://

2、yum配置文件

(1)yum配置文件:

/etc/yum.conf:爲所有倉庫提供公共配置

/etc/yum.repos.d/*.repo:爲倉庫的指向提供配置

(2)yum配置文件中可用的變量:

$releasever:當前OS的發行版的主版本號

$arch:平臺,i386,i486,i586,x86_64等

$basearch:基礎平臺;i386, x86_64

$YUM0-$YUM9:自定義變量

(3)自建yum配置文件:

需要將/etc/yum.repos.d/下所有文件註釋或刪除,自己新建”*.repo”yum配置文件,配置及說明如下

[centos7]         #進行rpm包數字驗證

name=CentOS-$releasever – Plus    #容器的名稱說明

baseurl=http://172.18.0.1/cobbler/ks_mirror/$releasever/  #配置yum源地址

            http://mirrors.aliyun.com/repo/     #可以指定多個yum源地址

gpgcheck=0       #是否對軟件包進行數字簽名驗證,是0則不驗證,1則需要驗證

#gpgcheck=1時,需要制定公鑰地址

#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

enabled=1        #啓用yum倉庫

 

[epel]            #配置擴展的yum倉庫

baseurl=http://172.18.0.1/fedora-epel/$releasever/$arch/

gpgcheck=0

enabled=1

(4)配置本地光盤yum源 

1)掛載光盤到指定目錄(或不掛載,自動讓光盤掛載到/misc/cd目錄下,centos7下需要安裝”autofs”軟件,在使用光盤文件時自動會將光盤掛載到/misc/cd目錄下)

[root@dayi123 cd]$yum install autofs –y    #centos7安裝autofs軟件

[root@dayi123 cd]$systemctl start autofs   #啓動autofs軟件

[root@dayi123 cd]$systemctl enable autofs  #設置autofs自啓動

Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service

to /usr/lib/systemd/system/autofs.service.

[root@dayi123 cd]$cd /misc/cd      #進入/misc/cd目錄

[root@dayi123 cd]$df -h

Filesystem     Size  Used Avail Use% Mounted on

/dev/sda3       18G  3.8G   14G 22% /

/dev/sda1      497M  118M  379M 24% /boot

tmpfs           98M   36K   98M  1% /run/user/1020

/dev/sr0       7.3G  7.3G     0 100% /misc/cd #當使用光盤是自動掛載到此目錄下 

……

2)配置光盤yum源,

[root@dayi123 yum.repos.d]$cat test.repo       #光盤yum源配置文件

[centosCD]

name=centos7

baseurl=file:///misc/cd

gpgcheck=1

gpgkey=file:////misc/cd/RPM-GPG-KEY-CentOS-7

[root@dayi123 yum.repos.d]$yum repolist       #查看可用yum

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

repo id                       repo name                          status

centosCD                      centos7_cdrom                      9,007

repolist: 9,007

(5)國內常用的yum地址:

阿里雲:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/S

阿里雲(epel):https://mirrors.aliyun.com/epel/$releasever/x86_64

也可以將自己yum註釋掉,使用wget下載國內yum源repo文件:

常用yum源repo文件地址:

網易yum源:

修改“vi /etc/yum/pluginconf.d/fastestmirror.conf and set enable=0

cd /etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo wget http://mirrors.163.com/.help/CentOS

-Base-163.repo

yum makecache  //生成緩存

搜狐yum地址:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.sohu.com/help/CentOS-Base-sohu.repo

阿里yum源:

CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo

3、用命令生成.repo文件

(1)生成:yum-config-manager --add-repo=http://172.16.0.1/cobbler/ks_mirror/7/

(2)啓用與關閉yum倉庫:

    禁用倉庫:yum-config-manager --disable “倉庫名"

    啓用倉庫:yum-config-manager --enable “倉庫名”

    備註:如果yum-config-manager命令不能使用,則需要安裝yum-utils包,即:yum –y install yum-utils

[root@dayi123 ~]# yum-config-manager--add-repo=http://172.16.0.1/cobbler/ks_mirror/7/

Loaded plugins: fastestmirror     #生成yum

adding repo from: http://172.16.0.1/cobbler/ks_mirror/7/

[172.16.0.1_cobbler_ks_mirror_7_]

name=added from: http://172.16.0.1/cobbler/ks_mirror/7/

baseurl=http://172.16.0.1/cobbler/ks_mirror/7/

enabled=1

[root@dayi123 ~]# yum-config-manager --disable centos7 #關閉名名稱爲centos的源

Loaded plugins: fastestmirror

repo:centos7 ============================================

[centos7]

……

[root@dayi123 ~]# yum repolist all       #查看所有的yum源列表             

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

repo id        repo name                                             status

172.16.0.1_cobbler_ks_mirror_7_   added from: http://172.16.0.1/cobbler/ks_mirror/7

/    enabled:  9,007    #剛生成的yum

centos7/7       centos7                                        disabled

!epel/7       centosepel                                      enabled: 11,349

repolist: 20,356

4、yum命令:

(1)yum命令用法:

yum [options] [command] [package ...]

(2)常用的yum命令:

1)顯示倉庫列表:yum repolist [all|enabled|disabled]

[root@dayi123 ~]# yum repolist   #只顯示可用的yum倉庫列表

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

repo id               repo name                                     status

172.16.0.1_cobbler_ks_mirror_7_ added from:http://172.16.0.1/cobbler/ks_mirr  9,007

!epel/7                centosepel                                    11,349

repolist: 20,356

2)顯示程序包:

yumlist

yumlist [all | glob_exp1] [glob_exp2] [...]

yumlist {available|installed|updates} [glob_exp1] [...]

3)安裝程序包:

yuminstall package1 [package2] [...]

yumreinstall package1 [package2] [...] (重新安裝)

[root@dayi123 ~]# yum install remove telnet   #同時安裝多個程序包

Loaded plugins: fastestmirror

Resolving Dependencies

--> Running transaction check

……

[root@dayi123 ~]# yum install telnet vim      #重新安裝程序包

Loaded plugins: fastestmirror

……

4)升級程序包:

yumupdate [package1] [package2] [...]

yumdowngrade package1 [package2] [...] (降級)

5)檢查那些程序包可以升級:

yumcheck-update

6)卸載程序包:

yumremove | erase package1 [package2] [...]

(3)yum命令的查看功能:

1)yum info [包名]   查看程序信息

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

yumprovides | whatprovides [feature1]……

3)清理本地緩存(清除的是/var/cache/yum/$basearch/$releasever緩存):

yumclean all

構建緩存:yum makecache

[root@dayi123 ~]# yum clean all    #清理所有的緩存

Loaded plugins: fastestmirror

Cleaning repos: centos7 epel

Cleaning up everything

Cleaning up list of fastest mirrors

[root@dayi123 ~]# ll -dh /var/cache/yum/x86_64/7/  #查看清理後緩存大小

drwxr-xr-x. 9 root root 4.0K Apr 15 13:07/var/cache/yum/x86_64/7/

4)以指定的關鍵字搜索程序包名及命令所在的包

[root@dayi123 yum.repos.d]# yum search ifconfig   #查看ifconfg屬於哪個包

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

……

moreutils.x86_64 : Additional unix utilities

net-tools.x86_64 : Basic networking tools

python-psutil.x86_64 : A process and system utilitiesmodule for Python

5)查看指定包所依賴的capabilities:

[root@dayi123 yum.repos.d]# yum deplist net-tools   #查看net-tools包所依賴的功能

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

package: net-tools.x86_64 2.0-0.17.20131004git.el7

  dependency:/bin/sh

   provider:bash.x86_64 4.2.46-19.el7

  dependency:libc.so.6(GLIBC_2.14)(64bit)

   provider:glibc.x86_64 2.17-105.el7

6)查看yum事務歷史:

yumhistory [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

yumhistory

yumhistory info 6

yumhistory undo 6

[root@dayi123 yum.repos.d]# yum history   #查看yum安裝歷史記錄

Loaded plugins: fastestmirror

ID     | Commandline             | Date and time    | Action(s)      | Altered

-------------------------------------------------------------------------------

    23 | reinstallvim            | 2017-04-15 12:49 |Reinstall      |    1  

    22 | removetelnet            | 2017-04-15 12:48 |Erase          |    1  

21 | -y install yum-utils     | 2017-04-15 12:31 | Install        |   3  

……

 

[root@dayi123 yum.repos.d]# yum history info 23 #查看yum23歷史記錄中安裝信息

Loaded plugins: fastestmirror

Transaction ID : 23

Begin time     :Sat Apr 15 12:49:42 2017

Begin rpmdb    :478:4a514a26dbb81641679e760948d0b5dfb41560ec

End time      :            12:49:43 2017 (1seconds)

#撤銷歷史記錄中第六條操作(即卸載第六條記錄中安裝的軟件)

[root@dayi123 yum.repos.d]# yum history undo 6 

Loaded plugins: fastestmirror

Undoing transaction 6, from Wed Mar 29 11:46:39 2017

    Install nano-2.3.1-10.el7.x86_64@c7-media

[root@dayi123 yum.repos.d]# yum history undo 24   #撤銷剛纔操作,即安裝該軟件

Loaded plugins: fastestmirror

Undoing transaction 24, from Sat Apr 15 13:34:03 2017

    Erasenano-2.3.1-10.el7.x86_64 @c7-media

7)yum日誌文件:/var/log/yum.log

5、yum包組管理命令

(1)查看組:yum grouplist [hidden] [groupwildcard] [...]

[root@dayi123 yum.repos.d]# yum grouplist    #查看yum組列表

Loaded plugins: fastestmirror

There is no installed groups file.

Maybe run: yum groups mark convert (see man yum)

Loading mirror speeds from cached hostfile

Available Environment Groups:

   Minimal Install

   Compute Node

(2)安裝組包:yum groupinstall group1 [group2] [...]

(3)更新組包:yum groupupdate group1 [group2] [...]

(4)刪除組包:yum groupremove group1 [group2] [...]

(5)查看組信息yum groupinfo group1 [...]

Centos7.2最小化安裝後安裝桌面:

[root@dayi123 yum.repos.d]# history

1047  yummakecache                 #新建緩存

1048  yumgrouplist                   #查看可用的包組

1049  yumgroupinstall "GNOME Desktop" #安裝桌面

#建立鏈接文件,開機自動啓動桌面

1050 ln  -sf/lib/systemd/system/graphical.target /etc/systemd/system/default.target

[root@dayi123 yum.repos.d]# reboot    #重啓系統,即可進入桌面

6、yum的命令行選項:

(1)--nogpgcheck:禁止進行gpgcheck,即安裝不進行軟件包的校驗

(2)-y: 自動回答爲“yes”,不用輸入“y”確認

(3)-q:靜默模式,安裝時沒有輸出

(4)--disablerepo=repoidglob:臨時禁用此處指定的repo

(5)--enablerepo=repoidglob:臨時啓用此處指定的repo

(7)--noplugins:禁用所有插件

7、搭建yum倉庫

    有些時候,使用網絡yum源或者光盤yum不方便,或者要使用yum安裝自己製作的rpm包,此時,可以自己搭建yum源,將需要的軟件放入yum倉庫中。

(1)安裝前準備工作:

         1)安裝vsftpd軟件(fpt服務端軟件)

CentOS7中:

[root@dayi123 ~]$yum install vsftpd –y    #安裝vsftpd軟件

Loaded plugins: fastestmirror, langpacks

……

[root@dayi123 ~]$systemctl start vsftpd   #啓動vsftpd

[root@dayi123 ~]$systemctl enable vsftpd  #設置vsftpd開機自啓動

CentOS6中:

[root@dayi123 ~]$yum install vsftpd –y

[root@dayi123 ~]$/etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@dayi123 ~]$chkconfig vsftpd on

    2)關閉防火牆(爲了能夠訪問防火牆服務,需要在iptables中添加規則或關閉iptables)

CentOS7中:

[root@dayi123 ~]$systemctl stop firewalld

[root@dayi123 ~]$systemctl disable firewalld

CentOS6中:

[root@dayi123 ~]$/etc/init.d/iptables stop

[root@dayi123 ~]$chkconfig iptables off

    3)安裝完成並關閉防火牆後可通過網頁測試ftp,能正常打開,則表示ftp服務搭建成功(如下圖所示)

wKiom1j4AJnyiTMuAADCHuPJTLo790.png-wh_50

(2)配置yum源      

    1)配置yum倉庫

    Vsftpd安裝成功之後,會自動在創建目錄/var/ftp/pub目錄用於存放fpt共享文件,我們還需要在此目錄下創建存放rpm包的目錄及repodate文件,然後將需要的包拷貝到yum倉庫中即可

[root@dayi123 ~]$mkdir /var/ftp/pub/CentOS7 –p  #創建存yum倉庫目錄

[root@dayi123 ~]$mkdir /var/ftp/pub/CentOS7/Packages #常見用於存放rpm包的目錄

#拷貝rpm文件到yum倉庫中

[root@dayi123 ~]$cp /mnt/cdrom/java.*   /var/ftp/pub/CentOS7/Packages/      

[root@dayi123 ~]$createrepo /var/ftp/pub/CentOS7/  #生成repodate文件

Spawning worker 0 with 43 pkgs

Workers Finished

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

[root@dayi123 ~]$ll /var/ftp/pub/CentOS7/

total 4

drwxr-xr-x. 2 root root 4096 Apr 19 07:48 repodata

    2)在客戶端配置yum源:

[root@dayi123 ~]$cat /etc/yum.repos.d/test.repo   #客戶端配置文件

[centos7.2]

name=centos7.2

baseurl=ftp://172.16.250.102/pub/CentOS7/

gpgcheck=1

gpgkey=file:////misc/cd/RPM-GPG-KEY-CentOS-7

[root@dayi123 ~]$yum repolist   #查看生成yum源信息

Loaded plugins: fastestmirror, langpacks

Repository 'app' is missing name in configuration, usingid

Loading mirror speeds from cached hostfile

repo id                         repo name                        status

centos7.2                       centos7.2                        43

repolist: 43

四、編譯安裝軟件(以安裝httpd服務爲例)

1、編譯安裝前準備工作:

(1)安裝gcc、及Development and Creative Workstation(cnetos6爲Development tools)等編譯環境

(2)去相應官方網站下載源碼包到指定目錄並解壓。

[root@dayi123 Package]$cd /data/Package

[root@dayi123 Package]$ wget http://apache.fayea.com//httpd/httpd-2.2.32.tar.bz2

[root@dayi123 Package]$tar -xvf httpd-2.2.32.tar.bz2

[root@dayi123 Package]$cd httpd-2.2.32

[root@dayi123 httpd-2.2.32]$ls

ABOUT_APACHE    CMakeLists.txt  INSTALL         NWGNUmakefile

acinclude.m4    config.layout  InstallBin.dsp  os

Apache-apr2.dsw configure       LAYOUT          README

Apache.dsw      configure.in    libhttpd.dep    READMENaNake

apache_probes.d docs            libhttpd.dsp    README.platforms

ap.d            emacs-style     libhttpd.mak    ROADMAP

build           httpd.dep       LICENSE         server

BuildAll.dsp    httpd.dsp       Makefile.in     srclib

BuildBin.dsp    httpd.mak       Makefile.win    support

buildconf       httpd.spec      modules         test

CHANGES         include         NOTICE          VERSIONING

:在編譯安裝前需要查看INSTALL和README文件,裏面有安裝信息

2、編譯安裝

(1)在軟件解壓目錄下執行:./configure

    執行./configure時有很多選項,可通過./configure –help查看,常用的選項有:

    --prefix=/PATH: 指定默認安裝位置,默認爲/usr/local/

    --sysconfdir=/PATH:配置文件安裝位置

    System types:支持交叉編譯

執行./configure的作用:

    1)通過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的指定以及makefile.in文件生成makefile

    2)檢查依賴到的外部環境,如依賴的軟件包

[root@dayi123 httpd-2.2.32]$./configure –help   #查看選項及幫助信息

`configure' configures this package to adapt to manykinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...),specify them as

VAR=VALUE.  Seebelow for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:

  -h, --help              display this help and exit

      --help=short        display options specific to thispackage

     --help=recursive    display theshort help of all the included packages

  -V,--version           display versioninformation and exit

  -q, --quiet,--silent   do not print `checking ...'messages

#執行./configure

[root@dayi123 httpd-2.2.32]$./configure  --prefix=/data/httpd --sysconfdir=/etc/httpd

checking for chosen layout... Apache

checking for working mkdir -p... yes

……

注:在執行的過程中,某些依賴包沒有安裝會報錯,需要通過yum安裝後再執行./configure

checking for APR... no

configure: error: APR not found.  Please read the documentation.

#提示沒有ARP

[root@dayi123 httpd-2.2.32]$yum search apr 

#可通過yum查看apr屬於哪個包,一般爲提示的信息-devel

Loaded plugins: fastestmirror, security

Loading mirror speeds from cached hostfile

apr-devel.i686 : APR library development kit

apr-devel.x86_64 : APR library development kit

……

[root@dayi123 httpd-2.2.32]$yum install apr-util-devel –y  #安裝apr-util-devel

#安裝完成後繼續

[root@dayi123 httpd-2.2.32]$./configure  --prefix=/data/httpd --sysconfdir=/etc/httpd

(2)執行make

    作用:根據makefile文件,構建應用程序

(3)執行make install

    作用:複製文件到相應的路勁

[root@dayi123 httpd-2.2.32]$make install      #執行make install

Making install in srclib

make[1]: Entering directory`/data/Package/httpd-2.2.32/srclib'

Making install in pcre

make[2]: Entering directory`/data/Package/httpd-2.2.32/srclib/pcre'

#執行make install完成後會在指定的目錄生成相應的文件

[root@dayi123 httpd-2.2.32]$ls /data/httpd/ /etc/httpd/  

/data/httpd/:

bin  build  cgi-bin error  htdocs  icons include  logs  man manual  modules

 

/etc/httpd/:

extra  httpd.conf  magic mime.types  original

3、安裝編譯完成後的操作

(1) 二進制程序目錄導入至PATH環境變量中:

    編輯文件/etc/profile.d/NAME.sh加入exportPATH=/PATH/TO/BIN:$PATH

[root@dayi123 ~]$cat /etc/profile.d/httpd.sh    #PATH變量中增加httpd啓動路徑

export PATH=$PATH:/data/httpd/bin/       

[root@dayi123 ~]$. /etc/profile.d/httpd.sh     #使配置生效

[root@dayi123 ~]$apachectl start            #啓動httpd服務

(2) 導入庫文件路徑

    編輯/etc/ld.so.conf.d/NAME.conf,添加新的庫文件所在目錄至此文件中

    讓系統重新生成緩存:ldconfig[-v]

(3) 導入幫助手冊

    編輯/etc/man.config|man_db.conf文件,添加一個MANPATH


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章