Blog

Gentoo - instalowanie pakietów spoza głownego repozytorium Portage

Rzadko ale mimo wszystko trafia się sytuacja w której okazuje się, że jakiegoś pakietu albo nie ma w repozytorium Portage albo jest w postaci dalece odbiegającej od naszych oczekiwań. W takich wypadkach z pomocą przychodzi narzędzie layman i udostępniane poprzez nie dodatkowe repozytoria.

Overlays - z czym się to je?

Dzięki narzędziu layman uzyskujemy dodatkowe źródła pakietów (baza dostępnych pakietów w systemie może ulec znacznemu powiększeniu) niedostępne z róznych powodów w Portage'u. Layman integruje dodatkowe repozytoria z głównym drzewem Portage dzięki czemu instalacja dodatkowych pakietów przebiega identycznie jak w wypadku pakietów z głównego repozytorium Gentoo, tak samo jak do tej pory używamy emerge do instalacji. 

Liczba repozytoriów dostarczona przez layman'a jest znaczna o czym przekonamy się w dalszej części.

Instalacja laymana

Nic prostszego - należy zwrócić uwagę jedynie na flagi z którymi pakiet zostanie zainstalowany. Są to głównie flagi dotyczące tego z jakiego typu repozytoriów layman będzie mógł korzystać.

Ponieważ repozytoria z pakietami zarządzane są przez różne systemy kontroli wersji należy wybrać przy instlacji te flagi, które umożliwią nam skorzystanie z repozytorium, w którym znajdują się interesujące nas pakiety. Zalecane jest włączenie co najmniej flag git i subversion - to najczęściej wykorzystywane repozytoria.

Czas na instalację:

# emerge -av layman
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild N ] app-portage/layman-1.4.1 USE="git subversion -bazaar -cvs -darcs -mercurial -test" 59 kB

Total: 1 package (1 new), Size of downloads: 59 kB

Would you like to merge these packages? [Yes/No]

Używanie laymana

W celu skorzystania z dobrodziejstw nowych repozytoriów musimy zintegrować bazę pakietów dostarczanych przez layman z głównym drzewem Portage musimy rozszerzyć naszą konfigurację w /etc/make.conf. Zrobimy to tak:

# echo "source /var/lib/layman/make.conf" >> /etc/make.conf

Ponieważ plik /var/lib/layman/make.conf jest tworzony dopiero w momencie dodania pierwszego repozytorium może to rodzić pewne problemy przy instalacji pakietów. W tym celu warto stworzyć ten plik:
touch /var/lib/layman/make.conf

Nasz layman jest zainstalowany, sprawdźmy co to potrafi.

  • Listowanie dostępnych repozytoriów
# layman -L

Lista jest spora...

  • Dodawanie nowego repozytorium
# layman -a <nazwa repozytorium>

Po dodaniu repozytoriów wszystkie pozostałe operacje na pakietach (aktualizacja, instalacja) wykonujemy za pomocą standardowych narzędzi Gentoo czyli emerge'a.

Sposobów kilka na poszukiwanie co nam zjada miejsce na dysku - czyli jak wyszukiwać największe pliki i/lub katalogi w systemie

Często w swojej pracy zmuszeni jesteśmy do przeprowadzenia małego śledztwa, które ma na celu określenie kto lub co zajmuje tyle  przestrzeni dyskowej. W tym artykule pozwolę sobie zebrać kilka sposobów na wyszukiwanie najbardziej przestrzeniożernych elementów na dysku (w systemie).

Wyszukiwanie największych katalogów i plików z wykorzystaniem narzędzia du

Komenda du pozwala nam na określenie zajętości przestrzeni dyskowej poszczególnych elementów w strukturze katalogowej (ang. disk usage). Samo w sobie nie pozwala na sortowanie wyników (póki co) więc musimy wykorzystać dodatkowe polecenia - w naszym wypadku będzie to sort (sortowanie linii tekstu/danych na standardowym wejściu) oraz head (wyświetlanie początkowej częsci tekstu z pliku lub pierwszych linii ze standardowego wejścia). Chcąc wyszukać największe elementy w całym systemie - zaprzęgajamy tę narzędzia do działania otrzymujemy polecenie:

# du -a /|sort -n -r|head -n 10
5415608 /var
3516492 /var/www
2061324 /var/www/galeria.linuxway.eu
2061308 /var/www/galeria.linuxway.eu/htdocs
2061304 /var/www/galeria.linuxway.eu/htdocs/gallery
1992220 /var/www/galeria.linuxway.eu/htdocs/gallery/g2data
1772256 /var/www/galeria.linuxway.eu/htdocs/gallery/g2data/albums 1184184 /var/lib
786452 /var/lib/mongodb
786444 /var/lib/mongodb/journal

