Programowanie > Inne

Budowa skryptu podmieniającego pliki systemowe

(1/2) > >>

pikaczu:
Potrzebuję zbudować jakiś mini programik bądź skrypt do terminala który będzie w pełni zautomatyzowany.
Potrzebuję czegoś typu KLIKAM IKONKĘ i wszystko z automatu się wykonuje.
Chciałbym stworzyć paczkę która podmieniałaby pliki systemowe a także "coś dziwnego".

Zacznę od plików systemowych czyli sprawa nr.1...

- jest sobie folder o nazwie PLIKI
- w środku znajdują się pliki przede wszytkim graficzne: svg, png, jpg, gif

Chciałbym napisać prosty skrypt do terminala który po uruchomieniu:
- dałby dostęp do roota (po podaniu hasła)
- podebrałby pliki z folderu PLIKI
- skopiowałby te pliki w ściśle określone miejsca (np. /usr/share/icons  albo /usr/share/themes)
- wykonałby inne instrukcje jak update-icon-cache, upadte-grub oraz reboot

Powyższe to jedno a ta wcześniej opisana "dziwna rzecz" to:
sprawa nr. 2

Wytłumaczę na przykładzie pliku fstab o co mi chodzi...
Jest sobie fstab w którym widnieją przykładowe wpisy:

--- Kod: ---
UUID=D061-E445                            /boot/efi      vfat    umask=0077 0 2
UUID=e538e50a-5b3e-4d4f-aeec-26a7c201fed3 /              ext4    defaults,noatime,discard 0 1
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0
--- Koniec kodu ---

Chciałbym zbudować jakiś zautomatyzowany skrypt do terminala, który po uruchomieniu:
- otworzy edytor tekstu z prawami roota
- doda enter na końcu dowolnego wpisu dowolnym pliku
- dopisze do pliku wcześniej zaprogramowany zestaw znaków
- zapisze wyedytowany plik

i w efekcie końcowym powstanie coś takiego:


--- Kod: ---
UUID=D061-E445                            /boot/efi      vfat    umask=0077 0 2
UUID=e538e50a-5b3e-4d4f-aeec-26a7c201fed3 /              ext4    defaults,noatime,discard 0 1
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0
myramdisk  /tmp/ramdisk  tmpfs  defaults,size=4096m,x-gvfs-show  0  0

--- Koniec kodu ---

Powyższe to tylko przykład lecz chciałbym nauczyć się edycji plików za pomocą zautomatyzowanych skryptów a potem połączyć to wszystko z "pierwszą sprawą". Chodzi mi o zbudowanie zestawu takich niby to programików które bardzo szybko umożliwią konfigurację konkretnego systemu, np. instalujemy czystego Debiana, Ubuntu, Fedorę czy Manjaro a następnie po użyciu W/W mamy szybciuteńko przekonfigurowany system.

pavbaranov:
Automatyzm w zakresie plików systemowych źle wróży temu systemowi :)
To co chcesz zrobić w "sprawa nr 1" rozwali Ci system. Co najmniej w przypadku Archa (i pochodnych), po wykonaniu, nie dokonasz jego aktualizacji.
Prawidłowo coś takiego robisz poprzez:
1. dostarczenie tych wystrojów do katalogu ~/.local/share (w odpowiednie miejsce), lub
2. zbudowanie paczki z takimi wystrojami, nazwanie jej w sposób indywidualny i tak zbudowanej paczki zainstalowanie w systemie.

Paweł Kraszewski:
A do drugiego nie potrzebujesz edytora. Do tego właśnie są przeznaczone programy typu cat/awk/sed/grep/cut/sort/uniq (ewenualne w akcie desperacji Perl).

pikaczu:
Czyli nie zrobię czegoś w deseń roboty pod "cmd" w windows?
Chodzi mi o proste polecenia typu copy,paste,delete... z uprawnieniami roota i w automacie.

Dlaczego ma mi system rozdupcyć?
Jeśli (przykładowo) w /usr/share/icons wiem że jest folder papirus-maia a w nim folder 32x32 a w nim ikona o nazie network-cell-4.svg
i wiem że te ścieżki i nazewnictwo nie zmieniły się od lat...
to dlaczego automatyczna podmiana obrazka (ikony) ma rozwalić system?
Przecież gdy skrypt USUŃ/KOPIUJ wykona się to na miejscu nadal zostają te same pliki (nazewnictwo) które wcześniej było.
Po akualizacji cache ikon nie powinno nic się rozjechać jeśli nazewnictwo i miejsce umieszczenia nowo skopiowanych plików będzie identyczne.

Moim zdaniem w linuxach jest przeogromny burdel dot. właśnie ikon.
Zestaw /usr/share/icons zawiera ponad 170MB różnych ikonek które z powodu responsyności są powielane wiele razy.
Moim zdanie DE powinno w locie sobie ustawiać odpowiednią wielkość ikony tworząc z ikony 128x128 np. ikonkę 32x32 czy 16x16 tyle że wtedy takie DE to uruchamiałoby się pół godziny.

