Linux deb的管理

一、deb简介

DEBDebian软件包格式的文件扩展名,跟Debian的命名一样,DEB也是因Debra Murdock而得名,她是Debian创始人Ian Murdock的太太。

Debian包是Unixar的标准归档,将包文件信息以及包内容,经过gzip和tar打包而成。处理这些包的经典程序是dpkg,经常是通过Debian的apt-get来运作。通过Alien工具,可以将deb包转换成rpm、tar.gz格式。

deb包在Linux操作系统中类似于windows中的软件包(exe),几乎不需要什么复杂的编译即可通过鼠标点击安装使用。此外,deb广泛应用于越狱后iOS软件及MeeGo(含Maemo软件)中。

deb 是 Unix 系统(其实主要是 Linux )下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。由于 Unix 类系统对权限、所有者、组的严格要求,而 deb 格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要。

deb 包本身有三部分组成:

1、数据包,包含实际安装的程序数据,文件名为 data.tar.XXX;

2、安装信息及控制脚本包,包含 deb 的安装说明,标识,脚本等,文件名为 control.tar.gz

3、最后一个是 deb 文件的一些二进制数据,包括文件头等信息,一般看不到,在某些软件中打开可以看到。

二、deb安装

1、apt-get

sudo apt-get install + 包名,这是最快也是最省事的安装方式。

APT可以自动的检查依赖关系,通过预设的方式来获得相关软件包,并自动安装配置它。事实上,在多数情况下,我们推荐您使用APT软件包管理系统。APT系统需要一个软件信息数据库和至少一个存放着大量deb包的软件仓库,我们称之为“源”。“源”可以是网络服务器,安装CD或者本地软件仓库。

2、dpkg命令

dpkg 是Debian Package的简写,是为Debian 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自Debian的Linux发行版都使用dpkg,例如Ubuntu等。

dpkg命令常用格式如下:
dpkg -I  iptux.deb   #查看iptux.deb软件包的详细信息,包括软件名称、版本以及大小等(其中-I等价于--info)
dpkg -c  iptux.deb   #查看iptux.deb软件包中包含的文件结构(其中-c等价于--contents)
dpkg -i  iptux.deb   #安装iptux.deb软件包(其中-i等价于--install)
dpkg -l  iptux.deb   #查看iptux软件包的信息(软件名称可通过dpkg -I命令查看,其中-l等价于--list)
dpkg -L  iptux.deb   #查看iptux软件包安装的所有文件(软件名称可通过dpkg -I命令查看,其中-L等价于--listfiles)
dpkg -s  iptux.deb   #查看iptux软件包的详细信息(软件名称可通过dpkg -I命令查看,其中-s等价于--status)
dpkg -r  iptux.deb   #卸载iptux软件包(软件名称可通过dpkg -I命令查看,其中-r等价于--remove)
注:dpkg命令无法自动解决依赖关系。如果安装的deb包存在依赖包,则应避免使用此命令,或者按照依赖关系顺序安装依赖包。

dpkg -I  iptux.deb | grep Depends  #查看安装包的依赖关系
sudo apt-get install -f -y   #解决依赖关系

选择安装.deb软件到其他目录
sudo dpkg -i --instdir=/opt/apache apache2
然后可以建立一个软链接 
ln -s /opt/gsopcast/usr/local/bin/gsopcast  /usr/local/bin
dpkg的其他用法:
https://blog.csdn.net/sunjiajiang/article/details/7252593

3、dpkg安装过程

很多时候deb安装并不是把文件复制到kernel里就可以了,还需要执行一些命令,比如设置权限,备份文件,加载启动进程等等,那么这时候就需要一些脚本来实现这些操作。

以下6个步骤是dpkg系统文档给出的默认操作步骤:

dpkg -i  iptux.deb   #安装iptux.deb软件包(其中-i等价于--install)
Installation consists of the following steps:
1. Extract the control files of the new package.  
   #提取新软件包的控制文件

2. If another version of the same package was installed before the new installation, 
   execute prerm script of the old package.
#如果在新安装之前安装了相同版本的另一个版本,则执行旧包的PREM脚本

3. Run preinst script, if provided by the package.
   #运行PrimST脚本,如果包提供的话

4. Unpack the new files, and at the same time back up the old files, 
   so that if something goes wrong, they can be restored.
   #打开新文件,同时备份旧文件,如果事情出错了,他们可以恢复

5. If another version of the same package was installed before the new installation, 
   execute the postrm script of the old package. Note that this script is executed after the preinst 
   script of the new package, because new files are written at the same time old files are removed.
   #如果在新安装之前安装了相同版本的另一个版本,则执行旧包的PoSTRM脚本。
   #注意,这个脚本是在新包的PREIN脚本之后执行的,因为新文件被写入同时删除旧文件。

6. Configure the package. See --configure for detailed information about how this is done.
   #配置包。有关如何完成的详细信息,请参阅配置 

安装debian中一般有 6个文件:

控制文件描述
control用了记录软件标识,版本号,平台,依赖信息等数据
preinst在解包前运行的脚本
postinst在解包数据后运行的脚本
prerm卸载时,在删除文件之前运行的脚本
postrm在删除文件之后运行的脚本

preinstDebian软件包解压前执行的脚本,为正在被升级的包停止相关服务,直到升级或安装完成。(成功后执行'postinst'脚本)

postinst主要完成软件包安装完成后所需的配置工作。通常,postinst脚本要求用户输入,或警告用户如果接受默认值,应该记得按要求返回重新配置这个软件。安装或升级完成后,postinst脚本驱动命令,启动或重起相应的服务。

prerm停止一个软件包的相关进程,要卸载软件包的相关文件前执行。

postrm修改相关文件或连接,或卸载软件包所创建的文件。


当前的所有配置文件都可在/var/lib/dpkg/info目录下找到,foo软件包相关的命名以"foo"开头,"postinst","postrm",等为扩展。这个目录下的foo.list文件列出了软件包安装的所有文件。例如,当软件包安装成功后,利用dpkg-L列出的软件安装信息,就是在打印foo.list的内容


安装脚本的内容根据程序的需求来确定的,一般有程序供应商后者程序员自己提供。

然而并不是所有的deb包都有自带安装脚本的,因此deb的安装过程分两种,一种是带脚本的deb安装,另一种是不带脚本的安装。因此整体的deb安装细节是:

(1)提出control文件,分析依赖关系,缺少依赖包的停止安装并提示所缺少的依赖包

(2)有安装脚本的运行脚本,即系统安装文档的2 - 5过程,没有的按照默认模式,进行数据copy

4、手动自制deb包

思路:某个deb安装包 ---> 解析依赖 ---> 下载依赖 ---> 重写安装脚本 ---> 重新打包deb

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值