gdzie:

du -a oblicza zajętość dla wszystkich elementów w podanym katalogu - włącznie z plikami

sort -n -r sortuje dane numerycznie (-n), w kolejności malejącej (-r)

head -n 10 wyświetla pierwsze 10 linii

W wypadku takiego wykorzystania du rozmiar elementów podawany jest w blokach, ktore najczęściej (do niedawna) miały rozmiar 512 bajtów - w tym wypadku jest to 512 bajtów. Wynik należy więc odpowiednio przeliczyć

Jeśli chcemy uzyskać bardziej przyjazny raport możemy skorzystać z poniższej komendy:

# du -ah /|sort -h -r|head -n 10
5,2G /var
3,4G /var/www
2,0G /var/www/galeria.linuxway.eu/htdocs/gallery
2,0G /var/www/galeria.linuxway.eu/htdocs
2,0G /var/www/galeria.linuxway.eu
1,9G /var/www/galeria.linuxway.eu/htdocs/gallery/g2data
1,7G /var/www/galeria.linuxway.eu/htdocs/gallery/g2data/albums
1,2G /var/lib
769M /var/lib/mongodb/journal
769M /var/lib/mongodb

gdzie -h w opcjach sort i du wymusza wyświetlanie wyników w bardziej "ludzkiej formie".

Wyszukiwanie największych plików z użyciem find

Można spróbować analogicznie wykorzystać narzędzie find - w tym wypadku wyszukuje 10 największych plików:

# find /var -type f -ls | sort -r -n -k 7 | head -n 10
2104398 293976 -rw-r--r-- 1 apache apache 301024259 sty 4 01:33 /var/www/www.motomy.com/php_errors.log
790879 262148 -rw------- 1 mongodb mongodb 268435456 gru 18 21:02 /var/lib/mongodb/journal/j._0
790878 262144 -rw------- 1 mongodb mongodb 268435456 paź 11 09:51 /var/lib/mongodb/journal/prealloc.1
790877 262144 -rw------- 1 mongodb mongodb 268435456 paź 11 09:52 /var/lib/mongodb/journal/prealloc.2
1441958 218136 -rw-rw-r-- 1 root utmp 223361664 sty 4 01:42 /var/log/wtmp
1441804 149816 -rw------- 1 root root 153410082 sty 4 01:42 /var/log/messages
1183564 69004 -rw-r--r-- 1 apache apache 70653399 sty 4 01:31 /var/www/old.optilabs.eu/htdocs/log/production.log
790446 43132 -rw-rw---- 1 mysql mysql 44164086 kwi 25 2010 /var/lib/mysql/mysqld-bin.000005
789418 40808 -rw-rw---- 1 mysql mysql 41783424 lut 28 2011 /var/lib/mysql/mysqld-bin.000015
2101595 34572 -rw-r--r-- 1 root root 35401716 gru 16 17:09 /var/www/TransportDublin.old/neo4j-community-1.6.M02-unix.tar.gz

Wyświetlanie największych plików w katalogu

Do wyszukiwania największych plików w katalogu możemy użyć ls. Pozwala nam ono na posortowanie plików na wyjściu polecenia pod kątem rozmiaru.
10 największych plików w katalogu wyszukamy tak:
# ls -lSh|head -n 10
-rw-r--r-- 1 root root 344M 01-04 01:34 loh
drwxr-xr-x 2 root root 4,0K 12-29 23:55 hsperfdata_root
drwxr-xr-x 4 root root 4,0K 12-29 23:25 Jetty_localhost_7474_webadmin.html__webadmin__.w17eyp
drwxr-xr-x 3 root root 4,0K 12-27 21:12 npm-1325016766869
drwxr-xr-x 6 root root 4,0K 12-29 23:16 npm-1325196999659
drwxr-xr-x 6 root root 4,0K 12-29 23:16 npm-1325197017013
drwxr-xr-x 6 root root 4,0K 12-29 23:17 npm-1325197057551
drwxr-xr-x 6 root root 4,0K 12-29 23:25 npm-1325197504346
d-ws--x--x 6 root root 4,0K 12-18 21:01 passenger.3374

Sposobów jest więcej. A ty jaki sposób preferujesz?

Mac OS X - skróty klawiaturowe przydatne przy starcie systemu

Przytrzymaj w trakcie uruchamiania przycisk lub kombinację przycisków aby skorzystać z opisanej funkcji.

Jeśli wykorzystywana kombinacja nie działa możliwe, że nie posiadasz oryginalnej klawiatury Apple

