quarta-feira, 1 de novembro de 2017

youtube-dl: erro "ImportError: No module named 'encodings'"

youtube-dl versão 2017.10.29 para windows 64 bits

Saída do comando (youtube-dl.exe --version > youtube-dl_erro.txt 2>&1):

= = = Início de transcrição = = =
Fatal Python error: Py_Initialize: unable to load the file system codec
ImportError: No module named 'encodings'
Current thread 0x00000b84 (most recent call first):


= = = Fim de transcrição = = =


Solução: instalar (copiar para) no diretório ("pasta") C:\Windows

Obs.: se instalar (copiar para) o diretório ("pasta") <C:\Windows\System32>, ocorrerá o erro acima mencionado.

sábado, 6 de maio de 2017

Plugin Adobe Flash para Chromium (via PPAPI)



Jaboatão dos Guararapes, PE, sábado, 06 de maio de 2017.

= = = = = = = = = =
= = = = = = = = = =


Assunto: Plugin Adobe Flash para Chromium (via PPAPI)


= = = = = = = = = =
= = = = = = = = = =


Glossário:

PPAPI: Pepper Plugin Application Programming Interface

NPAPI: Netscape Plugin Application Programming Interface


= = = = = = = = = =
= = = = = = = = = =


Definições:

Pepper API é uma cross-platform, API de código fonte aberto para a criação de módulos Native Client (NaCl) <https://en.wikipedia.org/wiki/Google_Native_Client#Pepper>.

Native Client é uma "caixa de areia" (sandbox) para a execução de código compilado C e C++ dentro do navegador eficiente e seguramente, independente do sistema operacional do usuário <https://developer.chrome.com/native-client>.

Pepper plug-in API
A API de plug-in Pepper (PPAPI), chamada Pepper por conveniência, é uma API C/C++ de código fonte aberto, cross-platform para plug-ins de navegador de rede <https://developer.chrome.com/native-client/overview>.


= = = = = = = = = =
= = = = = = = = = =


Endereço de download:

https://get.adobe.com/br/flashplayer/otherversions/


= = = = = = = = = =
= = = = = = = = = =


Diretório de instalação:

/usr/lib/pepperflashplugin-nonfree/


= = = = = = = = = =
= = = = = = = = = =


Instalando:

cd /usr/lib/pepperflashplugin-nonfree/
tar xf /home/jamenson/Downloads/flash_player_ppapi_linux.x86_64.tar.gz
chown -vR 0:0 .


= = = = = = = = = =
= = = = = = = = = =


quarta-feira, 15 de março de 2017

Exibição de caracteres no Firefox

Esta postagem se refere à versão 37.0 do navegador Mozilla Firefox.

Observe a seguinte imagem:

Percebeu como os caracteres estão sendo mal exibidos?
Pois bem. Eu mandei imprimir a página que se vê na imagem na impressora virtual do Firefox 37.0, executado no ambiente Linux From Scratch 7.10 - systemd edition, para gerar um arquivo PDF. Deu nisso.

Então, eu executei a mesma versão do navegador (37.0) em um Debian GNU/Linux 8 e mandei imprimir a mesmíssima página. Perceba como os caracteres foram exibidos corretamente:

Porque a diferença?

Resposta: no primeiro Sistema Operacional (um Linux From Scratch 7.10 - systemd) estava faltando instalar os arquivos de caracteres de fontes Microsoft True Type <http://downloads.sourceforge.net/corefonts>. Por outro lado, no Sistema Operacional Debian GNU/Linux 8, os arquivos Microsoft True Type já estavam instalados.

Após a instalação dos mencionados arquivos de fontes de caracteres, tudo funcionou conforme o esperado.

É isso.

Jamenson Ferreira Espindula de Almeida Melo
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png

Impressão digital da chave:
234D 1914 4224 7C53 BD13  6855 2AE0 25C0 08A8 6180

segunda-feira, 27 de fevereiro de 2017

Navegador Mozilla Firefox - postagem II

Problema ao executar a aplicação (instalação nova do Sistema Operacional Linux From Scratch 7.10 - systemd edition):


XPCOMGlueLoad error for file /usr/local/bin/firefox/libxul.so:
libasound.so.2: cannot open shared object file: No such file or directory
Couldn't load XPCOM.


