安装软件程序


文章目录

  • ​​安装软件程序​​
  • ​​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用户身份登

录(或者用​​sudo命令​​),然后用​​make命令​​的install选项。

# 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