Newsgroup: it.comp.os.dibattiti
Titolo: [OSX] particolarita'

Apple ha pubblicato una guida per gli sviluppatori unix che volessero 
portare le loro applicazioni su OSX. Questa guida ovviamente descrive 
anche le principali caratteristiche di OSX e le differenze con gli altri 
unix. Avevo accennato qualcosa in proposito su un precedente thread, per 
cui, eccovi il link:
http://developer.apple.com/techpubs/macosx/Darwin/PortingUNIX/
Vi riassumo alcune delle particolarita' di OSX:
- il formato degli eseguibili è il Mach-O, non il più comune ELF
- riporto dall'originale: "Mac OS X makes heavy use of dynamically 
linked code. The distinction between plug-ins and shared libraries in 
executable formats like ELF is not present in Mac OS X. In Mac OS X, 
they are treated the same"
- "Libraries that you are familiar with from other UNIX-based systems 
may not be installed in Mac OS X where they are on other systems. This 
difference is mainly due to the presence of a single dynamically 
loadable framework, libSystem, that contains the core system 
functionality. This single module provides the standard C runtime 
environment, input/output routines, math libraries, and most of the 
normal functionality required by command-line applications and network 
services. This module includes functions that you would normally expect 
to find in libc, libm, RPC services, resolver, and curses. libSystem is 
automatically linked against so you do not need to explicitly link 
against a library, for example curses, with the -lm flag. You do not 
need to worry about your code linking against a header whose 
implementation is in libSystem because stub files are already in place 
in the system. libSystem does not implement the threadsafe API variants"
- "Mac OS X does not support the concept of weak linking as it is found 
in systems like GNU/Linux. If you override one symbol, you must override 
all of the symbols in the object file"
- la grafica viene gestita tramite quartz, che non è un xserver (chi 
volesse utilizzare un xserver deve installarlo a parte)
- noterete in seguito che in vari casi non si fa uso della tipica 
organizzazione dei file di uno unix
- OSX fa molto uso di bundle, cioè di codice assemblato, con i relativi 
file accessori, all'interno di una directory; nel caso delle 
applicazioni l'utente vede questa directory come un'entita unica, 
rappresentata dall'icona dell'applicazione
- i servizi vengono avviati al boot dal System Starter; tali servizi 
devono essere messi in bundle particolari chiamati startup items, che 
sono posti in /System/Library/StartupItems o /Library/StartupItems
- "Mac OS X supports Mac OS Extended (HFS+), the traditional Macintosh 
volume format, and the UNIX File System (UFS). HFS+ is recommended and 
is what most users have their system installed on. Some more 
server-centric installations have their system installed on UFS. [...] 
On important thing to note about the HFS+ file system is that although 
it preserves case, it is not case sensitive. This means that if you have 
two files whose names differ only by case, the HFS+ file system regards 
them as the same file". Comunque, le differenze tra HFS e UFS non si 
limitano al case sensitive
- non tutti i file di configurazione sono posti in /etc, come ci si 
aspetterebbe; altre directory sono usate, come ~/Library/Preferences per 
gli utenti
- molte delle informazioni di configurazione normalmente memorizzate in 
/etc sono gestite dal database di NetInfo ("NetInfo is the built-in Mac 
OS X directory system that system and application processes can use to 
store and find administrative information about resources and users")
- "Mac OS X implements an object-oriented programming model for 
developing device drivers. This technology is called the I/O Kit. [...] 
I/O Kit programming is done with a restricted form of C++, embedded C++ 
(eC++), that omits features unsuitable for use within a multi threaded 
kernel"
- di default, l'utente root non è attivo (può comunque essere attivato, 
se serve): "By default there is no root user in Mac OS X. This is a 
deliberate design decision both for security and to simplify the user 
interface. Your applications should not assume that a user needs 
superuser access to the system. For power users and developers, sudo is 
provided to run privileged applications in the shell. Privileged 
applications can also be run by members of the admin group
Sicuramente, vi sono altre differenze, piccole e non, che qui' non sono 
state esposte.
):E...

Domanda da ignorante:
ogni applicazione che usa librerie non previste dal sistema deve portarle
con se' nel suo bundle?
E se queste librerie sono utilizzate da piu' applicazioni ne viene
installata una copia per ognuna?
Alessandro.

 installata una copia per ognuna?
Se necessario, si mettono in /Library/Frameworks. Comunque, su mac e' 
considerata deprecabile la pratica di riempire le directory di sistema 
di file di vario tipo, librerie incluse, soprattutto se si tratta di... 
oggetti di piccole dimensioni e il cui beneficio della condivisione e' 
minimo.

Ok, grazie :-)
Alessandro.

 gli utenti
 
Beh, in qualsiasi unix che si rispetti vi e` una precisa distinzione
tra i file di configurazione globali (che stanno in /etc) rispetto a
quelli dell'utente (che stanno in ~/ ). La cosa carina di OSX e` che
usa una directory precisa anche per l'utente (come fa anche il BeOS)
evitando cosi` di riempire ~/ di file
Henryx

 sono state esposte.
 - ha un registro centrale di configurazione (NetInfo), come Windows.
   Quindi forse non è una cattiva idea?
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.19. C, C++ and ASM developers
                              and beta testers are welcome!


Nessuno e' perfetto :-P
Alessandro.

 - ha un registro centrale di configurazione (NetInfo), come Windows.
A parte che non è un "registro centrale di configurazione", forse
intendevi dire "come NeXT", vero?
-- 
ciao, | "You're one of those condescending Unix computer users!"
Marco | "Here's a nickel, kid. Get yourself a better computer"  -- Dilbert
      | (Ri)scoprire fidonet: 
http://bbs.bofh.it

 it for ease of access and maintenance."
Loro lo chiamano "directory" e Microsoft lo chiama "registry", ma 
concettualmente mi sembra siano proprio la stessa cosa


 intendevi dire "come NeXT", vero?
Non conosco NeXT. Ma a me sembra DAVVERO un registro di configurazione, 
sul serio


 sul serio
"NetInfo is a network management system which utilizes a hierarchical, 
distributed database. It is similar in functionality to Sun's Network 
Information System (NIS). NetInfo can store, and distribute to systems 
connected to it across the network, information on user accounts, e-mail 
configurations, Network File System information, network printers, and 
just about any shared network resource"
"NetInfo was developed originally by NeXT for NeXTSTEP and OpenSTEP, and 
is now fully integrated into the Mac OS X Server operating system (*). 
NetInfo is also used in place of the traditional unix system files that 
provide similar information (like /etc/passwd, /etc/hosts, etc)"
(*) c'e' anche su OSX client, anche se non puo' fare da server NetInfo.

 concettualmente mi sembra siano proprio la stessa cosa
Una differenza e' che non viene usato per tutto. Molte informazioni che 
su windows si trovano nel registery, vengono gestite in altri modi con 
meccanismi che cambiano a seconda dei casi.

provide similar information (like /etc/passwd, /etc/hosts, etc)"
Esatto. Quello che fornisce è un sistema per distribuire in rete le
classiche mappe chiave -> valore, che per esempio Sun distribuisce con
NIS.


 distribuisce con NIS.
Capito. Allora è come ActiveDirectory, giusto?


Capito. Allora è come ActiveDirectory, giusto?
Active Directory è una implementazione di Kerberos con un po' di cose
proprietarie tanto per non essere interoperabili, netinfo è una cosa
molto molto più semplice: (mappa,chiave) -> valore, tutto qui.


 (*) c'e' anche su OSX client, anche se non puo' fare da server NetInfo.
[Understanding and Using NetInfo]
NetInfo Planning - Identifying Computers for Hosting Shared Domains
"It's best to locate shared domains on Mac OS X Servers. They provide 
more NetInfo data management applications than computers running Mac OS 
X."
www.apple.com/macosx/server/pdf/UnderstandingUsingNetInfo.pdf
///
[Open Directory Server]
"Apple's Open Directory Server is NetInfo. NetInfo is included as part 
of Mac OS X Desktop and Server, and is also included with Darwin. 
NetInfo provides a robust and scalable platform for serving directory 
based configuration information for both stand-alone and networked 
CPUs. NetInfo consists of:
* Access API
* Server process
* Command line tools for displaying and modifying the contents of 
existing NetInfo systems."
Apple Open Directory:
http://developer.apple.com/darwin/projects/opendirectory/
-- 
"Mac OS X is a fantastic platform, with the future built-in."
http://developer.apple.com/wwdc2002/timoreilly.html

 NetInfo Planning - Identifying Computers for Hosting Shared Domains
Ma sei un bot?
<g>
-- 
il Vide - ICQ# 5301833
Togli OE per rispondermi
IAMM - it.arti.musica.metal 
IAMMol webzine: 
http://www.iammol.com

 molto molto piů semplice: (mappa,chiave) -> valore, tutto qui.
Active Directory, che io sappia, č LDAP, e Kerberos viene usato per 
l'autenticazione


 concettualmente mi sembra siano proprio la stessa cosa
"For readers not familiar with Mac OS X directory services, we recommend 
the Mac OS X Server Administrator零 Guide and the white paper entitled
Understanding and Using NetInfo. Both are available at 
www.apple.com/macosx/server
"
Integrating Mac OS X With Active Directory
http://www.apple.com/macosx/server/pdf/MacOSXwithActiveDirectory.pdf
-- 
Survey: This article...
[] fully addressed my question
[] partially addressed my question but could be more complete or detailed
[] did not address my question at all

l'autenticazione
Infatti.
Ciao
Francesco
-- 
Francesco