Dziwi mnie też, dlaczego większość programów pod linuxem używa ikonek systemowych a nie swoich, zastanawiam się kto coś takiego wymyślił. Usunie człowiek pewien pakiet z systemu i duża liczba programów (nie mówię o systemie) rozdupca się.

Wiecie o co mi w tym wszystkim chodzi?
Ano o to że aby przerobić wygląd jakiejś dystrybucji tak aby przypominała np. WINDOWS w całości - trzeba zająć się ponad 12000 plików które seryjnie są w każdym systemie. Bez przeróbki ikonka po ikonce a potem bez ich powielania nie ma szans dopracować system tak, aby to wszystko działało.

Dziwią mnie takie rozwiązania, albowiem całość porównuję do windows a nim ktoś wymyślił że każdy zewnętrzny program ma w instalatorze swoje ikony (te które później używa np. przy uruchomionym programie wewnątrz siebie). Żadko jakiś program łapie ikonki z systemu a w linuxie ma to miejsce cały czas. Usuwamy jakiś zestaw ikon np. Papirus i sporo programów które biorą stamtąd ikony już nie działa prawidłowo.
Niby to jest fajne rozwiązanie bo system używa mniej ram i czasu procesora gdy trzeba wrzucić gotową ikonę o odpowiedniej wielkości w jakieś miejsce w jakimś programie ... no ale próba zbudowania nowego pakietu tak aby system wyglądał tak jak konkretny użytkownik chce aby wyglądał graniczy z cudem.
Mamy np. ikonkę NETWORK. Jest ona powielona wiele razy ze względu na rozmiar. Zaczyna się chyba od 8x8, 16x16 i po przez 32x32 czy 64x64 śmiga aż do 256x256. Ilość tych ikonek następnie powielona jest na ilość pakietów, Papirus-Dark, Papirus, Papirus-Maya i tak dalej. Chcąc przygotować jedną wielką szatę graficzną (jasna, ciemna) trzeba przerobić około 122000 elementów znajdujących się w /usr/share/icons.

Dzisiaj sprawdziłem jak wygląda zabawa z tymi niby gotowymi pakietami i powiem szczerze, że chyba każdy projekt w 100% nie jest ukonczony. Po zastosowaniu różnych wersji dostępnych w systemie (download) zawsze zaczynają się krzaki bo po prostu po chwili zaczyna brakować ikonek na ekranie gdzieś pod jakimś paskiem menu i podobnymi.

Zatem, dlaczego developerzy w menedżerku pobierania pozwalają na udostępnianie takich niegotowych projektów?


pavbaranov:
@pikaczu - Mam dla Ciebie jedną radę: skoro rozwiązania z Windows Ci się podobają, na siłę chcesz linuksa (dowolnego) do Windows upodobnić, to szkoda Twojego (i naszego czasu) - używaj Windows. Nie chce mi się Ci tłumaczyć dlaczego dowolna dystrybucja, dowolne DE nie jest i nie zachowuje się jak to, co lubisz. Weź pod uwagę tylko, że:
1. nie każdy użytkownik chce mieć linuksa wyglądającego jak Windows,
2. nie każdy użytkownik chce mieć linuksa zachowującego się jak Windows,
3. nie każdy użytkownik chce mieć linuksa skonstruowanego jak Windows,
4. mnóstwo rozwiązań, o których piszesz (ikony, wystroje itp.) są zastrzeżone przez MS i ktoś, kto obecnie takie dostarcza dla linuksa robi to na własne ryzyko; zasadniczo nie wolno mu tego robić (upowszechniać) i działa co najmniej na skraju prawa (jeśli go nie narusza),
5. sposób działania tych wystrojów jest zgodny ze standardem przyjętym w linuksie (XDG) - m.in. po to, by ikony tworzone z myślą o jednym DE nadawały się do wykorzystania w innym DE.

Przyjmij też do wiadomości, że istnieją 2-3 zespoły tworzące takie wystroje:
1. "oficjalny", ten który odpowiada za całe środowisko,
2. niekiedy są one robione przez deweloperów danej dystrybucji,
3. różnych społecznościowych twórców, którzy lepiej lub gorzej radzą sobie z ich tworzeniem (ba, niektórzy z nich są takimi, jak choćby Ty, któremu nie chce się nawet sięgnąć do dokumentacji i "wiedzą lepiej"); pośród tych są bardzo różne i w różnym stopniu ukończone - niektóre doskonałe, niektóre nie.
Niestety - mając uprawnienia root - możesz w systemie zrobić dowolną rewoltę. Za jej zrobienie obciążać możesz wyłącznie siebie.
A reszty nie chce mi się tłumaczyć. Polecam mimo wszystko sięgnąć po dokumentację tworzenia wystrojów choćby dla jednego z DE, których chcesz używać.

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej