用 GNOME Boxes 下载一个操作系统镜像
最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。Media
via https://linux.cn/article-10155-1.html
最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。Media
via https://linux.cn/article-10155-1.html
用 GNOME Boxes 下载一个操作系统镜像
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164805hworcwv1opopf1fo.jpg">Media</a>Boxes 是 GNOME 上的虚拟机应用。最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。你现在可以在 Boxes 中自动安装那些发行版以及像 FreeBSD 和 FreeDOS 这样的操作系统,甚至还包括红帽企业 Linux。红帽开发者计划包括了一个<a href="https://developers.redhat.com/blog/2016/03/31/no-cost-rhel-developer-subscription-now-available/">红帽企业版 Linux 的免费订阅</a>。 使用<a href="http://developers.redhat.com">红帽开发者</a>帐户,Boxes 可以自动设置一个名为 Developer Suite 订阅的 RHEL 虚拟机。 下面是它的工作原理。红帽企业版 Linux要创建一个红帽企业版 Linux 的虚拟机,启动 Boxes,点击“新建”。从源选择列表中选择“下载一个镜像”。在顶部,点击“红帽企业版 Linux”。这将会打开网址为 <a href="http://developers.redhat.com">developers.redhat.com</a> 的一个 Web 表单。使用已有的红帽开发者账号登录,或是新建一个。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164806ax9crr1tk2209tx9.png">Media</a>如果这是一个新帐号,Boxes 在继续之前需要一些额外的信息。这一步需要在账户中开启开发者订阅。还要确保 <a href="https://www.redhat.com/wapps/tnc/termsack?event%5B%5D=signIn">接受条款和条件</a>,这样可以在之后的注册中节省一步。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807e0jqboi4m85bge5s.png">Media</a>点击“提交”,然后就会开始下载安装磁盘镜像。下载需要的时间取决于你的网络状况。在这期间你可以去喝杯茶或者咖啡歇息一下。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807qmbqbvt4cbkdsv44.png">Media</a>等介质下载完成(一般位于 <code>~/Downloads</code> ),Boxes 会有一个“快速…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164805hworcwv1opopf1fo.jpg">Media</a>Boxes 是 GNOME 上的虚拟机应用。最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。你现在可以在 Boxes 中自动安装那些发行版以及像 FreeBSD 和 FreeDOS 这样的操作系统,甚至还包括红帽企业 Linux。红帽开发者计划包括了一个<a href="https://developers.redhat.com/blog/2016/03/31/no-cost-rhel-developer-subscription-now-available/">红帽企业版 Linux 的免费订阅</a>。 使用<a href="http://developers.redhat.com">红帽开发者</a>帐户,Boxes 可以自动设置一个名为 Developer Suite 订阅的 RHEL 虚拟机。 下面是它的工作原理。红帽企业版 Linux要创建一个红帽企业版 Linux 的虚拟机,启动 Boxes,点击“新建”。从源选择列表中选择“下载一个镜像”。在顶部,点击“红帽企业版 Linux”。这将会打开网址为 <a href="http://developers.redhat.com">developers.redhat.com</a> 的一个 Web 表单。使用已有的红帽开发者账号登录,或是新建一个。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164806ax9crr1tk2209tx9.png">Media</a>如果这是一个新帐号,Boxes 在继续之前需要一些额外的信息。这一步需要在账户中开启开发者订阅。还要确保 <a href="https://www.redhat.com/wapps/tnc/termsack?event%5B%5D=signIn">接受条款和条件</a>,这样可以在之后的注册中节省一步。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807e0jqboi4m85bge5s.png">Media</a>点击“提交”,然后就会开始下载安装磁盘镜像。下载需要的时间取决于你的网络状况。在这期间你可以去喝杯茶或者咖啡歇息一下。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807qmbqbvt4cbkdsv44.png">Media</a>等介质下载完成(一般位于 <code>~/Downloads</code> ),Boxes 会有一个“快速…
使用 Podman 以非 root 用户身份运行 Linux 容器
但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。Media
via https://linux.cn/article-10156-1.html
但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。Media
via https://linux.cn/article-10156-1.html
使用 Podman 以非 root 用户身份运行 Linux 容器
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/082845qyjxxcmccjjm6cn0.jpg">Media</a>Linux 容器是由 Linux 内核所提供的具有特定隔离功能的进程 —— 包括文件系统、进程和网络的隔离。容器有助于实现可移植性 —— 应用可以在容器镜像中与其依赖项一起分发,并可在几乎任何有容器运行时环境的 Linux 系统上运行。虽然容器技术存在了很长时间,但 Linux 容器是由 Docker 而得到了广泛推广。 “Docker” 这个词可以指几个不同的东西,包括容器技术和工具,周围的社区,或者 Docker Inc. 公司。但是,在本文中,我将用来指管理 Linux 容器的技术和工具。什么是 Docker<a href="https://docs.docker.com/">Docker</a> 是一个以 root 身份在你的系统上运行的守护程序,它利用 Linux 内核的功能来管理正在运行的容器。除了运行容器之外,它还可以轻松管理容器镜像 —— 与容器注册库交互、存储映像、管理容器版本等。它基本上支持运行单个容器所需的所有操作。但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。然而,Podman 在解决这两个问题。Podman 介绍<a href="https://podman.io/">Podman</a> 是一个容器运行时环境,提供与 Docker 非常相似的功能。正如已经提示的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。让我们看看使用 Podman 运行…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/082845qyjxxcmccjjm6cn0.jpg">Media</a>Linux 容器是由 Linux 内核所提供的具有特定隔离功能的进程 —— 包括文件系统、进程和网络的隔离。容器有助于实现可移植性 —— 应用可以在容器镜像中与其依赖项一起分发,并可在几乎任何有容器运行时环境的 Linux 系统上运行。虽然容器技术存在了很长时间,但 Linux 容器是由 Docker 而得到了广泛推广。 “Docker” 这个词可以指几个不同的东西,包括容器技术和工具,周围的社区,或者 Docker Inc. 公司。但是,在本文中,我将用来指管理 Linux 容器的技术和工具。什么是 Docker<a href="https://docs.docker.com/">Docker</a> 是一个以 root 身份在你的系统上运行的守护程序,它利用 Linux 内核的功能来管理正在运行的容器。除了运行容器之外,它还可以轻松管理容器镜像 —— 与容器注册库交互、存储映像、管理容器版本等。它基本上支持运行单个容器所需的所有操作。但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。然而,Podman 在解决这两个问题。Podman 介绍<a href="https://podman.io/">Podman</a> 是一个容器运行时环境,提供与 Docker 非常相似的功能。正如已经提示的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。让我们看看使用 Podman 运行…
为什么 Linux 用户应该试一试 Rust
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。Media
via https://linux.cn/article-10157-1.html
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。Media
via https://linux.cn/article-10157-1.html
为什么 Linux 用户应该试一试 Rust
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/090805l94nk97sz87e1yld.jpg">Media</a>Rust 是一种相当年轻和现代的编程语言,具有许多使其非常灵活而及其安全的功能。数据显示它正在变得非常受欢迎,连续三年(<a href="https://insights.stackoverflow.com/survey/2016#technology-most-loved-dreaded-and-wanted">2016</a>、<a href="https://insights.stackoverflow.com/survey/2017#technology-most-loved-dreaded-and-wanted-languages">2017</a> 和 <a href="https://insights.stackoverflow.com/survey/2018#technology-most-loved-dreaded-and-wanted-languages">2018</a>)在 Stack Overflow 开发者调查中获得“最受喜爱的编程语言”的第一名。Rust 也是开源语言的一种,它具有一系列特殊的功能,使得它可以适应许多不同的编程项目。 它最初源于 2006 年 Mozilla 员工的个人项目,几年后(2009 年)被 Mozilla 选为特别项目,然后在 2010 年宣布供公众使用。Rust 程序运行速度极快,可防止段错误,并能保证线程安全。这些属性使该语言极大地吸引了专注于应用程序安全性的开发人员。Rust 也是一种非常易读的语言,可用于从简单程序到非常大而复杂的项目。Rust 优点:内存安全 —— Rust 不会受到悬空指针、缓冲区溢出或其他与内存相关的错误的影响。它提供内存安全,无回收垃圾。通用 —— Rust 是适用于任何类型编程的语言快速 —— Rust 在性能上与 C / C++ 相当,但具有更好的安全功能。高效 —— Rust 是为了便于并发编程而构建的。面向项目 —— Rust 具有内置的依赖关系和构建管理系统 Cargo。得到很好的支持 —— Rust 有一个令人印#…
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/090805l94nk97sz87e1yld.jpg">Media</a>Rust 是一种相当年轻和现代的编程语言,具有许多使其非常灵活而及其安全的功能。数据显示它正在变得非常受欢迎,连续三年(<a href="https://insights.stackoverflow.com/survey/2016#technology-most-loved-dreaded-and-wanted">2016</a>、<a href="https://insights.stackoverflow.com/survey/2017#technology-most-loved-dreaded-and-wanted-languages">2017</a> 和 <a href="https://insights.stackoverflow.com/survey/2018#technology-most-loved-dreaded-and-wanted-languages">2018</a>)在 Stack Overflow 开发者调查中获得“最受喜爱的编程语言”的第一名。Rust 也是开源语言的一种,它具有一系列特殊的功能,使得它可以适应许多不同的编程项目。 它最初源于 2006 年 Mozilla 员工的个人项目,几年后(2009 年)被 Mozilla 选为特别项目,然后在 2010 年宣布供公众使用。Rust 程序运行速度极快,可防止段错误,并能保证线程安全。这些属性使该语言极大地吸引了专注于应用程序安全性的开发人员。Rust 也是一种非常易读的语言,可用于从简单程序到非常大而复杂的项目。Rust 优点:内存安全 —— Rust 不会受到悬空指针、缓冲区溢出或其他与内存相关的错误的影响。它提供内存安全,无回收垃圾。通用 —— Rust 是适用于任何类型编程的语言快速 —— Rust 在性能上与 C / C++ 相当,但具有更好的安全功能。高效 —— Rust 是为了便于并发编程而构建的。面向项目 —— Rust 具有内置的依赖关系和构建管理系统 Cargo。得到很好的支持 —— Rust 有一个令人印#…
使用 Lakka Linux 将你的旧 PC 变成复古游戏主机
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。Media
via https://linux.cn/article-10158-1.html
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。Media
via https://linux.cn/article-10158-1.html
使用 Lakka Linux 将你的旧 PC 变成复古游戏主机
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。你可能已经了解<a href="https://itsfoss.com/lightweight-linux-beginners/">专门用于复活旧计算机的 Linux 发行版</a>。但是你知道有个 Linux 发行版专门是为了将旧电脑变成复古游戏主机创建的么?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095819b5enoa7zo8hwwhw7.jpg">Lakka is a Linux distribution specially for retrogaming</a>认识下 <a href="http://www.lakka.tv/">Lakka</a>,它是一个轻量级 Linux 发行版,可以将旧的或低端的计算机(如 Raspberry Pi)变成一个完整的复古游戏主机,当我说复古游戏主机时,我对主机部分很认真。如果你曾经使用过 Xbox 和 PlayStation,你就会知道典型的主机界面是什么样的。Lakka 提供类似的界面和类似的体验。我稍后会谈到“体验”。先看一下界面。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095625eagrgrffrug44vfw.gif">Media</a><em>Lakka 复古游戏界面</em>Lakka:为复古游戏而生的 Linux 发行版Lakka 是 <a href="https://www.retroarch.com/">RetroArch</a> 和 <a href="https://www.libretro.com/">Libretro</a> 生态系统的官方 Linux 发行版。RetroArch 是复古游戏模拟器和游戏引擎的前端。你在上面的视频中看到的界面只是 RetroArch。如果你是只想玩复古游戏,只需在当前的 Linux 发行版中安装 RetroArch 即可。Lakka 提供了带有 Libretro 核心的 RetroArch。因此,你会获得一个预先配置完的操作系统,你可以安装或插入 live USB 并开始玩游戏。Lakka 是轻量级的,你可以将它安装在大多数老系统或单板计算机上,如 Raspberry Pi 上。它支持大量的模拟器。你只需要在系统上下载 ROM,Lakka…
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。你可能已经了解<a href="https://itsfoss.com/lightweight-linux-beginners/">专门用于复活旧计算机的 Linux 发行版</a>。但是你知道有个 Linux 发行版专门是为了将旧电脑变成复古游戏主机创建的么?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095819b5enoa7zo8hwwhw7.jpg">Lakka is a Linux distribution specially for retrogaming</a>认识下 <a href="http://www.lakka.tv/">Lakka</a>,它是一个轻量级 Linux 发行版,可以将旧的或低端的计算机(如 Raspberry Pi)变成一个完整的复古游戏主机,当我说复古游戏主机时,我对主机部分很认真。如果你曾经使用过 Xbox 和 PlayStation,你就会知道典型的主机界面是什么样的。Lakka 提供类似的界面和类似的体验。我稍后会谈到“体验”。先看一下界面。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095625eagrgrffrug44vfw.gif">Media</a><em>Lakka 复古游戏界面</em>Lakka:为复古游戏而生的 Linux 发行版Lakka 是 <a href="https://www.retroarch.com/">RetroArch</a> 和 <a href="https://www.libretro.com/">Libretro</a> 生态系统的官方 Linux 发行版。RetroArch 是复古游戏模拟器和游戏引擎的前端。你在上面的视频中看到的界面只是 RetroArch。如果你是只想玩复古游戏,只需在当前的 Linux 发行版中安装 RetroArch 即可。Lakka 提供了带有 Libretro 核心的 RetroArch。因此,你会获得一个预先配置完的操作系统,你可以安装或插入 live USB 并开始玩游戏。Lakka 是轻量级的,你可以将它安装在大多数老系统或单板计算机上,如 Raspberry Pi 上。它支持大量的模拟器。你只需要在系统上下载 ROM,Lakka…
使用 Argbash 来改进你的 Bash 脚本
Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。与其他 bash 模块的通用代码不同,它生成你的脚本所需的最少代码。Media
via https://linux.cn/article-10159-1.html
Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。与其他 bash 模块的通用代码不同,它生成你的脚本所需的最少代码。Media
via https://linux.cn/article-10159-1.html
使用 Argbash 来改进你的 Bash 脚本
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/092854nrvazffgzfnqaxfw.png">Media</a>你编写或维护过有意义的 bash 脚本吗?如果回答是,那么你可能希望它们以标准且健壮的方式接收命令行参数。Fedora 最近得到了<a href="https://argbash.readthedocs.io/">一个很好的附加组件</a>,它可以帮助你生成更好的脚本。不用担心,它不会花费你很多时间或精力。为什么需要 Argbash?Bash 是一种解释性的命令行语言,没有标准库。因此,如果你编写 bash 脚本并希望命令行界面符合 <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html">POSIX</a> 和 <a href="https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html">GNU CLI</a> 标准,那么你一般只有两种选择:直接编写为脚本量身定制的参数解析功能(可使用内置的 getopts)。使用外部 bash 模块。第一个选项看起来非常愚蠢,因为正确实现接口并非易事。但是,从 <a href="https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash">Stack Overflow</a> 到 <a href="http://wiki.bash-hackers.org/howto/getopts_tutorial">Bash Hackers</a> wiki 的各种站点上,它却被认为是最佳选择。第二个选项看起来更聪明,但使用模块有它自己的问题。最大的问题是你必须将其代码与脚本捆绑在一起。这可能意味着:要么,你将库作为单独的文件分发或者,在脚本的开头包含库代码有两个文件而不是一个是愚蠢的;但采用一个文件的话,会让一堆上千行的复杂代码污染了你的脚本。这是 Argbash <a href="https://argbash.readthedocs.io/">项目诞生</a>的主要原因。Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/092854nrvazffgzfnqaxfw.png">Media</a>你编写或维护过有意义的 bash 脚本吗?如果回答是,那么你可能希望它们以标准且健壮的方式接收命令行参数。Fedora 最近得到了<a href="https://argbash.readthedocs.io/">一个很好的附加组件</a>,它可以帮助你生成更好的脚本。不用担心,它不会花费你很多时间或精力。为什么需要 Argbash?Bash 是一种解释性的命令行语言,没有标准库。因此,如果你编写 bash 脚本并希望命令行界面符合 <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html">POSIX</a> 和 <a href="https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html">GNU CLI</a> 标准,那么你一般只有两种选择:直接编写为脚本量身定制的参数解析功能(可使用内置的 getopts)。使用外部 bash 模块。第一个选项看起来非常愚蠢,因为正确实现接口并非易事。但是,从 <a href="https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash">Stack Overflow</a> 到 <a href="http://wiki.bash-hackers.org/howto/getopts_tutorial">Bash Hackers</a> wiki 的各种站点上,它却被认为是最佳选择。第二个选项看起来更聪明,但使用模块有它自己的问题。最大的问题是你必须将其代码与脚本捆绑在一起。这可能意味着:要么,你将库作为单独的文件分发或者,在脚本的开头包含库代码有两个文件而不是一个是愚蠢的;但采用一个文件的话,会让一堆上千行的复杂代码污染了你的脚本。这是 Argbash <a href="https://argbash.readthedocs.io/">项目诞生</a>的主要原因。Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。…
一窥你安装的 Linux 软件包
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。Media
via https://linux.cn/article-10160-1.html
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。Media
via https://linux.cn/article-10160-1.html
一窥你安装的 Linux 软件包
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/095619ks5en1rsgvguoojs.jpg">Media</a>你有没有想过你的 Linux 系统上安装了几千个软件包? 是的,我说的是“千”。 即使是相当一般的 Linux 系统也可能安装了上千个软件包。 有很多方法可以获得这些包到底是什么包的详细信息。首先,要在基于 Debian 的发行版(如 Ubuntu)上快速得到已安装的软件包数量,请使用 apt list --installed, 如下:<pre class="prettyprint linenums">$ apt list --installed | wc -l2067</pre>这个数字实际上多了一个,因为输出中包含了 “Listing …” 作为它的第一行。 这个命令会更准确:<pre class="prettyprint linenums">$ apt list --installed | grep -v "^Listing" | wc -l2066</pre>要获得所有这些包的详细信息,请按以下方式浏览列表:<pre class="prettyprint linenums">$ apt list --installed | moreListing...a11y-profile-manager-indicator/xenial,now 0.1.10-0ubuntu3 amd64 [installed]account-plugin-aim/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-facebook/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-flickr/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-google/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-jabber/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-salut/xenial,now 3.12.11-0ubuntu3 amd64 [installed]</pre>这需要观察很多细节 —— 特别是让你的眼睛在所有 2000 多个文件中徘徊。 它包含包名称、版本等,以及更多但并不是以最易于我们人类解析的显示信息。 dpkg-query 使得描述更容易理解,但这些描述会塞满你的命令窗口,除非窗口非常宽。 因此,为了让此篇文章更容易阅读,下面的数据显示已经分成了左右两侧。左侧:<pre class="prettyprint linenums">$ dpkg-query -l | moreDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)||/…
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/095619ks5en1rsgvguoojs.jpg">Media</a>你有没有想过你的 Linux 系统上安装了几千个软件包? 是的,我说的是“千”。 即使是相当一般的 Linux 系统也可能安装了上千个软件包。 有很多方法可以获得这些包到底是什么包的详细信息。首先,要在基于 Debian 的发行版(如 Ubuntu)上快速得到已安装的软件包数量,请使用 apt list --installed, 如下:<pre class="prettyprint linenums">$ apt list --installed | wc -l2067</pre>这个数字实际上多了一个,因为输出中包含了 “Listing …” 作为它的第一行。 这个命令会更准确:<pre class="prettyprint linenums">$ apt list --installed | grep -v "^Listing" | wc -l2066</pre>要获得所有这些包的详细信息,请按以下方式浏览列表:<pre class="prettyprint linenums">$ apt list --installed | moreListing...a11y-profile-manager-indicator/xenial,now 0.1.10-0ubuntu3 amd64 [installed]account-plugin-aim/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-facebook/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-flickr/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-google/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-jabber/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-salut/xenial,now 3.12.11-0ubuntu3 amd64 [installed]</pre>这需要观察很多细节 —— 特别是让你的眼睛在所有 2000 多个文件中徘徊。 它包含包名称、版本等,以及更多但并不是以最易于我们人类解析的显示信息。 dpkg-query 使得描述更容易理解,但这些描述会塞满你的命令窗口,除非窗口非常宽。 因此,为了让此篇文章更容易阅读,下面的数据显示已经分成了左右两侧。左侧:<pre class="prettyprint linenums">$ dpkg-query -l | moreDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)||/…
为什么 Python 这么慢?
对于一个类似的程序,Python 要比其它语言慢 2 到 10 倍不等,这其中的原因是什么?又有没有改善的方法呢?Media
via https://linux.cn/article-10161-1.html
对于一个类似的程序,Python 要比其它语言慢 2 到 10 倍不等,这其中的原因是什么?又有没有改善的方法呢?Media
via https://linux.cn/article-10161-1.html
为什么 Python 这么慢?
Python 现在越来越火,已经迅速扩张到包括 DevOps、数据科学、Web 开发、信息安全等各个领域当中。然而,相比起 Python 扩张的速度,Python 代码的运行速度就显得有点逊色了。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/114058v8793uq037m9007f.jpg">Media在代码运行速度方面,Java、C、C++、C# 和 Python 要如何进行比较呢?并没有一个放之四海而皆准的标准,因为具体结果很大程度上取决于运行的程序类型,而语言基准测试Computer Language Benchmarks Games可以作为<a href="http://algs4.cs.princeton.edu/faq/">衡量的一个方面。根据我这些年来进行语言基准测试的经验来看,Python 比很多语言运行起来都要慢。无论是使用 <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT 编译器的 C#、Java,还是使用 <a href="https://en.wikipedia.org/wiki/Ahead-of-time_compilation">AOT 编译器的 C、C++,又或者是 JavaScript 这些解释型语言,Python 都<a href="https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/python.html">比它们运行得慢。注意:对于文中的 &ldquo<a href="https://dn-linuxcn.qbox.me/static/image/smiley/default/titter.gif">Mediaython” ,一般指 CPython 这个官方的实现。当然我也会在本文中提到其它语言的 Python 实现。我要回答的是这个问题:对于一个类似的程序,Python 要比其它语言慢 2 到 10 倍不等,这其中的原因是什么?又有没有改善的方法呢?主流的说法有这些:“是全局解释器锁Global Interpreter Lock(GIL)的原因”“是因为 Python 是解释型语言而不是编译型语言”“是因为 Python 是一种动态类型的语言”哪一个才是是影响 Python 运行效率的主要原因呢?是全局解释器锁的原因吗?现在很多计算机都配ã…
Python 现在越来越火,已经迅速扩张到包括 DevOps、数据科学、Web 开发、信息安全等各个领域当中。然而,相比起 Python 扩张的速度,Python 代码的运行速度就显得有点逊色了。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/114058v8793uq037m9007f.jpg">Media在代码运行速度方面,Java、C、C++、C# 和 Python 要如何进行比较呢?并没有一个放之四海而皆准的标准,因为具体结果很大程度上取决于运行的程序类型,而语言基准测试Computer Language Benchmarks Games可以作为<a href="http://algs4.cs.princeton.edu/faq/">衡量的一个方面。根据我这些年来进行语言基准测试的经验来看,Python 比很多语言运行起来都要慢。无论是使用 <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT 编译器的 C#、Java,还是使用 <a href="https://en.wikipedia.org/wiki/Ahead-of-time_compilation">AOT 编译器的 C、C++,又或者是 JavaScript 这些解释型语言,Python 都<a href="https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/python.html">比它们运行得慢。注意:对于文中的 &ldquo<a href="https://dn-linuxcn.qbox.me/static/image/smiley/default/titter.gif">Mediaython” ,一般指 CPython 这个官方的实现。当然我也会在本文中提到其它语言的 Python 实现。我要回答的是这个问题:对于一个类似的程序,Python 要比其它语言慢 2 到 10 倍不等,这其中的原因是什么?又有没有改善的方法呢?主流的说法有这些:“是全局解释器锁Global Interpreter Lock(GIL)的原因”“是因为 Python 是解释型语言而不是编译型语言”“是因为 Python 是一种动态类型的语言”哪一个才是是影响 Python 运行效率的主要原因呢?是全局解释器锁的原因吗?现在很多计算机都配ã…
坚实的 React 基础:初学者指南
这篇文章针对的是那些希望理论与实践完美结合的观众。我会告诉你一些理论,以便你了解幕后发生的事情,然后我会向你展示如何编写一些 React.js 代码。Media
via https://linux.cn/article-10162-1.html
这篇文章针对的是那些希望理论与实践完美结合的观众。我会告诉你一些理论,以便你了解幕后发生的事情,然后我会向你展示如何编写一些 React.js 代码。Media
via https://linux.cn/article-10162-1.html
坚实的 React 基础:初学者指南
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/104728nzehe82q5h9b8fqj.png">Media</a>在过去的几个月里,我一直在使用 React 和 React-Native。我已经发布了两个作为产品的应用, <a href="https://kivenaa.com/">Kiven Aa</a>(React)和 <a href="https://play.google.com/store/apps/details?id=com.pollenchat.android">Pollen Chat</a>(React Native)。当我开始学习 React 时,我找了一些不仅仅是教我如何用 React 写应用的东西(一个博客,一个视频,一个课程,等等),我也想让它帮我做好面试准备。我发现的大部分资料都集中在某一单一方面上。所以,这篇文章针对的是那些希望理论与实践完美结合的观众。我会告诉你一些理论,以便你了解幕后发生的事情,然后我会向你展示如何编写一些 React.js 代码。如果你更喜欢视频形式,我在 [YouTube][<a href="https://youtu.be/WJ6PgzI16I4">https://youtu.be/WJ6PgzI16I4</a>] 上传了整个课程,请去看看。让我们开始……React.js 是一个用于构建用户界面的 JavaScript 库你可以构建各种单页应用程序。例如,你希望在用户界面上实时显示变化的聊天软件和电子商务门户。一切都是组件React 应用由组件组成,数量繁多且互相嵌套。你或许会问:”可什么是组件呢?“组件是可重用的代码段,它定义了某些功能在 UI 上的外观和行为。 比如,按钮就是一个组件。让我们看看下面的计算器,当你尝试计算 2 + 2 = 4 -1 = 3(简单的数学题)时,你会在 Google 上看到这个计算器。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/104744a002jj0m8gwkxw2m.png">Media</a><em>红色标记表示组件</em>如上图所示,这个计算器有…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/104728nzehe82q5h9b8fqj.png">Media</a>在过去的几个月里,我一直在使用 React 和 React-Native。我已经发布了两个作为产品的应用, <a href="https://kivenaa.com/">Kiven Aa</a>(React)和 <a href="https://play.google.com/store/apps/details?id=com.pollenchat.android">Pollen Chat</a>(React Native)。当我开始学习 React 时,我找了一些不仅仅是教我如何用 React 写应用的东西(一个博客,一个视频,一个课程,等等),我也想让它帮我做好面试准备。我发现的大部分资料都集中在某一单一方面上。所以,这篇文章针对的是那些希望理论与实践完美结合的观众。我会告诉你一些理论,以便你了解幕后发生的事情,然后我会向你展示如何编写一些 React.js 代码。如果你更喜欢视频形式,我在 [YouTube][<a href="https://youtu.be/WJ6PgzI16I4">https://youtu.be/WJ6PgzI16I4</a>] 上传了整个课程,请去看看。让我们开始……React.js 是一个用于构建用户界面的 JavaScript 库你可以构建各种单页应用程序。例如,你希望在用户界面上实时显示变化的聊天软件和电子商务门户。一切都是组件React 应用由组件组成,数量繁多且互相嵌套。你或许会问:”可什么是组件呢?“组件是可重用的代码段,它定义了某些功能在 UI 上的外观和行为。 比如,按钮就是一个组件。让我们看看下面的计算器,当你尝试计算 2 + 2 = 4 -1 = 3(简单的数学题)时,你会在 Google 上看到这个计算器。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/104744a002jj0m8gwkxw2m.png">Media</a><em>红色标记表示组件</em>如上图所示,这个计算器有…
面向系统管理员的容器手册
你所需了解的容器如何工作的知识。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/111518jruxxoukh0txu447.jpg">Media</a>现在人们严重过度使用了“容器”这个术语。另外,对不同的人来说,它可能会有不同的含义,这取决于上下文。传统的 Linux 容器只是系统上普通的进程。一组进程与另外一组进程是相互隔离的,实现方法包括:资源限制(控制组 [cgoups])、Linux 安全限制(文件权限,基于 Capability 的安全模块、SELinux、AppArmor、seccomp 等)还有名字空间(进程 ID、网络、挂载等)。如果你启动一台现代 Linux 操作系统,使用 <code>cat /proc/PID/cgroup</code> 命令就可以看到该进程是属于一个控制组的。还可以从 <code>/proc/PID/status</code> 文件中查看进程的 Capability 信息,从 <code>/proc/self/attr/current</code> 文件中查看进程的 SELinux 标签信息,从 <code>/proc/PID/ns</code> 目录下的文件查看进程所属的名字空间。因此,如果把容器定义为带有资源限制、Linux 安全限制和名字空间的进程,那么按照这个定义,Linux 操作系统上的每一个进程都在一个容器里。因此我们常说 <a href="https://www.redhat.com/en/blog/containers-are-linux">Linux 就是容器,容器就是 Linux</a>。而<strong>容器运行时</strong>是这样一种工具,它调整上述资源限制、安全限制和名字空间,并启动容器。Docker 引入了<strong>容器镜像</strong>的概念,镜像是一个普通的 TAR 包文件,包含了:<strong>rootfs(容器的根文件系统)</strong>:一个目录,看起来像是操作系统的普通根目录(<code>/</code>),例如,一个包含 <code>/usr</code>, <code>/var</code>…
你所需了解的容器如何工作的知识。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/111518jruxxoukh0txu447.jpg">Media</a>现在人们严重过度使用了“容器”这个术语。另外,对不同的人来说,它可能会有不同的含义,这取决于上下文。传统的 Linux 容器只是系统上普通的进程。一组进程与另外一组进程是相互隔离的,实现方法包括:资源限制(控制组 [cgoups])、Linux 安全限制(文件权限,基于 Capability 的安全模块、SELinux、AppArmor、seccomp 等)还有名字空间(进程 ID、网络、挂载等)。如果你启动一台现代 Linux 操作系统,使用 <code>cat /proc/PID/cgroup</code> 命令就可以看到该进程是属于一个控制组的。还可以从 <code>/proc/PID/status</code> 文件中查看进程的 Capability 信息,从 <code>/proc/self/attr/current</code> 文件中查看进程的 SELinux 标签信息,从 <code>/proc/PID/ns</code> 目录下的文件查看进程所属的名字空间。因此,如果把容器定义为带有资源限制、Linux 安全限制和名字空间的进程,那么按照这个定义,Linux 操作系统上的每一个进程都在一个容器里。因此我们常说 <a href="https://www.redhat.com/en/blog/containers-are-linux">Linux 就是容器,容器就是 Linux</a>。而<strong>容器运行时</strong>是这样一种工具,它调整上述资源限制、安全限制和名字空间,并启动容器。Docker 引入了<strong>容器镜像</strong>的概念,镜像是一个普通的 TAR 包文件,包含了:<strong>rootfs(容器的根文件系统)</strong>:一个目录,看起来像是操作系统的普通根目录(<code>/</code>),例如,一个包含 <code>/usr</code>, <code>/var</code>…
如何构建 RPM 包
节省跨多个主机安装文件和脚本的时间和精力。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/125431qw2n6p643hww4wzy.jpg">Media</a>自20多年前我开始使用 Linux 以来,我已经使用过基于 rpm 的软件包管理器在 Red Hat 和 Fedora Linux 系统上安装软件。我使用过 rpm 程序本身,还有 yum 和 dnf ,用于在我的 Linux 主机上安装和更新软件包,dnf 是 yum 的一个近亲。 yum 和 dnf 工具是 rpm 实用程序的包装器,它提供了其他功能,例如查找和安装包依赖项的功能。多年来,我创建了许多 Bash 脚本,其中一些脚本具有单独的配置文件,我希望在大多数新计算机和虚拟机上安装这些脚本。这也能解决安装所有这些软件包需要花费大量时间的难题,因此我决定通过创建一个 rpm 软件包来自动执行该过程,我可以将其复制到目标主机并将所有这些文件安装在适当的位置。虽然 rpm 工具以前用于构建 rpm 包,但该功能已被删除,并且创建了一个新工具来构建新的 rpm。当我开始这个项目时,我发现很少有关于创建 rpm 包的信息,但我找到了一本书,名为《Maximum RPM》,这本书才帮我弄明白了。这本书现在已经过时了,我发现的绝大多数信息都是如此。它也已经绝版,用过的副本也需要花费数百美元。<a href="http://ftp.rpm.org/max-rpm/">Maximum RPM</a> 的在线版本是免费提供的,并保持最新。该 <a href="http://rpm.org/index.html">RPM 网站</a>还有其他网站的链接,这些网站上有很多关于 rpm 的文档。其他的信息往往是简短…
节省跨多个主机安装文件和脚本的时间和精力。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/125431qw2n6p643hww4wzy.jpg">Media</a>自20多年前我开始使用 Linux 以来,我已经使用过基于 rpm 的软件包管理器在 Red Hat 和 Fedora Linux 系统上安装软件。我使用过 rpm 程序本身,还有 yum 和 dnf ,用于在我的 Linux 主机上安装和更新软件包,dnf 是 yum 的一个近亲。 yum 和 dnf 工具是 rpm 实用程序的包装器,它提供了其他功能,例如查找和安装包依赖项的功能。多年来,我创建了许多 Bash 脚本,其中一些脚本具有单独的配置文件,我希望在大多数新计算机和虚拟机上安装这些脚本。这也能解决安装所有这些软件包需要花费大量时间的难题,因此我决定通过创建一个 rpm 软件包来自动执行该过程,我可以将其复制到目标主机并将所有这些文件安装在适当的位置。虽然 rpm 工具以前用于构建 rpm 包,但该功能已被删除,并且创建了一个新工具来构建新的 rpm。当我开始这个项目时,我发现很少有关于创建 rpm 包的信息,但我找到了一本书,名为《Maximum RPM》,这本书才帮我弄明白了。这本书现在已经过时了,我发现的绝大多数信息都是如此。它也已经绝版,用过的副本也需要花费数百美元。<a href="http://ftp.rpm.org/max-rpm/">Maximum RPM</a> 的在线版本是免费提供的,并保持最新。该 <a href="http://rpm.org/index.html">RPM 网站</a>还有其他网站的链接,这些网站上有很多关于 rpm 的文档。其他的信息往往是简短…
24 个必备的 Linux 应用程序
我们会列举出那些在所有 Linux 发行版上你都会安装的最优秀的 Linux 应用程序。Media
via https://linux.cn/article-10165-1.html
我们会列举出那些在所有 Linux 发行版上你都会安装的最优秀的 Linux 应用程序。Media
via https://linux.cn/article-10165-1.html