marți, 9 mai 2017

Verificarea dacă un anumit pachet (aplicație sau bibliotecă) este instalat(ă)

Uneori avem nevoie să cunoaștem dacă este instalat un anumit pachet. Putem afla aceasta prin următoarea metodă:


razvan@yeti:~$ ls -l /var/log/packages/ | grep chromium



În exemplul de mai sus, dorim să vedem dacă este instalată aplicația chromium (bowserul web binecunoscut). Comanda "ls -l" listeaza toate intrările din directorul "/var/log/packages", director ce contine câte un fișier/intrare pentru fiecare packet instalat în sistem. Apoi "output-ul"/ieșirea acestei comenzi este transmisă printr-un "pipe" către intrarea (input-ul) comenzii "grep" care extrage/afișeaza din acea ieșire (a comenzii 'ls'), respectiv intrare (a propriei comenzi 'grep') acele fișiere care satisfac condiția ca numele lor să conțină șirul de caractere "chromium".

Putem deasemenea sa aflăm dacă un anumit packet a fost dezinstalat. Pentru aceasta utilizăm aceleași comenzi, ușor modificate, astfel:

razvan@yeti:~$ ls -l /var/log/removed_packages/ | grep chromium


După cum puteți observa, singura diferență este numele directorului în care se află numele packetelor dezinstalate: "removed_packages". În rest, comanda funcționează similar.


luni, 22 august 2016

Din nou despre utilitarul slackpkg, si dintr-o alta perspectiva

De foarte multe ori, cei care utilizeaza alte distributii de Linux, se feresc sa utilizeze si Slackware din cauza ca ei cred ca este foarte greu de utilizat, in comparatie cu acelea. In principal este vorba de utilitarele de instalare de aplicatii si upgrade, ale sistemului, care sunt foarte raspandite si usor de utilizat la distributiile importante cu ar fi Debian sau Red Hat Linux, respectiv la derivatele acestora.

In ceea ce priveste Slackware, dezvoltatorii sistemului nu s-au lasat nici ei mai prejos, in acest sens si au conceput (dupa cum va spuneam intr-un articol anterior) utilitarul nativ slackpkg.

Acesta are multe din facilitatile aplicatiilor de management ale pachetelor din distributiile majore Linux si, din punctul meu de vedere, este chiar foarte usor de utilizat, chiar mai usor.

Iata, pentru informare, o parte din documentatia, explicatiile si modul de utilizare ale slackpkg-ului:
http://docs.slackware.com/slackware:slackpkg

Evident, este deasemenea recomandata utilizarea paginilor de manual:


root@yeti:~# man slackpkg


Mai mult decat atat, exista si functioneaza, in lumea Slackware, o extensie a slackpkg-ului pentru arhive de pachete neoficiale. Aceasta extensie se numeste slackpkg+. Pentru informatii despre aceasta utilizati hiperlegatura de pe blogul lui Eric Hameleers, cunoscut si sub denumirea Alien Bob, in comunitatile Linux:
Introducing slackpkg+, an extension to slackpkg for 3rd party repositories

Iata deci, un motiv in plus pentru a va determina sa incercati Slackware, cea mai veche distributie Linux in viata si deasemenea una foarte stabila.

duminică, 31 mai 2015

Timpii CPU consumati de un proces - interfete de programare sistem si comenzi shell

Cand ne referim la timpii procesor consumati de un anumit proces, ii putem afla prin urmatoarele metode:

  • time (1)
  • times (2)
  • clock (3)
  • clock_getcpuclockid (3) sau pthread_getcpuclockid (3) & clock_gettime (2)
Prima metoda este o comanda / utilitar de sistem Linux/Unix iar celelalte metode sunt interfete de programare sistem, accesibile din orice program C/C++ pe care il puteti realiza.

Ca si referinte suplimentare va recomand consultarea urmatoarelor documentatii:

[1] Michael KERRISK - The Linux Programming Interface (10.7 - Process Time; 23.5 - POSIX Clocks)
[2] paginile de manual (manpages) aferente (pentru accesarea sectiunii corespunzatoare - 1, 2 sau 3 - (v. si comanda 'man man'), tastati numarul sectiunii intre comanda man si numele paginii - ex: 'man 3 clock_getcpuclockid' - aceasta metoda este utila atunci cand exista pagini de manual cu acelasi nume in diferite sectiuni)



vineri, 14 iunie 2013

Blocarea inchiderii sistemului de catre utilizatorii obisnuiti

In versiunile noi de Slackware, un utilizator obinuit, fara privilegii suplimentare care sa-i fi fost acordate, poate inchide sistemul doar prin intermediul meniului oferit in cadrul interfetelor grafice (KDE, XFCE etc) la care este conectat. Dar uneori, chiar si doar aceasta facilitate poate fi considerata a fi prea mult si administratorul sistemului sa doreasca sa blocheze facilitatea de shutdown sau de reboot prin care alti utilizatori decat el, sa poata inchide sau reporni sistemul. Este cazul tipic in care sistemul functioneaza ca server si nu dorim ca acesta sa poata fi inchis de orice utilizator conectat de la distata.

Altfel, administratorul (root) are la dispozitie 3 parghii prin care poate controla, cine poate inchide/restarta serverul (exceptand desigur facilitatile interfetelor grafice amintite) prin intermediul comenzii shutdown (halt, reboot). Acestea sunt: fisierul /etc/sudoers, fisierele /etc/shutdown.allow, /etc/inittab si capturarea secventei <CTRL><ALT><DEL> in cadrul consolelor virtuale tty de login, respectiv prin acordarea prioritatii corespunzatoare prin intermediul modificarii ownership-ului si permisiunilor fisierului /sbin/shutdown.

In cazul in care se doreste dezactivarea oricarei modalitati de inchidere restartare a sistemului, de catre alti utilizatori decat superuserul, cea mai eficienta metoda este aceea de a rula comanda shutdown cu un timp suficient de mare de activare:

root@yeti:~# shutdown -h 525600 "Inchiderea sistemului in 525600 minute" &

Executand ca superuser aceasta comanda, nici un alt utilizator nu va mai putea inchide sau restarta sistemul, atat timp cat comanda este activa (nu a fost anulata, tot de catre root).

duminică, 2 iunie 2013

Midnight Commander si afisarea spatiului pe disc ocupat de fisiere/directoare

Midnight Commander este un program extrem de util, atunci cand lucrati cu sistemul de fisiere, intr-un terminal linux. El poate fi rulat utilizand comanda mc. Are multe functii care usureaza lucrul cu fisierele si directoarele, aflate atat pe sistemul local sau chiar la distanta, pe un alt sistem, la care va conectati, de exemplu, prin protocolul ftp.

Una dintre functiile disponibile, dar numai atunci cand programul mc a fost rulat dintr-una dintre consolele standard, virtuale, tty (de login, generate (spawned) de procesul init, la care aveti acces atunci cand sistemul dumneavoastra functioneaza in runlevel 3, implicit la Slackware Linux, sau cand utilizati combinatia de taste <CTRL><ALT><F1-F6>, daca va aflati in mediul grafic XWindows, fie initilizat cu comanda startx, dintr-una din consolele mentionate, fie implicit, cand sistemul se afla in runlevel 4), este functia de calculare si afisare a marimii (dimensiunii) directoarelor selectate. Functia respectiva poate fi accesata utilizand tasta WakeUp, sau Sleep, pentru tastaturile care au aceste taste. Daca nu dispuneti de o astfel de tastatura, pentru a afisa spatiul efectiv ocupat pe disc de fisierele si directoarele sistemului de fisiere, nu va ramane decat solutia clasica, aceea de a recurge la comenzile UNIX standard (ar mai fi o posibilitate, tot o combinatie de taste in mc, dar va las pe voi sa o descoperiti :):

razvan@yeti:~$ du -B4K -csh ./
8.6G    ./
8.6G    total
razvan@yeti:~$

Pentru a verifica faptul ca va aflati intr-un terminal virtual tty, puteti folosi comanda:

razvan@yeti:~$ tty
/dev/tty3

marți, 26 martie 2013

slackpkg - un utilitar pentru update de sistem

