天天看點

linux安裝軟體程式(Debian【aptitude】、Red Hat系統【yum】、源代碼安裝)————附帶詳細方法

安裝軟體程式

文章目錄

  • ​​安裝軟體程式​​
  • ​​0 總結​​
  • ​​1 包管理基礎​​
  • ​​2 基于Debian 的系統​​
  • ​​2.1 使用`aptitude`​​
  • ​​3 基于Red Hat 的系統​​
  • ​​3.1 使用​​
  • ​​4 源碼安裝​​

0 總結

linux,包管理系統(package management system,PMS),以及用來進行軟體安裝、管理和删除的指令行工具。

何用軟體包管理系統(PMS)在指令行下安裝、更新或删除軟體。雖然大部分

Linux發行版都使用漂亮的GUI工具進行軟體包管理,但是你也可以在指令行下完成同樣的工作。

基于Debian的Linux發行版使用dpkg工具作為指令行與PMS的接口。dpkg工具的一個前端是

​aptitude​

​,它提供了處理dpkg格式軟體包的簡單指令行選項。

基于Red Hat的Linux發行版都以rpm工具為基礎,但在指令行下采用了不同的前端工具。Red

Hat和Fedora用​

​yum​

​安裝和管理軟體包。openSUSE發行版采用​

​zypper​

​來管理軟體,而Mandriva發

行版則采用​

​urpm​

​。

文章讨論了如何安裝僅以源代碼tarball形式釋出的軟體包。​

​tar指令​

​可以從tarball中解包出源

代碼檔案,然後使用​

​configure​

​和​

​make​

​指令從源代碼中建構出最終的可執行程式。

文本内容總結自《Linux指令行與shell腳本程式設計大全》。

1 包管理基礎

Linux中廣泛使用的兩種主要的PMS基礎工具是​

​dpkg​

​​和​

​rpm​

​​。基于Debian的發行版(如Ubuntu和Linux Mint)使用的是​

​dpkg​

​​指令;基于Red Hat的發行版(如Fedora、openSUSE及Mandriva)使用的是​

​rpm​

​指令.

2 基于Debian 的系統

包含在PMS中的工具有:

  • apt-get
  • apt-cache
  • aptitude

最常用的是​

​aptitude​

​​,​

​aptitude工具​

​​本質上是apt工具和dpkg的前端。​

​dpkg​

​​是軟體包管理系統工具,而​

​aptitude​

​則是完整的軟體包管理系統。

列出軟體包所安裝的全部檔案:

dpkg -L package_name      

查找某個特定檔案屬于哪個軟體包:

dpkg --search absolute_file_name      

2.1 使用​

​aptitude​

  • 1,安裝​

    ​aptitude​

    ​:
sudo apt-get install aptitude      

如果遇到了​

​E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?​

​,解決方法為

更改鏡像源:

sudo vi  /etc/apt/sources.list

# 更新
sudo apt-get clean
sudo apt-get update      
  • 2,檢視安裝的包:

鍵入​

​aptitude​

​,進入功能,可以用方向鍵在菜單上移動。選擇菜單選項Installed Packages來檢視已安裝了什麼軟體包。

  • 3,确定準備安裝的軟體包名稱:
aptitude search package_name      

注意:

  • 在每個包名字之前都有一個p或i。如果看到一個i,說明這個包現在已經安裝到了的系統上。如果看到一個p或v,說明這個包可用,但還沒安裝。
  • 4,安裝包:

格式為:

aptitude install package_name      
  • 5,更新包(将所有已安裝的包更新到軟體倉庫中的最新版本):
aptitude safe-upgrade      
  • 6,解除安裝軟體:

隻删除軟體包而不删除資料和配置檔案,可以使用aptitude的remove選項:

sudo aptitude remove package_name      

要删除軟體包和相關的資料和配置檔案,可用purge選項:

sudo aptitude purge package_name      
  • 7,軟體倉庫:

​aptitude​

​​預設的軟體倉庫位置,存儲在檔案​

​/etc/apt/sources.list​

​中。

指定倉庫源,格式如下:

deb (or deb-src) address distribution_name package_type_list      

解釋:

deb或deb-src的值表明了軟體包的類型。deb值說明這是一個已編譯程式源,而deb-src

值則說明這是一個源代碼的源。address條目是軟體倉庫的Web位址。distribution_name條目是這個特定軟體倉庫的發行版版本的名稱。package_type_list條目可能并不止一個詞,它表明倉庫裡面有什麼類型的包。

3 基于Red Hat 的系統

常見的前端工具:

  • yum:在Red Hat和Fedora中使用。
  • urpm:在Mandriva中使用。
  • zypper:在openSUSE中使用。

3.1 使用

  • 1, 要找出系統上已安裝的包,可在shell提示符下輸入如下指令
yum list installed

# 将已安裝包的清單重定向到一個檔案中
yum list installed > installed_software

# 找出某個特定軟體包的詳細資訊
yum list xterm

# 找出系統上的某個特定檔案屬于哪個軟體包
yum provides file_name

# 查找配置檔案/etc/yum.conf歸屬的例子
yum provides /etc/yum.conf      
  • 2,安裝軟體

安裝前先切換到root使用者:

su-      

遠端安裝:

yum install package_name      

本地安裝:

yum localinstall package_name.rpm      
  • 3,更新軟體
# 列出所有已安裝包的可用更新
yum list updates

# 更新某個特定軟體包
yum update package_name

# 全部更新
yum update      
  • 4,解除安裝軟體
