<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ChengLiang</title>
    <description>The latest articles on DEV Community by ChengLiang (@celiae).</description>
    <link>https://dev.to/celiae</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1169688%2Fab4c712a-c8e2-4a9b-b980-d412a82d3f3f.png</url>
      <title>DEV Community: ChengLiang</title>
      <link>https://dev.to/celiae</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/celiae"/>
    <language>en</language>
    <item>
      <title>Iptables使用</title>
      <dc:creator>ChengLiang</dc:creator>
      <pubDate>Mon, 25 Sep 2023 13:25:35 +0000</pubDate>
      <link>https://dev.to/celiae/iptablesshi-yong-40bn</link>
      <guid>https://dev.to/celiae/iptablesshi-yong-40bn</guid>
      <description>&lt;p&gt;根据 ArchWiki 配置一个基础的防火墙: &lt;a href="https://wiki.archlinux.org/title/Simple_stateful_firewall#Prerequisites"&gt;Simple_stateful_firewall&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  开启端口
&lt;/h3&gt;

&lt;p&gt;切换 root 用户,提升权限."sudo"命令敲得很累&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;su
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;忘记命令,看看之前怎么写的.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iptables &lt;span class="nt"&gt;-S&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;部分结果如下,在根据 ArchWiki 配置了&lt;a href="https://wiki.archlinux.org/title/Simple_stateful_firewall#Prerequisites"&gt;Simple_stateful_firewall&lt;/a&gt;之后就是这个效果,注意 TCP 链,这个是 ArchWiki 配置后增添了 TCP 和 UDP 链.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-A&lt;/span&gt; TCP &lt;span class="nt"&gt;-p&lt;/span&gt; tcp &lt;span class="nt"&gt;-m&lt;/span&gt; tcp &lt;span class="nt"&gt;--dport&lt;/span&gt; 22 &lt;span class="nt"&gt;-j&lt;/span&gt; ACCEPT
&lt;span class="nt"&gt;-A&lt;/span&gt; TCP &lt;span class="nt"&gt;-p&lt;/span&gt; tcp &lt;span class="nt"&gt;-m&lt;/span&gt; tcp &lt;span class="nt"&gt;--dport&lt;/span&gt; 80 &lt;span class="nt"&gt;-j&lt;/span&gt; ACCEPT
&lt;span class="nt"&gt;-A&lt;/span&gt; TCP &lt;span class="nt"&gt;-p&lt;/span&gt; tcp &lt;span class="nt"&gt;-m&lt;/span&gt; tcp &lt;span class="nt"&gt;--dport&lt;/span&gt; 443 &lt;span class="nt"&gt;-j&lt;/span&gt; ACCEPT
&lt;span class="nt"&gt;-A&lt;/span&gt; TCP &lt;span class="nt"&gt;-p&lt;/span&gt; tcp &lt;span class="nt"&gt;-m&lt;/span&gt; tcp &lt;span class="nt"&gt;--dport&lt;/span&gt; 53 &lt;span class="nt"&gt;-j&lt;/span&gt; ACCEPT
&lt;span class="nt"&gt;-A&lt;/span&gt; TCP &lt;span class="nt"&gt;-p&lt;/span&gt; tcp &lt;span class="nt"&gt;-m&lt;/span&gt; tcp &lt;span class="nt"&gt;--dport&lt;/span&gt; 3000 &lt;span class="nt"&gt;-j&lt;/span&gt; ACCEPT
&lt;span class="nt"&gt;-A&lt;/span&gt; TCP &lt;span class="nt"&gt;-p&lt;/span&gt; tcp &lt;span class="nt"&gt;-m&lt;/span&gt; tcp &lt;span class="nt"&gt;--dport&lt;/span&gt; 19000 &lt;span class="nt"&gt;-j&lt;/span&gt; ACCEPT
&lt;span class="nt"&gt;-A&lt;/span&gt; UDP &lt;span class="nt"&gt;-p&lt;/span&gt; udp &lt;span class="nt"&gt;-m&lt;/span&gt; udp &lt;span class="nt"&gt;--dport&lt;/span&gt; 53 &lt;span class="nt"&gt;-j&lt;/span&gt; ACCEPT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;想再开一个端口,依葫芦画瓢.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iptables &lt;span class="nt"&gt;-A&lt;/span&gt; TCP &lt;span class="nt"&gt;-p&lt;/span&gt; tcp &lt;span class="nt"&gt;-m&lt;/span&gt; tcp &lt;span class="nt"&gt;--dport&lt;/span&gt; 2222 &lt;span class="nt"&gt;-j&lt;/span&gt; ACCEPT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  关闭端口
&lt;/h3&gt;

