linux軟件管理之rpm、yum netstat命令

應用程序:

   程序:Architecture

C語言:源代碼——》(編譯)二進制格式

腳本:解釋器(二進制程序)

源代碼——》編譯——》鏈接——》運行

   程序:

    庫:

        靜態

        動態

        靜態連接(直接把需要的庫文件打包進程序)

        動態連接(將載入內存的庫文件直接調用)

          共享庫

    .so後綴(shared object)

配置文件

程序的組成部分:

   1、二進制程序(二進制文件運行需要依賴於庫,這裏的庫指的是共享庫和程序自身提供的庫)

     庫一般存放在/lib,/usr/lib路徑,應用程序的庫及系統底層glibc庫都存放在/usr/lib路徑

   2、庫

   3、配置文件

   4、幫助文件

系統目錄          

/boot:內核,initrd(initramfs),建議單獨分區

/etc:配置文件

/usr

/var: 外圍的文件系統,存放日誌信息,和運行過程、臨時文件等的區域,可以單獨分區

/dev:設備文件,不能單獨分區,2.6內核版本以後:udev提供動態配置外設的功能

/lib:庫文件

/tmp:可以單獨分區,至少400M空間

/bin:二進制程序

/sbin:二進制程序

/proc:僞文件系統,不能單獨分區,是內核管理時使用的,默認爲空的

/sys:僞文件系統,不能單獨分區,是內核管理時使用的,默認爲空的

/mnt

/media

/home:建議單獨分區

/root:不能單獨分區

/misc:雜項

/opt:早期很多三方軟件,都存放在該目錄

/srv

/usr/share/man:幫助文件


/etc ,/bin, /sbin, /lib, /usr/share/man,默認操作系統啓動會用到的程序,這些目錄不能掛載額外的分區,必須在根文件系統的分區上


另外的路徑用於安裝程序的路徑:

一、/usr

  bin

  sbin

  lib

以上的配置文件也存放在etc目錄下,幫助文件也放在/usr/share/man目錄下

操作系統核心功能,都在以上目錄下,usr目錄可以單獨分區,可以類似像windows系統上,安裝軟件可以安裝到其他盤,但重啓系統程序可能無法正常啓動,但在linux下,可以將所有的程序安裝在usr目錄下,重新格式化安裝/etc,/bin,/sbin目錄即可,安裝的程序還可繼續使用

 

二、/usr/local

  bin

  sbin

  lib

  etc

  man

以上可以理解爲一個獨立體系,通常爲安裝的第三方軟件,建議獨立分區



/proc/cpuinfo 包含了CPU各種支持的指令集


軟件包管理器:

  1、打包成一個文件:二進制程序,庫文件,配置文件,幫助文件

 2、生成數據庫,追蹤所安裝的每一個文件

軟件包管理器的核心功能:

1、製作軟件包

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


readhat,suse,debian

readhat,suse:rpm

 readhat package manager

 rpm is package manager 

debian:dpt


依賴關係,解決方法:

前端工具:yum(Yellowdog update modifier),apt-get

後端工具:rpm,dpt


rpm命令

  rpm:

    數據庫/var/lib/rpm

 rpmbuild:

安裝,查詢,升級,檢驗,數據庫的重建,驗證數據包等工作:

RPM包的命名:

  軟件包名稱:

  組成部分:

    主包:

      bind-9.7.1-e151.i586.rpm

    子包

      bind-libs-9.7.1-e15.1.i586.rpm

       bind-utils-9.7.1-e15.1.i586.rpm

 包名格式:

    name-version-release.arch.rpm

    bind-major.minor.release-release(RPM作者編譯的版本號).arch(平臺).rpm

主版本號:重大改變會改變

次版本號:某個子功能發生重大 變化會改變

發行號:修改了部分bug,調整了一點功能會改變

bind-9.7.1.tar.gz 原代碼

rpm包:

    二進制格式:安裝直接可以運行

    rpm包作者下載源程序,進行編譯配置完成後,製作成rpm包

    源碼格式:需進行編譯,在平臺上編譯能更好的發揮性能

i686:32位平臺

