2012. július 25., szerda

apt-get update/upgrade és insserv hiba

Apt-get telepítés közben valamilyen hiba történt, ekkor találkoztam a következő esettel. Telepítés közben valami tönkre ment, és onnantól frissítésnél, telepítésnél az apt-get közölte egy csomó hibaüzenet kíséretében, hogy nem hajlandó dolgozni.
Ilyesmi hibaüzeneteket kaptam:
insserv: warning: script 'smfpd' missing LSB tags and overrides
insserv: Starting smfpd depends on rc.local and therefore on system facility `$all' which can not be true!
Rövid olvasgatás után találtam egy hasonló esetet, kiderült, hogy az init.d szkripteknél az egyiknél hiányoznak az LSB mezők. Ezekben a mezőkben megadhatóak az init szkripteknél futás idejű függőségek, melyek segítségével könnyebben megállapítható egy helyes szkript lefutási sorrend bootolásnál, és fel is gyorsítható a bootolás több szkript párhuzamos futtatásával. Azonban egy optimális sorrend eldöntéséhez szükségesek ezek a függőségi információk. Először a Debian Lenny változat kiadásakor jelentek meg, Squeeze-ben pedig már alapértelmezett beállítás volt a függőség alapú boot sorrend meghatározás.
A hiba megoldásához csak a hiányzó függőségeket kell pótolnunk:

Nyissuk meg a hibás init scriptet (az error-ban az smfpd szkriptben hiányolt valamit, ez amúgy a Samsung nyomtató driver):

sudo gedit /etc/init.d/smfpd
Majd a megnyíló Gedit-ben a kommentek után helyezzük el a következő LSB mezőket:
### BEGIN INIT INFO
# Provides: smfpd # Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Samsung Unified Linux Driver LPT Support daemon
# Description: Enable support for LPT port service provided by Samsung Unified Linux Driver package.
### END INIT INFO

Mentsük el a változásokat, és már kész is! :)

Kiegészítés: A hibát okozó csomagra, amúgy nem sok szükség van induláskor, mert LPT nyomtatók esetén (párhuzamos porton keresztül csatlakozó nyomtató) kapcsolja be a TCP porton keresztüli elérést. Nem sokan használnak manapság már ilyen eszközöket, szóval a hiba kijavítása után nyugodtan kikapcsolhatjuk. Ehhez ajánlom az rcconf nevű programot, mellyel kikapcsolhatjuk milyen service-ek induljanak a rendszer elindulásakor:
sudo apt-get install rcconf 
majd:
sudo rcconf 

Több információ az LSBInitScriptekről

2012. július 18., szerda

Android képernyő megosztás PC-n

Az egyetemen gyakran látom, hogy oktatók odamennek és az iPadjüket csatlakoztatják a kivetítőre egy átalakítóval, és már megy is az előadás. Ez alapján jutott eszembe, hogy ezt talán egy Android-os telefonnal is megtehetném. Az első megoldás talán egy MHL-HDMI vagy VGA átalakító lenne, sajnos ezek azonban elég drágák.
Találtam azonban egy másik lehetőséget, amelynél rövid teszt után arra jutottam, hogy bár prezentáció előadásra nem alkalmas a módszer, azonban máskor hasznos lehet. A telefon képernyőjét USB kábelen keresztül is megoszthatjuk. Ilyenkor nem iktatódik ki a "rendszerből" a számítógép, és a kép is akadozni fog, mégis mondjuk egy Androidos alkalmazás bemutatására hasznos eszköz lehet.

A, Először is telepítsük fel a Java Development Kit-et (JDK):
sudo apt-get install sun-java6-jdk
B, Szükségünk lesz az Android SDK-ra is:
     1. Töltsük le a legfrissebb SDK-t ITT.
     2. Csomagoljuk ki:
tar -xvzf android-sdk_r20-linux.tgz
     3. Lépjünk be a tools/ könyvtárba:
cd android-sdk-linux/tools/
     4.  Indítsuk el az SDK Manager-t, és telepísük fel az Android SDK Platform-tools-t
     5. Állítsuk be a rendszert, a telefon felismeréséhez:
sudo echo "SUBSYSTEM==\"usb\", ATTR{idVendor}==\"04e8\", MODE=\"0666\", GROUP=\"plugdev\"" > /etc/udev/rules.d/51-android.rules
sudo chmod a+r /etc/udev/rules.d/51-android.rules
 idVendor-hoz a telefon gyártójának USB Vendor ID-jét írjuk, innen megtudhatjuk.
     6. Másoljuk át tools könyvtárból platform-tools-ba az ADB és teszteljük, hogy minden tökéletesen működik-e?
cp ../platform-tools/adb ./
Csatlakoztassuk a telefont az USB portra, majd:
adb devices
Ha kilistázza a telefonunkat, az SDK-t helyesen telepítettük fel.

C, A telefonon kapcsoljuk be a Beállítások/Alkalmazások/Fejlesztés menüpont alatt az USB-hibakeresés opciót.

D, A képernyőkép megosztására két programot is találtam, mindkettőt Java-ban írták, szóval Linux-on kívűl Win-en, Mac-en is használhatóak.

Az első az Android Screen Cast nevű, melyet akár böngészőból is indíthatunk, vagy letöltés után:
javaws androidscreencast.jnlp
A képernyőkép megosztásán kívűl, rootolt eszköz esetén a számítógépről egérrel és billentyűzettel vezérelhető a telefon, jobb egér gombra fekvő módba vált a kép, képes videó felvételére, és van egy nagyon fapados fájlböngésző is a programban.

A másik program az AShot nevű:

Letöltés után csomagoljuk ki, és indítsuk:
unzip AndroidScreenCapture-1.1.zip
cd AndroidScreenCapture_1.1/
java -jar AShot-1.1.jar
Ez a program sokkal jobban megnyerte a tetszésem, mint az előző. Képes fullscreen-ben mutatni a telefon kijelzőjét, és forgatni is lehet a kijelzett képet.

Sajnos kicsit akadozik a kép, de van amikor hasznos lehet ez az eszköz.

2012. július 10., kedd

Gimp 2.8 telepítése Debian Squeeze-re

Már elég régen megjelent a Gimp nevű képszerkesztő program 2.8-as verziója, mely egy régen várt új funkciót tartalmaz: egy ablakban jeleníti meg az eszköztárakat a főablakkal, így sok bosszúságot előz meg, melyet még okozott. Sokat próbálkoztam már a telepítéssel forráskódból, de mindig elakadtam valamelyik függőség telepítésénél.
Most azonban találtam egy szkriptet, melynek segítségével minden függőséget lefordíthatunk és egy működő Gimp 2.8-at kapunk Debian Squeeze-en.
A szkriptet ITT találtam, köszönet érte Andrea Roscioli-nak. Eredetileg Ubuntu 10.04 (Lucid Lynx-re készítette el):
#!/bin/sh
# by this script you can install gimp 2.8 on your ubuntu 10.04 LTS lucid
# this script has been made by http://www.facebook.com/andrea.roscioli
# this script has been tested on ubuntu 10.04 LTS only
# make a new dir called tmp*****************************
mkdir -p ~/tmp/gimp
chmod 777 ~/tmp
cd ~/tmp/gimp
# download gimp**************************************
wget ftp://ftp.gimp.org/pub/gimp/v2.8/gimp-2.8.0.tar.bz2
tar -xjf gimp-2.8.0.tar.bz2
rm -f gimp-2.8.0.tar.bz2
export PATH=/opt/gimp-2.8/bin:$PATH
export PKG_CONFIG_PATH=/opt/gimp-2.8/lib/pkgconfig
export LD_LIBRARY_PATH=/opt/gimp-2.8/lib
#***************************************************
sudo apt-get build-dep gimp
sudo apt-get install git-core
#****************************************************
#install libtool************************************
sudo apt-get install libtool
#install babl***************************************
git clone git://git.gnome.org/babl
cd babl
./autogen.sh --prefix=/opt/gimp-2.8
make -j5
sudo make install -j5
cd ..
rm -rf babl
#install glib***************************************
wget http://ftp.gnome.org/pub/gnome/sources/glib/2.32/glib-2.32.2.tar.xz
tar -xvf glib-2.32.2.tar.xz
rm -f glib-2.32.2.tar.xz
cd glib-2.32.2
./configure --prefix=/opt/gimp-2.8
make
sudo make install
cd ..
rm -rf glib-2.32.2
#install gegl****************************************
wget ftp://ftp.gimp.org/pub/gegl/0.2/gegl-0.2.0.tar.bz2
tar -xjf gegl-0.2.0.tar.bz2
rm -f gegl-0.2.0.tar.bz2
cd gegl-0.2.0
./configure --prefix=/opt/gimp-2.8
make -j5 && sudo make install -j5
cd ..
rm -rf gegl-0.2.0
#install atk*****************************************
wget http://ftp.gnome.org/pub/gnome/sources/atk/2.4/atk-2.4.0.tar.xz
tar -xvf atk-2.4.0.tar.xz
rm -f atk-2.4.0.tar.xz
cd atk-2.4.0
./configure --prefix=/opt/gimp-2.8
make -j5 && sudo make install -j5
cd ..
rm -rf atk-2.4.0
#install pango***************************************
wget http://ftp.gnome.org/pub/gnome/sources/pango/1.30/pango-1.30.0.tar.xz
tar -xvf pango-1.30.0.tar.xz
rm -f pango-1.30.0.tar.xz
cd pango-1.30.0
./configure --prefix=/opt/gimp-2.8
make -j5 && sudo make install -j5
cd ..
rm -rf pango-1.30.0
#install gdk-pixbuf**********************************
wget http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.26/gdk-pixbuf-2.26.1.tar.xz
tar -xvf gdk-pixbuf-2.26.1.tar.xz
rm -f gdk-pixbuf-2.26.1.tar.xz
cd gdk-pixbuf-2.26.1
./configure --prefix=/opt/gimp-2.8
make -j5 && sudo make install -j5
cd ..
rm -rf gdk-pixbuf-2.26.1
#install pixman**************************************
wget http://cairographics.org/releases/pixman-0.24.4.tar.gz
tar -zxvf pixman-0.24.4.tar.gz
rm -f pixman-0.24.4.tar.gz
cd pixman-0.24.4
./configure --prefix=/opt/gimp-2.8
make -j5 && sudo make install -j5
cd ..
rm -rf pixman-0.24.4
#install cairo****************************************
wget http://cairographics.org/releases/cairo-1.12.2.tar.xz
tar -xvf cairo-1.12.2.tar.xz
rm -f cairo-1.12.2.tar.xz
cd cairo-1.12.2
./configure --prefix=/opt/gimp-2.8
make -j5 && sudo make install -j5
cd ..
rm -rf cairo-1.12.2
#install gtk+****************************************
wget http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.10.tar.xz
tar -xvf gtk+-2.24.10.tar.xz
rm -f gtk+-2.24.10.tar.xz
cd gtk+-2.24.10
./configure --prefix=/opt/gimp-2.8
make -j5 && sudo make install -j5
cd ..
rm -rf gtk+-2.24.10
#install gimp****************************************
cd gimp-2.8.0
./configure --prefix=/opt/gimp-2.8
make -j5
sudo make install -j5
cd ..
rm -rf gimp-2.8.0
cd
rm -rf ~/tmp/gimp
Ezekután az /opt/gimp-2.8/bin/gimp paranccsal indítható a Gimp, és a "Windows->Single-Window Mode" opcióval állítható be a régen áhított funkció. Ha mindent jól végeztünk el a következőhöz hasonló látvány fogad majd: