<?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: Raul Dipeas</title>
    <description>The latest articles on DEV Community by Raul Dipeas (@rauldipeas).</description>
    <link>https://dev.to/rauldipeas</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%2F191913%2F8c939ca2-cb5c-40fa-a11e-0763e7ee2299.jpeg</url>
      <title>DEV Community: Raul Dipeas</title>
      <link>https://dev.to/rauldipeas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rauldipeas"/>
    <language>en</language>
    <item>
      <title>Desenvolvendo o Dekuve - Criação dos scripts</title>
      <dc:creator>Raul Dipeas</dc:creator>
      <pubDate>Sun, 07 Mar 2021 05:37:38 +0000</pubDate>
      <link>https://dev.to/rauldipeas/desenvolvendo-o-dekuve-criacao-dos-scripts-58pm</link>
      <guid>https://dev.to/rauldipeas/desenvolvendo-o-dekuve-criacao-dos-scripts-58pm</guid>
      <description>&lt;p&gt;Chegamos nos &lt;em&gt;finalmente&lt;/em&gt;, momento onde o vou descrever o meu método de criação para o script que vai gerar a imagem de instalação do sistema.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq51qpvljaht4qdv4qg4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq51qpvljaht4qdv4qg4d.png" alt="vscodium" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ao longo dos últimos 10 anos, eu usei vários métodos para criar ou remasterizar imagens de instalação baseadas no Ubuntu e no Debian, fui afunilando o processo com base nas experiências que tive e cheguei num método que hoje eu classifico como &lt;em&gt;correto&lt;/em&gt;, mas calma, antes de achar que eu estou &lt;em&gt;ditando regras&lt;/em&gt;, vou tentar explicar os motivos aqui.&lt;/p&gt;

&lt;p&gt;A grande maioria das distribuições Linux feitas por usuários iniciantes, usam o método &lt;a href="https://pt.wikipedia.org/wiki/Remastersys" rel="noopener noreferrer"&gt;Remastersys&lt;/a&gt;, bem antigo e manjado, que consiste em instalar o sistema localmente, fazer as customizações necessárias e depois empacotar essa instalação dentro de uma imagem ISO.&lt;/p&gt;

&lt;p&gt;Esse método funciona bem no caso de backups pessoais, mas quando você pretende compartilhar essa imagem com outras pessoas, a chance de você entregar um sistema carregado de arquivos desnecessários é muito grande, já que esse método não tem uma abordagem de &lt;em&gt;construção&lt;/em&gt;, é só um empacotamento de algo que já está funcionando, com arquivos de cache, logs e mais um monte de coisas que você não vai precisar.&lt;/p&gt;

&lt;p&gt;Existe um outro método muito popular, conhecido através de programas como o &lt;a href="https://launchpad.net/cubic" rel="noopener noreferrer"&gt;Cubic&lt;/a&gt;, que consiste em desempacotar uma imagem já existente, customizar através de um acesso &lt;a href="https://pt.wikipedia.org/wiki/Chroot" rel="noopener noreferrer"&gt;chroot&lt;/a&gt; e depois empacotar novamente de forma automatizada.&lt;/p&gt;

&lt;p&gt;Esse método é muito próximo do que eu uso atualmente, porém, ao invés de usar uma imagem já existente, eu construo todo o sistema do zero, usando o &lt;a href="https://wiki.debian.org/pt_BR/Debootstrap" rel="noopener noreferrer"&gt;debootstrap&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Daí a minha definição de &lt;em&gt;correto&lt;/em&gt; para esse método, pois eu não estou usando nenhuma receita pronta como base, construindo tudo meticulosamente da forma que preciso.&lt;/p&gt;

&lt;p&gt;A vantagem principal nesse método, é que eu consigo criar um sistema extremamente enxuto, usando somente o que é fundamental pro funcionamento do sistema, sem desperdício de recursos.&lt;/p&gt;

&lt;p&gt;Porém, é um método muito mais &lt;em&gt;trabalhoso&lt;/em&gt; e que demanda mais tempo e dedicação ao processo de desenvolvimento, mas o resultado é sempre muito satisfatório.&lt;/p&gt;

