欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Linux系統(tǒng)程序包管理

Linux程序包管理

成都創(chuàng)新互聯(lián)的客戶來自各行各業(yè),為了共同目標(biāo),我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括成都網(wǎng)站設(shè)計、成都做網(wǎng)站、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。

API:Application Program Interface

ABI:Application Binary INnterface

Unix-like,系統(tǒng)上的二級制格式的應(yīng)用程序文件格式為

ELF

Windows系統(tǒng)的二級制格式的應(yīng)用程序文件格式為:

exe,msi

庫級別的虛擬化:

Linux:WinE,可以實現(xiàn)在Linux系統(tǒng)上運(yùn)行Windows的二進(jìn)制可執(zhí)行程序

Windows:Cywin,可以實現(xiàn)在Windows系統(tǒng)上運(yùn)行Linux的位二進(jìn)制可執(zhí)行程序

各種編程語言當(dāng)中,大體上可以分為

系統(tǒng)級開發(fā):

C/C++:httpd,vsftpd,nginx對性能要求比較苛刻,并且是服務(wù)級的應(yīng)用程序,不需要圖形界面

go

應(yīng)用級開發(fā):

java/python/perl/ruby/php:

java:hadoop,hbase,程序運(yùn)行依賴于jvm

python:openstack,程序運(yùn)行依賴于pvm

perl:(perl)解釋器

ruby:

C/C++程序格式:

源代碼:文本格式的程序代碼;

編譯開發(fā)環(huán)境:編譯器,頭文件,開發(fā)庫

二進(jìn)制格式:文本格式的程序代碼-->編譯器-->二進(jìn)制格式(二進(jìn)制程序,庫文件,配合文件,幫助文件)

Java/python程序格式:

源代碼:編譯成能夠在其虛擬機(jī)上運(yùn)行的格式;

開發(fā)環(huán)境:編譯器、開發(fā)庫

二進(jìn)制

項目構(gòu)建工具:

c/c++:make

java:maven

程序包管理器:

源代碼 -->目標(biāo)二進(jìn)制格式-->組織成為一個或有限幾個“包”文件;

安裝、升級、卸載、查詢、校驗

程序包管理器:

debain:dpt,dpkg,".deb"

redhat:redhat package manager ,rpm ".rpm" rpm is package manager;

S.u.S.E: 

Gentoo:ports

ArchLinux:

源代碼:name-vVERSION.tar.gz

VERSION:major.minor,release

rpm包命名格式:

name-VERSION-release.arch.rpm

VERSION:major.minor.release

release.arch:rpm包的發(fā)行號

release.os:2.el7.i386.rpm

archetecture:i386,x64(amd64),ppc,noarch

redis-3.0.2-1.centos7.x64.rpm

依賴關(guān)系:

前端工具:自動解決依賴關(guān)系;

yum:rhel系統(tǒng)系統(tǒng)上rpm包管理器的前端工具;

apt-get(apt-cache):deb包管理器的前端工具;

zypper:suse的rpm管理器前端工具;

dnf:Fedora 22+ 系統(tǒng)上rpm包管理器的前端工具;

程序包管理器:

功能:將編譯好的應(yīng)用程序的各組成文件打包成一個或多個程序包文件,從而更方便快捷的實現(xiàn)程序包的安裝、升級、卸載和查詢等管理操作;

1.程序包的組成清單(每個程序包都單獨實現(xiàn)):

文件清單

安裝或卸載時運(yùn)行的腳本

2.數(shù)據(jù)庫(公共)

程序包的名稱和版本;

依賴關(guān)系;

功能說明;

安裝生成的各文件的文件路徑及校驗碼信息;

獲取程序包的途徑:

1.系統(tǒng)發(fā)行版的光盤或官方的文件服務(wù)器(或鏡像站點)

2.項目的官方站點

3.第三方組織:

(a)EPEL:

(b)搜索引擎

http://pkgs.org

http://rpmfind.net

http://rpm.pbone.net

4.自己制作rpm包

建議:檢查其合法性

來源合法性;

程序包的完整性;

CentOS系統(tǒng)上rpm命令管理程序包:

