by Raphaal Hertzog and Roland Mas · 24 Dec 2013 · 678pp · 159,840 words
Software projects, when deciding if something should be considered “free enough” or not. But this political vision is not yet enough to explain Debian's uniqueness. Debian is also a very peculiar social experiment, strongly attached to its independence. Think for a moment of other mainstream Free Software distributions, or even
…
and gives a few keys to avoid most problems. Chapter 15 is for administrators who want to go further and create their own Debian packages. VOCABULARY Debian package A Debian package is an archive containing all the files required to install a piece of software. It is generally a file with a
…
This name is, in reality, a contraction of two first names: that of Ian Murdock, and his girlfriend at the time, Debra. Debra + Ian = Debian. Debian is a GNU/Linux and GNU/kFreeBSD distribution. We will discuss what a distribution is in further detail in Section 1.5, “The Role of
…
installer, easily adapted to special needs. APT will install packages from various origins, while guaranteeing the overall consistency of the system. TOOL Creating a Debian CD-ROM debian-cd creates ISO images of installation media (CD, DVD, Blu-Ray, etc.) ready for use. Any matter regarding this software is discussed (in
…
English) on the <debian-cd@lists.debian.org> mailing list. BACK TO BASICS To each computer, its architecture The term “architecture” indicates a type of computer (the most known include Mac
…
other processors. These differences in hardware involve varying means of operation, thus requiring that software be compiled specifically for each architecture. Most software available in Debian is written in portable programming languages: the same source code can be compiled for various architectures. In effect, an executable binary, always compiled for
…
in the Public Interest association, and SPI manages the hardware and financial aspects (donations, purchase of hardware, etc.). While initially created specifically for the Debian project, this association now hosts other free software projects, especially the PostgreSQL database, Freedesktop.org (project for standardization of various parts of modern graphical desktop
…
with the decentralized nature of the project. While the list of trusted organizations is rather short, there are many more Debian-related associations whose goal is to promote Debian: Debian France, Debian-UK, Debian-ES, debian.ch, and others around the world. Do not hesitate to join your local association and support the project! → http
…
the project's Foundation Documents. The development process is constantly debated, but these Foundation Documents are widely and consensually supported, thus rarely change. The Debian constitution also offers other guarantees for their stability: a three-quarters qualified majority is required to approve any amendment. 1.2.1. The Commitment towards
…
s work. The developer can, thus, focus on the specifics of their package and on more complex tasks, such as squashing bugs. → http://www.debian.org/doc/debian-policy/ BACK TO BASICS Package maintenance, the developer's work Maintaining a package entails, first, “packaging” a program. Specifically, this means to define
…
installation or post-installation scripts contained therein. After this initial phase, the maintenance cycle truly begins: preparing updates to follow the latest version of the Debian Policy, fixing bugs reported by users, and including new “upstream” versions of the program which naturally continues to develop simultaneously. For instance, at
…
persons, users are a true community within which numerous exchanges take place. We especially note the impressive activity on the user discussion mailing list, <debian-user@lists.debian.org> (Chapter 7, Solving Problems and Finding Relevant Information discusses this in greater detail). Not only do users help themselves (and others) on
…
FusionForge is otherwise relatively easy to install, thanks to the exceptional work of Roland Mas and Christian Bayle on the fusionforge Debian package. The Debian System Administrators (DSA) team (<debian-admin@lists.debian.org>), as one might expect, is responsible for system administration of the many servers used by the project. They ensure
…
). This is the case of the bug tracking system (BTS), the package tracking system (PTS), alioth.debian.org (FusionForge server, see sidebar), the services available on qa.debian.org, lintian.debian.org, buildd.debian.org, cdimage.debian.org, etc. 1.3.3.3. Development Teams, Transversal Teams Unlike administrative teams, the development teams
…
is required to gain an overall understanding of the operations of these types of programs. The most important team is probably that for the Debian installation program, debian-installer, which has accomplished a work of momentous proportions since its conception in 2001. Numerous contributors were needed, since it is difficult to
…
load on a single pair of shoulders; this is the case with the C library and <debian-glibc@lists.debian.org>, the C compiler on the <debian-gcc@lists.debian.org> list, or Xorg on the <debian-x@lists.debian.org> (this group is also known as the X Strike Force, and coordinated by Cyril
…
without an existing system or systems), and provide a range of software covering all of the users' needs. 1.5.1. The Installer: debian-installer The debian-installer, designed to be extremely modular in order to be as generic as possible, targets the first objective. It covers a broad range of
…
the journey, our hypothetical package is now included in the stable distribution. This journey, not without its difficulties, explains the significant delays separating the Debian Stable releases. This contributes, over all, to its reputation for quality. Furthermore, the majority of users are satisfied using one of the three distributions
…
collaboration, IT management has conducted a slightly more extensive study, identifying some constraints and defining a plan for migration to the chosen Open Source system, Debian. A significant constraint identified is that the accounting department uses specific software, which only runs on Microsoft Windows™. The laboratory, for its part, uses
…
what the kfreebsd-i386 and kfreebsd-amd64 architectures mean. While these architectures are labeled “experimental” (Technology Preview), about 90 % of the software packaged by Debian is available for them. These architectures may be an appropriate choice for Falcot Corp administrators, especially for a firewall (the kernel supports three different firewalls
…
normal Windows boot or booting the installation program. You can also find it on a dedicated website with a rather explicit name… → http://ftp.debian.org/debian/tools/win32-loader/stable/ → http://www.goodbye-microsoft.com/ BACK TO BASICS Boot loader The bootloader is a low-level program that is responsible
…
on these updates conducted by aptitude, please refer to Section 6.2.3, “System Upgrade”. Chapter 5. Packaging System: Tools and Fundamental Principles As a Debian system administrator, you will routinely handle .deb packages, since they contain consistent functional units (applications, documentation, etc.), whose installation and maintenance they facilitate. It
…
admin::package-management, hardware::storage, hardware::storage:cd, implemented-in::c++, interface::commandline, network::client, protocol::ftp, protocol::http, protocol::ipv6, role::program, suite::debian, use::downloading, use::searching, works-with::software:package Section: admin Priority: important Filename: pool/main/a/apt/apt_0.9.7.9_amd64.deb Size
…
change the order of priorities between the logical operators “or” and “and”. It would thus be written A | B, A | C. → http://www.debian.org/doc/debian-policy/ch-relationships.html The dependencies system is a good mechanism for guaranteeing the operation of a program, but it has another use with
…
can then use this information to operate according to the user's wishes. TOOL debconf debconf was created to resolve a recurring problem in Debian. All Debian packages unable to function without a minimum of configuration used to ask questions with calls to the echo and read commands in postinst shell
…
is also a variant, consisting of a single .tar.gz archive, which is automatically used if no .orig.tar.gz is available). Since Debian Squeeze, Debian developers have the option to use new formats that correct many problems of the historical format. Format 3.0 (quilt) can combine multiple upstream archives
…
coreutils: /bin/date $ dpkg -s coreutils Package: coreutils Essential: yes Status: install ok installed Priority: required Section: utils Installed-Size: 13822 Maintainer: Michael Stone <mstone@debian.org> Architecture: amd64 Multi-Arch: foreign Version: 8.13-3.5 Replaces: mktemp, timeout Depends: dpkg (>= 1.15.4) | install-info Pre-Depends: libacl1
…
proposed-updates alias which is both more explicit and more consistent since squeeze-proposed-updates also exists (for the Oldstable updates): deb http://ftp.debian.org/debian wheezy-proposed-updates main contrib non-free 6.1.2.4. Stable Backports The stable-backports repository hosts “package backports”. The term refers to
…
top-level directories and the remote URLs of the repositories is stored in /etc/approx/approx.conf: # <name> <repository-base-url> debian http://ftp.debian.org/debian security http://security.debian.org approx runs by default on port 9999 via inetd (see Section 9.6, “The inetd Super-Server”) and requires the users
…
Cautious administrators should therefore check the fingerprints of imported keys before trusting them to install new packages: # apt-key fingerprint /etc/apt/trusted.gpg.d//debian-archive-squeeze-automatic.gpg ------------------------------------------------------------ pub 4096R/473041FA 2010-08-27 [expires: 2018-03-05] Key fingerprint = 9FED 2BCB DCD2 9CDF 7626 78CB AED4 B06F
…
expires: 2017-08-05] Key fingerprint = 0E4E DE2C 7F3E 1FC0 D033 800E 6448 1591 B983 21F9 uid Squeeze Stable Release Key <debian-release@lists.debian.org> /etc/apt/trusted.gpg.d//debian-archive-wheezy-automatic.gpg ----------------------------------------------------------- pub 4096R/46925553 2012-04-27 [expires: 2020-04-25] Key fingerprint = A1BD 8E9D 78F7 FE5C
…
05-08 [expires: 2019-05-07] Key fingerprint = ED6D 6527 1AAC F0FF 15D1 2303 6FB2 A1C2 65FF B764 uid Wheezy Stable Release Key <debian-release@lists.debian.org> IN PRACTICE Adding trusted keys When a third-party package source is added to the sources.list file, APT needs to be told
…
package; the relevant command is dpkg-reconfigure debconf. Note that the configured values can be temporarily overridden with environment variables when needed (for instance, DEBIAN_FRONTEND controls the interface, as documented in the debconf(7) manual page). 6.8.4. Handling Command Line Interactions The last source of interactions,
…
the root of a problem, it is possible to get help from other, perhaps more experienced people. This is indeed the purpose of the <debian-user@lists.debian.org> mailing list. As with any community, it has rules that need to be followed. Before asking any question, you should check that
…
covering a wide array of areas and tools. Furthermore, it is internationalized and available in many languages. Sadly, webmin is no longer part of Debian. Its Debian maintainer — Jaldhar H. Vyas — removed the packages he created because he no longer had the time required to maintain them at an acceptable quality
…
quota: user quota management; dhcpd: DHCP server configuration; proftpd: FTP server configuration; samba: Samba file server configuration; software: installation or removal of software from Debian packages and system updates. The administration interface is available in a web browser at https://localhost:10000. Beware! Not all the modules are directly usable
…
# xen-create-image --hostname testxen --dhcp --dir /srv/testxen --size=2G --dist=wheezy --role=udev [...] General Information -------------------- Hostname : testxen Distribution : wheezy Mirror : http://ftp.debian.org/debian/ Partitions : swap 128Mb (swap) / 2G (ext3) Image type : sparse Memory size : 128Mb Kernel path : /boot/vmlinuz-3.2.0-4-686-pae Initrd path : /
…
, the alternative automatically goes to the next best choice among the remaining possible commands. Not all symbolic commands are explicitly listed by the Debian policy; some Debian package maintainers deliberately chose to use this mechanism in less straightforward cases where it still brings interesting flexibility (examples include x-www-browser,
…
distribution. We heartily recommend installing the popularity-contest package, and participating to the survey. The collected data are made public every day. → http://popcon.debian.org/ These statistics can also help choose between two packages that would seem otherwise equivalent. Choosing the more popular package increases the probability of making
…
some consistency and configuration to make the maintainers' task easier. QUICK LOOK pbuilder The pbuilder program (in the similarly named package) allows building a Debian package in a chrooted environment. It first creates a temporary directory containing the minimal system required for building the package (including the packages mentioned in
…
/srv/vhosts/packages verify_sigs = 0 mail_to = admin@falcot.com generate_release = 1 release_origin = Falcot Corp release_codename = stable [updates] release_label = Recompiled Debian Packages [internal] release_label = Internal Packages One decision worth noting is the generation of Release files for each archive. This can help manage package installation
…
formalized and well-documented, so anyone can track their progression on the website dedicated to the new member process. → http://nm.debian.org/ EXTRA Lightweight process for “Debian Maintainers” A “Debian Maintainer” status has recently been introduced. The associated process is quicker, and the privileges granted by this status are only enough
…
our services! → http://www.freexian.com → http://www.gnurandal.com See you soon! Appendix A. Derivative Distributions Many Linux distributions are derivatives of Debian and reuse Debian's package management tools. They all have their own interesting properties, and it is possible one of them will fulfill your needs better than
…
everyone can benefit and long-term maintenance work is reduced. This explains why derivative distributions are invited to become involved in discussions on the debian-derivatives@lists.debian.org mailing-list, and to participate in the derivative census. This census aims at collecting information on work happening in a derivative so
by E. Gabriella Coleman · 25 Nov 2012 · 398pp · 107,788 words
to capture the reality of the legal transnational processes under investigation along with the experience of the thousands and thousands of developers across the world. Debian, for example, has developers from Japan, Australia, Canada, New Zealand, all over western and eastern Europe, Brazil, Venezuela, Argentina, and Mexico.17 I decided
…
is composed of over one thousand developers who produce a distribution of the Linux operating system (OS). I present and theorize on the tensions between Debian’s governance, which blends democratic majoritarian rule, a guildlike meritocracy, and ad hoc deliberations. In comparing these three modes of governance, I unearth various
…
ethical processes—informal, formal, pedagogical, and dramatic—by which Debian developers inhabit a liberally based philosophy of free software, and use it as an opportunity to revisit the tension between liberal individualism and corporate sociality
…
components are of high quality because those with expertise in a certain area are given the opportunity to construct or maintain the individual components of Debian involving that area. Involving others also ensures that valuable suggestions for improvement can be incorporated into the distribution during its development; thus, a distribution
…
and share a common language of code, servers, protocols, computer languages, architectures, LANs, wireless, kernels, man pages, motherboards, network layer, file sharing, stdout and stderr, Debian, and the FSF. Many hackers wear geeky T-shirts. With each passing day, the semiotics of sameness are enlivened, brought to a boiling point, as
…
start-ups. Thus by 1997, the grassroots enthusiasm of free software had grown material roots in the corporate sphere. Multiple Linux distributions—most famously Slackware, Debian, and Red Hat—were under vigorous development, and newer software applications, like Apache, were gaining significant visibility and being used by high-profile dot-coms
…
RTFM rebukes was broached directly. One developer argued that RTFM is an inflammatory, unproductive response to newcomers who may find themselves confused and overwhelmed with Debian’s technical and procedural complexity. To make new users feel welcome, he believed that developers should refrain from replying with RTFM, and instead focus their
…
technical, legal, and philosophical knowledge, and hence become trusted collective members. The other moment I investigate is crisis. As the number of developers in the Debian project has grown from one dozen to over one thousand, punctuated crises routinely emerge around particularly contested issues: matters of project transparency, internal and external
…
group (organized largely around charismatic leadership, personal relationships, and ad hoc decision making) to a stable institution. Most F/OSS projects in their infancy, including Debian, operate without formal procedures of governance and instead are guided by the technical judgments of a small group of participants. This informal technocracy is captured
…
voting. We believe in: rough consensus and running code” (quoted in Hoffman 2011).2 Even though an ideal of rough consensus still exists in Debian today, Debian developers have had to demarcate membership criteria, explicitly define roles, and implement a complicated voting protocol in order to successfully grow. Although charismatic leadership,
…
improvised actions, and informal relationships still exist in the project today, these have been supplemented by other modes of formal governance. Through Debian’s tremendous growth, developers have cobbled together a hybrid organizational structure that integrates three different modes of governance—democratic majoritarian rule, a guildlike meritocracy, and
…
consulting the project as a whole, thereby foreclosing precisely the neutral, technical debate that allowed them to gain their authority in the first place. Debian developers at times express their unease about the fact that delegates have the legitimate power to make decisions without consulting other developers. This anxiety is
…
in good technical faith and not for personal interest. The building of trust and novel organizational procedures has been central to the organizational growth of Debian as well as balancing its governance modes. These themes are recurrent in science and technology studies. Whether expressed through the trustworthiness of a noble character
…
early development. In order to accommodate technical and human growth, however, significant changes in its policy, procedures, and structure occurred between 1997 and 1999. Now Debian boasts an intricate hybrid political system, a developer IRC, a formalized membership entry procedure (the NMP), and a set of charters that includes the Constitution
…
, Social Contract, and Debian Free Software Guidelines (DFSG). Debian has produced detailed policy and technical manuals; controls development, testing, and mirroring machines located around the world; and manages bug-tracking and collaborative
…
in the lifelong project of technical self-cultivation within a community of peers. When Torvalds and Murdock developed their own projects (the Linux kernel and Debian, respectively), they did things differently than the earlier cadre of Unix hackers by fostering a more egalitarian environment of openness and transparency. Participation was encouraged
…
accountability to a larger commonwealth of users and developers that has characterized the project since its inception (when Murdock first articulated these values in “The Debian Manifesto”). Schuessler proposed the idea for the Social Contract after a conversation at a conference with Bob Young, the cofounder of a then-emergent commercial
…
drafted after a failed first election and in an effort to prevent the type of authoritarian leadership that some developers identified with Perens.8 The Debian Constitution outlines in great detail the group’s organizational structure, which includes nonelected and elected roles and responsibilities. Contained within this document is a
…
acknowledge that regardless of their level or quality of contribution, all developers, once accepted into the project, deserve some decision-making influence. That said, the Debian project leader has assumed a decidedly nontechnical role, not vested with power to make technical decisions for the project at large, and proposing General Resolutions
…
architecture), this suggestion was ripped to shreds on the mailing lists and effectively halted by many contributors, including some of the most respected and visible Debian developers. One response conveyed the distrust of political inclusion within the technical arena that many developers hold and will consistently give voice to: “I
…
is that person empowered to do? Most developers agree that the project leader acts as a public spokesperson at conferences and other events. Within the Debian community, the project leader acts to coordinate and facilitate discussion, perhaps most vitally opening blocked pathways of communication and aiding in conflict resolution. Their most
…
teams—typically technical guardians, who garner respect because of their superior talents and dedication to the project. These teams and delegates perform much of the Debian-wide work, such as administering mailing lists, accepting new members, running votes, and maintaining and integrating new software into the master archive. There is
…
work on larger-scale infrastructural or organizational structures as well as procedures. Important among these individuals are the FTP masters, who existed before there were Debian project leaders assigning teams; they review by hand all new submitted pieces of software packages for technical and licensing glitches, and integrate them into the
…
production and personal dedication to the project. Even if most developers prefer meritocracy to democracy—in fact, nearly every developer interviewed stated with pride that Debian is meritocratic—this form of power is nonetheless shrouded in some level of distrust. Positions of authority, like the FTP masters, undeniably represent a form
…
more specific reason for distrust, though. To fully appreciate the texture of controversies that emerge over authority, we must revisit the argument laid out earlier. Debian developers operate within a social imaginary rooted in a Millian conception of liberal individualism that requires them to cultivate their skills, improve technology, and prove
…
the cabal as accusations, seeking more trustworthy behavior from meritocrats, which is usually expressed in claims for greater transparency, accountability, and accessibility. In the recent Debian project leader debate, for example, one developer wrangled with an FTP master over what could be done to increase the project’s transparency and equalize
…
the natural philosophers of the Royal Society displayed good faith through a combination of humility, detachment, generosity, and civility, how do the meritocratic guardians of Debian perform their good intentions and navigate this dilemma? Delegates and teams manifest their pure technical intentions through a wide range of practices (and humility is
…
Nonetheless, there are some established routines for increasing the visibility and transparency of different working groups, including emails sent out to all developers on the debian-devel-announce mailing list (a required subscription for developers) that summarize the most recent activities of the different technical teams. These informal updates are sent
…
this transforms civil heartiness into vibrant, sometimes-vicious flame wars—outbursts of dissent that are characterized by inflammatory language or direct accusations of incompetence. The Debian bug-tracking system is another site where technical jousting happens, and since there is a formal system that allows developers to rate bugs according to
…
renegotiate the lines between democracy, consensus, and meritocracy that define their system of governance.18 Two Moments of Ethical Cultivation In terms of governance alone, Debian exhibits an extraordinarily complex moral and technical environment. It should come as no surprise that the way new members integrate themselves within this community, and
…
effectively to the project as well as gain the trust of other developers, is not a simple one. Although many prefer coding over organizational building, Debian developers have nonetheless concocted an interesting social solution to this problem of integration and trust building—the NMP. This process addresses problems following from growth
…
“ethically voice” their commitment to free software through the prolific writing that is required of them. Already explicitly committed to a vision of free software, Debian is to some degree a self-selecting organization, unlikely to attract programmers with a staunch commitment to upholding the current status of intellectual property law
…
part of applicants. The process is used to confirm the new maintainers’ identity, knowledge and position on free software philosophy, and proficiency with the established Debian policies and procedures as well as their overall technical expertise and knowledge.20 The identify verification is accomplished by obtaining the cryptographic signature of at
…
the Social Contract, the philosophy test does not require developers to hold a homogeneous view on free software. Rather, it seeks to ensure that all Debian developers are knowledgeable about, interested in, and dedicated to its basic principles. Open-ended questions frequently turn into longer email conversations between application managers and
…
US and some other first world countries) encourages individualism and tries to divide the people and control them it is very refreshing to read the Debian Social Contract. Proprietary software made by commercial software companies/developers is exactly that, commercial. Those companies/developers are only about profit or advancing their
…
or possibly two multivolume dissertations. On IRCs, conversation was bubbling nonstop about this debacle. Posts analyzing the event and its significance appeared on Planet Debian, the group Debian blog that aggregates individual developer’s blogs. I had to spend days reading this material. The cascade of responses was astonishing. It is first
…
OSS project. I highlight how developers concurrently tinker with technology and the law using similar skills, which transform and consolidate ethical precepts among developers. Using Debian as my primary ethnographic example, I suggest that these F/OSS projects have served as an informal legal education, transforming technologists into astute legal thinkers
…
dense ethical commitment to software freedom, which I covered in chapter 4, I was startled to instead encounter a form of political disavowal whereby Debian developers routinely police collective claims so as to prevent certain forms of political associations from entering official project policy and even at times informal discourse
…
on project mailing lists covering an endless stream of topics—technical problems, project politics, licensing issues, mentoring, and project policy—conversations about the role of Debian in supporting widespread political change or social justice are nearly nonexistent—except, of course, on the rare occasions when someone suggests otherwise. For example, in
…
political agendas, and more than ever, they simply cannot deny the vibrant political life that they themselves have engendered. There is a small crop of Debian developers who are also technology activists, channeling their energies primarily toward social justice causes by running technology collectives bearing unmistakably leftist names like, as mentioned
…
so far and so wide that it now encompasses software (blogs and wikis), corporate platforms (Flickr, Twitter, Facebook, YouTube, and Myspace), projects and nonprofits (Wikipedia, Debian, and Creative Commons), and collaborative techniques (remixing and crowdsourcing). There are certainly points of connection to be made between these domains, technologies, practices, and projects
…
and sold in the open market, but companies usually are charging for the service, support, and labor as opposed to the knowledge. 3. http://lists.debian.org/debian-legal/2003/03/msg00494.html (accessed August 10, 2010). 4. Email on file with the author. 5. Email on file with the author. 6
…
New York: Vintage Books. Tilly, Charles, and Sidney Tarrow. 2006. Contentious Politics. Boulder, CO: Paradigm. Towns, Anthony. 2002. It’s Huntin’ Season. http://lists.debian.org/debian-devel-announce/2002/01/msg00014.html (accessed July 28, 2011). Trouillot, Michel-Rolph. 2003. Global Transformations: Anthropology and the Modern World. New York: Palgrave Macmillan
by Wolfgang Barth · 19 Aug 2009 · 996pp · 180,520 words
packages for these must also be installed (depending on the distribution, with either the ending -dev or -devel): libssl-dev, libgd-dev, libc6-dev. With Debian and Ubuntu you prepare by using apt-get install to install the packages apache2, build-essential, and libgd2-dev. In Open-SUSE you install apache2
…
. Only the Web user and the user nagios should belong to this group. The Web user can be determined from the Apache configuration file. In Debian/Ubuntu this is located at /etc/apache2/apache2.conf; in Fedora it is at /etc/httpd/httpd.conf: linux:~ # grep "^User" /etc/apache2/apache2.
…
conf User www-data The user determined in this way (in Debian/Ubuntu www-data, in Open-SUSE www-run, and in Fedora httpd) is additionally assigned to the group nagcmd, shown here using the example for
…
Debian/Ubuntu: linux:~ # usermod -G nagcmd www-data In the example, the Web user is called www-data. The command usermod (this changes the data
…
/nagios /etc/nagios /var/nagios * * * [9] http://www.boutell.com/gd/ [10] http://www.openssl.org/ Depending on the distribution, the required RPM and Debian packages are sometimes named differently. Here you need to refer to the search help in the corresponding distribution. For
…
homepage will be of help. For example, if a configure instruction complains of a missing gd.h file, you can search specifically at http://www.debian.org/distrib/packages for the contents of packages. The search will then come up with all packages that contain the file gd.h. [11] http
…
check it. In order for Nagios to start automatically when the system is booted, symbolic links are created in the /etc/rc?.d directories. With Debian and Ubuntu using System-V-Init, the included system script update-rc.d performs this task: linux:~ # update-rc.d nagios defaults 99 This command
…
sets corresponding aliases for the two URLs: linux:~ # make install-webconf ... This command installs the file nagios.conf in the configuration directory of Apache. In Debian/Ubuntu and OpenSUSE it is named /etc/apache2/ conf.d, or in Fedora /etc/httpd/conf.d. It looks like this: ScriptAlias /nagios/cgi-bin
…
the directory containing the boot-up scripts, usually /etc/init.d. 3.2.1 Manual start If the configuration test ran without error, Nagios on Debian, Ubuntu, and OpenSuSE is first started manually with this script: linux:~ # /etc/init.d/nagios start Fedora provides its own startup mechanism: linux:~ # service
…
protocol 2.0) nagios@linux:nagios/libexec$ ./check_ssh -H wobgate -r \ 'OpenSSH_4.3p2 Debian-9' SSH WARNING - OpenSSH_3.8.1p1 Debian-8.sarge.6 (protocol 2.0) version mi smatch, expected 'OpenSSH_4.3p2 Debian-9' The latest version of SSH is not in use on wobgate. In heterogeneous environments
…
information on the topic of UPS. Standard distributions already contain the software, but not always with package names that are very obvious: in SuSE and Debian they are known by the name of nut. To query the information provided by the daemon upsd, there is the check_ups plugin from the
…
Nagios server in the (IP-based) access permissions. Detailed information can be found directly in the files themselves or in the documentation included, which in Debian is in the directory /usr/share/doc/nut, and in SuSE, in /usr/share/doc/packages/nut. Provided that the Network UPS Tools include a
…
conclude the configuration, you should make sure that the UPS daemon is started with every system start. In SuSE this is done via YaST2; in Debian this is taken care of during the installation. The check_ups plugin The monitoring plugin itself has the following options: -H address / --host=address
…
" logfile is turned into OLDlogfile". If a suitable rotation method is missing, you can specify a regular expression that matches the archived files instead. For Debian, you therefore specify --rotation=' logfile\. (0|[0-9]+\.gz). This is in case the ending .0 is missed during the initial rotation of the
…
{} is a search instruction. A configuration file for the hellowob example could look like this: @searches = ( { tag ⇒ 'hellowob', logfile ⇒ '/var/log/messages', criticalpatterns ⇒ 'hellowob', rotation ⇒ 'debian', options ⇒ 'noprotocol,nocase', }, ) The instructions tag and rotation correspond to the command line parameters of the same name. The instructions criticalpatterns and warningpatterns are notated
…
are assuming here that the daemon facility is logged with the info priority in /var/log/messages. This is dependent on the distribution, however. In Debian, such entries land in /var/log/daemon.log. [78] http://www.consol.com/opensource/nagios/check-logfiles 7.6 Keeping Tabs on the Number of
…
is less than crit minutes: user@linux:nagios/libexec$ ./check_apc time 20 10 UPS OK - Time Left: 30 mins * * * [80] At least SuSE and Debian use this package name. [81] It can also be obtained at: http://www.nagiosexchange.org/54;615. 7.11 Nagios Monitors Itself If necessary, Nagios
…
portmapper version 2 udp running [22] system_rootdisk DISK OK - free space: / 287 MB (31% inode=81%); [23] system_ssh SSH OK - OpenSSH_4.3p2 Debian-9 (protocol 2.0) ... |MULTI::check_multi::plugins=35 time=10.92 network_interfaces::check_ifs tatus:: up=6,down=0,dormant=0,excluded=0
…
also open to Fedora users. For Fedora Core and Red Hat Enterprise Linux, Dag Wieers has made available corresponding Nagios packages of several versions.[97] Debian/Sarge distributes the NRPE daemon and the NRPE plugin check_nrpe in two different packages called nagios-nrpe-server and nagios-nrpe-plugin, which can
…
a] /usr/local/sbin/nrpe /etc/nagios/nrpe.cfg /usr/local/nagios/libexec SuSE /usr/bin/nrpe /etc/nagios/nrpe.cfg /usr/lib/nagios/plugins Debian /usr/sbin/nrpe /etc/nagios/nrpe.cfg /usr/lib/nagios/plugins Fedora[b] /usr/sbin/nrpe /etc/nagios/nrpe.cfg /usr/lib/nagios/plugins [a
…
SNMP implementations in the Open Source field. All common distributions include corresponding packages. In SuSE this is called net-snmp and contains all the components; Debian packs the tools in the package snmp, and the daemon in the package snmpd. At the time of going to press, version 5.4.1
…
memory usage for the processes from hrSWRun hrSWInstalled host.6 Installed software; the information originates from the RPM database (unfortunately this does not work in Debian). Table 11-3. Extract from the UCD-SNMP-MIB Group OID Directive description prTable ucdavis.2 proc details of running processes memory ucdavis.4 -
…
agent is done in the file snmpd.conf, which is either located in the directory /etc directly (the case for SUSE) or in /etc/snmp (Debian), depending on the distribution. Authentication and security As the first step towards a finely tuned access control, you first need to define who should have
…
can also find a link to a mailing list whose members will be pleased to help in case you have questions. Setting up smsclient While Debian has its own precompiled smsclient package, for SuSE and other distributions you have to compile the software yourself. For historical reasons the program itself is
…
"homemade" configure procedure manages without autoconf and automake. The configuration files listed in Table 12-2 are now located in the directory /etc/sms; the Debian package installs it to /etc/smsclient. Table 12-2. smsclients configuration files File Description sms_addressbook Definition of aliases and groups sms_config Main configuration
…
number dialed is specified by the corresponding service file in the directory services (if you have compiled this yourself) or /usr/lib/smsclient/services (for Debian). In case of doubt, you should request the telephone number of your own mobile cell provider. The mailing list can also be of assistance here
…
version 4.0 is used, it is better to use MySQL 5 right from the start.[181] In addition to the MySQL server package (in Debian, "Etch" mysql-server-5.0) and the libraries that are usually selected automatically during the installation of the server package, you also require the
…
accompanying development package (in Debian, "Etch" libmysqlclient15-dev) in order to be able to compile the NDOUtils. One consequence of the far-reaching integration of the NDOUtils into Nagios
…
-passwort_for_the_db Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1861 Server version: 5.0.32-Debian_7etch1 Debian etch distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> The switch -p ensures that the password is
…
php-gd to be able to draw lines.[187] Depending on the distribution and the PHP version used, the package names may vary slightly. For Debian "Etch" and PHP5 you need the packages libapache2-mod-php5, php5, php5-common, php5-gd, and php5-mysql. NagVis does not necessarily have to
…
:: Local, and URI::Escape. There are two alternatives for installing them, namely from the packages included in the distribution or from CPAN. On Debian "Etch" and comparable Debian-based systems, you have all the modules if you select the packages autoconf,rrdtool,perl-modules,libcalendar-simple-perl,libgd-gd2-perl,perlmagick,librrds
…
is best if you copy the section that matches your distribution and rename it to <Layout nagiosbook> and modify a number of entries.[206] For Debian "Etch," the following entries apply (the changed values are shown in bold print): # config.layout <Layout nagiosbook> prefix: /usr/local/nagios nagios_config: /etc/
…
the appropriate module (here Calendar::Simple). This can be done from the CPAN with the command linux:src/NagiosGrapher-1.6.1 # make fixdeps ... For Debian-based distributions, the package naming scheme is quite simple: The Perl module Calendar:: Simple is turned into the package lib-calendar-simple-perl, which is
…
/nagios_grapher start So that the daemon starts automatically on system start, corresponding symlinks are set in distributions that use the system V init. On Debian/Ubuntu this is done by the system script update-rc.d: linux:~ # update-rc.d nagios_grapher defaults 98 OpenSUSE includes the script insserv
…
the RRDtools.[216] If possible you should install the Perl module RRDs from the Perl package included with your distribution (e.g., librrds-perl in Debian). The Perl script process_perfdata.pl, which forwards Nagios performance data to PNP, then accesses the RRD databases directly, without running an external program.
…
5minLoadAverage" 22.2.4 The CCMS plugins SAP demonstrates the use of the RFC interface to the CCMS with the CCMS plugins for SuSE. In Debian you can convert the RPM package nagios-plugins-sap-ccms-0.7.3[273] to a tar file with alien, or alternatively you can
…
template mechanism required is only implemented from this version onward. For the database you require a current MySQL-5.0 server (included in the Debian package mysql-server-5.0, for example), and for the syslog-ng2mysql.pl daemon written in Perl, the module DBD::MySQL (in
…
is implemented in PHP 5. This requires, along with Apache 2, the PHP-5 module for this server version (in Debian libapache2-mod-php5) and the PHP5-MySQL package (in Debian, php5-mysql). An automatic installation routine that checks that all required packages are present is not included in EventDB. If
…
sources that are matched by the filter, to the destination d_eventdb. The configuration shown uses /var/run/syslog-ng.pipe as a named pipe. Debian-based systems delete the contents of the directory /var/run/ when the system is booted, however. For this reason the named pipe must be newly
…
be started with the -On option. Depending on the distribution, the snmptrapd startup script may need to be adjusted. For Debian the file /etc/default/snmpdis modified accordingly: # /etc/default/snmpd (Debian) ... TRAPDRUN=yes TRAPDOPTS='-Lsd -On -p /var/run/snmptrapd.pid' The -Lsd option logs all traps for debugging purposes
…
environment=ALL integrates all installed MIBs. These must be free of errors, however, which is normally the case for MIBs installed from the distribution (for Debian, in the package libsnmp-base). The parameter snmptt_conf_files in the [TrapFiles] section contains a list of configuration files that translate incoming SNMP traps
…
of the MIB—ranges from very simple (for correctly formed MIBs) to almost impossible (for MIBs with many errors). A flawless MIB is provided by Debian, for example, in the file rfcl628-UPS.mib. This distribution stores the MIBs in the directory /usr/share/snmp/mibs. Before you start looking for
…
, which has the advantage that you don't need to worry about the dependencies of other packages—the installer automatically installs the required software. In Debian "Etch" the module is called libapache2-mod-auth-kerb. You should have at least version 5.3, since earlier versions have some minor bugs,
…
especially when working with Microsoft Internet Explorer 6.0.[323] To carry out the configuration, the programs klist and kinit are also required, and in Debian "Etch" these can be found in the package krb5-user (and not in krb5-clients!). One more note on Kerberos itself: The description in this
…
sure that Apache really does load the module mod_auth_kerb when it starts. When installing through a distribution, the module is already preconfigured. In Debian "Etch" the accompanying LoadModule directive can be found in the file /etc/apache2/mods-available/auth_ kerb.load: LoadModule auth_kerb_module /usr/lib/
…
apache2/modules/mod_auth_kerb.so For activation, Debian uses the command a2enmod, which basically does nothing more than place a symlink in the directory /etc/apache2/mods-enabled/, pointing to the configuration file
…
until the two programs display anything. For authentication, Apache calls the program ntlm_auth with the permissions under which the Web server is running. In Debian this is the user www-data from the group www-data. With his permissions, ntlm_auth tries to access the directory /var/lib/samba/winbindd
…
name provided by the distribution you are using. The sources can be found on the homepage.[329] MRTG is run by cron every five minutes. Debian includes the ready-made cron table /etc/cron.d/mrtg; the tool expects its configuration to be in /etc/mrtg.cfg. The file provided by
…
Debian contains just two global settings: # Global configuration WorkDir: /var/www/mrtg WriteExpires: Yes WorkDir specifies the directory in which MRTG should save the current graphics
by James Turnbull · 1 Jan 2007
configuration on your hosts. You can configure a particular package to be installed, and Puppet will handle its installation on Linux and Unix platforms like Debian, Red Hat, Solaris, AIX, OS X, and a number of other platforms without your needing to know how to manage packages on those platforms. This
…
Ruby Libraries from Packages Many Linux distributions and Unix operating systems have Ruby packages available for them. These include Red Hat Enterprise Linux and Fedora, Debian, Ubuntu, SuSE, and Mandriva. Some distributions bundle all the required Ruby binaries and libraries in a single package. Other distributions separate the core development environment
…
packages for a variety of BSD and Linux distributions. Table 2-1. Package Names for Ruby and Ruby Libraries OS Ruby Ruby Libraries Additional Package Debian ruby libruby libopenssl-ruby libxmlrpc-ruby FreeBSD ruby Gentoo ruby Mandriva ruby NetBSD ruby OpenBSD ruby Red Hat ruby SuSE ruby Ubuntu ruby ruby-libs
…
2-1, I’ve also listed, for some distributions, additional packages that are needed to support a Puppet installation. For example, in the case of Debian and Ubuntu, you can Turnbull Installing and Running Puppet 15 install the libopenssl-ruby package to add the Ruby OpenSSL Library and the libxmlrpcruby package
…
packages available at the time of writing. Table 2-2. Facter Packages Platform Facter Package Name Debian facter Fedora facter FreeBSD facter Gentoo facter OpenBSD ruby-facter Ubuntu facter Tip ➡ If you install Facter on Debian, you may also want the lsb-release package (if it is not already installed). This package
…
provides Facter with Linux Standard Base facts that help you identify specific Debian and derived distributions. Most other Linux distributions install this package by default, for example, Ubuntu and Red Hat (redhat-lsb). For example, if you are
…
, I have listed those platforms that provide separate RDoc packages. Turnbull Installing and Running Puppet 18 Table 2-3. RDoc Packages Platform RDoc Package Name Debian rdoc FreeBSD ruby-doc-stdlib Gentoo rdoc NetBSD ruby-doc-stdlib Red Hat ruby-rdoc Ubuntu rdoc Your package management system may also prompt you
…
by Package Puppet is available as a package for a number of platforms, but not all. At the time of writing, packages are available for Debian, FreeBSD and OpenBSD, Gentoo, Red Hat Fedora, and Ubuntu as part of their port or package management systems. Some packages contain both the server and
…
each. I’ve listed all the package names for each platform in Table 2-4. Table 2-4. Puppet Packages Platform Puppet Server Puppet Client Debian puppetmaster puppet Fedora puppet-server puppet FreeBSD puppet NA Gentoo puppet NA OpenBSD ruby-puppet NA Ubuntu puppet NA Caution ➡ Remember that packages available for
…
’ package management systems; you can see a full list of these platforms in Table 2-5. Table 2-5. RubyGems Packages Platform RubyGems Package Name Debian rubygems FreeBSD rubygems Gentoo rubygems NetBSD rubygems (Continued) Turnbull Installing and Running Puppet 22 Platform RubyGems Package Name OpenBSD rubygems Red Hat rubygems SuSE rubygems
…
node definitions tell Puppet about each host to be configured and exactly what configuration applies to them; for example, you might have configuration specific to Debian hosts, or to web servers or hosts in a specific location. When you are using node definitions, only the configuration defined to a particular node
…
a default option. In Listing 3-11, we can see a conditional selector inside a resource. Listing 3-11. Conditional Selectors service { "apache": name => $operatingsystem ? { debian => "apache2", redhat => "httpd", default => "apache", }, ensure => running, } The conditional selector is inside the apache service resource. It is constructed using the ? symbol and followed by
…
on a value. You can see a case statement in Listing 3-13. Listing 3-13. Case Statements case $operatingsystem { redhat: { service { "httpd": ensure => running }} debian: { service { "apache": ensure => running }} default: { service { "apache2": ensure => running }} } Turnbull Speaking Puppet 61 The case statement in Listing 3-13 uses the operatingsystem fact we
…
Operating System Description web Fedora An Apache-based web server db Fedora A MySQL-based database server mail Fedora A Postfix-based mail server puppetmaster Debian The Puppet master server We’ve installed the latest version of Puppet on the puppetmaster host and the Puppet daemon on all the remote hosts
…
state. To use Subversion, you will need to install it. Most Linux and Unix hosts will have a Subversion package available; for example, on a Debian platform, you would need to install the subversion package. Note ➡ If you don’t like or use Subversion as a version control tool, you can
…
we’ll need to update our site.pp file to import this file. Listing 4-4. templates.pp node basenode { case $operatingsystem { fedora: { include fedora } debian: { include debian } default: { include fedora} } include baseapps, sshd } node default inherits basenode {} node webserver inherits basenode { include apache } Turnbull 96 Using Puppet node dbserver inherits basenode
…
classes where variable scoping and inheritance is an issue. You can see an example of that method next: class baseclass { case $operatingsystem { fedora: { include fedora } debian: { include debian } default: { include fedora} } include baseapps, sshd } node default { include baseclass } class webserver { include baseclass include apache } class dbserver { include baseclass include mysql } class mailserver
…
classes, baseapps and sshd, in addition to including a class based on the operating system of the node we’re managing, in this case the debian and fedora classes. In Listing 4-6, you can see our first two classes: baseapps and sshd. Listing 4-6. baseapps Class class baseapps { $packagelist
…
= ["joe", "perl", "rubygems"] package { $packagelist: ensure => installed } } Turnbull Using Puppet 99 class sshd { case $operatingsystem { fedora: { $ssh_packages = ["openssh", "openssh-server", "openssh-clients"] } debian: { $ssh_packages = ["openssh-server", "openssh-client"] } default: { $ssh_packages = ["openssh", "openssh-server"] } } package { $ssh_packages: ensure => installed } service { sshd: name => $operatingsystem ? { fedora => "sshd
…
", debian => "ssh", default => "sshd", }, enable => true, ensure => running } } Tip ➡ To help with your manifest creation and editing, there is a VIM syntax validation file, puppet.vim,
…
. The providers associated with the package type will then use each node’s package management system to install the packages, for example, apt-get on Debian and yum on Fedora. When we apply our class to each node, the packages will be installed if they are not already present. If a
…
uses the name attribute and a conditional statement to ensure the right service is started on each operating system. We also defined two other classes, debian and fedora, which are loaded for the respective operating system. We’re going to put these classes into the os directory and also import them
…
Classes class fedora { yumrepo { "testing.com-repo": baseurl => "http://repos.testing.com/fedora/$lsbdistrelease/", descr => "Testing.com's YUM repository", enabled => 1, gpgcheck => 0, } } class debian { $disableservices = ["hplip", "avahi-daemon", "rsync", "spamassassin"] service { $disableservices: enable => false, ensure => stopped, } } In Listing 4-7, we’ve created two classes; the first is fedora
…
your node. [testing.com-repo] name=Testing.com's YUM repository baseurl=http://repos.testing.com/fedora/7/ enabled=1 gpgcheck=0 The second class, debian, loads when Debian nodes connect, and it uses the service type to disable an array of services that we don’t want running on our
…
Debian hosts. We could create and load classes for other operating systems and platforms or additional types to the operating system classes we’ve already created.
…
groups. This is because a resource can only be managed once in Puppet. Hence we could not configure a user called sysadmin in both the debian and fedora classes. With virtual resources, we can create the sysadmin user as a virtual resource. We then realize the resource in both classes. We
…
template to ensure this group and its users are created on all nodes that inherit this template node. node basenode { case $operatingsystem { fedora: { include fedora } debian: { include debian } default: { include fedora} } include baseapps, sshd, staff } But we also want our administration group to be included on all nodes. So in Listing 410
…
4-10. Realizing Our Users class administrators inherits virt_users { realize( Group["administration"] ) User["jsmith"] { groups => "administration" } } node basenode { case $operatingsystem { fedora: { include fedora } debian: { include debian } default: { include fedora} } include baseapps, sshd, staff, administrators } You can see in Listing 4-10 that we’ve used an override to add the administration
…
. You can see a list of the required packages for various platforms in Table 5-1. Table 5-1. Package Names for RRDTools OS Packages Debian rrdtool librrd2 librrd2-dev FreeBSD rrdtool Fedora rrdtool rrdtool-ruby Gentoo rrdtool ruby-rrd (Continued) Turnbull Reporting on Puppet 128 OS Packages Mandriva rrdtool rrdtool
…
method involves writing your own report processor and adding it to Puppet. The report processors are stored in the lib/puppet/reports directory. On a Debian host, we’d add our custom report processor to the /usr/local/lib/site_ruby/1.8/puppet/reports directory with the existing report processors
…
makes use of the Perl YAML module. The YAML module can be installed via CPAN or your distribution’s package management system. For example, on Debian it is the libyaml-perl package, or on Fedora it is the perl-YAML package. The classifier slices our hostname into sections; it assumes the
…
a list of the currently available Ruby/LDAP packages for a variety of distributions. Table 6-1. Package Names for Ruby LDAP Libraries OS Package Debian libldap-ruby1.8 FreeBSD ruby-ldap Gentoo ruby-ldap Mandriva ruby-ldap NetBSD ruby-ldap OpenBSD ruby-ldap SuSE ruby-ldap If there isn’t
…
repository at http://reductivelabs.com/git/puppet/. We need to add it to our schema directory and slapd.conf configuration file. For example, on a Debian host, the schema directory is /etc/ldap/schema, and the slapd.conf configuration is located in the /etc/ldap directory. Copy the puppet.schema file
…
of the built-in WEBrick web server with a web proxy load balancing the client connections. This approach was developed by Puppet author Luke Kanies, Debian developer Marcin Owsiany, and Jeff McCune of the Ohio State University. In this section, I’m going to explain how to make use of this
…
need to integrate Apache with Mongrel and Puppet, and you can see the list in Table 6-3. Table 6-3. Apache Packages OS Package Debian apache2 Fedora httpd FreeBSD apache2 Gentoo apache NetBSD apache2 OpenBSD apache-httpd Red Hat httpd SuSE apache2 Ubuntu apache2 Your package management system may also
…
modules are in a directory called modules in the same directory as our configuration file is located. LoadModule proxy_module modules/mod_proxy.so For Debian-style distributions, including Ubuntu, you can use the a2enmod command to enable modules. Some modules may already be enabled. You can see the a2enmod command
…
to start our Apache daemon. You can do this by running the Apache binary, for example, httpd on Red Hat–style hosts and apache2 on Debian-style hosts, and specifying the name of our configuration file. # httpd -f /etc/httpd/puppet.conf Or # apache2 -f /etc/apache2/puppet.conf You could
…
custom fact that reads a file to return the value of the fact. Listing 7-3. Another Custom Fact Facter.add("timezone") do confine :operatingsystem => :debian setcode do File.readlines("/etc/timezone").to_a.last end end Turnbull 156 Extending Puppet In Listing 7-3, we’re returning the timezone of
…
a Debian host. In Listing 7-3, we’ve also done two interesting things. First, we’ve specified a confine statement. This statement restricts the execution of
…
implemented by taking advantage of the values of other facts. In this case, we’ve specified that the value of the operatingsystem fact should be Debian for the fact to be executed. We can also use the values of other facts, for example: confine :kernel => :linux The previous confine is commonly
…
]+)/ if netname != nil && netaddr != nil test["network_" + netname] = netaddr netname = nil netaddr = nil end end test.each{|name,fact| Facter.add(name) do confine :operatingsystem => :debian setcode do fact end end } Turnbull Extending Puppet 157 In Listing 7-4, you can see a more complicated fact. This fact actually creates a
…
series of facts, each fact taken from information collected from the /etc/networks file. This file, used on Debian hosts, associates network names with networks. Our snippet parses this file and adds a series of facts, one per each network in the file. So
…
a given value is true or false. For example, to make our provider suitable only for a particular operating system, we could use confine :operatingsystem => [:debian, :solaris] The commands helper method is similar to a confine except that it tells Puppet that a particular binary must be present for the provider
…
module. They are then gathered together and distributed via a file server mount called plugins. This method has also been previously used in some patched Debian packages released by Matt Palmer. If your custom facts and types are not specific to particular modules, you can create a catch-all module to
by Glyn Moody · 14 Jul 2002 · 483pp · 145,225 words
that together make up the whole—in this case a distribution—and to let users debug the system. Murdock decided to call his new distribution Debian. “The story behind the name is pretty simple, actually,” he says. “My wife’s name is Deb and my name is Ian. So it’s
…
simply a concatenation of that.” He goes on, “My first mention of [Debian] in a public forum was in August 1993. Basically, I had started to do a bit of work on it and I posted a message
…
help build a kernel had been when Linus opened up his project. The parallels between the Linux and Debian go deeper. Just as Linux arose in part from a frustration with Minix, so Debian grew out of dissatisfaction with SLS. Both projects used the Internet as a medium for collaboration, and both
…
were emphatically open, whereas Minix and SLS had been more controlled and closed. Moreover, the Debian project also adopted Linus’s idea of parceling out
…
areas to his “lieutenants.” As Murdock explains, “Debian would be based on the idea of a package, and all these people who wanted to work
…
handcrafted by a single closely knit team. And in fact that’s not at all how it was put together.” Even the decisionmaking process of Debian was modeled on Linux. “Essentially what would happen is, we would be presented with a decision point,” Murdock explains. “And I would ask people who
…
were working on Debian, ‘What do you think we should do?’ And that would spark some conversation, some discussion, and possibly some disagreement. And then I’d make a
…
the time it didn’t. This is really the way Linux works, too.” Together with a huge response from those interested in helping with the Debian project, in the fall of 1993 Murdock received an e-mail from Richard Stallman on the subject. “He said, ‘We’re learning more about Linux
…
elements of the GNU project to form a complete operating system. “He basically said, ‘I’m interested,’” Murdock recalls. Stallman’s approach proved important for Debian. “His early interest was critical in not only giving me the confidence to do it, but also giving it an air of legitimacy,” Murdock says
…
. “I really think that, more than anything else in those early days, is what caused people to take notice and get involved.” But Debian was also important for the GNU project and Stallman: “He basically got to know Linux through his involvement with
…
Debian,” Murdock believes. There were two consequences. First, the Linux kernel became a candidate to complete the GNU project begun ten years before and held up
…
at that time by delays in finishing the Hurd kernel. In a sense, the Debian project led to the formal completion of Stallman’s dream of a Unix-like operating system that was freely available. The other consequence was that
…
Stallman’s Free Software Foundation sponsored the development of Debian in the early days. Murdock explains why: “We took a while to come out with our first releases. Part of the problem had to do
…
on volunteers, [and] we had such a big job to do. So in a large sense I needed to get paid to keep working on Debian because my attention to it when I had the free time simply wasn’t cutting it.” Fortunately, Stallman recognized this need and offered to pay
…
Murdock to work on Debian through the Free Software Foundation (FSF), another example of Stallman’s generosity in funding others and his growing recognition of the importance of Linux-based
…
relations with the idealistic and uncompromising Stallman were not easy. Murdock explains the situation: “By this time, Debian was much larger than myself,” he says, “and while I had certain ideas about what Debian should be, I was no longer the single opinion. There were a lot of people who didn’t
…
agree with the FSF’s goals.” As a result, “the FSF was sponsoring Debian, so they had certain expectations of me; and at the same time, I was asking people to do work in their free time and they
…
match up very well. There turned out to be some conflicting goals,” he concludes. Partly because of these conflicts, Murdock decided to stand down as Debian leader in March 1996. There were other important factors in his decision. “I wanted to finish my degree,” he says, “and I had recently been
…
was ready for something new as well.” His successor was Bruce Perens. “Bruce was a natural choice, actually,” Murdock says. “He had been involved with Debian for a long time, and he had shown a large amount of assertiveness and ability to deal with people.” Perens gives some more details on
…
make as much money as we needed just from donations, which was the case.” But the dispute did not end there. One of the early Debian developers was Linus’s friend and fellow student Lars Wirzenius. He explains what happened: “When Richard Stallman started to notice Linux a lot, he started
…
fight the Linux community [because of] the fact that he wanted Linux to be renamed. “My reaction was fuelled somewhat by the fact that initially Debian had been partly funded by FSF,” he says, “which was a very good thing of them to do.” Perhaps because of this earlier help, and
…
despite this ugly incident, the Debian team agreed to call their distribution Debian GNU/Linux. “And that is precisely because the Debian people agree with Stallman that GNU is such a big part in the operating system,” Wirzenius says. Perens
…
explains: “Richard asked me to do that, when I was still Debian project leader, and it sounded fair to me
…
. In fact, I don’t believe anyone [in Debian] objected to it at the time.” Linus tended to remain aloof from such squabbles. “I don’t
…
distributions, and there is a strong argument that GNU/Linux, even if it does not “fly” as a name, is a fairer description. Like the Debian team, Ian Murdock harbors no ill-will against Stallman for his attempts to influence the development process, or even to rename Linux. “We wouldn’t
…
disagree with me”—Stallman tends to polarize opinions. That Murdock views Stallman so positively is not surprising; one of the main motives for creating the Debian distribution in the first place was to create a foil to what he viewed as an irresponsible commercialization of GNU/Linux: “I saw that Linux
…
, it was Slackware, SLS’s successor as the most widely used distribution, that really helped to create the commercial Linux world. Murdock recalls, “Slackware and Debian had essentially the same origins in that we were both dissatisfied with SLS. We both got started without knowing about the other, and once we
…
pointed in the same direction is a fairly difficult task”—obviously sharing Tanenbaum’s view that it would be like trying to herd cats. While Debian evolved into the purest distribution, created in the same way that the Linux kernel was built, Slackware first of all took over from SLS, which
…
that still promoted the key ideas behind free software. The same issue had been confronted by the Debian group a year earlier. As Perens, who was Debian leader at the time, explains, “We wanted Debian to be 100 percent free software, and at the time we sort of knew what free software was
…
all free software, but we hadn’t really formalized what free software was. “So I sat down and wrote the first draft of the entire Debian Social Contract,” Perens says. “I submitted the first [draft] in early June [1997]. We discussed on the private mailing list for an entire month, and
…
then we voted it into project policy.” An important part of the Social Contract, formally announced on 6 July 1997, was the Debian Free Software Guidelines, which, Perens adds, essentially outlined “what we would give back to that [free software] community in return for all of the great
…
. When Eric called me, I said, ‘OK, that sounds like a good idea, let’s trademark “open source” and let’s bind it to [the] Debian Free Software Guidelines; we’ll call that the Open Source Definition.’” Little needed to be changed: “I did not make any substantive changes to the
…
document,” Perens says. “I only changed it from Debian to make it general.” The Open Source Definition lays down nine criteria that the distribution license of software must meet to be called “open source
…
Hewlett-Packard—which had helped to design the IA-64 chip—and SGI, with additional support from IBM, Compaq and Dell, as well as Caldera, Debian, Red Hat and SuSE. As a result of this initiative, and the broad support it received from the entire computer industry, GNU/Linux was soon
…
was impressed with what he saw. Again, as with countless others before him, Duval tracked Linux’s steady improvements, trying out Red Hat and GNU/Debian alongside the Slackware distribution he had downloaded first. He particularly liked Red Hat’s distribution format and its installation procedure. Then, when the KDE desktop
…
this approach, and the danger that such differences might grow, Bruce Perens, author of the original Open Source Definition and the second leader of the Debian project, created the Linux Standard Base (LSB) in 1998. The main aim of the LSB is “to be able to have an application move from
…
Cox, Alan and Apple computers and multiprocessor support for Linux Crusoe processor Cryptozilla Currie, Peter Cutler, Dave Cygnus Solutions Daemon Dawes, David D’Cruze, Patrick Debian (computer program) de Icaza, Miguel DeCSS Delivermail (computer program) Dell Demetriou, Chris de Raadt, Theo Digital (company) Ditzel, Dave Document Object Model (DOM) Domain Name
…
and problems with growth in applications and distribution of growth of High Availability in Germany in India in Japan in Mexico installation instructions integration with Debian integration with Minix International kernel development Kernel Version History Kongress logo and mascot making money from management of Mandrake 5.1 marketing Matthias Ettrich on
…
code-forking and Cygnus and Open Source Definition and profitability of free software and the Artificial Intelligence (AI) Laboratory and the C compiler and the Debian program and the Freeware Summit and the GNU Emacs General Public License and the GNU project and Trolltech (company) and Tcl and Unix coding method
by Michael Schwarz, Jeremy Anderson and Peter Curtis · 7 May 2002
to use the original author's code. Eric Raymond and Bruce Perens Bruce Perens created the original Open Source Definition (OSD) as the Debian Free Software Guidelines (DFSG). Debian is a Linux distribution that consists entirely of software that meets these guidelines. Some Linux distributions include closed, commerical, or marginally open software
…
. Debian never has and never will. Eric S. Raymond wrote a number of seminal papers on the phenomenon of what he and Bruce call open source
…
Do? The truth is that this is largely a tempest in a teapot. The DFSG is used to decide what software may be included in Debian, and it remains one of the most robust Linux distributions around. Stallman continues to call it "Free Software," and ESR (as Eric Raymond is often
…
we built. You'll need a relatively recent Linux distribution. I recommend SuSE, because I really like their installer and runtime setup. One author prefers Debian—the most GNU-ish of the distributions. None of us particularly care for RedHat or Mandrake—both are unstable and needlessly different from the others
…
okay. It's still very usable. Everything in this book was tested on either SuSE, TurboLinux, or Debian—and most everything was tested on Debian. Three of the four authors of this book prefer Debian, and the remaining author is simply difficult to get along with. Web Sites The three big Web sites
…
.org:8.log $ There are quite a few options and choices to set on VNC. Where these are set depends on how you install VNC. Debian sets you up with an entry in /etc for VNC server configuration. This is very nice, because it gives you one place to set defaults
…
have to use scroll bars to move around the server desktop. That works, but it does get both distracting and annoying. While only Mandrake and Debian ship with VNC on their installation media, the source code is available, and RPM packages are available from the usual suspects. To make use of
…
. · svncviewer: This is an SVGA (or console) version of the VNC client. This can be run from a text-mode console on your Linux box. Debian optionally includes this one. Otherwise, compile it from the source. · The Java client: The Xvnc server can offer an HTTP server that pushes a Java
…
that was the system I was using when I typed this part of this chapter. It could have been from a RedHat system or a Debian system. There would be differences in the specifics, but the general form and function is the same. So let's dissect an inittab, shall we
…
implementation. It is available online as well. Setting Up Samba as a Client Samba can be compiled from the source distribution or installed as a Debian or RPM package. In either case, there are several different components that will be installed. The server components are: · smbd: a daemon that shares out
…
recommended location is a directory $SPOOL_DIR/lpd/<printer-name>, where $SPOOL_DIR is the standard spool directory on your system. For example, on a Debian system the path is /var/spool. Create this directory, and then create a file containing the print server name, share name, and password (if necessary
…
/local/samba/bin/swat swat -s /usr/samba/smb.conf Notice the -s option. It specifies the location of the Samba configuration file on my Debian system. After both files are changed, tell inetd to refresh its configuration: # kill -HUP `pidof inetd` or # /etc/rc.d/init.d/inetd reload Now
…
simply less to type! The most common tree structure under a Web server looks something like this: /<basedir> Debian uses "/var/www" \ |-- cgi-bin Debian keeps these in /usr/lib/cgi-bin |-- htdocs (perhaps "html") Debian doesn't have this. |-- icons Depending on your distribution and options you may have installed, there may
…
be several more directories at this level, such as logs, servlets and so on. Most distributions place some sort of standard content in this structure. Debian, for instance, puts up a slightly modified standard Apache postinstall index file. SuSE puts in a homepage with links to the online documentation and to
…
pages that show the present system configuration. Other distributions will vary. For the purposes of this chapter, I'm going to assume a Debian file layout. As in Chapter 4, this choice was made through exhasutive analysis of which distribution offered the greatest pedagogical potential and also because I
…
was using a Debian machine when I wrote this chapter. None of the pre-existing content just mentioned will be significant for your undernet. The best thing to do
…
me describe how we set things up. First, we set up a very simple (almost HTML 2.0) homepage. We set this up on a Debian system, so the index.html file resides at /var/www. It is shown here. <HTML> <HEAD> <TITLE>Frigate</TITLE> </HEAD> <BODY BGCOLOR="#F0F8FF"> <TABLE> <TR
…
its functionality through modules, which are really just shared libraries. The libraries, or .so files, are usually stored in a single resource directory. On my Debian system, the path is /usr/lib/apache/1.3. The base distribution contains a number of standard modules to do URI mapping, access control, script
…
have the Apache header files installed under /usr/include, either copied from the source distribution or obtained as a package. To obtain these files under Debian, I simply need to run apt-get install apache-dev apxs is distributed in the Apache source distribution (so you might have to download it
…
and ensure that everything is correct. But it worked for me, so now I can copy the shared library into the appropriate directory. On my Debian system, it's /usr/lib/apache/1.3/; just find where the all the other standard Apache modules are located, and that's the place
…
how it can help you improve the security of your Linux system. Tripwire The version of Tripwire we discuss here is the version available under Debian. Tripwire is one of those products that began life as free software but was taken closed by its authors and is now a commercial product
…
being actively developed. The open source version can be found at http://www.tripwire.org/ and is at version 2.3-47. The version in Debian 2.2 is 1.2-16. That's the version we cover here. What Is It? So just what is Tripwire? As its name suggests
…
will take longer to run, and the database will be larger. Here's a sample configuration file for us to consider: # # tripwire.config for Linux/Debian machines # # I have tried to provide for a reasonable, minimal configuration file. # You will have to tune this to your own taste and needs. -- pw
…
file will do you absolutely no good there. You must move this file to the directory where Tripwire expects to find it. As configured in Debian, this is /usr/lib/tripwire/databases, and, although the file is created root owned with permissions mode 400 (only readable by owner), this is not
…
mode. To run this manually, be logged in as root and run: # tripwire A good way to do this is with a daily cron job. Debian, in fact, runs the following script daily: #!/bin/sh DATABASE="/usr/lib/tripwire/databases/tw.db_'hostname'" DATABASEGZIP="/usr/lib/tripwire/databases/tw.db_'hostname
…
Mon Mar 26 12:23:23 2001 Envelope-to: mschwarz@schwarz Received: from root by mars.n0zes.ampr.org with local (Exim 3.12 #1 (Debian)) id 14hbeF-0000Pv-00 for <mschwarz@schwarz>; Mon, 26 Mar 2001 12:23:23 -0600 To: mschwarz@schwarz Subject: File integrity report Message-Id: <E14hbeF
…
C literate, this is a kind of "typedef" for Snort rules). We didn't cover output modules. (Note to Debian users: As of this writing, the version of Snort available in Debian 2.2 doesn't have output module support.) Output modules allow you to specify a series of "postprocessors" (Snort calls
…
Ameri can, and b means British. The pronunciation dictionaries must be set up in a library directory, usually /usr/local/lib (/usr/lib/dict on Debian systems). Rsynth can be used without a pronunciation dictionary, but due to the irregularities of the English language, it performs atrociously. Luckily, the software comes
…
tools addressing all levels of speech synthesis, and it is deliberately built to support multiple (human) languages. Festival can be obtained as a RedHat or Debian package, and can be downloaded directly from the University of Edinburgh: http://www.cstr.ed.ac.uk/projects/festival/ Festival provides several pronunication and phoneme
…
system called Linux. I remember installing Slackware from 50 diskettes. I was simply amazed this thing was free. And then I discovered Free Software, GPL, Debian, and XFree86. A whole new world had suddenly opened up to me. All this and the Internet too. I've had my good times and
by Jeff Geerling · 9 Oct 2015 · 313pp · 75,583 words
File permissions Update the OS and installed software Automating updates Automating updates for RedHat-based systems Automating updates for Debian-based systems Use a properly-configured firewall Configuring a firewall with ufw on Debian or Ubuntu Configuring a firewall with firewalld on RedHat, Fedora, or CentOS Make sure log files are populated
…
Ansible’s dependencies installed, but we’ll cover the most common installation methods. Primarily, if you have python-pip and python-devel (python-dev on Debian/Ubuntu) installed, you can just use pip to install Ansible (this assumes you also have the ‘Development Tools’ package installed, so you have gcc, make
…
with the following command: $ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/\ epel-release-6-8.noarch.rpm Debian/Ubuntu: The easiest way to install Ansible on a Debian or Ubuntu system is to use the official apt package. $ sudo apt-add-repository -y ppa:ansible/ansible $ sudo apt
…
complexity to match the simple Ansible yum command, especially after we explore the yum module more intimately (or the apt module, when using Ubuntu and Debian-flavored Linux). 6 - name: Ensure NTP is running. 7 service: name=ntpd state=started enabled=yes This final task both checks and ensures that the
…
conditionally. Say, for instance, you have one set of variables for your CentOS servers (where the Apache service is named httpd), and another for your Debian servers (where the Apache service is named apache2). In this case, you could use a conditional vars_files include: 1 --- 2 - hosts: example 3 vars
…
file with that name, it will use the second option (apache_default.yml). So, on a Debian or Ubuntu server, Ansible would correctly use apache2 as the service name, even though there is no apache_Debian.yml or apache_Ubuntu.yml file available. Inventory variables Variables may also be added via Ansible
…
: Configure Apache with lineinfile. 4 5 - name: Enable Apache modules. Soon after creating the role, though, I wanted to make the role work with both Debian and RedHat hosts. I could’ve added two sets of tasks in the main.yml file, resulting in twice the number of tasks and a
…
bunch of extra when statements: 1 - name: Ensure Apache is installed (via apt). 2 when: ansible_os_family == 'Debian' 3 4 - name: Ensure Apache is installed (via yum). 5 when: ansible_os_family == 'RedHat' 6 7 - name: Configure Apache with lineinfile
…
10 - name: Configure Apache with lineinfile (Redhat). 11 when: ansible_os_family == 'RedHat' 12 13 - name: Enable Apache modules (Debian). 14 when: ansible_os_family == 'Debian' 15 16 - name: Other OS-agnostic tasks... If I had gone this route, and continued with the rest of the playbook tasks in one file,
…
include_vars: "{{ ansible_os_family }}.yml" 3 4 - include: setup-RedHat.yml 5 when: ansible_os_family == 'RedHat' 6 7 - include: setup-Debian.yml 8 when: ansible_os_family == 'Debian' 9 10 - name: Other OS-agnostic tasks... Two important things to notice about this style of distribution-specific inclusion: When including vars
…
we’re including a vars file in the format distribution_name.yml. For our purposes, since the role will be used on Debian and RedHat-based hosts, we can create Debian.yml and RedHat.yml files in our role’s defaults and vars folders, and put distribution-specific variables there. When including
…
things up this way, I put RedHat and CentOS-specific tasks (like yum tasks) into tasks/setup-RedHat.yml, and Debian and Ubuntu-specific tasks (like apt tasks) into tasks/setup-Debian.yml. There are other ways of making roles work cross-platform, but using distribution-specific variables files and included playbooks
…
. We’re going to target CentOS 6.x servers in these playbooks, but only minimal changes would be required to use the playbooks with Ubuntu, Debian, or later versions of CentOS. Varnish Create a main.yml file within the the playbooks/varnish directory, with the following contents: 1 --- 2 - hosts: lamp
…
’ll include the geerlingguy.glusterfs role in my playbook to install GlusterFS on my servers (like most of the geerlingguy.* roles, this role works with Debian, Ubuntu, RedHat, and CentOS): roles: - geerlingguy.firewall - geerlingguy.glusterfs Then, I include a separate task include file with the Gluster configuration in my main playbook
…
image. Busybox is an extremely simple distribution that’s linux-like, but doesn’t contain every option or application generally found in popular distributions like Debian, Ubuntu, or RedHat. Since we only need to create and share a directory, we don’t need any additional ‘baggage’ inside the container. In the
…
Docker. Additionally, using the ansible/ubuntu14.04-ansible base image (which includes Ansible) requires an initial download that’s 50+ MB larger than a comparable debian or ubuntu image without Ansible. However, for brevity and ease of maintenance, we’re using Ansible to manage all the app configuration inside the container
…
a command like the following to upgrade all installed packages on a RedHat-based system: $ ansible webservers -m yum -a "name=* state=latest" On a Debian-based system, the syntax is similar: $ ansible webservers -m apt -a "upgrade=dist update_cache=yes" The above commands will upgrade everything installed on your
…
/yum.conf for yum on RedHat-based systems, or use apt-mark hold [package-name] to keep a certain package at its current version on Debian-based systems). Automating updates Fully automated daily or weekly package and system upgrades provide even greater security. Not every environment or corporation can accommodate frequent
…
configuration (such as packages to exclude from automatic updates) can be done in the yum.conf file, at /etc/yum.conf. Automating updates for Debian-based systems Debian and its derivatives typically use the unattended-upgrades package to configure automatic updates. Like yum-cron, it is easy to install, and its configuration
…
configuration easier, to AWS security groups and other external firewall services. Ansible includes built-in support for configuring server firewalls with ufw (common on newer Debian and Ubuntu distributions) and firewalld (common on newer Fedora, RedHat, and CentOS distributions). Configuring a firewall with ufw on
…
Debian or Ubuntu Below is an entire firewall configuration that will lock down most everything on a Debian or Ubuntu server, allowing traffic only through ports 22 (SSH), 80 (HTTP), and 123 (NTP): 1 - name
…
logins. Here’s a simple set of tasks you could add to your playbook to install Fail2Ban and make sure it’s started on either Debian or RedHat-based distributions: 1 - name: Install fail2ban (RedHat). 2 yum: name=fail2ban state=present enablerepo=epel 3 when: ansible_os_family == 'RedHat' 4 5
…
- name: Install fail2ban (Debian). 6 apt: name=fail2ban state=present 7 when: ansible_os_family == 'Debian' 8 9 - name: Ensure fail2ban is running and enabled on boot. 10 service: name=fail2ban state=started enabled=yes Fail2Ban
…
OS available via Travis CI is Ubuntu 12.04. Most of my roles work with Ubuntu/Debian/RedHat/CentOS, so it’s not an issue for me… but if your roles strictly target a non-Debian-flavored distro, you probably won’t get much mileage out of Travis. (There is an open
…
examples in chapter 4 to ensure apt repositories update cache. Fixed some typos in chapter 8 (thanks to Juan Martinez!). Updated Ansible installation instructions for Debian/Ubuntu in chapter 1. Corrected use of yum module in fail2ban example in chapter 10 (thanks to @lekum!). Fixed references to ansible.cfg config file
by Karl Fogel · 13 Oct 2005
License The GNU General Public License Contributor Agreements Doing Nothing Contributor License Agreements Proprietary Relicensing Problems with Proprietary Relicensing Trademarks Case study: Mozilla Firefox, the Debian Project, and Iceweasel Case study: The GNOME Logo and the Fish Pedicure Shop Patents Further Resources A. Canned Hosting Sites B. Obsolete Appendix (was: Free
…
have not been involved with these projects personally, but have observed them and, in some cases, talked to people there. GNU Debugger (GDB) (likewise). The Debian Project (likewise). The Hypothes.is Project (likewise). This is not a complete list, of course. Many of the client projects I work with through our
…
're building up their résumé, or whatever. You evaluate the contribution on technical grounds, and respond on technical grounds. Even explicitly political organizations like the Debian project, whose goal is to offer a 100% free (that is, "free as in freedom") computing environment, are fairly relaxed about integrating with non-free
…
introductory videos. In case you don't already have preferred software for recording desktop interaction videos: I've had good luck with gtk-recordmydesktop on Debian GNU/Linux, and then the OpenShot video editor for post-capture editing. There are many other things you could put on the project web site
…
people before filing them in the tracker. The first technique seems to be used universally. Even projects with huge ticket databases (say, the Debian bug tracker at bugs.debian.org, which contained 818,841 tickets as of this writing) still arrange things so that someone sees each ticket that comes in. It
…
may be a different person depending on the category of the ticket. For example, the Debian project is a collection of software packages, so Debian automatically routes each ticket to the appropriate package maintainers. Of course, users can sometimes misidentify a ticket's category, with the
…
cia.vc, which shut down in 2011, but several replacements are available: Notifico (n.tkte.ch), Irker (catb.org/esr/irker), and KGB (kgb.alioth.debian.org). Archiving IRC Although it is possible to publicly archive everything that happens in an IRC channel, it's not necessarily expected. IRC conversations are
…
the CVE Editorial Board about how long you need before publicly announcing. See cve.mitre.org for more information about the CVE process. See also debian.org/security/cve-compatibility for a particularly clear exposition of one open source project's use of CVE numbers, and see securityblog.redhat.com/2013
…
it on his computer without going through the usual source-based build and install procedures. On RedHat GNU/Linux, it is the RPM system; on Debian GNU/Linux, it is the APT (.deb) system; etc. Whether these binary packages are assembled by people closely associated with the project, or by distant
…
have ".txt" extensions, or ".md" to indicate Markdown (daringfireball.net/projects/markdown) format, etc. [75] en.wikipedia.org/wiki/Mozilla_Corporation_software_rebranded_by_the_Debian_project#Iceweasel gives a well-known example of this. Testing and Releasing Once the source distribution is produced from the stabilized release branch, the public
…
by everyone, sometimes—but not always—with the requirement that derivative works be freely redistributable under the same terms. DFSG-compliant Compliant with the Debian Free Software Guidelines (debian.org/social_contract#guidelines). This is a widely-used test for whether a given license is truly open source (free, libre, etc.). The
…
Debian Project's mission is to maintain an entirely free operating system, such that someone installing it need never doubt that she has the right to
…
modify and redistribute any or all of the system. The Debian Free Software Guidelines are the requirements that a software package's license must meet in order to be included in
…
Debian. Because the Debian Project spent a good deal of time thinking about how to construct such a test, the guidelines they came up with have proven very robust (
…
against the original author's wishes) required to sustain the dynamics of an open source project. Since 2004, the Debian Project has maintained a list of known DFSG-compliant licenses at wiki.debian.org/DFSGLicenses. All of the licenses discussed in this chapter are DFSG-compliant. OSI-approved Approved by the Open
…
another widely-used test of whether a license permits all the necessary freedoms. The OSI's definition of open source software is based on the Debian Free Software Guidelines, and any license that meets one definition almost always meets the other. There have been a few exceptions over the years, but
…
source include both the copyleft and non-copyleft licenses — this is something that all the license-certifying organizations, including the FSF, the OSI, and the Debian Project, have always agreed on. If you see someone, particularly a journalist, making this mistake, please politely correct them, perhaps by pointing them to this
…
you may share them. One famous example of trademark enforcement in free and open source software demonstrates these distinctions clearly. Case study: Mozilla Firefox, the Debian Project, and Iceweasel The Mozilla Foundation owns the trademarked name "Firefox", which it uses to refer to its popular free software web browser of the
…
same name. The Debian Project, which maintains a long-running and also quite popular GNU/Linux distribution, wanted to package Firefox for users of Debian GNU/Linux. So far, so good: Debian does not need Mozilla's permission to package Firefox, since Firefox is
…
open source software. However, Debian does need Mozilla's permission to call the packaged browser "Firefox" and to use
…
icon for the program, because those are trademarks owned by Mozilla. Normally, Mozilla would have happily given its permission. After all, having Firefox distributed in Debian is good for Mozilla's mission of promoting openness on the Web. However, various technical and policy effects of the
…
Debian packaging process left Debian unable to fully comply with Mozilla's trademark usage requirements, and as a result, Mozilla informed Debian that their Firefox package could not use the Firefox name or branding. No doubt Mozilla did
…
it is not ideal for them to have their software used without clear attribution. However, they could have given Debian a trademark license and yet chose not to; presumably, this is because Debian was doing something with the code that Mozilla did not want accruing to their own reputation.[100] This decision
…
by Mozilla did not mean that Debian had to remove Firefox from their package system, of course. Debian simply changed the name to "Iceweasel" and used a different logo. The underlying code is still the Mozilla Firefox code
…
, except for the minor bits Debian had to change to integrate the different name and logo — changes they were perfectly free to make, of course, because of the code's open
…
of contribution. * * * [100] In fact, that was indeed the reason, though we do not need to go into the details here of exactly what changes Debian makes to the Firefox code that Mozilla disagrees with strongly enough to want to dissociate their name from the result. The entire saga is recounted
…
in more detail at en.wikipedia.org/wiki/Mozilla_Corporation_software_rebranded_by_the_Debian_project. Coincidentally, I'm writing these words on a Debian GNU/Linux system, where Iceweasel has long been my default browser — I just used it to check that URL. [101
by Richard Petersen · 15 May 2015
Ubuntu foundation, which is sponsored by Canonical, Ltd (www.canonical.com), a commercial organization that supports and promotes open source projects. Ubuntu is based on Debian Linux, one of the oldest Linux distributions, which is dedicated to incorporating cutting-edge developments and features (www
…
.debian.org). Mark Shuttleworth, a South African and Debian Linux developer, initiated the Ubuntu project. Debian Linux is primarily a Linux development project, trying out new features. Ubuntu provides a Debian-based Linux distribution that is stable, reliable, and easy to use
…
are enabled by default. An entry consists of a single line with the following format: format URI release section The format is normally deb, for Debian package format. The URI (universal resource identifier) provides the location of the repository, such as an FTP or Web URL. The release name is the
…
file. Editing such an important file always involves the risk of incorrectly changing the entries. Software Management with Tasksel, DEB, APT, and DKPG Both the Debian distribution and Ubuntu use the Debian package format (DEB) for their software packages. Two basic package managers are available for use with
…
Debian packages: the Advanced Package Tool (APT) and the Debian Package tool (dpkg). APT is designed to work with repositories and is used to install and maintain all your package installations on Ubuntu. Though you
…
-essential for all the Ubuntu development packages. You will only have to do this once. sudo apt-get install build-essential DEB Software Packages A Debian package will automatically resolve dependencies, installing any other needed packages instead of simply reporting their absence. Packages are named with the software name, the version
…
number, and the .deb extension. Check http://www.us.debian.org/doc for more information. File name format is as follows: the package name version number distribution label and build number. Packages created specifically for
…
option lets you just download the source package without extracting it. The --compile option will download, extract, compile, and package the source code into a Debian binary package, ready for installation. No dependent packages will be downloaded. If you have a software package that requires any dependent packages to run, you
…
with the Ubuntu Software Center. You can also right-click and choose to open it with the Ubuntu Software Center. Software Package Types Ubuntu uses Debian-compliant software packages (DEB), whose filenames have a .deb extension. Other packages, such as those in the form of source code that you need to
…
you have built yourself, like packages you created when converting a package in another format to a Debian package (DEB). This is the case when converting a RPM package (Red Hat Package Manager) to a Debian package format. For dpkg, you use the -i option to install a package and -r to
…
be able to uninstall the package until you do this. Software configuration files are not removed. sudo dpkg -r packagename Extension Package type .deb A Debian/Ubuntu Linux package .gz A gzip-compressed file (use gunzip to decompress) .bz2 A bzip2-compressed file (use bunzip2 to decompress; also use the j
…
edit these scripts and change the values assigned to options, changing the behavior of a service. Service Startup Management with rcconf Ubuntu provides the rcconf (Debian) toos which you can use to start or stop services when you boot up your system (see Figure 5-1 ). The rcconf tool was developed
…
by Debian and is used on Debian, Ubuntu, and similar distributions. The rcconf works both for System V init service scripts located in the /etc/init.d directory and for
…
a very different implementation than Sendmail. You can find out more about Exim at http://wiki.debian.org/PkgExim4 and at http://www.exim.org. Exim is a Debian Linux project. Ubuntu, as a version a Debian Linux, implements Exim reliably. Courier (Universe repository) is a fast, small, and secure MTA that maintains
…
Ubuntu installs a customized version of main.cf, using only a few options, several of which are Debian specific. The myorigin parameter specifies the origin address for e-mail sent by the server. On Debian/Ubuntu this is commented out. On Ubuntu, the myorigin value is set to the myhostname value, which
…
main.cf file is shown here without the Mail User Agent options: # See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The
…
Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # appending .domain is the MUA's job. append_dot_
…
and its network domain: myhosturtle.mytrek.com mydomain=mytrek.com The myorigin parameter specifies the origin address for e-mail sent by the server. On Debian/Ubuntu this is commented out. It is set to the file that holds the host name, the same value as myhostname. You could assign the
…
value of myhostname to it directly as shown here and described in the main.cf.dist sample version: myorigin=$myhostname On Ubuntu/Debian, the line would, instead, read the origin address from a designated file, like /etc/mailname. #myorigin=/etc/mailname If you are using a single system
…
by the comments. Ubuntu also recommends that you disable the bounce response for spam emails by settings the final_spam_destiny option in the 20_debian_defaults file to D_DISCARD instead of D_BOUNCE. You can also adjust the level of spam detection $final_spam_destiny = D_DISCARD; Should your
…
firewall, you might want to set up # a fixed port here using the --port option. For more information, # see rpc.mountd(8) or http://wiki.debian.org/?SecuringNFS RPCMOUNTDOPTS=--manage-gids # Do you want to start the svcgssd daemon? It is only required for Kerberos # exports. Valid alternatives are "yes" and
…
port, set this # this variable to a statd argument like: "--port 4000 --outgoing-port 4001". # For more information, see rpc.statd(8) or http://wiki.debian.org/?SecuringNFS STATDOPTS= # Do you want to start the idmapd daemon? It is only needed for NFSv4. NEED_IDMAPD= # Do you want to start the
…
.conf // This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file. // // If you are just adding zones, please do that in /etc/bind/named
…
identifying the chroot you work in (used in the prompt below) if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) fi # set a fancy prompt (non-color, overwrite the one in /etc/profile) PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' # sudo hint if [ ! -e $HOME/.sudo_as_admin_successful
by Gourav Shah · 29 Jul 2015 · 178pp · 33,275 words
. Modules Modules are the encapsulated procedures that are responsible for managing specific system components on specific platforms. Consider the following example: The apt module for Debian and the yum module for RedHat helps manage system packages The user module is responsible for adding, removing, or modifying users on the system The
…
_distribution_major_version": "12", "ansible_distribution_version": "12.04", "ansible_domain": "vm", "ansible_fqdn": "vagrant.vm", "ansible_hostname": "vagrant", "ansible_nodename": "vagrant", "ansible_os_family": "Debian", "ansible_pkg_mgr": "apt", "ansible_processor": [ "GenuineIntel", "Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz" ], "ansible_processor_cores": 1, "ansible_processor_count": 2, "ansible
…
:ansible_distribution ansible_os_family RedHat, CentOS, and Amazon Linux are all based on rpm and have similar behavior. The same goes for Ubuntu and Debian operating systems, which are part of the same platform family. Hence, we choose to use the ansible_os_family fact, which will give us wider
…
support. We will define variables from two places in the roles:From the default vars file with the sane defaults for Debian. From the variables specific to os_family if not Debian. We will also create OS-specific task files, since we may need to call different modules (apt versus yum) and
…
by checking the value of this fact. Creating variables We will begin with the creation of variables. Let's set up the sane defaults for Debian/Ubuntu inside the /mysql/defaults/main.yml file: --- #roles/mysql/defaults/main.yml mysql_user: mysql mysql_port: 3306 mysql_datadir: /var/lib/mysql mysql
…
.yml # Load vars specific to OS Family. - include_vars: "{{ ansible_os_family }}.yml" when: ansible_os_family != 'Debian' - include: install_RedHat.yml when: ansible_os_family == 'RedHat' - include: install_Debian.yml when: ansible_os_family == 'Debian' - include: configure.yml - include: service.yml We saw the include statements earlier. What's new here is
…
with the include_vars fact to determine whether to include OS-specific variables when the OS family is not Debian. Why not for the Debian system? That's because we are already specifying Debian-specific configurations in the default file. The include_vars fact works well with the preceding conditionals. We are also
…
calling OS-specific installation scripts using the when condition. We have included two scripts for now to support the Debian and RedHat families. However, later on, we could just extend the scripts by adding more install_<os_family>.yml scripts to support additional platforms. Now
…
, let's create the install tasks for Debian and RedHat: $ vim roles/mysql/tasks/install_Debian.yml Then edit the file, as follows: --- # filename: roles/mysql/tasks/install_Debian.yml - name: install mysql server apt: name:"{{ mysql_pkg }}" update_cache:yes $ vim roles/mysql
…
.yml - name: install mysql server yum: name:"{{ mysql_pkg }}" update_cache:yes In the preceding example, we used the apt and yum modules, respectively, for Debian- and RedHat-based systems. Following the best practices, we will write a data-driven role by providing the package name using a variable mysql_pkg
…
comes with the Ubuntu and CentOS repositories by default, and we will set the mysql_cnfpath path from the role variables, as follows: On Ubuntu/Debian, use the command: mysql_cnfpath = /etc/mysql/my.cnf On RedHat/CentOS, use the command: mysql_cnfpath = /etc/my.cnf Also, we are sending the
…
. This can deter admins from making manual changes to the file. Most of the variables come from the defaults in a role. This is because Debian is our default family of operating systems and we already have sane defaults set for it. Similarly, for other operating system platforms, we are setting
…
by providing variables and facts in templates, tasks, handlers, and playbooks. Additionally, we created a new role for the database tier, which supports both the Debian and RedHat families of operating systems. You learnt what system facts are and how they are discovered and used. You learnt how variables can be
…
We have already used fact-based selection while writing MySQL, where we used the fact ansible_os_family to: Import the vars file for non-Debian-based systems. Include platform-specific tasks for package installation. The following code snippet shows both the use cases: Refactoring the MySQL role Our existing MySQL
…
add tasks to install the MySQL client package as well as the Python bindings required by Ansible's MySQL module: --- # filename: roles/mysql/tasks/install_Debian.yml - name: install mysql client apt: name: "{{ mysql['pkg']['client'] }}" update_cache: yes - name: install mysql server apt: name: "{{ mysql['pkg']['server'] }}" update_cache: yes
…
to. All consequent hosts would skip this task. Executing roles conditionally The Nginx role that we created earlier to set up web server supports only Debian-based systems. Running this logic on other systems could lead to failure. For example, the Nginx role uses the apt module to install packages, which
…
OS family. The following is the snippet from the www.yml playbook: #filename: www.yml (snippet) - hosts: www roles: - { role: nginx, when: ansible_os_family == 'Debian' } Review questions Do you think you've understood the chapter well enough? Try answering the following questions to test your understanding: What is the replacement
…
file, as follows: --- #filename: roles/php5-fpm/tasks/main.yml # tasks file for php5-fpm - include_vars: "{{ ansible_os_family }}.yml" when: ansible_os_family != 'Debian' - include: install.yml - include: service.yml #filename: roles/php5-fpm/tasks/install.yml - name: install php5-fpm and family apt: name: "{{ item }}" with_items: php5
…
']['name'] }}" state=restarted Let's analyze the preceding code: Main: The main.yml file includes variables based on the ansible_os_family fact for non-Debian systems. This is useful for overriding variables that are platform-specific. After including the vars file, the main task goes on to include the install
…
, and so on. Finally, we add the new role to the www.yaml file, as follows: # www.yml roles: - { role: nginx, when: ansible_os_family == 'Debian' } - php5-fpm - wordpress Run the playbook using the following command: $ ansible-playbook -i customhosts site.yml After the run is complete, it's time to
…
site.yml file, which is our main playbook: --- #filename: lb.yml - hosts: lb remote_user: vagrant sudo: yes roles: - { role: haproxy, when: ansible_os_family == 'Debian' } --- # This is a site wide playbook # filename: site.yml - include: db.yml - include: www.yml - include: lb.yml Now, run the playbook using the following
…
site.yml –-tags install Tags can not only be applied to tasks, but also to the roles, as follows: { role: nginx, when: Ansible_os_family == 'Debian', tags: 'www' } If a specific task needs to be executed always, even if filtered with a tag, use a special tag called always. This will
…
roles in the playbooks too, as follows: # filename: db.yml roles: - { role: mysql, tags: 'mysql' } #filename: www.yml roles: - { role: nginx, when: Ansible_os_family == 'Debian', tags: [ 'www', 'nginx' ] } - { role: php5-fpm, tags: [ 'www', 'php5-fpm' ] } - { role: wordpress, tags: [ 'www', 'wordpress' ] } #filename: lb.yml roles: - { role: haproxy, when: Ansible_os_family
…
== 'Debian', tags: 'haproxy' } Once applied, the tags for our main playbook can be listed as follows: $ Ansible-playbook -i customhosts site.yml --list-tags #Output: playbook:
…
: echo "disable server fifanews/{{ Ansible_hostname }}" | socat stdio /var/lib/haproxystats delegate_to: "{{ item }}" with_items: groups.lb roles: - { role: nginx, when: Ansible_os_family == 'Debian' } - php5-fpm - wordpress post_tasks: - name: wait for web server to come up wait_for: host={{ inventory_hostname }} port=80 state=started - name: register webserver
by Jon Loeliger and Matthew McCullough · 14 Aug 2012
by Wolfgang Barth · 25 May 2006
by Felix Frank · 20 Nov 2014 · 234pp · 63,522 words
by Sean Kane and Karl Matthias · 14 May 2023 · 433pp · 130,334 words
by Jeff Nickoloff and Stephen Kuenzli · 10 Dec 2019 · 629pp · 109,663 words
by James Turnbull · 13 Jul 2014 · 265pp · 60,880 words
by Simon Riggs and Hannu Krosing · 23 Oct 2010 · 360pp · 96,275 words
by Clement Nedelcu · 18 Jul 2013 · 319pp · 72,969 words
by Sam Williams · 16 Nov 2015
by Matt Copperwaite and Charles Leifer · 26 Nov 2015
by James Turnbull · 1 Dec 2014 · 514pp · 111,012 words
by John Arundel · 25 Aug 2013 · 274pp · 58,675 words
by Ivan Idris · 23 Jun 2015 · 681pp · 64,159 words
by Femi Anthony · 21 Jun 2015 · 589pp · 69,193 words
by M. Omar Faruque Sarker · 15 Feb 2014 · 234pp · 57,267 words
by Dariusz Jemielniak · 13 May 2014 · 312pp · 93,504 words
by Claudia Salzberg Rodriguez, Gordon Fischer and Steven Smolski · 15 Nov 2005 · 1,202pp · 144,667 words
by Fabio Alessandro Locati · 21 Nov 2016
by David Weinberger · 14 Jul 2011 · 369pp · 80,355 words
by Philip Hazel · 11 Aug 2017 · 104pp · 39,583 words
by Jo Rhett · 24 Mar 2016
by Mike Linksvayer, Michael Mandiberg and Mushon Zer-Aviv · 24 Aug 2010 · 188pp · 9,226 words
by Hans-Jurgen Schonig · 14 Oct 2014
by Unknown · 8 Mar 2011 · 247pp · 62,845 words
by Lars George · 29 Aug 2011
by Jono Bacon · 1 Aug 2009 · 394pp · 110,352 words
by Sean P. Kane and Karl Matthias · 15 Mar 2018 · 350pp · 114,454 words
by Alan Berg · 15 Mar 2012 · 372pp · 67,140 words
by Bryan O'Sullivan, John Goerzen, Donald Stewart and Donald Bruce Stewart · 2 Dec 2008 · 1,065pp · 229,099 words
by W. Curtis Preston · 9 Feb 2009 · 1,266pp · 278,632 words
by Daniel Hall · 29 Apr 2015 · 132pp · 28,815 words
by Heather Adkins, Betsy Beyer, Paul Blankinship, Ana Oprea, Piotr Lewandowski and Adam Stubblefield · 29 Mar 2020 · 1,380pp · 190,710 words
by John Arundel · 16 Apr 2013 · 241pp · 43,073 words
by Ivan Idris · 30 Sep 2012 · 197pp · 35,256 words
by Scott Chacon · 1 Jan 2008 · 120pp · 19,624 words
by Noah Gift and Jeremy M. Jones · 29 Jun 2009 · 603pp · 141,814 words
by Unknown · 30 Nov 2012 · 77pp · 14,578 words
by Regina Obe and Leo Hsu · 5 Jul 2012 · 205pp · 47,169 words
by Tom White · 29 May 2009 · 933pp · 205,691 words
by Fabio Nelli · 27 Sep 2018 · 688pp · 107,867 words
by Chitij Chauhan · 30 Jan 2015
by Daniel J. Barrett, Richard E. Silverman and Robert G. Byrnes · 8 Jun 2003
by Charles Leadbeater · 9 Dec 2010 · 313pp · 84,312 words
by Adam Goucher and Tim Riley · 13 Oct 2009 · 351pp · 123,876 words
by Nadia Eghbal · 3 Aug 2020 · 1,136pp · 73,489 words
by Jeff Forcier
by William Poundstone · 5 Feb 2008
by Nicholas Marsh · 27 Jan 2010 · 198pp · 26,435 words
by Joshua B. Smith · 30 Sep 2006
by Jan Kunigk, Ian Buss, Paul Wilkinson and Lars George · 8 Jan 2019 · 1,409pp · 205,237 words
by Drew Neil · 2 May 2018 · 241pp · 43,252 words
by Söderberg, Johan; Söderberg, Johan;
by Philipp Janert · 2 Jan 2010 · 398pp · 31,161 words
by Paul Teetor · 28 Mar 2011 · 719pp · 104,316 words
by Lars Wirzenius · 15 Jun 2012 · 32pp · 10,468 words
by VM (Vicky) Brasseur · 266pp · 79,297 words
by Guillaume Gomez and Antoni Boucher · 11 Jan 2018 · 537pp · 82,938 words
by Lorin Hochstein · 8 Dec 2014 · 761pp · 80,914 words
by Drew Conway and John Myles White · 10 Feb 2012 · 451pp · 103,606 words
by Regina O. Obe and Leo S. Hsu · 2 May 2015
by Nathan Schneider · 10 Sep 2018 · 326pp · 91,559 words
by Harry J. W. Percival · 10 Jun 2014 · 779pp · 116,439 words
by Scott Chacon · 17 Aug 2009 · 282pp · 79,176 words
by Eric S. Raymond · 22 Sep 2003 · 612pp · 187,431 words
by Drew Conway and John Myles White · 25 Oct 2011 · 163pp · 42,402 words
by Regina O. Obe and Leo S. Hsu · 2 May 2015
by Jono Bacon · 12 Nov 2019 · 302pp · 73,946 words
by Michael Snoyman · 22 Apr 2012 · 485pp · 74,211 words
by Sau Sheong Chang · 27 Jun 2012
by Unknown
by Wes McKinney · 30 Dec 2011 · 752pp · 131,533 words
by James E. Gaskin · 15 Mar 2005 · 731pp · 134,263 words
by Niall O’Higgins · 66pp · 9,247 words
by Norman Matloff · 404pp · 43,442 words
by Nadia Eghbal · 139pp · 35,022 words
by Mitchell Hashimoto · 29 May 2013 · 192pp · 44,789 words
by Italo Maia · 25 Jun 2015 · 157pp · 35,874 words
by Conrad Barski · 13 Nov 2014 · 273pp · 72,024 words
by Valery Kholodkov · 21 Jul 2015 · 174pp · 34,672 words
by Zigurd Mednieks, Laird Dornin, G. Blake Meike and Masumi Nakamura · 15 Jul 2011
by John Calcote · 20 Jul 2010 · 555pp · 119,733 words
by Amy Brown and Greg Wilson · 24 May 2011 · 834pp · 180,700 words
by Kevin C. Baird · 1 Jun 2007 · 309pp · 65,118 words
by Antano Solar John, Jonathan Rockway and Solar John Antano · 15 Nov 2010
by Gavin Hackeling · 31 Oct 2014
by Trebor Scholz and Nathan Schneider · 14 Aug 2017 · 237pp · 67,154 words
by Scott Chacon and Ben Straub · 12 Nov 2014 · 549pp · 134,988 words
by Philip Hazel · 7 Jul 2001 · 632pp · 223,899 words
by Peter Gutmann
by Andreas M. Antonopoulos and Gavin Wood Ph. D. · 23 Dec 2018 · 960pp · 125,049 words
by Jacqueline Kazil · 4 Feb 2016
by Barton Gellman · 20 May 2020 · 562pp · 153,825 words
by Eli Bressert · 14 Oct 2012 · 62pp · 14,996 words
by Scott J. Shapiro · 523pp · 154,042 words
by Mike Wolfson and Donn Felker · 13 Aug 2013
by Eric Redmond, Jim Wilson and Jim R. Wilson · 7 May 2012 · 713pp · 93,944 words
by John Verzani · 18 Sep 2011 · 99pp · 19,884 words
by Mark Summerfield · 27 Oct 2007 · 643pp · 53,639 words
by Jon Hicks · 23 Jun 2011
by Michael Peacock · 26 Feb 2015 · 161pp · 30,412 words
by Jesse Keating
by Thomas A.Limoncelli · 1 Jan 2005 · 270pp · 75,473 words
by Joseph Howse · 22 Apr 2013 · 138pp · 27,404 words
by Andrew Johnson · 29 May 2018 · 303pp · 57,177 words
by Chris Sanders · 15 Mar 2007
by Tiago Macedo and Fred Oliveira · 26 Jul 2011 · 82pp · 17,229 words
by Ian F. Darwin · 9 Apr 2012 · 960pp · 140,978 words
by Thomas A. Limoncelli, Strata R. Chalup and Christina J. Hogan · 27 Aug 2014 · 757pp · 193,541 words
by Kim Schulz · 29 Apr 2010 · 236pp · 67,823 words
by Dave Thomas, Chad Fowler and Andy Hunt · 15 Dec 2000 · 936pp · 85,745 words
by Simon St.Laurent and J. David Eisenberg · 20 Dec 2016
by Mike Cantelon, Marc Harter, Tj Holowaychuk and Nathan Rajlich · 27 Jul 2013 · 628pp · 107,927 words
by Toby Segaran · 17 Dec 2008 · 519pp · 102,669 words
by Eric von Hippel · 1 Apr 2005 · 220pp · 73,451 words
by Leslie Sikos · 10 Jul 2015
by Andrew Lih · 5 Jul 2010 · 398pp · 86,023 words
by Kristina Chodorow and Michael Dirolf · 23 Sep 2010 · 352pp · 64,282 words
by Pieter Hintjens · 12 Mar 2013 · 1,025pp · 150,187 words
by Wes McKinney · 25 Sep 2017 · 1,829pp · 135,521 words
by Bruce Momjian · 15 Jan 2001 · 490pp · 40,083 words
by Diomidis Spinellis and Georgios Gousios · 30 Dec 2008 · 680pp · 157,865 words
by Julia Angwin · 25 Feb 2014 · 422pp · 104,457 words
by Gabriella Coleman · 4 Nov 2014 · 457pp · 126,996 words
by Raúl Garreta and Guillermo Moncecchi · 14 Sep 2013 · 122pp · 29,286 words
by Walter Isaacson · 6 Oct 2014 · 720pp · 197,129 words
by Patrick Mulder · 18 Jun 2014 · 190pp · 52,865 words
by Frank Pasquale · 17 Nov 2014 · 320pp · 87,853 words
by Pieter Hintjens · 11 Mar 2013 · 349pp · 114,038 words
by Daniel Falck · 15 Feb 2012 · 54pp · 11,471 words
by Justin Schuh · 20 Nov 2006 · 2,054pp · 359,149 words
by Nigel Poulton · 10 May 2020
by Imran Bashir · 28 Mar 2018
by David N. Blank-Edelman · 16 Sep 2018
by Peter Van-Roy and Seif Haridi · 15 Feb 2004 · 931pp · 79,142 words