x64、x84是64位平臺

noarch:什麼平臺都可以安裝,bind-9.7.1-1.noarch.rpm

ppc:powper PC平臺安裝使用的,bind-9.7.1-ppc.rpm

rpm安裝:

  rpm -i /PATH/PACKAGE_FILE

     -h 顯示進度,以#號顯示進度,每個#表示2%

     -v 顯示詳細信息,-vv -vvvv

       rpm - ivh /path/to/package_file 

    --nodeps:忽略依賴關係

     --replacepkgs:重新安裝,替換原有的安裝

    --oldpackage:降級

     --force:強行安裝,可以實現重裝或降級

    --test測試可不可以安裝

rpm查詢

  rpm -q /path/package_file:查詢指定的包是否已安裝

    -qa :查詢已安裝的所有的包

    -qi PACKAGE_NAME:查詢指定包的說明信息

   -ql PACKAGE_NAME:查詢指定包安裝後生成的文件列表

   -qf /path/to/somefile:查詢指定的文件是由哪個rpm包安裝生成的

   -qc package_name:查詢指定包安裝的配置文件

   -qd package_name:查詢指定包安裝的幫助文件

   -q --scripts package_name:查詢指定包中包含的腳本

     

如果某rpm包尚末安裝,我們需要查詢其說明信息,安裝以後會生成的文件

rpm -qpi /path/to/package_name(p是指定軟件包的路徑)

rpm -qpl 等用法


rpm升級

rpm -Uvh /path/to/newpackage_name:如果裝有老版本的,則升級:否則安裝

rpm -Fvh /path/to/newpackage_name:如果裝有老版本的,則升級,否則退出不安裝

rpm降級

rpm -ivh --oldpackage /path/to/oldpackage_name

rpm -Uvh --oldpackage /path/to/oldpackage_name

rpm卸載

rpm -e package_name(不能與其他軟件包有依賴,如果有依賴是不允許卸載)

   --nodeps

校驗

 rpm -V package_name 

[root@localhost Packages]# rm -rf /usr/share/zsh/5.0.2/functions/zrecompile
[root@localhost Packages]# vim /usr/share/zsh/5.0.2/functions/zfgcp
[root@localhost Packages]# rpm -V zsh
S.5....T.    /usr/share/zsh/5.0.2/functions/zfgcp
missing     /usr/share/zsh/5.0.2/functions/zrecompile

s.5....T.含義:

 S:文件大小

 M:權限

 5:MD5值

 D:主,次設備號

 L:路徑不匹配

 U:屬主

 G:屬組

 T:修改時間

檢驗來源合法性,及軟件包完整性

加密類型:

 對稱:加密解密使用同一個密鑰

 公鑰:一對兒密鑰,公鑰,私鑰,公鑰隱含於私鑰中,可以提取出來,並公開出去

 單向:

/etc/pki/rpm-gpg/RPM-GPG-KEY-readhat-release 公鑰的存放的位置,校驗需將文件導入RPM包,如下:

rpm -K /papt/pachage_file,檢驗合法性。

  dsa,gpg:驗證來源合法性,也即驗證簽名,可以使用--nosignature,略過此項

 sha1,md5:驗證軟件包完整性,可以使用--nodigest,略過此項

[root@localhost Packages]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #導入密鑰
[root@localhost Packages]# rpm -K zsh-5.0.2-7.el7.x86_64.rpm
zsh-5.0.2-7.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

重建數據庫

/var/lib/rpm

rpm

  --rebuilddb:重建數據庫,一定會重新建立數據庫

  --initdb:初始化數據庫,沒有才建立,有就不用建立



yum repository

文件服務:

  ftp

  web

  file

client:

  配置文件

   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

      記錄的是上面三個文件的時間戳和校驗和

  comps*.xml

      RPM包分組信息



配置文件:/etc/yum.conf

 如何爲yum定義repo文件

[Repo_Nmae]:標識ID

name=:Description

baseurl=:

       ftp://

       http://

       file:///

enabled={1|0}

gpgcheck={1|0}

gpgkey=path


yum命令

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

-y:自動回答爲yes