安裝、升級、卸載、查詢和校驗、數(shù)據(jù)庫維護(hù)

rpm命令:rpm [OPTIONS] [PACKAGE_FILE]

安裝:-i,--install

升級:-U,--update,-F,--freshen

卸載:-e,--erase

查詢:-q,--query

校驗:-V,--verify

數(shù)據(jù)庫維護(hù):--builddb,--initdb

安裝:

rpm {-i|--install} [install-options] PACKAGE_FILE ...

rpm -ivh PACKAGE_FILE...

GENERAL OPTIONS:

-v:verbose,詳細(xì)信息

-vv:更詳細(xì)的輸出

[install-options]

-h:hash marks輸出進(jìn)度條;每個#表示%2的進(jìn)度;

--test:測試安裝,檢查并報告依賴關(guān)系及沖突消息等;

--nodeps:忽略依賴關(guān)系;不建議;

--replacepkgs:重新安裝

注意:rpm可以自帶腳本;

四類:

preinstall:安裝過程開始之前運(yùn)行的腳本,%pre

postinstall:安裝過程完成之后運(yùn)行的腳本,%post

preuninstall:卸載過程真正開始執(zhí)行之前運(yùn)行的腳本,%preun

postuninstall:卸載過程完成之后運(yùn)行的腳本,%postun

--nosignature:不檢查簽名信息,不檢查來源合法性;

--nodigest:不檢查包完整性信息

升級:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

-U:升級或安裝;

-F:升級

rpm -Uvh PACKAGE_FILE ...

rpm -Fvh PACKAGE_FILE ...

--oldpackage:降級;

--force:強(qiáng)制升級;

注意:

1.不要對內(nèi)核做升級操作;

Linux支持多內(nèi)核版本并存,因此,直接安裝新版本內(nèi)核;

2.如果某源程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

卸載:

rpm  {-e|--erase}  [--allmatches]  [--nodeps]  [--noscripts] [--test] PACKAGE_NAME ...

        --allmatches:卸載所有匹配指定名稱的程序包的各版本;

        --nodeps:忽略依賴關(guān)系;

        --test:測試卸載,dry run模式

    查詢:

    rpm {-q|--query} [select-options] [query-options]

    [select-options]

    PACKAGE_NAME:查詢指定的程序包是否已經(jīng)安裝,及其版本;

    -a,--all:查詢所有已經(jīng)安裝過的包;

    -f,--file FILE:查詢指定的文件由哪個程序包安裝生成;

    -p,--package PACKAGE_FILE:用于實現(xiàn)對未安裝的程序包執(zhí)行查詢操作;

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

    --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;

    [query-options]

    --changelog:查詢rpm包的changelog;

    -l,--list:程序包安裝生成的所有文件列表;

    -i,--info:程序包相關(guān)的信息,版本號、大小、所屬的包組,等;

    -c,--configfiles:查詢指定的程序包提供的配置文件;

    -d,--docfile:查詢指定的程序包提供的文檔;

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

    -R,--requires:查詢指定的程序包的依賴關(guān)系;

    --scripts:查看程序包自帶的腳本片段;

    -p PACKAGE_FILE :查詢尚未安裝的程序包的相關(guān)信息;

    用法:

    -qi PACKAGE:查詢某包的簡要說明信息

    -qf FILE:查詢指定的文件由哪個程序包安裝生成;

    -qc PACKAGE:查詢某包安裝完成后生成的所有配置文件

    -ql PACKAGE:查詢某包安裝生成的文件列表

    -qd PACKAGE:查詢某包安裝完成后生成的所有幫助文件

    校驗:

      rpm {-V|--verify} [select-options] [verify-options]

  S file Size differs

      M Mode differs (includes permissions and file type)

      5 digest (formerly MD5 sum) differs

      D Device major/minor number mismatch

      L readLink(2) path mismatch

      U User ownership differs

      G Group ownership differs

      T mTime differs

      P caPabilities differ

包來源合法性驗證和完整性驗證;

來源合法性驗證:

完整性驗證:

