Linux學習之路-Linux-yum命令【8】---20171217

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目錄下默認存在的倉庫指向配置文件

[[email protected]]#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緩存信息

[[email protected]]#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源設置
    [[email protected]]#pwd
    /etc/yum.repos.d
    [[email protected]]#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

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