有没有办法(从脚本)来识别默认的系统包管理器?
澄清一下,我想要做的是运行一个给定的命令,在 Debian 或其任何衍生产品上它会返回类似“apt”的东西,在 openSUSE 上它会返回“zypp”,在 Fedora 等上它会返回“yum”,在 Arch Linux 上它会返回“pacman”等。
我知道我可以用下面的方法来做到这一点,我只是想知道是否有一种更强大的方法,只要有同名的可执行文件就不会中断。
which apt >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo "apt"
fi
# etc...
Run Code Online (Sandbox Code Playgroud) 现在,每当我使用 vagrant 时,它都会尝试libvirt用作提供程序。我想默认使用 VirtualBox。
vagrant-libvirt 未安装。
这很麻烦,因为有些命令不起作用,例如vagrant status:
[florian@localhost local]$ vagrant status
The provider 'libvirt' could not be found, but was requested to
back the machine 'foobar'. Please use a provider that exists.
[florian@localhost local]$ vagrant status --provider=virtualbox
An invalid option was specified. The help for this command
is available below.
Usage: vagrant status [name]
-h, --help Print this help
Run Code Online (Sandbox Code Playgroud) 我的运行 Debian Jessie 的台式计算机在每次启动时都开始进入紧急模式 shell。屏幕说使用journalctl -xb查找原因,使用systemctl default继续引导。当我执行时systemctl default,系统继续启动,在使用系统几周后,没有任何明显的错误。
仔细看journalctl -xb,没有什么是掉到紧急情况下的原因。是否有一种简单的方法可以确定它决定进入紧急模式的确切原因?是否有其他标志或启动选项可以明确问题所在?
刚刚尝试在我的 Buster - monitoring-plugins-standard 中安装以下软件包并注意到以下输出:
The following additional packages will be installed:
dirmngr gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm libarchive13 libassuan0 libavahi-client3 libavahi-common-data libavahi-common3
libcups2 libdbi1 libgpgme11 libksba8 libldb1 libnet-snmp-perl libnpth0 libpq5 libradcli4 libsensors-config libsensors5 libsmbclient libsnmp-base libsnmp30 libtalloc2 libtdb1
libtevent0 libtirpc-common libtirpc3 libwbclient0 pinentry-curses python-crypto python-gpg python-ldb python-samba python-talloc python-tdb rpcbind samba-common samba-common-bin
samba-dsdb-modules samba-libs smbclient snmp
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解为什么apt要安装例如gnupg吗?
查看推荐的软件包:
Recommends: bind9-host | host, dnsutils, libnet-snmp-perl, rpcbind, smbclient, snmp, sudo, libdbi1 (>= 0.8.4), libgnutls30 (>= 3.6.5), libldap-2.4-2 …Run Code Online (Sandbox Code Playgroud) 192.168.25.1 = 路由器
192.168.10.1 = 网关/调制解调器
192.168.25.144 = 这台电脑(它是运行 Fedora 17 的“linuxpc”)
下面这些日志条目事件期间发生了什么?特别是最后两个日志条目是什么意思。
Oct 10 13:24:22 linuxpc dhclient[5779]: DHCPREQUEST on p14p1 to 192.168.25.1 port 67 (xid=0x466a6633)
Oct 10 13:24:22 linuxpc dhclient[5779]: DHCPACK from 192.168.25.1 (xid=0x466a6633)
Oct 10 13:24:22 linuxpc dhclient[5779]: bound to 192.168.25.144 -- renewal in 32701 seconds.
Oct 10 13:24:22 linuxpc NetworkManager[846]: <info> (p14p1): DHCPv4 state changed renew -> renew
Oct 10 13:24:22 linuxpc NetworkManager[846]: <info> address 192.168.25.144
Oct 10 13:24:22 linuxpc NetworkManager[846]: <info> prefix 24 (255.255.255.0)
Oct 10 …Run Code Online (Sandbox Code Playgroud) 我想在我的 Debian Wheeyz 系统上安装 php 56。所以我将 dotdeb repo 添加到 apt。获取密钥时,发生错误:
# wget http://www.dotdeb.org/dotdeb.gpg -O- |apt-key add –
# gpg: can't open `–': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我需要更改什么才能将密钥添加到 apt?
我正在慢慢地创建一个关于 linux 工作原理的心智模型,并且我已经尽量简化了我的 linux 工作模型。让我们假设内核启动并初始化它将运行的唯一软件:终端。让我们假设这个终端具有出现在屏幕上并呈现一些文本的能力,当然还有从键盘获取输入的能力。我们还假设我输入了一个可执行文件的名称,它知道它在内存中的位置。现在,终端如何运行这个程序?在我的心智模型中,我认为:
终端是一个程序,这意味着它可以进行系统调用。所以它使用 fork() 系统调用并在内核中创建一个新进程。然后,它以某种方式使这个进程运行我的程序代码。现在, printf() 如何在程序运行时在我的终端上实时显示文本?
我需要使用 4 个字段(文件 1 的字段 1、2、4 和 5 与文件 2 的字段 1、2、4 和 5)比较两个文件 File1 和 File2(以空格分隔)。
逻辑:
如果文件 1 的第 1、2 和 4 列与文件 2 的第 1、2 和 4 列匹配,并且第 5 列不匹配,则来自文件 1 和文件 2 的行都连接起来重定向为输出。因此,输出文件仅包含 File1 和 File2 的第 1、2 和 4 列匹配而第 5 列不匹配的那些行。
文件1:
sc2/80 20 . A T 86 PASS N=2 F=5;U=4
sc2/60 55 . G T 76 PASS N=2 F=5;U=4
sc2/68 20 . T C 71 PASS N=2 F=5;U=4
sc2/24 24 . T G …Run Code Online (Sandbox Code Playgroud) 我有一个像下面这样的字符串。str='014387650' 现在我想像下面这样拆分这个字符串并将值放入数组中。
A[0]=0
A[1]=01
A[2]=014
A[3]=0143
A[4]=01438
A[5]=014387
A[6]=0143876
A[7]=01438765
A[8]=014387650
Run Code Online (Sandbox Code Playgroud) 我正在寻找对以下内容的解释: