Instalar última versión de LibreOffice no Debian Jessie

Comecei por actualizar as fontes de software cos Backports

# nano /etc/apt/sources.list

Hai varios sitios que os fornecen, elixín este:

# Backports
deb http://ftp.es.debian.org/debian jessie-backports main contrib non-free
deb-src http://ftp.es.debian.org/debian jessie-backports main contrib non-free

Gardei as modificacións (Ctrl+O Enter Ctrl+X) e actualicei a base de datos.

# apt-get update

Logo instalei a última versión de LibreOffice desde os “Backports”:

# apt-get -t jessie-backports install libreoffice

Finalmente e co obxectivo de eliminar paquetes obsoletos executei:

# apt-get upgrade

Feito!

Nalgún sitio vin que recomendaban volver a comentar os backports e facer novamente un apt-get update.

Fonte: linuxgnublog

Como montar disco vdi (do virtualbox)

Deixo aquí esta receita.

Lista de discos duros do VirtualBox:

$ VBoxManage list hdds

Da orde de arriba obtemos o UUID:

$ VBoxManage clonehd 01dd352c-3e15-4887-9cb7-dadf0b22f64e imaxe.img -format RAW

Monta a imaxe xerada:

# cd m/media
# mkdir imaxe
# mount -o loop,offset=32256 imaxe.img /media/imaxe

Fonte: espaciolinux.com

Pasar argumentos no Bind con wxPython

Sobre isto atopei esta resposta en stackoverflow a cal me pareceu moi elegante.

A primeira proposta é facer uso de lambda, que emvolba a función e pase outro argumento non especifico de WX:

button = wx.Button(self, 10, "Default Button", (20, 20))
        self.Bind(wx.EVT_BUTTON, lambda event: self.on_click(event, 'algun_valor'), button)

def on_click(self, event, somearg):
	 pass

No caso de que sexa algo moi recorrente fai a proposta dunha función de propósito xeral:

class foo(whateverwxobject):
    def better_bind(self, type, instance, handler, *args, **kwargs):
        self.Bind(type, lambda event: handler(event, *args, **kwargs), instance)

    def __init__(self):
        self.better_bind(wx.EVT_BUTTON, b, self.on_click, 'algun_valor')

Instalar Keepassx 2.0 beta1 no Debian Jessie

Despois de ter instalado o Keepassx 2.0 alfa no Debian Wheezy, agora tocou instalar a seguinte versión do Keepassx na seguinte versión do Debian, a Jessie.

Os pasos que seguín foron: descarguei o ficheiro fonte do Keeepassx, descomprimín e fun ó cartafol descomprimido desde a consola, aí:

$ mkdir build
$ sudo apt-get install cmake build-essential qt4-qmake libgcrypt11-dev zlib1g-dev libqt4-dev checkinstall
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=DEBUG -DWITH_GUI_TESTS=ON
$ sudo make
$ sudo checkinstall

Neste ultimo punto doume o erro: Version Number Does Not Start With Digit

Para elo lancei novamente o

$ sudo checkinstall

e ó principio da a opción de mudar a descrición da versión, aí puxen «2.0.0-beta1» e xa compilou.

Establecer update alternatives a machete

Cando por exemplo ó configurar a alternativa para o navegador sae o seguinte erro:

$ update-alternatives --set x-www-browser /usr/firefox
update-alternatives: error: alternative /usr/firefox for x-www-browser not registered, not setting.

Isto pode ser debido a que o firefox está instalado a man en /opt. Unha solución para establecelo a man é facelo directamente en /etc/alternatives/, algo así:

$ sudo rm /etc/alternatives/x-www-browser
$ sudo ln -s /usr/firefox /etc/alternatives/x-www-browser

Fonte: shallowsky

Alternativas a Crunchbang#!

Unha vez que morreu o proxecto Crunchbang busquei alternativas. De momento as máis intersantes das que atopei foron estas:

BunsenLabs que é á que se pode acceder desde a web de crunchbang.

Nesta páxina da wikipedia que curiosamente non fala nada de BlusenLabs nomean a CrunchBang++

E hai máis, en desdelinux.net atopei a proposta de Semplice, que é unha distribución tamén baseada en Debian, algo que me gustou é que teñen versións para 32 e 64 bits e o máis interesante é que teñen versión baseada en debian estable e outra en inestable (sid).

Neste artigo de entornosgnulinux falan de TweakLinux como outro sucesor de CrunchBang.

Agora toca ir probando a ver con cal me atopo máis a gusto.

Configurar sftpd con usuarios engailoados

Os servizo ssh permite a conexión cun servidor remoto e xunto con isto permite conectar co mesmo a traveso do protocolo sftp, algo similar ó FTP que funciona de xeito máis seguro. Moitos clientes FTP (como Filezilla) incorporan a posibilidade de conectar mediante o sftp.

Ó instalar o servidor ssh no servidor, este xa queda dispoñible para ser empregado cos nosos usuario a traveso dun cliente sftp. Isto ten un problema, e é que o cliente sftp pode navegar por todo o sistema de ficheiros expoñendo o contido de todo o servidor. Como isto non é nada bo comento como facer para que isto non pase.

Unha solución a isto é engaiolar (chroot) os usuarios para que non poidan navegar polo sistema de directorios do servidor. Isto permite que estes usuarios poida subir ficheiros nun cartafol espedificado para o seu usuario.

Como lograr isto?

Primeiro asegureime que existe en /etc/shells o ficheiro nologin.

# less /etc/shells

Como non existía o shell nologin na lista, engadín ó final a seguinte liña:

# echo "/usr/sbin/nologin" >> /etc/shells # Usuarios Debian/ubuntu 10.4
# echo "/sbin/nologin" >> /etc/shells  # Usuarios Ubuntu 12.4

Logo creei un grupo novo. Os usuarios deste grupo terán de xeito automático restrinxido o acceso ó sistema de directorios tendo acceso só ó seu directorio engaiolado. Non poden saír e perderse mais aló do seu directorio raíz.

# groupadd hostusers

Creei o usuario que vai estar engaiolado. Este usuario ten a particularidade de que non poderá acceder a un terminal e só poderá acceder mediante un cliente sftp ós seus directorios engaiolados.

# useradd -g hostusers -d /home -s /usr/sbin/nologin testuser  # usuarios Debian/ubuntu 10.4
# useradd -g hostusers -d /home -s /sbin/nologin testuser  #usuarios Ubuntu 12.4
# passwd testuser  #para establicer a clave

Verifiquei que o usuario foi creado.

# grep testuser /etc/passwd

Configurei o servizo engaiolado. Para elo modifiquei o ficheiro sshd_config que é onde se configura o servizo do servidor ssh (neste ficheiro ssh é onde se establece como queremos que funcione), neste caso mudei o servidor que ven predeterminado por internal-sftpd.

# nano /etc/ssh/sshd_config

Comentei a liña:

#Subsystem sftp /usr/lib/openssh/sftp-server

Ó final do ficheiro engadín a seguinte liña nova (para que empregue o sftp interno) É importante que isto se engada ó final para evitar o erro «Directive 'UsePAM' is not allowed within a Match block.».

Subsystem sftp internal-sftp

E de seguido engadín o seguinte texto que fará que os usuarios do grupo hostusers estean engaiolados cando acceden mediante sftpd. É importante que isto vaia despois da liña «Subsystem sftp internal-sftp» .

Match Group hostusers  # Só se aplica ós suarios do grupo hostusers
ChrootDirectory /hosting/%u  # Os usuarios están engaiolados nun cartafo co seu nome de usuario
ForceCommand internal-sftp  # Forzase ós usuario a usar o sftp interno

Logo creei o directorio da gaiola.

# mkdir /hosting

Creei os directorios para o usuario testuser.

# mkdir /hosting/testuser
# mkdir /hosting/testuser/home
# mkdir /hosting/testuser/home/public_html