--nogpgcheck

list :列表

     可以使用格式:yum list all bash*(支持glob)

     all

     available:可用的,倉庫中有但尚未安裝的

     installed:已經安裝的

     updates:可用的升級

clean:  [ packages | metadata | expire-cache | rpmdb | plugins | all ],清理緩存

     

repolist: [all|enabled|disabled]:顯示repo列表,默認顯示enabled


install :安裝

yum install PACKAGE_NAME

update:升級

update_to:升級爲指定版本

remove|erase:卸載

info package_name:等於rpm -qi 查詢指定包的說明信息

provides|whatprovides:查看文件是由哪個安裝包生成的,等於rpm -qf

groupinfo

grouplist:顯示所有組

groupinstall:安裝組

      yum groupinstall "development tools" "development libraries"

group

search STRING1:以字符串查詢軟件包名稱

reinstall:重裝 

localinstall:安裝本地軟件包

    yum localinstall --nogpgcheck PACKAGE_NAME

如何創建yum倉庫步驟:

   createrepo:創建元數據

   createrepo /path/to/soft 

   yum clean all

   yum repolist

  如果需要定義爲主的,需要將使用RPM包分組信息文件重建,如下:

  createrepo -g /root/comps-rhel5-vt.xml /yum/vt



定製:手動編譯安裝

編譯環境,開發環境

開發庫,開發工具

C,C++,perl,java,python


c,c++編譯工具:

gcc:GUN c complier,c

g++:


make:項目管理工具

   makefile:定義了make(GCC,G++)按何種次序去編譯這些源程序文件中的源程序


編譯安裝的三步驟

前提:準備開發環境(編譯環境)

安裝RHLE5“development tools" "development Libraries" 

安裝RHLE6 "development tools" "compatibility libraries"(兼容庫)

#tar

#./configure

     --help :獲取使用

   --prefix=/path/to/somewhere:指定安裝路徑

   --sysconfdir=/path/to/conffile_path:指定配置文件安裝路徑

   功能:1、讓用戶選定編譯特性;2、檢查編譯環境

#make

#make install


示例安裝tengine服務:

下裝source文件,安裝好開發或編譯環境

./configure --prefix=/usr/local/tengine --conf-path=/etc/ 

make

make install

vim /etc/profile--> PATH=$PATH:/usr/local/tengine/sbin(將nginx命令加入環境,可直接使用)

source /etc/profile,加載環境變量 


如果安裝到非默認路徑下,需注意

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,增加MANPATH路徑。或 man -M /path/to/man_dir Command(重啓失效)

#!/bin/bash
#
POSTFIX=`echo $1 |awk -F. '{print $2}'`
if [ "$POSTFIX" != "repo" ];then
   echo -e  "\033[31mcreaterepo Usage: FILENAME.repo\033[0m"
   exit 7
fi

cd /etc/yum.repos.d/
if [ -e $1 ];then
   echo "$1 existed"
   exit 9
else
   touch $1 &> /dev/null
   echo "$1 touch sucessful"
fi

read -p "Enter your repo_id: " REPO_ID
until [ $REPO_ID == 'quit' ];do
      echo "[$REPO_ID]" >> $1
      read -p "Enter your repository name: " REPO_NAME
      echo "name=$REPO_NAME">> $1
      read -p "Enter your repository url: " REPO_URL
      echo "baseurl=$REPO_URL">>$1
      read -p "Enter your enabled value: " REPO_ENABLE
      echo "enabled=$REPO_ENABLE">>$1
      read -p "Enter your gpgcheck value: " REPO_GPGCHECK
      echo "gpgcheck=$REPO_GPGCHECK" >> $1
      read -p "Enter your gpgfile path: " REPO_GPGFILE
      echo "gpgkey=$REPO_GPGFILE">>$1
   read -p "Enter your repo_id agin: " REPO_ID
done




netstat 命令

    -r:顯示路由表

    -n:以數字方式顯示

    -t:建立的TCP連接

    -u:顯示UDP連接

    -l:顯示監聽狀態的連接

    -p:顯示監聽指定的套接字的進程的進程號及進程名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章