晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/lib/python3.6/site-packages/up2date_client/ |
| Current File : //lib/python3.6/site-packages/up2date_client/up2dateUtils.py |
# Client code for Update Agent
# Copyright (c) 1999--2018 Red Hat, Inc. Distributed under GPLv2.
#
# Author: Preston Brown <pbrown@redhat.com>
# Adrian Likins <alikins@redhat.com>
#
"""utility functions for up2date"""
import contextlib
import os
import sys
import re
import gettext
from up2date_client import up2dateErrors
from up2date_client import config
from up2date_client.pkgplatform import getPlatform
from rhn.i18n import sstr
t = gettext.translation('rhn-client-tools', fallback=True)
# Python 3 translations don't have a ugettext method
if not hasattr(t, 'ugettext'):
t.ugettext = t.gettext
_ = t.ugettext
if getPlatform() == 'deb':
import lsb_release
def _getOSVersionAndRelease():
dist_info = lsb_release.get_distro_information()
os_name = dist_info['ID']
os_version = 'n/a'
if 'CODENAME' in dist_info:
os_version = dist_info['CODENAME']
os_release = dist_info['RELEASE']
return os_name, os_version, os_release
else:
from up2date_client import transaction
def _getOSVersionAndRelease():
ts = transaction.initReadOnlyTransaction()
for h in ts.dbMatch('Providename', "oraclelinux-release"):
SYSRELVER = 'system-release(releasever)'
version = sstr(h['version'])
release = sstr(h['release'])
if SYSRELVER in (sstr(provide) for provide in h['providename']):
provides = dict((sstr(n), sstr(v))
for n,v in zip(h['providename'], h['provideversion']))
release = '%s-%s' % (version, release)
version = provides[SYSRELVER]
osVersionRelease = (sstr(h['name']), version, release)
return osVersionRelease
else:
for h in ts.dbMatch('Providename', "redhat-release"):
SYSRELVER = 'system-release(releasever)'
version = sstr(h['version'])
release = sstr(h['release'])
if SYSRELVER in (sstr(provide) for provide in h['providename']):
provides = dict((sstr(n), sstr(v))
for n,v in zip(h['providename'], h['provideversion']))
release = '%s-%s' % (version, release)
version = provides[SYSRELVER]
osVersionRelease = (sstr(h['name']), version, release)
return osVersionRelease
else:
for h in ts.dbMatch('Providename', "distribution-release"):
osVersionRelease = (sstr(h['name']), sstr(h['version']), sstr(h['release']))
# zypper requires a exclusive lock on the rpmdb. So we need
# to close it here.
ts.ts.closeDB()
return osVersionRelease
else:
raise up2dateErrors.RpmError(
"Could not determine what version of CloudLinux you "\
"are running.\nIf you get this error, try running \n\n"\
"\t\trpm --rebuilddb\n\n")
def getVersion():
'''
Returns the version of redhat-release rpm
'''
cfg = config.initUp2dateConfig()
if cfg["versionOverride"]:
return str(cfg["versionOverride"])
os_release, version, release = _getOSVersionAndRelease()
return version
def getOSRelease():
'''
Returns the name of the redhat-release rpm
'''
os_release, version, release = _getOSVersionAndRelease()
return os_release
def getRelease():
'''
Returns the release of the redhat-release rpm
'''
os_release, version, release = _getOSVersionAndRelease()
return release
def getArch():
if os.access("/etc/rpm/platform", os.R_OK):
fd = open("/etc/rpm/platform", "r")
platform = fd.read().strip()
#bz 216225
#handle some replacements..
replace = {"ia32e-redhat-linux": "x86_64-redhat-linux"}
if platform in replace:
platform = replace[platform]
return platform
arch = os.uname()[4]
if getPlatform() == 'deb':
# On debian we only support i386
if arch in ['i486', 'i586', 'i686']:
arch = 'i386'
if arch == 'x86_64':
arch = 'amd64'
arch += '-debian-linux'
return arch
def version():
# substituted to the real version by the Makefile at installation time.
return "2.12.5-1.module_el8.10.0+6935+f9aadf00.cloudlinux"
@contextlib.contextmanager
def suppress_errors(error_patterns):
'''
Context manager to suppress errors
matching the specified patterns
'''
read_end, write_end = os.pipe()
old_stdout = os.dup(1)
old_stderr = os.dup(2)
os.dup2(write_end, 1)
os.dup2(write_end, 2)
try:
yield
finally:
# Restore stdout and stderr
os.dup2(old_stdout, 1)
os.dup2(old_stderr, 2)
os.close(write_end)
with os.fdopen(read_end) as f:
combined_pattern = re.compile('|'.join(error_patterns))
for line in f:
if not combined_pattern.search(line):
print(line, file=sys.stderr)
|