bash shell 包管理系统

包管理系统(PMS)

Linux发行版都采用了某种形式的包管理系统来控制软件和库的安装。PMS利用一个数据库来记录各种相关内容:

  • Linux系统上已安装了什么软件包;
  •  每个包安装了什么文件;
  • 每个已安装软件包的版本。

软件包存储在服务器上,可以利用本地Linux系统上的PMS工具通过互联网访问。这些服务器称为仓库(repository)。可以用PMS工具来搜索新的软件包,或者是更新系统上已安装软件包。Linux中广泛使用的两种主要的PMS基础工具是dpkg和rpm。

基于Debian 的系统

dpkg命令是基于Debian系PMS工具的核心。包含在这个PMS中的其他工具有:apt-get、apt-cache、aptitude

  • apt-get 常用实例

apt-cache search packagename 搜索包
apt-cache show packagename 获取包的相关信息,如说明、大小、版本等
apt-get install packagename 安装包
apt-get install packagename --reinstall 重新安装包
apt-get -f install 修复安装”-f = –fix-missing”
apt-get remove packagename 删除包
apt-get remove packagename --purge 删除包,包括删除配置文件等
apt-get update 更新源
apt-get upgrade 更新已安装的包
apt-get dist-upgrade 升级系统
apt-get dselect-upgrade 使用 dselect 升级
apt-cache depends packagename 了解使用依赖
apt-cache rdepends packagename 是查看该包被哪些包依赖
apt-get build-dep packagename 安装相关的编译环境
apt-get source packagename 下载该包的源代码
apt-get clean 清理无用的包
apt-get autoclean 清理无用的包
apt-get check 检查是否有损坏的依赖

 

基于Red Hat 的系统

基于Red Hat的系统也有几种不同的可用前端工具,其中yum是基于rpm命令行工具的。

rpm命令

  • 获取某个软件包名称:rpm -qa | grep -i package_name
$ rpm -qa | grep -i mysql
MySQL-server-advanced-5.6.20-1.rhel5
MySQL-client-advanced-5.6.20-1.rhel5
  • 获取某个软件的安装位置:rpm -ql package_name
$ rpm -ql MySQL-server-advanced-5.6.20-1.rhel5
/etc/init.d/mysql
/etc/logrotate.d/mysql
/etc/my.cnf
/usr/bin/innochecksum
/usr/bin/my_print_defaults

 

查看

  • 列出所有可安裝的软件清单命令:yum list 
  • 列出已安装包: yum list installed
  • 特定软件详细信息:yum list xterm
  • 某个特定文件输入那个软件包: yum provides file_name
  • 列出所有可更新的软件清单命令:yum check-update /yum list updates

安装与更新

  • 从仓库中安装软件包、所有它需要的库以及依赖的其他包:yum install package_name
  • 手动下载rpm安装文件进行本地安装:yum localinstall package_name.rpm
  • 更新所有软件命令:yum update
  • 更新指定的软件命令:yum update package_name

卸载

  • 只删除软件包而保留配置文件和数据文件:yum remove package_name
  • 要删除软件和它所有的文件:yum erase package_name 

处理损坏的包依赖关系

有时在安装多个软件包时,某个包的软件依赖关系可能会被另一个包的安装覆盖掉。这叫作损坏的包依赖关系。出现了这个问题,先试试下面的命令:

  • yum clean all :清除缓存目录下的软件包及旧的headers

然后试着用yum命令的update选项。有时只要清理了放错位置的文件就可以了。如果还解决不了问题,试试下面的命令:

  • yum deplist package_name:显示了所有包的库依赖关系以及什么软件可以提供这些库依赖关系。

一旦知道某个包需要的库,你就能安装它们了。如果这样仍未解决问题,还有最后一招:

  • yum update --skip-broken

--skip-broken选项允许你忽略依赖关系损坏的那个包,继续去更新其他软件包。这可能救不了损坏的包,但至少可以更新系统上的其他包。

替换yum 仓库

  • 备份/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  • 下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ 
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo CentOS-Base.repo
  • 运行以下命令生成缓存
yum clean all
yum makecache

从源码安装

将文件下载到你的Linux系统上,然后解包。要解包一个软件的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的目录中。在这个目录的列表中,应该能看到README或AAAREADME文件。读这个文件非常重要。该文件中包含了软件安装所需要的操作。

按照README文件中的建议,下一步是为系统配置sysstat。它会检查你的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
[...]

下一步就是用make命令来构建各种二进制文件。make命令会编译源码,然后链接器会为这个包创建最终的可执行文件。和configure命令一样,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\"
[...]

make步骤结束时,可运行的sysstat软件程序就会出现在目录下!但是从那个目录下运行程序有些不便。你会想将它安装到Linux系统中常用的位置上。要这样的话,就必须以root用户身份登录,然后用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*
[...]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值