<?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: Efe Ertugrul</title>
    <description>The latest articles on DEV Community by Efe Ertugrul (@efe).</description>
    <link>https://dev.to/efe</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%2F221732%2F8251067e-b5ee-4998-9069-0c09909609a6.jpeg</url>
      <title>DEV Community: Efe Ertugrul</title>
      <link>https://dev.to/efe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/efe"/>
    <language>en</language>
    <item>
      <title>NetBSD package manager configuration</title>
      <dc:creator>Efe Ertugrul</dc:creator>
      <pubDate>Thu, 10 Mar 2022 04:23:54 +0000</pubDate>
      <link>https://dev.to/efe/netbsd-package-manager-configuration-1gbf</link>
      <guid>https://dev.to/efe/netbsd-package-manager-configuration-1gbf</guid>
      <description>&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;In this part i'm going to enable built-in package manager and install pkgin. Pkgin is the recommended package manager for NetBSD.&lt;br&gt;
For more information see: &lt;a href="https://pkgin.net/"&gt;PKGIN Website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This part requires active internet connection.&lt;/p&gt;




&lt;h1&gt;
  
  
  Instructions
&lt;/h1&gt;

&lt;p&gt;1- Start and login to your system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jIr4SSiC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/htrau5uf1l9akbrdayoi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jIr4SSiC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/htrau5uf1l9akbrdayoi.png" alt="netbsd-pkg-001" width="719" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2- Switch to &lt;strong&gt;&lt;code&gt;root&lt;/code&gt;&lt;/strong&gt; user with &lt;strong&gt;&lt;code&gt;su&lt;/code&gt;&lt;/strong&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hebQBFMV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hwkmsj1npenhz8j2nm7h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hebQBFMV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hwkmsj1npenhz8j2nm7h.png" alt="netbsd-pkg-002" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3- Go to root's &lt;strong&gt;homefolder&lt;/strong&gt; with &lt;strong&gt;&lt;code&gt;cd&lt;/code&gt;&lt;/strong&gt; command. Check with &lt;strong&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/strong&gt; command that you're in &lt;strong&gt;homefolder&lt;/strong&gt;. Open &lt;strong&gt;&lt;code&gt;.profile&lt;/code&gt;&lt;/strong&gt; dotfile with &lt;strong&gt;&lt;code&gt;vi&lt;/code&gt;&lt;/strong&gt; program.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--21iMBttS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o5u93aupubnqkxikxlez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--21iMBttS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o5u93aupubnqkxikxlez.png" alt="netbsd-pkg-003" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4- In this file find and uncomment &lt;strong&gt;&lt;code&gt;export PKG_PATH&lt;/code&gt;&lt;/strong&gt; line by deleting the &lt;strong&gt;#&lt;/strong&gt; character at the start of the line. Save it using &lt;strong&gt;&lt;code&gt;:w!&lt;/code&gt;&lt;/strong&gt; command because this file is read-only.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P1i_arvc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2j9an3dw1ulk3qfplpi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P1i_arvc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2j9an3dw1ulk3qfplpi.png" alt="netbsd-pkg-004" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oa22RUf4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ni2ffm4cw2mg6zevmuxc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oa22RUf4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ni2ffm4cw2mg6zevmuxc.png" alt="netbsd-pkg-005" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5- This configuration don't require a system restart. It requires a re-login. So logout from all the logged-in users with &lt;strong&gt;&lt;code&gt;exit&lt;/code&gt;&lt;/strong&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XXdpVUf9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vt4crfx1xfh86lqrrx5j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XXdpVUf9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vt4crfx1xfh86lqrrx5j.png" alt="netbsd-pkg-006" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---ySP_dFP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/itoypyhday173038kpk4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---ySP_dFP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/itoypyhday173038kpk4.png" alt="netbsd-pkg-007" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6- Login with &lt;strong&gt;&lt;code&gt;root&lt;/code&gt;&lt;/strong&gt; user. (Installing programs requires root privileges)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qB1IoU-i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p2v0l47b2yggif5lkhd6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qB1IoU-i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p2v0l47b2yggif5lkhd6.png" alt="netbsd-pkg-008" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7x-ewlQr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a2096hrnw9whrj3zpsk3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7x-ewlQr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a2096hrnw9whrj3zpsk3.png" alt="netbsd-pkg-009" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7- First, install &lt;strong&gt;&lt;code&gt;pkgin&lt;/code&gt;&lt;/strong&gt; package manager using command &lt;strong&gt;&lt;code&gt;pkg_add -v pkgin&lt;/code&gt;&lt;/strong&gt; .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zlPY6BQR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w48vhhovj1we32ot6mio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zlPY6BQR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w48vhhovj1we32ot6mio.png" alt="netbsd-pkg-010" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pkKde3JK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jitxfmnuz7snqn54ga5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pkKde3JK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jitxfmnuz7snqn54ga5q.png" alt="netbsd-pkg-011" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IcRKoQGc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2owr4tlxplccjxqexm6y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IcRKoQGc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2owr4tlxplccjxqexm6y.png" alt="netbsd-pkg-012" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HHhFcEnz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i1vivvrjo5giuyl0ftwb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HHhFcEnz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i1vivvrjo5giuyl0ftwb.png" alt="netbsd-pkg-013" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8- From now on we can use pkgin. Update pkgin database with command &lt;strong&gt;&lt;code&gt;pkgin update&lt;/code&gt;&lt;/strong&gt; . Always update &lt;strong&gt;&lt;code&gt;pkgin&lt;/code&gt;&lt;/strong&gt; before installing programs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3hd-7WQ5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8tb5pxov2b5qlw8c4arw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3hd-7WQ5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8tb5pxov2b5qlw8c4arw.png" alt="netbsd-pkg-014" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VLx1mO76--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pm2l569cxxuvbaauqrfh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VLx1mO76--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pm2l569cxxuvbaauqrfh.png" alt="netbsd-pkg-015" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;9- Let's test &lt;strong&gt;&lt;code&gt;pkgin&lt;/code&gt;&lt;/strong&gt; by installing &lt;strong&gt;&lt;code&gt;vim&lt;/code&gt;&lt;/strong&gt; program. Use command &lt;strong&gt;&lt;code&gt;pkgin install vim&lt;/code&gt;&lt;/strong&gt; to install &lt;strong&gt;&lt;code&gt;vim&lt;/code&gt;&lt;/strong&gt;. Type Y to continue install. This will download and copy all the necessary files for &lt;strong&gt;&lt;code&gt;vim&lt;/code&gt;&lt;/strong&gt; program.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DXMz-rc_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rdfyyk2eulfwqlyqfaz2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DXMz-rc_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rdfyyk2eulfwqlyqfaz2.png" alt="netbsd-pkg-016" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--unxmMlGi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p159tb4yhdxhiaaief6p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--unxmMlGi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p159tb4yhdxhiaaief6p.png" alt="netbsd-pkg-017" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;10- After installation is over, test-run the program with command &lt;strong&gt;&lt;code&gt;vim&lt;/code&gt;&lt;/strong&gt;. Check if it runs or not.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tBWUU_SV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qcbgsn9oij7pf5gnb5l4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tBWUU_SV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qcbgsn9oij7pf5gnb5l4.png" alt="netbsd-pkg-018" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LZI3dNNK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/11ady1hg8bkqdbfr1z33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LZI3dNNK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/11ady1hg8bkqdbfr1z33.png" alt="netbsd-pkg-019" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;11- You can also delete installed programs. Remove &lt;strong&gt;&lt;code&gt;vim&lt;/code&gt;&lt;/strong&gt; with using &lt;strong&gt;&lt;code&gt;pkgin remove vim&lt;/code&gt;&lt;/strong&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zSHv-V-Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z2tstqhifiiztc3rylbq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zSHv-V-Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z2tstqhifiiztc3rylbq.png" alt="netbsd-pkg-020" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5R6EqBEu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/38fv84b6wuhpwdrobryp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5R6EqBEu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/38fv84b6wuhpwdrobryp.png" alt="netbsd-pkg-021" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j9hezJgd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5nuqcmfsmzgw55t9ykx4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j9hezJgd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5nuqcmfsmzgw55t9ykx4.png" alt="netbsd-pkg-022" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;12- After removal of a program you should also remove unnecessary packages by using &lt;strong&gt;&lt;code&gt;pkgin autoremove&lt;/code&gt;&lt;/strong&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6owJhwN5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dcvkw6qht8nmn2i76pzo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6owJhwN5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dcvkw6qht8nmn2i76pzo.png" alt="netbsd-pkg-023" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wjp9Cy6K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbmlf632t7c3zujmsv5n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wjp9Cy6K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbmlf632t7c3zujmsv5n.png" alt="netbsd-pkg-024" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FAM_jHqy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nmorvf695kcejqkhb6ey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FAM_jHqy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nmorvf695kcejqkhb6ey.png" alt="netbsd-pkg-025" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;13- Also use &lt;strong&gt;&lt;code&gt;pkgin clean&lt;/code&gt;&lt;/strong&gt; command to clean the cache after an install or uninstall operation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fmeIrh-J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ckf6ykusaxkd0zkcoqcg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fmeIrh-J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ckf6ykusaxkd0zkcoqcg.png" alt="netbsd-pkg-026" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By the way you should always think programs as potential security vulnerabilities. Especially if you are running your system as a server. So never install any unnecessary programs to a server. Best is always use the programs those come with your operating system. For example use vi instead of vim. &lt;/p&gt;

