<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tech on M15tak3のBlog</title>
    <link>https://blog.m15tak3.com/en/categories/tech/</link>
    <description>Recent content from M15tak3のBlog</description>
    <generator>Hugo</generator>
    <language>en</language>
    
    <managingEditor>skyman.soul@gmail.com (M15tak3)</managingEditor>
    <webMaster>skyman.soul@gmail.com (M15tak3)</webMaster>
    
    <copyright>All articles on this blog are licensed under the BY-NC-SA license agreement unless otherwise stated. Please indicate the source when reprinting!</copyright>
    
    <lastBuildDate>Wed, 06 May 2026 11:00:00 +0800</lastBuildDate>
    
    
    <atom:link href="https://blog.m15tak3.com/en/categories/tech/index.xml" rel="self" type="application/rss&#43;xml" />
    

    
      
    

    <item>
      <title>Linux Python Management (Installing and Using pyenv)</title>
      <link>https://blog.m15tak3.com/en/post/pyenv/</link>
      <pubDate>Wed, 06 May 2026 11:00:00 &#43;0800</pubDate>
      <author>skyman.soul@gmail.com (M15tak3)</author>
      <guid>https://blog.m15tak3.com/en/post/pyenv/</guid>
      <description>
        <![CDATA[<h1>Linux Python Management (Installing and Using pyenv)</h1><p>Author: M15tak3(skyman.soul@gmail.com)</p>
        
          <h1 id="linux-python-management-installing-and-using-pyenv">
<a class="header-anchor" href="#linux-python-management-installing-and-using-pyenv"></a>
Linux Python Management (Installing and Using pyenv)
</h1><p>On newer Linux versions (for example, Ubuntu 24.04), using <code>pip</code> for system-level package management may trigger the <code>externally-managed-environment</code> error. In other words, the system does not allow direct global package installation with <code>pip</code>.</p>
<p>To avoid breaking the system Python environment and to manage Python versions more cleanly, I recommend using <code>pyenv</code> (plus virtual environments).</p>
<h2 id="install-build-dependencies">
<a class="header-anchor" href="#install-build-dependencies"></a>
Install Build Dependencies
</h2><p><strong>For Ubuntu/Debian:</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt-get update<span class="p">;</span> sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
</span></span></code></pre></div><p><strong>For CentOS and similar systems:</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo yum install -y gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils
</span></span></code></pre></div><h2 id="install-pyenv">
<a class="header-anchor" href="#install-pyenv"></a>
Install pyenv
</h2><p>Install via the official script:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl https://pyenv.run <span class="p">|</span> bash
</span></span></code></pre></div><h2 id="configure-your-shell-and-apply">
<a class="header-anchor" href="#configure-your-shell-and-apply"></a>
Configure Your Shell and Apply
</h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">&#39;export PYENV_ROOT=&#34;$HOME/.pyenv&#34;&#39;</span> &gt;&gt; ~/.bashrc
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">&#39;command -v pyenv &gt;/dev/null || export PATH=&#34;$PYENV_ROOT/bin:$PATH&#34;&#39;</span> &gt;&gt; ~/.bashrc
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">&#39;eval &#34;$(pyenv init -)&#34;&#39;</span> &gt;&gt; ~/.bashrc
</span></span><span class="line"><span class="cl"> 
</span></span><span class="line"><span class="cl"><span class="c1"># If you use Zsh, replace .bashrc with .zshrc</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">source</span> ~/.bashrc
</span></span><span class="line"><span class="cl"><span class="c1"># If you use Zsh, replace .bashrc with .zshrc</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Verify</span>
</span></span><span class="line"><span class="cl">pyenv --version
</span></span></code></pre></div><h2 id="basic-pyenv-usage">
<a class="header-anchor" href="#basic-pyenv-usage"></a>
Basic pyenv Usage
</h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># pyenv install python-version, e.g. install 3.13.3</span>
</span></span><span class="line"><span class="cl">pyenv install 3.13.3
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv global python-version, e.g. set global version to 3.13.3</span>
</span></span><span class="line"><span class="cl">pyenv global 3.13.3
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv local python-version, e.g. set local project version to 3.13.3</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> my-project/
</span></span><span class="line"><span class="cl">pyenv <span class="nb">local</span> 3.13.3
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv shell python-version, e.g. set shell session version to 3.13.3</span>
</span></span><span class="line"><span class="cl">pyenv shell python-version
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv virtualenv python-version myproject-env, e.g. create ctf env with 3.13.3</span>
</span></span><span class="line"><span class="cl">pyenv virtualenv 3.13.3 ctf
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv activate myproject-env, e.g. activate ctf env</span>
</span></span><span class="line"><span class="cl">pyenv activate ctf
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># pyenv deactivate, exit virtual environment</span>
</span></span><span class="line"><span class="cl">pyenv deactivate
</span></span></code></pre></div>
        
        <hr><p>Published on 2026-05-06 at <a href='https://blog.m15tak3.com/'>M15tak3のBlog</a>, last modified on 2026-05-06</p><p>All articles on this blog are licensed under the BY-NC-SA license agreement unless otherwise stated. Please indicate the source when reprinting!</p>]]>
      </description>
      
        <category>Tech</category><category>CTF</category>
      
    </item>
    
      
    

    <item>
      <title>Installing WSL2 &#43; Ubuntu from Scratch</title>
      <link>https://blog.m15tak3.com/en/post/wsl1/</link>
      <pubDate>Wed, 06 May 2026 09:00:00 &#43;0800</pubDate>
      <author>skyman.soul@gmail.com (M15tak3)</author>
      <guid>https://blog.m15tak3.com/en/post/wsl1/</guid>
      <description>
        <![CDATA[<h1>Installing WSL2 + Ubuntu from Scratch</h1><p>Author: M15tak3(skyman.soul@gmail.com)</p>
        
          <h1 id="installing-wsl2--ubuntu-from-scratch">
<a class="header-anchor" href="#installing-wsl2--ubuntu-from-scratch"></a>
Installing WSL2 + Ubuntu from Scratch
</h1><h2 id="before-you-start">
<a class="header-anchor" href="#before-you-start"></a>
Before You Start
</h2><p>You can think of WSL as a lightweight VM that gives much better local file interaction than VMware under Windows.</p>
<p><strong>Note</strong>: after installing a Linux subsystem, if you later upgrade Windows from Home to Pro, subsystem file corruption can happen. Please keep backups.</p>
<h2 id="installing-wsl">
<a class="header-anchor" href="#installing-wsl"></a>
Installing WSL
</h2><h3 id="enable-required-features">
<a class="header-anchor" href="#enable-required-features"></a>
Enable Required Features
</h3><p>Open: <code>Windows Settings -&gt; System -&gt; Optional features -&gt; More Windows features</code></p>
<p><img src="/images/wsl/image-20260506091424950.png" alt="image-20260506091424950"></p>
<p>Enable <strong>Windows Subsystem for Linux</strong> and <strong>Virtual Machine Platform</strong>, then click OK. Windows will install these features and ask for a reboot.</p>
<p><img src="/images/wsl/image-20260506091524142.png" alt="image-20260506091524142"></p>
<h2 id="install-wsl-ubuntu">
<a class="header-anchor" href="#install-wsl-ubuntu"></a>
Install WSL Ubuntu
</h2><p>Open a terminal and run:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-install</span> <span class="n">-d</span> <span class="n">Ubuntu</span><span class="p">-</span><span class="mf">22.04</span>
</span></span></code></pre></div><p>The system will automatically pull Ubuntu 24.04 in this setup, so just wait for the progress to finish.</p>
<p><img src="/images/wsl/image-20260506092344701.png" alt="image-20260506092344701"></p>
<p>After installation, the subsystem starts automatically and asks you to create a username. Username rules vary slightly by distro; if your name is rejected, adjust it accordingly.</p>
<p><img src="/images/wsl/image-20260506092455924.png" alt="image-20260506092455924"></p>
<h2 id="move-the-subsystem-to-another-drive">
<a class="header-anchor" href="#move-the-subsystem-to-another-drive"></a>
Move the Subsystem to Another Drive
</h2><p>By default, WSL installs distributions under drive C. If you want to move it, first run <code>exit</code> in the Linux shell.</p>
<p>Then shut down all WSL VMs and export the installed Ubuntu 22.04 for backup:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-shutdown</span>
</span></span><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-export</span> <span class="n">Ubuntu</span><span class="p">-</span><span class="mf">22.04</span> <span class="n">E:</span><span class="p">\</span><span class="n">WSL</span><span class="p">\</span><span class="n">ubuntu2204</span><span class="p">.</span><span class="py">tar</span>
</span></span></code></pre></div><p><img src="/images/wsl/image-20260506093742003.png" alt="image-20260506093742003"></p>
<p>You can choose your own path, but the exported file must end with <code>.tar</code>.</p>
<p>Now unregister the current distro and import it to your target location:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-unregister</span> <span class="n">Ubuntu</span><span class="p">-</span><span class="mf">22.04</span>
</span></span><span class="line"><span class="cl"><span class="n">wsl</span> <span class="p">-</span><span class="n">-import</span> <span class="n">Ubuntu</span><span class="p">-</span><span class="mf">22.04</span> <span class="n">E:</span><span class="p">\</span><span class="n">WSL</span><span class="p">\</span><span class="n">Ubuntu2204</span> <span class="n">E:</span><span class="p">\</span><span class="n">WSL</span><span class="p">\</span><span class="n">ubuntu2204</span><span class="p">.</span><span class="py">tar</span>
</span></span><span class="line"><span class="cl"><span class="n">wsl</span> <span class="n">-d</span> <span class="n">Ubuntu</span><span class="p">-</span><span class="mf">22.04</span>
</span></span></code></pre></div><p><img src="/images/wsl/image-20260506093901064.png" alt="image-20260506093901064"></p>
<p>After that, the subsystem location is changed, and your files stay intact.</p>

        
        <hr><p>Published on 2026-05-06 at <a href='https://blog.m15tak3.com/'>M15tak3のBlog</a>, last modified on 2026-05-06</p><p>All articles on this blog are licensed under the BY-NC-SA license agreement unless otherwise stated. Please indicate the source when reprinting!</p>]]>
      </description>
      
        <category>Tech</category><category>CTF</category>
      
    </item>
    
  </channel>
</rss>
