Linux程序包管理與初識磁盤

Linux 程序包管理

  • API:Application Binary Interface(應用程序的二進制接口)
  • ABI:APPlication Program Inertface(應用程序的開發接口)
  • Windows : exe,msi
  • Windows與Linux不兼容
  • ELF:(Executale and Linkable Format):可執行可鏈接格式,linux運行格式
  • PE:(Portable  Executable)可移植可執格式Windows運行格式
  • 庫級別的虛擬化:

  • 要想在Windows與Linux上分別運行對方的應用程序需:
  • WinE,在linux上模擬windows系統
  • cywin:在windows上模擬linux系統
  • 系統級開發:

  •         c/c++:httpd,vsftpd,nginx(服務類應用程序)
  •         go
  • 應用級開發

  •         java /Python/perl/ruby/php:
  •         java:hadoop,hbase,運行java程序要依賴(jvm  java虛擬機解釋器)
  •         Python:openstack(雲操做系統)依賴(Python 虛擬機解釋器pvm)
  • c/c++ 程序格式:

  •          源代碼:文本格式的程序代碼:
  •          編譯開發環境:編譯器 , 頭文件 , 開發庫 ,  
  •          二進制格式:文本格式的程序代碼-->編譯器-->二進制格式(二進制程序, 庫文件,  配置文件 ,幫助文件)
  • java/Python程序格式:

  •        源代碼:要編譯成可以在其虛擬機(jvm/pvm)運行的格式:
  •        開發環境:編譯器 , 開發庫 
  • 項目構建工具: 

  •        c/c++:make
  •        java :maven

 

 程序包管理器:

 

  •  源代碼程序-->可在目標可直接運行的二進制格式(二進制程序, 庫文件,  配置文件 ,幫助文件) -->組織成爲一個或有限幾個"包"文件;
  •   安裝, 升級 , 卸載, 查詢, 校驗
  •  包管理:
  •            redhat:redhat package manager,rpm,"rpm";rpm package manager;
  •   源代碼:name-VERSION.tar.gz
  •           VERSION:major,minor.release
  •  rpm 包命令格式:

  •          name-VERSION-release.arch.rpm
  •          VERSION:major, minor ,release
  •          release:rpm包的發行號
  •          release.os : 2.ei7.i386.rpm
  •          archetecture:操作系統架構(  i386, x64(amd64) , ppc ,noarch)
  •           redis-3.0.2.tar.gz--> redis-3.0.2-1.centos7.x64.rpm(包命名格式)
  •          拆包:主包,子包
  •          主包:name-VERSION-relesase.arch.rpm
  •          子包:name-function-VERSION-relesase.arch.rpm
  •          function:devel, utils ,libs...
  • 包之間的依賴關係:

  •          例:x ,y ,z
  •            x-->y ,z
  •           y -->a , b, c                    
 
  • 前段工具:自動解決依賴關係;

  •            yum:rhel系列系統上 rpm包管理器的前段工具;
  •            apt-get( apt-cache):deb包管理的前段工具;
  •            zypper:suse的rpm管理器嵌段工具;
  •            dnf:Fedora 22+系統上rpm包管理器的前段工具;
  • 功能:將編譯好的應用程序的各組成文件打包成一個或幾個程序文件,從而更方便實現程序包的安裝, 升級, 卸載和查詢等管理操做;
  •              程序報的組成清單(每一個程序包都單獨實現)
  •              文件清單
  •              安裝或卸載時運行的腳本
  •              數據庫(公共)
  •              程序包的名稱和版本;
  •              依賴關係;
  •              功能說明;
  •              安裝生成的個文件的文件路徑及校驗碼信息;
  •               /var/lib/rpm/rpm數據庫
  • 獲取程序包的途徑:

  •              1, 系統發行版的光盤或官方的文件服務器;(或鏡像站點);
  •                 http://mirrors.aliyun.com,
  •                 http://mirrors,163.com
  •              2, 項目的官方站點 
  •              3,第三方組織:EPEL:
 

 Centos系統上rpm命令管理程序;

  •                安裝 ,升級,卸載,查詢和校驗,數據庫維護
  •                rmp: rpm [option][package_file]
  •                安裝:-i --install
  •                升級: -U --update,-F --freshen
  •                卸載:-e --erase
  •                查詢:-q --query
  •                校驗:-V --verify
  •  數據庫維護:--buiddb ,--initdo
  •        安裝:
  •                 rpm {-i|--install} [install-options] PACKAGE_FILE ...
  •                 rpm -ivh PACKAGE _FILE
  •         GENRAL OPTION
  •                 -v:version,詳細信息
  •                 -vv:更詳細信息
  •         [install-option]:
  •                  -h:hash marks輸出進度條;每一個#表示2%的進度;
  •                  --test:測試安裝,
  •                  --nodeps:忽略依賴關係
  •                  --replacepkgs:從新安裝
  •                  --noscripts:不運行腳本
  • rpm能夠自帶腳本:
  •                  四類:
  •                  preinstall:安裝過程完成以後運行的腳本,%pre
  •                  postinstall:安裝過程完成以後運行腳本,%post
  •                  preuninstall:卸載過程真正開始執行以前運行的腳本,%preun-nopreun
  •                  postuninstall:卸載過程完成以後運行的腳本,%potun,--nopostun
  •                  --nosignature:不檢查包簽名信息,不檢查來源合法性,
  •                   --nodigest:不檢查包的完整性信息;
 
  • 升級:

  •               -U:升級或安裝
  •               - F:升級
  •               rpm -Uvh package _file
  •               rpm -Fvh package _file
  •               --oldpackage:降級;
  •               --force:強制升級;
  •  1,不要對內核作升級操做,Linux支持多內和版本並存,所以,直接安裝新版本內核;
  •  2,若是某源程序包的配置文件安裝曾被修改過,升級時,新本版本的程序提供的同一個配置文件不會覆蓋原配置文件,而是把新版本的配置文件重命名(filename.epmenew)後提供;
  •  卸載:
  •               rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts]
  •               [--notriggers] [--test] PACKAGE_NAME ...
  •               --ailmatches:卸載全部匹配指定名稱的程序包的個版本;
  •              -nodeps:hulue依賴關係
  •               -test:測試卸載
 
  •  查詢:

  •               rpm {-q|--query} [select-options] [query-options] 
  •               package_name :查詢指定的程序包是否已經安裝 ,及版本
  •               -a,--all:查看全部已經安裝過的包;
  •              -f :file:查詢指定的文件由那個程序包安裝生成;
  •              -p --package PACKAGE_FILE:用於實現未安裝的程序包進行查詢
  •              --whatprovides CAPABILITY  :查詢指定的CAPANILITY由那個程序包提供
  •              --whatrequires CAPABILITY:查詢指定的CAPANILITY被那個包所依賴;[query-options]
  •              --changelog:查看rpm包的changelog;
  •              -l,list:程序安裝生成的全部文件列表;
  •              -i,info:程序包相關的信息,版本號,大小, 所屬的包組,等;
  •              -c,--cnfigfiles:查詢指定的程序提供的配置文件;
  •              -d --docfiles:查詢指定的程序包提供的文檔;
  •              --provides :查詢指定程序包提供的全部的capanility
  •              -R:查詢指定的程序包的依賴關係; 
  •               --scripts:查詢程序包自帶腳本信息
  • 用法:

  •               -ql package ,   -qf:file,  -qc:package
  •               -qd: package,  -qe packag,  -qp package 
  •               -qpl package_file, -qpi package _file
  •               -qpc package_file
  •  校驗:

  •                rpm -V--verify[select-options][verify-options]

 

  •  包來源合法性驗證和完整性驗證:

  •               來源合法性驗證:
  •                數字簽名
  •                完整性驗證:
  •                獲取並導入信任的包製做者的密鑰;
  •                對於Centos7發行版來講; rpm --import/etc/pki/rpm-gpg RPM-GPG-KEY-CentOS-7
  •  驗證:

  •                1,安裝此組織簽名的程序時,會自動執行驗證;
  •                2,手動驗證 rpm -K  PACKAGE_FILE
  • 數據庫重建:

  •                 rpm管理器數據庫路徑:/var/lib/rpm/
  •                 查詢操做:經過此處的數據庫進行;
  •  獲取幫助:

  •              Centos6:man rpm
  •              Centos7:man rpmdb
  •              rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] [--root DIRECTORY]
  •              --initdb:初始化數據庫,當前無任何數據庫可初始化建立一個新的;當前有時不執行任何操做;
  •              --rebuildb:從新構建,經過讀取當前系統上全部已經安裝的程序包進行從新建立;

 