uruchomienie w trybie verbose
 

COMMAND
+
V

 


uruchomienie w trybie single user
 

COMMAND
+
S

 


uruchomienie z CD lub DVD
C

 


Wyświetl menadżera startu (wszystkie urządzenia bootowalne)
 

OPTION

 


Uruchom w trybie bezpiecznym (safe mode)
 

SHIFT

 


Linux - Jak dodać użytkownika do grupy

Do zarządzania użytkownikami i ich przynależnością do grup można podejść różnie. Można edytować pliki w których zawarte są informacje o grupach, można też korzystać ze specjalnie przygiotowanych w tym celu narzędzi. Ponieważ uważam, że wiedza "co i gdzie" w administracji Linux jest niezbędna omówie obydwa sposoby. 

Oracle - pakiet Statspack część 1 - instalacja pakietu StatsPack

Statspack umożliwia i znacznie ułatwia administratorowi analizę wydajności systemu. To nowe narzędzie jest następcą skryptów UTLBSTAT.sql i UTLESTAT.sql. Dzięki raoprtom statspacka jesteśmy w stanie analizować obciążenie bazy danych w czasie i podejmować odpowiednie działania mające na celu usprawnienie pracy naszego systemu bazodanowego.

Instalacja Statspacka

 

Statspack dostarczany jest razem z domyślną instalacją. Skrypty Statspacka znajdziemy w katalogu ze skryptami administracyjnymi. W instalacji przeprowadzonej zgodnie z zalecanym layoutem będzie to podkatalog ./rdbms/admin w katalogu $ORACLE_HOME.

Jako użytkownik oracle (lub inny użytkownik, na którym działa baza) wykonujemy

$ sqlplus / as sysdba @$ORACLE_HOME/rdbms/admin/spcreate.sql

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Jan 2 13:00:42 2012

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

(...)

Zostaniemy zapytani o hasło dla użytkownika, a którym działać będzie Statspack (domyślnie jest to PERFSTAT):


Choose the PERFSTAT user's password
-----------------------------------
Not specifying a password will result in the installation FAILING

(PODAJEMY HASŁO UŻYTKOWNIKA PERFSTAT)

Prosze podac wartosc dla perfstat_password:TU WPISZ HASŁO DLA PERFSTAT

Wybieramy tablespace, w którym zostaną utworzone tabele Statspacka:


Choose the Default tablespace for the PERFSTAT user
---------------------------------------------------
Below is the list of online tablespaces in this database which can
store user data. Specifying the SYSTEM tablespace for the user's
default tablespace will result in the installation FAILING, as
using SYSTEM for performance data is not supported.

Choose the PERFSTAT users's default tablespace. This is the tablespace
in which the STATSPACK tables and indexes will be created.

TABLESPACE_NAME CONTENTS STATSPACK DEFAULT TABLESPACE
------------------------------ --------- ----------------------------
TOM_DATA PERMANENT
PERFSTAT PERMANENT
SYSAUX PERMANENT *
USERS PERMANENT

Pressing <return> will result in STATSPACK's recommended default
tablespace (identified by *) being used.

Prosze podac wartosc dla default_tablespace: PERFSTAT

Using tablespace PERFSTAT as PERFSTAT default tablespace.

Warto zawsze wybrać osobny tablespace zamiast domyślnego tablespace'a SYSAUX. Pozwala to zapobiec przypadkowemu zapełnieniu systemowego tablespace'a co mogłoby w szczególnych wypadkach zatrzymać działanie bazy. Dodatkowo łatwiejsze staje sie zarządzanie zajętością przestrzeni przez dane zapisywane przez Statspack.

Następnie zostaniemy poproszeni o wybranie tymczasowego tablespace'a z którego będzie korzystał Statspack. Wybieram domyślny, jeśli chcemy można stworzyć osobny - ja nie widzę w tej chwili takiej potrzeby:


Choose the Temporary tablespace for the PERFSTAT user
-----------------------------------------------------
Below is the list of online tablespaces in this database which can
store temporary data (e.g. for sort workareas). Specifying the SYSTEM
tablespace for the user's temporary tablespace will result in the
installation FAILING, as using SYSTEM for workareas is not supported.

Choose the PERFSTAT user's Temporary tablespace.

TABLESPACE_NAME CONTENTS DB DEFAULT TEMP TABLESPACE
------------------------------ --------- --------------------------
TEMP TEMPORARY *

Pressing <return> will result in the database's default Temporary
tablespace (identified by *) being used.

Prosze podac wartosc dla temporary_tablespace:<Naciśnij ENTER>