&lt;p&gt;查看相应链相应行数&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iptables &lt;span class="nt"&gt;-nvL&lt;/span&gt; &lt;span class="nt"&gt;--line-numbers&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;以行删除规则&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iptables &lt;span class="nt"&gt;-D&lt;/span&gt; TCP 6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Docker使用</title>
      <dc:creator>ChengLiang</dc:creator>
      <pubDate>Mon, 25 Sep 2023 13:06:37 +0000</pubDate>
      <link>https://dev.to/celiae/dockershi-yong-145o</link>
      <guid>https://dev.to/celiae/dockershi-yong-145o</guid>
      <description>&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Dockerfile: 用来创建自定义镜像&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;docker-compose.yml: 可整合多个镜像, 常用于在启动容器时配置运行参数,便于命令行操作&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;以上是常见的文件命名方法, 也可取其他文件名. 例如 abc.yml.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;有了镜像就要启动, 启动成容器运行在计算机上. 如果容器需要接管本地流量, 则宿主机作代理, 开启映射端口&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;code-server &lt;span class="nt"&gt;-p8080&lt;/span&gt;:80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  运行 code-server
&lt;/h2&gt;

&lt;p&gt;假如我们运行一个 code-server,我们想给一些参数&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;code-server &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;PUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;PGID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;TZ&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Asia/Shanghai &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;password &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="c"&gt;#optional` \&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;SUDO_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;password &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="c"&gt;#optional` \&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;DEFAULT_WORKSPACE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/config/workspace &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="c"&gt;#optional` \&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 8443:8443 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; /path/to/appdata/config:/config &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--restart&lt;/span&gt; unless-stopped &lt;span class="se"&gt;\&lt;/span&gt;
  lscr.io/linuxserver/code-server:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;以上代码来自&lt;a href="https://hub.docker.com/r/linuxserver/code-server"&gt;linuxserver/code-server&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;显然不易维护. 利用 docker-compose 读取 docker-compose.yml 文件并启动容器&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker-compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;默认读取当前文件夹下的 docker-compose.yml, 选项 -d 意为 daemon 使它运行在后台,每次运行容器只需这一个命令和一个配置文件. 例如给出 code-server 的配置文件 docker-compose.yml:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;---&lt;/span&gt;
version: &lt;span class="s2"&gt;"2.1"&lt;/span&gt;
services:
  code-server:
    image: lscr.io/linuxserver/code-server:latest
    container_name: code-server
    environment:
      - &lt;span class="nv"&gt;PUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1000
      - &lt;span class="nv"&gt;PGID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1000
      - &lt;span class="nv"&gt;TZ&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Asia/Shanghai
      - &lt;span class="nv"&gt;PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;password &lt;span class="c"&gt;#optional&lt;/span&gt;
      - &lt;span class="nv"&gt;SUDO_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;password &lt;span class="c"&gt;#optional&lt;/span&gt;
      - &lt;span class="nv"&gt;DEFAULT_WORKSPACE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/config/workspace &lt;span class="c"&gt;#optional&lt;/span&gt;
    volumes:
      - /path/to/appdata/config:/config
    ports:
      - 8443:8443
    restart: unless-stopped
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;以上代码来自&lt;a href="https://hub.docker.com/r/linuxserver/code-server"&gt;linuxserver/code-server&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;修改文件比修改命令更容易&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  测试
&lt;/h2&gt;

&lt;h3&gt;
  
  
  构建镜像
&lt;/h3&gt;

&lt;p&gt;通常在开发完工后会将项目打包成生产环境, 也就是产品.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; celiae/ceblog:latest &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;稍等片刻,可以得到镜像名为"celiae/ceblog",标签名为"latest"的镜像.latest 以为最新版.&lt;/p&gt;

