91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux軟件包管理

發布時間:2020-05-25 14:48:33 來源:網絡 閱讀:593 作者:Groot 欄目:數據庫


  

  首先linux軟件程序包和windows中的程序包是不兼容的,所以要在linux上使用windows上的程序,需要使用虛擬化工具。

庫級別的虛擬化:

    linux : WinE

    windows: Cywin


而程序開發語言有多種,分為系統級開發,和應用級開發

系統開發語言:

C, C++ 

C/C++程序格式:

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

        編譯開發環境:編譯器、頭文件、開發庫

    二進制格式:文本格式的程序代碼-->編譯器--> 二進制格式(二進制程序、庫文件、配置文件、幫助文件、)


應用級開發語言:

java/Python/perl/ruby/php/delphi/go

java/python程序格式:

    源代碼:編譯成能夠在其虛擬機(jvm/pvm)運行的格式;

        開發環境:編譯器、開發庫

    二進制格式:程序代碼-->編譯器--> 二進制格式(二進制程序、庫文件、配置文件、幫助文件、)


程序包管理:

    源代碼--> 目標二進制格式-->組織成為一個或有限幾個“包”文件;

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

程序包管器分為:

debian系列:deb文件, dpkg包管理器

redhat系列: rpm文件, rpm包管理器


這里重要說下redhat系列的程序包管理“rpm包管理”rpm即為“Redhat Package Manager”現在也為

“RPM Package Manager”之意。


軟件程序包的命名有一定的格式;

源代碼:name-VERSION.tar.gz

    VERSION: major(主版本號).minor(次版本號).release(發行版號)

rpm包命令格式:name-VERSION-release.arch.rpm

    VERSION::major,minor,release

    release.arch : rpm包的發行號


如:bash-4.2.46-19.el7.x86_64.rpm

VERSION: major.minor.release

release:release.OS

常見的arch:

    x86: i386, i486, i586, i686

    x86_64: x64, x86_64, amd64powerpc: ppc

跟平臺無關:noarch


   linux軟件包管理

包的分類與拆包:

Application-VERSION-ARCH.rpm: 主包

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

Application-utils-VERSION-ARHC.rpm:其它子包

Application-libs-VERSION-ARHC.rpm:其它子包


查看二進制程序所依賴的庫文件:

    ldd/PATH/TO/BINARY_FILE

管理及查看本機裝載的庫文件:

    ldconfig

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

    配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

    緩存文件:/etc/ld.so.cache

linux軟件包管理

  

  安裝軟件包時,包之間可能存在依賴關系,甚至循環依賴,如安裝A包,需要先安裝B包,安裝B包需要先安裝C包,而安裝C包則需要先安裝A包,這種循環依賴的安裝,如果只是一步一步的安裝解決依賴關系,那就太耗費人力物力了,這是就需要使用一些前端工具來自動解決依賴關系。


解決依賴包管理工具:

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

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

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

dnf: Fedora 22+ rpm包管理器前端管理工具


程序包管理器:

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

1、包文件組成(每個包獨有)

  RPM包內的文件

  RPM的元數據,如名稱,版本,依賴性,描述等

  安裝或卸載時運行的腳本

2、數據庫(公共)

  程序包名稱及版本

  依賴關系

  功能說明

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

   ...

  存放在/var/lib/rpmlinux軟件包管理


獲取程序包

安裝程序包,首先需要獲取程序包,而獲取程序包較為安全的途徑有以下幾種

(1) 系統發版的光盤或官方的服務器

如:CentOS鏡像:

    https://www.centos.org/download/

    http://mirrors.aliyun.com

    http://mirrors.sohu.com

    http://mirrors.163.com

(2) 項目官方站點

(3) 第三方組織:

  Fedora-EPEL:

    Extra Packages for Enterprise Linux

  Rpmforge:RHEL推薦,包很全

  程序包搜索引擎:

    http://pkgs.org

    http://rpmfind.net

    http://rpm.pbone.net

    https://sourceforge.net

④自己制作

獲取程序包時需注意,檢查其合法性:來源合法性、程序包的完整性。


獲取到程序包之后,就需要安裝或管理程序包了,這里說下rpm包的管理:


rmp包管理:

rpm命令

CentOS系統上rpm命令管理程序包:

 :安裝,升級,卸載,查詢,校驗,數據庫維護

rpm命令:rpm [options] [package_file]

    安裝:-i,--install

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

    卸載:-e,--erase

    查詢:-q,--query

    校驗:-V ,--verify

    數據庫維護:--builddb,--initdb


安裝:

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

    rpm -ivh PACKAGE_FILE

    

    GENERAL OPTIONS: 

        -v:verbose,詳細信息

        -vv: 更詳細的輸出

    [install-options]:

        -h: hash masks輸出進度條;每個#表示2%的進度;

        --test : 測試安裝,檢測并報告依賴慣性系及沖突消息等;

        --nodeps : 忽略依賴關系;不建議使用;

        --replacepkgs : 重新安裝;

        --nosignature: 不檢查來源合法性

        --nodigest:不檢查包完整性

        --noscipts:不執行程序包腳本片斷