O cartafol /hosting/testuser será como / para o usuario testuser. Este usuario non poderá ver nada por riba do seu directorio raíz. O directorio public_html queda aí para poder usalo con Apache e orientar os dominios virtuais a ese directorio. De xeito que cando esta configurado Apache, o que cada usuario poña aí publicarase en internet.

Cambiei os propietarios. Como os directorios que creei foron co usuario root, cambielles o propietario para que o usuario testuser poida usalos.

# chown testuser:hostusers /hosting/testuser/home
# chown testuser:hostusers /hosting/testuser/home/public_html

Asegúrome de que os permisos do cartafol do usuario son 755. Isto é moi importante xa que se o grupo ten permiso de escritura non vai.

# chmod 755 /hosting/testuser

Comprobei os propietarios.

ls -ld /hosting/testuser/home

Reiniciei o servizo ssh para que os cambios que fixen teñan efecto.

# service ssh restart

Logo accedín con un cliente sftpd (por exemplo o Filezilla).

No caso de que queira engadir máis usuarios engaiolados tería que repetir para cada novo usuario as seguintes accións:

  • Creación do usuario
  • Creación dos directorios
  • Aplicación dos permisos dos cartafoles para ese usuario
  • Reiniciar o servizo ssh.

Con estas instrucións permito que os usuarios suban ficheiros ó servidor e non poidan comprometer a visibilidade dos contidos nel. No meu caso foi para un ubuntu 10.4.

Deixo aquí este código «crea_usuario.sh» que automatiza o proceso de creación de novos usuarios engaiolados.

#!/bin/bash

echo "Usuario:" $1
echo "Clave:" $2

useradd -g hostusers -d /home -s /usr/sbin/nologin $1
#passwd -f $1 $2
echo -e "$2\n$2" | passwd $1

mkdir /hosting/$1
mkdir /hosting/$1/home

chown $1:hostusers /hosting/$1/home

chmod 755 /hosting/$1
chmod 755 /hosting/$1/home

service ssh restart

Supoñendo que o usuario a crear fose usuario2 e a clave r2k7GWcs lanzariase así:

# ./crea_usuario.sh usuario2 r2k7GWcs

Fontes: nireleku - ciberciti.

Agachemanto e pesa de man

Estes son os termos que propón un idioma preciso para o que en español se coñece como sentadilla e mancuerna.

Erro ao instalar cx_Freeze 4..3.4 no debian Jessie

Ao tratar de instalar o cx_freeze 4.3.4. no Debian Jessie mediante a orde:

$ sudo pip install cx_Freeze

atopeime co erro:

/home/thomas/Code/cx_freeze/source/bases/Console.c:36: undefined reference to `PyErr_Print'

A solución atopeina na páxina de erros do cx_freeze en concreto é a que suxire Tim Süberkrüb.

For python 2.7:

sudo apt-get install python-dev

sudo apt-get install libssl-dev

Open setup.py and change the line

if not vars.get("Py_ENABLE_SHARED", 0):

to

If True:

python setup.py build
sudo python setup.py install

Crear paquete executable con cx_freeze

Até o de agora viña usando py2exe para a xeración de executables. Tiña gañas de probar unha alternativa que fose multiplataforma como é o caso de cxFreeze.

Neste caso o sistema operativo é un windows, onde instalei a versión cx_Freeze-4.3.3.win32-py2.7 pero resulta.

Probeino co proxecto auto_licenzas, e daba o erro:

File "C:\Python\virtualenvproject\lib\site-packages\cx_freeze-4.3.4-py2.7-win32.egg\c x_Freeze\freezer.py", line 270, in _GetDefaultBinPathExcludes import cx_Freeze.util ImportError: DLL load failed: The specified module could not be found.

(ImportError: DLL load failed: No se puede encontrar el m¾dulo especificado.)

Despois de buscar un cacho atopei a solución aquí.

Basicamente ben a dicir que é un erro da versión 4.3.4 e que instalando a versión 4.3.3 se soluciona.

E así foi!! Así de simple!!

Amosando 41 a 50 de 328