&lt;h3&gt;
  
  
  启用容器
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-p&lt;/span&gt; 1024:3000 celiae/ceblog:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;端口映射, 浏览器输入"localhost:1024",OK&lt;/p&gt;

&lt;h3&gt;
  
  
  查询
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;它会列出正在运行中的容器进程&lt;/p&gt;

&lt;h2&gt;
  
  
  DockerHub
&lt;/h2&gt;

&lt;h3&gt;
  
  
  测试成功后推到 dockerhub
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker push celiae/ceblog:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;在 dockerhub 登陆账号在仓库(repository)中能看到 celiae/ceblog 的最新版本&lt;/p&gt;

&lt;h3&gt;
  
  
  获取镜像
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker pull celiae/ceblog:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;run 的步骤基本一样&lt;/p&gt;

&lt;h3&gt;
  
  
  服务器上运行镜像
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 1024:3000 celiae/ceblog:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-d 运行在 daemon 后台&lt;/p&gt;

</description>
    </item>
    <item>
      <title>计算机专业环境搭建</title>
      <dc:creator>ChengLiang</dc:creator>
      <pubDate>Mon, 25 Sep 2023 13:03:53 +0000</pubDate>
      <link>https://dev.to/celiae/ji-suan-ji-zhuan-ye-huan-jing-da-jian-74c</link>
      <guid>https://dev.to/celiae/ji-suan-ji-zhuan-ye-huan-jing-da-jian-74c</guid>
      <description>&lt;p&gt;本文呈现了个人真实使用的计算机环境，从操作系统的安装到IDE相关的环境搭建。研究总结官方文档中本人需要的部分，借鉴网络上个人或组织的博客，结合多年使用各种操作系统的经验，归纳本人最喜欢计算机环境。&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://wiki.archlinux.org/"&gt;ArchLinux&lt;/a&gt; 真实场景安装
&lt;/h2&gt;

&lt;p&gt;提前准备：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;镜像文件 &lt;code&gt;archlinux-2023.08.01-x86_64.iso&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;U盘 &lt;strong&gt;&amp;gt;16G&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;互联网访问&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ArchLinux 系统更新频繁，镜像文件不必也是&lt;code&gt;2023.08.01&lt;/code&gt;版本&lt;/p&gt;

&lt;h3&gt;
  
  
  原理概述
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;archlinux-2023.08.01-x86_64.iso&lt;/code&gt;通过工具注入到U盘中，U盘就有了系统，插入U盘到主板，计算机找到&lt;br&gt;
U盘系统启动，过程也就是加载U盘的Linux操作系统到内存中，此时的计算机就可以作为一个简易且性能低下的电脑，&lt;br&gt;
性能瓶颈点在U盘。我们再将完整的Linux内核、Linux硬件驱动、应用程序安装到目标硬盘中做永存，待下次主板上电时，&lt;br&gt;
BIOS能检测到系统盘，通过设置其优先启动，之后的每一次启动电脑就会默认加载其系统。&lt;/p&gt;
&lt;h3&gt;
  
  
  镜像文件下载
&lt;/h3&gt;

&lt;p&gt;文件长这样：&lt;code&gt;archlinux-2023.08.01-x86_64.iso&lt;/code&gt;, 版本灵活应变.&lt;br&gt;
&lt;a href="https://archlinux.org/download/"&gt;点我进入下载页面&lt;/a&gt;,往下翻找到您的国家，比如China,&lt;br&gt;
选一个&lt;code&gt;https&lt;/code&gt;协议的下载链接进行下载.后缀名一个.iso,一个.iso.sig 两个都要下载&lt;/p&gt;
&lt;h4&gt;
  
  
  确认资源安全性， &lt;code&gt;&amp;lt;version&amp;gt;&lt;/code&gt; 替换成你实际文件版本
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gpg &lt;span class="nt"&gt;--keyserver-options&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
auto-key-retrieve &lt;span class="nt"&gt;--verify&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
archlinux-&amp;lt;version&amp;gt;-x86_64.iso.sig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  或在已有的 ArchLinux 系统中执行
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pacman-key &lt;span class="nt"&gt;-v&lt;/span&gt; archlinux-&amp;lt;version&amp;gt;-x86_64.iso.sig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  系统U盘制作与使用
&lt;/h3&gt;