&lt;p&gt;Seguindo com o processo de desenvolvimento, antigamente eu colocava todos os comandos no mesmos script e rodava de uma vez só, porém, era muito desgastante ficar rolando páginas e mais páginas pra encontrar grupos de comandos que eu precisava verificar durante o processo, em busca de erros e correções, então resolvi adotar a prática de segmentar os comandos em scripts separados, isso me ajudou muito na produtividade e poupa muito tempo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fovu9vrwp8zo5tt4rtuh0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fovu9vrwp8zo5tt4rtuh0.png" alt="shellscript" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após criar os scripts com todos os comandos necessários pra compilação da imagem de instalação, eu crio um arquivo &lt;a href="https://pt.wikipedia.org/wiki/YAML" rel="noopener noreferrer"&gt;YAML&lt;/a&gt; para compilar a imagem através do &lt;a href="https://github.com/features/actions" rel="noopener noreferrer"&gt;GitHub Actions&lt;/a&gt;, pois é um dos poucos &lt;a href="https://www.redhat.com/pt-br/topics/devops/what-is-ci-cd" rel="noopener noreferrer"&gt;CI/CD&lt;/a&gt; que suportam esse tipo de compilação, já que a grande maioria é baseada em &lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; e não possuem as permissões necessárias para acessar os pontos de montagem que o ambiente &lt;code&gt;chroot&lt;/code&gt; precisa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlvdbwbgnz03u8gqd9vh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlvdbwbgnz03u8gqd9vh.png" alt="github actions" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Outro &lt;em&gt;CI/CD&lt;/em&gt; que suporta esse tipo de compilação é o &lt;a href="https://azure.microsoft.com/pt-br/services/devops/pipelines/" rel="noopener noreferrer"&gt;Azure Pipelines&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftpe3i0jk0zhqksu0z16c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftpe3i0jk0zhqksu0z16c.jpg" alt="azure pipelines" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após a compilação, é possível baixar a imagem através de vários serviços diferentes, que você pode setar no &lt;em&gt;YAML&lt;/em&gt;, atualmente, eu uso o &lt;a href="https://drive.google.com" rel="noopener noreferrer"&gt;Google Drive&lt;/a&gt;, por ter um processo de upload mais simples e maior disponibilidade de servidores ao redor do mundo, o que agiliza o processo de download.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgme88fqhocbpopmj0s39.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgme88fqhocbpopmj0s39.jpg" alt="google-drive" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enfim, acho que consegui explicar o meu método, caso você tenha interesse em mais detalhes, eu tenho um curso disponível, basta clicar no &lt;strong&gt;chapéu&lt;/strong&gt; no meu site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rauldipeas.now.sh" rel="noopener noreferrer"&gt;https://rauldipeas.now.sh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Até a próxima postagem!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>distro</category>
      <category>dekuve</category>
      <category>xfce</category>
    </item>
    <item>
      <title>Desenvolvendo o Dekuve - Organização do projeto</title>
      <dc:creator>Raul Dipeas</dc:creator>
      <pubDate>Sat, 27 Feb 2021 03:53:22 +0000</pubDate>
      <link>https://dev.to/rauldipeas/desenvolvendo-o-dekuve-organizacao-do-projeto-2oj0</link>
      <guid>https://dev.to/rauldipeas/desenvolvendo-o-dekuve-organizacao-do-projeto-2oj0</guid>
      <description>&lt;p&gt;A primeira e mais importante etapa no desenvolvimento de qualquer tipo de projeto, sem dúvidas é definir o objetivo e organizar as etapas necessárias pra isso.&lt;/p&gt;

&lt;p&gt;No caso do &lt;strong&gt;Dekuve&lt;/strong&gt;, o primeiro passo foi criar um projeto no &lt;a href="https://quire.io" rel="noopener noreferrer"&gt;Quire&lt;/a&gt;, para poder adicionar todas as tarefas, desde configurações visuais, lista de programas incluídos, artwork, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvr0rrfvark9miyl30ln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvr0rrfvark9miyl30ln.png" alt="quire" width="800" height="674"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com base nisso, já foi possível ter uma visão mais clara de como partir pra próxima etapa, que é a criação de repositórios contendo os &lt;em&gt;assets&lt;/em&gt; necessários.&lt;/p&gt;

&lt;p&gt;Vamos usar o &lt;strong&gt;GitHub&lt;/strong&gt; pra hospedar os repositórios com os &lt;em&gt;assets&lt;/em&gt;, que no caso são os temas GTK, temas de ícones, arquivos de configuração, artwork, etc.&lt;/p&gt;

&lt;p&gt;Cada um em seu respectivo repositório dentro de uma &lt;br&gt;
&lt;a href="//github.com/dekuve"&gt;&lt;em&gt;organização&lt;/em&gt;&lt;/a&gt;, dessa forma eu posso criar os scripts de &lt;em&gt;build&lt;/em&gt; da ISO com comandos que vão baixar esse conteúdo durante o processo de compilação.&lt;/p&gt;