獲取并導(dǎo)入信任的包制作者的密鑰:

對于CentOS發(fā)行版來說:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

驗證;

1.安裝此組織簽名的程序時,會自動執(zhí)行驗證;

2.手動驗證:rpm-K PAVKAGE_FILE

數(shù)據(jù)庫重建:

rpm管理器數(shù)據(jù)庫路徑:/var/lib/rpm/

查詢操作:通過此處的數(shù)據(jù)庫進(jìn)行;

獲取幫助:

centos6:man rpm

centos7:man rpmdb

rpm {--initdb|--rebuilddb}

--initdb:初始化數(shù)據(jù)庫,當(dāng)前無任何數(shù)據(jù)庫可創(chuàng)建一個新的;當(dāng)前有時不執(zhí)行任何操作;

--rebuilddb:重建構(gòu)建,通過讀取當(dāng)前系統(tǒng)上的所有已經(jīng)安裝過的程序包進(jìn)行重新創(chuàng)建;

CentOS:yum dnf

URL:ftp://

yum repository:yum repo

存儲了眾多的rpm包,以及包的相關(guān)的元數(shù)據(jù)文件(放置于特定目錄下:repodata)

文件服務(wù)器:

ftp://

http://

nfs://

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}

默認(rèn)為roundrobin

cost=

默認(rèn)為1000

yum命令的用法:

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

 command is one of:

        * install package1 [package2] [...]

        * update [package1] [package2] [...]

        * update-to [package1] [package2] [...]

        * update-minimal [package1] [package2] [...]

        * check-update

        * upgrade [package1] [package2] [...]

        * upgrade-to [package1] [package2] [...]

        * distribution-synchronization [package1] [package2] [...]

        * remove | erase package1 [package2] [...]

        * autoremove [package1] [...]

        * list [...]

        * info [...]

        * provides | whatprovides feature1 [feature2] [...]

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

        * makecache [fast]

        * groups [...]

        * search string1 [string2] [...]

        * shell [filename]

        * resolvedep dep1 [dep2] [...]

           (maintained for legacy reasons only - use repoquery or yum provides)

        * localinstall rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use install)

        * localupdate rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use update)

        * reinstall package1 [package2] [...]

        * downgrade package1 [package2] [...]

        * deplist package1 [package2] [...]

        * repolist [all|enabled|disabled]

        * repoinfo [all|enabled|disabled]

        * repository-packages  <enabled-repoid>  <install|remove|remove-or-reinstall|remove-

       or-distribution-synchronization> [package2] [...]

         *  version  [  all  |  installed  |  available  | group-* | nogroups* | grouplist |

       groupinfo ]

        * history  [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐

       back|new|sync|stats]

        * load-transaction [txfile]

        * updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all

       | check-running-kernel]

        * fssnapshot [summary | list | have-space | create | delete]

        * fs [filters | refilter | refilter-cleanup | du]

        * check

        * help [command]

    顯示倉庫列表:

    repolist [all|enabled|disabled]

    顯示程序包:

    list

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

    yum list {available|installed|updates} [glob_exp1] [...]

    所有可用的;所有可安裝的;所有可升級的

    安裝程序包:

    install package1 [package2] [...]

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

    升級指定程序包:

    update [package1] [package2] [...]

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

    檢查可用升級包:

    check-update

    卸載程序包:

    remove | erase package1 [package2] [...]

    查看程序包的information:

    info [...]

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

    provides | whatprovides featurel [feature2] [...]

    清理本地緩存:

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

    構(gòu)建緩存:

    makecache

    搜索:

    search string1 [string2] [...]

    以指定的關(guān)鍵字搜索程序包及summary信息;

    查看指定包所依賴的capabilities:

    deplist  package1 [package2] [...]

    查看yum事務(wù)歷史:

    history  [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐

       back|new|sync|stats]

    安裝及升級本地程序包:

    *localinstall rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use install)

        *localupdate rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use update)

    包組管理的相關(guān)命令:

    groups [...]

    groupinstall group1 [group2] [...]

    groupupdategroup1 [group2] [...]

    grouplist [hidden] [groupwildcard] [...]

    groupremove group1 [group2] [...]

    groupinfo group1 [...]

        * search string1 [string2] [...]

    如何使用光盤當(dāng)做本地yum倉庫:

    (1)掛載光盤至某目錄,例如/media/cdrom

    # mount /dev/cdrom /media/cdrom

    (2)創(chuàng)建配置文件

    [CentOS7]

    name=

    baseurl=

    gpgcheck=

    enabled=

    yum的命令行選項:

    --nogpgcheck:禁止進(jìn)行g(shù)pg check;

    -y:自動回答為“yes”

    -q:靜默模式

    --disablerepo=repoidglog:臨時禁用此處指定的repo;

    --enablerepo=repoidglob:臨時啟用此處指定的repo;

    --noplugins:禁用說有插件;

    yum的repo配置文件中可用的變量:

    $releasever:當(dāng)前OS的發(fā)行版的主版本號;

    $arch:平臺;

    $basearch:基礎(chǔ)平臺;

    $YUM0-$YUM9

    http://mirrors.magedu.com/centos/$releasever/$basearch/os

    創(chuàng)建yum倉庫;

    createrepo [options] <directory>

    程序包編譯安裝:

    testapp-VERSION-release.src.rpm -->安裝后,使用rpmbuild命令制作成二進(jìn)制格式的rpm包,而后再安裝;

    源代碼 --> 預(yù)處理 --> 編譯 --> 匯編 --> 鏈接 --> 執(zhí)行

    源代碼組織格式:

    多文件:文件中的代碼之間,很可能存在跨文件依賴關(guān)系;

    C、C++:make(configure --> Makefile.in --> makefile)

    java:maven

    編譯安裝三步驟:

    ./configure:

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

    2.檢查依賴到的外部環(huán)境;

    make:

    根據(jù)makefile文件,構(gòu)建應(yīng)用程序;

    make install

    開發(fā)工具:

    autoconf:生成configure腳本;

    automake:生成Makefile.in

    注意:安裝前查看INSTALL,README

    開源程序源代碼的獲取:

    官方自建站點:

    Apache.org

    mariadb.org

    ...

    代碼托管:

    SourceForge

    Github.com

    code.google.com

    c/c++:gcc(GNU C Complier)

    編譯C源代碼:

    前提:提供開發(fā)工具及開發(fā)環(huán)境

    開發(fā)工具:make gcc等

    開發(fā)環(huán)境:開發(fā)庫,頭文件

    glibc:標(biāo)準(zhǔn)庫

    通過“包組”提供開發(fā)組件

    CentOS 6: "Development Tools

    編譯安裝

第一步:configure腳本

選項:指定安裝位置、指定啟用的特性

--help: 獲取其支持使用的選項

選項分類:

安裝路徑設(shè)定:

--prefix=/PATH: 指定默認(rèn)安裝位置,默認(rèn)為/usr/local/

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

System types:支持交叉編譯

Optional Features: 可選特性

--disable-FEATURE

--enable-FEATURE[=ARG]

Optional Packages: 可選包,

--with-PACKAGE[=ARG],依賴包

--without-PACKAGE,禁用依賴關(guān)系

第二步:make

第三步:make install

安裝后的配置:

(1) 二進(jìn)制程序目錄導(dǎo)入至PATH環(huán)境變量中;

編輯文件/etc/profile.d/NAME.sh

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

(2) 導(dǎo)入庫文件路徑

編輯/etc/ld.so.conf.d/NAME.conf

添加新的庫文件所在目錄至此文件中;

讓系統(tǒng)重新生成緩存:

ldconfig[-v]

(3) 導(dǎo)入頭文件

基于鏈接的方式實現(xiàn):

ln -sv

(4) 導(dǎo)入幫助手冊

編輯/etc/man.config|man_db.conf文件

添加一個MANPATH

本文標(biāo)題:Linux系統(tǒng)程序包管理
URL鏈接:http://chinadenli.net/article2/jijioc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司云服務(wù)器網(wǎng)站導(dǎo)航移動網(wǎng)站建設(shè)定制開發(fā)域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司