class YumRepository extends RPMRepository<RPMRepoPackage> {

    @Override
    public final Set<RPMRepoPackage> listRemotePackages() throws RepositoryException {

        String list = null;
        try {
            checkTmpDirSetup();
            // clear yum cache
            yumExpireCache();

            // list all known packages
            list = yumListAll();
        } catch (IOException e) {
            String message = "IO Exception getting yum info";
            LOGGER.error(message, e);
            throw new RepositoryException(message, e);
        }

        int headerPos = list.indexOf(YUM_PACKAGE_HEADER);
        int errorPos = list.indexOf(YUM_ERROR_STRING);
        if (headerPos == -1 || errorPos != -1) {
            throw new RepositoryException(String.format(
                    "Failed to retrieve the list of packages at mirrorList:%s & baseUrl:%s",
                    mirrorListUrl, getBaseUrl()));
        }

        // trim output until the list of available packages starts
        list = list.substring(list.indexOf(YUM_PACKAGE_HEADER) + YUM_PACKAGE_HEADER.length());
        list = list.trim();
        Set<RPMRepoPackage> packages = new HashSet<>();
        Matcher matcher = YUM_LIST_PACKAGE_LINE.matcher(list);
        while (matcher.find()) {
            packages.add(new RPMRepoPackage(
                    matcher.group("name"),
                    matcher.group("version"),
                    matcher.group("release"),
                    matcher.group("architecture"),
                    this
            ));
        }

        return packages;
    }

    public  YumRepository(final String name,
                         final URL mirrorListUrl,
                         final URL baseUrl,
                         final boolean gpgCheck,
                         final String gpgKey);
    public  YumRepository(final String name);
    protected  YumRepository();

}