Polecenie install to wszechstronny sposób kopiowania plików w systemach Linux i macOS. Jest to doskonałe narzędzie dla zaawansowanych użytkowników, którzy stawiają na wydajność. W tym artykule dowiesz się, jak pracować mądrzej, a nie ciężej.
Czekaj – to nie jest instalacja oprogramowania?
Nazwa polecenia install może być myląca, ponieważ nie służy do instalowania oprogramowania. Jeśli chcesz zainstalować pakiet na przykład w Ubuntu lub innej dystrybucji bazującej na Debianie, powinieneś użyć polecenia apt-get. W przypadku innych dystrybucji, takich jak Fedora czy openSUSE, skorzystaj z odpowiednich narzędzi do zarządzania pakietami, takich jak dnf lub zypper.
Co więc robi polecenie install?
Polecenie install łączy funkcje kilku innych poleceń, takich jak cp (Kopiuj), chown (zmiana właściciela), chmod (Zmień tryb), mkdir (zrób katalog) oraz strip (usuń symbole). Umożliwia to wykonanie wielu operacji w jednym kroku.
Polecenie install potrafi:
- Kopiować pliki, podobnie jak polecenie cp.
- Decydować, czy nadpisać istniejące pliki.
- Tworzyć katalog docelowy, jeśli go nie ma, tak jak w przypadku mkdir.
- Ustawiać uprawnienia do plików, stosując polecenie chmod.
- Zmieniać właściciela plików, bazując na chown.
- Usuwać zbędne dane z plików wykonywalnych, co przypomina funkcję strip.
Mimo tej funkcjonalności, polecenie install nie ma zbyt wielu opcji do wyboru.
Kiedy warto używać tego polecenia?
Polecenie install nie jest stosowane na co dzień. Jest przydatne w specyficznych sytuacjach. Na przykład, gdy tworzysz nowe oprogramowanie, możesz potrzebować przetestować je w innym środowisku niż to, w którym je rozwijasz. W takim przypadku musisz skopiować nowe pliki programu do katalogu testowego, co może wiązać się z koniecznością utworzenia tego katalogu oraz odpowiedniego ustawienia uprawnień i właścicieli plików.
W związku z tym, że programowanie to proces iteracyjny, możesz wielokrotnie wykonywać te same operacje. Polecenie install znacznie ułatwia te zadania. Na koniec, gdy twoje nowe narzędzie jest gotowe do wdrożenia, możesz użyć polecenia install, aby skopiować je do ostatecznej lokalizacji z odpowiednimi uprawnieniami.
Przykład użycia
Wyobraźmy sobie programistę, który pracuje nad nowym narzędziem o nazwie ana. Składa się ono z pliku wykonywalnego oraz bazy danych. Po przeprowadzeniu testów, pliki te należy skopiować do katalogu /usr/local/bin, aby były dostępne dla wszystkich użytkowników systemu Linux. W naszym przykładzie konieczne będzie dostosowanie nazw plików oraz ścieżek katalogów do własnych potrzeb.
Do momentu, gdy projekt będzie gotowy do wydania, testy będą przeprowadzane w katalogu ~/test/ana. Członkowie grupy maniaków powinni mieć uprawnienia do odczytu i wykonywania, a pozostali użytkownicy tylko do wykonywania. Ustawienia uprawnień będą wyglądały następująco:
- Właściciel: odczyt, zapis i wykonanie.
- Grupa: odczyt i wykonanie.
- Inni: tylko wykonanie.
Jak korzystać z polecenia install
Katalog roboczy naszego programisty to ~/work. Po skompilowaniu programu, stworzył plik binarny ana oraz bazę danych Words.db, które są gotowe do testów. Przyjrzyjmy się tym plikom:
ls -l ana Words.db
Narzędzie ana generuje anagramy z fraz podanych w linii poleceń, a jego testowanie jest stosunkowo łatwe.
Programista uruchomił narzędzie ana z frazą „biskwit”, co zakończyło się sukcesem. Następnie postanawia skopiować te dwa pliki do katalogu ~/test/ana, aby sprawdzić, czy nowe narzędzie działa poprawnie w innym środowisku. Wydaje następujące polecenie:
install -D -v ana Words.db -t ~/test/ana
W poleceniu użyto następujących opcji:
- -D: Tworzy katalogi, w tym nadrzędne, jeśli jest to wymagane.
- -v: Wyświetla szczegóły dotyczące tworzonych katalogów oraz kopiowanych plików.
- -t: Określa katalog docelowy.
W wyniku działania polecenia install utworzono katalog ~/test oraz ~/test/ana, a pliki zostały skopiowane do katalogu docelowego, co potwierdza ich obecność.
ls -l
Kolejnym krokiem jest przetestowanie działania narzędzia ana w katalogu ~/test/ana.
Narzędzie działa zgodnie z oczekiwaniami, co jest pozytywne, jednak uprawnienia nie są zgodne z założeniami. Członkowie grupy maniaków powinni mieć uprawnienia do odczytu i wykonywania, a pozostali użytkownicy tylko do wykonywania.
Obie te kwestie można rozwiązać, wykonując następujące polecenie. Pamiętaj, aby użyć sudo do uruchomienia polecenia z uprawnieniami administratora, co jest wymagane w przypadku opcji -o (właściciel) i -g (grupa). Po wydaniu polecenia system poprosi o podanie hasła.
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Opcje użyte w powyższym poleceniu oznaczają:
- -b: Tworzy kopie zapasowe plików przed ich nadpisaniem.
- -S: Określa sufiks dla plików kopii zapasowych; jeśli nie zostanie podany, używany jest znak ~ (tylda). W tym przypadku użyto sufiksu .bak.
- -o: Ustawia właściciela pliku na „dave”.
- -g: Ustawia grupę właścicieli plików na „geek”.
- -m: Ustawia uprawnienia do plików, stosując standardową numeryczną składnię chmod.
Nie musimy już używać opcji -D (utwórz katalogi), ponieważ wiemy, że katalog testowy już istnieje. Pomijamy także opcję -v (szczegóły), ponieważ będą one wyświetlane w wyniku działania polecenia.
Wyświetlenie plików w katalogu ~/test/ana potwierdzi, że wszystkie wymagania zostały spełnione:
ls -l
Potwierdza to, że:
- Pliki zostały skopiowane do katalogu testowego.
- Uprawnienia są ustawione poprawnie.
- „dave” jest właścicielem plików.
- Grupa „geek” jest grupą właścicieli plików.
- Utworzono kopie zapasowe plików o nazwach „ana.bak” oraz „Words.db.bak”.
Wszystko to osiągnięto za pomocą jednego polecenia, co jest dużym ułatwieniem.
Programista dokonuje ostatnich poprawek w narzędziu i ponownie je kompiluje. Pliki, które uległy zmianie, muszą zostać skopiowane do katalogu ~/test/ana z katalogu ~/work. Możemy to zrobić, używając opcji -C (porównaj). Gdy plik źródłowy i docelowy są identyczne, plik źródłowy nie będzie kopiowany.
sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Sprawdzenie plików w katalogu docelowym ujawnia, że rozmiar pliku ana zwiększył się, a jego znacznik czasu uległ zmianie, co wskazuje na to, że nowa wersja pliku została skopiowana. Natomiast plik Words.db nie uległ zmianie, więc nie został skopiowany. W projektach z wieloma plikami, opcja -C (porównanie) może zaoszczędzić sporo czasu oraz miejsca na dysku, kopiując tylko zmienione pliki.
Programista ponownie testuje, aby upewnić się, że narzędzie ana nadal działa poprawnie.
Nadszedł czas, aby skopiować pliki do katalogu /usr/local/bin, dzięki czemu nowe narzędzie będzie dostępne dla wszystkich użytkowników systemu Linux. Ponieważ wiemy, że katalog /usr/local/bin istnieje, możemy użyć zmodyfikowanej wersji ostatniego polecenia.
Zmodyfikowaliśmy katalog docelowy na /usr/local/bin. Usunęliśmy opcję -C (porównanie), ponieważ nie ma jeszcze kopii tych plików w katalogu docelowym. Zrezygnowaliśmy również z opcji -b (kopia zapasowa) oraz -S (sufiks), ponieważ nie są one potrzebne w tym przypadku.
sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin
Możemy sprawdzić, czy pliki dotarły do /usr/local/bin:
ls -l
Następnie wracamy do katalogu domowego i sprawdzamy, czy możemy uruchomić nasze nowe narzędzie.
Warto zauważyć, że nie musieliśmy używać ./ przed poleceniem ana, co oznacza, że jest ono dostępne z /usr/local/bin. Zakończenie zadania.
Wspomnieliśmy, że polecenie install może usunąć zbędne symbole i inne niepotrzebne dane z pliku binarnego, aby zmniejszyć jego rozmiar. Użyjmy tego teraz. Zauważ, że poniższe polecenie nie uwzględnia pliku Words.db, ponieważ jest to plik bazy danych, a nie plik wykonywalny. Aby skopiować i zmniejszyć plik binarny ana, użyjemy poniższego polecenia, dodając opcję -s (shrink) oraz -b (kopia zapasowa) z sufiksem -S.
sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin
Przeniesienie plików do katalogu /usr/local/bin pozwala na porównanie rozmiaru pliku ana z jego wersją kopii zapasowej. Okazuje się, że plik ana został zmniejszony do niemal 60% pierwotnego rozmiaru.
ls -l /usr/local/bin
Podsumowanie
Polecenie install ma dość specyficzne zastosowanie. Dla wielu użytkowników może nie być stosowane codziennie ani nawet co miesiąc. Niemniej jednak jest to narzędzie, które warto znać i mieć w swoim arsenale. W sytuacjach, gdy jest potrzebne, zwiększa wydajność, upraszcza procesy i pozwala na oszczędność czasu.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.