def METHOD_NAME(self) -> int:
    """Checks if the package is runnable on the current system.
    Returns:
        0: if no dry-run process started.
        1: if the dry-run process is started and return code is 0.
        2: if the dry-run process is started and return code is not 0.
    """
    ret_code = 0
    try:
        all_passed = True
        for rule in self.rules:
            if isinstance(rule, CheckRule):
                result: CheckResult = rule(self.package_path, data=None)
                self.add_report(rule.name, result.problem, result.solution)
                if rule.required and result.problem != CHECK_PASSED:
                    all_passed = False
            elif isinstance(rule, list):
                result = CheckResult()
                # ordered rules
                for r in rule:
                    result = r(self.package_path, data=result.data)
                    self.add_report(r.name, result.problem, result.solution)
                    if r.required and result.problem != CHECK_PASSED:
                        all_passed = False
                        break
        # check dry run
        if all_passed:
            ret_code = self.check_dry_run()
    except Exception as e:
        self.add_report(
            "Package Error",
            f"Exception happens in checking: {e}, this package is not in correct format.",
            "Please download a new package.",
        )
    finally:
        return ret_code