&lt;p&gt;根据情况选择使用 Ether/rufus/dd 工具，&lt;strong&gt;谨慎&lt;/strong&gt;设置盘符和镜像文件。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;dd &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;archlinux-2023.08.01-x86_64.iso &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/sda &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4096   &lt;span class="c"&gt;#使用dd工具&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  进入U盘
&lt;/h4&gt;

&lt;p&gt;重启计算机，在开机过程中抓紧按 &lt;strong&gt;F2/F12/DEL&lt;/strong&gt;（根据主板型号） 键进入BIOS，可以设置启动顺序，&lt;br&gt;
U盘最先，也可以使用&lt;strong&gt;覆盖启动&lt;/strong&gt;U盘。BIOS设置后，进入U盘的GRUB，选择 ArchLinux Install 并回车，&lt;br&gt;
系统加载，直接到zsh命令行。&lt;/p&gt;
&lt;h4&gt;
  
  
  关闭系统自动选择镜像源
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl stop reflector.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  UEFI or Legacy
&lt;/h4&gt;

&lt;p&gt;判断是否为 UEFI 启动, 在目录 &lt;code&gt;/sys/firmware/efi/efivars&lt;/code&gt; 下有文件则是 UEFI,&lt;br&gt;
没文件则是 Legacy BIOS.目前大多数 PC 都是 UEFI 模式，所有步骤主要针对 UEFI 平台安装&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; /sys/firmware/efi/efivars
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  磁盘分区格式化
&lt;/h3&gt;

&lt;p&gt;此步骤较灵活，最小需要的分区仅仅只有启动盘&lt;strong&gt;EFI分区&lt;/strong&gt;和系统盘&lt;strong&gt;根分区&lt;/strong&gt;，有这两个分区就能实现系统安装。&lt;br&gt;
比较专业的场景不止会有&lt;strong&gt;swap分区&lt;/strong&gt;和&lt;strong&gt;home分区&lt;/strong&gt;，还会有&lt;strong&gt;usr分区&lt;/strong&gt;,&lt;strong&gt;var分区&lt;/strong&gt;等，根据场景而变化。&lt;/p&gt;
&lt;h4&gt;
  
  
  磁盘情况
&lt;/h4&gt;

&lt;p&gt;Linux 中一切皆文件，&lt;code&gt;/dev&lt;/code&gt;目录用于存放系统所能识别的所有设备，设备以文件名标识，每个文件代表不同的设备。&lt;br&gt;
比如：&lt;code&gt;/dev/sda1&lt;/code&gt; 是Linux扫描到的第一块硬盘里的第一个分区。清晰自己的磁盘哪个分区放着哪些东西,&lt;br&gt;
命令行参数根据自己的情况进行修改&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsblk &lt;span class="c"&gt;# 列出所有磁盘&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;利用 &lt;code&gt;cfdisk&lt;/code&gt; 工具,打开既有手册，&lt;strong&gt;谨慎&lt;/strong&gt;分区硬盘,建议分区布局：&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;类型&lt;/th&gt;
&lt;th&gt;假想设备路径&lt;/th&gt;
&lt;th&gt;挂载点&lt;/th&gt;
&lt;th&gt;推荐空间&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;启动盘&lt;/td&gt;
&lt;td&gt;/dev/sda1&lt;/td&gt;
&lt;td&gt;/boot/efi&lt;/td&gt;
&lt;td&gt;1G&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;内存交换盘&lt;/td&gt;
&lt;td&gt;/dev/sda2&lt;/td&gt;
&lt;td&gt;[SWAP]&lt;/td&gt;
&lt;td&gt;2G&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;系统盘&lt;/td&gt;
&lt;td&gt;/dev/sda3&lt;/td&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;td&gt;100G&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;用户盘&lt;/td&gt;
&lt;td&gt;/dev/sda4&lt;/td&gt;
&lt;td&gt;/home&lt;/td&gt;
&lt;td&gt;200G&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  注意
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cfdisk&lt;/code&gt; 工具操作磁盘, 磁盘文件"/dev/sda"根据自己的情况进行修改.
实际上挂载点是灵活的,只要保证其他分区挂载点嵌套在根目录内都可&lt;/li&gt;
&lt;li&gt;启动盘最好是1G左右，增加系统启动时的稳定性和容错率。启动盘是根基，若容量过小，
随着系统数量增加和数据增加，可能会导致启动异常，极难恢复。&lt;/li&gt;
&lt;li&gt;内存交换盘的设置对于个人电脑没有要求，是个可选项。在服务器里是必备的。&lt;/li&gt;
&lt;li&gt;系统盘类似于 Windows 的C盘，数据量随着系统使用时长增加而增加&lt;/li&gt;
&lt;li&gt;用户盘通常存放系统普通使用者的数据，可选项，为分担系统盘存储压力以及方便移植从而独立出来。
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cfdisk /dev/sda
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  挂接硬盘
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mkfs.vfat /dev/sda1 &lt;span class="c"&gt;#选择你的启动盘（efi分区）&lt;/span&gt;
mkfs.swap /dev/sda2 &lt;span class="c"&gt;#选择你的内存交换盘（swap分区）&lt;/span&gt;
swapon /dev/sda2 &lt;span class="c"&gt;#选择你的内存交换盘（swap分区）&lt;/span&gt;
mkfs.btrfs /dev/sda3  &lt;span class="c"&gt;#选择你的系统盘（根分区）&lt;/span&gt;
mkfs.btrfs /dev/sda4  &lt;span class="c"&gt;#选择你的用户盘（home分区）&lt;/span&gt;
mount /dev/sda3 /mnt  &lt;span class="c"&gt;#挂载根分区，系统安装到此&lt;/span&gt;
mount &lt;span class="nt"&gt;--mkdir&lt;/span&gt; /dev/sda1 /mnt/boot/efi &lt;span class="c"&gt;#挂载EFI分区，grub安装到此&lt;/span&gt;
mount &lt;span class="nt"&gt;--mkdir&lt;/span&gt; /dev/sda4 /mnt/home &lt;span class="c"&gt;#挂载HOME分区，独立出普通用户家目录&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  网络配置
&lt;/h3&gt;