&lt;p&gt;Outro motivo de termos escolhido o &lt;strong&gt;GitHub&lt;/strong&gt;, é porque a imagem de instalação vai ser compilada no &lt;a href="https://github.com/features/actions" rel="noopener noreferrer"&gt;&lt;em&gt;GitHub Actions&lt;/em&gt;&lt;/a&gt;, um dos pouquíssimos &lt;em&gt;CI/CD&lt;/em&gt; que suporta esse tipo de compilação, visto que outros &lt;em&gt;CI/CD&lt;/em&gt; que usam &lt;em&gt;Docker&lt;/em&gt; ou soluções similares, costumam não ter as permissões de usuário necessárias para uma compilação desse tipo, ao menos, dos que eu conheço(que não são poucos, já testei muitos mesmo, mais de 50, eu acho) só o &lt;em&gt;GitHub Actions&lt;/em&gt; e o &lt;em&gt;Azure Pipelines&lt;/em&gt; são compatíveis, ou soluções com agentes auto-hospedados.&lt;/p&gt;

&lt;p&gt;Feita essa organização de tarefas e arquivos, estamos prontos pra começar a &lt;em&gt;codar&lt;/em&gt;, vou usar o &lt;a href="https://vscodium.com" rel="noopener noreferrer"&gt;&lt;em&gt;VSCodium&lt;/em&gt;&lt;/a&gt; nessa etapa do processo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frlgcm5jq7bifqnzidi5i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frlgcm5jq7bifqnzidi5i.png" alt="vscodium" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Até a próxima postagem!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>distro</category>
      <category>dekuve</category>
      <category>xfce</category>
    </item>
    <item>
      <title>Desenvolvendo o Dekuve - Apresentação</title>
      <dc:creator>Raul Dipeas</dc:creator>
      <pubDate>Sat, 27 Feb 2021 03:30:09 +0000</pubDate>
      <link>https://dev.to/rauldipeas/desenvolvendo-o-dekuve-20o3</link>
      <guid>https://dev.to/rauldipeas/desenvolvendo-o-dekuve-20o3</guid>
      <description>&lt;p&gt;Olá, essa é a minha primeira postagem aqui no Dev.to, pretendo documentar todo o processo de desenvolvimento do &lt;a href="https://dekuve.top" rel="noopener noreferrer"&gt;Dekuve&lt;/a&gt;, uma distribuição Linux ucraniana, idealizada pelo meu amigo &lt;a href="https://twitter.com/denys33kulbii" rel="noopener noreferrer"&gt;Denys&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpeeshe1usnmhl126v9fi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpeeshe1usnmhl126v9fi.jpg" alt="dekuve" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O meu objetivo é compartilhar ideias relacionadas ao desenvolvimento de uma distribuição Linux, baseadas no meu conhecimento e na minha experiência nesse seguimento, já que é algo que eu faço há alguns anos.&lt;/p&gt;

&lt;p&gt;Comecei no &lt;em&gt;StudioLinuxBR&lt;/em&gt;, meu primeiro projeto de distribuição Linux, feito de forma bem amadora, mas foi um projeto que me trouxe bastante experiência e conhecimento, posteriormente eu mantive outros projetos, como o &lt;em&gt;AviX&lt;/em&gt; e depois o &lt;em&gt;RaDiX&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Todos esses projetos eram focados em criação de conteúdo multimídia, mas durante o período que eu mantive o &lt;em&gt;RaDiX&lt;/em&gt;, percebi que projetos desse tipo não faziam muito sentido, visto que, normalmente, se usa o computador pra vários tipos de aplicação, não só a criação de conteúdo multimídia.&lt;/p&gt;

&lt;p&gt;Posteriormente, iniciei outro projeto, chamado &lt;em&gt;Unity XP&lt;/em&gt;, mas esse não tinha grandes pretenções, o objetivo era só mostrar que ainda era possível usar o Unity no Ubuntu de forma satisfatória.&lt;/p&gt;

&lt;p&gt;Também sou responsável pelo desenvolvimento de outros projetos como o &lt;a href="https://mestresemlinux.com.br/wp/tigeros/" rel="noopener noreferrer"&gt;&lt;em&gt;Tiger OS&lt;/em&gt;&lt;/a&gt;, do Daigo e o &lt;em&gt;Excelência&lt;/em&gt; do &lt;a href="https://twitter.com/LinuxUniverseBR" rel="noopener noreferrer"&gt;Nathan&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Meu último projeto lançado é o &lt;a href="https://madlinux.now.sh" rel="noopener noreferrer"&gt;&lt;strong&gt;MAD Linux&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmadlinux.now.sh%2Fimages%2Fdesktop.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmadlinux.now.sh%2Fimages%2Fdesktop.png" alt="madlinux" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essa foi apenas uma introdução a meu respeito, pra poder explicar as minhas motivações e a minha experiência nesse seguimento.&lt;/p&gt;

&lt;p&gt;Nas próximas postagens, vou falar sobre todas as etapas do processo, desde o conceito até o arquivo final de instalação da distro.&lt;/p&gt;

&lt;p&gt;Conto com o feedback da comunidade, até a próxima postagem!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>distro</category>
      <category>dekuve</category>
      <category>xfce</category>
    </item>
  </channel>
</rss>