# 隻删除軟體包而保留配置檔案和資料檔案
yum remove package_name

# 要删除軟體和它所有的檔案
yum erase package_name      

使用zypper和urpm解除安裝軟體:

前端工具 命 令
urpm  urpme package_name
zypper zypper remove package_name      
  • 5,處理損壞的包依賴關系
yum clean all

yum update      

如果這還解決不了問題,試試下面的指令(這個指令顯示了所有包的庫依賴關系以及什麼軟體可以提供這些庫依賴關系。):

yum deplist package_name      

如果這樣仍未解決問題,還有最後一招(​

​--skip-broken​

​選項允許你忽略依賴關系損壞的那個包,繼續去更新其他軟體包):

yum update --skip-broken      

使用zypper和urpm修複損壞的依賴關系:

前端工具 命 令
urpm  urpmi –clean
Zipper  zypper verify      
  • 6,軟體倉庫(堅持使用通過稽核的倉庫)

檢視軟體來自的倉庫:

yum repolist      

yum的倉庫定義檔案位于​

​/etc/yum.repos.d​

​,如果需要添加倉庫,則需要添加正确的URL,并獲得必要的加密密鑰。

倉庫管理指令:

zypper和urpm的庫
動 作 前端工具 命 令
顯示倉庫 urpm urpmq --list-media
添加倉庫 urpm urpmi.addmedia path_name
顯示倉庫 zypper zypper repos
添加倉庫 zypper zypper addrepo path_name      

4 源碼安裝

  • 1,使用tarball(tar 包)解壓軟體包;
$ tar -zxvf sysstat-11.1.1.tar.gz
sysstat-11.1.1/
sysstat-11.1.1/cifsiostat.c
sysstat-11.1.1/FAQ
sysstat-11.1.1/ioconf.h
sysstat-11.1.1/rd_stats.h
sysstat-11.1.1/COPYING
sysstat-11.1.1/common.h
sysstat-11.1.1/sysconfig.in
sysstat-11.1.1/mpstat.h
sysstat-11.1.1/rndr_stats.h
[...]      

現在,tarball已經完成了解包,所有檔案都已順利放到了一個叫sysstat-11.1.1的目錄。

  • 2,cd指令進入這個新目錄中,然後列出這個目錄的内容;
$ cd sysstat-11.1.1
$ ls
activity.c iconfig prealloc.in sa.h
build INSTALL pr_stats.c sar.c
CHANGES ioconf.c pr_stats.h sa_wrap.c
cifsiostat.c ioconf.h rd_sensors.c sysconfig.in
cifsiostat.h iostat.c rd_sensors.h sysstat-11.1.1.lsm
common.c iostat.h rd_stats.c sysstat-11.1.1.spec
common.h json_stats.c rd_stats.h sysstat.in
configure json_stats.h README sysstat.ioconf
configure.in Makefile.in rndr_stats.c sysstat.service.in
contrib man rndr_stats.h sysstat.sysconfig.in
COPYING mpstat.c sa1.in version.in
count.c mpstat.h sa2.in xml
count.h nfsiostat-sysstat.c sa_common.c xml_stats.c
CREDITS nfsiostat-sysstat.h sadc.c xml_stats.h
cron nls sadf.c
FAQ pidstat.c sadf.h
format.c pidstat.h sadf_misc.c      

在這個目錄的清單中,應該能看到README或AAAREADME檔案(該檔案中包含了軟體安裝所需要的操作)。

  • 3,按照README檔案中的建議,下一步是為系統配置sysstat(Sysstat是一種在Linux系統伺服器中常用的軟體工具包,可以用來監控伺服器的性能)。它會檢查你的Linux系統,確定

    它擁有合适的編譯器能夠編譯源代碼,另外還要具備正确的庫依賴關系。

# ./configure
Check programs:
.
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
[...]
checking for ANSI C header files... (cached) yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking ctype.h usability... yes      

如果哪裡有錯了,在configure步驟中會顯示一條錯誤消息說明缺失了什麼東西。如果你所

用的Linux發行版中沒有安裝GNU C編譯器,那隻會得到一條錯誤資訊。

  • 4,用make指令來建構各種二進制檔案;
# make
–gcc -o sadc.o -c -g -O2 -Wall -Wstrict-prototypes -pipe -O2
-DSA_DIR=\"/var/log/sa\" -DSADC_PATH=\"/usr/local/lib/sa/sadc\"
-DUSE_NLS -DPACKAGE=\"sysstat\"
-DLOCALEDIR=\"/usr/local/share/locale\" sadc.c      

make步驟結束時,可運作的sysstat軟體程式就會出現在目錄下!但是從那個目錄下運作程式

有些不便。如果想将它安裝到Linux系統中常用的位置上,就必須以root使用者身份登

# make install
mkdir -p /usr/local/share/man/man1
mkdir -p /usr/local/share/man/man5
mkdir -p /usr/local/share/man/man8
rm -f /usr/local/share/man/man8/sa1.8*
install -m 644 -g man man/sa1.8 /usr/local/share/man/man8
rm -f /usr/local/share/man/man8/sa2.8*
install -m 644 -g man man/sa2.8 /usr/local/share/man/man8
rm -f /usr/local/share/man/man8/sadc.8*
[...]
install -m 644 -g man man/sadc.8 /usr/local/share/man/man8
install -m 644 FAQ /usr/local/share/doc/sysstat-11.1.1
install -m 644 *.lsm /usr/local/share/doc/sysstat-11.1.1      

繼續閱讀