&lt;p&gt;此时硬盘已经配置完毕，接下来把系统安装到硬盘中。ArchLinux 镜像文件中不包含任何软件包，&lt;br&gt;
所以需借助网络下载软件包。&lt;/p&gt;
&lt;h4&gt;
  
  
  wifi连接
&lt;/h4&gt;

&lt;p&gt;拥有网线以太网无需此步骤，直接&lt;strong&gt;检测是否联网&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iwctl &lt;span class="c"&gt;#进入联网工具 iwctl&lt;/span&gt;
device list &lt;span class="c"&gt;#查看网卡&lt;/span&gt;
station wlan0 scan &lt;span class="c"&gt;#扫描 wifi&lt;/span&gt;
station device get-networks &lt;span class="c"&gt;#扫描结果&lt;/span&gt;
station device connect &amp;lt;SSID&amp;gt; &lt;span class="c"&gt;#连接相应 wifi SSID 为 wifi 名&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="c"&gt;#或者 Ctrl + d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  网络测试
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ping archlinux.org  &lt;span class="c"&gt;# 检测是否联网，有正确返回信息则成功&lt;/span&gt;
&lt;span class="nb"&gt;date&lt;/span&gt;  &lt;span class="c"&gt;# 显示当前时间&lt;/span&gt;
timedatectl set-ntp &lt;span class="nb"&gt;true&lt;/span&gt;  &lt;span class="c"&gt;# 如果时间不正确,请时间矫正&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  换源
&lt;/h4&gt;

&lt;p&gt;镜像源是下载软件包的服务器地址, 打开pacman镜像配置文件，把 &lt;strong&gt;China&lt;/strong&gt; 那一块 URL 移到文件最上面。&lt;br&gt;
通常每个地址有两种协议（&lt;strong&gt;http&lt;/strong&gt;和&lt;strong&gt;https&lt;/strong&gt;）,建议删掉&lt;strong&gt;http&lt;/strong&gt;的地址,也就是不使用http协议的地址。&lt;br&gt;
如此 pacman 则会优先从 China 源下载,速度更快。文件编辑器可使用 nano/vim/emacs 等&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vim /etc/pacman.d/mirrorlist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  安装系统包
&lt;/h3&gt;

&lt;p&gt;将 ArchLinux 系统以及硬件驱动通过 &lt;code&gt;/mnt&lt;/code&gt; 挂载点注入到硬盘中&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pacstrap /mnt base linux linux-firmware
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  系统配置
&lt;/h3&gt;