Solução: instalar o pacote "ALSA Library" (alsa-lib-1.1.2). Esse pacote
instala a biblioteca [/usr/lib/libasound.so.2.0.0] exigida pelo Firefox.



====================
====================



Após a instalação do pacote "ALSA Library", o problema agora é este:


XPCOMGlueLoad error for file /usr/local/bin/firefox/libxul.so:
libdbus-glib-1.so.2: cannot open shared object file: No such file or directory
Couldn't load XPCOM.


Solução: instalar o pacote "D-Bus GLib" (dbus-glib-0.106). Esse pacote
instala a biblioteca [/usr/lib/libdbus-glib-1.so.2.3.3] exigida pelo
Firefox.



====================
====================


Após a instalação do pacote "D-Bus GLib", o problema agora é este:


XPCOMGlueLoad error for file /usr/local/bin/firefox/libxul.so:
libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
Couldn't load XPCOM.

Solução: instalar o pacote "GTK+-2.24.30". Esse pacote instala a
biblioteca [/usr/lib/libgtk-x11-2.0.so.0.2400.30] exigida pelo Firefox.

Após isso, o Firefox funcionou normalmente.



Jamenson Ferreira Espindula de Almeida Melo
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png

Impressão digital da chave:
234D 1914 4224 7C53 BD13  6855 2AE0 25C0 08A8 6180

quarta-feira, 15 de fevereiro de 2017

RPCBind

Assunto: daemon RPCBind (pacote rpcbind-0.2.3)


= = = = = = = = = =
= = = = = = = = = =

Sistema Operacional: GNU + Linux From Scratch - versão 7.10 (systemd)


Saída do comando <systemctl status rpcbind.service>:


