Autor Tema: OS X Darwin Unix bilješke  (Posjeta: 3714 )

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
OS X Darwin Unix bilješke
« : 19 Siječanj 2013, 18:30:16 poslijepodne »

Zašto? Između ostalog. Još jedan dijak je ovih dana pokvario sistemski perl na OS X-u. Preciznije na Snow Leopardu. Htio je samo dodat par perl modula. DBI koji već postoji i DBD::Pg. RTFM. Nema smisla više ponavljati kako se ne treba igrati sa sistemskim perl-om bilo kojeg OS-a koji ga ima.

Nakon popravljanja šćete, za rješenje izvornog zahtjeva izabrali smo perlbrew. To je tako općenito? I nije prilagođeno Darwin-u. RTFM's.
http://apple.stackexchange.com/questions/9973/is-there-a-beginners-guide-to-unix-from-the-os-x-point-of-view

Gotova rješenja?
Za perl 5.16.0 i Snow Leopard 'gotovo rješenje' je ovdje u komentaru: Ranguard | June 11, 2011 10:09 AM.
Zalijepiti u terminal slijedeći redak:
curl -L http://xrl.us/installperlosx | bash

Što je u toj skripti? Vidi:
https://github.com/ranguard/installing-perl/blob/master/scripts/install_perl_on_osx.sh

Kako s modulima? Pogledati točku 6. ovdje (Setup 'cpanm' for each perl):
http://blog.fox.geek.nz/2010/09/installing-multiple-perls-with.html

Pogledati i ostale točke na toj web stranici. Npr. točku 3. Povremeno zalijepit u terminal slijedeći redak:
env | grep PATH
da ne bude - 'triput je režem i opet kratka'.
« Zadnja izmjena: 19 Siječanj 2013, 19:00:04 poslijepodne glonga »

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
Configure local cpan(s)
« Odgovori #1 : 19 Siječanj 2013, 21:15:12 poslijepodne »

Opet krivo! Ako svakoj verziji hoćemo pridružit drukčije module.
http://blog.fox.geek.nz/2010/09/installing-multiple-perls-with.html
Točke (5.) 6. i 7. su u neskladu.
Točka 7. nije ispala kao "Configure local cpans" (množina) već "Configure local cpan" (jednina).
Zašto? Oba slučaja spremaju konfiguraciju u istu datoteku: /User/$USER/.cpan/, očekivana lokacije bi trebale bit npr. /Users/$USER/perl5/perls/perl-5.16.0/.cpan/ i npr. /Users/$USER/perl5/perls/perl-5.16.2/.cpan/.
Greška u PATH-u (pri instalaciji)? Ili u točki 7.?
$ perlbrew switch perl-5.12.2
$ cpan
# Answer all setup instructions
» o conf commit
» q


U našem slučaju pokušat ćemo:
which cpan
/Users/$USER/perl5/perlbrew/perls/perl-5.16.2/bin/cpan

which perl
/Users/$USER/perl5/perlbrew/perls/perl-5.16.2/bin/perl


Nema, dakle, nekog smisla koristit punu putanju do cpan-a kao:

$ perlbrew switch perl-5.16.0
$ /Users/$USER/perl5/perlbrew/perls/perl-5.16.2/bin/cpan
# Answer all setup instructions
» o conf commit
» q


To je 'blagoslov' 'gotovih rješenja' poput perlbrew-a.
Sad treba tražit grešku. U konfiguraciji pri instalaciji.
Točka 5.
$ perlbrew -v install perl-5.16.2

vs. Configure parametri i .cpan kao kod
http://troy.jdmz.net/perls/

Dodatno:
U datoteci npr. /Users/$USER/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0/CPAN.pm piše.
»Default values defined in the CPAN/Config.pm file can be overridden in a user specific file: CPAN/MyConfig.pm. Such a file is best placed in C<$HOME/.cpan/CPAN/MyConfig.pm>, because C<$HOME/.cpan> is added to the search path of the CPAN module before the use() or require() statements. The mkmyconfig command writes this file for you.«

Sad, je li lakše ponovo instalirati neku verziju perla s konfiguracijskim (Configure) parametrima, ili natjerat neku postojeću instalaciju napravljenu bez njih da prihvati (i zapamti u datoteci) cpan-ov o config kako ga opisuje Točka 7.? Ili prije dodavanja svakog modula (ako ih nema puno) proć ponovo narečenu Točku 7.? RTMF's.

Kad se sve zbroji, nakon svake instalacije neke verzije perla treba maknut datoteku /Users/$HOME/.cpan/CPAN/MyConfig.pm kao npr. ovdje 'prepisat' je preko njoj odgovarajuće Config.pm:
mv /Users/$HOME/.cpan/CPAN/MyConfig.pm /Users/$USER/perl5/perlbrew/perls/perl-5.16.2/lib/5.16.2/CPAN/Config.pm
i u njoj primjereno posložit putanje.
/Users/$USER/perl5/perlbrew/perls/perl-5.16.2/CPAN/build
/Users/$USER/perl5/perlbrew/perls/perl-5.16.2/CPAN/histfile
/Users/$USER/perl5/perlbrew/perls/perl-5.16.2/CPAN/sources
/Users/$USER/perl5/perlbrew/perls/perl-5.16.2/CPAN/prefs


Za svaki slučaj prije instalacije nekog modula nije naodmet provjerit da nije zaostala kakva /Users/$HOME/.cpan/CPAN/MyConfig.pm.
« Zadnja izmjena: 19 Siječanj 2013, 21:49:06 poslijepodne glonga »

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
postgress apache2 shebang
« Odgovori #2 : 20 Siječanj 2013, 21:21:15 poslijepodne »

Instalirao dijak PostgreSQL. Gotov. Binarni. Najnoviji. 9.22. Odavde.
Škljocabilno.
Počeo instalirat DBD::Pg iz terminala
dijak$ cpanm DBD:Pg
pa zapelo. Ne zna di mu je. Postgress. Još OS X ima pristojnu lokalnu tražilicu. Tu je.
/Library/PostgreSQL/9.2
i tako dalje za tražene podmape.

Domalo opet zove. Namontirao prve korisnike i prve baze podataka za testiranje i hvali se kako mu to komunicira ko u primjeru 2 + 2 = 4.