&lt;p&gt;安装完系统后，还需要配置系统的自动挂载盘、时区、语言、键盘布局、用户、主机名。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;genfstab &lt;span class="nt"&gt;-U&lt;/span&gt; /mnt &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; /mnt/etc/fstab  &lt;span class="c"&gt;# 配置启动时自动挂载主分区&lt;/span&gt;
arch-chroot /mnt  &lt;span class="c"&gt;# 切换根分区&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;此时，执行完 arch-chroot 后，切换到新的系统中去，相当于从U盘系统切换到硬盘系统，&lt;br&gt;
U盘系统的作用基本上到此为止&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  安装应用软件
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; base-devel grub efibootmgr os-prober networkmanager &lt;span class="se"&gt;\&lt;/span&gt;
  bash-completion nano vim git firefox chromium man-pages yarn ntfs-3g &lt;span class="se"&gt;\&lt;/span&gt;
  unrar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  启用网络
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--now&lt;/span&gt; NetworkManager    
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  生成系统语言,对 &lt;code&gt;en_US.UTF-8&lt;/code&gt; 一行取消注释
&lt;/h4&gt;

&lt;p&gt;vim /etc/locale.gen&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;locale-gen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  系统必要配置
&lt;/h4&gt;

&lt;p&gt;配置系统语言.主机名设为 'testhostname',可自行命名.设置 root 密码.创建用户,sudo 授权.&lt;br&gt;
设置时区 Region/City 可替换为 Asia/Shanghai.一些软件需要用到 LANG 环境变量,设置为 en_US.UTF-8&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'LANG=en_US.UTF-8'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /etc/locale.conf
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'testhostname'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /etc/hostname
passwd
useradd &lt;span class="nt"&gt;-m&lt;/span&gt; testuser &lt;span class="nt"&gt;-G&lt;/span&gt; wheel &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; passwd testuser 
vim /etc/sudoers  &lt;span class="c"&gt;# 为 testuser 开启 sudo 权限, 根据文件里的提示，取消 wheel的注释&lt;/span&gt;
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-sf&lt;/span&gt; /usr/share/zoneinfo/Region/City /etc/localtime
mkinitcpio &lt;span class="nt"&gt;-P&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  安装 grub,引导程序
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;grub-install &lt;span class="nt"&gt;--target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;x86_64-efi &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--efi-directory&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/boot/efi &lt;span class="nt"&gt;--bootloader-id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;GRUB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;如果你需要双系统,请 os-prober 自动扫描双系统:允许 grub 检测系统. true 改为 false,并取消注释&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vim /etc/default/grub

...
&lt;span class="nv"&gt;GRUB_DISABLE_OS_PROBER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;grub-mkconfig &lt;span class="nt"&gt;-o&lt;/span&gt; /boot/grub/grub.cfg  &lt;span class="c"&gt;# 生成 grub 配置文件&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;  &lt;span class="c"&gt;# 退出硬盘系统至 iso 安装系统，或者Ctrl+d&lt;/span&gt;
reboot  &lt;span class="c"&gt;# 重启&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  使用系统
&lt;/h2&gt;

&lt;p&gt;以上算是完成ArchLinux的最小安装，ArchLinux 滚动更新，更新频率极快，几乎每天都有新版本的软件包上线，&lt;br&gt;
为了避免系统过于落后于版本造成难以解决的问题，建议至少每个星期更一次，或者每天更一次。&lt;/p&gt;

&lt;p&gt;个人电脑离不开桌面，KDE-Plasma/Gnome曾经都用过，&lt;br&gt;
用来用去计算机整体性能都不如 &lt;strong&gt;i3wm&lt;/strong&gt; ，类似于i3wm桌面系统最大的特点是计算机资源占比小，切屏极快。&lt;/p&gt;
&lt;h3&gt;
  
  
  i3wm 安装
&lt;/h3&gt;

&lt;p&gt;安装i3wm，一个Display Manager，和一个虚拟终端，默认配置的 i3wm 就可以，不用配置的花里胡哨。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; i3-wm lightdm lightdm-gtk-greeter alacritty
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; adobe-source-han-serif-cn-fonts wqy-zenhei &lt;span class="c"&gt;# &lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; noto-fonts-cjk noto-fonts-emoji noto-fonts-extra   
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;lightdm.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  系统全局配置
&lt;/h3&gt;