使用前端工具: yum ,dnf

 

  •             YUM:yellow dog, yellowdog Upadate Modifer
  •             yum repository:yum repo
  •             存儲了衆多rpm包,以及包的相關的元數據文件(放置於特定  目錄下:repodata);
  • 文件服務器:

  •              ftp://     http://   file://
  •  yum客戶端:

  •    配置文件:/etc/yum.cof :爲倉庫的指向提供公共配置
  •               /etc/yum.repos.d/*.repo:爲倉庫的指向提供配置 
  •    倉庫定義:
  •                [repositoryID]
  •                name= xxx some name this repository
  •                baseurl=url ://path/to/repository/
  •                gpgcheck=1|0
  •               例:
  •                [base]
  •                name=base on 172.16.0.1
  •                baseurl=http://172.16.0.1/cobbler/ks_mirror/Centos-6.8_x86_x64/gpgcheck=1
 
  • yum命令的使用

  •                yum [options] [command] [package ...]
  •  顯示倉庫列表:

  •                repolist [all|enabled|disabled] 顯示程序包組\:
  •                 list
  •                 yum list [all | glob_exp1] [glob_exp2] [...]
  •                 yum list available [glob_exp1] [... ]
  • 安裝程序包:
  •                 install package1 [package2] [...]
  •                 reinstall package1 [package2] [...(從新安裝)
  • 檢查升級包:
  •                 update [package1] [package2] [...]
  •                 downgrade package1 [package2] [...](降級)
  • 卸載程序包:
  •                 remove | erase package1 [package2] [...]  
  • 查看程序包infomation簡要信息
  •                   info [...]
  • 查看程序包提供的特性(能夠是某個文件)是由那個程序包所提供的
  •                  provides | whatprovides feature1 [feature2] [...]
  • 清理本地緩存:
  •                   clean  [ packages | metadata | expire-cache | rpmdb | plugins |
  • 構建緩存:makecache
  • 搜索:

  •                   search string1 [string2] [...]
  • 以指定的關鍵字搜索程序包名summary信息
  • 查看指定包的所依賴的capabilities:
  •                  deplist package1 [package2] [...]
  • history查看yum事務歷史:
  •                  history    [info|list|packages-list|packages-info|summary|addoninfo|redo|undo|rollback|new|sync|stats]

包組管理groupinstall:

  •  如何使用光盤當作本地yum倉庫:
  • 1.掛載光盤只某目錄:
  •                例如 /media/cdrom
  •                mount -r /dev/cdrom /media/cdrom(掛載cd光盤)
  • 2.建立配置文件: 
  •            [repositoryID]
  •                name= xxx some name this repository
  •                baseurl=url ://path/to/repository/
  •                gpgcheck=1|0
  •  yum的命令選項:
  •                --nogpgcheck:禁止進行gpg  check;
  •               -y:自動回答"yes  
  •               -q:靜默
  •               --disablerepo=repoidglob:臨時禁用此處hiding的repo
  •               --nopiugins:禁用全部插件
  •  yum的repo配置文件中的可用的變量:
  •               $releasever:當前0S的發行版本號:
  •               $arch:平臺
  •               $basearch:基礎平臺:
  •               %YUM0-YUM9

 建立yum倉庫:

  •               createrrpo [options][directory]
  •  程序包編譯安裝:

  •                testapp -VERSION-release.src.rpm-->安裝後,使用rpmbuild命令製做成二進制格式的rpm包,然後在安裝;
  • 源代碼組織格式:
  •               多文件:文件中的代碼之間,極可能存在的跨文件依賴關係
  • C代碼編譯安裝三步驟:
  •                ./configgure:
  •               1.經過選項傳遞參數,指定啓用特性,安裝路徑等;執行時會參考用戶的指定用戶的指定以及Makefile.in文件生成makefile;
  •               2.檢查依賴到的外部環境:
  •  make:

  •               根據makefile文件,構建應用程序;
  •                make  install
  •  開發工具:
  •                 autoconf,生成configure腳本
  •                 automake:生成Makefile.in
  •                 安裝前查看INSTALL ,README
  • 開源程序源代碼的獲取:
  •                官方自建站點:
  •                apache.org(ASF)
  •                mariadb.org
  •  代碼託管:
  •                 SourForge
  •                 Github.com
  •                 code.google.com
  •                 c/c++:gcc(GNU C Complier)     C編譯器
  • 編譯C源代碼:
  •                 前提:提供開發工具及開發環境
  •                 開發工具:make ,gcc等
  •                 開發環境: 開發庫,頭文件
  •                      glibc:標準庫
  •                 經過"包組"提供開發組件
  •                 Cents6 :"Devrlopment Tools"," Server Platform Development"
  • 第一步: configure腳本
  •                 選項: 指定安裝位置, 指定啓用的特性
  •                --help:獲取其支持使用的選項
  •                選項分類
  • 安裝路徑設定:
  •                  --prefix=/path/to/somewhere:指定默認安裝位置,默認/usr/lolcor
  •                  --sysyconfig=/path/to/somewhere:配置文件安裝位置
  •    System types:
  •                   Optional Features:可選特性
  •                   --disable -FEATURE
  •    Optional Pcakager:可選包
  •                   --with -PAKCAGE[=ARG]
  •                   netstat -tan
  •  第二步:make
  •  第三步:make install
  •  安裝後的配置:

  •  1.導出二進制程序目錄至PATH環境變量中:
  •           編輯文件/etc/profile.d/NAME.sh
  •            export PATH=/PATH/TO/BIN:$PATH
  •  2.導出庫文件路徑:
  •           編輯/etc/so.conf.d/NAME.conf
  •           添加新的庫文件所在目錄至此文件中;
  •  讓系統從新生成緩存:
  •           1dconfig[-v]
  • 3,導出頭文件
  •           基於連接的方式實現:
  •            in -sv
  •  4導出幫助手冊
  •            編輯/etc/man.config文件
  •            添加一個MANPATH
 
 
 

Linux磁盤及基礎管理

  • Disks:提供持久存儲數據功能       
  • 磁盤:機械硬盤,固態;  
  • 機械硬盤(HDD):Hard  Disk Drive.     
  •        機械硬盤機構:
  •               head : 磁頭
  •               track:磁道
  •               sector:扇區
  •               cylinder:柱面
  • 磁盤接口類型:
  •        IDE:並口 133MB/s 
  •        SCSI:並口
  •        SATA:串口 6gbps
  •        SAS: 串口  6gbps
  •        USB:串口,480MB/s       並口:同一線纜能夠接多塊設備;    
  • 設備類型:
  • Linux的哲學思想:一切皆文件:
  •         塊設備(block)隨機訪問,數據交換單位是塊‘
  •         字符設備:char線性訪問,數據交換單位是「字符」;
  •         設備文件:FHS磁盤的設備
  •         /dev/ DEV_FILE
  •         設備文件:關聯至設備的驅動程序;進而可以跟與之對應的硬件設備進行IO通訊
  • 設備編號:
  •          major:主設備號,區分設備類型;用於代表設備所須要的驅動程序
  •          minor:次設備號,區分同類型下的不一樣的設備;是特定設備的訪問入口;
  •          mknod命令;
  •          mknod - make block or character special files
  •          mknod [OPTION]... NAME TYPE [MAJOR MINOR]
  •         -m MODE:建立後的設備文件的訪問權限;
  •  設備文件名:ICANN
  •  磁盤:
  •      IDE:/dev/sd
  •          例:/dev/sda,/dev/sdb
  •          SCSI,SATA,USB,SAS,:/dev/sd【a-z】
  • 分區:
  •          /dev/sda#:
  •               /dev/ada1...
  • 引用設備的方式:
  •         設備文件名, 卷標 , UUID;

磁盤分區:MBR,GPT

  • 分區劃分基於柱面
  • MBR: Master Boot Record(使用32位表示扇區數,分區不超過2T)
  •         0磁道0扇區:512bytes
  •         446bytes:bootloader,程序,引導啓動操做系統程序:
  •         64bytes:分區表
  •         4主分區;3主分區1擴展, n邏輯分區
  • 主分區和擴展分區的標識:1-4
  •         邏輯分區:5+

建立及管理分區:

      分區建立工具; parted ,fdisk'gdisk:

  •        fdisk :建立MBR分區
  •        gdisk :建立GPT分區
  •        lsblk:列出設備塊
  • 建立分區使用:
  •         fdisk提供了一個交互式接口來管理分區,他有許多子命令,分別用於不一樣的管理功能;
  •         全部的操做均在內存中完成,沒有直接同步到磁盤; 直到使用w命令保存至磁盤之上;
  •         fdisk命令:fdisk -l [-u] [device...]
  •         fdisk-l [-u ][ device...]
  • 經常使用命令:
  •         n: 建立新分區
  •         d: 刪除已有分區
  •         t:修改分區類型
  •         l:查看全部已經ID
  •         w:保存並退出
  •         q:不保存並退出
  •         m:查看幫助信息
  • GPT:GUID(Globals Unique Identifiers)  partitiontable支持128個分區,使用64位,支持8Z(512Byte/blok)64Z (4096bYyte/blok) 使用128UUID(Universally Unique Identifier)表示次磁盤和分區GPT分區表自動備份再投尾兩份,並有CRC校驗位UEFI(統一擴展固件接口)硬件支持GPT,使用操做系統啓動   在已經分區而且已經掛載其中某個分區的磁盤設備上建立的新分區,內核可能在常見文成後沒法直接識別;
  • 查看:
  •         cat /proc/partitions
  • centos6通知內核從新讀取硬盤分區表(刷新操做)
  • 新增分區: 
  •          partx-a /dev/DEVICE
  • 刪除分區:
  •          patx -d --nr -M-N /dev/DEVICE    
  •  centos7使用: partprobe
  •         parted: pared的操做都是實時生效,
  •         用法: parted[option]...設備,命令,參數...
相關文章
相關標籤/搜索