● rpcbind.service - RPC Bind Service
   Loaded: loaded (/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
   Active: failed (Result: start-limit-hit) since dom 2017-02-12 10:53:19 BRT; 9min ago
  Process: 2057 ExecStart=/sbin/rpcbind -w (code=exited, status=1/FAILURE)

fev 12 10:53:19 lfs-comp02 systemd[1]: Starting RPC Bind Service...
fev 12 10:53:19 lfs-comp02 rpcbind[2057]: usage: rpcbind [-adhilswf]
fev 12 10:53:19 lfs-comp02 systemd[1]: rpcbind.service: Control process exited, code=exited status=1

fev 12 10:53:19 lfs-comp02 systemd[1]: Failed to start RPC Bind Service.
fev 12 10:53:19 lfs-comp02 systemd[1]: rpcbind.service: Unit entered failed state.
fev 12 10:53:19 lfs-comp02 systemd[1]: rpcbind.service: Failed with result 'exit-code'.
fev 12 10:53:19 lfs-comp02 systemd[1]: rpcbind.service: Start request repeated too quickly.
fev 12 10:53:19 lfs-comp02 systemd[1]: Failed to start RPC Bind Service.
fev 12 10:53:19 lfs-comp02 systemd[1]: rpcbind.service: Failed with result 'start-limit-hit'.


= = = = = = = = = =
= = = = = = = = = =


Obs.: o daemon foi recompilado acrescentando a opção <--enable-warmstarts> nas opções de configuração. Eis todas as opções de  configuração aplicadas:

./configure --prefix=/usr  \
            --bindir=/sbin \
            --with-rpcuser=rpc \
   --enable-warmstarts


Obs.: o daemon foi executado manualmente com o comando <systemctl start rpcbind.service>.


Obs.: o daemon foi habilitado para execução automática; comando <systemctl enable rpcbind.service>.


= = = = = = = = = =
= = = = = = = = = =


Saída do comando <systemctl status rpcbind.service>:


● rpcbind.service - RPC Bind Service
   Loaded: loaded (/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
   Active: active (running) since seg 2017-02-13 05:16:24 BRT; 9min ago
 Main PID: 2136 (rpcbind)
   CGroup: /system.slice/rpcbind.service
           └─2136 /sbin/rpcbind -w

fev 13 05:16:23 lfs-comp02 systemd[1]: Starting RPC Bind Service...
fev 13 05:16:24 lfs-comp02 systemd[1]: Started RPC Bind Service.


Obs.: transcrito da página de manual "rpcbind(8)":

-w      Cause rpcbind to do a "warm start" by read a state file when rpcbind starts up. The state file is created when rpcbind terminates.

Tradução livre: -w: Faz com que rpcbind faça um "início quente" pela leitura de um arquivo de estado quando rpcbind inicializa. O arquivo de estado é criado quando rpcbind finaliza [sua execução].


Entretanto, o binário foi configurado inicialmente sem habilitar a opção "warm start" nas opções de configuração <--enable-warmstarts>. Conclui-se que o livro Beyond Linux From Scratch (BLFS) - versão 7.10 (systemd) contém um defeito de falta de informação.


= = = = = = = = = =
= = = = = = = = = =


Saída do comando <systemctl status rpcbind.socket>:


● rpcbind.socket - RPC Bind Server Activation Socket
   Loaded: loaded (/lib/systemd/system/rpcbind.socket; disabled; vendor preset: enabled)
   Active: inactive (dead)
   Listen: /var/run/rpcbind.sock (Stream)


Saída do comando <systemctl status rpcbind.service>:


● rpcbind.service - RPC Bind Service
   Loaded: loaded (/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
   Active: inactive (dead)


Obs.: as duas Unidades systemd acima referidas estão ligadas intimamente. Observou-se que, quando se solicita para habilitar e (ou) desabilitar o "rpcbind.service", é o rpcbind.socket" que é afetado, removendo ou criando a ligação simbólica. Talvez essa seja a explicação para que a palavra "indirect" sempre apareça na consulta à situação de "rpcbind.service". Por sua vez, na Unidade "rpcbind.socket" apareçe a palavra "disabled" ou "enabled", como é de se esperar.


Obs.: observou-se que, ao se iniciar a Unidade "rpcbind.service", a Unidade "rpcbind.socket" também é inicializada. Porém o contrário não ocorreu, ou seja, inicializar a Unidade "rpcbind.socket" não inicializa a Unidade "rpcbind.service". Isso demonstra claramente a íntima ligação entre as duas Unidades.


Obs.: observou-se que, ao se parar a Unidade "rpcbind.socket", a Unidade "rpcbind.service" também é parada. Porém, o contrário não ocorreu, ou seja, parar a Unidade "rpcbind.service" não para a Unidade "rpcbind.socket", e ainda é lançada uma mensagem de alerta:

Warning: Stopping rpcbind.service, but it can still be activated by:
  rpcbind.socket


= = = = = = = = = =
= = = = = = = = = =


Saída do comando </sbin/rpcinfo>:

rpcinfo: can't contact rpcbind: RPC: Remote system error - Connection refused

Obs.: isso ocorreu pois o Servidor RPC ("rpcbind.socket") estava fora de execução. Para que haja retorno de informação, é condição necessária que, pelo menos, o Servidor RPC ("rpcbind.socket") esteja em execução.

Jamenson Ferreira Espindula de Almeida Melo
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png

Impressão digital da chave:
234D 1914 4224 7C53 BD13  6855 2AE0 25C0 08A8 6180

sábado, 4 de fevereiro de 2017

Sincronizador de arquivos rclone



Jaboatão dos Guararapes, PE, sábado, 04 de fevereiro de 2017.


= = = = = = = = = =
= = = = = = = = = =


Assunto: aplicativo rclone


= = = = = = = = = =
= = = = = = = = = =


O que é: programa em linha de comando para sincronização de arquivos e diretórios para (e de) os seguintes armazenamentos na nuvem:

Google Drive
Amazon S3
Openstack Swift / Rackspace cloud files / Memset Memstore
Dropbox
Google Cloud Storage
Amazon Drive
Microsoft One Drive
Hubic
Backblaze B2
Yandex Disk
The local filesystem

Alguns diferenciais (existem outros): promete sincronizar com o Microsoft OneDrive; promete preservar as marcas temporais dos arquivos sincronizados. Se o aplicativo cumpre a promessa, eu não sei informar, pois ainda não o testei. Eu fiquei sabendo do aplicativo rclone na data de ontem (03 de fevereiro de 2017) e estou no início dos estudos para tentar compreender como funciona.


Fonte: Rclone. Disponível em: <http://rclone.org/>. Acesso em: 04 fev. 2017. 14:17:50.


= = = = = = = = = =
= = = = = = = = = =


Existem dois modos de se instalar o rclone na máquina: o modo mais trabalhoso e o modo menos trabalhoso. O modo menos trabalhoso é baixando e instalando binários compilados previamente em <http://rclone.org/downloads/>. O modo mais trabalhoso é construindo o binário a partir do código fonte.

O aplicativo rclone foi desenvolvido utilizando uma linguagem de programação chamada "Go". Para se conseguir compilar o código fonte do aplicativo rclone, deve-se construir um "front end" do compilador Gnu C Compiler (GCC) chamado "gccgo". O gccgo é o compilador que conseguirá interpretar e compilar o código fonte do aplicativo rclone, código esse escrito na linguagem de programação "Go". No script de configuração para a instalação do do GCC, deve-se passar a seguinte opção:


--enable-languages=c,c++,go


Fonte: The Go Programming Language. Disponível em: <https://golang.org/doc/install/gccgo>. Acesso em: 04 fev. 2017. 14:25:36.


Jamenson Ferreira Espindula de Almeida Melo
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png

Impressão digital da chave:
234D 1914 4224 7C53 BD13  6855 2AE0 25C0 08A8 6180

quarta-feira, 18 de janeiro de 2017

Histórico de comandos do GNU Bash

Desafio: como executar um comando sem armazenar o registro desse comando executado no arquivo registrador de comandos executados?

Contexto: É perigoso deixar no histórico registrador de comandos um comando do tipo "rm -rfv /usr/share/doc/libgpg-error-1.24/", quando tal comando foi executado pelo usuário root. Se repetido por acidente, esse comando poderia prejudicar o sistema, apagando acidentalmente um diretório e (ou) um arquivo de sistema importante. Existem dois métodos para se conseguir o efeito desejado:

1º método:

Incluir a seguinte linha no arquivo </etc/profile>:

HISTCONTROL=ignorespace
ou
HISTCONTROL=ignoreboth

 
2º método:

Incluir a seguinte linha no arquivo </etc/profile>:

HISTIGNORE=[ ]*
ou
HISTIGNORE=[ ]*:&

Feitas essas configurações, executar um logoff e um logon e executar o comando desejado sempre iniciado pelo caractere espaço;

quinta-feira, 12 de janeiro de 2017

Renomear vários arquivos

Problema: renomear vários arquivos, cujos nomes não tem um padrão de 
sequência de caracteres.


for i in *.txt; do mv -v $i `echo $i | cut -d. -f1`.make-install.log.txt; done

Obs.: comando proposto por Giovanni Kenpachi <https://www.vivaolinux.com.br/~giovannikenpachi> no fórum Viva o Linux <https://www.vivaolinux.com.br/topico/Comandos/Renomear-varios-arquivos-simultaneamente-1>.

“bigreqsproto-1.1.2-make.log.txt” -> “bigreqsproto-1.make-install.log.txt”
“compositeproto-0.4.2-make.log.txt” -> “compositeproto-0.make-install.log.txt”
“damageproto-1.2.1-make.log.txt” -> “damageproto-1.make-install.log.txt”
“dmxproto-2.3.1-make.log.txt” -> “dmxproto-2.make-install.log.txt”
“dri2proto-2.8-make.log.txt” -> “dri2proto-2.make-install.log.txt”
“dri3proto-1.0-make.log.txt” -> “dri3proto-1.make-install.log.txt”
“fixesproto-5.0-make.log.txt” -> “fixesproto-5.make-install.log.txt”
“fontsproto-2.1.3-make.log.txt” -> “fontsproto-2.make-install.log.txt”
“glproto-1.4.17-make.log.txt” -> “glproto-1.make-install.log.txt”
“inputproto-2.3.2-make.log.txt” -> “inputproto-2.make-install.log.txt”
“kbproto-1.0.7-make.log.txt” -> “kbproto-1.make-install.log.txt”
“presentproto-1.0-make.log.txt” -> “presentproto-1.make-install.log.txt”
“randrproto-1.5.0-make.log.txt” -> “randrproto-1.make-install.log.txt”
“recordproto-1.14.2-make.log.txt” -> “recordproto-1.make-install.log.txt”
“renderproto-0.11.1-make.log.txt” -> “renderproto-0.make-install.log.txt”
“resourceproto-1.2.0-make.log.txt” -> “resourceproto-1.make-install.log.txt”
“scrnsaverproto-1.2.2-make.log.txt” -> “scrnsaverproto-1.make-install.log.txt”
“videoproto-2.3.3-make.log.txt” -> “videoproto-2.make-install.log.txt”
“xcmiscproto-1.2.2-make.log.txt” -> “xcmiscproto-1.make-install.log.txt”
“xextproto-7.3.0-make.log.txt” -> “xextproto-7.make-install.log.txt”
“xf86bigfontproto-1.2.0-make.log.txt” -> “xf86bigfontproto-1.make-install.log.txt”
“xf86dgaproto-2.1-make.log.txt” -> “xf86dgaproto-2.make-install.log.txt”
“xf86driproto-2.1.1-make.log.txt” -> “xf86driproto-2.make-install.log.txt”
“xf86vidmodeproto-2.3.1-make.log.txt” -> “xf86vidmodeproto-2.make-install.log.txt”
“xineramaproto-1.2.1-make.log.txt” -> “xineramaproto-1.make-install.log.txt”
“xproto-7.0.29-make.log.txt” -> “xproto-7.make-install.log.txt”


Atenção:

Saída do comando <echo 'for i in *.txt; do mv -v $i `echo $i | cut -d. -f1`.make-install.log.txt; done'>:
(( Com aspas simples antes da palavra "for" e após a palavra "done" ))

for i in *.txt; do mv -v $i `echo $i | cut -d. -f1`.make-install.log.txt; done



Saída do comando <echo "for i in *.txt; do mv -v $i `echo $i | cut -d. -f1`.make-install.log.txt; done">:
(( Com aspas duplas antes da palavra "for" e após a palavra "done" ))

for i in *.txt; do mv -v xproto-7.0.29-make.log.txt xproto-7.make-install.log.txt; done

Note que foi exibido o resultado após a execução do comando "for".

quarta-feira, 11 de janeiro de 2017

Expansão de Comandos no bash

Expansão de Comandos no bash


Presumindo que comando mount mais recente foi:

mount -v -t vfat /dev/sdb1 /media/usb0/

Utilizar o quinto parâmetro passado para o mount (o parâmetro </media/usb0/>) em um
comando umount:

umount -v !mount:5

Comando resultante da expansão:

umount -v /media/usb0

terça-feira, 10 de janeiro de 2017

ssh

Jaboatão dos Guararapes, PE, terça-feira, 10 de janeiro de 2017.

==============================
==============================


Assunto: ssh


==============================
==============================


Saída do comando <ssh jamenson@lfs-comp02> no computador asus:

Permission denied (publickey).

Motivo: a chave pública do usuário requisitante da conexão não foi
encontrada no arquivo [authorized_keys] do usuário.


==============================
==============================

Procedimento de resolução 1:

1 - No computador remoto, deve-se permitir o acesso via "autenticação por senha"

1.1 - No arquivo </etc/ssh/ssd_config>, configurar a opção "PasswordAuthentication" para "yes"

1.2 - Reiniciar o servidor (systemctl restart sshd.service).

2 - No computador local, deve-se copiar a chave pública gerada localmente para o computador remoto

2.1 - Executar o comando <ssh-copy-id -i /home/jamenson/.ssh/id_rsa.pub jamenson@lfs-comp02:>


Procedimento de resolução 2:

1 - Exportar a chave pública do usuário requisitante da conexão:

cat /home/jamenson/.ssh/id_rsa.pub > authorized_keys

2 - Copiar o arquivo [authorized_keys] para o diretório $HOME do usuário
no computador remoto.


==============================
==============================


Problema: ao executar o aplicativo como usuário "jamenson", o computador
"multilaser" (debian 8) respondeu o seguinte:

ssh: connect to host 192.168.0.20 port 22: Connection refused

Obs.: instalar o Servidor SSH, pois não vem instalado por padrão no
Debian GNU/Linux 8:

# apt-get install openssh-server


==============================
==============================