&lt;p&gt;配置因人而异，本人配置系统代理，键盘输入方法，默认文本编辑器，JAVA_HOME路径&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;/etc/environment&lt;/code&gt; 配置全局变量
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;https_proxy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://127.0.0.1:7890
&lt;span class="nv"&gt;http_proxy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://127.0.0.1:7890
&lt;span class="nv"&gt;all_proxy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;socks5://127.0.0.1:7890
&lt;span class="nv"&gt;GTK_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fcitx
&lt;span class="nv"&gt;QT_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fcitx
&lt;span class="nv"&gt;XMODIFIERS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;@im&lt;span class="o"&gt;=&lt;/span&gt;fcitx
&lt;span class="nv"&gt;SDL_IM_MODULE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fcitx
&lt;span class="nv"&gt;EDITOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nano
&lt;span class="nv"&gt;JAVA_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/utils/jvm/default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  xorg 配置colemak键盘布局
&lt;/h4&gt;

&lt;p&gt;新建文件 &lt;code&gt;/etc/X11/xorg.conf.d/00-keyboard.conf&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Section &lt;span class="s2"&gt;"InputClass"&lt;/span&gt;
    Identifier &lt;span class="s2"&gt;"system-keyboard"&lt;/span&gt;
    MatchIsKeyboard &lt;span class="s2"&gt;"on"&lt;/span&gt;
    Option &lt;span class="s2"&gt;"XbkLayout"&lt;/span&gt; &lt;span class="s2"&gt;"us"&lt;/span&gt;
    Option &lt;span class="s2"&gt;"XkbVariant"&lt;/span&gt; &lt;span class="s2"&gt;"colemak"&lt;/span&gt;
EndSection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  启用32位软件包
&lt;/h4&gt;

&lt;p&gt;在安装显卡驱动时，需要开启32位软件包源&lt;/p&gt;

&lt;p&gt;修改文件 &lt;code&gt;/etc/pacman.conf&lt;/code&gt;, 取消 &lt;code&gt;[multilib]&lt;/code&gt; 模块的注释&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;multilib]
Include &lt;span class="o"&gt;=&lt;/span&gt; /etc/pacman.d/mirrorlist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-Sy&lt;/span&gt; &lt;span class="c"&gt;# 更新包源&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Nvidia 独立显卡驱动
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;借鉴于&lt;/strong&gt; &lt;a href="https://archlinuxstudio.github.io/ArchLinuxTutorial/#/rookie/graphic_driver"&gt;ALT 显卡驱动安装&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; nvidia nvidia-settings lib32-nvidia-utils &lt;span class="c"&gt;#必须安装&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;如果安装驱动后内核冲突，把 kms 从 /etc/mkinitcpio.conf 里的 HOOKS 数组中移除，并重新生成 initramfs。&lt;br&gt;
这能防止 initramfs 包含 nouveau 模块，以确保内核在早启动阶段不会加载它。&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mkinitcpio &lt;span class="nt"&gt;-p&lt;/span&gt; linux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Yay 包管理器
&lt;/h3&gt;

&lt;p&gt;使用魔法上网后可以安装且使用 &lt;code&gt;yay&lt;/code&gt;，和 &lt;code&gt;pacman&lt;/code&gt; 使用方式基本一样，即可管理官方软件包，也可管理AUR包。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; &lt;span class="nt"&gt;--needed&lt;/span&gt; git base-devel
git clone https://aur.archlinux.org/yay.git
&lt;span class="nb"&gt;cd &lt;/span&gt;yay
makepkg &lt;span class="nt"&gt;-si&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  IDE安装
&lt;/h3&gt;

&lt;p&gt;VSCode用前端语言写的,性能不佳，打开大项目时，补全功能会失效，Vim/Emacs不易学习。&lt;br&gt;
JetBrains全家桶使用java编写，各方面优秀，许可证可通过魔法绕过。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yay &lt;span class="nt"&gt;-S&lt;/span&gt; intellij-idea-ultimate-edition webstorm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>archlinux</category>
    </item>
  </channel>
</rss>
