diff --git a/packageship/application/initialize/binary.json b/packageship/application/initialize/binary.json
index ebaa681a890a370745fc8a1282b8519fa1d3c734..a3abb5afd41085a83839ef3b2231f7efc4f9658f 100644
--- a/packageship/application/initialize/binary.json
+++ b/packageship/application/initialize/binary.json
@@ -135,18 +135,6 @@
                         "ignore_above": 256,
                         "index": false
                     },
-                    "relation": {
-                        "properties": {
-                            "bin_name": {
-                                "type": "keyword",
-                                "ignore_above": 256
-                            },
-                            "src_name": {
-                                "type": "keyword",
-                                "ignore_above": 256
-                            }
-                        }
-                    },
                     "release": {
                         "type": "keyword",
                         "ignore_above": 256
diff --git a/packageship/application/initialize/integration.py b/packageship/application/initialize/integration.py
index f7cd38f6258c3a0f0e05a2d2fea8317e269e2833..788b2f79edcab39a08e4d1094c48027db145c986 100644
--- a/packageship/application/initialize/integration.py
+++ b/packageship/application/initialize/integration.py
@@ -201,20 +201,21 @@ class InitializeService:
 
         """
         sources = []
-        for src_pack_name, src_pack in self._src_pack.items():
+        for _, src_pack in self._src_pack.items():
             es_json = ESJson()
             es_json.update(src_pack)
             es_json["requires"] = self._build_requires(
                 src_pack['pkgKey'])
             try:
-                for bin_pack in self._bin_pack['sources'].pop(src_pack_name):
+                location_href = src_pack["location_href"].split('/')[-1]
+                for bin_pack in self._bin_pack['sources'].get(location_href):
                     _subpacks = dict(
                         name=bin_pack["name"], version=bin_pack["version"])
                     try:
                         es_json["subpacks"].append(_subpacks)
                     except TypeError:
                         es_json["subpacks"] = [_subpacks]
-            except KeyError:
+            except TypeError:
                 es_json["subpacks"] = None
             sources.append(self._es_json("-source", es_json))
         helpers.bulk(self._session.client, sources)
@@ -227,6 +228,10 @@ class InitializeService:
         binarys = []
         be_depends = []
         for _, bin_pack in self._bin_pack["packages"].items():
+            bin_pack["src_name"] = self._src_location[bin_pack["src_name"]]["name"]
+            if isinstance(bin_pack["src_name"], ESJson):
+                bin_pack["src_name"] = None
+
             be_depends.append(self._be_depend(bin_pack))
             es_json = ESJson()
             es_json.update(bin_pack)
@@ -275,7 +280,9 @@ class InitializeService:
             try:
                 for require in self._bin_requires.get(provide["name"]):
                     _bin_pack = self._bin_pack["pkg_key"][require["pkgKey"]]
-                    _src_pack = self._src_pack[_bin_pack["src_name"]]
+                    _src_pack = self._src_location[_bin_pack["src_name"]]
+                    if not _src_pack:
+                        _src_pack = self._src_pack[_bin_pack["src_name"]]
                     component_json["install_require"].append({
                         "req_bin_name": _bin_pack["name"],
                         "req_bin_version": _bin_pack["version"],
@@ -373,7 +380,7 @@ class InitializeService:
         return {
             "_index": str(self._repo["dbname"] + index).lower(),
             "_type": _type,
-            "_source": source
+            "_source": dict(source)
         }
 
     def _relation(self, key):
@@ -407,7 +414,6 @@ class InitializeService:
         except (KeyError, TypeError):
             return build_requires
         for src_require in requires:
-            src_require["relation"] = self._relation(src_require['name'])
             src_require["requires_type"] = "build"
             build_requires.append(src_require)
         return build_requires
@@ -422,7 +428,6 @@ class InitializeService:
         install_requires = list()
         try:
             for bin_require in self._bin_requires.get(bin_pack['pkgKey']):
-                bin_require["relation"] = self._relation(bin_require['name'])
                 bin_require["requires_type"] = "install"
                 install_requires.append(bin_require)
 
@@ -465,6 +470,14 @@ class InitializeService:
                 self._data.src_pkgkeys[src_pack["pkgKey"]] = src_pack
         return self._data.src_pkgkeys
 
+    @property
+    def _src_location(self):
+        if not self._data.src_location:
+            for _, package in self._src_pack.items():
+                key = package["location_href"].split('/')[-1]
+                self._data["src_location"][key] = package
+        return self._data.src_location
+
     @property
     def _src_requires(self):
         """
@@ -549,22 +562,16 @@ class InitializeService:
         """
 
         def combination_binary(row_data):
-            try:
-                src_package_name = None
-                _pkgs = row_data.get('rpm_sourcerpm').split(
-                    '-' + row_data.get('version'))
-                if len(_pkgs) != 1:
-                    src_package_name = ''.join(_pkgs[0:-1])
-            except AttributeError:
-                src_package_name = None
-            row_data["src_name"] = src_package_name
+
+            rpm_sourcerpm = row_data.get('rpm_sourcerpm')
+            row_data["src_name"] = rpm_sourcerpm
             self._data[table]['packages'][row_data[key]] = row_data
             self._data[table]["pkg_key"][row_data["pkgKey"]] = row_data
-            if src_package_name:
-                if isinstance(self._data[table]["sources"][src_package_name], ESJson):
-                    self._data[table]["sources"][src_package_name] = [row_data]
+            if rpm_sourcerpm:
+                if isinstance(self._data[table]["sources"][rpm_sourcerpm], ESJson):
+                    self._data[table]["sources"][rpm_sourcerpm] = [row_data]
                 else:
-                    self._data[table]["sources"][src_package_name].append(
+                    self._data[table]["sources"][rpm_sourcerpm].append(
                         row_data)
 
         def others(row_data, dict_key):
diff --git a/packageship/application/initialize/source.json b/packageship/application/initialize/source.json
index 5ee3544dd897b0469eee9c109c934221f6e3ba0c..12049bfd110baf885a06ead363ff4609f05ed21c 100644
--- a/packageship/application/initialize/source.json
+++ b/packageship/application/initialize/source.json
@@ -26,18 +26,6 @@
                         "type": "keyword",
                         "ignore_above": 256
                     },
-                    "relation": {
-                        "properties": {
-                            "bin_name": {
-                                "type": "keyword",
-                                "ignore_above": 256
-                            },
-                            "src_name": {
-                                "type": "keyword",
-                                "ignore_above": 256
-                            }
-                        }
-                    },
                     "release": {
                         "type": "keyword",
                         "ignore_above": 256
diff --git a/test/cli/init_command/comparison_relation_case/relationship/binary.json b/test/cli/init_command/comparison_relation_case/relationship/binary.json
index 5e202ba4819ad842d8ba5b344ebbf15f851da563..09a87898e08e787b571cfc35122cb0eca4f5251c 100644
--- a/test/cli/init_command/comparison_relation_case/relationship/binary.json
+++ b/test/cli/init_command/comparison_relation_case/relationship/binary.json
@@ -1,230 +1,212 @@
 {
-    "pkgKey": 35,
-    "pkgId": "df487e3623660d477f556899fce77ac650322c4362d82e047c6efc013e07ae5b",
-    "name": "Judy",
-    "arch": "aarch64",
-    "version": "1.0.5",
-    "epoch": "0",
-    "release": "19.oe1",
-    "summary": "C library array",
-    "description": "The package provides the most advanced core technology, the main\nadvantages are scalability, high performance and memory efficiency.",
-    "url": "http://sourceforge.net/projects/judy/",
-    "time_file": 1601219934,
-    "time_build": 1601219910,
-    "rpm_license": "LGPLv2+",
-    "rpm_vendor": "http://openeuler.org",
-    "rpm_group": "Unspecified",
-    "rpm_buildhost": "obs-worker-0016",
-    "rpm_sourcerpm": "Judy-1.0.5-19.oe1.src.rpm",
-    "rpm_header_start": 5096,
-    "rpm_header_end": 8772,
-    "rpm_packager": "http://openeuler.org",
-    "size_package": 114276,
-    "size_installed": 356971,
-    "size_archive": 358048,
-    "location_href": "Packages/Judy-1.0.5-19.oe1.aarch64.rpm",
-    "location_base": null,
-    "checksum_type": "sha256",
-    "src_name": "Judy",
-    "provides": [
-      {
-        "name": "Judy",
-        "flags": "EQ",
-        "epoch": "0",
-        "version": "1.0.5",
-        "release": "19.oe1",
-        "pkgKey": 35
-      },
-      {
-        "name": "Judy(aarch-64)",
-        "flags": "EQ",
-        "epoch": "0",
-        "version": "1.0.5",
-        "release": "19.oe1",
-        "pkgKey": 35
-      },
-      {
-        "name": "libJudy.so.1()(64bit)",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 35
-      }
-    ],
-    "files": [
-      {
-        "name": "/etc/ima/digest_lists/0-metadata_list-compact-Judy-1.0.5-19.oe1.aarch64",
-        "type": "file",
-        "pkgKey": 35
-      },
-      {
-        "name": "/etc/ima/digest_lists.tlv/0-metadata_list-compact_tlv-Judy-1.0.5-19.oe1.aarch64",
-        "type": "file",
-        "pkgKey": 35
-      }
-    ],
-    "filelists": [
-      {
-        "pkgKey": 35,
-        "dirname": "/usr/share/licenses",
-        "filenames": "Judy",
-        "filetypes": "d"
-      },
-      {
-        "pkgKey": 35,
-        "dirname": "/usr/share/licenses/Judy",
-        "filenames": "COPYING",
-        "filetypes": "f"
-      },
-      {
-        "pkgKey": 35,
-        "dirname": "/etc/ima/digest_lists.tlv",
-        "filenames": "0-metadata_list-compact_tlv-Judy-1.0.5-19.oe1.aarch64",
-        "filetypes": "f"
-      },
-      {
-        "pkgKey": 35,
-        "dirname": "/usr/lib64",
-        "filenames": "libJudy.so.1/libJudy.so.1.0.3",
-        "filetypes": "ff"
-      },
-      {
-        "pkgKey": 35,
-        "dirname": "/etc/ima/digest_lists",
-        "filenames": "0-metadata_list-compact-Judy-1.0.5-19.oe1.aarch64",
-        "filetypes": "f"
-      }
-    ],
-    "src_version": "1.0.5",
-    "requires": [
-      {
-        "name": "coreutils",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 14,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "coreutils", "src_name": "coreutils" }],
-        "requires_type": "build"
-      },
-      {
-        "name": "gawk",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 14,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "gawk", "src_name": "gawk" }],
-        "requires_type": "build"
-      },
-      {
-        "name": "gcc",
-        "flags": "GE",
-        "epoch": "0",
-        "version": "4.1",
-        "release": null,
-        "pkgKey": 14,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "gcc", "src_name": "gcc" }],
-        "requires_type": "build"
-      },
-      {
-        "name": "make",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 14,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "make", "src_name": "make" }],
-        "requires_type": "build"
-      },
-      {
-        "name": "sed",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 14,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "sed", "src_name": "sed" }],
-        "requires_type": "build"
-      },
-      {
-        "name": "/bin/sh",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 35,
-        "pre": "TRUE",
-        "relation": [
-          { "bin_name": "bash", "src_name": "bash" },
-          { "bin_name": "coreutils", "src_name": "coreutils" }
-        ],
-        "requires_type": "install"
-      },
-      {
-        "name": "/bin/sh",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 35,
-        "pre": "FALSE",
-        "relation": [
-          { "bin_name": "bash", "src_name": "bash" },
-          { "bin_name": "coreutils", "src_name": "coreutils" }
-        ],
-        "requires_type": "install"
-      },
-      {
-        "name": "ld-linux-aarch64.so.1()(64bit)",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 35,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "glibc", "src_name": "glibc" }],
-        "requires_type": "install"
-      },
-      {
-        "name": "ld-linux-aarch64.so.1(GLIBC_2.17)(64bit)",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 35,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "glibc", "src_name": "glibc" }],
-        "requires_type": "install"
-      },
-      {
-        "name": "rtld(GNU_HASH)",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 35,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "glibc", "src_name": "glibc" }],
-        "requires_type": "install"
-      },
-      {
-        "name": "libc.so.6(GLIBC_2.17)(64bit)",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 35,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "glibc", "src_name": "glibc" }],
-        "requires_type": "install"
-      }
-    ]
-  }
-  
\ No newline at end of file
+  "pkgKey": 35,
+  "pkgId": "df487e3623660d477f556899fce77ac650322c4362d82e047c6efc013e07ae5b",
+  "name": "Judy",
+  "arch": "aarch64",
+  "version": "1.0.5",
+  "epoch": "0",
+  "release": "19.oe1",
+  "summary": "C library array",
+  "description": "The package provides the most advanced core technology, the main\nadvantages are scalability, high performance and memory efficiency.",
+  "url": "http://sourceforge.net/projects/judy/",
+  "time_file": 1601219934,
+  "time_build": 1601219910,
+  "rpm_license": "LGPLv2+",
+  "rpm_vendor": "http://openeuler.org",
+  "rpm_group": "Unspecified",
+  "rpm_buildhost": "obs-worker-0016",
+  "rpm_sourcerpm": "Judy-1.0.5-19.oe1.src.rpm",
+  "rpm_header_start": 5096,
+  "rpm_header_end": 8772,
+  "rpm_packager": "http://openeuler.org",
+  "size_package": 114276,
+  "size_installed": 356971,
+  "size_archive": 358048,
+  "location_href": "Packages/Judy-1.0.5-19.oe1.aarch64.rpm",
+  "location_base": null,
+  "checksum_type": "sha256",
+  "src_name": "Judy",
+  "provides": [
+    {
+      "name": "Judy",
+      "flags": "EQ",
+      "epoch": "0",
+      "version": "1.0.5",
+      "release": "19.oe1",
+      "pkgKey": 35
+    },
+    {
+      "name": "Judy(aarch-64)",
+      "flags": "EQ",
+      "epoch": "0",
+      "version": "1.0.5",
+      "release": "19.oe1",
+      "pkgKey": 35
+    },
+    {
+      "name": "libJudy.so.1()(64bit)",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 35
+    }
+  ],
+  "files": [
+    {
+      "name": "/etc/ima/digest_lists/0-metadata_list-compact-Judy-1.0.5-19.oe1.aarch64",
+      "type": "file",
+      "pkgKey": 35
+    },
+    {
+      "name": "/etc/ima/digest_lists.tlv/0-metadata_list-compact_tlv-Judy-1.0.5-19.oe1.aarch64",
+      "type": "file",
+      "pkgKey": 35
+    }
+  ],
+  "filelists": [
+    {
+      "pkgKey": 35,
+      "dirname": "/usr/share/licenses",
+      "filenames": "Judy",
+      "filetypes": "d"
+    },
+    {
+      "pkgKey": 35,
+      "dirname": "/usr/share/licenses/Judy",
+      "filenames": "COPYING",
+      "filetypes": "f"
+    },
+    {
+      "pkgKey": 35,
+      "dirname": "/etc/ima/digest_lists.tlv",
+      "filenames": "0-metadata_list-compact_tlv-Judy-1.0.5-19.oe1.aarch64",
+      "filetypes": "f"
+    },
+    {
+      "pkgKey": 35,
+      "dirname": "/usr/lib64",
+      "filenames": "libJudy.so.1/libJudy.so.1.0.3",
+      "filetypes": "ff"
+    },
+    {
+      "pkgKey": 35,
+      "dirname": "/etc/ima/digest_lists",
+      "filenames": "0-metadata_list-compact-Judy-1.0.5-19.oe1.aarch64",
+      "filetypes": "f"
+    }
+  ],
+  "src_version": "1.0.5",
+  "requires": [
+    {
+      "name": "coreutils",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 14,
+      "pre": "FALSE",
+      "requires_type": "build"
+    },
+    {
+      "name": "gawk",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 14,
+      "pre": "FALSE",
+      "requires_type": "build"
+    },
+    {
+      "name": "gcc",
+      "flags": "GE",
+      "epoch": "0",
+      "version": "4.1",
+      "release": null,
+      "pkgKey": 14,
+      "pre": "FALSE",
+      "requires_type": "build"
+    },
+    {
+      "name": "make",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 14,
+      "pre": "FALSE",
+      "requires_type": "build"
+    },
+    {
+      "name": "sed",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 14,
+      "pre": "FALSE",
+      "requires_type": "build"
+    },
+    {
+      "name": "/bin/sh",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 35,
+      "pre": "TRUE",
+      "requires_type": "install"
+    },
+    {
+      "name": "/bin/sh",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 35,
+      "pre": "FALSE",
+      "requires_type": "install"
+    },
+    {
+      "name": "ld-linux-aarch64.so.1()(64bit)",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 35,
+      "pre": "FALSE",
+      "requires_type": "install"
+    },
+    {
+      "name": "ld-linux-aarch64.so.1(GLIBC_2.17)(64bit)",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 35,
+      "pre": "FALSE",
+      "requires_type": "install"
+    },
+    {
+      "name": "rtld(GNU_HASH)",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 35,
+      "pre": "FALSE",
+      "requires_type": "install"
+    },
+    {
+      "name": "libc.so.6(GLIBC_2.17)(64bit)",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 35,
+      "pre": "FALSE",
+      "requires_type": "install"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/test/cli/init_command/comparison_relation_case/relationship/source.json b/test/cli/init_command/comparison_relation_case/relationship/source.json
index 664add83ce8467e7d40d0f0f36676579e68775c6..e09f3cb33648a139e8f0a81ff831a55c83f1270b 100644
--- a/test/cli/init_command/comparison_relation_case/relationship/source.json
+++ b/test/cli/init_command/comparison_relation_case/relationship/source.json
@@ -1,72 +1,74 @@
 {
-    "pkgKey": 3,
-    "pkgId": "a2c8963c6d5bdea8d3c9dc1bfa609db643c5a17077eff4eca21aa6e33ff9d4e5",
-    "name": "CUnit",
-    "arch": "src",
-    "version": "2.1.3",
-    "epoch": "0",
-    "release": "21.oe1",
-    "summary": "A Unit Testing Framework for C",
-    "description": "CUnit is a lightweight system for writing, administering, and running unit tests in C\nIt provides C programmers a basic testing functionality with a flexible variety of user\ninterfaces.\n\nCUnit is built as a static library which is linked with the user's testing code.  It\nuses a simple framework for building test structures, and provides a rich set of\nassertions for testing common data types. In addition, several different interfaces are\nprovided for running tests and reporting results.",
-    "url": "http://cunit.sourceforge.net/",
-    "time_file": 1601215538,
-    "time_build": 1601215498,
-    "rpm_license": "LGPLv2+",
-    "rpm_vendor": "http://openeuler.org",
-    "rpm_group": "Unspecified",
-    "rpm_buildhost": "obs-worker-009",
-    "rpm_sourcerpm": "",
-    "rpm_header_start": 5096,
-    "rpm_header_end": 7552,
-    "rpm_packager": "http://openeuler.org",
-    "size_package": 523353,
-    "size_installed": 516791,
-    "size_archive": 517172,
-    "location_href": "Packages/CUnit-2.1.3-21.oe1.src.rpm",
-    "location_base": null,
-    "checksum_type": "sha256",
-    "requires": [
-      {
-        "name": "automake",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 3,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "automake", "src_name": "automake" }],
-        "requires_type": "build"
-      },
-      {
-        "name": "git",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 3,
-        "pre": "FALSE",
-        "relation": [
-          { "bin_name": "git", "src_name": "git" },
-          { "bin_name": "git", "src_name": "git" }
-        ],
-        "requires_type": "build"
-      },
-      {
-        "name": "libtool",
-        "flags": null,
-        "epoch": null,
-        "version": null,
-        "release": null,
-        "pkgKey": 3,
-        "pre": "FALSE",
-        "relation": [{ "bin_name": "libtool", "src_name": "libtool" }],
-        "requires_type": "build"
-      }
-    ],
-    "subpacks": [
-      { "name": "CUnit", "version": "2.1.3" },
-      { "name": "CUnit-devel", "version": "2.1.3" },
-      { "name": "CUnit-help", "version": "2.1.3" }
-    ]
-  }
-  
\ No newline at end of file
+  "pkgKey": 3,
+  "pkgId": "a2c8963c6d5bdea8d3c9dc1bfa609db643c5a17077eff4eca21aa6e33ff9d4e5",
+  "name": "CUnit",
+  "arch": "src",
+  "version": "2.1.3",
+  "epoch": "0",
+  "release": "21.oe1",
+  "summary": "A Unit Testing Framework for C",
+  "description": "CUnit is a lightweight system for writing, administering, and running unit tests in C\nIt provides C programmers a basic testing functionality with a flexible variety of user\ninterfaces.\n\nCUnit is built as a static library which is linked with the user's testing code.  It\nuses a simple framework for building test structures, and provides a rich set of\nassertions for testing common data types. In addition, several different interfaces are\nprovided for running tests and reporting results.",
+  "url": "http://cunit.sourceforge.net/",
+  "time_file": 1601215538,
+  "time_build": 1601215498,
+  "rpm_license": "LGPLv2+",
+  "rpm_vendor": "http://openeuler.org",
+  "rpm_group": "Unspecified",
+  "rpm_buildhost": "obs-worker-009",
+  "rpm_sourcerpm": "",
+  "rpm_header_start": 5096,
+  "rpm_header_end": 7552,
+  "rpm_packager": "http://openeuler.org",
+  "size_package": 523353,
+  "size_installed": 516791,
+  "size_archive": 517172,
+  "location_href": "Packages/CUnit-2.1.3-21.oe1.src.rpm",
+  "location_base": null,
+  "checksum_type": "sha256",
+  "requires": [
+    {
+      "name": "automake",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 3,
+      "pre": "FALSE",
+      "requires_type": "build"
+    },
+    {
+      "name": "git",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 3,
+      "pre": "FALSE",
+      "requires_type": "build"
+    },
+    {
+      "name": "libtool",
+      "flags": null,
+      "epoch": null,
+      "version": null,
+      "release": null,
+      "pkgKey": 3,
+      "pre": "FALSE",
+      "requires_type": "build"
+    }
+  ],
+  "subpacks": [
+    {
+      "name": "CUnit",
+      "version": "2.1.3"
+    },
+    {
+      "name": "CUnit-devel",
+      "version": "2.1.3"
+    },
+    {
+      "name": "CUnit-help",
+      "version": "2.1.3"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/test/cli/init_command/comparison_relation_case/test_relationship.py b/test/cli/init_command/comparison_relation_case/test_relationship.py
index 7e389297339217f58438053e472b65030fd76fe2..147bb9823cadd0bfb3aec1dae8c62bf443a9042c 100644
--- a/test/cli/init_command/comparison_relation_case/test_relationship.py
+++ b/test/cli/init_command/comparison_relation_case/test_relationship.py
@@ -11,6 +11,7 @@
 # See the Mulan PSL v2 for more details.
 # ******************************************************************************/
 # -*- coding:utf-8 -*-
+import json
 import os
 import shutil
 from pathlib import Path
diff --git a/test/unpack/compress_files/gz_error.txt b/test/unpack/compress_files/gz_error.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9ea415ee96ce4459710a2c5cab997053cb5c207f
--- /dev/null
+++ b/test/unpack/compress_files/gz_error.txt
@@ -0,0 +1 @@
+gz error file
\ No newline at end of file
diff --git a/test/unpack/compress_files/tar_error.txt b/test/unpack/compress_files/tar_error.txt
new file mode 100644
index 0000000000000000000000000000000000000000..beb36750c7e906599a4765ec8debf914f4c0d035
--- /dev/null
+++ b/test/unpack/compress_files/tar_error.txt
@@ -0,0 +1 @@
+tar file error
\ No newline at end of file
diff --git a/test/unpack/compress_files/xz_error.txt b/test/unpack/compress_files/xz_error.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3fd014f7e5ccf3864da047743a6af767355c4937
--- /dev/null
+++ b/test/unpack/compress_files/xz_error.txt
@@ -0,0 +1 @@
+xz file error
\ No newline at end of file
diff --git a/test/unpack/test_unpack.py b/test/unpack/test_unpack.py
index 64ad3381e58867c83e1c10a9f125341771e2c454..90bcae8dcba6e27375467c292e675e84a64d1e9b 100644
--- a/test/unpack/test_unpack.py
+++ b/test/unpack/test_unpack.py
@@ -34,13 +34,13 @@ class TestUnpack(TestCase):
     def test_gz_unpack(self):
         """unpack gz file"""
         with self.assertRaises(UnpackError):
-            Unpack.dispatch(".gz", file_path=os.path.join(self.path, "bz2_error.txt"),
+            Unpack.dispatch(".gz", file_path=os.path.join(self.path, "gz_error.txt"),
                             save_file=os.path.join(self.path, "bz2_unpack.sqlite"))
 
     def test_error_tar(self):
         """error tar file"""
         with self.assertRaises(IOError):
-            Unpack.dispatch(".tar", file_path=os.path.join(self.path, "bz2_error.txt"),
+            Unpack.dispatch(".tar", file_path=os.path.join(self.path, "tar_error.txt"),
                             save_file=os.path.join(self.path, "bz2_unpack.sqlite"))
 
     def test_tar_unpack(self):
@@ -50,9 +50,14 @@ class TestUnpack(TestCase):
 
     def test_error_zip_unpack(self):
         """unpack error zip file"""
+        file = os.path.join(self.path, "zip_error.txt")
+        with open(file, "w", encoding="utf-8") as f:
+            f.write("error zip file")
         with self.assertRaises(IOError):
-            Unpack.dispatch(".zip", file_path=os.path.join(self.path, "bz2_error.txt"),
+            Unpack.dispatch(".zip", file_path=file,
                             save_file=os.path.join(self.path, "zip_file.sqlite"))
+        if os.path.exists(file):
+            os.remove(file)
 
     def test_zip_unpack(self):
         """unpack zip file"""
@@ -64,7 +69,7 @@ class TestUnpack(TestCase):
     def test_xz_unpack(self):
         """unpack xz file"""
         with self.assertRaises(UnpackError):
-            Unpack.dispatch(".xz", file_path=os.path.join(self.path, "bz2_error.txt"),
+            Unpack.dispatch(".xz", file_path=os.path.join(self.path, "xz_error.txt"),
                             save_file=os.path.join(self.path, "xz.sqlite"))
 
     def test_file_path_none(self):
