侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux dpkg-split命令教程:如何分割和合并Debian软件包(附实例详解和注意事项)

Linux dpkg-split命令介绍

dpkg-split命令是Debian软件包管理系统的一部分,它可以将一个大的Debian二进制软件包文件分割成若干个小的部分,以便于在小容量的媒介(如软盘)上存储和传输。它也可以将分割的部分重新合并成原来的软件包文件。dpkg-split命令只能在Debian系统上使用,因为它需要调用dpkg-deb命令来分析软件包的结构。

Linux dpkg-split命令适用的Linux版本

dpkg-split命令适用于所有基于Debian的Linux发行版,如Ubuntu、Mint、Kali等。如果你使用的是其他的Linux发行版,如Red Hat、CentOS、Fedora等,你需要安装dpkg软件包来使用dpkg-split命令。安装命令如下:

  • 对于使用yum的发行版(如Red Hat、CentOS 7等),你可以执行:
[linux@bashcommandnotfound.cn ~]$ sudo yum install dpkg
  • 对于使用dnf的发行版(如Fedora、CentOS 8等),你可以执行:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install dpkg

Linux dpkg-split命令的基本语法

dpkg-split命令的基本语法格式如下:

dpkg-split [选项] 命令

其中,选项可以用来指定分割或合并的参数,命令可以用来指定分割或合并的操作。

Linux dpkg-split命令的常用选项或参数说明

dpkg-split命令的常用选项或参数如下表所示:

选项参数说明
-s, --split完整的软件包文件 [前缀]将一个完整的Debian二进制软件包文件分割成若干个部分,部分文件的命名格式为前缀.N of M.deb,其中N是部分的编号,从1开始,M是部分的总数,都是十进制的数字。如果没有指定前缀,则使用完整的软件包文件的文件名(包括目录),去掉末尾的.deb作为前缀。
-j, --join部分文件 ...将若干个部分文件合并成一个完整的软件包文件,恢复原来的文件状态。部分文件必须是同一个原始文件的所有部分,每个部分只能出现一次,顺序无关紧要。部分文件必须使用相同的分割参数生成,通常意味着它们是由同一个dpkg-split --split命令生成的。部分文件的文件名对于合并过程无关紧要。默认的输出文件名为package_version_arch.deb。
-I, --info部分文件 ...打印部分文件的信息,以人类可读的格式输出。如果参数不是二进制软件包的部分,会输出相应的信息(仍然在标准输出上)。
-a, --auto-o 完整的输出文件 部分文件自动地将部分文件加入队列,并在可能的情况下合并成一个软件包。部分文件会与队列中的其他同一个软件包的部分进行比较,如果所有部分都已经存在,则合并成一个软件包,并写入完整的输出文件(通常不应该已经存在,但这不是一个错误)。如果不是,则将部分文件复制到队列中,不创建完整的输出文件。如果部分文件不是一个分割的二进制软件包的部分,dpkg-split会以状态1退出;如果发生其他错误,则以状态2退出。使用--auto选项时,必须指定--output或-o选项。(如果不是这样,调用程序就不知道期望的输出文件是什么。)
-l, --listq列出等待重新合并的软件包的队列的内容。对于每个部分在队列中的软件包,输出包括软件包的名称、队列中的部分、缺少的部分等信息。
-d, --discard[软件包 ...]从队列中丢弃指定的软件包的所有部分,或者如果没有指定软件包,则清空队列。

Linux dpkg-split命令的实例

下面给出一些dpkg-split命令的实例,帮助你更好地理解和使用这个命令。

实例1:分割一个软件包文件

假设你有一个名为hello_2.10-1build3_amd64.deb的软件包文件,它的大小为1.5M,你想将它分割成大小为500K的部分,以便于在软盘上存储。你可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dpkg-split -s hello_2.10-1build3_amd64.deb

这样,你会得到三个部分文件,分别为:

hello_2.10-1build3_amd64.1 of 3.deb
hello_2.10-1build3_amd64.2 of 3.deb
hello_2.10-1build3_amd64.3 of 3.deb

每个部分文件的大小都不超过500K,你可以将它们拷贝到软盘上。

实例2:合并一个软件包文件

假设你从软盘上拷贝了三个部分文件,分别为:

hello_2.10-1build3_amd64.1 of 3.deb
hello_2.10-1build3_amd64.2 of 3.deb
hello_2.10-1build3_amd64.3 of 3.deb

它们是同一个软件包文件的所有部分,你想将它们合并成一个完整的软件包文件,以便于安装。你可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dpkg-split -j hello_2.10-1build3_amd64.?.deb

