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?

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. 

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.