&lt;p&gt;This is the end of NetBSD guide. Now you have a fully functioning minimal NetBSD system. Next is up to you. You can install a Graphical User Interface or configure a Firewall. For more information about NetBSD use the official guide here: &lt;a href="https://www.netbsd.org/docs/guide/en/"&gt;NetBSD Guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>netbsd</category>
      <category>packagemanager</category>
      <category>configuration</category>
    </item>
    <item>
      <title>NetBSD basic internet configuration</title>
      <dc:creator>Efe Ertugrul</dc:creator>
      <pubDate>Thu, 10 Mar 2022 04:23:08 +0000</pubDate>
      <link>https://dev.to/efe/netbsd-basic-internet-configuration-3c2j</link>
      <guid>https://dev.to/efe/netbsd-basic-internet-configuration-3c2j</guid>
      <description>&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;In this part i'll show you how to enable NetBSD dhcp daemon for internet connection. Most of the time there is already a dhcp service in your network (your router, virtualbox). So there is no need for manual ip configuration. &lt;/p&gt;

&lt;p&gt;If you need to set manual ip configuration for your network or enabling dhcp daemon did not work for you, please visit this website for more information: &lt;a href="https://www.netbsd.org/docs/guide/en/chap-net-practice.html"&gt;Setting up TCP/IP on NetBSD in practice&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Instructions
&lt;/h1&gt;

