軟件包管理
應用程序:
程序,Architecture
C語言:源代碼-->(編譯)二進制格式
腳本:解釋器(二進制程序)
源代碼-->編譯-->連接-->運行
程序
庫
靜態
動態
靜態連接
動態連接
共享庫
配置文件:
dir=/PATH/TO/SOMEWHERE
程序組成部分
二進制程序
庫
配置文件
幫助文件
-----這些就能啓動一個系統----
/etc,/bin,/sbin,/lib
系統啓動須要用到的程序,這些目錄不能掛載額外的分區,必須在根文件系統的分區上
/usr/
bin
sbin
lib
/usr放的是,操做系統核心功能,能夠單獨分區
--------------------
--------第三方-------
/usr/local
bin
sbin
lib
etc
man
/opt
/proc
/sys
不能單獨分區,默認爲空
/dev:設備,不能單獨分區
udev
/root:不能單獨分區
/var:建議單獨分區
/boot:內核,initrd(initramfs)
POST-->BIOS(HD)-->(MBR)bootloader(可以識別相應的文件系統結構,ext2,ext3,xfs...)-->內核
程序:指令+數據
指令:芯片
CPU:普通指令,特權指令
指令集
C語言
Powerpc:二進制格式
x86:彙編
powerpc:彙編
軟件包管理器的核心功能
一、製做軟件包
二、安裝、卸載、升級、查詢、校驗
Redhat,SUSE,Debian
Redhat,SUSE:rpm
Debian:dpt
前端工具:yum,apt-get
後端工具:rpm,dpt
yum:Yellowdog Updater Modified
rpm命令:
rpm:
數據庫:/var/lib/rpm
rpmbuild:
安裝、查詢、卸載、升級、校驗、數據庫的重建等工做
rpm命名:
包:組成部分
主包
bind-9.7.1-1.i586.e15.rpm
子包:
bind-libs-9.7.1-1.i586.e15.rpm
bind-utils-9.7.1-1.i586.e15.rpm
包名格式:
name-version-release.arch
bind-major.minor.release-release.arch.rpm
主版本號,重大改變
次版本號,某個子功能發生重大變化
發行號:修正了部分bug,調整了一點功能
rpm包:
二進制格式(通常都二進制格式)
rpm包做者下載源程序,編譯配置完成後,製做成rpm包
源碼格式
rpm:
一、安裝:
rpm -i /PATH/TO/PACKAGE_FILE
-h:以#號顯示安裝進度,每一個#表示2%
-v:顯示詳細過程
-vv:更詳細的過程
rpm -ivh /PATH/TO/PACKAGE_FILE
--nodeps:忽略依賴關係
--replacepkgs:從新安裝,替換原有安裝
--force:強行安裝,能夠實現重裝或降級
二、查詢
rpm -q PACKAGE——NAME:查詢指定的包是否已經安裝
rpm -qa :查詢已經安裝的全部包
rpm -qi PACKAGE_NAME:查詢指定包的說明信息
rpm -qc PACKAGE_NAME:查詢指定包安裝的配置文件
rpm -ql PACKAGE_NAME:查詢指定包安裝後生成的文件列表
rpm -qf /path/to/somefile:查詢指定的文件是由哪一個rpm包安裝生成的
rpm -q --scripts PACKAGE_NAME:查詢指定包中包含的腳本
rpm -qf /path/to/somefile:查詢指定的文件是由哪一個rpm包安裝生成的
若是某rpm包還沒有安裝,咱們需查詢其說明信息,安裝之後會生成的文件
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpi
三、升級
rpm -Uvh /PATH/TO/PACKAGE_FILE:若是裝有老版本的,則升級,不然,則安裝
rpm -Fvh /PATH/TO/PACKAGE_FILE:若是裝有老版本的,則升級,不然,退出
--oldpackage:降級
四、卸載
rpm -e PACKAGE_NAME
--nodepe
五、校驗
rpm -v PACKAGE_NAME
六、重建數據庫
rpm
--rebuilddb:重建數據庫,必定會從新創建
--initdb:初始化數據庫,沒有才創建,有就不用創建
七、校驗來源合法性,及軟件包完整性
# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-7
rpm -K /PATH/TO/PACKAGE_FILE
dsa,gpg:驗證來源合法性,也即驗證簽名,可使用--nosignature,略過此項
sha1,md5:驗證軟件包完整性,可使用--nodigest,略過此項
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 :導入密鑰文件
=============================
rpm-->yum
HTML:HyperText Markup Language
XML:Extensible Markup Language
XML,JSON:版結構化數據
yum倉庫中的元數據
primary.xml.gz
全部RPM包的列表
依賴關係
每一個RPM安裝生成的文件列表
filelists.xml.gz
當前倉庫中全部RPM包的全部文件列表
other.xml.gz
額外信息,RPM包的修改日誌
repomd.xml
記錄的是上面三個文件的時間戳和校驗和
yum install zsh
comps*.xml:RPM包分組信息
如何爲yum定義repo文件
[Repo_ID]
name=Description
buseurl=
ftp://
http://
file://
enabled={1|0}
gpgcheck={1|0}
yum [options] [command] [package ...]
-y:自動回答爲yes
--nogpgcheck
list:列表
支持glob
all
available:可用的,倉庫中有但還沒有安裝的
installed:已經安裝的
updates:可用的升級
clean:清理緩存
[ packages | headers | metadata | dbcache | all]
repolist:顯示repo列表及其簡要信息
all
enabled:默認
disabled
install:安裝
yum install PACKAGE_NAME
update:升級
update_to:升級爲指定版本
remove|erase:卸載
info:
provides|whatprovides:查看指定的文件或特性是由哪一個安裝包生成的
groupinfo
grouplist
groupinstall
groupremove
groupapdate
/media/cdrom/{ Server,VT,Cluster,ClusterStorage }
如何建立yum倉庫:
createrepo
http://172.16.0.1/yum/{ Server,VT }
RPM安裝:
二進制格式:
源程序-->編譯-->二進制格式
有些特性是編譯選定的,若是編譯未選定此設定,將沒法使用
rpm包的版本會落後於源碼包,甚至落後不少
定製:手動編譯安裝
編譯環境:開發環境
開發庫:開發工具
Linux:C
GUN:C
C,C++:
gcc:GUN C Complier,C
g++:
make:項目管理工具,
makefile:定義了make(gcc,g++)按何種次序去編譯這些源程序文件中的源程序
automake,-->makefile.in-->makefile
autoconf,-->configure
make install
手動編譯安裝的三步驟
前提:準備開發環境(編譯環境)
# ./configure
--help:獲取腳本的使用格式
--prefix=/path/to/somewhere:指定安裝路徑
--sysconfdri=/PATH/TO/CONFFILE_PATH:指定配置文件路徑
功能:一、讓用戶選擇編譯特性,二、檢查編譯環境
# make
#make install
(上面這兩條能夠寫成make &&make install)
編譯軟件包若是咱們把它安裝在非默認路徑下。。
一、要修改PATH環境變量,以可以識別此程序的二進制文件路徑
修改/etc/profile文件
在/etc/profile.d/目錄創建一個以.sh爲名稱後綴的文件,在裏面定義export PATH=$PATH:/path/to/somewhere
二、默認狀況下,系統搜索庫文件的路徑/bin,/usr/lib;要增添額外搜尋路徑
在/etc/ld.so.conf.d/中建立以.conf爲後綴名的文件,然後把要增添的路徑直接寫至此文件中
# ldconfig 通知系統從新搜尋庫文件
-v:顯示從新搜尋庫的過程
三、頭文件:輸出給系統
默認:/usr/include
增添頭文件搜尋路徑,使用連接進行
/usr/local/tengine/include/ /usr/include/
兩種方式:
ln -s /usr/local/tengine/include/* /usr/include/ 或
ln -s /usr/local/tengine/include/ /usr/include/tengine
四、man文件路徑:安裝在--prefix指定的目錄下的man目錄:/usr/share/man
一、man -M /PATH/TO/MAN_DIR COMMAND
二、在/etc/man.config中添加一條MANPATH
netstat命令:
-r:顯示路由表
-n:以數字方式表示
-t:創建tcp鏈接
-u:創建udp
-l:顯示監聽狀態的鏈接
-p:顯示監聽指定的套接字的進程的進程號及進程名
前端