1.2 Lição 1
Certificação: |
Linux Essentials |
---|---|
Versão: |
1.6 |
Tópico: |
1 A Comunidade Linux e uma carreira em open source |
Objetivo: |
1.2 Os principais aplicativos de código aberto |
Lição: |
1 de 1 |
Introdução
Um aplicativo é um programa de computador cuja função não está diretamente ligada ao funcionamento interno da máquina, mas sim a tarefas realizadas pelo usuário. As distribuições Linux oferecem muitas opções de aplicativos para executar uma variedade de tarefas, como programas de escritório, navegadores web, programas de reprodução e edição de mídia etc. Frequentemente existe mais de um aplicativo ou ferramenta para executar um determinado trabalho. Cabe ao usuário escolher o aplicativo que melhor se adapta às suas necessidades.
Pacotes de software
Quase todas as distribuições Linux vêm com um conjunto pré-instalado de aplicativos por padrão. Além desses aplicativos, as distribuições têm um repositório de pacotes com uma vasta coleção de programas disponíveis para instalação através de seu gerenciador de pacotes. Embora as diversas distribuições ofereçam mais ou menos os mesmos aplicativos, há vários sistemas diferentes de gerenciamento de pacotes de acordo com as distribuições. Por exemplo, Debian, Ubuntu e Linux Mint usam as ferramentas dpkg
, apt-get
e apt
para instalar pacotes de software chamados geralmente de pacotes DEB. Já distribuições como Red Hat, Fedora e CentOS usam os comandos rpm
, yum
e dnf
, que por sua vez instalam pacotes RPM. Como o empacotamento de aplicativos é diferente para cada família de distribuições, é fundamental instalar pacotes do repositório correto de cada distribuição. O usuário final normalmente não precisa se preocupar com esses detalhes, já que o gerenciador de pacotes da distribuição escolhe os pacotes corretos, as dependências solicitadas e as atualizações futuras. As dependências são os pacotes auxiliares de que os programas necessitam. Por exemplo, se uma biblioteca oferece funções para gerenciar imagens no formato JPEG que são usadas por diversos programas, ela estará muito provavelmente em um pacote próprio, do qual dependerão todos os aplicativos que usarem a biblioteca em questão.
Os comandos dpkg
e rpm
operam em arquivos empacotados individuais. Na prática, quase todas as tarefas de gerenciamento de pacotes são executadas pelos comandos apt-get
ou apt
em sistemas que usam pacotes DEB, ou por yum
ou dnf
em sistemas que usam pacotes RPM. Esses comandos funcionam com catálogos de pacotes, podem baixar novos pacotes e suas dependências e verificar se existem novas versões dos pacotes instalados.
Instalação do pacote
Suponha que você tenha ouvido falar de um comando chamado figlet
, que mostra um texto ampliado no terminal, e quer experimentá-lo. No entanto, aparece a seguinte mensagem após a execução do comando figlet
:
$ figlet -bash: figlet: command not found
Isso provavelmente indica que o pacote não está instalado em seu sistema. Se sua distribuição funciona com pacotes DEB, você pode procurar os repositórios adequados usando apt-cache search package_name
ou apt search package_name
. O comando apt-cache
é usado para procurar por pacotes e listar informações sobre os pacotes disponíveis. O seguinte comando procura por quaisquer ocorrências do termo “figlet” nos nomes e descrições dos pacotes:
$ apt-cache search figlet figlet - Make large character ASCII banners out of ordinary text
A pesquisa identificou um pacote chamado figlet que corresponde ao comando ausente. A instalação e a remoção de um pacote requerem permissões especiais concedidas somente ao administrador do sistema: o usuário chamado root
. Em sistemas desktop, usuários comuns podem instalar ou remover pacotes prefixando o comando sudo
aos comandos de instalação/remoção. Esse comando exige sua senha para ser executado. Para pacotes DEB, a instalação é realizada com o comando apt-get install package_name
ou apt install package_name
:s
$ sudo apt-get install figlet Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: figlet 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Nesse momento, o pacote será baixado e instalado no sistema. Quaisquer dependências de que o pacote eventualmente precise também serão baixadas e instaladas:
Need to get 184 kB of archives. After this operation, 741 kB of additional disk space will be used. Get:1 http://archive.raspbian.org/raspbian stretch/main armhf figlet armhf 2.2.5-2 [184 kB] Fetched 184 kB in 0s (213 kB/s) Selecting previously unselected package figlet. (Reading database ... 115701 files and directories currently installed.) Preparing to unpack .../figlet_2.2.5-2_armhf.deb ... Unpacking figlet (2.2.5-2) ... Setting up figlet (2.2.5-2) ... update-alternatives: using /usr/bin/figlet-figlet to provide /usr/bin/figlet (figlet) in auto mode Processing triggers for man-db (2.7.6.1-2) ...
Após o download ser concluído, todos os arquivos são copiados para os locais apropriados, qualquer configuração adicional é executada e o comando se torna disponível:
$ figlet Awesome! _ _ / \__ _____ ___ ___ _ __ ___ ___| | / _ \ \ /\ / / _ \/ __|/ _ \| '_ ` _ \ / _ \ | / ___ \ V V / __/\__ \ (_) | | | | | | __/_| /_/ \_\_/\_/ \___||___/\___/|_| |_| |_|\___(_)
Nas distribuições baseadas em pacotes RPM, as pesquisas são feitas usando yum search package_name
ou dnf search package_name
. Digamos que você queira exibir um texto de uma forma mais irreverente, seguido por um desenho de vaquinha, mas não sabe bem qual pacote é capaz de executar essa tarefa. Como no caso dos pacotes DEB, os comandos de busca RPM aceitam termos descritivos:
$ yum search speaking cow Last metadata expiration check: 1:30:49 ago on Tue 23 Apr 2019 11:02:33 PM -03. ==================== Name & Summary Matched: speaking, cow ==================== cowsay.noarch : Configurable speaking/thinking cow
Após encontrar um pacote adequado no repositório, ele pode ser instalado com yum install package_name
ou dnf install package_name
:
$ sudo yum install cowsay Last metadata expiration check: 2:41:02 ago on Tue 23 Apr 2019 11:02:33 PM -03. Dependencies resolved. ============================================================================== Package Arch Version Repository Size ============================================================================== Installing: cowsay noarch 3.04-10.fc28 fedora 46 k Transaction Summary ============================================================================== Install 1 Package Total download size: 46 k Installed size: 76 k Is this ok [y/N]: y
Mais uma vez, o pacote desejado e todas as suas possíveis dependências serão baixados e instalados:
Downloading Packages: cowsay-3.04-10.fc28.noarch.rpm 490 kB/s | 46 kB 00:00 ============================================================================== Total 53 kB/s | 46 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : cowsay-3.04-10.fc28.noarch 1/1 Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1 Verifying : cowsay-3.04-10.fc28.noarch 1/1 Installed: cowsay.noarch 3.04-10.fc28 Complete!
O comando cowsay
faz exatamente o que seu nome implica:
$ cowsay "Brought to you by yum" _______________________ < Brought to you by yum > ----------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Embora possam parecer inúteis, os comandos figlet
e cowsay
oferecem uma maneira de chamar a atenção de outros usuários para informações relevantes.
Remoção de Pacotes
Os mesmos comandos usados para instalar pacotes são usados para removê-los. Todos os comandos aceitam a palavra-chave remove
para desinstalar um pacote instalado: apt-get remove package_name
ou apt remove package_name
para pacotes DEB e yum remove package_name
ou dnf remove package_name
para pacotes RPM. O comando sudo
também é necessário para executar a remoção. Por exemplo, para remover o pacote figlet previamente instalado em uma distribuição baseada em DEB:
$ sudo apt-get remove figlet Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: figlet 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 741 kB disk space will be freed. Do you want to continue? [Y/n] Y
Depois de confirmar a operação, o pacote é removido do sistema:
(Reading database ... 115775 files and directories currently installed.) Removing figlet (2.2.5-2) ... Processing triggers for man-db (2.7.6.1-2) ...
Nos sistemas baseados em RPM, o procedimento é semelhante. Por exemplo, para remover o pacote cowsay instalado anteriormente em uma distribuição baseada em RPM:
$ sudo yum remove cowsay Dependencies resolved. ================================================================================== Package Arch Version Repository Size ================================================================================== Removing: cowsay noarch 3.04-10.fc28 @fedora 76 k Transaction Summary ================================================================================== Remove 1 Package Freed space: 76 k Is this ok [y/N]: y
Da mesma forma, uma confirmação é solicitada e o pacote é apagado do sistema:
Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Erasing : cowsay-3.04-10.fc28.noarch 1/1 Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1 Verifying : cowsay-3.04-10.fc28.noarch 1/1 Removed: cowsay.noarch 3.04-10.fc28 Complete!
Os arquivos de configuração dos pacotes removidos são mantidos no sistema e podem ser utilizados novamente se o pacote for reinstalado no futuro.
Aplicativos de escritório
Os aplicativos de escritório são utilizados para editar arquivos de texto, apresentações, planilhas e outros formatos comumente utilizados num ambiente de escritório. Esses aplicativos são normalmente organizados em coleções chamadas office suites, ou suíte de escritório.
Durante muito tempo, a suíte de escritório mais usada no Linux foi o OpenOffice.org. O OpenOffice.org era uma versão open source da StarOffice suite, produzida pela Sun Microsystems. Alguns anos depois, a Sun foi adquirida pela Oracle Corporation, que por sua vez transferiu o projeto para a Apache Foundation, e o OpenOffice.org foi rebatizado como Apache OpenOffice. Nesse meio tempo, outra suíte de escritório baseada no mesmo código fonte foi lançada pela Document Foundation, que a batizou de LibreOffice.
Os dois projetos têm as mesmas características básicas e são compatíveis com os formatos de documentos do Microsoft Office. No entanto, o formato de documento preferido é o Open Document Format, um formato de arquivo totalmente aberto e padrão ISO. A utilização de arquivos ODF garante que os documentos possam ser transferidos entre sistemas operacionais e aplicativos de diferentes fornecedores, como o Microsoft Office. Os principais aplicativos oferecidos pelo OpenOffice/LibreOffice são:
- Writer
-
Editor de texto
- Calc
-
Planilhas
- Impress
-
Apresentações
- Draw
-
Desenho vetorial
- Math
-
Fórmulas matemáticas
- Base
-
Banco de dados
Tanto o LibreOffice quanto o Apache OpenOffice são softwares de código aberto, mas o LibreOffice é licenciado sob a LGPLv3 e o Apache OpenOffice traz a licença Apache License 2.0. A distinção de licenciamento implica que o LibreOffice pode incorporar melhorias feitas pelo Apache OpenOffice, mas o Apache OpenOffice não pode incorporar melhorias feitas pelo LibreOffice. Essa, junto com uma comunidade mais ativa de desenvolvedores, é a razão pela qual a maioria das distribuições adota o LibreOffice como seu conjunto padrão de aplicativos de escritório.
Navegadores web
Para a maioria dos usuários, o principal objetivo de um computador é fornecer acesso à Internet. Hoje em dia, as páginas web podem funcionar como um aplicativo completo, com a vantagem de serem acessíveis de qualquer lugar, sem a necessidade de instalar software extra. Isso faz do navegador web o aplicativo mais importante do sistema operacional, pelo menos para o usuário médio.
Tip
|
Uma das melhores fontes para aprender mais sobre desenvolvimento web é o MDN Web Docs, disponível em https://developer.mozilla.org/. Mantido pela Mozilla, o site está repleto de tutoriais para iniciantes e materiais de referência sobre as mais modernas tecnologias web. |
Os principais navegadores web no ambiente Linux são o Google Chrome e o Mozilla Firefox. O Chrome é um navegador web mantido pelo Google, mas baseado no navegador de código aberto Chromium, que pode ser instalado através do gerenciador de pacotes da distribuição e é totalmente compatível com o Chrome. Mantido pela Mozilla, uma organização sem fins lucrativos, o Firefox é um navegador cujas origens estão ligadas ao Netscape, o primeiro navegador web popular a adotar o modelo open source. A Fundação Mozilla está profundamente envolvida com o desenvolvimento dos padrões abertos subjacentes à web moderna.
A Mozilla também desenvolve outros aplicativos, como o cliente de email Thunderbird. Muitos usuários optam por usar webmail em vez de um programa de email dedicado, mas um cliente como o Thunderbird oferece funcionalidades extras e integra-se melhor com outras aplicações no desktop.
Multimídia
Comparado com os aplicativos web disponíveis, os aplicativos para desktop ainda são a melhor opção para a criação de conteúdo multimídia. As atividades relacionadas a multimídia, como a renderização de vídeo, frequentemente exigem quantidades elevadas de recursos do sistema, que podem ser mais bem administrados por um aplicativo desktop local. Listamos abaixo alguns dos aplicativos multimídia mais populares do ambiente Linux e seus usos.
- Blender
-
Um renderizador 3D para criar animações. O Blender também pode ser usado para exportar objetos 3D para serem impressos em uma impressora 3D.
- GIMP
-
Um editor de imagens completo, que pode ser comparado com o Adobe Photoshop, mas com seus próprios conceitos e ferramentas para trabalhar com imagens. O GIMP pode ser usado para criar, editar e salvar a maioria dos arquivos bitmap, como JPEG, PNG, GIF, TIFF e muitos outros.
- Inkscape
-
Um editor de gráficos vetoriais, semelhante ao Corel Draw ou ao Adobe Illustrator. O formato padrão do Inkscape é SVG, um padrão aberto para gráficos vetoriais. Os arquivos SVG podem ser abertos por qualquer navegador web e, devido à sua natureza de gráfico vetorial, podem ser usados em layouts flexíveis de páginas web.
- Audacity
-
Um editor de áudio. O Audacity pode ser usado para filtrar, aplicar efeitos e converter entre diferentes formatos de áudio, como MP3, WAV, OGG, FLAC etc.
- ImageMagick
-
O ImageMagick é uma ferramenta de linha de comando usada para converter e editar a maioria dos tipos de arquivos de imagem. Também pode ser usado para criar documentos PDF a partir de arquivos de imagem e vice-versa.
Também existem muitos aplicativos dedicados à reprodução de mídia. O programa mais popular para a reprodução de vídeo é o VLC, mas alguns usuários preferem outras alternativas, como o smplayer. A reprodução de música local também traz muitas opções, como o Audacious, o Banshee e o Amarok, que também podem gerenciar uma coleção local de arquivos de áudio.
Programas de servidor
Quando um navegador web carrega uma página de um site, na verdade ele se conecta a um computador remoto e pede uma informação específica. Nesse cenário, o computador que executa o navegador web é chamado de cliente, e o computador remoto, servidor.
O computador servidor, que pode ser um computador desktop comum ou hardware especializado, necessita de um programa específico para gerenciar cada tipo de informação que irá fornecer. No que tange ao envio de páginas web, a maioria dos servidores ao redor do mundo lança mão de programas de servidor de código aberto. Esse programa de servidor em particular é chamado de HTTP server (HTTP significa Hyper Text Transfer Protocol, ou Protocolo de Transferência de Hipertexto), e os mais populares são Apache, Nginx e lighttpd.
Mesmo as páginas web mais simples podem ter muitas solicitações, que vão desde arquivos comuns — o que se chama conteúdo estático — até o conteúdo dinâmico renderizado a partir de diversas fontes. O papel de um servidor HTTP é coletar e enviar todos os dados solicitados de volta para o navegador, que então organiza o conteúdo conforme definido pelo documento HTML recebido (HTML significa Hyper Text Markup Language, ou Linguagem de Marcação de Hipertexto) e outros arquivos anexos. Portanto, a renderização de uma página web envolve operações executadas no lado do servidor e operações executadas no lado do cliente. Ambos os lados podem usar scripts personalizados para realizar tarefas específicas. No lado do servidor HTTP, a linguagem de scripts PHP é comumente usada. Já no lado do cliente usa-se o JavaScript.
Os programas de servidor podem fornecer todo tipo de informação. Não é incomum que um programa de servidor solicite informações fornecidas por outros programas servidores. Esse é o caso quando um servidor HTTP pede informações fornecidas por um servidor de banco de dados.
Por exemplo, quando uma página dinâmica é solicitada, o servidor HTTP normalmente consulta um banco de dados para coletar todas as informações necessárias e envia o conteúdo dinâmico de volta para o cliente. De maneira semelhante, quando um usuário se inscreve em um site, o servidor HTTP reúne os dados enviados pelo cliente e os armazena em um banco de dados.
Um banco de dados é um conjunto organizado de informações. Um servidor de banco de dados armazena conteúdos de maneira formatada, tornando possível ler, escrever e vincular grandes quantidades de dados com alta velocidade. Os servidores de banco de dados de código aberto são usados em muitas aplicações, não apenas na Internet. Mesmo os aplicativos locais podem armazenar dados, conectando-se a um servidor de banco de dados local. O tipo mais comum de banco de dados é o banco de dados relacional, no qual os dados são organizados em tabelas predefinidas. Os bancos de dados relacionais de código aberto mais populares são MariaDB (derivado do MySQL) e PostgreSQL.
Compartilhamento de dados
Em redes locais, como as encontradas em escritórios e casas, é desejável que os computadores não somente possam acessar a Internet, como também sejam capazes de se comunicar uns com os outros. Às vezes um computador age como um servidor, outras vezes o mesmo computador age como um cliente, o que é necessário quando se quer acessar arquivos em outro computador na rede — por exemplo, acessar um arquivo armazenado em um computador desktop a partir de um dispositivo portátil — sem o incômodo de copiá-lo para um drive USB ou algo do tipo.
Entre máquinas com Linux, usa-se frequentemente o NFS (Network File System, ou Sistema de Arquivos de Rede). O protocolo NFS é a forma padrão de compartilhar sistemas de arquivos em redes equipadas apenas com máquinas Unix/Linux. Com o NFS, um computador pode compartilhar um ou mais diretórios com computadores específicos na rede, permitindo que eles leiam e escrevam arquivos nesses diretórios. O NFS pode ser usado inclusive para compartilhar a árvore de diretórios inteira de um sistema operacional com clientes que podem assim inicializar a partir dela. Esses computadores, chamados thin clients ou "clientes magros", são geralmente usados em grandes redes para evitar a manutenção de cada sistema operacional individual em uma rede.
Se existem outros tipos de sistemas operacionais ligados à rede, recomenda-se a utilização de um protocolo de compartilhamento de dados que possa ser compreendido por todos eles. O Samba cumpre esse requisito. O Samba implementa um protocolo de compartilhamento de arquivos na rede originalmente pensado para o sistema operacional Windows, mas hoje é compatível com todos os principais sistemas operacionais. Com o Samba, os computadores na rede local não só podem compartilhar arquivos, como também impressoras.
Em algumas redes locais, a autorização dada pelo login em uma estação de trabalho é concedida por um servidor central, chamado controlador de domínio, que gerencia o acesso a vários recursos locais e remotos. O controlador de domínio é um serviço fornecido pelo Active Directory da Microsoft. As estações de trabalho Linux podem ser associadas a um controlador de domínio usando Samba ou um subsistema de autenticação chamado SSSD. A partir da versão 4, o Samba também pode funcionar como controlador de domínio em redes heterogêneas.
Se o objetivo é implementar uma solução de computação em nuvem capaz de fornecer diversos métodos de compartilhamento de dados baseados na web, duas alternativas devem ser consideradas: ownCloud e Nextcloud. Os dois projetos são muito semelhantes porque o Nextcloud é um derivado do ownCloud, o que não é incomum entre projetos open source. Esses derivados são geralmente chamados de fork (bifurcação ou ramificação). Ambos oferecem os mesmos recursos básicos: compartilhamento e sincronização de arquivos, espaços de trabalho colaborativos, calendário, contatos e email, tudo através de interfaces para desktop, celular e web. O Nextcloud oferece também conferência em áudio e vídeo, ao passo que o ownCloud concentra-se mais em compartilhamento de arquivos e integração com software de terceiros. Há muito mais recursos disponíveis na forma de plugins que podem ser ativados no momento em que forem necessários.
Tanto o ownCloud quanto o Nextcloud oferecem uma versão paga com recursos extras e suporte estendido. O que os torna diferentes de outras soluções comerciais é a possibilidade de instalar o NextCloud ou o ownCloud em um servidor privado, gratuitamente, evitando assim que se mantenham dados confidenciais em um servidor desconhecido. Como todos os serviços dependem de comunicação HTTP e são escritos em PHP, a instalação deve ser realizada em um servidor web previamente configurado, como o Apache. Se você estiver pensando em instalar o ownCloud ou o Nextcloud em seu próprio servidor, não se esqueça de habilitar também o HTTPS para criptografar todas as conexões à sua nuvem.
Administração de redes
A comunicação entre computadores só é possível se a rede estiver funcionando corretamente. Normalmente, a configuração da rede é feita por um conjunto de programas executados no roteador, responsáveis por configurar e verificar a disponibilidade da rede. Para isso, dois serviços de rede básicos são usados: DHCP (Dynamic Host Configuration Protocol, ou Protocolo de Configuração Dinâmica de Host) e DNS (Domain Name System, ou Sistema de Nomes de Domínio).
O DHCP é responsável por atribuir um endereço IP ao host quando um cabo de rede está conectado ou quando o dispositivo entra em uma rede sem fio. Quando nos conectamos à Internet, o servidor DHCP do provedor de acesso fornece um endereço IP ao dispositivo solicitante. Um servidor DHCP é muito útil também em redes locais, para fornecer endereços IP automaticamente a todos os dispositivos conectados. Se o DHCP não estiver configurado ou se não estiver funcionando corretamente, será necessário configurar manualmente o endereço IP de cada dispositivo conectado à rede. Não é prático definir manualmente os endereços IP em redes grandes ou mesmo em redes pequenas, e por essa razão a maioria dos roteadores de rede vem com um servidor DHCP pré-configurado por padrão.
O endereço IP é necessário para possibilitar a comunicação com um outro dispositivo em uma rede IP, mas nomes de domínio como www.lpi.org
são muito mais fáceis de lembrar do que um número IP como 203.0.113.165
. O nome de domínio sozinho, entretanto, não basta para estabelecer a comunicação através da rede. Assim, o nome de domínio precisa ser traduzido em forma de endereço IP por um servidor DNS. O endereço IP do servidor DNS é fornecido pelo servidor DHCP do provedor de acesso e é usado por todos os sistemas conectados para traduzir nomes de domínio como endereços IP.
As configurações do DHCP e do DNS podem ser modificadas através da interface web do roteador. Por exemplo, é possível restringir a atribuição de IP apenas a dispositivos conhecidos ou associar um endereço IP fixo a máquinas específicas. Também é possível alterar o servidor DNS padrão fornecido pelo provedor de acesso. Alguns servidores DNS de terceiros, como os fornecidos pelo Google ou OpenDNS, podem ter um tempo de resposta mais rápido e funcionalidades adicionais.
Linguagens de programação
Todos os programas de computador (programas de cliente e servidor, aplicativos para desktop e o próprio sistema operacional) são feitos a partir de uma ou mais linguagens de programação. Os programas podem ser um único arquivo ou um sistema complexo de centenas de arquivos, que o sistema operacional trata como uma seqüência de instruções a ser interpretada e executada pelo processador e outros dispositivos.
Existem inúmeras linguagens de programação para diferentes finalidades, e os sistemas Linux fornecem muitas delas. Como o software de código aberto também inclui as fontes dos programas, os sistemas Linux oferecem aos desenvolvedores condições perfeitas para entender, modificar ou criar software de acordo com suas próprias necessidades.
Cada programa começa como um arquivo de texto, chamado código fonte. Esse código fonte é escrito em uma linguagem mais ou menos amigável que descreve o que o programa está fazendo. Um processador de computador não pode executar diretamente esse código. Assim, nas linguagens compiladas, o código fonte é convertido em um arquivo binário, que pode por sua vez ser executado pelo computador. Um programa chamado compilador é responsável por fazer a conversão do código fonte para a forma executável. Como o arquivo binário é compilado para um modelo específico de processador, o programa pode ter de ser recompilado para rodar em outro tipo de computador.
Nas linguagens interpretadas, o programa não precisa ser compilado previamente. Em vez disso, um interpretador lê o código fonte e executa suas instruções toda vez que o programa é executado. Isso torna o desenvolvimento mais fácil e rápido, mas, ao mesmo tempo, os programas interpretados tendem a ser mais lentos do que os programas compilados.
Eis algumas das linguagens de programação mais populares:
- JavaScript
-
O JavaScript é uma linguagem de programação usada principalmente em páginas web. No início, os aplicativos em JavaScript eram muito simples, como rotinas de validação de formulários. Hoje em dia, o JavaScript é considerado uma linguagem de primeira classe e é usado para criar aplicações muito complexas não só na web, mas também em servidores e dispositivos móveis.
- C
-
A linguagem de programação C está intimamente relacionada com os sistemas operacionais, particularmente o Unix, mas é usada para escrever qualquer tipo de programa para quase qualquer tipo de dispositivo. As grandes vantagens do C são a flexibilidade e a velocidade. O mesmo código fonte escrito em C pode ser compilado para rodar em diferentes plataformas e sistemas operacionais, com pouca ou nenhuma modificação. Após ser compilado, porém, o programa só roda no sistema alvo.
- Java
-
O aspecto principal do Java é que os programas escritos nessa linguagem são portáteis, o que significa que o mesmo programa pode ser executado em diferentes sistemas operacionais. Apesar do nome, o Java não tem relação com o JavaScript.
- Perl
-
O Perl é uma linguagem de programação mais usada para processar conteúdo de texto. Tem uma forte ênfase em expressões regulares, o que faz do Perl uma linguagem adequada para filtragem e análise de texto.
- Shell
-
O shell, particularmente o Bash shell, não é apenas uma linguagem de programação, mas uma interface interativa para executar outros programas. Os programas em Shell, conhecidos como shell scripts, podem automatizar tarefas complexas ou repetitivas no ambiente de linha de comando.
- Python
-
O Python é uma linguagem de programação muito popular entre estudantes e profissionais não diretamente envolvidos com ciência da computação. Apesar de ter recursos avançados, o Python é uma boa maneira de começar a aprender programação devido à sua facilidade de uso.
- PHP
-
O PHP é mais usado como uma linguagem de script do lado do servidor para gerar conteúdo para a web. A maioria das páginas HTML online não são arquivos estáticos, mas conteúdo dinâmico gerado pelo servidor a partir de várias fontes, como bancos de dados. Os programas em PHP — às vezes chamados apenas de páginas PHP ou scripts PHP — são freqüentemente usados para gerar esse tipo de conteúdo. O termo LAMP vem da combinação de um sistema operacional Linux, um servidor Apache HTTP, um banco de dados MySQL (ou MariaDB) e programação em PHP. Os servidores LAMP são uma solução muito popular para rodar servidores web. Além do PHP, todas as linguagens de programação descritas anteriormente podem ser usadas para implementar esse tipo de aplicação.
C e Java são linguagens compiladas. A fim de ser executado pelo sistema, o código fonte escrito em C é convertido em código de máquina binário, enquanto o código fonte em Java é convertido em bytecode executado em um ambiente de software especial chamado Java Virtual Machine. JavaScript, Perl, Shell script, Python e PHP são linguagens interpretadas, também chamadas de linguagens de script.
Exercícios Guiados
-
Para cada um dos seguintes comandos, identifique se ele está associado ao sistema de empacotamento Debian ou ao sistema de empacotamento Red Hat:
dpkg
rpm
apt-get
yum
dnf
-
Qual comando poderia ser usado para instalar o Blender no Ubuntu? Após a instalação, como o programa pode ser executado?
-
Qual aplicativo da suíte LibreOffice pode ser usado para trabalhar com planilhas eletrônicas?
-
Qual navegador web de código aberto foi usado como base para o desenvolvimento do Google Chrome?
-
O SVG é um padrão aberto para gráficos vetoriais. Qual é o aplicativo mais popular para editar arquivos SVG em sistemas Linux?
-
Para cada um dos seguintes formatos de arquivo, escreva o nome de um aplicativo capaz de abrir e editar o arquivo correspondente:
png
doc
xls
ppt
wav
-
Que pacote de software permite o compartilhamento de arquivos entre máquinas Linux e Windows através da rede local?
Exercícios Exploratórios
-
Você sabe que os arquivos de configuração são preservados mesmo que o pacote associado seja removido do sistema. Como seria possível remover automaticamente o pacote chamado cups e seus arquivos de configuração de um sistema baseado em DEB?
-
Suponha que você tem muitos arquivos de imagem TIFF e quer convertê-los para JPEG. Qual pacote de software poderia ser usado para converter esses arquivos diretamente na linha de comando?
-
Qual pacote de software você precisa instalar para poder abrir documentos do Microsoft Word enviados a você por um usuário do Windows?
-
Todos os anos, o site linuxquestions.org promove uma pesquisa sobre os aplicativos Linux mais populares. Visite https://www.linuxquestions.org/questions/2018-linuxquestions-org-members-choice-awards-128/ e descubra quais são os aplicativos de desktop mais populares entre os utilizadores experientes de Linux.
Sumário
Nesta lição, você aprendeu:
-
Os sistemas de gerenciamento de pacotes usados nas principais distribuições Linux
-
Aplicativos de código aberto capazes de editar formatos de arquivos populares
-
Os programas de servidor subjacentes a muitos serviços importantes de Internet e rede local
-
Linguagens de programação comuns e seus usos
Respostas aos Exercícios Guiados
-
Para cada um dos seguintes comandos, identifique se ele está associado ao sistema de empacotamento _Debian ou ao sistema de empacotamento _Red Hat:
dpkg
sistema de empacotamento Debian
rpm
sistema de empacotamento Red Hat
apt-get
sistema de empacotamento Debian
yum
sistema de empacotamento Red Hat
dnf
sistema de empacotamento Red Hat
-
Qual comando poderia ser usado para instalar o Blender no Ubuntu? Após a instalação, como o programa pode ser executado?
O comando
apt-get install blender
. O nome do pacote deve ser especificado em minúsculas. O programa pode ser executado diretamente do terminal com o comandoblender
ou escolhendo-o no menu de aplicativos. -
Qual aplicativo da suíte LibreOffice pode ser usado para trabalhar com planilhas eletrônicas?
Calc
-
Qual navegador web de código aberto foi usado como base para o desenvolvimento do Google Chrome?
Chromium
-
O SVG é um padrão aberto para gráficos vetoriais. Qual é o aplicativo mais popular para editar arquivos SVG em sistemas Linux?
Inkscape
-
Para cada um dos seguintes formatos de arquivo, escreva o nome de um aplicativo capaz de abrir e editar o arquivo correspondente:
png
Gimp
doc
LibreOffice Writer
xls
LibreOffice Calc
ppt
LibreOffice Impress
wav
Audacity
-
Que pacote de software permite o compartilhamento de arquivos entre máquinas Linux e Windows através da rede local?
Samba
Respostas aos Exercícios Exploratórios
-
Você sabe que os arquivos de configuração são preservados mesmo que o pacote associado seja removido do sistema. Como seria possível remover automaticamente o pacote chamado cups e seus arquivos de configuração de um sistema baseado em DEB?
apt-get purge cups
-
Suponha que você tem muitos arquivos de imagem TIFF e quer convertê-los para JPEG. Qual pacote de software poderia ser usado para converter esses arquivos diretamente na linha de comando?
ImageMagick
-
Qual pacote de software você precisa instalar para poder abrir documentos do Microsoft Word enviados a você por um usuário do Windows?
LibreOffice ou OpenOffice
-
Todos os anos, o site linuxquestions.org promove uma pesquisa sobre os aplicativos Linux mais populares. Visite https://www.linuxquestions.org/questions/2018-linuxquestions-org-members-choice-awards-128/ e descubra quais são os aplicativos de desktop mais populares entre os utilizadores experientes de Linux.
Navegador: Firefox. Cliente de email: Thunderbird. Reprodução de mídia: VLC. Editor de imagens rasterizadas: GIMP.