Dupa cum v-am spus intr-o postare anterioara, pachetele de instalare a programelor in sistemul de operare Slackware Linux au, de regula, extensiile .txz sau .tgz si pot fi instalate, dupa ce au fost descarcate/downloadate, utilizand instalpkg, in cazul unei instalari noi, sau upgradepkg, in cazul unui upgrade. Va voi arata acum o alta metoda folosita pentru a upgrada sistemul la o versiune mai noua (sau chiar la versiunea "-current", aflata in faza de beta-release, adica ce nu este una stabila, ci una oferita spre testare publicului larg), sau pentru a-l tine "la zi" cu ultimele versiuni ale programelor. Este o metoda foarte simpla si ceea ce imi place la ea este usurinta cu care pot realiza upgrade-ul sistemului, fara a mai fi nevoie sa verific manual ce programe s-au modificat, sa le descarc pe fiecare in parte si sa le instalez. Totul este realizat automat, prin executia unei serii scurte de comenzi, tastate ca utilizator root bineinteles, programul necesitand insa si o serie de configurari/setari, descrise in cele ce urmeaza.

Programul are fisierele de configurare in directorul /etc/slackpkg. In acest director, primul fisier ce trebuie putin modificat este fisierul mirrors. Acest fisier contine doua sectiuni cu adrese de servere ftp mirror pentru distributia Slackware - pentru versiunea curenta si pentru ultima versiune stabila (14.0 in martie 2013). Decomentati (stergeti caracterul # de inceput de linie) linia care va convine. Eu folosesc de exemplu serverul http://slackware.osuosl.org/pub/slackware/slackware-14.0/ pentru a tine updatat sistemul meu in acest fel.
Al doilea fisier ce trebuie modificat este fisierul blacklist. Acest fisier contine pachetele care nu vor fi upgradate, sterse sau instalate de slackpkg. De regula aici se trec expresii regulate partiale care sa acopere diferite serii de pachete instalate "by third parties", de exemplu pachetele neoficiale de pe Slackbuilds.org, sau alte tipuri de pachete neoficiale Slackware.
Este recomandat si chiar necesar sa blacklistati (decomentati) urmatoarele pachete:
  • kernel-firmware
  • kernel-generic
  • kernel-generic-smp
  • kernel-huge
  • kernel-huge-smp
  • kernel-modules
  • kernel-modules-smp
Acum, inainte de a incepe procesul de update propriu-zis trebuie verificat (in ChangeLog.txt de la adresa mirror utilizata) daca au aparut kerneluri noi. Daca raspunsul este afirmativ, va trebui sa descarcati si sa instalati (folositi installpkg si nu upgradepkg!!!) noile pachete kernel. Apoi updatati fisierul /etc/lilo.conf cu noul kernel, fara a scoate vechiul kernel, si rulati comanda lilo (dar, despre utilizarea lilo pentru gestionarea procesului de bootare intr-o postare viitoare). In felul acesta veti putea sa incarcati sistemul folosind vechiul kernel, in cazul in care apar probleme.
Avand facute aceste modificari esentiale, puteti incepe procesul de update. Acesta presupune executia secventiala a urmatoarelor comenzi:

root@yeti:~# slackpkg update
root@yeti:~# slackpkg install-new
root@yeti:~# slackpkg upgrade-all
root@yeti:~# slackpkg clean-system


Acestea fiind spuse, atrag totusi atentia ca metoda expusa mai sus este una netestata suficient de catre mine si prin urmare pot aparea unele probleme. De exemplu, pot aparea situatii, atunci cand se upgradeaza intre diferite "snapshot"-uri de "-current", in care sa trebuiasca upgradate unele dintre pachetele slackpkg, wget, openssl, openssl-solibs, findutils, pkgtools, tar, xz, in mod manual, inainte de a incepe procesul de update. Cu toate acestea, consider ca slackpkg este un utilitar folositor, care poate simpifica mult munca de administrare a sistemului, daca este folosit cu destul de multa atentie si pricepere.

duminică, 9 decembrie 2012

Aranjamentul tastaturii pentru limba română

În Linux și implicit în Slackware, se poate configura aranjamentul tastaturii pentru a putea folosi diacriticele românesti. Folosind comanda urmatoare în mediul grafic X11, într-o consolă sau xterm:

root@yeti:~# setxkbmap ro

se poate configura sistemul în acest sens.

Diacriticele astfel configurate sunt accesibile apăsînd tasta AltGr (tasta Alt din dreapta) și tastele corespunzătoare fără semnul diacritic. Ex: AltGr-i pentru î, AltGr-a pentru ă, AltGr-s pentru ș, AltGr-t pentru ț. Excepție de la această regulă face caracterul â, care se obține prin combinația AltGr-q
Desigur, pentru a folosi majuscule se adaugă și tasta Shift, exemplu AltGr-Shift-q pentru Â.