Taman mi se učinilo kako ga ne ću čut (ni vidit) nekoliko dana. Opet problemi. Još ću pod starost učit CGI programiranje.
CGI perl skripta mu daje Internal Server Error.
Prvo mi padne na pamet shebang. Reko: Shebang? Veli:
#!/usr/bin/env perl -wT
Reko: wtf.
Upali konzolu i vidi apache2 errorlog.
Di je konzola?
wtf
Cmd+Space+'console'+Enter
etc.
Uglavnom apache2 je tražio perl module uz sistemski perl.
Morat ću ić ća.
Dotad prepravljaj:
http://www.easysoft.com/developer/languages/perl/
i traži popriko ili RTFM o (re)konfiguriranju apache2 na OS X-u (glede perl modula naponase)
http://stackoverflow.com/questions/11024833/custom-perl-modules-on-apache2-server
ako ne pomogne, instaliraj i konfiguriraj svog apaša2, ustavi OS X-ov, a novom ne zaboravi dat novi port, ne :80.

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
korisnički i sistemski profil, varijable okružja
« Odgovori #3 : 21 Siječanj 2013, 13:39:01 poslijepodne »

U dijakovu slučaju se pokazalo da apache2 na OS X-u ne benda postavke putanje u sistemskom profilu (već samo svoje .conf datoteke). Dijak je ko unix početnik neke (temeljne) stvari preskočio. Bolje mu je bilo ne dirat sistemski profil. Nu ni superuseri ne znaju gdje što spada na OS X unixu. Vrijedno citiranja.
Pri pokretanju terminala bash čita slijedeće datoteke:

/etc/profile
~/.bash_profile
~/.bash_login &nbsp; (if .bash_profile does not exist)
~/.profile &nbsp; &nbsp; &nbsp;(if .bash_login does not exist)


Pri pokretanju bash ljuske učitava se .bashhrc.
OS X pritom dodatno koristi i ~/.MacOSX/environment.plist, moguće je da je i to zbunilo apache2 ako taj proces uopće čita putanje iz /etc/paths, koje, uzput, dijače trebaš vratit na izvorne.
Apache .conf datoteke je dosad znao prepisati Apple pri ažuriranju OS-a (npr. ovdje). Na tom linku vrijedi pretražiti pojmove vezane za apache, apache konfiguraciju… etc. zbog posebnosti tog 'sistemskog' apache2, ili pak ozbiljno razmotriti instalaciju 'svog' apache2.

O korisničkom i sistemskom path-u online, bez velikog listanja po gugl rezultatima, s prve stranice rezultata:
OS X: Change your PATH environment variable

Bez panike ako ne postoji: /Users/dijak/.profile, na OS X-u taj path je isto što i ~/.profile ili /Users/$HOME/.profile

Bash: about .bashrc, .bash_profile, .profile, /etc/profile, etc/bash.bashrc and others
Ovakvi sažetci nekako zaobiđu knjige i priručnike.

Working with the terminal in OSX:An absolute beginner's guide
Lik kojem to (ovdje) nije posao napisao je uzput prilično dobar vodič za totalne početnike. Online reference na dnu vodiča daju još dobrog štiva.

Kirin (pra)stari cgi101 je još uvijek živ, a neke stvari se nisu otad promijenile.

A što s perl modulima i apašom2? Čini se da je odgovor tu:
Perl apache httpd.conf
A ne tu?
Custom Perl Modules on Apache2 Server
OS X apache2 nema httpd-perl.conf na putanji /etc/apache2
Je li dovoljno samo napraviti httpd-perl.conf s odgovarajućim chmod i chown i namontirat je u /etc/apache2/extra/httpd-perl.conf s npr. slijedećim sadržajem?

<IfModule env_module>
   SetEnv PERL5LIB "/Users/dijak/perl5/perlbrew/perls/perl-5.16.2/lib;/Users/dijak/perl5/perlbrew/perls/perl-5.16.0/lib;"
</IfModule>

Čita li /etc/apache2/httpd.conf čitavu mapu /etc/apache2/extra ili mu to negdje treba reć?
Jednostavno postavit SetEnv PERL5LIB u httpd.conf?
Ili u httpd.conf dodat:

<perl>
use lib qw(
   /relative path1
   /relative path2
);
</perl>

Samo što je tu relative path? U odnosu na apache2? U odnosu na (sistemski) perl?
Stavit puni path i oprobat? Zašto (i kako) bi servisu (procesu) www (apache2) dao da švrlja po tvojoj $HOME mapi? Hint: group, user, staff, wheel, daemon…

Treba oprobat, ili pak pregledat nepreglednu dokumentaciju, da bi se vidjelo hoće li dodavanje httpd-perl.conf raditi očekivano ili je to vezano uz nešto drugo što se zove perl_mod, mod_perl, apache mod_perl
« Zadnja izmjena: 21 Siječanj 2013, 13:59:20 poslijepodne glonga »

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
apache error (13) Permission denied: …
« Odgovori #4 : 21 Siječanj 2013, 17:51:04 poslijepodne »

Jedan test s promjenom shebanga upućuje na to da apache ne će pročitati ni perl module iz korisnikove $HOME mape.
Shebang
#!/Users/dijak/perl5/perlbrew/perls/perl-5.16.2/bin/ perl -wT
u perl CGI skripti daje grešku 13.
apache error (13) Permission denied: …

Ako ne može (lako) pristupit perlu instaliranom u korisnički $HOME folder, kako će doć do modula?

A je to?
Running CGI's from User Home Directories

Službena dokumentacija o tome mi govori da to nije baš teknika za početnike.
»However, if suEXEC is improperly configured, it can cause any number of problems and possibly create new holes in your computer's security. If you aren't familiar with managing setuid root programs and the security issues they present, we highly recommend that you not consider using suEXEC.«

Radije deinstalirat perlbrew i sve što je on donio, jer to očito nije lak put za sastavit nesistemski perl za cgi skripte s perl cpan modulima.
I oprezno kopirat /usr/local/bin metodu opisanu u Multiple Perl Installations. Pozorno složit svaki put "…Configure -de -Dprefix…"
 A što s drugim pivovarama? Macports i Fink su meni osobno dodijali. Homebrew još uvijek trpim. Njegovi autori sami kažu da Homebrew ne podnosi Macports ni Fink na istom računalu. 'Ručno' kompajlirani programi i Homebrew programi navodno "sretno koegzistiraju" u /usr/local/bin. Nikad mi se nije sviđala ideja chown & chmod na /usr/local/bin no još uvijek ju trpim. Čini mi se da bi instalacija perla (i to baš jedne verzije iste kao sistemska 5.10) u usr/local/bin bila dobar test te tvrdnje o koegzistenciji. Pa ako se zavade — zbogom Homebrew, a s time i svi postojeći package manageri za OS X. Kompajliraj što se može, što ne može nikom ništa. Bar ćeš (više) znat o tome što radiš. Jer kad package manageri to naprave, nije ti baš sve transparentno, ni baš dobro dokumentirano, a najčešće se ne ponaša onako kako je dokumentirano. Nešto kao upravljanje perl modulima za više verzija instaliranog perla perlbrewom.
