晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/cloudlinux/venv/lib64/python3.11/site-packages/clconfigure/ |
| Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/clconfigure/packages.py |
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2018 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# https://cloudlinux.com/docs/LICENCE.TXT
#
import logging
import os
import re
from clcommon.utils import is_ubuntu
from clconfigure import task, run
STATE_REMOVED = 'uninstalled'
STATE_INSTALLED = 'installed'
@task("Erasing package '{package_name}'")
def erase_package(package_name):
if is_ubuntu():
run(['dpkg', '--purge', '--force-depends', package_name])
else:
run(['rpm', '--erase', '--nodeps', package_name])
current_state = get_package_state(package_name)
logging.info("Checking package '%s' state again... package is now in state '%s'", package_name, current_state)
if STATE_REMOVED != current_state:
raise RuntimeError("Failed to do required actions")
@task("Changing package '{package_name}' state to '{desired_state}'")
def set_package_state(desired_state, package_name):
"""
Brings package to given state (installed | uninstalled).
May be executed more than once, doesn't crash on future calls
"""
current_state = get_package_state(package_name)
logging.debug("Checking package '%s' state... package is in state '%s'", package_name, current_state)
if desired_state == current_state:
logging.debug("No actions needed for package '%s'", package_name)
return
logging.info('State does not match target, changing...')
if desired_state == STATE_REMOVED:
if is_ubuntu():
run(['apt-get', 'purge', '-y', package_name])
else:
run(['yum', 'remove', '-y', package_name])
elif desired_state == STATE_INSTALLED:
if is_ubuntu():
run(['apt-get', 'install', '-y', package_name])
else:
run(['yum', 'install', '-y', package_name])
else:
raise NotImplementedError()
current_state = get_package_state(package_name)
logging.info("Checking package '%s' state again... package is now in state '%s'", package_name, current_state)
if desired_state != current_state:
raise RuntimeError("Failed to do required actions")
@task("(Re)installing package '{package_name}'")
def install_package(package_name: str, reinstall: bool = False):
state = get_package_state(package_name)
if state == STATE_INSTALLED and reinstall:
cmd = ['apt-get' if is_ubuntu() else 'yum', 'reinstall', '-y', package_name]
elif state == STATE_REMOVED:
cmd = ['apt-get' if is_ubuntu() else 'yum', 'install', '-y', package_name]
else:
return
run(cmd)
def get_package_state(package):
"""
Gets current package state.
Either installed or uninstalled.
"""
if is_ubuntu():
resp = run(['dpkg', '-s', package])
if resp.exitcode == 0 and 'Status: install ok installed' in resp.stdout:
return STATE_INSTALLED
return STATE_REMOVED
resp = run(['rpm', '-qv', package])
return STATE_INSTALLED if resp.exitcode == 0 else STATE_REMOVED
def get_list_installed_alt_phps():
"""
Gets installed alt-phps
return: list ['php44', 'php54', 'php80']
"""
return [php for php in os.listdir('/opt/alt') if re.match(r'^php\d+$', php)]
|