&lt;p&gt;1- Start and login to your system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UWXQWkOW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/303igshi436peu8slupg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UWXQWkOW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/303igshi436peu8slupg.png" alt="netbsd-dhcp-001" width="719" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2- Switch to &lt;strong&gt;&lt;code&gt;root&lt;/code&gt;&lt;/strong&gt; user with &lt;strong&gt;&lt;code&gt;su&lt;/code&gt;&lt;/strong&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AEMhNeWu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tqlc9kc7aus2tg77mqft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AEMhNeWu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tqlc9kc7aus2tg77mqft.png" alt="netbsd-dhcp-002" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3-Open &lt;strong&gt;&lt;code&gt;/etc/rc.conf&lt;/code&gt;&lt;/strong&gt; configuration file with &lt;strong&gt;&lt;code&gt;vi&lt;/code&gt;&lt;/strong&gt; program.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WFY0Yf8C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ebr0f5kcmksq0jmcpd5v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WFY0Yf8C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ebr0f5kcmksq0jmcpd5v.png" alt="netbsd-dhcp-003" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4- At the end of the file, add &lt;strong&gt;&lt;code&gt;dhcpcd=YES&lt;/code&gt;&lt;/strong&gt; configuration and save the file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fH4lwAWH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/777csskku80y7ba10ba3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fH4lwAWH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/777csskku80y7ba10ba3.png" alt="netbsd-dhcp-004" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5- Restart your system with &lt;strong&gt;&lt;code&gt;shutdown -r now&lt;/code&gt;&lt;/strong&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XWogRcGq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6fengifw52mwt7byxcmb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XWogRcGq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6fengifw52mwt7byxcmb.png" alt="netbsd-dhcp-005" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AywFQABj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ym9sztfxe1xcuzmwk2m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AywFQABj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ym9sztfxe1xcuzmwk2m.png" alt="netbsd-dhcp-006" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6- When your system starts again login and try to ping google with command &lt;strong&gt;&lt;code&gt;ping google.com&lt;/code&gt;&lt;/strong&gt; . If you are getting any response, you're connected to internet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ldMYrglV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zl9d9tff0y0a1uvdf06o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ldMYrglV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zl9d9tff0y0a1uvdf06o.png" alt="netbsd-dhcp-007" width="720" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>netbsd</category>
      <category>dhcp</category>
      <category>internet</category>
      <category>configuration</category>
    </item>
    <item>
      <title>NetBSD non-us keyboard configuration</title>
      <dc:creator>Efe Ertugrul</dc:creator>
      <pubDate>Wed, 09 Mar 2022 03:54:33 +0000</pubDate>
      <link>https://dev.to/efe/netbsd-non-us-keyboard-configuration-1pmh</link>
      <guid>https://dev.to/efe/netbsd-non-us-keyboard-configuration-1pmh</guid>
      <description>&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;In this part i'm going to configure my non-us keyboard by changing or adding some system configuration files for keyboard. &lt;strong&gt;US&lt;/strong&gt; keyboard users can skip this part.&lt;/p&gt;

&lt;p&gt;This part requires you to know basic usage of &lt;strong&gt;vi&lt;/strong&gt; program. If you don't know how to use &lt;strong&gt;vi&lt;/strong&gt; or &lt;strong&gt;vim&lt;/strong&gt; check this website first: &lt;a href="https://www.netbsd.org/docs/guide/en/chap-edit.html#chap-edit-vi-tut"&gt;NetBSD vi tutorial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;vi&lt;/strong&gt; is almost always pre-installed in every operating system. Learning &lt;strong&gt;vi&lt;/strong&gt; is never a bad idea.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;vi&lt;/strong&gt; basic usage cheatsheet:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;h&lt;/td&gt;
&lt;td&gt;move cursor left&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;j&lt;/td&gt;
&lt;td&gt;move cursor down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;k&lt;/td&gt;
&lt;td&gt;move cursor up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;l&lt;/td&gt;
&lt;td&gt;move cursor right&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;a&lt;/td&gt;
&lt;td&gt;add after char&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;add before char&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;add end of line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;add start of line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;td&gt;add below line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;add above line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dd&lt;/td&gt;
&lt;td&gt;delete one line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;delete one char&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;:w&lt;/td&gt;
&lt;td&gt;save&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;:q&lt;/td&gt;
&lt;td&gt;quit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;:wq&lt;/td&gt;
&lt;td&gt;save and quit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;:w!&lt;/td&gt;
&lt;td&gt;force save&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;:q!&lt;/td&gt;
&lt;td&gt;force quit&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Instructions
&lt;/h1&gt;

&lt;p&gt;1- Start your system and login.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eg0KW3ME--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j6u479ahgdawlqdodcke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eg0KW3ME--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j6u479ahgdawlqdodcke.png" alt="netbsd-keyboard-001" width="721" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2- Changing the system configuration requires privilege. So switch to &lt;strong&gt;&lt;code&gt;root&lt;/code&gt;&lt;/strong&gt; user with &lt;strong&gt;&lt;code&gt;su&lt;/code&gt;&lt;/strong&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gbi4EKeZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3uhhtzm0skd6i8bpnwld.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gbi4EKeZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3uhhtzm0skd6i8bpnwld.png" alt="netbsd-keyboard-002" width="720" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3- Open &lt;strong&gt;&lt;code&gt;wscons.conf&lt;/code&gt;&lt;/strong&gt; file with &lt;strong&gt;&lt;code&gt;vi&lt;/code&gt;&lt;/strong&gt; editor. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Jq4T8bwU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o9q6mt2soldhsljup750.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Jq4T8bwU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o9q6mt2soldhsljup750.png" alt="netbsd-keyboard-003" width="718" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4- I'm using &lt;strong&gt;&lt;code&gt;tr&lt;/code&gt;&lt;/strong&gt; keyboard. So im going to add &lt;strong&gt;&lt;code&gt;encoding tr&lt;/code&gt;&lt;/strong&gt; configuration in this file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--POYCRdyi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1e0reaixdt7l63hhqlch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--POYCRdyi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1e0reaixdt7l63hhqlch.png" alt="netbsd-keyboard-004" width="719" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5- I'm also going to edit keymaps because my current keyboard doesn't have a less, greater key. (These characters: "&amp;lt;&amp;gt;|"). This requires me to go to &lt;strong&gt;&lt;code&gt;/usr/share/wscons/keymaps/&lt;/code&gt;&lt;/strong&gt; folder. And create a new file named &lt;strong&gt;&lt;code&gt;overlay.tr&lt;/code&gt;&lt;/strong&gt; with &lt;strong&gt;&lt;code&gt;vi&lt;/code&gt;&lt;/strong&gt; editor. (You can use anything as file name but do not forget it. We're gonna need it)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zKIV_htw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/331ewiu3m5b7aqyic4oa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zKIV_htw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/331ewiu3m5b7aqyic4oa.png" alt="netbsd-keyboard-005" width="719" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6- What i'm going to do in this file that i'm going to set some unusable turkish character buttons to bar '|' less '&amp;lt;' and greater '&amp;gt;' characters. For example there is a 'ş' character in my keyboard. It's unusable in console but i might need '|' character so i've added &lt;strong&gt;&lt;code&gt;keycode 39 = bar&lt;/code&gt;&lt;/strong&gt; line in this file to set 'ş' button to bar '|' character. I've also set 'ö' and 'ç' buttons to use less '&amp;lt;' and greater '&amp;gt;'. (You can check your full keymap with this command: &lt;strong&gt;&lt;code&gt;wsconsctl map | less&lt;/code&gt;&lt;/strong&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iHiyhpA6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kk7ey32y9virc5273klz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iHiyhpA6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kk7ey32y9virc5273klz.png" alt="netbsd-keyboard-006" width="719" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7- Again, open your &lt;strong&gt;&lt;code&gt;wscons.conf&lt;/code&gt;&lt;/strong&gt; file with &lt;strong&gt;&lt;code&gt;vi&lt;/code&gt;&lt;/strong&gt; editor. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fjzL4urB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/95o1qff4mwfxbi62gq91.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fjzL4urB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/95o1qff4mwfxbi62gq91.png" alt="netbsd-keyboard-003" width="718" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8- Add &lt;strong&gt;&lt;code&gt;mapfile /usr/share/wscons/keymaps/overlay.tr&lt;/code&gt;&lt;/strong&gt; configuration and save it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Za3cGI19--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qg4g1m959vi0r53clvwh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Za3cGI19--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qg4g1m959vi0r53clvwh.png" alt="netbsd-keyboard-007" width="720" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;9- Restart the system with &lt;strong&gt;&lt;code&gt;shutdown -r now&lt;/code&gt;&lt;/strong&gt; to load these new keyboard configurations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2rfN8RoW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/npon391qtpawdpog9z4p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2rfN8RoW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/npon391qtpawdpog9z4p.png" alt="netbsd-keyboard-008" width="721" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d_VRqqsb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u5ehem9tdl2ipm9va00h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d_VRqqsb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u5ehem9tdl2ipm9va00h.png" alt="netbsd-keyboard-009" width="719" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;10- When system starts, login with user and try your configured buttons. If you can see your characters it means that your keyboard configurations are working.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MhMWumJ5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ycjdgepx4rpr8m3uo0ai.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MhMWumJ5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ycjdgepx4rpr8m3uo0ai.png" alt="netbsd-keyboard-010" width="719" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next part: Internet connection configuration.&lt;/p&gt;

</description>
      <category>configuration</category>
      <category>netbsd</category>
      <category>keyboard</category>
    </item>
    <item>
      <title>NetBSD minimal installation</title>
      <dc:creator>Efe Ertugrul</dc:creator>
      <pubDate>Tue, 08 Mar 2022 05:36:55 +0000</pubDate>
      <link>https://dev.to/efe/netbsd-minimal-installation-g2p</link>
      <guid>https://dev.to/efe/netbsd-minimal-installation-g2p</guid>
      <description>&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;These are the step by step instructions of installing a minimal NetBSD on a virtual machine. I'm using NetBSD as a mini server. So this installation has no graphical packages. I'm also using 32bit version. A bit slower but less demanding. &lt;/p&gt;

&lt;p&gt;I'm publishing this for the future reference. Because i'm sure i'm going to forget how i've installed and configured this OS.&lt;/p&gt;

&lt;p&gt;You can download NetBSD 9.2 CD image from this site:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.netbsd.org/releases/formal-9/NetBSD-9.2.html"&gt;https://www.netbsd.org/releases/formal-9/NetBSD-9.2.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The VM has this configuration:&lt;/p&gt;

&lt;p&gt;1 core cpu&lt;br&gt;
1024mb ram&lt;br&gt;
8gb ide hdd&lt;br&gt;
no soundcard&lt;/p&gt;




&lt;h1&gt;
  
  
  Instructions
&lt;/h1&gt;

&lt;p&gt;1- Boot your vm from cd image and wait until you see this screen. Press enter and continue next screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--izKyK5wJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bsywjk5wrs4a1b906qef.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--izKyK5wJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bsywjk5wrs4a1b906qef.png" alt="netbsd-001" width="714" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2- Select your keyboard and press enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Cx17wkeX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/plwx4v2ed0jehgle0emy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Cx17wkeX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/plwx4v2ed0jehgle0emy.png" alt="netbsd-002" width="718" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3- Select install to hard disk and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hAKCEi8---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h5fh5gdae8zmuiydduh4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hAKCEi8---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h5fh5gdae8zmuiydduh4.png" alt="netbsd-003" width="716" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4- Select yes and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IMUffr91--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3xyf3tzn86oaquklwvsk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IMUffr91--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3xyf3tzn86oaquklwvsk.png" alt="netbsd-004" width="716" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5- Select 8.0G disk.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--omfSFSXd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jctrg22h0mtt6en3ji7h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--omfSFSXd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jctrg22h0mtt6en3ji7h.png" alt="netbsd-005" width="717" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6- Select "Guid Partition Table"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IsbVhcIc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rzf7tne29vqlr8mr4xri.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IsbVhcIc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rzf7tne29vqlr8mr4xri.png" alt="netbsd-006" width="716" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7- Select correct and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YUUEAlW5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/256ibrk95ibzsg9992yo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YUUEAlW5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/256ibrk95ibzsg9992yo.png" alt="netbsd-007" width="718" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8- Select sizes of NetBSD partitions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_Ub3ueKM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6bm5ykubcexxqjnzmbht.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_Ub3ueKM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6bm5ykubcexxqjnzmbht.png" alt="netbsd-008" width="718" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;9- Press x to select go on and then press enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W-9FEIYa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ynhmhppdmdrph8uwiq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W-9FEIYa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ynhmhppdmdrph8uwiq6.png" alt="netbsd-009" width="717" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;10- Press x to select go on and then press enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jHRqB31C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hsqmu6s09xqejbrumill.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jHRqB31C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hsqmu6s09xqejbrumill.png" alt="netbsd-010" width="719" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;11- Select yes and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mertaEVf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53tgz0orxwxznwr8758d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mertaEVf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53tgz0orxwxznwr8758d.png" alt="netbsd-011" width="719" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;12- Select BIOS console and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bSHFbJ5r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6h4q1ee6t1e0po89n7en.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bSHFbJ5r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6h4q1ee6t1e0po89n7en.png" alt="netbsd-012" width="719" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;13- Select custom installation and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tTkLhuK0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0bnemd9crm9pcis092lm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tTkLhuK0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0bnemd9crm9pcis092lm.png" alt="netbsd-013" width="718" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;14- Set "Manual pages" to Yes. (Man pages are always better than google searches)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jyWtmxSp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ap0yul0vvm7mtqt0owsc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jyWtmxSp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ap0yul0vvm7mtqt0owsc.png" alt="netbsd-014" width="718" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;15- Select "Install selected sets" and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h-zXee27--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ukavxfqziesbh1vlrrl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h-zXee27--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ukavxfqziesbh1vlrrl.png" alt="netbsd-015" width="721" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;16- Select CD-ROM and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0rw_UdDw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/owoz01trhlwosmf0iyiz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0rw_UdDw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/owoz01trhlwosmf0iyiz.png" alt="netbsd-016" width="720" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;17- Wait for extraction to end.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xNnwv1hG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/msadtl9d9h0ju9yr1dpl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xNnwv1hG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/msadtl9d9h0ju9yr1dpl.png" alt="netbsd-017" width="718" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;18- Press enter to start configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Vznd0xKj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ljzoycc7mniqjcgn1hv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Vznd0xKj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ljzoycc7mniqjcgn1hv.png" alt="netbsd-018" width="719" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;19- First thing is to set "root" user password. Select Change root password.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XtebF05Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g15zoq8hevowylkfpj25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XtebF05Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g15zoq8hevowylkfpj25.png" alt="netbsd-019" width="717" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;20- Select yes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Rgmzr4n---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zixtlk2wfdyey734ch96.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Rgmzr4n---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zixtlk2wfdyey734ch96.png" alt="netbsd-020" width="718" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;21- Enter new root password.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OFObapga--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/31kzhvuxagt0pbf5bzk0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OFObapga--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/31kzhvuxagt0pbf5bzk0.png" alt="netbsd-021" width="716" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;22- Set "Enable raidframe" to No. Because i'm not going to use any RAID implementations. Look here for more info: &lt;a href="https://www.netbsd.org/docs/guide/en/chap-rf.html"&gt;NetBSD Raidframe&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AjZPumWM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ca2yzw9l0trp1eujcsc6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AjZPumWM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ca2yzw9l0trp1eujcsc6.png" alt="netbsd-022" width="717" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;23- Set "Enable cgd" to No. Because im not going to encrypt any disks. Look here for more info: &lt;a href="https://www.netbsd.org/docs/guide/en/chap-cgd.html"&gt;NetBSD cgd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wXMwse37--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7qt2o12yp9vfnegn7dwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wXMwse37--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7qt2o12yp9vfnegn7dwn.png" alt="netbsd-023" width="716" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;24- Select "Add a user" and press enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Yr4T-A6k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kcms94znztvupjr1wqiy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Yr4T-A6k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kcms94znztvupjr1wqiy.png" alt="netbsd-024" width="719" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;25- Enter username and add this user to wheel group. (Wheel group means privileged users)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--smgJKMJa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gjef1tx5kmdey1kkuz4k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--smgJKMJa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gjef1tx5kmdey1kkuz4k.png" alt="netbsd-025" width="718" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;26- Select bin/sh and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iO03SzWu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgw6xk71lvcskaja8qdk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iO03SzWu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgw6xk71lvcskaja8qdk.png" alt="netbsd-026" width="717" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;27- Set your user password.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZwhBk0hl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4dmlj38pkjw08ygr15mk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZwhBk0hl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4dmlj38pkjw08ygr15mk.png" alt="netbsd-027" width="714" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;28- Select finished configuration and hit enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_RIDj0Db--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yssse4z0mmo7x0db5so6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_RIDj0Db--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yssse4z0mmo7x0db5so6.png" alt="netbsd-028" width="718" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;29- Installation is completed. Hit enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hutv89Td--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/585jokoqf6yk6o8zwtro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hutv89Td--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/585jokoqf6yk6o8zwtro.png" alt="netbsd-029" width="715" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;30- Select reboot the computer and hit enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dUfTVsmY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qj4g177g97qab5i5z9dh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dUfTVsmY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qj4g177g97qab5i5z9dh.png" alt="netbsd-030" width="716" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;31- After boot, you should be able to see this login screen. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G-LlAUr3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mldn81xdwistnyuhlr98.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G-LlAUr3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mldn81xdwistnyuhlr98.png" alt="netbsd-032" width="718" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations&lt;/p&gt;

&lt;p&gt;You've successfully installed a minimal NetBSD 32bit operating system.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>netbsd</category>
    </item>
    <item>
      <title>Creating backups with split and zip in MacOS</title>
      <dc:creator>Efe Ertugrul</dc:creator>
      <pubDate>Wed, 25 Nov 2020 09:31:23 +0000</pubDate>
      <link>https://dev.to/efe/creating-backups-with-split-and-zip-in-macos-3382</link>
      <guid>https://dev.to/efe/creating-backups-with-split-and-zip-in-macos-3382</guid>
      <description>&lt;p&gt;In this post i will show you how to split large files for easy upload and archive in MacOS.&lt;/p&gt;

&lt;p&gt;Let's say there are large number of files in your desktop and size difference between these files are too big.&lt;br&gt;
There are 2 Kilobyte files and there are more than 1 Gigabyte files.&lt;/p&gt;

&lt;p&gt;Now if you don't have time and you just need to upload these to google drive or dropbox you might need to install their apps to your Mac.&lt;/p&gt;

&lt;p&gt;If you don't want to install those apps to your Mac you can use a browser to upload these files but if anything goes wrong with a large file when uploading, you will lose time.&lt;/p&gt;

&lt;p&gt;So rather uploading large files you can follow these steps:&lt;/p&gt;

&lt;p&gt;1- Put everything in a .zip archive without compressing and encrypt it with a password.&lt;br&gt;
2- Split that one big .zip file to many smaller files.&lt;br&gt;
3- Check their integrity.&lt;br&gt;
4- Upload them to cloud.&lt;br&gt;
5- When you need that .zip file, download splitted files, merge and unzip it with correct password.&lt;/p&gt;

&lt;p&gt;Now let's go to our terminal.&lt;/p&gt;



&lt;p&gt;Let's say you have a folder named &lt;strong&gt;backup_desktop&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Archive &lt;strong&gt;backup_desktop/&lt;/strong&gt; directory, without compressing and encrypting with a password:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;zip -0er backup-desktop.zip backup_desktop/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will ask for a password and create a password protected .zip file named &lt;strong&gt;backup-desktop.zip&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;-0er&lt;/strong&gt; means:&lt;br&gt;
0: no compression&lt;br&gt;
e: encrypt it with a password&lt;br&gt;
r: means whole directory&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Split &lt;strong&gt;backup-desktop.zip&lt;/strong&gt; in &lt;strong&gt;backup_split&lt;/strong&gt; directory with &lt;strong&gt;backup-desktop-&lt;/strong&gt; prefix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;split -b 1m backup-desktop.zip backup_split/backup-desktop-
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will split &lt;strong&gt;backup-desktop.zip&lt;/strong&gt; file and create five files with &lt;strong&gt;1 Megabyte&lt;/strong&gt; size. (because my backup-desktop.zip is 5 Megabyte)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;-b 1m&lt;/strong&gt;: means split to 1 Megabyte parts. &lt;br&gt;
&lt;strong&gt;backup-desktop.zip&lt;/strong&gt;: means split this file&lt;br&gt;
&lt;strong&gt;backup_split/backup-desktop-&lt;/strong&gt;: means save splitted parts to backup_split directory and save them with "backup-desktop-" prefix&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My zip archive is rather small so you might want to change &lt;strong&gt;"-b 1m"&lt;/strong&gt;. I usually use &lt;strong&gt;"-b 25m"&lt;/strong&gt; for large files. That creates files with &lt;strong&gt;25 Megabyte&lt;/strong&gt; sizes each.&lt;/p&gt;

&lt;p&gt;My backup_split directory lists like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;backup-desktop-aa&lt;/li&gt;
&lt;li&gt;backup-desktop-ab&lt;/li&gt;
&lt;li&gt;backup-desktop-ac&lt;/li&gt;
&lt;li&gt;backup-desktop-ad&lt;/li&gt;
&lt;li&gt;backup-desktop-ae&lt;/li&gt;
&lt;li&gt;backup-desktop-af&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All files start with &lt;strong&gt;backup-desktop-&lt;/strong&gt; prefix as we asked. &lt;/p&gt;




&lt;p&gt;Now before you use those, you should also check those files' integrity&lt;/p&gt;

&lt;p&gt;Use md5 to print &lt;strong&gt;checksum&lt;/strong&gt; of &lt;strong&gt;backup-desktop.zip&lt;/strong&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;md5 -q backup-desktop.zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;-q&lt;/strong&gt;: means print only checksum&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You will see a text. That is the checksum of &lt;strong&gt;backup-desktop.zip&lt;/strong&gt; file.&lt;/p&gt;

&lt;p&gt;Now we have to do the same thing for splitted files.&lt;br&gt;
&lt;strong&gt;cat&lt;/strong&gt; command will put all the splitted files together and &lt;strong&gt;md5&lt;/strong&gt; will print their put-together checksum:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat backup_split/backup-desktop-* | md5 -q
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;cat backup_split/backup-desktop-*&lt;/strong&gt;: means merge files in backup_split with "backup-desktop-" prefix.&lt;br&gt;
&lt;strong&gt;| md5 -q&lt;/strong&gt;: means send that merged files to md5 -q and md5 -q will print another text which is splitted files' checksum.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now if those two printed strings are identical that means files are healthy and those splitted files can be merge into &lt;strong&gt;backup-desktop.zip&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If two printed strings are not identical that means splitted files cannot merge into &lt;strong&gt;backup-desktop.zip&lt;/strong&gt;.&lt;br&gt;
something is wrong and you should not use those files.&lt;/p&gt;



&lt;p&gt;Now you can upload your splitted files to your cloud server.&lt;/p&gt;



&lt;p&gt;When you need that backup, download all splitted files into a directory and merge splitted files with this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat backup-desktop-* &amp;gt; backup-desktop.zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;cat backup-desktop-*&lt;/strong&gt;: means merge every file in directory with backup-desktop- prefix.&lt;br&gt;
&lt;strong&gt;&amp;gt; backup-desktop.zip&lt;/strong&gt;: means save merged files as backup-desktop.zip&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This command will create a file named &lt;strong&gt;backup-desktop.zip&lt;/strong&gt; in that directory.&lt;/p&gt;

&lt;p&gt;Now you can unzip it with this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;unzip backup-desktop.zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will ask your password for the zip file and if you enter right password, this command will create a directory named &lt;strong&gt;backup_desktop&lt;/strong&gt; and will put all your archived files in it.&lt;/p&gt;

&lt;p&gt;Also you can just double-click it. &lt;strong&gt;Archive Utility.app&lt;/strong&gt; can do the same thing.&lt;/p&gt;

</description>
      <category>zip</category>
      <category>macos</category>
      <category>split</category>
      <category>backup</category>
    </item>
    <item>
      <title>How to use GnuPG for encrypting files on MacOS</title>
      <dc:creator>Efe Ertugrul</dc:creator>
      <pubDate>Sun, 16 Feb 2020 13:23:00 +0000</pubDate>
      <link>https://dev.to/efe/how-to-use-gnupg-for-encrypting-files-on-macos-2kke</link>
      <guid>https://dev.to/efe/how-to-use-gnupg-for-encrypting-files-on-macos-2kke</guid>
      <description>&lt;p&gt;GnuPG is an implementation of OpenPGP standard.&lt;br&gt;
People use it for public-private key encryption. &lt;br&gt;
It is one of the tools that Edward Snowden used to uncover the secrets of the NSA.&lt;/p&gt;

&lt;p&gt;GnuPG is a complex tool.&lt;br&gt;
I will only show you how to use it for file encryption without using keys.&lt;br&gt;
And i will show some configuration files to make commands more simple.&lt;/p&gt;

&lt;p&gt;I assume you know how to use a Unix console and have Homebrew package manager installed.&lt;/p&gt;

&lt;p&gt;First you should install GnuPG with &lt;a href="https://brew.sh/"&gt;Homebrew&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install gnupg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will install GnuPG version 2.2.19 (or later)&lt;/p&gt;

&lt;p&gt;Check installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpg --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should be able to see something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpg (GnuPG) 2.2.19
libgcrypt 1.8.5
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later &amp;lt;https://gnu.org/licenses/gpl.html&amp;gt;
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we can use GnuPG.&lt;/p&gt;

&lt;p&gt;I have a text file named &lt;code&gt;test.txt&lt;/code&gt;.&lt;br&gt;
It contains this text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;this is a test file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To encrypt &lt;code&gt;test.txt&lt;/code&gt; file i will use this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpg -c --armor --cipher-algo AES256 --no-symkey-cache --output test.asc test.txt 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will ask you a password and create an encrypted version of &lt;code&gt;test.txt&lt;/code&gt; file and save as &lt;code&gt;test.asc&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Command explanation:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-c&lt;/code&gt; means use symmetric cipher so you will enter a password for that file.&lt;br&gt;
&lt;code&gt;--armor&lt;/code&gt; is for a readable ascii output so you can easily copy/paste it.&lt;br&gt;
&lt;code&gt;--cipher-algo AES256&lt;/code&gt; is for using AES-256 cipher. (U.S. government using it so why not)&lt;br&gt;
&lt;code&gt;--no-symkey-cache&lt;/code&gt; means GnuPG will not remember password. If you don't enter this &lt;code&gt;--decrypt&lt;/code&gt; command won't ask your passphrase.&lt;br&gt;
&lt;code&gt;--output test.asc&lt;/code&gt; means save encrypted file as &lt;code&gt;test.asc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now i have &lt;code&gt;test.asc&lt;/code&gt; (encrypted &lt;code&gt;test.txt&lt;/code&gt;).&lt;br&gt;
It contains this text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-----BEGIN PGP MESSAGE-----

jA0ECQMCFBL2lERVNBzj0kwBXxdKtTQSCu4aHyiP93EfUjqYX+Qsp6sWAF+RHUMW
rqjQiLMSlSrxnBxG0E+qfoTmN+26Qb0qd9XAY7S3OTQTfi6XyvjjrNr0yiJ9
=r3J6
-----END PGP MESSAGE-----
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see it is readable but meaningless. &lt;br&gt;
This is because of the &lt;code&gt;--armor&lt;/code&gt; option we added to the command.&lt;/p&gt;

&lt;p&gt;To decrypt &lt;code&gt;test.asc&lt;/code&gt; file i will use this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpg --decrypt --no-symkey-cache --output test1.txt test.asc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will ask you the password you used and if it is correct it will create a decrypted file as &lt;code&gt;test1.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now i have &lt;code&gt;test1.txt&lt;/code&gt;.&lt;br&gt;
It contains this text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;this is a test file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Configuration Files
&lt;/h3&gt;

&lt;p&gt;There are some configuration files im using.&lt;br&gt;
I will show you how to create these files.&lt;br&gt;
These configuration files are not neccessary but they are shortening the commands i use everyday.&lt;/p&gt;

&lt;p&gt;GnuPG creates a folder for itself.&lt;br&gt;
It is normally in your &lt;code&gt;$HOME&lt;/code&gt; folder named &lt;code&gt;.gnupg&lt;/code&gt;.&lt;br&gt;
It contains caches, your keyrings, your configuration files.&lt;br&gt;
So go there and create a file named &lt;code&gt;gpg.conf&lt;/code&gt;.(if it doesn't exists)&lt;/p&gt;

&lt;p&gt;Write these in &lt;code&gt;gpg.conf&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;armor
personal-cipher-preferences AES256
verbose
use-embedded-filename
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save it.&lt;/p&gt;

&lt;p&gt;Now create another configuration file named &lt;code&gt;gpg-agent.conf&lt;/code&gt;.(gpg-agent comes with gnupg installation)&lt;/p&gt;

&lt;p&gt;Write these in &lt;code&gt;gpg-agent.conf&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;default-cache-ttl 0
max-cache-ttl 0
disable-scdaemon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;default-cache-ttl 0&lt;/code&gt; and &lt;code&gt;max-cache-ttl 0&lt;/code&gt; disables password cache. &lt;code&gt;disable-scdaemon&lt;/code&gt; disables smart card daemon program. Smart Card program starts automatically whenever &lt;code&gt;gpg-agent&lt;/code&gt; starts. I don't use smart cards so i'm disabling it.&lt;/p&gt;

&lt;p&gt;Save it.&lt;/p&gt;

&lt;p&gt;Now actually you should restart your &lt;code&gt;gpg-agent&lt;/code&gt; program manually.&lt;/p&gt;

&lt;p&gt;Kill it with this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpgconf --kill gpg-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will launch automatically when you call &lt;code&gt;gpg&lt;/code&gt;.&lt;br&gt;
If it doesn't you can run this command to launch it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpgconf --launch gpg-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Anyway now we don't need to add any options. We can simply run our command like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpg -c test.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will automatically create a file named &lt;code&gt;test.txt.asc&lt;/code&gt; with &lt;code&gt;cipher aes-256&lt;/code&gt;, also in &lt;code&gt;ascii format&lt;/code&gt; and won't remember the &lt;code&gt;password&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To decrypt it simply enter this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpg -d test.txt.asc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will create a decrypted file as &lt;code&gt;text.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is one of the many ways to use GnuPG.&lt;br&gt;
As i said before it does so much more.&lt;br&gt;
You can look for more info here at &lt;a href="https://www.gnupg.org"&gt;GnuPG&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gnupg</category>
      <category>macos</category>
      <category>encrypt</category>
      <category>decrypt</category>
    </item>
    <item>
      <title>Swift Delegate-Protocol example with SpriteKit</title>
      <dc:creator>Efe Ertugrul</dc:creator>
      <pubDate>Mon, 10 Feb 2020 06:43:43 +0000</pubDate>
      <link>https://dev.to/efe/swift-delegate-protocol-example-with-spritekit-4j61</link>
      <guid>https://dev.to/efe/swift-delegate-protocol-example-with-spritekit-4j61</guid>
      <description>&lt;p&gt;This is an example of delegation with SpriteKit.&lt;br&gt;
SpriteKit is Apple's 2D Game Framework.&lt;br&gt;
What i will show you is the how/when i use delegation.&lt;/p&gt;

&lt;p&gt;I have 3 classes.&lt;/p&gt;
&lt;h4&gt;
  
  
  1- GameScene
&lt;/h4&gt;

&lt;p&gt;This is the current scene of game. This is where all the object are interacting with each others.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GameScene.swift&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;Foundation&lt;/span&gt;
&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;SpriteKit&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;GameScene&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;SKScene&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// MARK:- PROPERTIES&lt;/span&gt;

    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;playerController&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;PlayerController&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;PlayerController&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="c1"&gt;// MARK:- INIT&lt;/span&gt;

    &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;didMove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;view&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;SKView&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// GameScene loaded&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Player
&lt;/h4&gt;

&lt;p&gt;This is my player sprite. This object holds all player animations.(move,attack,jump etc.)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Player.swift&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;SpriteKit&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;Player&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;SKSpriteNode&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;attack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; 
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// attack animation here&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  PlayerController
&lt;/h4&gt;

&lt;p&gt;This object is responsible for receiving user inputs and show some animations regarding of those user inputs.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PlayerController.swift&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;Foundation&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;PlayerController&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;player&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Player&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// create player object&lt;/span&gt;

    &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;attackKeyPressed&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;player&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;attack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// tell player object to run animation&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's say, user pressed the attack button.&lt;br&gt;
This means &lt;em&gt;PlayerController&lt;/em&gt; will call attack animation in &lt;em&gt;Player&lt;/em&gt; object.&lt;br&gt;
But now &lt;em&gt;GameScene&lt;/em&gt; must know that an attack action happened because &lt;em&gt;Player&lt;/em&gt; might hit something with that attack and other objects must change their values according to that action.&lt;/p&gt;

&lt;p&gt;This is done by &lt;strong&gt;delegation&lt;/strong&gt;.&lt;br&gt;
To do it change &lt;em&gt;PlayerController&lt;/em&gt; object to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;Foundation&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;PlayerController&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;player&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Player&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// create player object&lt;/span&gt;
    &lt;span class="k"&gt;weak&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;delegate&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;PlayerControllerDelegate&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="c1"&gt;// create delegate object (must be weak otherwise ARC won't deallocates)&lt;/span&gt;

    &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;attackKeyPressed&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;player&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;attack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// tell player object to attack&lt;/span&gt;
        &lt;span class="n"&gt;delegate&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;playerDidAttack&lt;/span&gt; &lt;span class="c1"&gt;// GameScene will hear this&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;protocol&lt;/span&gt; &lt;span class="kt"&gt;PlayerControllerDelegate&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;AnyObject&lt;/span&gt; &lt;span class="c1"&gt;// AnyObject for able to weak reference &lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;playerDidAttack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// delegate function&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And change &lt;em&gt;GameScene&lt;/em&gt; object to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;Foundation&lt;/span&gt;
&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="kt"&gt;SpriteKit&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;GameScene&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;SKScene&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;PlayerControllerDelegate&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// MARK:- PROPERTIES&lt;/span&gt;

    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;playerController&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;PlayerController&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;PlayerController&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="c1"&gt;// MARK:- INIT&lt;/span&gt;

    &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;didMove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;view&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;SKView&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;playerController&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;delegate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;self&lt;/span&gt; &lt;span class="c1"&gt;// set delegate&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// MARK:- DELEGATE FUNCTIONS&lt;/span&gt;

    &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;playerDidAttack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"player did attack"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;// do something when player attacks&lt;/span&gt;

    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now whenever an attack input entered by user. &lt;em&gt;PlayerController&lt;/em&gt; will run &lt;em&gt;Player&lt;/em&gt; object's attack animation and also tell &lt;em&gt;GameScene&lt;/em&gt; that an attack happened. Then &lt;em&gt;GameScene&lt;/em&gt; can tell other objects what they should do.&lt;/p&gt;

&lt;p&gt;You can also download my prototype game &lt;strong&gt;Retrokid&lt;/strong&gt; below.&lt;br&gt;
(Use your keyboard &lt;em&gt;w,a,s,d&lt;/em&gt; to walk and attack with &lt;em&gt;k&lt;/em&gt; button.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/retrokid/retrokid/releases/download/v0.1.1-alpha/retrokid.app.zip"&gt;Retrokid App&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/retrokid/retrokid/archive/v0.1.1-alpha.zip"&gt;Retrokid Source Code (.zip)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/retrokid/retrokid/archive/v0.1.1-alpha.tar.gz"&gt;Retrokid Source Code (.tar.gz)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>swift</category>
      <category>spritekit</category>
      <category>delegate</category>
      <category>protocol</category>
    </item>
  </channel>
</rss>