Using tablespace TEMP as PERFSTAT temporary tablespace.


... Creating PERFSTAT user


... Installing required packages


... Creating views


... Granting privileges

(...)

Creating Package STATSPACK...

Pakiet zostal utworzony.

Nie ma bledow.
Creating Package Body STATSPACK...

Cialo pakietu zostalo utworzone.

Nie ma bledow.

NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.

Jeśli instalacja przebiegła prawidłowo komunikat końcowy powinien wyglądać podobnie do tego w tabelce powyżej.

Poprawność instalacji możemy sprawdzić analizując logi z instalacji Statspacka, które znajdują się w pliku spcpkg.lis

Linux - co znajduje się w pliku /etc/group

Plik /etc/group jest plikiem tekstowym , w którym zapisane są informacje dotyczące przynależności użytkownika do grup systemowychating system.

Użytkownik może należeć do wielu grup, co ułatwia znacząco zarządzanie uprawnieniami w systemie operacyjnym (uprawnienia można definiować na poziomie grup).

Format pliku /etc/group

Linijka w pliku określa nam członkostwo w pojednyczej grupie systemowej. Pola w linijce oddzielone sa dwukropkiem (:)

wheel:x:10:root,alistra,sebbie
(__1_:2:_3:4___________________)

Pola w pliku okreslają kolejno:

  1. nazwa grupy
  2. hasło grupy - rzadko używane, jeśli jest potrzeba nadania grupie jakiś większych uprawnień w systemie (np. administracyjnych).
  3. nr grupy - identyfikator numeryczny grupy w systemie
  4. lista użytkowników należących do grupy

Przydatne polecenia związane z zarządzaniem grupami

    • Pokaż grupy użytkownika
# groups michal
wheel audio users sebbie
    • Pokaż numeryczne identyfikatory grup użytkownika
# id -G michal
2110 10 18 100
    • Pokaż grupę główną użytkownika
# id -g michal
2110
(pokaż nazwę grupy)
# id -gn michal
users
(pokaż nazwę grupy bieżącego użytkownika)
# id -gn
root

Jak rozwiązać problem z montowaniem systemu plików ext4: "Cannot mount ext4 filesystem"?

Przy ostatniej zmianie kernela trafiłem na dziwny problem - przy próbie uruchomienia systemu wyświetlał się komunikat o treści:

mount: cannot remount block device /dev/sda2 read-write, is write-protected
 

Ponieważ jedyną zmianą jaka nastąpiła było przejście z systemu plików ext3 na ext4 źródło problemów stało się łatwiejsze do określenia.

Rozwiązanie

wystarczył dmesg, żeby sprawa w zupełności się wyjaśniła:

EXT4-fs (sda2): Filesystem with huge files cannot be mounted RDWR without CONFIG_LBDAF 
 

W przypadku systemu plików ext4 niezbędne jest zaznaczenie w kernelu opcji "Support for large (2TB+) block devices and files" (CONFIG_LBDAF).

3 najpopularniejsze sposoby sprawdzenia jaka jest twoja wersja Ubuntu

Zdarzyło ci się kiedyś zapomnieć jaką wersję Ubuntu masz zainstalowaną? Jeśli tak to ten artykuł jest właśnie dla Ciebie.

1. Używając komendy lsb_release

Z poziomu konsoli uruchom:
 
lsb_release -a
 

2. Sprawdzając zawartość pliku /etc/issue

 

cat /etc/issue
 

3. Zaglądając do pliku lsb-release

 

cat /etc/lsb-release

Jest to lista najpopularniejszych sposobów sprawdzenia jaka jest wersja Ubuntu - oczywiście z poziomu konsoli. Sprawdź listę wersji Ubuntu - upewnij się, że twoja wersja jest jeszcze wspierana.

Ruby - Jak rozróżniać elementy parzyste od nieparzystych w pętli

Czasami w trakcie pisania różnego rodzaju skryptów konieczne staje się rozróżnienie parzystych i nieparzystych iteracji w pętli. Jeżeli nie zamierzamy używać w tym celu helpera cycle z modułu ActiveSupport - możemy po prostu zdefiniować w klasie Array nową metodę - nazwijmy ją each_with_index_parity.

Jej implementacja może wyglądać na przykład tak:

class Array

  def each_with_index_parity
    self.each_with_index do |entry, index|
      yield(entry, index, index % 2 == 0 ? :even : :odd)
    end
  end
end

Teraz można już korzystać z jej dobordziejstw:

@records.each_with_index_parity do |record, index, parity|

 #nasza implementacja....

 end

U mnie to działa i jest bardzo przydatne.