假设我有一个解析的版本标签列表,例如
0.2
0.1
0.10
0.9
如果我使用sort
我得到(我是对的,这称为整理顺序吗?)
0.1
0.10
0.2
0.9
如果我想要我期望的数字(逻辑)顺序
0.1
0.2
0.9
0.10
例如,这是我经常接触到的一个场景,当我解析软件包版本时,我想获得用于自动安装过程的最新版本。
我怎样才能做到这一点?
假设我有一个解析的版本标签列表,例如
0.2
0.1
0.10
0.9
如果我使用sort
我得到(我是对的,这称为整理顺序吗?)
0.1
0.10
0.2
0.9
如果我想要我期望的数字(逻辑)顺序
0.1
0.2
0.9
0.10
例如,这是我经常接触到的一个场景,当我解析软件包版本时,我想获得用于自动安装过程的最新版本。
我怎样才能做到这一点?
我最近从 Debian Stretch 更新到 Buster。我首先意识到我无法从 Rambox 内部打开链接。我在 GitHub 上解决了一个问题,但现在我发现我也无法从 PHPStorm 和任何其他应用程序中打开链接。
我总是在对话框中收到以下错误消息
-------------------- Error --------------------
(-) /home/johndoe/https:/example.com/path/to/
resource.php: No such file or directory
[ Ok ]
正如人们所看到的,我的主目录的路径总是放在链接的前面。
我不会重新安装整个系统。
编辑(2019-08-18):
虽然这是桌面环境的问题,但我忘了提到我正在使用LXDE
.
编辑(2019-08-19):
我发现xdg-open
这会导致同样的错误。
xdg-open https://example.com
我找不到找到如何在 linux 上设置 MariaDB 的原始站点。
依赖于那个教程,我写了一个 ansible playbook。在重构我的剧本时,我发现了这两个任务。
- name: SymLinking the service unit alias `mysql.service` to `mariadb.service`
file:
src: "/etc/systemd/system/mysql.service"
dest: "/etc/systemd/system/mariadb.service"
state: link
force: yes
- name: SymLinking the service unit alias `mysqld.service` to `mariadb.service`
file:
src: "/etc/systemd/system/mysqld.service"
dest: "/etc/systemd/system/mariadb.service"
state: link
force: yes
systemctl status
在所有 3 个服务 ( mariadb.service
, mysql.service
, mysqld.service
) 上,现在为所有进程声明相同的主 PID。
因此,虽然符号链接的服务单元引用相同的进程是显而易见的,但我只能假设必须创建这些服务以实现向下兼容性。
但是现在是 2019 年,我的问题是
mysql
和 mysqld
吗?我在管理 debian 盒子的流浪环境中使用 ansible。由于具有保险库加密数据(例如数据库根密码)的多个 ansible 供应商,我必须由第一个供应商输入保险库密码一次。目前,此密码存储在/tmp
每个 ansible 供应商中,由脚本读取,并被最后一个供应商覆盖,/dev/null
然后被最后一个供应商删除。
Ansible 能够调用返回保险库密码的脚本。所以这个脚本将在一个单独的 shell 中运行。
如果攻击者设法闯入虚拟机,他就有机会恢复任何临时文件并获得保管库密码。
虽然这些流浪环境将用于生产,但我正在寻找一种更安全的方法。我首先想到的是以某种方式读取和写入内存。因此,VM 重新启动会擦除内存。我知道上面提到的数据可以以某种方式在磁盘上交换。但我认为获取这些数据比临时文件方法更难。
编辑
如果配置程序失败,我忘了提及安全风险。然后最后一个provisioner 将不会被执行,临时文件会保留在文件系统上。
我提供了一个额外的答案,仅针对对导致此问题的起源问题的解决方案感兴趣的任何人显示集成解决方案。
我安装了 OpenVPN:
$ sudo apt-get install openvpn
然后,我使用从公司收到的配置文件运行客户端。
$ sudo openvpn --config myconfig.ovpn
该配置已在同事的机器上得到验证。但有一个例外:我的同事使用的是 Windows 系统,我使用的是 Debian。
Fri Jul 27 11:33:34 2018 OpenVPN 2.4.0 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 18 2017
Fri Jul 27 11:33:34 2018 library versions: OpenSSL 1.0.2l 25 May 2017, LZO 2.08
Fri Jul 27 11:33:34 2018 Error: private key password verification failed
Fri Jul 27 11:33:34 2018 Exiting due to fatal error
client
dev tun
proto udp
remote example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
tls-version-min 1.2
verify-x509-name server_pZFAVxw3z2VPJhKI name
cipher AES-256-CBC
auth SHA256
compress lz4
verb 3
<ca>
-----BEGIN CERTIFICATE-----
<<base64>>
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
<<base64>>
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,C6B57204A2ECC239
<<base64>>
-----END RSA PRIVATE KEY-----
</key>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
<<base64>>
-----END OpenVPN Static key V1-----
</tls-crypt>
OpenVPN 官方手册推荐了我尝试运行它的方式。所以我不知道问题可能是什么并寻求帮助。
错误的原因可能是什么?
我正在运行最新的 Debian (Stretch/9.3.x) 并准备我的系统以安装最新的 PHP。我删除了所有预安装的 PHP 包,除了php-common
.
调用apt-get remove php-common
时出现如下错误
Removing php-common (1:49) ...
Failed to stop phpsessionclean.timer: Unit phpsessionclean.timer not loaded.
dpkg: error processing package php-common (--remove):
subprocess installed pre-removal script returned error exit status 5
/usr/bin/deb-systemd-helper: error: unable to read phpsessionclean.timer
Failed to get unit file state for phpsessionclean.timer: No such file or directory
phpsessionclean.timer is a disabled or a static unit, not starting it.
Errors were encountered while processing:
php-common
E: Sub-process /usr/bin/dpkg returned an error code (1)
经过一番挖掘,我试着dpkg --purge php-common
得到这个
Removing php-common (1:49) ...
Failed to stop phpsessionclean.timer: Unit phpsessionclean.timer not loaded.
dpkg: error processing package php-common (--purge):
subprocess installed pre-removal script returned error exit status 5
/usr/bin/deb-systemd-helper: error: unable to read phpsessionclean.timer
Failed to get unit file state for phpsessionclean.timer: No such file or directory
phpsessionclean.timer is a disabled or a static unit, not starting it.
Errors were encountered while processing:
php-common
其实也是一样的安静。
dpkg --verify php-common
??5?????? /lib/systemd/system/phpsessionclean.service
??5?????? /lib/systemd/system/phpsessionclean.timer
这些文件真的不见了。但目前我不知道如何解决这个问题。没有帮助apt-get -f purge
nor dpkg --remove --force-all
。
我试图通过使用参数执行我的 php 命令来为我的 php 命令设置别名,具体取决于具有我的远程主机 IP 的文件是否存在,否则没有任何其他参数。
我得到它与这个版本一起工作
#!/bin/bash
alias php="[ -f path/to/hostip ] && php -dxdebug.remote_host=\"$( < path/to/hostip )\" || php
两个问题
php path/to/any/script
我的进一步参数时不会传递给 php 调用我尝试了一个函数,它解决了问题 #2
#!/bin/bash
function phpx {
if [ -f path/to/hostip ]; then
php -dxdebug.remote_host="$( < path/to/hostip )" "$@"
else
php "$@"
fi
}
但我仍然有问题
php
用作函数名的别名我正在寻找的是like的别名php
alias php='php ( condition | true > pass file content as argument | false > pass nothing )'
我希望能够将我的进一步论点传递给别名。
我在双显示器设置中使用 Debian Stretch LXDE (OpenBox)。我通过设置激活了第二个屏幕的 openbox 上下文菜单
Desktop (right click) -> Desktop Preferences -> Advanced (Tab) -> Show menus provided by window managers when desktop is clicked (Checkbox)
我的第一个屏幕上下文菜单默认显示。
那么如何激活第二个屏幕上的 OpenBox 上下文菜单呢?
我已经尝试找出一些设置,/etc/xdg/openbox/...
但没有明确的结果。
编辑
澄清我的问题:每个屏幕都有自己的设置,Desktop (right click) -> Desktop Preferences
默认情况下可用。一旦我激活窗口管理器上下文菜单,它Desktop Preferences
就会消失,我无法撤消我的设置。
编辑 (2017-12-05)