这个问题似乎在几个问题和谷歌很容易找到的其他地方得到了正确解决,但由于下面解释的原因,我没有找到令人满意的解决方案。但只是为了完成,我提供了一些相关链接:
https://askubuntu.com/questions/138284/how-to-downgrade-a-package-via-apt-get https://askubuntu.com/questions/428772/how-to-install-specific-version-of -some-package/428778 https://askubuntu.com/questions/26498/choose-gcc-and-g-version ...
和别的。
然而,这个问题是关于在 Kali Linux 中安装一个非常特定版本的 GCC,它似乎不是一个特定的包。特别是,问题是关于如何安装 6.3.0 版本,因为我需要这个版本来编译一个特定的程序:https ://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/
(作为一个额外的问题,如果在不使用不同版本的 GCC 的情况下有更明智的方法来解决这个特定问题,请随时回答,但我相信这个问题是一般性的,我想知道如何去做,不管如何如何正确制作上述程序链接)
可用于安装任何软件包的版本,例如 gcc,可以通过以下方式确定:
apt-cache showpkg gcc
Run Code Online (Sandbox Code Playgroud)
这将列出“版本:”下的可用版本,例如
4:7.2.0-1d1
4:4.9.2-2
Run Code Online (Sandbox Code Playgroud)
安装就像发出一样简单
apt-get install gcc:4:4.9.2-2
Run Code Online (Sandbox Code Playgroud)
这将通过简单地(我相信)覆盖 7.2.0-1d1 安装(如果存在)来安装旧版本 4:4.9.2-2。
为了让版本 4:4.9.2-2 可用,我必须添加deb
http://old.kali.org/kali sana main non-free contrib到我的
/etc/apt/sources.list文件中,然后运行apt-get update.
但是,如果我需要的版本没有列出怎么办?
我一直在尝试各种来源,例如在这里找到的那些:http : //snapshot.debian.org/以及来自 Google 搜索的各种其他问题和网站。
他们中的大多数给我忽略或错误,例如如下
Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease
Run Code Online (Sandbox Code Playgroud)
即使这可行,安装特定版本似乎是一种非常糟糕的方法,因为添加一些任意源可能没有我想要的特定版本。
如果我在 snapshot.debian.org 上搜索 gcc,我只会得到非常旧的版本:http : //snapshot.debian.org/package/gcc/
我最终对这种方法感到沮丧,并从源 tarball 编译了 GCC 6.3.0。编译成功,但接下来我面临着如何安装它。我谨慎运行make install,因为我担心它会篡改apt …
众所周知,systemd 将网络接口名称从 eth0 更改为 enp0s25,这称为“可预测的网络接口名称”。
在我的系统上,eth0 称为“enp0s31f6”。
我很抱歉这么说,但我也同意这位用户的说法“我在‘可预测’这个词中看到了一点讽刺” https://askubuntu.com/questions/704361/why-is-my-network-interface -named-enp0s25-而不是-eth0
回到主题:
在我的系统(带有一个物理 PCI 以太网适配器的 Debian 9.8)上,我突然发现 DHCP 不再工作。
我需要手动运行 dhclient 来获取 IP。
然后,我查看 /etc/network/interfaces 并看到:
auto eth0
iface eth0 inet dhcp
Run Code Online (Sandbox Code Playgroud)
这不应该是 enp0s31f6 吗?
但是,我应该如何知道要放在那里的内容,如果它再次发生变化怎么办,例如,如果我将以太网 PCI 卡移至不同的插槽?
我真的应该手动编辑这个文件,并将 eth0 更改为 systemd 决定调用我的接口的任何内容吗?
当然,我一定错过了一些关于 systemd 如何工作、Debian 如何工作或可预测网络接口如何工作的重要信息。也许是这些的组合。
我应该引用 /etc/network/interfaces 中的抽象网络接口吗?一些抽象字符串总是意味着“第一个网络接口卡”(这不就是 eth0 吗?)?或者通过一些UID?通过它的 PCI 域:总线:设备?
这非常令人困惑,很多文档都提到了我认为是一堆遗留脚本、现代 systemd,并且许多发行版似乎使用了旧式脚本和 systemd 功能的组合,这很难掌握。
问题:
为什么它停止工作?
我做错了什么?
当 Debian 使用 systemd 和可预测网络接口时,为什么我的 /etc/network/interfaces 中一直有 eth0?
解决这个问题的正确方法是什么?
几十年来,复制/粘贴在 GNU/Linux 中的所有情况下都无法正常工作,而且这个问题仍然没有得到解决。
我发现自己有两个 xfce4-terminal 实例,终端 A 和终端 B。
终端 A 位于 bash 命令提示符处。终端 B 位于 vim 实例中,正在编辑某个任意文件。
我尝试通过用鼠标光标突出显示 B 中的文本来将文本从 B 复制/粘贴到 A 中。文本成功突出显示。我使用航站楼 A 中的中间按钮。
预期成绩:
应将终端 B 中的文本复制到终端 A 中。
实际结果:
剪辑缓冲区中的前一个条目被转储到终端 A 中。
我的“修复”:
退出vim并使用更少或类似的命令行工具,无需在vim中复制文本。然后它就会按预期工作。
问题:
有更好的修复方法吗?
我读过了:
和别的。
我正在尝试将大小从 250 GB 调整为 500 GB。以前,分区 /dev/sda2 为 250 GB,我现在已将分区大小调整为 500 GB。
但是,位于 /dev/sda2 的 LUKS 设备呢?我如何调整它的大小?
好吧,手册(用于 cryptsetup)为我们提供了“调整大小”。但是,当我检查 cryptsetup 状态时,我的设备已经是 500 GB。
此外,当我检入 parted 时,它(作为符号链接的加密设备 /dev/dm-0 或 /dev/mapper/cryptdevice)也显示为 500 GB。
看来我的加密设备已经是正确的大小了!
那么,为什么当我实际挂载加密设备 (/dev/mapper/cryptdevice) 时,它显示为 250 GB?
我错过了一步吗?我还需要做什么?
在执行此操作之间,我显然已经重新启动了很多次。我从可启动的 USB 设备开始,执行 cryptsetup,重新启动等。它仍然显示为 250 GB,而我预计它是 500 GB。
请注意,我实际上从未调整过分区本身以外的任何内容。调整分区大小后,cryptsetup 和 parted 开始报告加密卷也在调整大小——但同样,当我安装它时,它仍然只有 250 GB。
除此之外,我没有 LVM,我只有:
/dev/sda2,其中包含一个 LUKS 加密文件系统。我用 cryptsetup luksOpen /dev/sda2 cryptdevice 等打开它。
当我尝试在 Debian 9.9 上安装 wine32 时遇到以下问题:
# apt-get install wine32
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
wine32:i386 : Depends: libwine:i386 (= …Run Code Online (Sandbox Code Playgroud) 第一的,
如果我sysctl net.ipv6.conf.all.disable_ipv6=1在系统启动后从命令行发出,我会得到我想要的结果——IPv6 确实被禁用。
现在解决重新启动后使此行为持续存在的问题。
很容易找到如何执行此操作的建议,通常它们围绕将net.ipv6.conf.all.disable_ipv6=1文件放入/etc/sysctl.d/目录中或 sysctl 本身的配置文件中,即/etc/sysctl.conf. 提到的其他方法包括添加
GRUB_CMDLINE_LINUX="ipv6.disable=1"
Run Code Online (Sandbox Code Playgroud)
到/etc/default/grub
例如,这里提到了这一点:
https://serverfault.com/questions/660979/how-to-disable-ipv6-support-in-linux-entirely
我已经尝试了所有这些,但它们不起作用。ifconfig清楚地表明该接口已启用 IPv6。同样,如果我只是在启动后执行手册sysctl,它会按预期禁用它。
sysctl -p对我没有任何作用,只需按上述方式逐字编写命令即可。
我还尝试将sysctl命令放入 中/etc/rc.local,通过观察我可以放在那里的其他命令,我知道该命令可以正确运行。然而,尽管执行了,但似乎并没有生效。
我还尝试了其他命令,而不仅仅是all.disable_ipv6,例如default.disable_ipv6and enp0s3.disable_ipv6(我已经验证 enp0s3 确实是我的以太网接口)。
对我来说,这似乎有点类似于https://bugs.launchpad.net/ubuntu/+source/linux/+bug/997605,但我不知道为什么会发生这种情况。我确信我在不同的系统上所要做的只是将其放入 /etc/sysctl.d/ 中的文件中。
除了我尝试过的之外,我已经知道禁用此功能的一种方法是在不支持 IPv6 的情况下手动重新编译内核。然而,这实在是太拼凑了,它不可靠,而且需要做和维护太多的工作。