« Zadnja izmjena: 21 Siječanj 2013, 18:01:33 poslijepodne glonga »

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
Using CPAN modules without Root access
« Odgovori #5 : 23 Siječanj 2013, 22:08:46 poslijepodne »

More izgledat i smišno i žalosno, nu vrijedilo bi oprobat ad hoc rješenje koje imitira web hosta na lokalnom računalu.

Using CPAN modules without Root access

Auktor nije zalazio u detalje, no ako korisnik nema root pristup ne može ni tu instalirat ništa, valda treba skinut odgovarajuću tar.gz arhivu modula xxx::yyy, raspakirat i postavit xxx.pm u mapu /…/npr-cgi-bin/lib/yyy/

Normalno, u svaku .pl datoteku treba pri vrhu dodat puni path do modula (biblioteke, library-ja)

use lib(/full/path/to/cgi-bin/lib);

Zašto? Stvari se tu i dandanas ponašaju mušičavo unatoč smionim tvrdnjama o tomu kako CPAN ne će smrljat sistemski perl dodavanjem korisničkih modula u /Library/Perl/…/…/ a ne u /System/Lybrary/Perl/…/…/.

.conf datoteke u /Library/WebServer/Documents/…/…/ se prečesto pokažu nedjelotvornima.
U starom slučaju sql-ledger-a @INC se nije ažurirao unatoč jednom (ispravnom) načinu postavljanja okružja PERL5LIB. (pri dnu stranice, naslov: sql-ledger, točka 7.):

$ENV{PERL5LIB} .= $ENV{PERL5LIB} .= ":/sw/lib/perl5/darwin-thread-multi-2level"

Stvar nije radila, koliko se sjećam, ni na kasnijim okružjima od onog opisanog (OS X 10.4), poruke o greškama su bile kriptične… uglavnom — nije radilo.
Dakle, dodavanjem pune putanje do modula u svaku .pl skriptu, skripte su, provjereno, radile.
U slučaju tadašnjeg perl-a instaliranog tadašnjim Fink-om (/sw/…/, ili tadašnjim MacPorts-ima /opt/…/) stvari su funkcionirale kao u tamošnjem primjeru:

use lib '/sw/lib/perl5/5.8.6/darwin-thread-multi-2level';

Pritom je početnik zaštićen od grešaka (sigurnosni propusti) koje se mogu dogodit pri mrljanju po .conf datotekama… ako pritom ne mora instalirat module cpan-om, cpanm-om, cpanp-om, kompajlirat iz izvornog kôda… kao u Using CPAN modules without Root access i ako se pritom nešto nije krivo razumjelo. Previše ako? Oprobat čim se nađe vremena.
« Zadnja izmjena: 23 Siječanj 2013, 22:53:31 poslijepodne glonga »

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
Spotlight NAS Time Capsule
« Odgovori #6 : 27 Siječanj 2013, 15:17:28 poslijepodne »

Spotlight pretraživanje na jednom NAS-u uporno ne daje rezultate pretrage. Iz rezultata web pretrage nije jasno je li to uopće podržano na konfiguraciji na kojoj se dogodilo. Problem je bio u jednom korisničkom računu. Na ostalim korisničkim računima (na istom računalu) pretraživanje je NAS-a uredno radilo (na njihovim korisničkim mapama/sadržajima). Uspoređivanjem se nije mogla pronaći razlika u postavkama koja bi mogla biti uzrok tome. EasyFind je spor. Nema index. Nema ni grep index. Nema ni GUI. Puno je brži. Oprobano rješenje radi:

find /path -name '*.pdf' -ls -exec pdftotext {} - \; | grep "your query"

Pdftotext nije instaliran? Instalirano Homebrew-om. Braumeister ima i Xpdf i Poppler.

Ostala rješenja (Tracker, Lucene, Sphinx, Xapian… ) u klasi Desktop Search Engines su izgledala pomalo prezahtjevno. Još jedno indeksiranje (uz postojeći Spotlight) i održavanje baze, etc.
« Zadnja izmjena: 27 Siječanj 2013, 15:22:15 poslijepodne glonga »

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
Odg: Using CPAN modules without Root access
« Odgovori #7 : 28 Siječanj 2013, 16:25:32 poslijepodne »
More izgledat i smišno i žalosno, nu vrijedilo bi oprobat ad hoc rješenje koje imitira web hosta na lokalnom računalu.
Using CPAN modules without Root access

Ne bi vrijedilo. Velika tlaka. Uz sistemski perl na OS X-u se baš i ne instalira neka množina modula. Provjereno listanjem svih instaliranih modula:
$ instmodsh
Available commands are:
   l            - List all installed modules
   m <module>   - Select a module
   q            - Quit the program
cmd? l

Broj modula potrebnih za CGI skriptiranje je priličan. Uz narečeni način treba ručno dodavat i poluautomatski razrješavat depedencije. Nužni moduli su bili DBI i npr. DBD::Pg.
Depedencije za DBD::Pg (OS X, perl 5.10.0) su ovdje. Skoro svaki modul-depedencija ima svoje depedencije. Tlaka za ručno razrješavanje.

Povratak Perlbrew-u ili "ručnim" instalacijama perla. U deinstaliranom Perlbrew-u greška je bila u mjestu instalacije:
 ~/perl5/perlbrew/bin

Treba nam neka "system-wide" lokacija kao ovdje:
export PERLBREW_ROOT=/opt/perl5

ili npr.
export PERLBREW_ROOT=/usr/local/perl5162

etc. (uz npr. Homebrew u /usr/local/)
export PERLBREW_ROOT=/usr/local/Cellar/perl5162


Vrijedi pročitati i:
Installing an Alternate Perl with perlbrew
Alternate Perls
Perl strategy for a new Snow Leopard user?

Vrijedilo je zabilježiti i to da uz ranije Perlbrew-om instaliran perl 5.16.2 nije uspjela instalacija modula DBD::AnyFile. Pretpostavljam da je to bilo zbog "defaultnih" postavki pri kompilaciji. Pri novoj kompilaciji Perlbrew-om ili "ručno" potrebno je proučiti veliko štivo koje terminal izbaci za sistemski perl na upit:
$ perl -V

U tom ispisu je par zabrinjavajućih stvari glede OS X-a. Uz podatke o kompajleru i linkeru je i par /usr/local i /usr/local/… adresa. Ne znam je li sistem od prve instalacije koristio /usr/local mapu ili je tu naknadno Xcode ostavljao svoje alate, a preko njih je (ili okolo njih?) Homebrew slagao svoje i pritom izmijenjao dozvole i vlasništvo nad mapama i datotekama. Novi perl bi, opreza radi, trebalo držat čitavog na jednom mjestu, ne dat mu da instalira išta u /usr/local/lib prvenstveno. Zbog shebanga ga simbolički linkat na /usr/local/bin. /usr/bin ne dirati, to je Apple-ovo. Attempt no landing there.

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
Visinske pripreme
« Odgovori #8 : 28 Siječanj 2013, 22:12:48 poslijepodne »
Using CPAN modules without Root access

I bez testiranja ne vjerujem da bi na način opisan na gornjoj adresi radio CPAN modul DBD::Pg u nekoj mapi tipa /…/cgi-bin/lib/DBD/Pg.pm.
Taj modul nije dostupan ni u ActiveState distribuciji za OS X (niti za bilo koji treći OS!) ni za jedan perl. Zašto? Failed. Iz build log-ova je jasno (npr. ovog) kako ne može nać putanje do postgres-a. Pri ručnoj instalaciji tu je bio zapeo i dijak, kao u početku ovog upisa.
OT. ActiveState nema dostupan DBD::Pg za Windoze. Da mi se sjetit kako mi je uspjelo instalirat sql-ledger na W2K server prije x godina. Nešto mi se čini da nije bio instaliran Cygwin. Je li tada postojao Strawberry i kako uopće upravlja modulima? CPAN klijentom. Ne sjećam se. Bit će je tada (W2K) ipak bio Cygwin u pogonu.

Daklem, imao je uporabiv DBD:Pg i masu drugih modula, međutim to se pokazalo promašajem, jer DBD::Pg i niz drugih modula ne trebaju računalnom ljudskom korisniku 'dijak' već daemon korisniku 'apache2' (www). Treba redefinirat ciljeve i putove do njih.

DBD::AnyFile se nije dao instalirat na default postavkama uz Perlbrew.
Online odgovora na problem nema. Pretpostavljam da će se po primijenjenoj marfologiji morat instalirat četiri varijante istog perla, ako ne bude radio ni na jednoj, pokušat s četiri varijacije druge verzije. Koje četiri varijante?
install_perl 5.x.y
install_perl 5.x.yd {Build with debug symbols (-g)}
install_perl 5.x.yt {Build with thread support}
install_perl 5.x.ydt {Build with debug symbols (-g) and thread support}

Za najnoviji stabilni perl 5.16.2, x = 16, y = 2.

Pozorno čitanje Install datoteke bit će nužno, ali ne će bit dovoljno.
Nužno je i čitanje (pozorno) datoteke Readme.macosx, no ni to ne će bit dovoljno. Iz teksta je jasno da je neažuran još od pojave Leoparda (10.5.6). Tekst je zadnji put ažuriran 24. 2. 2006. kako stoji na dnu datoteke/teksta.
Uglavak Known problems nadalje zabrinjava jer spominje /usr/local/lib u kontekstu instalacije perla. Homebrew se na istoj lokaciji zavadio s istim ili sličnim datotekama koje je tamo zatekao. Ovdje i inače /…/lib/ je zbunjujući jer se online bez preciziranja rabi i za biblioteke potrebne za instalaciju perla i za kasnije instalirane CPAN module.
Tcl/Tk problemi nas ne zanimaju. Treba nam jedan perl za slijedeći satav tima: OS X, perl, perl-cgi, apache2, postgres, tex.

Zapekljancija. Perlbrew uz shebang #!/usr/bin/env perl … nije rješenje za CGI skripte. env je tu env ljudskog korisnika, a ne env daemona www (apache2). Za tu namjenu biram shebang #!/usr/local/bin perl … koji će nać nanovo instaliran perl na toj adresi. Ostaje otvoreno pitanje hoće li apache2 bez dalnjih instrukcija u skripti (tipa: use lib '/usr/local/lib/perl5xy) pronaći CPAN module instalirane uz taj perl i uz sve poduzete mjere opreza još od faze 'Configure perl'. Uglavak Installation Directories pozorno pročitati. Isti dokument proučiti oko rezultata upita Cmd+F "@INC" kako bi se izbjeglo run-time definiranje "use lib", "$PERL5LIB" i sl. Nastojimo ne dirati .conf ni .plist konfiguracijske datoteke za apache2.
Nakon instalacije paziti na cpan. Koji cpan pokrenuti? Navesti punu putanju (npr. /usr/local/bin/cpan) da ne bi opet 'slučajno' ažurirali sistemski perl. Kako možemo bit sigurni da npr. /usr/local/bin/cpan ne će dirati sistemski perl?

Da brigu oko svega pustimo Perlbrew-u uz path /usr/local? U dijakovu slučaju na toj adresi je već Homebrew. Nekako mi se čini da će na toj lokaciji manje problematična bit 'ručna' instalacija, da će se Homebrew prije zavadit s Perlbrew-om, čak i u Homebrew-ovu podrumu /usr/local/Cellar.
« Zadnja izmjena: 28 Siječanj 2013, 22:57:30 poslijepodne glonga »

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
Veliko štivo
« Odgovori #9 : 29 Siječanj 2013, 16:05:11 poslijepodne »

Kako je (bio) konfiguriran sistemski Perl?

$ perl -V:config_args
config_args='-ds -e -Dprefix=/usr -Dccflags=-g -pipe -Dldflags= -Dman3ext=3pm -Duseithreads -Duseshrplib -Dinc_version_list=none -Dcc=gcc-4.2';
$

Što sve znače ovi prekidači?
Configure i Cmd+F:
-ds -e : Zašto ne -des?
-d : use defaults for all answers.
-e : go on without questioning past the production of config.sh.
-s : silent mode, only echoes questions and essential information.
Izbor: ništa. Vidi: ^, etc.

-D : define symbol to have some value:
 -D symbol : symbol gets the value 'define'
 -D symbol=value : symbol gets the value 'value'

-Dprefix=/usr : prefiks
Ovdje je sistemski perl!
Prvi izbor: -Dprefix=/usr/local/perl5ydt (perl5162dt)

(Poslije symlink na /usr/local/bin. Nešto kao tu:^ Common flexible binary. Ili tu:^ Paziti pri prilagodbi slijedećih redaka za svoje potrebe (/usr/bin/ - ovo Apple pri prvom 'Software Update' može prepisati, osim toga lako je moguće time prepisati sistemski perl omaškom; dakle, /usr/local/bin):
'Using Perl 5.14.1 as an example, type the following two lines
ln /opt/perlbrew/perls/perl-5.14.1/bin/perl /usr/bin/perl5
ln /opt/perlbrew/perls/perl-5.14.1/bin/perl5.14.1 /usr/bin/perl5.14.1'

Drugi izbor: -Dprefix=/opt/perl (Ovdje je by default MacPorts (/opt). Njega ne ćemo koristiti. Izbor je bolji radi odvajanja instalacije od Homebrew-a i drugih stvari u /usr/local. Prefiks sadrži i string perl.
Install: 'Also, if $prefix contains the string "perl", the library directories are simplified as described below. …' etc. Policy_sh.
Izbor može bit gori jer nešto može pri instalaciji zapet u traženju /usr/local te zbog očuvanja shebanga u cgi skriptama. Na većini sustava koji imaju sistemski perl očekivani shebang u cgi skriptama je #!/usr/local/bin perl …

-Dccflags=-g : ccflags
Install: To clarify, those ccflags values are not Configure options; if passed to Configure directly, they won't do anything useful (they will define a variable in config.sh, but without taking any action based upon it). But when passed to the compiler, those flags will activate #ifdefd code.
… Cmd+F'-g'… and/or support for the system debugger by adding -g to the optimisation flags.
Hints … Cmd+F'ccflags'… Known optimizer problems.
Izbor: -Dccflags=-g
Značenje^: '… install_perl 5.x.yd Build with debug symbols (-g)'

-pipe : For gcc, adding -pipe speeds up compilations for some, but apparently some assemblers can't read from stdin. (It also slows down compilations in other cases, but those are apparently rarer these days.)

-Dldflags= : ldflags
Hints: Perl bundles do not expect two-level namespace, added in Darwin 1.4. But starting from perl 5.8.1/Darwin 7 the default is the two-level.
Install: The addition to ldflags is so that the dynamic linker knows where to find the BerkeleyDB libraries. For Linux and Solaris, the -R option does that. Other systems may use different flags. Use the appropriate flag for your system.
Izbor: -Dldflags=

-Dman3ext=3pm : man3ext
Configure: What suffix should be used for the $package library man pages? … *3pm) dflt=3pm …
Izbor: ovo ne će bit definirano.

-Duseithreads : useithreads
Hints: The libraries are not threadsafe as of OS X 10.1. Fix when Apple fixes libc. … Warning, there might be problems with your libraries with regards to threading. The test ext/threads/t/libc.t is likely to fail.
Značenje^: '… install_perl 5.x.yt Build with thread support; install_perl 5.x.ydt Build with debug symbols (-g) and thread support
Izbor: -Duseithreads (očito je problem u međuvremenu riješen).

-Duseshrplib : useshrplib
Hints: useshrplib=true results in much slower startup times. 'false' is the default value. &nbsp;Use Configure -Duseshrplib to override.
Install: Building a shared Perl library.
Readme.macosx: libperl and Prebinding & Tk problem.
Izbor: ne će bit uvršteno.

-Dinc_version_list=none : inc_version_list
Install: Configure will search for binary compatible versions of previously installed perl binaries in the tree that is specified as target tree, and these will be used as locations to search for modules by the perl being built. The list of perl versions found will be put in the Configure variable inc_version_list.
Configure: 'List of earlier versions to include in @INC?' etc.
Izbor: -Dinc_version_list=none

-Dcc=gcc-4.2 : cc
Install: To compile with gcc, if it's not the default compiler on your system, you should run: sh Configure -Dcc=gcc
Terminal: $ gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
Copyright (C) 2007 Free Software Foundation, Inc.
Apple Developer: OS X ships two compilers and their corresponding toolchains. The default compiler is based on GCC 4.2. In addition, a compiler based on GCC 4.0 is provided. Older versions of Xcode also provide prior versions. (Precizan i informativan, po običaju.)
MacPorts: … with Xcode 3.2 on Mac OS X 10.6, gcc 4.2 is the default compiler.
Izbor: -Dcc=gcc-4.2

etc.
U koji direktorij skinuti source code?
Install: 'NOTE: You must not specify an installation directory that is the same as or below your perl source directory. If you do, installperl will attempt infinite recursion.'
Znači li ovo da ne mogu koristit uobičajenu mapu za izvorne kodove (/usr/local/src)? Ne.
Na trenutak mi se učinilo da je netko negdje napravio takvo što. Nije. U linkanom slučaju instalacijska mapa je /usr/local/perl5xy, a izvorni kôd je u /usr/local/perl5xy/build.
« Zadnja izmjena: 29 Siječanj 2013, 16:29:03 poslijepodne glonga »

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
Korak po korak
« Odgovori #10 : 29 Siječanj 2013, 19:12:53 poslijepodne »

Korak po korak slijedimo postupak instalacije koji je izložio Troy Johnson.
"sudo mkdir /usr/local/perl588
sudo chown $USER:$USER /usr/local/perl588
cd /usr/local/perl588/
mkdir build cpan
cd build/
wget http://www.cpan.org/src/5.0/perl-5.8.8.tar.gz
tar xzvf perl-5.8.8.tar.gz
cd perl-5.8.8
rm -f config.sh Policy.sh ; sh Configure -de -Dprefix=/usr/local/perl588
make && make test && make install
/usr/local/perl588/bin/perl -MCPAN -e shell"

sudo mkdir /usr/local/perl588
Dijak nije sudoer. Logirati se u OS X GUI na administratorski korisnički račun. Mijenjati terminalom sudoers list mi ne pada na pamet. Pravimo perl5162dt. Pišemo:
sudo mkdir /usr/local/perl5162dt

sudo chown $USER:$USER /usr/local/perl588
Promjena vlasnika. Isti administrator na dijakovu računalu je već instalirao Homebrew. On je vlasnik /usr/local. Svejedno pišemo:
sudo chown $USER:$USER /usr/local/perl5162dt

cd /usr/local/perl588/
Prijelaz u odredišnu mapu:
cd /usr/local/perl5162dt

mkdir build cpan
Pravimo mape /usr/local/perl5162dt/build i /usr/local/perl5162dt/cpan. Pišemo isto:
mkdir build cpan

cd build/
Prelaz u mapu build. Što će mu 'trailing /'? Prepisujemo:
cd build/

wget http://www.cpan.org/src/5.0/perl-5.8.8.tar.gz
Pišemo:
wget http://www.cpan.org/src/5.0/perl-5.16.2.tar.gz

tar xzvf perl-5.8.8.tar.gz
Pišemo:
tar xzvf perl-5.16.2.tar.gz

cd perl-5.8.8
Pišemo:
cd perl-5.16.2

rm -f config.sh Policy.sh ; sh Configure -de -Dprefix=/usr/local/perl588
Brišemo config.sh i Policy.sh. To znači da moramo definirati i one prekidače za koje narečene dvije datoteke imaju standardne postavke? Treba li još jednom proć prethodni upis? config.sh i Configure nisu ista stvar (Install).
-de : default i ignoriranje config.sh
-s : nedostaje, ovo će bit 'bučno'.
Prolazimo sve parametre iz prethodnog upisa i pišemo:
rm -f config.sh Policy.sh ; sh Configure -de -Dprefix=/usr/local/perl5162dt -Dccflags=-g -Dldflags= -Duseithreads -Dinc_version_list=none -Dcc=gcc-4.2

make && make test && make install
Prepisujemo:
make && make test && make install

/usr/local/perl588/bin/perl -MCPAN -e shell
Pišemo:
/usr/local/perl5162dt/bin/perl -MCPAN -e shell

Sad je jasnije zašto je uz mapu build pravio i mapu cpan?. Nije. Nije neka gnjavaža izravnim odgovorima popunit podatke koji će bit (očekivano) u mapi
/usr/local/perl5162dt/lib/5.16.2/CPAN/Config.pm
Otkud se u citiranom primjeru našlo:
/usr/local/perl5101/lib/5.8.8/CPAN/Config.pm?
Pri instalaciji novog perla taj (5.10.1) je bio aktivan?

Pri instalaciji nekoliko verzija Perl-a Perlbrew-om ovaj dio se prolazio (konfiguracija cpan-a). Pamtimo i u odgovorima pišemo putanje:
build dir : /usr/local/perl5162dt/cpan/build
histfile : /usr/local/perl5162dt/cpan/histfile
keep_source_where : /usr/local/perl5162dt/cpan/sources
prefs_dir : /usr/local/perl5162dt/cpan/prefs

Opet:
/usr/local/perl5162dt/bin/perl -MCPAN -e shell

Bundle::CPAN će nam svakako trebati. Uz Perlbrew se cpan config žalio kako mu nesostaje YAML.
Trebat će i Bundle::LWP.
Prepisujemo:
install Bundle::CPAN Bundle::LWP

Dio oko linkanja u /usr/bin/local
su -
cd /usr/local/
ln -s perl5122 perl

su -
izbjegavam.
Uostalo, ako i prepravimo na:
su -
cd /usr/local/
ln -s perl5162dt perl
to će, koliko razumijem, samo promijeniti defaultni perl za korisnika Troy ili pak korisnika administrator na dijakovom računalu.
Korisniku dijak ne treba ni /usr/local/bin na prvom mjestu u PATH-u. Treba mu (samo) funkcionalan shebang #!/usr/local/bin perl …
Krivo razumijem? Treba korisniku administrator na dijakovu računalu! Excessive paranoia! Otkud znam da
/usr/local/perl5162dt/bin/perl -MCPAN -e shell
ne će općiti (i) sa sistemskim perlom, ako ne postavim novi perl (perl5162dt) kao aktivni?
Možemo slijediti ovaj dio od početka (naslov: Common Flexible Binary) pa kontrolirati što se događa s PATH-om aktivnog korisnika prije i poslije i što se nalazi u relevantnim mapama (/usr/local/perl) prije i poslije.
Prije nastavka instalirati cpanminus i cpanplus ako nisu već instalirani.
Iz slijedećeg dijela uzimamo prva dva redka:
cd /usr/local/bin/
for f in /usr/local/perl588/bin/* ; do echo $f ; b=`basename $f` ; ln -s $f ${b}588 ; done
Prepisujemo:
cd /usr/local/bin/
for f in /usr/local/perl5162dt/bin/* ; do echo $f ; b=`basename $f` ; ln -s $f ${b}5162dt ; done
Što će to učiniti? Zapisati u /usr/local/bin simbolične linkove: perl5162dt, cpan5162dt … etc.

Ako se kasnije pokaže da npr. DBD::AnyFile ima problema s dt perlom ponovit ćemo nakon kompajliranja odgovarajuće varijante:
- čista varijanta:
for f in /usr/local/perl5162/bin/* ; do echo $f ; b=`basename $f` ; ln -s $f ${b}5162 ; done
- d(ebug) (-g) varijanta:
for f in /usr/local/perl5162d/bin/* ; do echo $f ; b=`basename $f` ; ln -s $f ${b}5162d ; done
- t(hreaded) varijanta:
for f in /usr/local/perl5162t/bin/* ; do echo $f ; b=`basename $f` ; ln -s $f ${b}5162t ; done

Nadalje:
cd /usr/local/bin/
for f in /usr/local/perl/bin/* ; do echo $f ; b=`basename $f` ; if [ ! -f $b ]; then ln -s $f $b ; fi ; done
Prepisujemo. Ako dobro razumijem, tek ovo će u našem slučaju u mapu /usr/local/bin zapisati simbolične linkove: perl, cpan … etc. koji upućuju na defaultni perl u /usr/local/perl, a ovi na /usr/local/perl5162dt.
Nije dobro? Zašto ovako? Pa trebat će nam samo jedna verzija Perl-a mimo sistemske. Da, ali još ne znamo koja. Ovo rješenje "Common Flexible Binary" nije loše za takav scenarij.


Još razmatranja? Ne. Hvala.
"Common Flexible Binary" mi se čini boljim od prerađivanja načina na koji je to riješio John Karr:
"Using Perl 5.14.1 as an example, type the following two lines
ln /opt/perlbrew/perls/perl-5.14.1/bin/perl /usr/bin/perl5
ln /opt/perlbrew/perls/perl-5.14.1/bin/perl5.14.1 /usr/bin/perl5.14.1"
U nešto kao:
ln /usr/local/perl5162dt/bin/perl /usr/bin/perl
ln /usr/local/perl5162dt/bin/perl5.16.2 /usr/bin/perl5.16.2

Narečeno rješenje je puno elegantnije za mnoge linux-e kod koji se ne treba plašit mogućnosti da će 'Software Update' prepisati zatečeni sadržaj mape /usr/bin, a to u OS X-a nije slučaj. Zgodno bi to bilo primijeniti i u našem slučaju i u mapi /usr/local/bin kad bismo unaprijed znali hoće li maksimalistička varijanta perl5162dt bit u sukobu s instalacijom nekih modula npr. DBD::AnyFile. Google ne pamti da se netko žalio na probleme pri instalaciji modula DBD::AnyFile? Ili?
« Zadnja izmjena: 29 Siječanj 2013, 19:22:01 poslijepodne glonga »

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
Zapis o tijeku
« Odgovori #11 : 30 Siječanj 2013, 00:43:34 prijepodne »

Zapelo je na:
sudo chown $USER:$USER /usr/local/perl5162dt
Réšeno odmah:
sudo chown superdijak /usr/local/perl5162dt

Previd u gornjem upisu. Troy je to radio na nekom linuxu gdje postoji user:group - root:root pa izraz $USER:$USER daje root:root, user: root i group: rooot. OS X ne dopušta root account. U grafičkom sučelju (l)user dijak ima standardni korisnički račun u kojem radi obične svakodnevne stvari (najviše na fckbook-u), a ima i administratorski korisnički račun 'superdijak' na kojem administrira (rijetko). Po postavi OS X-a superdijak je na sudoers listi, dijak nije. Provedba gornje naredbe u terminalu i pogled na 'ls -l' pokazala mi je nešto neobično za OS X. Očekivani par user:group je bio superdijak:wheel, ali je tamo kao i na većini mapa stajalo superdijak:admin. Otkud grupa admin u OS X-ovim /usr/local mapama? Pretpostavljam da je to tako posložio Homebrew, ili pak superdijak pri instalaciji Homebrew-a. Je. Why does Homebrew say sudo is bad? Da je group: wheel - trebao bi sudo i user-u/owner-u: superdijak za promjene u takvoj mapi?

Instalacija trajala i završila. Bacam oko na /usr/local. U /usr/local/bin i usr/local/lib ništa novo. /usr/local/perl5162 ima 5 mapa: bin, build, cpan, lib i man. Izgleda da je sve zatvoreno u jednu krovnu mapu i izolirano. bin ima 41 izvršnu datoteku. Ima toga. Ne vidim cpanm. Cpanp je tu. /usr/local/perl5162/cpan je prazna mapa. /usr/local/perl5162/lib ima podmape 5.16.2 i site_perl, svaka sa svojim sadržajem. /usr/local/perl5162/man ima podmape man1 i man3 sa svojim sadržajima. Izgleda u redu.

U mapi /usr/local/perl5162/lib/5.16.2 postoji podmapa Config, nema (još) datoteke Config.pm. Tu ni ne treba bit? Već u /usr/local/perl5162/lib/5.16.2/CPAN.
Slijedi:
/usr/local/perl5162dt/bin/perl -MCPAN -e shell
i greška:
mkdir /Users/superdijak/.cpan/CPAN: Permission denied at /usr/local/perl5162dt/lib/5.16.2/CPAN/HandleConfig.pm line 583.
Idemo vidjet što je:
cd /Users/superdijak
ls -al
tamo postoji relativno stara datoteka (zapravo mapa) .cpan (root:staff).
Što sad? Obrisat? Napravit backup? Preimenovat? Hoće li naredba:
/usr/local/perl5162dt/bin/perl -MCPAN -e shel
prepisat postojeću mapu i kako? Inkrementalno? Backup:
mv /Users/superdijak/.cpan /Users/superdijak/.cpanold
Permission denied
sudo mv /Users/superdijak/.cpan /Users/superdijak/.cpanold
Pospremljeno.
Ponovo:
/usr/local/perl5162dt/bin/perl -MCPAN -e shell
Radi.
Would you like to configure as much as possible automatically? {yes} N
Konfigurirat ćemo ručno. Ako pogriješimo, kao što i jesmo lupajući Enter na prvi upit, ima ponovo:
CPAN build and cache directory? {/usr/local/perl5162dt/cpan}
Download target directory? {/usr/local/perl5162dt/cpan/sources}
Directory where the build process takes place? {/usr/local/perl5162dt/cpan/build}
Directory where to store default options/environment/dialogs for
building modules that need some customization? {/usr/local/perl5162dt/cpan/prefs}
Sve ostalo: Enter.
Par upozorbi: applypatch not found in path. Možda je DBD::AnyFile zapinjao zbog ovog? OS X Darwin ima neki svoj program za ovo (applypatch). Proučiti kasnije! Nedostaje YAML. To ćemo odmah nakon cpan konfiguracije dodat.
Bilježim:
Preferred method for determining the current working directory? {cwd}
Uobičajeno je pwd, a zapisano kao gore u Config.pm.
Na cpan promptu završavamo konfiguraciju zapisivanjem na disk:
o conf commit
Vidi sad odgovora:
commit: wrote '/Users/superdijak/.cpan/CPAN/MyConfig.pm'
Izlazimo iz okružja s:
q Enter
Idemo vidit što piše u /usr/local/perl5162dt/lib. Nema Config.pm. Tu i ne treba bit već u /usr/local/perl5162dt/lib/5.16.2/CPAN/
Kako je to Troy složio? Je li ovo OS X specific?
Ili je to za verzije nakon 5.14.x?
mv /Users/superdijak/.cpan/CPAN/MyConfig.pm /usr/local/perl5162dt/lib/5.16.2/CPAN/Config.pm
Gdje smo ono stali? Opet:
/usr/local/perl5162dt/bin/perl -MCPAN -e shell
o conf
nam kaže i:
$CPAN::Config options from /usr/local/perl5162dt/lib/5.16.2/CPAN/Config.pm:

I sutra je dan.
q
$ which perl
/usr/bin/perl

Ponovo:
/usr/local/perl5162dt/bin/perl -MCPAN -e shell
i na cpan promptu ćemo instalirat par modula
install Bundle::CPAN Bundle::LWP
U redu.

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
U međuvremenu
« Odgovori #12 : 30 Siječanj 2013, 16:48:20 poslijepodne »

Posložen novi perl u /usr/local/bin prema upisu 'Korak po korak'. Dodan čitav niz Perl modula. Otkrilo se da /usr/bin ima simboličnu mapu /usr/texbin što znači da bi Apple trebao imat obzira i prema mapi /usr/bin glede kompletnog brisanja i ponovnog pisanja. Došlo se i do razmatranja ideje s kraja upisa 'Korak po korak' - linkanju Perla5 u /usr/bin by John Karr. Zašto? Prelaskom u normalni korisnički račun uzeli smo 2i2je4.pl datoteku iz spomenutog primjera 2 + 2 = 4 izmijenili u njoj shebang u #!/usr/local/bin perl -wT i dobili poruku o greški:
…-bash: ./2i2je4.pl: /usr/local/bin: bad interpreter: Permission denied
$ echo $PATH
daje korisniku dijak uredno na prvom mjestu /usr/local/bin:…
$ which perl
uredno odgovori
/usr/local/bin/perl
Datoteka se može pokrenuti na druge načine, npr. uz uvažavanje pune putanje do nje (2i2je4.pl)
$ perl 2i2je4.pl
nu i tada interpreter (naš novi perl) prigovara i traži da se -T iz shebanga navede u naredbenom redku kao opcija što mi se čini da je blagoslov novog perla ko što taj switch (-T) i onako nema nekog smisla u perl skripti koja nije perl-cgi skripta.

Bilješke o međuvremenu su zagubljene jer smo ažurirali dijakov omiljeni BBEdit koji je ignorirao stare postavke, napose na superdijakovu korisničkom računu i u trenutku nepozornosti izgubili bilješke, čini mi se zbog toga što nije bio uključen BBEdit: View: Show Files… pa se nespremljene bilješke nisu vidjele u masi pootvaranih datoteka kad su bile tražene, a pri zatvaranju BBEdita nije se ni pogledalo nit se vidjelo kao na starim postavkama od prve koliko datoteka je mijenjano a nespremljeno ni koje su to datoteke pa je elegantno izabrano nešto kao Dont Save All. Dijače, uzmi jedan editor - npr. emacs i drž &nbsp;se toga na svim platformama. Taj barem u zadnjih 25 godina pri ažuriranju nije mijenjao zatečene korisničke postavke.

A &nbsp;bad interpreter: Permission denied?
Pogledom na /usr i /usr/local u dijaka vidi se da je TeXLive (2012) posijao neke datoteke čak i u /usr te u /usr/local napose /usr/local/lib. Po nadnevcima vidi se da su dijelovi instalacije TeXLive-a bili u /usr/local i prije instalacije Homebrewa. Homebrew i brew doctor… traže čist i prazan /usr/local. Sad superdijak priča koliko se napatio s brew doctorom oko pacifikacije zatečenih library-ja u /usr/local/lib. Pretpostavljam, zar tako ne piše, permissions… otić u administratorski login, ne koristit na korisničkom login-u ovo:
$ su superdijak
već baš se tamo ulogirat i pregledat pa po potrebi poprisložit dozvole na /usr/local kao ovdje:
sudo chgrp -R admin /usr/local
sudo chmod -R g+rwx /usr/local
sudo chmod -R o-w /usr/local
jerbo eto zašto; ako /usr/local/bin ima dozvole 755, a novi perl je tamo simbolički zalinkan (i to neizravno, dvaput), uzrok greške mogu bit dozvole na mapama i datotekama na koje vode ti simbolični linkovi. A je to?
« Zadnja izmjena: 30 Siječanj 2013, 16:51:45 poslijepodne glonga »

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
Za pameti? Za čega?
« Odgovori #13 : 30 Siječanj 2013, 17:58:21 poslijepodne »
sudo chgrp -R admin /usr/local
sudo chmod -R g+rwx /usr/local
sudo chmod -R o-w /usr/local
Trt! Citirano će posložit dovole na numeričkih 775. A to je puno labavije od 755.
Na OS X-u ovo dobro čita numeričke dozvole (pazi radnu mapu pwd):
$ ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/) \
             *2^(8-i));if(k)printf("%0o ",k);print}'
Naredba stat u OS X-u nema opciju -c. Ali može dat skraćenu (i preglednu) listu:
$ stat -f '%A %a %N' *
Ko će to sad dorađivat?

Offline glonga

  • Forumska Al-tipkovnica
  • Gožđeno pero foruma
  • ***
  • Postova: 10.154
…bad interpreter: Permission denied
« Odgovori #14 : 30 Siječanj 2013, 18:31:47 poslijepodne »
Nije bad interpreter već ja i dijak. SMF BBCode me ovdje izludi, nepogodan je za ovu temu. Odgovorno tvrdim. Nakon probanja svih raspoloživih tagova za isticanje kôda: font="", tt, pre, code…
Svaki ili odmah ili nakon uređivanja smrlja stvari, npr. ubacuje url tag gdje mu se svidi i zatrpa tabulacije nbsp-ovima. Na M$ platformama npr. Internet Explorer prikazuje tekst unutar takvih tagova brezobrazno sitno.

Nego, nikad od mene i dijaka kôdera. Krivo smo uredili izvorni shebang. 2i2je4.pl izvorno je imala shebang:
#!/usr/bin/perl -wT
Onda je uletio Perlbrew s pratnjom pa je shebang promijenjen u (pazi razmak, bjelinu):
#!/usr/bin/env perl -wT
Bili smo uvjereni u to kako nitko od nas nije napravio ovo nakon instalacije lokalnog perla bez perlbrewa:
#!/usr/local/bin perl -wT
Kad smo izcrpili sve ostale mogućnosti pogledali smo u shebang i pitali 'koja je budala ovo…?' pa poporavili u:
#!/usr/local/bin/perl -wT
i sve 5, samo 2 i 2 četri ko i RenoL u dijaka i ko ocjene mu.
« Zadnja izmjena: 30 Siječanj 2013, 18:35:44 poslijepodne glonga »