好的,所以我在我的 anaconda 环境中,我运行了 which python。我得到
/home/comp/anaconda3/envs/env1/bin/python
Run Code Online (Sandbox Code Playgroud)
现在,如果我启动 tmux,然后运行 source activate env1,然后运行哪个 python,我会得到
/home/comp/anaconda3/bin/python
Run Code Online (Sandbox Code Playgroud)
即使我确实激活了我的环境。如何让 anaconda 在 tmux 中看到相同的路径?
我设置了一个 Anaconda Python 虚拟环境,如果我在激活该虚拟环境时运行我的项目,一切运行良好。
但是我有一个配置为每小时运行一次的 cronjob。我将输出通过管道传输到日志,因为它没有正确运行。
crontab -e
:
10 * * * * bash /work/sql_server_etl/src/python/run_parallel_workflow.sh >> /home/etlservice/cronlog.log 2>&1
Run Code Online (Sandbox Code Playgroud)
我在 cronlog.log 中收到此错误:
Traceback (most recent call last):
File "__parallel_workflow.py", line 10, in <module>
import yaml
ImportError: No module named yaml
Run Code Online (Sandbox Code Playgroud)
这表明在没有激活虚拟环境的情况下,cronjob 以某种方式不运行文件。
为了解决这个问题,我在/home/user/.bash_profile
文件中添加了一行:
conda activate ~/anaconda3/envs/sql_server_etl/
Run Code Online (Sandbox Code Playgroud)
现在,当我登录时,环境会自动激活。
但是,问题仍然存在。
我又尝试了一件事。我更改了 cronjob,(我也在 cronjob 运行的 bash 文件中尝试了这个)以在每次运行时明确手动激活环境,但无济于事:
10 * * * * conda activate ~/anaconda3/envs/sql_server_etl/ && bash /work/sql_server_etl/src/python/run_parallel_workflow.sh >> /home/etlservice/cronlog.log 2>&1
Run Code Online (Sandbox Code Playgroud)
当然,我试过的任何东西都没有修复它。我真的对 linux 一无所知,所以也许我需要改变一些明显的东西。
那么,无论如何要指定 cronjob 应该在虚拟环境下运行?
我想自定义我的终端提示。通常,当 conda 环境被激活时,环境的名称会被添加到 PS1 字符串之前。我想对此进行更多自定义,但一直无法弄清楚。
如果我添加changeps1: false
到我的.condarc
文件中,则在激活新环境时不会修改终端提示。然后我可以修改我的环境变量,.bash_profile
例如:
PS1+="\[${cyan}\]<$(basename $CONDA_DEFAULT_ENV)> ";
这将返回我希望被胡萝卜包围的环境名称,但是这仅在我运行后才有效,source .bash_profile
激活环境没有效果,这并不意外。
我的问题是如何在激活环境时更新提示,或者有更好的方法吗?
这与这个问题有关
和这个示例配置文件但是,这些并没有直接解决我在激活环境时遇到的提示未更改的问题
我正在构建一个用于安装 Linux 映像(Oracle Linux,5.8)的可引导 ISO。这是使用带有 kickstart 文件的 anaconda 来选择要加载的包。其中一些软件包在其 %post 部分因依赖问题而失败。
例如,安装完成后在 /root/install.log 中可以看到:
Installing thirdparty-tools-1.00-09.noarch
/var/tmp/rpm-tmp.97891: line 1: ln: command not found
/var/tmp/rpm-tmp.97891: line 2: ln: command not found
/var/tmp/rpm-tmp.97891: line 3: ln: command not found
/var/tmp/rpm-tmp.97891: line 4: ln: command not found
error: %post(thirdparty-tools-1.00-09.noarch) scriptlet failed, exit status 127
Run Code Online (Sandbox Code Playgroud)
我试图找出是否可以控制/覆盖包排序,而无需编辑任何 RPM 来添加依赖项。我一直在浏览 anaconda/kickstart 文档(https://fedoraproject.org/wiki/Anaconda/Kickstart#Chapter_3._Package_Selection),并在其他地方广泛搜索,所以我认为答案实际上是“不,你可以”不这样做',这将是一种耻辱。
问题是我试图包含各种第三方RPM,它们不受我的控制并且已经过数字签名。这些包括在 %post 部分中的一些处理。这个处理需要一些标准的Linux 命令,例如'ln'、'touch' 等,这些命令在coreutils 包中提供。第三方包目前不包含对 coreutils 包的依赖,但显然它应该确实如此。Anaconda 使用自己的偏序算法来选择安装这些包的顺序,并且在安装coreutils 包之前安装第三方包。显然,正确的解决方案是让第三方修复这些 RPM;然而,这可能需要太长时间。
我希望它们可能是 kickstart 文件的一些隐藏/未记录的选项,这可能会添加额外的依赖项。理想情况下,我希望能够将这样的内容添加到 %packages 部分: …
我正在部署必须使用国防信息系统局 (DISA) 发布的 Red Hat 6 (v1r2) 安全技术实施指南 (STIG) 配置的系统。 链接到网站。
我已经开始开发一个 Kickstart 文件,以根据我通过 Google 找到的其他 KS 文件自动执行许多这些设置。
有没有人有任何建议、其他工具或其他有用的资源?
我不需要使用 Kickstart,它似乎是最简单的入门方法。我正在寻找任何资源:Ansible 的剧本、基本的 shell 脚本等。
在 Ubuntu 中,我可以这样做以添加新组和用户:
groupadd group123
useradd -m -s /bin/bash -g group123 user123
usermod -a -G sudo,www-data user123
Run Code Online (Sandbox Code Playgroud)
我能够在 FreeBsd 中做到这一点:
sudo pw groupadd group123
sudo pw useradd user123 -m -s /bin/tcsh -g group123
Run Code Online (Sandbox Code Playgroud)
但这失败了:
sudo pw usermod -a -G sudo,www-data user123
Run Code Online (Sandbox Code Playgroud)
因为组 sudo 不存在。为什么不?“sudo pw”不意味着它必须吗?如果没有,如何正确添加?
我最近编写了一个 Python 程序,旨在通过 SMPP SMS 服务器进行通信。
我面临的问题是我不知道如何使用 Conda 虚拟环境在 Cent OS 服务器上将 Python 脚本作为服务运行。我使用了很多依赖项,在 Conda 上选择虚拟环境不是一种选择。
有什么办法可以将此脚本作为服务运行吗?还有一种方法可以使用以下方法编写控制台方法来启动此脚本吗?
service fooService start
Run Code Online (Sandbox Code Playgroud) python services start-stop-daemon virtualenv datascience-anaconda
我使用的是 Mac OS X 版本 10.13.1,我刚刚安装了 anaconda。我已经使用命令创建了一个虚拟环境
conda create -n py3 python=3
Run Code Online (Sandbox Code Playgroud)
然后,我使用命令启动了 python 解释器
python
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,来自 /usr/bin 的预装 python 2.7 出现了,而不是 python 3.6。为了检查出了什么问题,我发出了命令
which python
Run Code Online (Sandbox Code Playgroud)
结果更令人惊讶,我得到了以下信息:
/Users/karlstroetmann/anaconda2/envs/py3/bin/python
Run Code Online (Sandbox Code Playgroud)
当我然后调用命令时
/Users/karldrstroetmann/anaconda2/envs/py3/bin/python
Run Code Online (Sandbox Code Playgroud)
我确实得到了 python 3.6.3。但我不明白为什么我不能通过键入python
. 我在这里缺少什么?任何提示将不胜感激。
这是一个非常简单的代码片段的示例,我想以执行所有内容的方式将其粘贴到我的终端。
sudo apt update
sudo apt upgrade
sudo apt -y install build-essential
sudo apt -y install git
sudo apt -y install libxml2-dev # required for some tools using xml files
sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果没有事先安装 build-essential ,会发生什么,它只会运行到sudo apt -y install build-essential
. 跳过后续行。如果未安装 git,情况也是如此:它将运行到 git 行,然后跳过其余部分。
发生这种情况的原因是什么?有没有办法解决这个问题,而无需创建脚本文件并通过 bash 运行它?
我的系统在 AcceptEnv 漏洞 CVE-2014-2532 上容易受到 OpenSSH 通配符的攻击。
我曾尝试将 centos 的 openssh 更新到 6.6 版,但我无法获得该版本的存储库 [sic]。
/EDIT/ PCI-DSS 合规性是这个问题的驱动因素。
RedHat 虚拟化/(RHV) 和基于内核的虚拟机/(KVM) 之间有什么区别?
我的要点是它们都是 1 类虚拟机管理程序。但我在任何地方都找不到明确的架构差异。