1. 程式人生 > >linux--軟件管理

linux--軟件管理

時間戳 date new install evel meta 重新 單獨 rpm

/usr/share/man

/etc, /bin, /lib
系統啟動就需要用到的程序,這些目錄不能掛載額外的分區, 必須在根文件系統的分區上

/usr/
bin
sbin
lib
操作系統核心功能,可以單獨分區

/usr/local 第三方軟件
bin
sbin
lib
etc
man 單獨分區

/opt


/proc
/sys
不能單獨分區, 默認為空

/dev: 設備,不能單獨分區
udev

/root 不能單獨分區

/var 建議單獨分區

/boot: 內核, inired(initramfs)
內核:

POST-->BIOS(HD)-->(MBR)bootloader(文件系統結構,ext2,ext3,xfs)-->內核

軟件包管理器的核心功能
1.制作軟件包
2.安裝,卸載,升級,查詢,校驗
redhat, suse, debian
redhat, suse : RPM
Redhat Package Manager
RPM is Package Manager
debian : dpt

yum : Yellowdog Update Modifier

rpm命令:
rpm:
數據庫/var/lib/rpm
rpmbuild:

安裝, 查詢, 卸載, 升級, 校驗, 數據庫的重建等工作

rpm命名:
包: 組成部分
主包:
bind-9.7.1-1.i386.el5.rpm
子包:
bind-libs-9.7.1-1.i586.el5.rpm
bind-utils-9.7.1-1.i586.el5.rpm
包名格式:
name-version-release.arch 什麽平臺都可以安裝

查看內核版本
uname -r
-a
安裝
rpm
-ivh /PATH/TO/PACKAGE_FILE
--nodeps : 忽略依賴關系
--replacepkgs : 重新安裝,替換原有安裝
--force : 強行安裝

2.查詢
rpm -q PACKAGE_NAME: 查詢指定的包是否已經安裝
rpm -qa : 查詢已經安裝的所有包

rpm -qi PACKAGE_NAME : 查詢指定包的說明信息;
rpm -ql PACKAGE_NAME : 查詢指定包安裝後生成的文件列表
rpm -qc PACKAGE_NAME : 查詢指定包安裝的配置文件
rpm -qd PACKAGE_NAME : 查詢指定包安裝的幫助文件;
rpm -q --scripts PACKAGE_NAME : 查詢指定包中包含的腳本

rpm -qf /PATH/TO/SOMEFILE : 查詢指定的文件是由哪個rpm包安裝生成的

如果某rpm包尚未安裝,我們需要查詢其說明信息,安裝以後會生成的文件
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpl

3.升級
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果裝有老版本的,則升級; 否則,則退出
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE
--oldpackage : 降級

4. 卸載
rpm -e PACKAGE_NAME
--nodeps

5. 校驗
rpm -V PACKAGE_NAME

6. 重建數據庫
rpm
--rebuild : 重建數據庫, 一定會重新建立
--initdb : 初始化數據庫, 沒有才建立, 有就不用建立

7. 檢驗來源合法性, 及軟件完整性:
加密類型
對稱: 加密解密使用同一個秘鑰
公鑰: 一對秘鑰,公鑰,私鑰: 公鑰隱含於私鑰中,可以提取出來,並公開出去

單向:

ls /etc/pki/rp,-gpg/
RPM-GPG-KEY-redhat-release

rpm -K /APT/TO/PACKAGE_FILE
dsa, gpg: 驗證來源合法性, 也即驗證簽名 : 可以使用--nosignature, 略過此項
sha1, md5 : 驗證軟件包完整性: 可以使用 --nodigest, 略過此項



rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

rpm -K --nodigest

rpm軟件包管理器的一個前端工具
rpm --> yum

HTML: HyperText Mark Language
XML: eXtended Mark 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包分組信息
/etc/yum.conf --> /etc/yum.repos.d
如何為yum定義repo文件
[Repo_Name]
name=Description
baseurl=
ftp://
http://
file:///
enabled={1|0}
gpgcheck={1|0}
gpgkey=


yum [options] [command] [package ...]
-y: 自動回答為yes
--nogpgcheck

list : 列表
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
groupupdate

yum groupinfo "Development Tools"

Linux: C,
GNU: C

gcc: GNU C Complier, C
g++:

make : 項目管理工具,
makefile : 定義了make(gcc, g++) 定義了gcc按何種次序去編譯這些源程序

automake, --> makefile.in --> makefile
autoconf, --> configure

100個可選擇特性,

make install

編譯安裝的三步驟:
前提: 準備開發環境(編譯環境)
安裝"Development Tools" 和 "Development Libraries"

tar
cd
./configure
--help
--prefix=/path/to/somewhere
--sysconfdir=/PATH/TO/CONFFILE_PATH
功能: 1.讓用戶選定編譯特性
2.檢查編譯環境

make
make install

tar xf tengine-1.4.2.tar.gz
cd tengine-1.4.2
./configure --prefix=/usr/local/tenfine --conf-path=/etc/tengine/tenfine.conf
make
make install
/usr/local/tengine/sbin/nginx

1.修改PATH環境變量, 以能夠識別此程序的二進制文件路徑
修改/etc/profile文件
在/etc/profile.d/目錄下建立一個以.sh為名稱後綴的文件, 在裏面定義export PATH=$PATH:/path/to/somewhere
2.默認情況下, 系統搜索庫文件的路徑 /lib, /usr/lib, 要增加額外搜尋路徑
在/etc/ld.so.conf.d/創建以.conf為後綴名的文件,而後把要增添的路徑直接寫到此文件中
ldconfig 通知系統重新搜尋庫文件
-v : 重新搜尋庫的過程

3.頭文件: 輸出給系統
默認: /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
4. man文件路徑: 默認安裝在 --prefix指定的目錄下的man目錄: /usr/share/man

/etc/man.config裏面有定義man搜尋的路徑
1. man -M /PATH/TO/MAN_DIR COMMAND
2. 在/etc/man.config中添加一條MANPATH

netstat命令:
-r: 顯示路由表
-n: 以數字方式顯示

-t: 建立的tcp連接
-u: 顯示udp連接
-l: 顯示監聽狀態的連接
-p: 顯示監聽指定的套接字的進程的進程號及進程名

C環境, C++, perl, java, python

linux--軟件管理