如:測試安裝rpm包,可以看到包所需的依賴關系:

linux軟件包管理


程序包安裝時會運行一些腳本做一些準備操作,注意:rpm可以自帶腳本;

  四類: --noscripts(都不執行)

    preinstall:安裝過程開始之前運行的腳本;%pre;     --nopre

    postinstall: 安裝過程完成之后運行的腳本;%post; --nopost

    preuninstall:卸載過程真正開始之前運行的腳本;%preun;  --nopreun

    postuninstall:卸載過程完成之后運行的腳本,%postun;   --nopostun


升級:

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

    -U:升級或安裝

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

    rpm -Uvh PACKAGE_FILE ...

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

    -F:升級

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

    rpm -Fvh PACKAGE_FILE ...


    --oldpackage : 降級安裝;

    --force:強制升級;


注意:

①不要對內核做升級操作;Linux支持多內核版本并存,因此直接安裝新版本內核即可

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

例:

linux軟件包管理


卸載:

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

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

    [--nodeps] :忽略依賴關系

    --text: 僅測試卸載, dry run模式

測試卸載,可以發現卸載時同樣存在著依賴關系

linux軟件包管理

查詢:

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

[select-options]:

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

    -a ,--all : 查詢已安裝的所有包;

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

    -p,--package PACKAGE_FILE :用于實現對未安裝的程序包執行查詢

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

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

相關用法:

linux軟件包管理

[query-options]

    --changelog:查詢RPM包的changlog;

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

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

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

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

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

    -R, --requires:查詢指定程序包的依賴關系;

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

linux軟件包管理

linux軟件包管理


    rpm2cpio 包文件|cpio–itv  :預覽包內文件

    rpm2cpio 包文件|cpio–id “*.conf”:釋放包內文件

 當誤操作損壞某個文件,導致程序不能使用時,如果直接將程序重新安裝,會覆蓋其配置文件,導致先前配置丟失;

 可以將損壞的文件刪除,然后使用 rpm2cpio命令,重新解壓程序包中的指定文件,再將解壓后的文件移動到指定位置,即可使用;可以達到不覆蓋其他文件的情況下,重新修復程序。



校驗:

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

linux軟件包管理

包校驗:

包來源合法性驗正及完整性驗正:

    完整性驗正:SHA256

    來源合法性驗正:RSA

公鑰加密:

    對稱加密:加密、解密使用同一密鑰;

    非對稱加密:密鑰是成對兒的

        public key: 公鑰,公開所有人

        secret key: 私鑰, 不能公開

導入所需要公鑰:

    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    CentOS 7發行版光盤提供:RPM-GPG-KEY-CentOS-7

    rpm -K|checksigrpmfile檢查包的完整性和簽名

    rpm -qagpg-pubkey*  查看已導入的密鑰

[root@centos7 Packages]# rpm -K zsh-5.0.2-14.el7.x86_64.rpm 
zsh-5.0.2-14.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK


linux軟件包管理

linux軟件包管理

rpm數據庫

數據庫重建:

rpm管理器數據庫路徑:/var/lib/rpm

    查詢操作:通過此處的數據庫進行;


獲取幫助:

    CentOS6: man rpm

    CentOS7: man rpmdb

rpm {--initdb|--rebuilddb}

rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] [--root DIRECTORY]

--initdb:初始化數據庫,當前無任何數據庫可實施化創建一個新的;當前有時不執行任何操作;

--rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;

linux軟件包管理


yum命令

前文已經提到安裝軟件包時,包之間可能存在依賴關系,需要使用一些前端工具來自動解決依賴關系。

  解決依賴包管理工具:

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

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

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

    dnf: Fedora 22+ rpm包管理器前端管理工具

CentOS中管理工具: yum, dnf

這里主要說下yum的使用方法:

yum : YellowdogUpdate Modifier;rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定

位軟件包,up2date的替代工具

yum repository: yum repo,存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下)  repodata目錄所在的位置為倉庫應該指向的位置。

倉庫首先需要是文件服務器 (光盤本身也可當作倉庫)

 文件服務器:

    ftp://

    http://

    file:///

yum客戶端的配置文件:

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

    man yum.conf可查看yum.conf的詳細信息

/etc/yum.repos.d/*.repo:為倉庫的執行提供配置

倉庫指向的定義:

【repositoryID】

name=Some name for this repository  

baseurl=url://path/to/repository 

enable={1|0}(默認為1,即啟用本倉庫)

gpgcheck={1|0}(默認為1,即啟用密鑰)

gpgkey=URL(gpg密鑰文件)

enablegroups={1|0}(默認為1,即啟用組管理)

faillovermethod={roundrobin|priority}(當baseurl指向多個時, 默認為:roundrobin,意為隨機挑選, priority:指定優先級)

cost=  默認為1000

例:

自定義倉庫指向:

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

還可以將鏡像光盤當作倉庫:

首先需要掛載光盤:

[root@centos7 ~]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only

然后進入/etc/yum.repos.d/目錄,將CentOS-Base.repo文件改為非repo結尾的文件(使此倉庫無法識別,達到禁止使用此倉庫的目的)

[root@centos7 ~]# cd /etc/yum.repos.d/
[root@centos7 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak

編輯CentOS-Media.repo文件

[root@centos7 yum.repos.d]# vim CentOS-Media.repo

[c7-media]

name=CentOS-$releasever - Media

baseurl=file:///mnt/cdrom

gpgcheck=1

enabled=1

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

這樣即可使用本地倉庫!



yum命令的用法:

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


使用命令創建倉庫:

如:

生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x86_64_.repo倉庫

yum-config-manager --add-repo= http://172.16.0.1/cobbler/ks_mirror/CentOS-X-x86_64/

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

yum-config-manager --enable “倉庫名” 啟用倉庫


顯示倉庫列表:

repolist [all|enabled|disabled]

[root@localhost yum.repos.d]# yum repolist 
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id          repo name        status
Base            CentOS 7         9,007
epel            fedora-epel         8,508
repolist: 17,515


顯示程序包:

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

yum list {available |install | 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] [...]


查看程序包infomation

yum info [...]


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

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


清理本地緩存:

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


構建緩存:

yum  makecache


搜索:

    yum search string1 [string2] [...]

    以指定關鍵字搜索程序包名及summary信息


查看指定包所依賴的capabilities

   yum 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


安裝及升級本地程序包

* localinstall rpmfile1 [rpmfile2] [...]

    (用install替代)

* localupdate  rpmfile1 [rpmfile2] [...]

    (用update替代)


包組管理的相關命令:

groupinstall group1 [group2] [...]

groupupdate group1 [group2] [...]

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

groupremove group1 [group2] [...]

groupinfo  group1 [...]


yum的命令行選項:

--nogpgcheck:禁止進行gpgcheck

-y: 自動回答為“yes”

-q:靜默模式

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

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

--noplugins:    禁用所有插件


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

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

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

    $basearch:基礎平臺;i386

    $YUM0-$YUM9:自定義變量

如:http://server/centos/$releasever/$basearch/


創建yum倉庫:

createrepo [options] <directory>

1、首先進入存放程序包的目錄,使用"createrpo ./"命令在當前目錄生成repodata目錄,進入目錄即可發現生成一些文件

[root@localhost repo]# createrepo ./
[root@localhost repo]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim base.repo

添加下列幾行:

[xen4centos]
name=Xen 4 CentOS6
baseurl=file:///yum/repo/
gpgcheck=0

使用yum repolist命令即可查看倉庫已生成

linux軟件包管理


程序包的編譯安裝

上述說的都是二進制的rpm包,有很多優點:

1、包管理系統簡單,只需要幾個命令就可以實現包的安裝,升級,查詢和卸載;

2、安裝速度快;

但是也有很多缺點:

1、不能看到源代碼;

2、功能選擇不靈活;

3、存在依賴性。


而編譯安裝的程序包即源碼包,則可以彌補這些缺點

源碼包優點:

1、自由選擇所需的功能,

2、開源,如果能力足夠,可以修改源代碼

3、軟件是編譯安裝,所以更加適合自己的系統,更加穩定,效率也更高

4、卸載方便

缺點:

1、安裝過程步驟較多,尤其安裝較大的軟件合集時,容易出現拼寫錯誤

2、編譯時間長,安裝時間比二進制包時間長

3、因為是編譯安裝,安裝過程中一旦報錯新手很難撓解決


程序包編譯安裝:

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


安裝后的配置:

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

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

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

(2) 導入庫文件路徑

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

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

  讓系統重新生成緩存:

    ldconfig [-v]

(3) 導入頭文件

  基于鏈接的方式實現:

    ln -sv

(4) 導入幫助手冊

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

    添加一個MANPATH

例:編譯安裝apache 2.2,并啟動此服務

yum install -y gcc
yum groupinstall -y "Development tools"
yum groupinstall -y " Server Platform Development"
./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2
make
make install

將二進制程序目錄導入至PATH環境變量中

vim /etc/profile.d/httpd2.sh
    PATH=$PATH:/usr/local/apache2/bin

導入庫文件路徑

vim /etc/ld.so.conf.d/httpd2.conf 
    /usr/local/apache2/lib

讓系統重新生成緩存

ldconfig -v

導入頭文件

ln -sv /usr/local/apache2/include /usr/inclcude/httpd2.h

導入幫助手冊

vim /etc/man.config
   MANPATH /usr/local/apache2/man

啟動服務

apachectl start

linux軟件包管理

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贞丰县| 瑞昌市| 枞阳县| 绥棱县| 阿巴嘎旗| 延寿县| 侯马市| 高平市| 辛集市| 阿拉善盟| 长治县| 都江堰市| 灵山县| 四平市| 中西区| 永川市| 山阳县| 原平市| 常熟市| 班戈县| 崇仁县| 和田县| 界首市| 大连市| 确山县| 那坡县| 黄龙县| 睢宁县| 青龙| 肇东市| 林周县| 屯门区| 泽州县| 尼玛县| 图木舒克市| 正阳县| 九龙城区| 信丰县| 西吉县| 饶河县| 宁南县|