这样,你会得到一个名为hello_2.10-1build3_amd64.deb的软件包文件,它的大小为1.5M,你可以用dpkg命令来安装它。

实例3:查看一个部分文件的信息

假设你有一个名为hello_2.10-1build3_amd64.1 of 3.deb的部分文件,你想查看它的一些信息,如原始软件包的名称、版本、大小、分割参数等。你可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dpkg-split -I hello_2.10-1build3_amd64.1 of 3.deb

这样,你会在标准输出上看到类似以下的信息:

Package: hello
Version: 2.10-1build3
Architecture: amd64
Installed-Size: 102
MD5sum: 8b1d0ad1b1bd861c475bd5e7b6a31b18
Part: 1 of 3
Part-MD5sum: 9f4b7e2c74f7c1ea
...

实例4:自动合并一个软件包文件

假设你有一个名为hello_2.10-1build3_amd64.deb的软件包文件,它被分割成了三个部分,分别为:

hello_2.10-1build3_amd64.1 of 3.deb
hello_2.10-1build3_amd64.2 of 3.deb
hello_2.10-1build3_amd64.3 of 3.deb

你想将它们自动地合并成一个完整的软件包文件,而不需要指定每个部分文件的名称。你可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dpkg-split -a -o hello.deb hello_2.10-1build3_amd64.?.deb

这样,你会得到一个名为hello.deb的软件包文件,它的大小为1.5M,你可以用dpkg命令来安装它。如果你没有指定-o选项,dpkg-split会使用默认的输出文件名,即package_version_arch.deb。

实例5:列出等待合并的软件包队列

假设你有多个软件包文件,它们都被分割成了若干个部分,你想查看哪些软件包还没有合并完成,以及缺少哪些部分。你可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dpkg-split -l

这样,你会在标准输出上看到类似以下的信息:

Package: hello
Version: 2.10-1build3
Architecture: amd64
Installed-Size: 102
MD5sum: 8b1d0ad1b1bd861c475bd5e7b6a31b18
Parts: 1 2 3
Missing: none

Package: vim
Version: 8.2.2434-3
Architecture: amd64
Installed-Size: 3332
MD5sum: 9a4c9f9f9f9f9f9f9f9f9f9f9f9f9f9f
Parts: 1 2 3 4
Missing: 2

这表示你有两个软件包在等待合并,分别是hello和vim。hello的所有部分都已经存在,可以合并。vim缺少第二个部分,需要找到它才能合并。

实例6:丢弃一个软件包的所有部分

假设你有一个名为vim的软件包,在等待合并的队列中,你想丢弃它的所有部分,释放空间。你可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ dpkg-split -d vim

这样,你会删除vim软件包的所有部分,从队列中移除它。如果你想清空整个队列,你可以执行:

[linux@bashcommandnotfound.cn ~]$ dpkg-split -d

Linux dpkg-split命令的注意事项

使用dpkg-split命令时,你需要注意以下几点:

  • dpkg-split命令只能分割和合并Debian二进制软件包文件,即以.deb为扩展名的文件。如果你想分割和合并其他类型的文件,你需要使用其他的工具,如split和cat命令。
  • dpkg-split命令只能在Debian系统或者安装了dpkg软件包的系统上使用,否则会提示bash: dpkg-split: command not found。如果你遇到这个错误,你需要先安装dpkg软件包,或者使用其他的系统。
  • dpkg-split命令分割和合并的软件包文件必须是完整的,没有被损坏或修改过的。否则,dpkg-split命令可能会失败,或者生成一个无法安装的软件包文件。如果你不确定一个软件包文件是否完整,你可以使用dpkg-deb命令来检查它的完整性,如:
[linux@bashcommandnotfound.cn ~]$ dpkg-deb -I hello_2.10-1build3_amd64.deb

如果没有输出任何错误信息,表示软件包文件是完整的。

Linux dpkg-split命令的相关命令

除了dpkg-split命令外,还有一些与Debian软件包管理相关的命令,如:

dpkg命令

dpkg命令是Debian软件包管理系统的核心工具,它可以用来安装、卸载、查询、配置、打包和解包Debian二进制软件包文件。

dpkg-deb命令

dpkg-deb命令是一个用来处理Debian二进制软件包文件的工具,它可以用来打包、解包、查看、比较和验证Debian二进制软件包文件。

dpkg-query命令

dpkg-query命令是一个用来查询Debian软件包数据库的工具,它可以用来显示已安装的软件包的信息,或者搜索符合一定条件的软件包。

dpkg-reconfigure命令

dpkg-reconfigure命令是一个用来重新配置已安装的软件包的工具,它可以用来修改软件包的一些设置,或者恢复软件包的默认配置。

0

评论区