所以 GNU/Linux 是一个操作系统,至少由几个程序组成:Linux kenel、gcc、gnu-binutils、Gnome desktop 等。
什么使 Linux 发行版成为 GNU?是编译内核的工具吗?是发行版附带的工具吗?
是否存在基于 Linux 但不基于 GNU 的全功能桌面操作系统?
在许多 Linux 发行版的安装过程中,它为您提供了安装 GRUB 引导加载程序的选项。每次我安装 Linux 时,我都会选择“是”来安装引导加载程序,我看到的所有教程都证实了这一点。
您什么时候不想安装 GRUB 引导加载程序?
由于各种原因,我正在考虑从 Ubuntu 切换到 Debian,转向更自由的软件支持系统就是其中之一。(GNU.org 提到,如果我们愿意,我们可以选择保持 Debian 完全自由,不包括非自由存储库。)
\n除了安装(我应该能够管理,因为我已经非常习惯阅读手册和使用终端),我有一个主要担心:我的互联网连接在带宽和使用限制方面都很弱。因此,如果我必须识别我当前习惯使用并已在 Ubuntu 上设置的所有软件包(例如 Python3、python-pip 软件包、GNU Octave 及其数据,以及基本上我使用的所有其他软件包),那就很不方便了。已使用\xc2\xa0 从互联网上安装apt),然后重新下载并安装它们。
我想问的是,有什么巧妙的方法可以做到这一点吗?首先,是否可以将我的包裹连同数据从一个系统转移到另一个系统?我特意询问是因为 Ubuntu 是基于 Debian 的。
\n如果不可能,我愿意下载软件包(当然,这需要很长时间,但我必须这样做)。但在这种情况下,一旦我在 Debian 上设置了软件包,我可以只在两个系统之间移动数据吗?即使那样也会非常方便。
\n我在Xubuntu(16.04,顺便说一句)但是lsb_release -a给了我:
user@host:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
Run Code Online (Sandbox Code Playgroud)
它应该显示Xubuntu,还是合法的输出?
如果是,我如何(通过 CLI)知道我使用的确切 Ubuntu 发行版?
No LSB modules are available.无论如何,警告是什么意思?
(它输出到stderr:
user@host:~$ lsb_release -a >/dev/null
No LSB modules are available.
Run Code Online (Sandbox Code Playgroud)
所以我猜在名义上它不应该在那里)
我知道不同的发行版会修补各自存储库中可用的软件包,但我一直不明白为什么需要这样做。如果有人能解释或指向我在线的相关文档,我将不胜感激。谢谢。
如果Linux 发行版是基于Fedora-core 的(例如Fedora、RHEL、CentOS、Scientific Linux),Python M2Crypto 库需要稍微不同的安装命令。
有没有办法检查发行版是否基于 Fedora-Core,以便我可以编写脚本来根据发行版执行正确的安装命令?
我很确定所有基于 Red Hat 和 Debian 的发行版都遵循在 中传送内核配置的约定/boot/config-*,但其他发行版呢?或者,如果这个约定非常普遍,哪些发行版不遵循它?
我有基本的 OS Luna,我想将它升级到 Freya。正如我过去在 Ubuntu 中所做的那样,我一直在等待包管理器通知我新版本已发布并升级操作系统,但 Elementary 根本不这样做。
我做了,sudo apt-get dist-upgrade但什么也没发生。我应该导入哪个源来升级整个系统?
谢谢!!
这是我的/etc/apt/sources.list文件:
# deb cdrom:[elementary OS 0.2 _Luna_ - Stable amd64 (20130810)]/ dists/precise/main/binary-i386/
# deb cdrom:[elementary OS 0.2 _Luna_ - Stable amd64 (20130810)]/ dists/precise/restricted/binary-i386/
# deb cdrom:[elementary OS 0.2 _Luna_ - Stable amd64 (20130810)]/ precise main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://archive.ubuntu.com/ubuntu precise main restricted
deb-src http://archive.ubuntu.com/ubuntu precise main restricted
## Major bug fix …Run Code Online (Sandbox Code Playgroud) 我目前Fedora 16在我的笔记本电脑上运行,这就像 3 年的 EOL-ed。之所以会这样,是因为在 Fedora 中升级到当前版本(至少 v16)并不容易,并且需要完全重新安装。所以它上面的所有东西都很旧并且不能很好地工作,我只是懒得将我的数据移动到外部介质上并重建操作系统。理想情况下,我想通过运行一个简单的yum/apt-get命令来升级。
因此,我从这次经历中吸取的教训是,我希望我的下一个 Linux 发行版非常容易更新,这不是因为我无法处理 Linux,而是因为我很懒惰并希望保持这种状态。我也相信,在这个时代,操作系统应该很容易升级。
哪些 Linux 发行版使升级更容易符合这个议程?我特别不想在执行升级之前将数据或文件系统移动到单独的介质。
我还希望发行版支持 KDE,这是我的首选界面。
回到我使用 Windows 的时代,应用程序是以独立的方式安装的。这为最终用户/系统管理员提供了很大的自由来决定升级什么和在哪里,什么时候打补丁,而不会干扰其他应用程序。
在 *NIX 中,纠缠的依赖是一个令人头疼的问题。PC-BSD 试图通过PBI克服这个问题,通过创建独立的应用程序。AFAIK,这现在似乎已被弃用,他们回到了包管理方式(PBI 现在是端口的包装器),并且所有 Linux 发行版都朝着同一个方向运行:到最后有数百个依赖项,甚至桌面环境也有望依赖关于系统管理守护进程。
基于数百个依赖项构建应用程序使程序员的生活更轻松,但给最终用户和系统管理员带来了令人震惊的问题。例如,我不能再让一个古老的 Debian Etch 版本的应用程序在 Debian Jessie 中运行。我知道很多人都会谈到安全、补丁和最新系统的故事,但开源意味着可以自由决定更新什么、何时何地更新。有非常正当的理由不更新系统或其中的一部分,或者至少不按照典型的 *NIX 包管理器引导用户的方式进行更新(即离线工作的机器、旧硬件、与需要更新的旧数据的兼容性)保持合规性,...)。其他时候,系统管理员更喜欢分几个步骤来确保安全。
就个人而言,我认为我作为系统管理员应该决定更新什么,何时更新,并承担风险。以目前的情况,这是不可能的。(即在 Debian 中有一个新版本的 libc6,这在任何地方都有依赖关系)。如果我决定保留两个或更多存储库来解决这个问题,我就会产生另一个噩梦。
我知道某些依赖项(即安装了 MySQL)是可以接受的,因为这是一个主要的依赖项,但我不明白为什么像库这样的小依赖项不简单地嵌入到代码中。磁盘便宜。许多移植到 Windows 的 Linux 应用程序都实现了这一点。
编辑:以确保它不仅仅是基于意见
在 *NIX 中安装软件的选项有哪些(为了简单起见,我们将其称为 Debian/FreeBSD)以便:
保持软件的某个特定版本运行多年而无需升级,并确保无论后续的基本操作系统和库升级如何,都可以保持不变,ala apt-get hold但永远。
决定在不与其他软件/库冲突的情况下升级/降级。
安装该软件的两个或更多版本。
Jails/chroot/VM 不是选项,尽管它们是明显的解决方法。还,
distribution-choice package-management unix-philosophy distributions
distributions ×10
linux ×3
boot-loader ×1
centos ×1
command-line ×1
debian ×1
fedora ×1
gnu ×1
linux-kernel ×1
lsb-release ×1
migration ×1
packaging ×1
rhel ×1
ubuntu ×1
upgrade ×1
xubuntu ×1